--- zogiLib/js/Attic/dl_lib.js 2004/06/02 17:32:54 1.2 +++ zogiLib/js/Attic/dl_lib.js 2004/06/04 16:07:49 1.6 @@ -191,14 +191,15 @@ var picElem = null; function dl_init() { elemScaler = getElement("scaler"); - if (! elemScaler) { - return false; - } picElem = getElement("pic", true); if (picElem == null) { - // in N4 pic is in the layer scaler + // 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) { @@ -235,7 +236,14 @@ function openWin(url, title, params) { function getRef(select) { // open a dialog with a reference to the current digilib set - var hyperlinkRef = baseUrl + "?" + getAllParameters(9); + if (! baseUrl) { + var baseUrl = location.protocol + "//" + location.host + location.pathname; + } + var hyperlinkRef = baseUrl; + var par = getAllParameters(9); + if (par.length > 0) { + hyperlinkRef += "?" + par; + } if ( select == 0 ) { prompt("Link for LaTeX-documents", "\\href{" + hyperlinkRef + "}{TEXT}"); } else if ( select == 1 ) { @@ -250,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); @@ -279,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(); } @@ -302,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); @@ -402,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); }