Mercurial > hg > digilib
comparison client/digitallibrary/jquery/jquery.digilib.js @ 708:fc54b455f7f8 jquery
getting rid of bg div in zoomDrag
author | hertzhaft |
---|---|
date | Sun, 30 Jan 2011 18:32:40 +0100 |
parents | 5bf8958edb9b |
children | 661c13bfdcde |
comparison
equal
deleted
inserted
replaced
707:5bf8958edb9b | 708:fc54b455f7f8 |
---|---|
797 var $img, scalerUrl; | 797 var $img, scalerUrl; |
798 // fullscreen | 798 // fullscreen |
799 if (settings.interactionMode === 'fullscreen') { | 799 if (settings.interactionMode === 'fullscreen') { |
800 var imgSize = getFullscreenImgSize($elem); | 800 var imgSize = getFullscreenImgSize($elem); |
801 // fitwidth/height omits destination height/width | 801 // fitwidth/height omits destination height/width |
802 if (data.dlOpts.fitheight !== '1') { | 802 // if (data.dlOpts['fitheight'] !== '1') { |
803 if (data.dlOpts['fitheight'] == null) { | |
803 settings.dw = imgSize.width; | 804 settings.dw = imgSize.width; |
804 } | 805 } |
805 if (data.dlOpts.fitwidth !== '1') { | 806 // if (data.dlOpts['fitwidth'] !== '1') { |
807 if (data.dlOpts['fitwidth'] == null) { | |
806 settings.dh = imgSize.height; | 808 settings.dh = imgSize.height; |
807 } | 809 } |
808 $img = $('<img/>'); | 810 $img = $('<img/>'); |
809 scalerUrl = getScalerUrl(data); | 811 scalerUrl = getScalerUrl(data); |
810 // embedded mode -- try to keep img tag | 812 // embedded mode -- try to keep img tag |
828 data.$scaler = $scaler; | 830 data.$scaler = $scaler; |
829 data.$img = $img; | 831 data.$img = $img; |
830 // setup image load handler before setting the src attribute (IE bug) | 832 // setup image load handler before setting the src attribute (IE bug) |
831 $img.load(scalerImgLoadedHandler(data)); | 833 $img.load(scalerImgLoadedHandler(data)); |
832 $img.attr('src', scalerUrl); | 834 $img.attr('src', scalerUrl); |
835 // set scaler div size explicitly in case $img is hidden (for zoomDrag) | |
836 $imgRect = geom.rectangle($img); | |
837 $imgRect.adjustDiv(data.$scaler); | |
833 }; | 838 }; |
834 | 839 |
835 // creates HTML structure for buttons in elem | 840 // creates HTML structure for buttons in elem |
836 var createButtons = function (data, buttonSetIdx) { | 841 var createButtons = function (data, buttonSetIdx) { |
837 var $elem = data.$elem; | 842 var $elem = data.$elem; |
1041 return trafo; | 1046 return trafo; |
1042 }; | 1047 }; |
1043 | 1048 |
1044 // returns function for load event of scaler img | 1049 // returns function for load event of scaler img |
1045 var scalerImgLoadedHandler = function (data) { | 1050 var scalerImgLoadedHandler = function (data) { |
1046 var $img = data.$img; | |
1047 return function () { | 1051 return function () { |
1048 console.debug("img loaded! this=", this, " data=", data); | 1052 console.debug("img loaded! this=", this, " data=", data); |
1049 // create Transform from current area and picsize | 1053 // create Transform from current area and picsize |
1050 data.imgTrafo = getImgTrafo($img, data.zoomArea, | 1054 data.imgTrafo = getImgTrafo($img, data.zoomArea, |
1051 data.settings.rot, data.scalerFlags.hmir, data.scalerFlags.vmir); | 1055 data.settings.rot, data.scalerFlags.hmir, data.scalerFlags.vmir); |
1052 console.debug("imgTrafo=", data.imgTrafo); | 1056 console.debug("imgTrafo=", data.imgTrafo); |
1057 var $img = data.$img; | |
1058 // show image in case it was hidden (for example in zoomDrag) | |
1059 $img.show(); | |
1053 // display marks | 1060 // display marks |
1054 renderMarks(data); | 1061 renderMarks(data); |
1055 // TODO: digilib.showArrows(); // show arrow overlays for zoom navigation | 1062 // TODO: digilib.showArrows(); // show arrow overlays for zoom navigation |
1056 var $birdImg = data.$birdImg; | 1063 var $birdImg = data.$birdImg; |
1057 // should the birdview adapt to mirror or rotation? decision: No. :-) | 1064 // should the birdview adapt to mirror or rotation? decision: No. :-) |
1283 var dx = 0; | 1290 var dx = 0; |
1284 var dy = 0; | 1291 var dy = 0; |
1285 var $elem = data.$elem; | 1292 var $elem = data.$elem; |
1286 var $scaler = data.$scaler; | 1293 var $scaler = data.$scaler; |
1287 var $img = data.$img; | 1294 var $img = data.$img; |
1288 var $bg = $elem.has('div.bgDrag'); | |
1289 if ($bg.length === 0) { | |
1290 $bg = $('<div class="bgDrag" style="display:none; position:absolute"/>'); | |
1291 $scaler.before($bg); // set as background | |
1292 } | |
1293 | 1295 |
1294 var dragStart = function (evt) { | 1296 var dragStart = function (evt) { |
1295 // drag the image and load a new detail on mouse up | 1297 // drag the image and load a new detail on mouse up |
1296 // useless if not zoomed | 1298 // useless if not zoomed |
1297 if (isFullArea(data.zoomArea)) return false; | 1299 if (isFullArea(data.zoomArea)) return false; |
1298 pt1 = geom.position(evt); | 1300 pt1 = geom.position(evt); |
1299 $imgRect = geom.rectangle($img); | 1301 $imgRect = geom.rectangle($img); |
1300 $imgRect.adjustDiv($bg); // set background size | 1302 // keep scaler div size while $img is hidden (for embedded mode) |
1303 $imgRect.adjustDiv($scaler); | |
1301 // hide the scaler image, show it as background of div instead | 1304 // hide the scaler image, show it as background of div instead |
1302 $bg.css({ | 1305 $scaler.css({ |
1303 'background-image' : 'url(' + $img.attr('src') + ')', | 1306 'background-image' : 'url(' + $img.attr('src') + ')', |
1304 'background-repeat' : 'no-repeat', | 1307 'background-repeat' : 'no-repeat', |
1305 'background-position' : 'top left', | 1308 'background-position' : 'top left', |
1306 'cursor' : 'move' | 1309 'cursor' : 'move' |
1307 }); | 1310 }); |
1308 $img.hide(); | 1311 $img.hide(); |
1309 $bg.show(); | |
1310 $(document).bind("mousemove.digilib", dragMove); | 1312 $(document).bind("mousemove.digilib", dragMove); |
1311 $(document).bind("mouseup.digilib", dragEnd); | 1313 $(document).bind("mouseup.digilib", dragEnd); |
1312 return false; | 1314 return false; |
1313 }; | 1315 }; |
1314 | 1316 |
1315 var dragMove = function (evt) { | 1317 var dragMove = function (evt) { |
1316 // mousemove handler: drag | 1318 // mousemove handler: drag zoomed image |
1317 var pos = geom.position(evt); | 1319 var pos = geom.position(evt); |
1318 dx = pos.x - pt1.x; | 1320 dx = pos.x - pt1.x; |
1319 dy = pos.y - pt1.y; | 1321 dy = pos.y - pt1.y; |
1320 // move the background image to the new position | 1322 // move the background image to the new position |
1321 $bg.css({ | 1323 $scaler.css({ |
1322 'background-position' : dx + "px " + dy + "px" | 1324 'background-position' : dx + "px " + dy + "px" |
1323 }); | 1325 }); |
1324 return false; | 1326 return false; |
1325 }; | 1327 }; |
1326 | 1328 |
1327 var dragEnd = function (evt) { | 1329 var dragEnd = function (evt) { |
1328 // mouseup handler: reload digilib | 1330 // mouseup handler: reload zoomed image in new position |
1329 $bg.css({ | 1331 $scaler.css({ |
1330 'cursor' : 'default' | 1332 'cursor' : 'default' |
1331 }); | 1333 }); |
1332 $(document).unbind("mousemove.digilib", dragMove); | 1334 $(document).unbind("mousemove.digilib", dragMove); |
1333 $(document).unbind("mouseup.digilib", dragEnd); | 1335 $(document).unbind("mouseup.digilib", dragEnd); |
1334 // calculate relative offset | 1336 // calculate relative offset |
1337 // digilib.moveBy(x, y); | 1339 // digilib.moveBy(x, y); |
1338 var pos = geom.position(-dx, -dy); | 1340 var pos = geom.position(-dx, -dy); |
1339 var newPos = data.imgTrafo.invtransform(pos); | 1341 var newPos = data.imgTrafo.invtransform(pos); |
1340 var newArea = data.zoomArea.setPt1(newPos); | 1342 var newArea = data.zoomArea.setPt1(newPos); |
1341 data.zoomArea = MAX_ZOOMAREA.fit(newArea); | 1343 data.zoomArea = MAX_ZOOMAREA.fit(newArea); |
1342 $bg.hide(); | |
1343 redisplay(data); | 1344 redisplay(data); |
1344 return false; | 1345 return false; |
1345 }; | 1346 }; |
1346 | 1347 |
1347 $scaler.bind("mousedown.digilib", dragStart); | 1348 $scaler.bind("mousedown.digilib", dragStart); |