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
global...",
"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
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
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
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
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);