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);