Mercurial > hg > digilib-old
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 |