diff client/digitallibrary/dllib.js @ 243:4dbff786ff50

new digimage with red triangles for moving the zoomed area (can be switched off with "clop=noarrows")
author robcast
date Wed, 04 Aug 2004 20:35:35 +0200
parents 264c55606a4e
children 610c7ee770cb
line wrap: on
line diff
--- a/client/digitallibrary/dllib.js	Wed Aug 04 20:35:35 2004 +0200
+++ b/client/digitallibrary/dllib.js	Wed Aug 04 20:35:35 2004 +0200
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003,2004 WTWG Uni Bern and others
+/* Copyright (C) 2003,2004 IT-Group MPIWG, WTWG Uni Bern and others
  
 This program is free software; you can redistribute it and/or
 modify it under the terms of the GNU General Public License
@@ -14,15 +14,16 @@
 along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA
  
-Authors: ROC 20.7.2004
-  first version by Christian Luginbuehl, 01.05.2003
-  Changed for digiLib in Zope by DW 24.03.2004
+Authors:
+  Christian Luginbuehl, 01.05.2003 (first version)
+  DW 24.03.2004 (Changed for digiLib in Zope)
+  Robert Casties, 04.08.2004
 
-Requires baselib.js !
+  ! Requires baselib.js !
 
 */
 
-var dlScriptVersion = "1.0b1";
+var dlScriptVersion = "1.0b2";
 
 /*
  * more parameter handling
@@ -293,7 +294,7 @@
 
     function markEvent(evt) {
 	// event handler adding a new mark
-	unregisterMouseDown(elemScaler, markEvent);
+	unregisterEvent("mousedown", elemScaler, markEvent);
 	var p = dlTrafo.invtransform(evtPosition(evt));
 	addMark(p);
 	if (defined(reload)&&(!reload)) {
@@ -305,7 +306,7 @@
     }
 
     // starting event capture
-    registerMouseDown(elemScaler, markEvent);
+    registerEvent("mousedown", elemScaler, markEvent);
 }
 
 
@@ -350,8 +351,12 @@
 	    showElement(eck2, true);
 	    showElement(eck3, true);
 	    showElement(eck4, true);
-	    registerMouseMove(elemScaler, zoomMove);
-	    registerMouseMove(eck4, zoomMove);
+	    // show moving
+	    registerEvent("mousemove", elemScaler, zoomMove);
+	    registerEvent("mousemove", eck4, zoomMove);
+	    // enable drag-to-zoom
+	    registerEvent("mouseup", elemScaler, zoomClick);
+	    registerEvent("mouseup", eck4, zoomClick);
 	} else {
 	    // second click -- end moving
 	    pt2 = evtPosition(evt);
@@ -359,10 +364,10 @@
 	    showElement(eck2, false);
 	    showElement(eck3, false);
 	    showElement(eck4, false);
-	    unregisterMouseMove(elemScaler, zoomMove);
-	    unregisterMouseMove(eck4, zoomMove);
-	    unregisterMouseDown(elemScaler, zoomClick);
-	    unregisterMouseDown(eck4, zoomClick);
+	    unregisterEvent("mousemove", elemScaler, zoomMove);
+	    unregisterEvent("mousemove", eck4, zoomMove);
+	    unregisterEvent("mousedown", elemScaler, zoomClick);
+	    unregisterEvent("mousedown", eck4, zoomClick);
 	    var p1 = dlTrafo.invtransform(pt1);
 	    var p2 = dlTrafo.invtransform(pt2);
 	    var ww = p2.x-p1.x;
@@ -395,8 +400,8 @@
     }
 
     // starting event capture
-    registerMouseDown(elemScaler, zoomClick);
-    registerMouseDown(eck4, zoomClick);
+    registerEvent("mousedown", elemScaler, zoomClick);
+    registerEvent("mousedown", eck4, zoomClick);
 }
 
 var ZOOMFACTOR = Math.sqrt(2);
@@ -434,7 +439,7 @@
 
     function moveCenterEvent(evt) {
 	// move to handler
-	unregisterMouseDown(elemScaler, moveCenterEvent);
+	unregisterEvent("mousedown", elemScaler, moveCenterEvent);
 	var pt = dlTrafo.invtransform(evtPosition(evt));
 	var newarea = new Rectangle(pt.x-0.5*dlArea.width, pt.y-0.5*dlArea.height, dlArea.width, dlArea.height);
 	newarea = dlMaxArea.fit(newarea);
@@ -445,9 +450,26 @@
     }
 
     // starting event capture
-    registerMouseDown(elemScaler, moveCenterEvent);
+    registerEvent("mousedown", elemScaler, moveCenterEvent);
 }
 
+function moveBy(movx, movy) {
+    // move visible area by movx and movy (in units of dw, dh)
+    if ((dlArea.width == 1.0)&&(dlArea.height == 1.0)) {
+	// nothing to do
+	return;
+    }
+    var newarea = dlArea.copy();
+    newarea.x += parseFloat(movx)*dlArea.width;
+    newarea.y += parseFloat(movy)*dlArea.height;
+    newarea = dlMaxArea.fit(newarea);
+    // set parameters
+    setParamFromArea(newarea);
+    parseArea();
+    display();
+}
+
+    
 
 
 function getRef() {