--- zogiLib/js/Attic/dl_lib.js 2004/06/02 21:53:15 1.3 +++ zogiLib/js/Attic/dl_lib.js 2004/06/07 17:56:54 1.7 @@ -190,15 +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]; } + if ((!elemScaler)||(!picElem)) { + alert("Sorry, zogilib doesn't work here!"); + return false; + } // give a name to the window containing digilib top.window.name = "digilib"; // put the query parameters (sans "?") in the parameters array @@ -211,7 +212,7 @@ function dl_init() { renderMarks(); // done focus(); - return null; + return; } function display(detail) { @@ -257,7 +258,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 +286,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(); } @@ -309,6 +309,7 @@ function zoomPoint(inout) { function zoomPointEvent(evt) { // take new center and set zoom parameters + unregisterMouseDown(elemScaler, zoomPointEvent); 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); @@ -409,30 +410,28 @@ function zoomArea() { } -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); }