From a883b2c562f0eed01d40f9a829a06bafb9087005 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Wed, 23 Mar 2016 18:09:11 -0400 Subject: [PATCH 1/2] rm constrain in linear to pixel axis convert routine: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - so that line paths in extreme zoomed in axis ranges are computed correctly. - this patch may: make far-off-edge pts have coords that svg doesn’t understand - this patch may slow down the line decimation algorithm (as far-off-edge pts used to be consisdered the same previously) --- src/plots/cartesian/set_convert.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plots/cartesian/set_convert.js b/src/plots/cartesian/set_convert.js index e2848a77388..57574b9fc8d 100644 --- a/src/plots/cartesian/set_convert.js +++ b/src/plots/cartesian/set_convert.js @@ -123,9 +123,9 @@ module.exports = function setConvert(ax) { ax.l2p = function(v) { if(!isNumeric(v)) return constants.BADNUM; + // include 2 fractional digits on pixel, for PDF zooming etc - return d3.round(Lib.constrain(ax._b + ax._m*v, - -clipMult*ax._length, (1+clipMult)*ax._length), 2); + return d3.round(ax._b + ax._m * v, 2); }; ax.p2l = function(px) { return (px-ax._b)/ax._m; }; From f356b9ef41f3472156f410a7762111ddc356b3c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Wed, 23 Mar 2016 18:10:21 -0400 Subject: [PATCH 2/2] add ultra zoom lines image test --- test/image/baselines/ultra_zoom.png | Bin 0 -> 19405 bytes test/image/mocks/ultra_zoom.json | 45 ++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 test/image/baselines/ultra_zoom.png create mode 100644 test/image/mocks/ultra_zoom.json diff --git a/test/image/baselines/ultra_zoom.png b/test/image/baselines/ultra_zoom.png new file mode 100644 index 0000000000000000000000000000000000000000..3670d77fcb0512ee749182e4e6b4ad373f0dc175 GIT binary patch literal 19405 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 DNkNv0 literal 0 HcmV?d00001 diff --git a/test/image/mocks/ultra_zoom.json b/test/image/mocks/ultra_zoom.json new file mode 100644 index 00000000000..f3acf46e4aa --- /dev/null +++ b/test/image/mocks/ultra_zoom.json @@ -0,0 +1,45 @@ +{ + "data": [ + { + "x": [ + 10000, + 0.0001 + ], + "y": [ + 0.0001, + 10000 + ], + "uid": "1376de" + } + ], + "layout": { + "xaxis": { + "range": [ + 4990.012238820174, + 5009.888574816098 + ], + "type": "linear", + "autorange": false + }, + "yaxis": { + "range": [ + 4907.413431128477, + 5132.099078595185 + ], + "type": "linear", + "autorange": false + }, + "shapes": [ + { + "type": "line", + "x0": 10000, + "x1": 0.0001, + "y0": 10000, + "y1": 0.0001 + } + ], + "height": 450, + "width": 1000, + "autosize": true + } +}