--- zogiLib/js/Attic/dl_lib.js 2004/06/02 21:53:15 1.3 +++ zogiLib/js/Attic/dl_lib.js 2004/06/25 16:59:45 1.9 @@ -190,17 +190,16 @@ var elemScaler = null; var picElem = null; function dl_init() { - elemScaler = getElement("scaler"); - if (! elemScaler) { - return false; - } + elemScaler = getElement("scaler", true); picElem = getElement("pic", true); - if (picElem == null) { - // in N4 pic is in the layer scaler + if (picElem == null && elemScaler) { + // in N4 pic is in the scaler layer picElem = elemScaler.document.images[0]; } - // give a name to the window containing digilib - top.window.name = "digilib"; + if ((!elemScaler)||(!picElem)) { + alert("Sorry, zogilib doesn't work here!"); + return false; + } // put the query parameters (sans "?") in the parameters array parseParameters(location.search.slice(1)); // treat special parameters @@ -211,7 +210,7 @@ function dl_init() { renderMarks(); // done focus(); - return null; + return; } function display(detail) { @@ -257,7 +256,6 @@ function renderMarks() { if (defined(picElem.complete) && picElem.complete == false && ! browserType.isN4 ) { setTimeout("renderMarks()", 100); } else { - //alert("rendermarks!"); dlTrafo = parseTrafo(picElem); for (var i = 0; i < 8; i++) { var me = getElement("dot"+i); @@ -286,9 +284,9 @@ function setMark() { } function markEvent(evt) { - // event handler adding a new mark - var p = dlTrafo.invtransform(evtPosition(evt)); + // event handler adding a new mark unregisterMouseDown(elemScaler, markEvent); + var p = dlTrafo.invtransform(evtPosition(evt)); addMark(p); display(); } @@ -297,38 +295,6 @@ function setMark() { registerMouseDown(elemScaler, markEvent); } -var ZOOMFACTOR = Math.sqrt(2); - -function zoomPoint(inout) { - // zoom image in or out around the clicked point - var zoom = ZOOMFACTOR; - if (inout < 0) { - zoom = 1/ZOOMFACTOR; - } - window.focus(); - - function zoomPointEvent(evt) { - // take new center and set zoom parameters - var p = dlTrafo.invtransform(evtPosition(evt)); - var neww = Math.min(dlArea.width * (1/zoom), 1.0); - var newh = Math.min(dlArea.height * (1/zoom), 1.0); - var newx = p.x - 0.5 * neww; - var newy = p.y - 0.5 * newh; - var zoomarea = new Rectangle(newx, newy, neww, newh); - // check bounds - zoomarea = dlMaxArea.fit(zoomarea); - // set parameters - setParamFromArea(zoomarea); - parseArea(); - // zoomed is always fit - setParameter("ws", 1); - display(); - } - - // starting event capture - registerMouseDown(elemScaler, zoomPointEvent); -} - function zoomArea() { var click = 1; @@ -372,6 +338,8 @@ function zoomArea() { unregisterMouseMove(eck4, zoomMove); unregisterMouseDown(elemScaler, zoomClick); unregisterMouseDown(eck4, zoomClick); + unregisterMouseUp(elemScaler, zoomClick); + unregisterMouseUp(eck4, zoomClick); var p1 = dlTrafo.invtransform(pt1); var p2 = dlTrafo.invtransform(pt2); var ww = p2.x-p1.x; @@ -406,33 +374,33 @@ function zoomArea() { // starting event capture registerMouseDown(elemScaler, zoomClick); registerMouseDown(eck4, zoomClick); + registerMouseUp(elemScaler, zoomClick); + registerMouseUp(eck4, zoomClick); } -function moveTo() { - +function moveCenter() { + // move visible area so that it's centered around the clicked point if ( (dlArea.width == 1.0) && (dlArea.height == 1.0) ) { - alert("This function is only available when zoomed in!"); + // noting to do return; } + window.focus(); - function moveToEvent(event) { + function moveCenterEvent(evt) { // move to handler - var pt = evtPosition(evt); + unregisterMouseDown(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); - // stopping event capture - unregisterMouseDown(elemScaler, moveToEvent); // set parameters - setParameter("wx", cropFloat(newarea.x)); - setParameter("wy", cropFloat(newarea.y)); - setParameter("ww", cropFloat(newarea.width)); - setParameter("wh", cropFloat(newarea.height)); + setParamFromArea(newarea); + parseArea(); display(); } // starting event capture - registerMouseDown(elemScaler, moveToEvent); + registerMouseDown(elemScaler, moveCenterEvent); }