comparison client/digitallibrary/greyskin/dllib.js @ 514:e91d6050f27d

zoom and pan marks in red prettier js
author robcast
date Thu, 03 Sep 2009 15:39:18 +0200
parents 351c5924b7a6
children 72604a10ee1a
comparison
equal deleted inserted replaced
513:a53693fd7a17 514:e91d6050f27d
397 397
398 Digilib.prototype.setMark = function() { 398 Digilib.prototype.setMark = function() {
399 // add a mark where clicked 399 // add a mark where clicked
400 window.focus(); 400 window.focus();
401 this.moveCenter(false); 401 this.moveCenter(false);
402
402 // start event capturing 403 // start event capturing
403 registerEvent("mousedown", this.scalerDiv, markEvent); 404 registerEvent("mousedown", this.scalerDiv, markEvent);
404 405
405 // our own reference to this for the local function 406 // our own reference to this for the local function
406 var digilib = this; 407 var digilib = this;
407 408
408 function markEvent(evt) { 409 function markEvent(evt) {
409 // event handler adding a new mark 410 // event handler adding a new mark
410 unregisterEvent("mousedown", digilib.scalerDiv, markEvent); 411 unregisterEvent("mousedown", digilib.scalerDiv, markEvent);
411 digilib.marks.addEvent(evt); 412 digilib.marks.addEvent(evt);
435 // start event capturing 436 // start event capturing
436 registerEvent("mousedown", overlay, zoomStart); 437 registerEvent("mousedown", overlay, zoomStart);
437 registerEvent("mousedown", this.scalerImg, zoomStart); 438 registerEvent("mousedown", this.scalerImg, zoomStart);
438 window.focus(); 439 window.focus();
439 440
440 // our own reference to "this" for the local functions 441 // our own reference to "this" for the local functions
441 var _this = this; 442 var digilib = this;
442 443
443 // mousedown handler: start moving 444 // mousedown handler: start moving
444 function zoomStart(evt) { 445 function zoomStart(evt) {
445 pt1 = evtPosition(evt); 446 pt1 = evtPosition(evt);
446 unregisterEvent("mousedown", overlay, zoomStart); 447 unregisterEvent("mousedown", overlay, zoomStart);
447 unregisterEvent("mousedown", _this.scalerImg, zoomStart); 448 unregisterEvent("mousedown", digilib.scalerImg, zoomStart);
448 // setup and show zoom div 449 // setup and show zoom div
449 moveElement(zoomdiv, Rectangle(pt1.x, pt1.y, 0, 0)); 450 moveElement(zoomdiv, Rectangle(pt1.x, pt1.y, 0, 0));
450 showElement(zoomdiv, true); 451 showElement(zoomdiv, true);
451 // register events 452 // register events
452 registerEvent("mousemove", document, zoomMove); 453 registerEvent("mousemove", document, zoomMove);
453 registerEvent("mouseup", document, zoomEnd); 454 registerEvent("mouseup", document, zoomEnd);
454 return stopEvent(evt); 455 return stopEvent(evt);
455 } 456 }
456 457
457 // mouseup handler: end moving 458 // mouseup handler: end moving
458 function zoomEnd(evt) { 459 function zoomEnd(evt) {
459 pt2 = evtPosition(evt); 460 pt2 = evtPosition(evt);
460 // assume a click if the area is too small (up to 3 x 3 pixel) 461 // assume a click if the area is too small (up to 3 x 3 pixel)
461 var clickRect = new Rectangle(pt1, pt2); 462 var clickRect = new Rectangle(pt1, pt2);
462 clickRect.normalize(); 463 clickRect.normalize();
463 if (clickRect.getArea() <= _this.MIN_AREA_SIZE) return stopEvent(evt); 464 if (clickRect.getArea() <= digilib.MIN_AREA_SIZE) return stopEvent(evt);
464 // hide zoom div 465 // hide zoom div
465 showElement(zoomdiv, false); 466 showElement(zoomdiv, false);
466 showElement(overlay, false); 467 showElement(overlay, false);
467 // unregister events 468 // unregister events
468 unregisterEvent("mousemove", document, zoomMove); 469 unregisterEvent("mousemove", document, zoomMove);
469 unregisterEvent("mouseup", document, zoomMove); 470 unregisterEvent("mouseup", document, zoomEnd);
470 // clip and transform 471 // clip and transform
471 clickRect.clipTo(picRect); 472 clickRect.clipTo(picRect);
472 var area = _this.trafo.invtransform(clickRect); 473 var area = digilib.trafo.invtransform(clickRect);
473 _this.setParamFromArea(area); 474 digilib.setParamFromArea(area);
474 // zoomed is always fit 475 // zoomed is always fit
475 _this.params.set("ws", 1); 476 digilib.params.set("ws", 1);
476 _this.display(); 477 digilib.display();
477 return stopEvent(evt); 478 return stopEvent(evt);
478 } 479 }
479 480
480 // mouse move handler 481 // mouse move handler
481 function zoomMove(evt) { 482 function zoomMove(evt) {
482 pt2 = evtPosition(evt); 483 pt2 = evtPosition(evt);
483 var rect = new Rectangle(pt1, pt2); 484 var rect = new Rectangle(pt1, pt2);
484 rect.normalize(); 485 rect.normalize();
485 rect.clipTo(picRect); 486 rect.clipTo(picRect);