Mercurial > hg > digilib-old
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) { |