changeset 1558:f747edb6cc9a

refactor hiding the foreground of the scaler image when the zoom area changes
author hertzhaft
date Sat, 29 Oct 2016 21:47:35 +0200
parents 9d754003c2d3
children 9cf6cfa086b7
files webapp/src/main/webapp/jquery/jquery-test-measure.html webapp/src/main/webapp/jquery/jquery.digilib.birdseye.js webapp/src/main/webapp/jquery/jquery.digilib.js webapp/src/main/webapp/jquery/jquery.digilib.regions.js
diffstat 4 files changed, 35 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/webapp/src/main/webapp/jquery/jquery-test-measure.html	Fri Oct 28 15:54:43 2016 +0200
+++ b/webapp/src/main/webapp/jquery/jquery-test-measure.html	Sat Oct 29 21:47:35 2016 +0200
@@ -16,7 +16,6 @@
         <script type="text/javascript" src="jquery.cookie.js"></script>
         <script type="text/javascript" src="jquery.digilib.js"></script>
         <script type="text/javascript" src="jquery.digilib.geometry.js"></script>
-        <script type="text/javascript" src="jquery.digilib.arrows.js"></script>
         <script type="text/javascript" src="jquery.range.js"></script>
         <link rel="stylesheet" type="text/css" href="jquery.range.css"/>
         <script type="text/javascript" src="jquery.digilib.buttons.js"></script>
--- a/webapp/src/main/webapp/jquery/jquery.digilib.birdseye.js	Fri Oct 28 15:54:43 2016 +0200
+++ b/webapp/src/main/webapp/jquery/jquery.digilib.birdseye.js	Sat Oct 29 21:47:35 2016 +0200
@@ -274,6 +274,8 @@
             // grow rectangle by border width
             newRect = null;
             data.$elem.find('.'+cssPrefix+'overlay').hide(); // hide all overlays (marks/regions)
+            // hide image
+            digilib.fn.fadeScalerImg(data, 0);
             $document.on("mousemove.dlBirdMove", birdZoomMove);
             $document.on("mouseup.dlBirdMove", birdZoomEndDrag);
             return false;
--- a/webapp/src/main/webapp/jquery/jquery.digilib.js	Fri Oct 28 15:54:43 2016 +0200
+++ b/webapp/src/main/webapp/jquery/jquery.digilib.js	Sat Oct 29 21:47:35 2016 +0200
@@ -102,6 +102,8 @@
         'previewImgParamNames' : ['fn','pn','dw','dh','mo','rot'],
         // reserved space in full page display (default value accounts for body margins)
         'scalerInsets' : { 'x' : 26, 'y': 20 },
+        // how transparent does the background image get while changing the zoom area?
+        'scalerFadedOpacity' : 0.7,
         // number of decimal places, for cropping parameters wx,wy,wh,ww
         'decimals' : 4
         };
@@ -375,6 +377,8 @@
                 // interactively
                 var onComplete = function(data, rect) {
                     if (rect == null) return;
+                    // hide image
+                    fadeScalerImg(data, 0);
                     setZoomArea(data, rect);
                     // reset modes
                     setFitMode(data, 'both');
@@ -395,6 +399,8 @@
          */
         zoomFull : function (data, mode) {
             setZoomArea(data, FULL_AREA.copy());
+            // hide image
+            fadeScalerImg(data, 0);
             setFitMode(data, mode);
             // zoom full only works in screen mode
             setScaleMode(data, 'screen');
@@ -562,8 +568,7 @@
             }
             return url;
         },
-        
-        
+
         /** set image quality
          * 
          * @param data
@@ -1279,10 +1284,7 @@
             // adjust scaler div size (beware: setting position makes the element relative)
             imgRect.getSize().adjustDiv($scaler);
             // show image in case it was hidden (for example in zoomDrag)
-            $img.css('visibility', 'visible');
-            $img.fadeIn();
-            // $scaler.css({'opacity' : '1'});
-            $scaler.fadeTo('slow', 1);
+            fadeScalerImg(data, 1);
             data.hasPreviewBg = false;
             // update display (render marks, etc.)
             updateDisplay(data);
@@ -1328,6 +1330,8 @@
         newarea.y -= 0.5 * (newarea.height - area.height);
         newarea = FULL_AREA.fit(newarea);
         setZoomArea(data, newarea);
+        // hide image
+        fadeScalerImg(data, 0);
         // reset modes
         setScaleMode(data, 'screen');
         setFitMode(data, 'both');
@@ -1489,9 +1493,7 @@
             startPos = geom.position(evt);
             delta = null;
             // hide the scaler img, show background of div instead
-            $img.css('visibility', 'hidden');
-            $img.hide();
-            $scaler.fadeTo('slow', 0.7);
+            fadeScalerImg(data, 0);
             // set low res background immediately on mousedown
             setPreviewBg(data);
             $document.on("mousemove.dlZoomDrag", dragMove);
@@ -1519,12 +1521,9 @@
             $document.off("mousemove.dlZoomDrag", dragMove);
             $document.off("mouseup.dlZoomDrag", dragEnd);
             if (delta == null || delta.distance() < 2) {
-                // no movement
-                $img.css('visibility', 'visible');
-                $img.fadeIn();
-                $scaler.fadeTo('slow', 1);
-                // $scaler.css({'opacity' : '1', 'background-image' : 'none'});
+                // no change, show image again
                 data.hasPreviewBg = false;
+                fadeScalerImg(data, 1);
                 // unhide marks etc.
                 updateDisplay(data);
                 return false; 
@@ -1581,6 +1580,23 @@
         return parseInt(q[1], 10);
     };
 
+    /** hide or show image, fade scaler background
+     * 
+     */
+    var fadeScalerImg = function (data, show) {
+        var $img = data.$img;
+        var $scaler = data.$scaler;
+        if (show == null || show == 0) {
+          $scaler.fadeTo('fast', data.settings.scalerFadedOpacity);
+          // $img.css('visibility', 'hidden');
+          $img.fadeOut();
+        } else {
+          $scaler.fadeTo('slow', 1);
+          // $img.css('visibility', 'visible');
+          $img.fadeIn();
+        }
+    };
+
     /** set image quality as a number (0..2).
      * 
      */
@@ -1882,6 +1898,7 @@
             storeOptions : storeOptions,
             redisplay : redisplay,
             updateDisplay : updateDisplay,
+            fadeScalerImg : fadeScalerImg,
             showDiv : showDiv,
             defineArea : defineArea,
             setZoomArea : setZoomArea,
--- a/webapp/src/main/webapp/jquery/jquery.digilib.regions.js	Fri Oct 28 15:54:43 2016 +0200
+++ b/webapp/src/main/webapp/jquery/jquery.digilib.regions.js	Sat Oct 29 21:47:35 2016 +0200
@@ -688,6 +688,8 @@
         za.setProportion(1, true); // avoid extreme zoomArea proportions
         za.setCenter(rect.getCenter()).stayInside(FULL_AREA);
         fn.setZoomArea(data, za);
+        // hide image
+        fn.fadeScalerImg(data, 0);
         fn.redisplay(data);
     };