comparison client/digitallibrary/greyskin/dllib.js @ 485:351c5924b7a6

Fixed a bug when the clicked zoom area was too small
author hertzhaft
date Fri, 11 May 2007 09:33:46 +0200
parents 2b72e97ec9da
children e91d6050f27d
comparison
equal deleted inserted replaced
484:b9b8e54ed3bb 485:351c5924b7a6
435 // start event capturing 435 // start event capturing
436 registerEvent("mousedown", overlay, zoomStart); 436 registerEvent("mousedown", overlay, zoomStart);
437 registerEvent("mousedown", this.scalerImg, zoomStart); 437 registerEvent("mousedown", this.scalerImg, zoomStart);
438 window.focus(); 438 window.focus();
439 439
440 // our own reference to this for the local function 440 // our own reference to "this" for the local functions
441 var digilib = this; 441 var _this = this;
442 442
443 // mousedown handler: start moving 443 // mousedown handler: start moving
444 function zoomStart(evt) { 444 function zoomStart(evt) {
445 pt1 = evtPosition(evt); 445 pt1 = evtPosition(evt);
446 unregisterEvent("mousedown", overlay, zoomStart); 446 unregisterEvent("mousedown", overlay, zoomStart);
447 unregisterEvent("mousedown", digilib.scalerImg, zoomStart); 447 unregisterEvent("mousedown", _this.scalerImg, zoomStart);
448 // setup and show zoom div 448 // setup and show zoom div
449 moveElement(zoomdiv, Rectangle(pt1.x, pt1.y, 0, 0)); 449 moveElement(zoomdiv, Rectangle(pt1.x, pt1.y, 0, 0));
450 showElement(zoomdiv, true); 450 showElement(zoomdiv, true);
451 // register events 451 // register events
452 registerEvent("mousemove", document, zoomMove); 452 registerEvent("mousemove", document, zoomMove);
458 function zoomEnd(evt) { 458 function zoomEnd(evt) {
459 pt2 = evtPosition(evt); 459 pt2 = evtPosition(evt);
460 // assume a click if the area is too small (up to 3 x 3 pixel) 460 // assume a click if the area is too small (up to 3 x 3 pixel)
461 var clickRect = new Rectangle(pt1, pt2); 461 var clickRect = new Rectangle(pt1, pt2);
462 clickRect.normalize(); 462 clickRect.normalize();
463 if (clickRect.getArea() <= this.MIN_AREA_SIZE) return stopEvent(evt); 463 if (clickRect.getArea() <= _this.MIN_AREA_SIZE) return stopEvent(evt);
464 // hide zoom div 464 // hide zoom div
465 showElement(zoomdiv, false); 465 showElement(zoomdiv, false);
466 showElement(overlay, false); 466 showElement(overlay, false);
467 // unregister events 467 // unregister events
468 unregisterEvent("mousemove", document, zoomMove); 468 unregisterEvent("mousemove", document, zoomMove);
469 unregisterEvent("mouseup", document, zoomMove); 469 unregisterEvent("mouseup", document, zoomMove);
470 // clip and transform 470 // clip and transform
471 clickRect.clipTo(picRect); 471 clickRect.clipTo(picRect);
472 var area = digilib.trafo.invtransform(clickRect); 472 var area = _this.trafo.invtransform(clickRect);
473 digilib.setParamFromArea(area); 473 _this.setParamFromArea(area);
474 // zoomed is always fit 474 // zoomed is always fit
475 digilib.params.set("ws", 1); 475 _this.params.set("ws", 1);
476 digilib.display(); 476 _this.display();
477 return stopEvent(evt); 477 return stopEvent(evt);
478 } 478 }
479 479
480 // mouse move handler 480 // mouse move handler
481 function zoomMove(evt) { 481 function zoomMove(evt) {