diff client/digitallibrary/jquery/jquery.digilib.js @ 657:b0c6cc4a0932 jquery

work on getting transformation to work with rotation (currently still doesn't)
author robcast
date Mon, 24 Jan 2011 00:13:16 +0100
parents cad479ecb089
children 934da7e40031
line wrap: on
line diff
--- a/client/digitallibrary/jquery/jquery.digilib.js	Sun Jan 23 00:26:07 2011 +0100
+++ b/client/digitallibrary/jquery/jquery.digilib.js	Mon Jan 24 00:13:16 2011 +0100
@@ -406,8 +406,6 @@
                 redisplay(data);
             }
             
-            
-            
 
     };
 
@@ -775,15 +773,32 @@
     };
 
     // create Transform from area and $img
-    var getImgTrafo = function ($img, area) {
+    var getImgTrafo = function ($img, area, data) {
         var picrect = geom.rectangle($img);
         var trafo = geom.transform();
-        // subtract area offset and size
+        // zoom area offset
         trafo.concat(trafo.getTranslation(geom.position(-area.x, -area.y)));
+        // zoom area size
         trafo.concat(trafo.getScale(geom.size(1/area.width, 1/area.height)));
-        // scale to screen size
+        // rotate
+        if (data) {
+            var rot = trafo.getRotationAround(-parseFloat(data.settings.rot), 
+                    geom.position(0.5 * area.width + area.x, 0.5 * area.height + area.y));
+            trafo.concat(rot);
+        }
+        // scale to screen position and size
         trafo.concat(trafo.getScale(picrect));
         trafo.concat(trafo.getTranslation(picrect));
+        /* if (data && data.settings.rot) {
+            var rot = trafo.getRotationAround(-data.settings.rot, 
+                    geom.position(0.5 * picrect.width + picrect.x, 0.5 * picrect.height + picrect.y));
+            //var trans1 = trafo.getTranslation(geom.position(-0.5*picrect.width, -0.5*picrect.height));
+            //var rot = trafo.getRotation(data.settings.rot);
+            //var trans2 = trafo.getTranslation(geom.position(0.5*picrect.width, 0.5*pirect.height));
+            //trafo.concat(trans1);
+            trafo.concat(rot);
+            //trafo.concat(trans2);
+        } */
         return trafo;
     };
     
@@ -793,7 +808,7 @@
         return function () {
             console.debug("img loaded! this=", this, " data=", data);
             // create Transform from current area and picsize
-            data.imgTrafo = getImgTrafo($img, data.zoomArea);
+            data.imgTrafo = getImgTrafo($img, data.zoomArea, data);
             // display marks
             renderMarks(data);
             //digilib.showArrows(); // show arrow overlays for zoom navigation
@@ -821,6 +836,7 @@
             var mark = marks[i];
             if (data.zoomArea.containsPosition(mark)) {
                 var mpos = data.imgTrafo.transform(mark);
+                console.debug("renderMarks: mpos=",mpos);
                 // create mark
                 var html = '<div class="mark">'+(i+1)+'</div>';
                 var $mark = $(html);
@@ -841,7 +857,7 @@
         // offset minus frame width
         $ind.offset({ left : indRect.x-2, top : indRect.y-2 });
         $ind.css(data.settings.birdIndicatorStyle);
-    }
+    };
 
     // zooms by the given factor
     var zoomBy = function(data, factor) {