|
|
| version 1.3, 2004/06/02 21:53:15 | version 1.9, 2004/06/25 16:59:45 |
|---|---|
| Line 190 var elemScaler = null; | Line 190 var elemScaler = null; |
| var picElem = null; | var picElem = null; |
| function dl_init() { | function dl_init() { |
| elemScaler = getElement("scaler"); | elemScaler = getElement("scaler", true); |
| if (! elemScaler) { | |
| return false; | |
| } | |
| picElem = getElement("pic", true); | picElem = getElement("pic", true); |
| if (picElem == null) { | if (picElem == null && elemScaler) { |
| // in N4 pic is in the layer scaler | // in N4 pic is in the scaler layer |
| picElem = elemScaler.document.images[0]; | picElem = elemScaler.document.images[0]; |
| } | } |
| // give a name to the window containing digilib | if ((!elemScaler)||(!picElem)) { |
| top.window.name = "digilib"; | alert("Sorry, zogilib doesn't work here!"); |
| return false; | |
| } | |
| // put the query parameters (sans "?") in the parameters array | // put the query parameters (sans "?") in the parameters array |
| parseParameters(location.search.slice(1)); | parseParameters(location.search.slice(1)); |
| // treat special parameters | // treat special parameters |
| Line 211 function dl_init() { | Line 210 function dl_init() { |
| renderMarks(); | renderMarks(); |
| // done | // done |
| focus(); | focus(); |
| return null; | return; |
| } | } |
| function display(detail) { | function display(detail) { |
| Line 257 function renderMarks() { | Line 256 function renderMarks() { |
| if (defined(picElem.complete) && picElem.complete == false && ! browserType.isN4 ) { | if (defined(picElem.complete) && picElem.complete == false && ! browserType.isN4 ) { |
| setTimeout("renderMarks()", 100); | setTimeout("renderMarks()", 100); |
| } else { | } else { |
| //alert("rendermarks!"); | |
| dlTrafo = parseTrafo(picElem); | dlTrafo = parseTrafo(picElem); |
| for (var i = 0; i < 8; i++) { | for (var i = 0; i < 8; i++) { |
| var me = getElement("dot"+i); | var me = getElement("dot"+i); |
| Line 287 function setMark() { | Line 285 function setMark() { |
| function markEvent(evt) { | function markEvent(evt) { |
| // event handler adding a new mark | // event handler adding a new mark |
| var p = dlTrafo.invtransform(evtPosition(evt)); | |
| unregisterMouseDown(elemScaler, markEvent); | unregisterMouseDown(elemScaler, markEvent); |
| var p = dlTrafo.invtransform(evtPosition(evt)); | |
| addMark(p); | addMark(p); |
| display(); | display(); |
| } | } |
| Line 297 function setMark() { | Line 295 function setMark() { |
| registerMouseDown(elemScaler, markEvent); | 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() { | function zoomArea() { |
| var click = 1; | var click = 1; |
| Line 372 function zoomArea() { | Line 338 function zoomArea() { |
| unregisterMouseMove(eck4, zoomMove); | unregisterMouseMove(eck4, zoomMove); |
| unregisterMouseDown(elemScaler, zoomClick); | unregisterMouseDown(elemScaler, zoomClick); |
| unregisterMouseDown(eck4, zoomClick); | unregisterMouseDown(eck4, zoomClick); |
| unregisterMouseUp(elemScaler, zoomClick); | |
| unregisterMouseUp(eck4, zoomClick); | |
| var p1 = dlTrafo.invtransform(pt1); | var p1 = dlTrafo.invtransform(pt1); |
| var p2 = dlTrafo.invtransform(pt2); | var p2 = dlTrafo.invtransform(pt2); |
| var ww = p2.x-p1.x; | var ww = p2.x-p1.x; |
| Line 406 function zoomArea() { | Line 374 function zoomArea() { |
| // starting event capture | // starting event capture |
| registerMouseDown(elemScaler, zoomClick); | registerMouseDown(elemScaler, zoomClick); |
| registerMouseDown(eck4, 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) ) { | if ( (dlArea.width == 1.0) && (dlArea.height == 1.0) ) { |
| alert("This function is only available when zoomed in!"); | // noting to do |
| return; | return; |
| } | } |
| window.focus(); | |
| function moveToEvent(event) { | function moveCenterEvent(evt) { |
| // move to handler | // 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); | var newarea = new Rectangle(pt.x-0.5*dlArea.width, pt.y-0.5*dlArea.height, dlArea.width, dlArea.height); |
| newarea = dlMaxArea.fit(newarea); | newarea = dlMaxArea.fit(newarea); |
| // stopping event capture | |
| unregisterMouseDown(elemScaler, moveToEvent); | |
| // set parameters | // set parameters |
| setParameter("wx", cropFloat(newarea.x)); | setParamFromArea(newarea); |
| setParameter("wy", cropFloat(newarea.y)); | parseArea(); |
| setParameter("ww", cropFloat(newarea.width)); | |
| setParameter("wh", cropFloat(newarea.height)); | |
| display(); | display(); |
| } | } |
| // starting event capture | // starting event capture |
| registerMouseDown(elemScaler, moveToEvent); | registerMouseDown(elemScaler, moveCenterEvent); |
| } | } |