changeset 1470:bd55d6ab099f

again - fix for #38: Zoom Area shrinks when using bird's eye view
author hertzhaft
date Wed, 30 Dec 2015 16:55:40 +0100
parents db95aa93ce7a
children cc8a97739121
files webapp/src/main/webapp/jquery/jquery.digilib.birdseye.js
diffstat 1 files changed, 6 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/webapp/src/main/webapp/jquery/jquery.digilib.birdseye.js	Wed Dec 30 14:21:42 2015 +0100
+++ b/webapp/src/main/webapp/jquery/jquery.digilib.birdseye.js	Wed Dec 30 16:55:40 2015 +0100
@@ -222,19 +222,21 @@
             $birdZoom.show();
         }
         // update birdTrafo
-        data.birdTrafo = digilib.fn.getImgTrafo(data.$birdImg, FULL_AREA);        
+        data.birdTrafo = digilib.fn.getImgTrafo(data.$birdImg, FULL_AREA);
         var zoomRect = data.birdTrafo.transform(zoomArea);
         console.debug("renderBirdArea:", zoomRect, "zoomArea:", zoomArea, "$birdTrafo:", data.birdTrafo);
-        // acount for border width
+        // compensate border width (different for fullscreen and embedded!)
         var bw = digilib.fn.getBorderWidth($birdZoom);
-        zoomRect.addPosition({x : -bw, y : -bw});
         if (data.settings.interactionMode === 'fullscreen') {
             // no animation for fullscreen
+            zoomRect.addPosition({x : -bw, y : -bw});
             zoomRect.adjustDiv($birdZoom);
         } else {
             // nice animation for embedded mode :-)
             // correct offsetParent because animate doesn't use offset
             var ppos = $birdZoom.offsetParent().offset();
+            zoomRect.enlarge({x : bw*2, y : bw*2});
+            zoomRect.addPosition({x : -bw-1, y : -bw-1});
             var dest = {
                 'left' : (zoomRect.x - ppos.left) + 'px',
                 'top' : (zoomRect.y - ppos.top) + 'px',
@@ -250,7 +252,7 @@
         if (!data.settings.isBirdDivVisible) return;
         var birdRect = data.birdTrafo.transform(zoomArea);
         var $birdZoom = data.$birdZoom;
-        // acount for border width
+        // compensate border width
         var bw = digilib.fn.getBorderWidth($birdZoom);
         birdRect.addPosition({x : -bw, y : -bw});
         birdRect.adjustDiv(data.$birdZoom);
@@ -264,7 +266,6 @@
         var $document = $(document);
         var $scaler = data.$scaler;
         var startPos, newRect, birdImgRect, birdZoomRect;
-        var bw = digilib.fn.getBorderWidth($birdZoom);
 
         // mousedown handler: start dragging bird zoom to a new position
         var birdZoomStartDrag = function(evt) {
@@ -274,8 +275,6 @@
             birdImgRect = geom.rectangle($birdImg);
             birdZoomRect = geom.rectangle($birdZoom);
             // grow rectangle by border width
-            // birdZoomRect.enlarge({x : bw*2, y : bw*2});
-            // birdZoomRect.addPosition({x : bw, y : bw});
             newRect = null;
             data.$elem.find('.'+cssPrefix+'overlay').hide(); // hide all overlays (marks/regions)
             $document.on("mousemove.dlBirdMove", birdZoomMove);
@@ -291,9 +290,6 @@
             newRect = birdZoomRect.copy();
             newRect.addPosition(delta);
             newRect.stayInside(birdImgRect);
-            // acount for border width
-            /* newRect.addPosition({x : -bw, y : -bw});
-            newRect.adjustDiv($birdZoom); */
             // reflect birdview zoom position in scaler image
             var area = data.birdTrafo.invtransform(newRect);
             $(data).trigger('changeZoomArea', area);
@@ -310,8 +306,6 @@
                 startPos = birdZoomRect.getCenter();
                 birdZoomMove(evt); 
                 }
-            // ugly, but needed to prevent double border width compensation
-            /* newRect.addPosition({x : bw, y : bw}); */
             var newArea = data.birdTrafo.invtransform(newRect);
             data.zoomArea = newArea;
             digilib.fn.redisplay(data);