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