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); |
} |
} |
|
|
|
|