comparison client/digitallibrary/dllib.js @ 243:4dbff786ff50

new digimage with red triangles for moving the zoomed area (can be switched off with "clop=noarrows")
author robcast
date Wed, 04 Aug 2004 20:35:35 +0200
parents 264c55606a4e
children 610c7ee770cb
comparison
equal deleted inserted replaced
242:e2c455c2a0d0 243:4dbff786ff50
1 /* Copyright (C) 2003,2004 WTWG Uni Bern and others 1 /* Copyright (C) 2003,2004 IT-Group MPIWG, WTWG Uni Bern and others
2 2
3 This program is free software; you can redistribute it and/or 3 This program is free software; you can redistribute it and/or
4 modify it under the terms of the GNU General Public License 4 modify it under the terms of the GNU General Public License
5 as published by the Free Software Foundation; either version 2 5 as published by the Free Software Foundation; either version 2
6 of the License, or (at your option) any later version. 6 of the License, or (at your option) any later version.
12 12
13 You should have received a copy of the GNU General Public License 13 You should have received a copy of the GNU General Public License
14 along with this program; if not, write to the Free Software 14 along with this program; if not, write to the Free Software
15 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA 15 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
16 16
17 Authors: ROC 20.7.2004 17 Authors:
18 first version by Christian Luginbuehl, 01.05.2003 18 Christian Luginbuehl, 01.05.2003 (first version)
19 Changed for digiLib in Zope by DW 24.03.2004 19 DW 24.03.2004 (Changed for digiLib in Zope)
20 20 Robert Casties, 04.08.2004
21 Requires baselib.js ! 21
22 ! Requires baselib.js !
22 23
23 */ 24 */
24 25
25 var dlScriptVersion = "1.0b1"; 26 var dlScriptVersion = "1.0b2";
26 27
27 /* 28 /*
28 * more parameter handling 29 * more parameter handling
29 */ 30 */
30 31
291 return; 292 return;
292 } 293 }
293 294
294 function markEvent(evt) { 295 function markEvent(evt) {
295 // event handler adding a new mark 296 // event handler adding a new mark
296 unregisterMouseDown(elemScaler, markEvent); 297 unregisterEvent("mousedown", elemScaler, markEvent);
297 var p = dlTrafo.invtransform(evtPosition(evt)); 298 var p = dlTrafo.invtransform(evtPosition(evt));
298 addMark(p); 299 addMark(p);
299 if (defined(reload)&&(!reload)) { 300 if (defined(reload)&&(!reload)) {
300 // don't redisplay 301 // don't redisplay
301 renderMarks(); 302 renderMarks();
303 } 304 }
304 display(); 305 display();
305 } 306 }
306 307
307 // starting event capture 308 // starting event capture
308 registerMouseDown(elemScaler, markEvent); 309 registerEvent("mousedown", elemScaler, markEvent);
309 } 310 }
310 311
311 312
312 function removeMark(reload) { 313 function removeMark(reload) {
313 // remove the last mark 314 // remove the last mark
348 moveElement(eck4, eck4pos); 349 moveElement(eck4, eck4pos);
349 showElement(eck1, true); 350 showElement(eck1, true);
350 showElement(eck2, true); 351 showElement(eck2, true);
351 showElement(eck3, true); 352 showElement(eck3, true);
352 showElement(eck4, true); 353 showElement(eck4, true);
353 registerMouseMove(elemScaler, zoomMove); 354 // show moving
354 registerMouseMove(eck4, zoomMove); 355 registerEvent("mousemove", elemScaler, zoomMove);
356 registerEvent("mousemove", eck4, zoomMove);
357 // enable drag-to-zoom
358 registerEvent("mouseup", elemScaler, zoomClick);
359 registerEvent("mouseup", eck4, zoomClick);
355 } else { 360 } else {
356 // second click -- end moving 361 // second click -- end moving
357 pt2 = evtPosition(evt); 362 pt2 = evtPosition(evt);
358 showElement(eck1, false); 363 showElement(eck1, false);
359 showElement(eck2, false); 364 showElement(eck2, false);
360 showElement(eck3, false); 365 showElement(eck3, false);
361 showElement(eck4, false); 366 showElement(eck4, false);
362 unregisterMouseMove(elemScaler, zoomMove); 367 unregisterEvent("mousemove", elemScaler, zoomMove);
363 unregisterMouseMove(eck4, zoomMove); 368 unregisterEvent("mousemove", eck4, zoomMove);
364 unregisterMouseDown(elemScaler, zoomClick); 369 unregisterEvent("mousedown", elemScaler, zoomClick);
365 unregisterMouseDown(eck4, zoomClick); 370 unregisterEvent("mousedown", eck4, zoomClick);
366 var p1 = dlTrafo.invtransform(pt1); 371 var p1 = dlTrafo.invtransform(pt1);
367 var p2 = dlTrafo.invtransform(pt2); 372 var p2 = dlTrafo.invtransform(pt2);
368 var ww = p2.x-p1.x; 373 var ww = p2.x-p1.x;
369 var wh = p2.y-p1.y; 374 var wh = p2.y-p1.y;
370 if ((ww > 0)&&(wh > 0)) { 375 if ((ww > 0)&&(wh > 0)) {
393 moveElement(eck3, eck3pos); 398 moveElement(eck3, eck3pos);
394 moveElement(eck4, eck4pos); 399 moveElement(eck4, eck4pos);
395 } 400 }
396 401
397 // starting event capture 402 // starting event capture
398 registerMouseDown(elemScaler, zoomClick); 403 registerEvent("mousedown", elemScaler, zoomClick);
399 registerMouseDown(eck4, zoomClick); 404 registerEvent("mousedown", eck4, zoomClick);
400 } 405 }
401 406
402 var ZOOMFACTOR = Math.sqrt(2); 407 var ZOOMFACTOR = Math.sqrt(2);
403 408
404 function zoomBy(factor) { 409 function zoomBy(factor) {
432 } 437 }
433 window.focus(); 438 window.focus();
434 439
435 function moveCenterEvent(evt) { 440 function moveCenterEvent(evt) {
436 // move to handler 441 // move to handler
437 unregisterMouseDown(elemScaler, moveCenterEvent); 442 unregisterEvent("mousedown", elemScaler, moveCenterEvent);
438 var pt = dlTrafo.invtransform(evtPosition(evt)); 443 var pt = dlTrafo.invtransform(evtPosition(evt));
439 var newarea = new Rectangle(pt.x-0.5*dlArea.width, pt.y-0.5*dlArea.height, dlArea.width, dlArea.height); 444 var newarea = new Rectangle(pt.x-0.5*dlArea.width, pt.y-0.5*dlArea.height, dlArea.width, dlArea.height);
440 newarea = dlMaxArea.fit(newarea); 445 newarea = dlMaxArea.fit(newarea);
441 // set parameters 446 // set parameters
442 setParamFromArea(newarea); 447 setParamFromArea(newarea);
443 parseArea(); 448 parseArea();
444 display(); 449 display();
445 } 450 }
446 451
447 // starting event capture 452 // starting event capture
448 registerMouseDown(elemScaler, moveCenterEvent); 453 registerEvent("mousedown", elemScaler, moveCenterEvent);
449 } 454 }
450 455
456 function moveBy(movx, movy) {
457 // move visible area by movx and movy (in units of dw, dh)
458 if ((dlArea.width == 1.0)&&(dlArea.height == 1.0)) {
459 // nothing to do
460 return;
461 }
462 var newarea = dlArea.copy();
463 newarea.x += parseFloat(movx)*dlArea.width;
464 newarea.y += parseFloat(movy)*dlArea.height;
465 newarea = dlMaxArea.fit(newarea);
466 // set parameters
467 setParamFromArea(newarea);
468 parseArea();
469 display();
470 }
471
472
451 473
452 474
453 function getRef() { 475 function getRef() {
454 // returns a reference to the current digilib set 476 // returns a reference to the current digilib set
455 if (! baseUrl) { 477 if (! baseUrl) {