Skip to content

Commit 81d774f

Browse files
author
Tim Appelhans
committed
don't render canvas on window, but in parent div and suspend page scrolling when zooming. addresses #5
1 parent ecc7661 commit 81d774f

File tree

1 file changed

+25
-22
lines changed

1 file changed

+25
-22
lines changed

inst/htmlwidgets/slideView.js

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,27 @@ HTMLWidgets.widget({
4646
var legendr_filename = x.legend && document.getElementById(fldrnm.concat("-imager-attachment")) !== null ? document.getElementById(fldrnm.concat("-imager-attachment")).href : undefined;
4747
var legendl_filename = x.legend && document.getElementById(fldrnm.concat("-imager-attachment")) !== null ? document.getElementById(fldrnm.concat("-imagel-attachment")).href : undefined;
4848

49+
50+
divDraw = document.createElement("div");
51+
divDraw.id ="divDraw";
52+
divDraw.style.cursor = "col-resize";
53+
rootNode.appendChild(divDraw);
54+
55+
canvasAfter = document.createElement("canvas");
56+
canvasAfter.id = "canvasAfter";
57+
divDraw.appendChild(canvasAfter);
58+
59+
divBefore = document.createElement("div");
60+
divBefore.id ="divBefore";
61+
divDraw.appendChild(divBefore);
62+
63+
canvasBefore = document.createElement("canvas");
64+
canvasBefore.id = "canvasBefore";
65+
divBefore.appendChild(canvasBefore);
66+
4967
divInfoSlide = document.createElement("div");
5068
divInfoSlide.id ="divInfoSlide";
51-
el.appendChild(divInfoSlide);
69+
divDraw.appendChild(divInfoSlide);
5270

5371
spanLeft = document.createElement("span");
5472
spanLeft.id ="spanLeft";
@@ -72,7 +90,7 @@ HTMLWidgets.widget({
7290
if(legendr_filename !== undefined) {
7391
var divLegendr = document.createElement("div");
7492
divLegendr.id ="divLegendr";
75-
el.appendChild(divLegendr);
93+
divDraw.appendChild(divLegendr);
7694
var legendr_image = new Image();
7795
legendr_image.src = legendr_filename;
7896
divLegendr.appendChild(legendr_image);
@@ -81,29 +99,12 @@ HTMLWidgets.widget({
8199
if(legendl_filename !== undefined) {
82100
var divLegendl = document.createElement("div");
83101
divLegendl.id ="divLegendl";
84-
el.appendChild(divLegendl);
102+
divDraw.appendChild(divLegendl);
85103
var legendl_image = new Image();
86104
legendl_image.src = legendl_filename;
87105
divLegendl.appendChild(legendl_image);
88106
}
89107

90-
divDraw = document.createElement("div");
91-
divDraw.id ="divDraw";
92-
divDraw.style.cursor = "col-resize";
93-
el.appendChild(divDraw);
94-
95-
canvasAfter = document.createElement("canvas");
96-
canvasAfter.id = "canvasAfter";
97-
divDraw.appendChild(canvasAfter);
98-
99-
divBefore = document.createElement("div");
100-
divBefore.id ="divBefore";
101-
divDraw.appendChild(divBefore);
102-
103-
canvasBefore = document.createElement("canvas");
104-
canvasBefore.id = "canvasBefore";
105-
divBefore.appendChild(canvasBefore);
106-
107108
init(filename1, filename2);
108109
},
109110

@@ -231,11 +232,13 @@ function keydown(e) {
231232
}
232233

233234
function mousewheel(e) { // RStudio
235+
e.preventDefault();
234236
e.deltaY = -e.wheelDelta;
235237
wheel(e);
236238
}
237239

238240
function wheel(e) {
241+
e.preventDefault();
239242
var x = e.layerX;
240243
var y = e.layerY;
241244
var offX = x/scale;
@@ -275,8 +278,8 @@ function draw() {
275278

276279
function drawLayer(canvas,image) {
277280
if(canvas.width != window.innerWidth || canvas.height != window.innerHeight) {
278-
canvas.width = window.innerWidth;
279-
canvas.height = window.innerHeight;
281+
canvas.width = rootNode.clientWidth;
282+
canvas.height = rootNode.clientHeight;
280283
}
281284
var ctx = canvas.getContext("2d");
282285
ctx.mozImageSmoothingEnabled = !crisp;

0 commit comments

Comments
 (0)