Skip to content

Commit 7e26e91

Browse files
committed
compute inverse transform for gd at makePlotFramwork and stash it on fullLayout
1 parent 825d962 commit 7e26e91

4 files changed

Lines changed: 10 additions & 22 deletions

File tree

src/components/fx/hover.js

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,6 @@ var HOVERTEXTPAD = constants.HOVERTEXTPAD;
7272
exports.hover = function hover(gd, evt, subplot, noHoverEvent) {
7373
gd = Lib.getGraphDiv(gd);
7474

75-
if(gd._inverseTransform === undefined) {
76-
gd._inverseTransform = Lib.inverseTransformMatrix(Lib.getFullTransformMatrix(gd));
77-
}
78-
7975
Lib.throttle(
8076
gd._fullLayout._uid + constants.HOVERID,
8177
constants.HOVERMINTIME,
@@ -196,11 +192,7 @@ exports.loneHover = function loneHover(hoverItems, opts) {
196192
d.offset -= anchor;
197193
});
198194

199-
var gd = opts.gd;
200-
if(gd._inverseTransform === undefined) {
201-
gd._inverseTransform = Lib.inverseTransformMatrix(Lib.getFullTransformMatrix(gd));
202-
}
203-
alignHoverText(hoverLabel, fullOpts.rotateLabels, gd._inverseTransform);
195+
alignHoverText(hoverLabel, fullOpts.rotateLabels, opts.gd._fullLayout._inverseTransform);
204196

205197
return multiHover ? hoverLabel : hoverLabel.node();
206198
};
@@ -344,7 +336,7 @@ function _hover(gd, evt, subplot, noHoverEvent) {
344336
xpx = evt.clientX - dbb.left;
345337
ypx = evt.clientY - dbb.top;
346338

347-
var transformedCoords = Lib.apply2DTransform(gd._inverseTransform)(xpx, ypx);
339+
var transformedCoords = Lib.apply2DTransform(fullLayout._inverseTransform)(xpx, ypx);
348340

349341
xpx = transformedCoords[0];
350342
ypx = transformedCoords[1];
@@ -729,7 +721,7 @@ function _hover(gd, evt, subplot, noHoverEvent) {
729721

730722
if(!helpers.isUnifiedHover(hovermode)) {
731723
hoverAvoidOverlaps(hoverLabels, rotateLabels ? 'xa' : 'ya', fullLayout);
732-
alignHoverText(hoverLabels, rotateLabels, gd._inverseTransform);
724+
alignHoverText(hoverLabels, rotateLabels, fullLayout._inverseTransform);
733725
}
734726

735727
// TODO: tagName hack is needed to appease geo.js's hack of using evt.target=true

src/plot_api/plot_api.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3714,6 +3714,9 @@ function purge(gd) {
37143714
function makePlotFramework(gd) {
37153715
var gd3 = d3.select(gd);
37163716
var fullLayout = gd._fullLayout;
3717+
if(fullLayout._inverseTransform === undefined) {
3718+
fullLayout._inverseTransform = Lib.inverseTransformMatrix(Lib.getFullTransformMatrix(gd));
3719+
}
37173720

37183721
// Plot container
37193722
fullLayout._container = gd3.selectAll('.plot-container').data([0]);

src/plots/cartesian/dragbox.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -327,14 +327,11 @@ function makeDragBox(gd, plotinfo, x, y, w, h, ns, ew) {
327327
x0 = startX - dragBBox.left;
328328
y0 = startY - dragBBox.top;
329329

330-
if(gd._inverseTransform === undefined) {
331-
gd._inverseTransform = Lib.inverseTransformMatrix(Lib.getFullTransformMatrix(e.target));
332-
}
333-
var transformedCoords = Lib.apply2DTransform(gd._inverseTransform)(x0, y0);
330+
var transformedCoords = Lib.apply2DTransform(gd._fullLayout._inverseTransform)(x0, y0);
334331
x0 = transformedCoords[0];
335332
y0 = transformedCoords[1];
336333

337-
var m = gd._inverseTransform;
334+
var m = gd._fullLayout._inverseTransform;
338335
var scaleX = Math.sqrt(m[0][0] * m[0][0] + m[0][1] * m[0][1]);
339336
var scaleY = Math.sqrt(m[1][0] * m[1][0] + m[1][1] * m[1][1]);
340337

src/plots/cartesian/select.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,14 +68,10 @@ function prepSelect(e, startX, startY, dragOptions, mode) {
6868
var x0 = startX - dragBBox.left;
6969
var y0 = startY - dragBBox.top;
7070

71-
if(gd._inverseTransform === undefined) {
72-
gd._inverseTransform = Lib.inverseTransformMatrix(Lib.getFullTransformMatrix(e.target));
73-
}
74-
75-
var transformedCoords = Lib.apply2DTransform(gd._inverseTransform)(x0, y0);
71+
var transformedCoords = Lib.apply2DTransform(fullLayout._inverseTransform)(x0, y0);
7672
x0 = transformedCoords[0];
7773
y0 = transformedCoords[1];
78-
var m = gd._inverseTransform;
74+
var m = fullLayout._inverseTransform;
7975
var scaleX = Math.sqrt(m[0][0] * m[0][0] + m[0][1] * m[0][1]);
8076
var scaleY = Math.sqrt(m[1][0] * m[1][0] + m[1][1] * m[1][1]);
8177

0 commit comments

Comments
 (0)