diff --git a/src/traces/pie/plot.js b/src/traces/pie/plot.js index b8505618ef9..7f9096e48bf 100644 --- a/src/traces/pie/plot.js +++ b/src/traces/pie/plot.js @@ -19,6 +19,7 @@ var svgTextUtils = require('../../lib/svg_text_utils'); var uniformText = require('../bar/uniform_text'); var recordMinTextSize = uniformText.recordMinTextSize; var clearMinTextSize = uniformText.clearMinTextSize; +var TEXTPAD = require('../bar/constants').TEXTPAD; var helpers = require('./helpers'); var eventData = require('./event_data'); @@ -669,6 +670,8 @@ function isCrossing(pt, angle) { } function calcRadTransform(textBB, r, ring, halfAngle, midAngle) { + r = Math.max(0, r - 2 * TEXTPAD); + // max size if text is rotated radially var a = textBB.width / textBB.height; var s = calcMaxHalfSize(a, halfAngle, r, ring); @@ -680,6 +683,8 @@ function calcRadTransform(textBB, r, ring, halfAngle, midAngle) { } function calcTanTransform(textBB, r, ring, halfAngle, midAngle) { + r = Math.max(0, r - 2 * TEXTPAD); + // max size if text is rotated tangentially var a = textBB.height / textBB.width; var s = calcMaxHalfSize(a, halfAngle, r, ring); @@ -1133,11 +1138,7 @@ function computeTransform( transform, // inout textBB // in ) { - var rotate = transform.rotate; - var scale = transform.scale; - if(scale > 1) scale = 1; - - var a = rotate * Math.PI / 180; + var a = transform.rotate * Math.PI / 180; var cosA = Math.cos(a); var sinA = Math.sin(a); var midX = (textBB.left + textBB.right) / 2; diff --git a/test/image/baselines/display-text_zero-number.png b/test/image/baselines/display-text_zero-number.png index 07fd3647934..eb6677de9c8 100644 Binary files a/test/image/baselines/display-text_zero-number.png and b/test/image/baselines/display-text_zero-number.png differ diff --git a/test/image/baselines/funnelarea_pie_colorways.png b/test/image/baselines/funnelarea_pie_colorways.png index 7261a92d424..887c40857ca 100644 Binary files a/test/image/baselines/funnelarea_pie_colorways.png and b/test/image/baselines/funnelarea_pie_colorways.png differ diff --git a/test/image/baselines/funnelarea_with_other_traces.png b/test/image/baselines/funnelarea_with_other_traces.png index 0e9d6d123fe..45a7bb56961 100644 Binary files a/test/image/baselines/funnelarea_with_other_traces.png and b/test/image/baselines/funnelarea_with_other_traces.png differ diff --git a/test/image/baselines/legend-constant-itemsizing.png b/test/image/baselines/legend-constant-itemsizing.png index 1b662b7081f..9d6232b4386 100644 Binary files a/test/image/baselines/legend-constant-itemsizing.png and b/test/image/baselines/legend-constant-itemsizing.png differ diff --git a/test/image/baselines/mathjax.png b/test/image/baselines/mathjax.png index 1c85c4d8dd2..c9387d7969d 100644 Binary files a/test/image/baselines/mathjax.png and b/test/image/baselines/mathjax.png differ diff --git a/test/image/baselines/pie_automargin.png b/test/image/baselines/pie_automargin.png index b15533e1074..24f9c14e8fc 100644 Binary files a/test/image/baselines/pie_automargin.png and b/test/image/baselines/pie_automargin.png differ diff --git a/test/image/baselines/pie_fonts.png b/test/image/baselines/pie_fonts.png index 03560a12730..c1e2422d8c8 100644 Binary files a/test/image/baselines/pie_fonts.png and b/test/image/baselines/pie_fonts.png differ diff --git a/test/image/baselines/pie_inside-text-orientation.png b/test/image/baselines/pie_inside-text-orientation.png index 64af61e6e86..dc36a274723 100644 Binary files a/test/image/baselines/pie_inside-text-orientation.png and b/test/image/baselines/pie_inside-text-orientation.png differ diff --git a/test/image/baselines/pie_scale_textpos_hideslices.png b/test/image/baselines/pie_scale_textpos_hideslices.png index be3812b567b..780a00437a7 100644 Binary files a/test/image/baselines/pie_scale_textpos_hideslices.png and b/test/image/baselines/pie_scale_textpos_hideslices.png differ diff --git a/test/image/baselines/pie_style_arrays.png b/test/image/baselines/pie_style_arrays.png index 2bca68676f3..d12234b4590 100644 Binary files a/test/image/baselines/pie_style_arrays.png and b/test/image/baselines/pie_style_arrays.png differ diff --git a/test/image/baselines/pie_textpad_radial.png b/test/image/baselines/pie_textpad_radial.png new file mode 100644 index 00000000000..4f0686bc3e7 Binary files /dev/null and b/test/image/baselines/pie_textpad_radial.png differ diff --git a/test/image/baselines/pie_textpad_tangential.png b/test/image/baselines/pie_textpad_tangential.png new file mode 100644 index 00000000000..fa9b8ed4658 Binary files /dev/null and b/test/image/baselines/pie_textpad_tangential.png differ diff --git a/test/image/baselines/sunburst_branchvalues-total-almost-equal.png b/test/image/baselines/sunburst_branchvalues-total-almost-equal.png index e571e95608b..f553714dcfa 100644 Binary files a/test/image/baselines/sunburst_branchvalues-total-almost-equal.png and b/test/image/baselines/sunburst_branchvalues-total-almost-equal.png differ diff --git a/test/image/baselines/sunburst_coffee.png b/test/image/baselines/sunburst_coffee.png index 9299c4e1346..0f69852a357 100644 Binary files a/test/image/baselines/sunburst_coffee.png and b/test/image/baselines/sunburst_coffee.png differ diff --git a/test/image/baselines/sunburst_count_branches.png b/test/image/baselines/sunburst_count_branches.png index a15651fe553..65ab9fa4534 100644 Binary files a/test/image/baselines/sunburst_count_branches.png and b/test/image/baselines/sunburst_count_branches.png differ diff --git a/test/image/baselines/sunburst_flare.png b/test/image/baselines/sunburst_flare.png index 13b69ce29a6..dd8484c79bc 100644 Binary files a/test/image/baselines/sunburst_flare.png and b/test/image/baselines/sunburst_flare.png differ diff --git a/test/image/baselines/sunburst_inside-text-orientation.png b/test/image/baselines/sunburst_inside-text-orientation.png index a77ba3102ea..fe4b1cf7680 100644 Binary files a/test/image/baselines/sunburst_inside-text-orientation.png and b/test/image/baselines/sunburst_inside-text-orientation.png differ diff --git a/test/image/baselines/sunburst_inside-text-orientation_clock.png b/test/image/baselines/sunburst_inside-text-orientation_clock.png index 28ab975ef98..1216ae00c05 100644 Binary files a/test/image/baselines/sunburst_inside-text-orientation_clock.png and b/test/image/baselines/sunburst_inside-text-orientation_clock.png differ diff --git a/test/image/baselines/sunburst_packages_colorscale_novalue.png b/test/image/baselines/sunburst_packages_colorscale_novalue.png index 02e7bcbbbc7..b88e9331871 100644 Binary files a/test/image/baselines/sunburst_packages_colorscale_novalue.png and b/test/image/baselines/sunburst_packages_colorscale_novalue.png differ diff --git a/test/image/baselines/sunburst_textfit.png b/test/image/baselines/sunburst_textfit.png index 495029d2378..9796c4a1dc8 100644 Binary files a/test/image/baselines/sunburst_textfit.png and b/test/image/baselines/sunburst_textfit.png differ diff --git a/test/image/baselines/sunburst_textpad_radial.png b/test/image/baselines/sunburst_textpad_radial.png new file mode 100644 index 00000000000..cad6d7ba2b6 Binary files /dev/null and b/test/image/baselines/sunburst_textpad_radial.png differ diff --git a/test/image/baselines/sunburst_textpad_tangential.png b/test/image/baselines/sunburst_textpad_tangential.png new file mode 100644 index 00000000000..24a4fdcbd37 Binary files /dev/null and b/test/image/baselines/sunburst_textpad_tangential.png differ diff --git a/test/image/baselines/sunburst_values.png b/test/image/baselines/sunburst_values.png index 8e7f8b6f8da..fc108c99f02 100644 Binary files a/test/image/baselines/sunburst_values.png and b/test/image/baselines/sunburst_values.png differ diff --git a/test/image/baselines/sunburst_values_colorscale.png b/test/image/baselines/sunburst_values_colorscale.png index 94d1e7e69e4..e61bd3e6af7 100644 Binary files a/test/image/baselines/sunburst_values_colorscale.png and b/test/image/baselines/sunburst_values_colorscale.png differ diff --git a/test/image/baselines/sunburst_with-without_values.png b/test/image/baselines/sunburst_with-without_values.png index a00afc950f4..bd5bd3e0ea4 100644 Binary files a/test/image/baselines/sunburst_with-without_values.png and b/test/image/baselines/sunburst_with-without_values.png differ diff --git a/test/image/baselines/texttemplate.png b/test/image/baselines/texttemplate.png index a1302aca93c..5daa2623d55 100644 Binary files a/test/image/baselines/texttemplate.png and b/test/image/baselines/texttemplate.png differ diff --git a/test/image/baselines/treemap_level-depth.png b/test/image/baselines/treemap_level-depth.png index 15ba3e01597..fcc133c86d8 100644 Binary files a/test/image/baselines/treemap_level-depth.png and b/test/image/baselines/treemap_level-depth.png differ diff --git a/test/image/baselines/treemap_sunburst_marker_colors.png b/test/image/baselines/treemap_sunburst_marker_colors.png index ab85b17e709..acd94d8651f 100644 Binary files a/test/image/baselines/treemap_sunburst_marker_colors.png and b/test/image/baselines/treemap_sunburst_marker_colors.png differ diff --git a/test/image/baselines/uniformtext_pie_16_auto.png b/test/image/baselines/uniformtext_pie_16_auto.png index 22277b46af9..56efde94e13 100644 Binary files a/test/image/baselines/uniformtext_pie_16_auto.png and b/test/image/baselines/uniformtext_pie_16_auto.png differ diff --git a/test/image/baselines/uniformtext_pie_8_horizontal.png b/test/image/baselines/uniformtext_pie_8_horizontal.png index 8847a079d5f..9ee4bdb12bb 100644 Binary files a/test/image/baselines/uniformtext_pie_8_horizontal.png and b/test/image/baselines/uniformtext_pie_8_horizontal.png differ diff --git a/test/image/baselines/uniformtext_pie_8_horizontal_center.png b/test/image/baselines/uniformtext_pie_8_horizontal_center.png index 41e1e7af0ca..1cd2a3b272d 100644 Binary files a/test/image/baselines/uniformtext_pie_8_horizontal_center.png and b/test/image/baselines/uniformtext_pie_8_horizontal_center.png differ diff --git a/test/image/baselines/uniformtext_pie_8_radial.png b/test/image/baselines/uniformtext_pie_8_radial.png index 67ab4369d93..545fe12a54b 100644 Binary files a/test/image/baselines/uniformtext_pie_8_radial.png and b/test/image/baselines/uniformtext_pie_8_radial.png differ diff --git a/test/image/baselines/uniformtext_pie_8_tangential.png b/test/image/baselines/uniformtext_pie_8_tangential.png index d8b2075be3b..718ee822355 100644 Binary files a/test/image/baselines/uniformtext_pie_8_tangential.png and b/test/image/baselines/uniformtext_pie_8_tangential.png differ diff --git a/test/image/baselines/uniformtext_pie_inside-text-orientation.png b/test/image/baselines/uniformtext_pie_inside-text-orientation.png index a4b138c519e..a61ef348ff4 100644 Binary files a/test/image/baselines/uniformtext_pie_inside-text-orientation.png and b/test/image/baselines/uniformtext_pie_inside-text-orientation.png differ diff --git a/test/image/baselines/uniformtext_sunburst_inside-text-orientation.png b/test/image/baselines/uniformtext_sunburst_inside-text-orientation.png index fa4725ab038..64bedfcf2d8 100644 Binary files a/test/image/baselines/uniformtext_sunburst_inside-text-orientation.png and b/test/image/baselines/uniformtext_sunburst_inside-text-orientation.png differ diff --git a/test/image/mocks/pie_fonts.json b/test/image/mocks/pie_fonts.json index 2961f3ed035..8a292d98713 100644 --- a/test/image/mocks/pie_fonts.json +++ b/test/image/mocks/pie_fonts.json @@ -9,6 +9,7 @@ "inherit from<br><b>global...</b>", "font" ], + "textposition": ["outside", "inside"], "type": "pie", "domain": { "x": [0, 0.4], diff --git a/test/image/mocks/pie_textpad_radial.json b/test/image/mocks/pie_textpad_radial.json new file mode 100644 index 00000000000..cf256cf3716 --- /dev/null +++ b/test/image/mocks/pie_textpad_radial.json @@ -0,0 +1,46 @@ +{ + "data": [ + { + "type": "pie", + "hole": 0.5, + "labels": [ + "a", + "b", + "c", + "d" + ], + "values": [ + 20, + 10, + 2, + 1 + ], + "textposition": "inside", + "insidetextorientation": "radial", + "marker": { + "colors": [ + "pink", + "lightgreen", + "skyblue", + "orange" + ], + "line": { + "width": 3, + "color": [ + "red", + "green", + "blue", + "grey" + ] + } + } + } + ], + "layout": { + "width": 300, + "height": 300, + "title": { + "text": "should provide some pad<br>before fiting & printing text" + } + } +} diff --git a/test/image/mocks/pie_textpad_tangential.json b/test/image/mocks/pie_textpad_tangential.json new file mode 100644 index 00000000000..e9ae06243c8 --- /dev/null +++ b/test/image/mocks/pie_textpad_tangential.json @@ -0,0 +1,46 @@ +{ + "data": [ + { + "type": "pie", + "hole": 0.5, + "labels": [ + "a", + "b", + "c", + "d" + ], + "values": [ + 20, + 10, + 2, + 1 + ], + "textposition": "inside", + "insidetextorientation": "tangential", + "marker": { + "colors": [ + "pink", + "lightgreen", + "skyblue", + "orange" + ], + "line": { + "width": 3, + "color": [ + "red", + "green", + "blue", + "grey" + ] + } + } + } + ], + "layout": { + "width": 300, + "height": 300, + "title": { + "text": "should provide some pad<br>before fiting & printing text" + } + } +} diff --git a/test/image/mocks/sunburst_textpad_radial.json b/test/image/mocks/sunburst_textpad_radial.json new file mode 100644 index 00000000000..b45ec4977e9 --- /dev/null +++ b/test/image/mocks/sunburst_textpad_radial.json @@ -0,0 +1,52 @@ +{ + "data": [ + { + "type": "sunburst", + "parents": [ + "", + "", + "", + "", + "Alpha", + "Bravo", + "Charlie", + "Delta" + ], + "labels": [ + "Alpha", + "Bravo", + "Charlie", + "Delta", + "Echo", + "Foxtrot", + "Golf", + "Hotel" + ], + "branchvalues": "total", + "values": [ + 20, + 10, + 2, + 1, + 20, + 10, + 2, + 1 + ], + "textposition": "inside", + "insidetextorientation": "radial", + "marker": { + "line": { + "width": 3 + } + } + } + ], + "layout": { + "width": 300, + "height": 300, + "title": { + "text": "should provide some pad<br>before fiting & printing text" + } + } +} diff --git a/test/image/mocks/sunburst_textpad_tangential.json b/test/image/mocks/sunburst_textpad_tangential.json new file mode 100644 index 00000000000..b6c3095ea46 --- /dev/null +++ b/test/image/mocks/sunburst_textpad_tangential.json @@ -0,0 +1,52 @@ +{ + "data": [ + { + "type": "sunburst", + "parents": [ + "", + "", + "", + "", + "Alpha", + "Bravo", + "Charlie", + "Delta" + ], + "labels": [ + "Alpha", + "Bravo", + "Charlie", + "Delta", + "Echo", + "Foxtrot", + "Golf", + "Hotel" + ], + "branchvalues": "total", + "values": [ + 20, + 10, + 2, + 1, + 20, + 10, + 2, + 1 + ], + "textposition": "inside", + "insidetextorientation": "tangential", + "marker": { + "line": { + "width": 3 + } + } + } + ], + "layout": { + "width": 300, + "height": 300, + "title": { + "text": "should provide some pad<br>before fiting & printing text" + } + } +} diff --git a/test/jasmine/tests/pie_test.js b/test/jasmine/tests/pie_test.js index 61ea09fde3c..0417c1a67d9 100644 --- a/test/jasmine/tests/pie_test.js +++ b/test/jasmine/tests/pie_test.js @@ -2010,7 +2010,7 @@ describe('pie uniformtext', function() { Plotly.plot(gd, fig) .then(assertTextSizes('without uniformtext', { fontsizes: [12, 12, 12, 12, 12, 12, 12, 12], - scales: [1, 1, 1, 1, 1, 1, 1, 0.58], + scales: [1, 1, 1, 1, 1, 1, 1, 0.52], })) .then(function() { fig.layout.uniformtext = {mode: 'hide'}; // default with minsize=0 @@ -2018,7 +2018,7 @@ describe('pie uniformtext', function() { }) .then(assertTextSizes('using mode: "hide"', { fontsizes: [12, 12, 12, 12, 12, 12, 12, 12], - scales: [0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58], + scales: [0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52], })) .then(function() { fig.layout.uniformtext.minsize = 9; // set a minsize less than trace font size @@ -2058,7 +2058,7 @@ describe('pie uniformtext', function() { }) .then(assertTextSizes('clear uniformtext', { fontsizes: [12, 12, 12, 12, 12, 12, 12, 12], - scales: [1, 1, 1, 1, 1, 1, 1, 0.58], + scales: [1, 1, 1, 1, 1, 1, 1, 0.52], })) .catch(failTest) .then(done); diff --git a/test/jasmine/tests/sunburst_test.js b/test/jasmine/tests/sunburst_test.js index 9c35d5e51de..d78ee444c64 100644 --- a/test/jasmine/tests/sunburst_test.js +++ b/test/jasmine/tests/sunburst_test.js @@ -1975,7 +1975,7 @@ describe('sunburst inside text orientation', function() { return Plotly.react(gd, fig); }) .then(assertTextRotations('using "tangential"', { - rotations: [0, 0, -42, -78] + rotations: [0, 30, -42, -78] })) .then(function() { fig.data[0].insidetextorientation = 'auto'; @@ -2060,7 +2060,7 @@ describe('sunburst uniformtext', function() { Plotly.plot(gd, fig) .then(assertTextSizes('without uniformtext', { fontsizes: [12, 12, 12, 12, 12, 12, 12, 12, 12, 12], - scales: [1, 1, 1, 1, 1, 1, 1, 1, 1, 0.58], + scales: [1, 1, 1, 1, 1, 1, 1, 1, 1, 0.52], })) .then(function() { fig.layout.uniformtext = {mode: 'hide'}; // default with minsize=0 @@ -2068,7 +2068,7 @@ describe('sunburst uniformtext', function() { }) .then(assertTextSizes('using mode: "hide"', { fontsizes: [12, 12, 12, 12, 12, 12, 12, 12, 12, 12], - scales: [0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58], + scales: [0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52], })) .then(function() { fig.layout.uniformtext.minsize = 9; // set a minsize less than trace font size @@ -2108,7 +2108,7 @@ describe('sunburst uniformtext', function() { }) .then(assertTextSizes('clear uniformtext', { fontsizes: [12, 12, 12, 12, 12, 12, 12, 12, 12, 12], - scales: [1, 1, 1, 1, 1, 1, 1, 1, 1, 0.58], + scales: [1, 1, 1, 1, 1, 1, 1, 1, 1, 0.52], })) .catch(failTest) .then(done);