comparison client/digitallibrary/jquery/jquery.digilib.js @ 735:790a7673bef0 jquery

improved some embedded buttons; fixed reset function
author hertzhaft
date Wed, 02 Feb 2011 00:24:22 +0100
parents 25f2898696a2
children 54928116a7b2
comparison
equal deleted inserted replaced
733:25f2898696a2 735:790a7673bef0
230 'specialSet' : ["hmir","vmir","rot","brgt","cont","rgb","quality","size","toggleoptions"], 230 'specialSet' : ["hmir","vmir","rot","brgt","cont","rgb","quality","size","toggleoptions"],
231 'buttonSets' : ['standardSet', 'specialSet'] 231 'buttonSets' : ['standardSet', 'specialSet']
232 } 232 }
233 }, 233 },
234 // number of visible button groups 234 // number of visible button groups
235 'visibleButtonSets' : 1, 235 'visibleButtonSets' : 1,
236 // is birdView shown? 236 // is birdView shown?
237 'isBirdDivVisible' : false, 237 'isBirdDivVisible' : false,
238 // dimensions of bird's eye div 238 // dimensions of bird's eye div
239 'birdDivWidth' : 200, 239 'birdDivWidth' : 200,
240 'birdDivHeight' : 200, 240 'birdDivHeight' : 200,
250 }; 250 };
251 251
252 // affine geometry classes 252 // affine geometry classes
253 var geom = dlGeometry(); 253 var geom = dlGeometry();
254 254
255 var MAX_ZOOMAREA = geom.rectangle(0, 0, 1, 1); 255 var FULL_AREA = geom.rectangle(0, 0, 1, 1);
256 256
257 var actions = { 257 var actions = {
258 // init: digilib initialization 258 // init: digilib initialization
259 init : function(options) { 259 init : function(options) {
260 // settings for this digilib instance are merged from defaults and options 260 // settings for this digilib instance are merged from defaults and options
324 setupBirdDiv(data); 324 setupBirdDiv(data);
325 data.$birdDiv.show(); 325 data.$birdDiv.show();
326 } 326 }
327 // about window creation - TODO: could be deferred? restrict to only one item? 327 // about window creation - TODO: could be deferred? restrict to only one item?
328 setupAboutDiv(data); 328 setupAboutDiv(data);
329 // TODO: the actual moving code 329 // drag zoom area around in scaler div
330 setupZoomDrag(data); 330 setupZoomDrag(data);
331 }); 331 });
332 }, 332 },
333 333
334 // destroy: clean up digilib 334 // destroy: clean up digilib
380 return false; 380 return false;
381 } 381 }
382 } 382 }
383 // reset mk and others(?) 383 // reset mk and others(?)
384 data.marks = []; 384 data.marks = [];
385 data.zoomArea = MAX_ZOOMAREA; 385 data.zoomArea = FULL_AREA;
386 // then reload 386 // then reload
387 redisplay(data); 387 redisplay(data);
388 }, 388 },
389 389
390 // zoom by a given factor 390 // zoom by a given factor
397 zoomArea(data); 397 zoomArea(data);
398 }, 398 },
399 399
400 // zoom out to full page 400 // zoom out to full page
401 zoomFull : function (data, mode) { 401 zoomFull : function (data, mode) {
402 data.zoomArea = MAX_ZOOMAREA; 402 data.zoomArea = FULL_AREA;
403 if (mode === 'width') { 403 if (mode === 'width') {
404 data.dlOpts.fitwidth = 1; 404 data.dlOpts.fitwidth = 1;
405 delete data.dlOpts.fitheight; 405 delete data.dlOpts.fitheight;
406 } else if (mode === 'height') { 406 } else if (mode === 'height') {
407 data.dlOpts.fitheight = 1; 407 data.dlOpts.fitheight = 1;
512 // reset image parameters to defaults 512 // reset image parameters to defaults
513 reset : function (data) { 513 reset : function (data) {
514 var settings = data.settings; 514 var settings = data.settings;
515 var paramNames = settings.digilibParamNames; 515 var paramNames = settings.digilibParamNames;
516 var params = data.queryParams; 516 var params = data.queryParams;
517 // resets zoomArea, marks, scalerflags
518 resetData(data);
519 // delete all digilib parameters 517 // delete all digilib parameters
520 for (var i = 0; i < paramNames.length; i++) { 518 for (var i = 0; i < paramNames.length; i++) {
521 var paramName = paramNames[i]; 519 var paramName = paramNames[i];
522 delete settings[paramName]; 520 delete settings[paramName];
523 } 521 }
524 // fullscreen: restore only fn/pn parameters 522 settings.fn = params.fn || ''; // no default defined
525 if (settings.interactionMode === 'fullscreen') { 523 settings.pn = params.pn || defaults.pn;
526 settings.fn = params.fn || ''; // no default defined 524 settings.dw = params.dw;
527 settings.pn = params.pn || defaults.pn; 525 settings.dh = params.dh;
528 // embedded: restore original parameters
529 } else {
530 $.extend(settings, params);
531 }
532 // TODO: should we really reset all user preferences here?
533 settings.isBirdDivVisible = false; 526 settings.isBirdDivVisible = false;
534 settings.visibleButtonSets = 1; 527 settings.visibleButtonSets = 1;
528 // resets zoomArea, marks, scalerflags
529 data.zoomArea = FULL_AREA;
530 data.marks = [];
531 data.scalerFlags = {};
535 delete data.dlOpts.fitwidth; 532 delete data.dlOpts.fitwidth;
536 delete data.dlOpts.fitheight; 533 delete data.dlOpts.fitheight;
537 redisplay(data); 534 redisplay(data);
538 }, 535 },
539 536
782 } 779 }
783 // visible button sets 780 // visible button sets
784 if (opts.buttons != null) { 781 if (opts.buttons != null) {
785 settings.visibleButtonSets = opts.buttons; 782 settings.visibleButtonSets = opts.buttons;
786 } 783 }
787 };
788
789 // clear digilib data for reset
790 var resetData = function (data) {
791 // TODO: we should reset instead of delete
792 if (data.zoomArea) delete data.zoomArea;
793 if (data.marks) delete data.marks;
794 if (data.scalerFlags) delete data.scalerFlags;
795 }; 784 };
796 785
797 // (re)load the img from a new scaler URL 786 // (re)load the img from a new scaler URL
798 var redisplay = function (data) { 787 var redisplay = function (data) {
799 var settings = data.settings; 788 var settings = data.settings;
1126 var birdImgLoadedHandler = function (data) { 1115 var birdImgLoadedHandler = function (data) {
1127 return function () { 1116 return function () {
1128 var $img = $(this); 1117 var $img = $(this);
1129 console.debug("birdimg loaded! this=", this, " data=", data); 1118 console.debug("birdimg loaded! this=", this, " data=", data);
1130 // create Transform from current area and picsize 1119 // create Transform from current area and picsize
1131 data.birdTrafo = getImgTrafo($img, MAX_ZOOMAREA); 1120 data.birdTrafo = getImgTrafo($img, FULL_AREA);
1132 // display red indicator around zoomarea 1121 // display red indicator around zoomarea
1133 renderBirdArea(data); 1122 renderBirdArea(data);
1134 // enable click and drag 1123 // enable click and drag
1135 setupBirdDrag(data); 1124 setupBirdDrag(data);
1136 }; 1125 };
1165 return; 1154 return;
1166 } else { 1155 } else {
1167 $birdZoom.show(); 1156 $birdZoom.show();
1168 } 1157 }
1169 // position may have changed 1158 // position may have changed
1170 data.birdTrafo = getImgTrafo(data.$birdImg, MAX_ZOOMAREA); 1159 data.birdTrafo = getImgTrafo(data.$birdImg, FULL_AREA);
1171 var indRect = data.birdTrafo.transform(zoomArea); 1160 var indRect = data.birdTrafo.transform(zoomArea);
1172 var coords = { 1161 var coords = {
1173 left : indRect.x-2, // acount for frame width 1162 left : indRect.x-2, // acount for frame width
1174 top : indRect.y-2, 1163 top : indRect.y-2,
1175 width : indRect.width, 1164 width : indRect.width,
1198 newarea.width /= factor; 1187 newarea.width /= factor;
1199 newarea.height /= factor; 1188 newarea.height /= factor;
1200 // and recenter 1189 // and recenter
1201 newarea.x -= 0.5 * (newarea.width - area.width); 1190 newarea.x -= 0.5 * (newarea.width - area.width);
1202 newarea.y -= 0.5 * (newarea.height - area.height); 1191 newarea.y -= 0.5 * (newarea.height - area.height);
1203 newarea = MAX_ZOOMAREA.fit(newarea); 1192 newarea = FULL_AREA.fit(newarea);
1204 data.zoomArea = newarea; 1193 data.zoomArea = newarea;
1205 redisplay(data); 1194 redisplay(data);
1206 }; 1195 };
1207 1196
1208 // add a mark where clicked 1197 // add a mark where clicked
1319 1308
1320 // mousedown handler: start dragging bird zoom to a new position 1309 // mousedown handler: start dragging bird zoom to a new position
1321 var birdZoomStartDrag = function(evt) { 1310 var birdZoomStartDrag = function(evt) {
1322 startPos = geom.position(evt); 1311 startPos = geom.position(evt);
1323 // position may have changed 1312 // position may have changed
1324 data.birdTrafo = getImgTrafo($birdImg, MAX_ZOOMAREA); 1313 data.birdTrafo = getImgTrafo($birdImg, FULL_AREA);
1325 birdImgRect = geom.rectangle($birdImg); 1314 birdImgRect = geom.rectangle($birdImg);
1326 birdZoomRect = geom.rectangle($birdZoom); 1315 birdZoomRect = geom.rectangle($birdZoom);
1327 $document.bind("mousemove.dlBirdMove", birdZoomMove); 1316 $document.bind("mousemove.dlBirdMove", birdZoomMove);
1328 $document.bind("mouseup.dlBirdMove", birdZoomEndDrag); 1317 $document.bind("mouseup.dlBirdMove", birdZoomEndDrag);
1329 $birdZoom.bind("mousemove.dlBirdMove", birdZoomMove); 1318 $birdZoom.bind("mousemove.dlBirdMove", birdZoomMove);
1330 $birdZoom.bind("mouseup.dlBirdMove", birdZoomEndDrag); 1319 $birdZoom.bind("mouseup.dlBirdMove", birdZoomEndDrag);
1331 return false; 1320 return false;
1332 }; 1321 };
1333 1322
1334 // clear old handler 1323 // clear old handler
1335 $document.unbind(".dlBirdMove"); 1324 $document.unbind(".dlBirdMove");
1336 $birdImg.unbind(".dlBirdMove"); 1325 $birdImg.unbind(".dlBirdMove");
1337 $birdZoom.unbind(".dlBirdMove"); 1326 $birdZoom.unbind(".dlBirdMove");
1338 if (! isFullArea(data.zoomArea)) { 1327 if (! isFullArea(data.zoomArea)) {
1395 var za = data.imgTrafo.transform(data.zoomArea); 1384 var za = data.imgTrafo.transform(data.zoomArea);
1396 // move 1385 // move
1397 za.addPosition(delta); 1386 za.addPosition(delta);
1398 // transform back 1387 // transform back
1399 var newArea = data.imgTrafo.invtransform(za); 1388 var newArea = data.imgTrafo.invtransform(za);
1400 data.zoomArea = MAX_ZOOMAREA.fit(newArea); 1389 data.zoomArea = FULL_AREA.fit(newArea);
1401 redisplay(data); 1390 redisplay(data);
1402 return false; 1391 return false;
1403 }; 1392 };
1404 1393
1405 // clear old handler 1394 // clear old handler
1406 $document.unbind(".dlZoomDrag"); 1395 $document.unbind(".dlZoomDrag");
1407 $scaler.unbind(".dlBirdMove"); 1396 $scaler.unbind(".dlBirdMove");
1408 if (! isFullArea(data.zoomArea)) { 1397 if (! isFullArea(data.zoomArea)) {
1409 // set new handler 1398 // set new handler