Mercurial > hg > digilib-old
comparison webapp/src/main/webapp/jquery/jquery.digilib.js @ 972:2ad5ba781e88
better scale mode change handling.
author | robcast |
---|---|
date | Thu, 26 Jan 2012 15:00:13 +0100 |
parents | 665fd0e912f9 |
children | 678313a989a9 |
comparison
equal
deleted
inserted
replaced
971:800150ab7b6f | 972:2ad5ba781e88 |
---|---|
338 * @param data | 338 * @param data |
339 * @param mode | 339 * @param mode |
340 */ | 340 */ |
341 zoomFull : function (data, mode) { | 341 zoomFull : function (data, mode) { |
342 data.zoomArea = FULL_AREA.copy(); | 342 data.zoomArea = FULL_AREA.copy(); |
343 if (mode === 'width') { | 343 setFitMode(data, mode); |
344 data.dlOpts.fitwidth = 1; | 344 // zoom full only works in screen mode |
345 delete data.dlOpts.fitheight; | 345 setScaleMode(data, 'screen'); |
346 } else if (mode === 'height') { | |
347 data.dlOpts.fitheight = 1; | |
348 delete data.dlOpts.fitwidth; | |
349 } else { | |
350 delete data.dlOpts.fitwidth; | |
351 delete data.dlOpts.fitheight; | |
352 } | |
353 redisplay(data); | 346 redisplay(data); |
354 }, | 347 }, |
355 | 348 |
356 /** move zoomed area | 349 /** move zoomed area |
357 * | 350 * |
547 if (mode == null) { | 540 if (mode == null) { |
548 mode = window.prompt("Image scale mode (screen, pixel, size)", oldM); | 541 mode = window.prompt("Image scale mode (screen, pixel, size)", oldM); |
549 } | 542 } |
550 if (mode != null) { | 543 if (mode != null) { |
551 setScaleMode(data, mode); | 544 setScaleMode(data, mode); |
552 data.scaleMode = mode; | |
553 redisplay(data); | 545 redisplay(data); |
554 } | 546 } |
555 } | 547 } |
556 // end of actions | 548 // end of actions |
557 }; | 549 }; |
1330 // and recenter | 1322 // and recenter |
1331 newarea.x -= 0.5 * (newarea.width - area.width); | 1323 newarea.x -= 0.5 * (newarea.width - area.width); |
1332 newarea.y -= 0.5 * (newarea.height - area.height); | 1324 newarea.y -= 0.5 * (newarea.height - area.height); |
1333 newarea = FULL_AREA.fit(newarea); | 1325 newarea = FULL_AREA.fit(newarea); |
1334 setZoomArea(data, newarea); | 1326 setZoomArea(data, newarea); |
1327 // reset modes | |
1328 setScaleMode(data, 'screen'); | |
1329 setFitMode(data, 'both'); | |
1335 redisplay(data); | 1330 redisplay(data); |
1336 }; | 1331 }; |
1337 | 1332 |
1338 /** add a mark where clicked. | 1333 /** add a mark where clicked. |
1339 * | 1334 * |
1404 $elem.off("mouseup.dlZoomArea", zoomEnd); | 1399 $elem.off("mouseup.dlZoomArea", zoomEnd); |
1405 // clip and transform | 1400 // clip and transform |
1406 clickRect.clipTo(picRect); | 1401 clickRect.clipTo(picRect); |
1407 var area = data.imgTrafo.invtransform(clickRect); | 1402 var area = data.imgTrafo.invtransform(clickRect); |
1408 setZoomArea(data, area); | 1403 setZoomArea(data, area); |
1409 // zoomed is always fit | 1404 // reset modes |
1410 data.settings.ws = 1; | 1405 setFitMode(data, 'both'); |
1411 delete data.dlOpts.fitwidth; | 1406 setScaleMode(data, 'screen'); |
1412 delete data.dlOpts.fitheight; | |
1413 redisplay(data); | 1407 redisplay(data); |
1414 return false; | 1408 return false; |
1415 }; | 1409 }; |
1416 | 1410 |
1417 // clear old handler (also ZoomDrag) | 1411 // clear old handler (also ZoomDrag) |
1611 data.scalerFlags.clip = 'clip'; | 1605 data.scalerFlags.clip = 'clip'; |
1612 } else if (mode === 'size') { | 1606 } else if (mode === 'size') { |
1613 data.scalerFlags.osize = 'osize'; | 1607 data.scalerFlags.osize = 'osize'; |
1614 } | 1608 } |
1615 // mo=fit is default | 1609 // mo=fit is default |
1616 }; | 1610 // save mode |
1617 | 1611 data.scaleMode = mode; |
1612 }; | |
1613 | |
1614 /** get screen fit mode (width, height, both). | |
1615 * | |
1616 */ | |
1617 var getFitMode = function (data) { | |
1618 if (data.dlOpts.fitwidth != null) { | |
1619 return "width"; | |
1620 } else if (data.dlOpts.fitheight != null) { | |
1621 return "height"; | |
1622 } | |
1623 // "both" is default | |
1624 return "both"; | |
1625 }; | |
1626 | |
1627 /** | |
1628 * set screen fit mode (width, height, both). | |
1629 */ | |
1630 var setFitMode = function (data, mode) { | |
1631 if (mode === 'width') { | |
1632 data.dlOpts.fitwidth = 1; | |
1633 delete data.dlOpts.fitheight; | |
1634 } else if (mode === 'height') { | |
1635 data.dlOpts.fitheight = 1; | |
1636 delete data.dlOpts.fitwidth; | |
1637 } else { | |
1638 delete data.dlOpts.fitwidth; | |
1639 delete data.dlOpts.fitheight; | |
1640 } | |
1641 }; | |
1642 | |
1618 /** sets a key to a value (relative values with +/- if relative=true). | 1643 /** sets a key to a value (relative values with +/- if relative=true). |
1619 * | 1644 * |
1620 */ | 1645 */ |
1621 var setNumValue = function(settings, key, value) { | 1646 var setNumValue = function(settings, key, value) { |
1622 if (value == null) return null; | 1647 if (value == null) return null; |
1727 getImgTrafo : getImgTrafo, | 1752 getImgTrafo : getImgTrafo, |
1728 getQuality : getQuality, | 1753 getQuality : getQuality, |
1729 setQuality : setQuality, | 1754 setQuality : setQuality, |
1730 getScaleMode : getScaleMode, | 1755 getScaleMode : getScaleMode, |
1731 setScaleMode : setScaleMode, | 1756 setScaleMode : setScaleMode, |
1757 getFitMode : getFitMode, | |
1758 setFitMode : setFitMode, | |
1732 canMove : canMove, | 1759 canMove : canMove, |
1733 isFullArea : isFullArea, | 1760 isFullArea : isFullArea, |
1734 getBorderWidth : getBorderWidth, | 1761 getBorderWidth : getBorderWidth, |
1735 cropFloat : cropFloat, | 1762 cropFloat : cropFloat, |
1736 cropFloatStr : cropFloatStr | 1763 cropFloatStr : cropFloatStr |