Mercurial > hg > digilib-old
comparison webapp/src/main/webapp/jquery/jquery.digilib.js @ 954:36102de2301e
code cosmetics
author | robcast |
---|---|
date | Wed, 04 Jan 2012 14:26:55 +0100 |
parents | 3d5e7458f9ae |
children | c8c441d1d7a0 |
comparison
equal
deleted
inserted
replaced
953:3d5e7458f9ae | 954:36102de2301e |
---|---|
87 'zoomArrowWidth' : 32, | 87 'zoomArrowWidth' : 32, |
88 // by what percentage should the arrows move the zoomed area? | 88 // by what percentage should the arrows move the zoomed area? |
89 'zoomArrowMoveFactor' : 0.5, | 89 'zoomArrowMoveFactor' : 0.5, |
90 // is the "about" window shown? | 90 // is the "about" window shown? |
91 'isAboutDivVisible' : false, | 91 'isAboutDivVisible' : false, |
92 // default size of background image for drag-scroll (same as Bird's Eye View image) | 92 // default size of preview image for drag-scroll (same as Bird's Eye View image) |
93 'bgImgWidth' : 200, | 93 'previewImgWidth' : 200, |
94 'bgImgHeight' : 200, | 94 'previewImgHeight' : 200, |
95 // maximum width or height of background image for drag-scroll | 95 // maximum width or height of preview background image for drag-scroll |
96 'maxBgSize' : 10000, | 96 'maxBgSize' : 10000, |
97 // parameters used by background image | 97 // parameters used by background image |
98 'bgImgParamNames' : ['fn','pn','dw','dh','mo','rot'], | 98 'previewImgParamNames' : ['fn','pn','dw','dh','mo','rot'], |
99 // reserved space in full page display (default value accounts for vertical scrollbar) | 99 // reserved space in full page display (default value accounts for vertical scrollbar) |
100 'scalerInset' : 10 | 100 'scalerInset' : 10 |
101 }; | 101 }; |
102 | 102 |
103 // list of plugins | 103 // list of plugins |
112 var EPSILON = 0.0001; | 112 var EPSILON = 0.0001; |
113 // list of buttons | 113 // list of buttons |
114 var buttons = {}; | 114 var buttons = {}; |
115 | 115 |
116 var actions = { | 116 var actions = { |
117 // init: digilib initialization | 117 |
118 /** init: digilib initialization | |
119 * | |
120 * @param options | |
121 * @returns | |
122 */ | |
118 init : function(options) { | 123 init : function(options) { |
119 // import geometry classes | 124 // import geometry classes |
120 if (plugins.geometry == null) { | 125 if (plugins.geometry == null) { |
121 $.error("jquery.digilib.geometry plugin not found!"); | 126 $.error("jquery.digilib.geometry plugin not found!"); |
122 // last straw: old version | 127 // last straw: old version |
243 // send setup event | 248 // send setup event |
244 $(data).trigger('setup'); | 249 $(data).trigger('setup'); |
245 }); | 250 }); |
246 }, | 251 }, |
247 | 252 |
248 // destroy: clean up digilib | 253 /** destroy: clean up digilib |
254 * | |
255 * @param data | |
256 * @returns | |
257 */ | |
249 destroy : function(data) { | 258 destroy : function(data) { |
250 return this.each(function(){ | 259 return this.each(function(){ |
251 var $elem = $(this); | 260 var $elem = $(this); |
252 $(window).off('.digilib'); // unbind all digilibs(?) | 261 $(window).off('.digilib'); // unbind all digilibs(?) |
253 data.digilib.remove(); | 262 data.digilib.remove(); |
254 $elem.removeData('digilib'); | 263 $elem.removeData('digilib'); |
255 }); | 264 }); |
256 }, | 265 }, |
257 | 266 |
258 // show or hide the 'about' window | 267 /** show or hide the 'about' window |
268 * | |
269 * @param data | |
270 * @param show | |
271 */ | |
259 showAboutDiv : function(data, show) { | 272 showAboutDiv : function(data, show) { |
260 var on = showDiv(data.settings.isAboutDivVisible, data.$aboutDiv, show); | 273 var on = showDiv(data.settings.isAboutDivVisible, data.$aboutDiv, show); |
261 data.settings.isAboutDivVisible = on; | 274 data.settings.isAboutDivVisible = on; |
262 //FIXME: highlightButtons(data, 'help', on); | 275 //FIXME: highlightButtons(data, 'help', on); |
263 }, | 276 }, |
264 | 277 |
265 // goto given page nr (+/-: relative) | 278 /** goto given page nr (+/-: relative) |
279 * | |
280 * @param data | |
281 * @param pageNr | |
282 * @returns {Boolean} | |
283 */ | |
266 gotoPage : function (data, pageNr) { | 284 gotoPage : function (data, pageNr) { |
267 var settings = data.settings; | 285 var settings = data.settings; |
268 var oldpn = settings.pn; | 286 var oldpn = settings.pn; |
269 if (pageNr == null) { | 287 if (pageNr == null) { |
270 pageNr = window.prompt("Goto page number", oldpn); | 288 pageNr = window.prompt("Goto page number", oldpn); |
289 data.zoomArea = FULL_AREA.copy(); | 307 data.zoomArea = FULL_AREA.copy(); |
290 // then reload | 308 // then reload |
291 redisplay(data); | 309 redisplay(data); |
292 }, | 310 }, |
293 | 311 |
294 // zoom by a given factor | 312 /** zoom by a given factor |
313 * | |
314 * @param data | |
315 * @param factor | |
316 */ | |
295 zoomBy : function (data, factor) { | 317 zoomBy : function (data, factor) { |
296 zoomBy(data, factor); | 318 zoomBy(data, factor); |
297 }, | 319 }, |
298 | 320 |
299 // zoom to area (or interactive) | 321 /** zoom to area (or interactive) |
322 * | |
323 * @param data | |
324 * @param area | |
325 */ | |
300 zoomArea : function (data, area) { | 326 zoomArea : function (data, area) { |
301 if (area == null) { | 327 if (area == null) { |
302 // interactively | 328 // interactively |
303 zoomArea(data); | 329 zoomArea(data); |
304 } else { | 330 } else { |
305 data.zoomArea = geom.rectangle(area); | 331 data.zoomArea = geom.rectangle(area); |
306 redisplay(data); | 332 redisplay(data); |
307 } | 333 } |
308 }, | 334 }, |
309 | 335 |
310 // zoom out to full page | 336 /** zoom out to full page |
337 * | |
338 * @param data | |
339 * @param mode | |
340 */ | |
311 zoomFull : function (data, mode) { | 341 zoomFull : function (data, mode) { |
312 data.zoomArea = FULL_AREA.copy(); | 342 data.zoomArea = FULL_AREA.copy(); |
313 if (mode === 'width') { | 343 if (mode === 'width') { |
314 data.dlOpts.fitwidth = 1; | 344 data.dlOpts.fitwidth = 1; |
315 delete data.dlOpts.fitheight; | 345 delete data.dlOpts.fitheight; |
321 delete data.dlOpts.fitheight; | 351 delete data.dlOpts.fitheight; |
322 } | 352 } |
323 redisplay(data); | 353 redisplay(data); |
324 }, | 354 }, |
325 | 355 |
326 // move zoomed area | 356 /** move zoomed area |
357 * | |
358 * @param data | |
359 * @param dx | |
360 * @param dy | |
361 */ | |
327 moveZoomArea : function (data, dx, dy) { | 362 moveZoomArea : function (data, dx, dy) { |
328 var za = data.zoomArea.copy(); | 363 var za = data.zoomArea.copy(); |
329 var factor = data.settings.zoomArrowMoveFactor; | 364 var factor = data.settings.zoomArrowMoveFactor; |
330 var deltaX = dx * factor * za.width; | 365 var deltaX = dx * factor * za.width; |
331 var deltaY = dy * factor * za.height; | 366 var deltaY = dy * factor * za.height; |
334 za = FULL_AREA.fit(za); | 369 za = FULL_AREA.fit(za); |
335 setZoomArea(data, za); | 370 setZoomArea(data, za); |
336 redisplay(data); | 371 redisplay(data); |
337 }, | 372 }, |
338 | 373 |
339 // set a mark by clicking (or giving a position) | 374 /** set a mark by clicking (or giving a position) |
375 * | |
376 * @param data | |
377 * @param mpos | |
378 */ | |
340 setMark : function (data, mpos) { | 379 setMark : function (data, mpos) { |
341 if (mpos == null) { | 380 if (mpos == null) { |
342 // interactive | 381 // interactive |
343 setMark(data); | 382 setMark(data); |
344 } else { | 383 } else { |
346 data.marks.push(pos); | 385 data.marks.push(pos); |
347 redisplay(data); | 386 redisplay(data); |
348 } | 387 } |
349 }, | 388 }, |
350 | 389 |
351 // remove the last mark | 390 /** remove the last mark |
391 * | |
392 * @param data | |
393 */ | |
352 removeMark : function (data) { | 394 removeMark : function (data) { |
353 data.marks.pop(); | 395 data.marks.pop(); |
354 redisplay(data); | 396 redisplay(data); |
355 }, | 397 }, |
356 | 398 |
357 // mirror the image | 399 /** mirror the image |
400 * | |
401 * @param data | |
402 * @param mode | |
403 */ | |
358 mirror : function (data, mode) { | 404 mirror : function (data, mode) { |
359 var flags = data.scalerFlags; | 405 var flags = data.scalerFlags; |
360 if (mode === 'h') { | 406 if (mode === 'h') { |
361 if (flags.hmir) { | 407 if (flags.hmir) { |
362 delete flags.hmir; | 408 delete flags.hmir; |
371 } | 417 } |
372 } | 418 } |
373 redisplay(data); | 419 redisplay(data); |
374 }, | 420 }, |
375 | 421 |
376 // rotate the image | 422 /** rotate the image |
423 * | |
424 * @param data | |
425 * @param angle | |
426 */ | |
377 rotate : function (data, angle) { | 427 rotate : function (data, angle) { |
378 var rot = data.settings.rot; | 428 var rot = data.settings.rot; |
379 if (angle == null) { | 429 if (angle == null) { |
380 angle = window.prompt("Rotation angle:", rot); | 430 angle = window.prompt("Rotation angle:", rot); |
381 } | 431 } |
382 data.settings.rot = angle; | 432 data.settings.rot = angle; |
383 redisplay(data); | 433 redisplay(data); |
384 }, | 434 }, |
385 | 435 |
386 // change brightness | 436 /** change brightness |
437 * | |
438 * @param data | |
439 * @param factor | |
440 */ | |
387 brightness : function (data, factor) { | 441 brightness : function (data, factor) { |
388 var brgt = data.settings.brgt; | 442 var brgt = data.settings.brgt; |
389 if (factor == null) { | 443 if (factor == null) { |
390 factor = window.prompt("Brightness (-255..255)", brgt); | 444 factor = window.prompt("Brightness (-255..255)", brgt); |
391 } | 445 } |
392 data.settings.brgt = factor; | 446 data.settings.brgt = factor; |
393 redisplay(data); | 447 redisplay(data); |
394 }, | 448 }, |
395 | 449 |
396 // change contrast | 450 /** change contrast |
451 * | |
452 * @param data | |
453 * @param factor | |
454 */ | |
397 contrast : function (data, factor) { | 455 contrast : function (data, factor) { |
398 var cont = data.settings.cont; | 456 var cont = data.settings.cont; |
399 if (factor == null) { | 457 if (factor == null) { |
400 factor = window.prompt("Contrast (-8, 8)", cont); | 458 factor = window.prompt("Contrast (-8, 8)", cont); |
401 } | 459 } |
402 data.settings.cont = factor; | 460 data.settings.cont = factor; |
403 redisplay(data); | 461 redisplay(data); |
404 }, | 462 }, |
405 | 463 |
406 // reset image parameters to defaults TODO: improve this! | 464 /** reset image parameters to defaults |
465 * TODO: improve this! | |
466 * | |
467 * @param data | |
468 */ | |
407 reset : function (data) { | 469 reset : function (data) { |
408 var settings = data.settings; | 470 var settings = data.settings; |
409 var paramNames = settings.digilibParamNames; | 471 var paramNames = settings.digilibParamNames; |
410 var params = data.queryParams; | 472 var params = data.queryParams; |
411 // delete all digilib parameters | 473 // delete all digilib parameters |
426 delete data.dlOpts.fitwidth; | 488 delete data.dlOpts.fitwidth; |
427 delete data.dlOpts.fitheight; | 489 delete data.dlOpts.fitheight; |
428 redisplay(data); | 490 redisplay(data); |
429 }, | 491 }, |
430 | 492 |
431 // presents a reference url (returns value if noprompt) | 493 /** presents a reference url (returns value if noprompt) |
494 * | |
495 * @param data | |
496 * @param noprompt | |
497 * @returns | |
498 */ | |
432 reference : function (data, noprompt) { | 499 reference : function (data, noprompt) { |
433 var url = getDigilibUrl(data); | 500 var url = getDigilibUrl(data); |
434 if (noprompt == null) { | 501 if (noprompt == null) { |
435 window.prompt("URL reference to the current view", url); | 502 window.prompt("URL reference to the current view", url); |
436 } | 503 } |
437 return url; | 504 return url; |
438 }, | 505 }, |
439 | 506 |
440 // set image quality | 507 /** set image quality |
508 * | |
509 * @param data | |
510 * @param qual | |
511 */ | |
441 setQuality : function (data, qual) { | 512 setQuality : function (data, qual) { |
442 var oldq = getQuality(data); | 513 var oldq = getQuality(data); |
443 if (qual == null) { | 514 if (qual == null) { |
444 qual = window.prompt("Image quality (0..2)", oldq); | 515 qual = window.prompt("Image quality (0..2)", oldq); |
445 } | 516 } |
448 setQuality(data, qual); | 519 setQuality(data, qual); |
449 redisplay(data); | 520 redisplay(data); |
450 } | 521 } |
451 }, | 522 }, |
452 | 523 |
453 // calibrate (only faking) | 524 /** calibrate (only faking) |
525 * | |
526 * @param data | |
527 * @param res | |
528 */ | |
454 calibrate : function (data, res) { | 529 calibrate : function (data, res) { |
455 var oldRes = data.settings.ddpi; | 530 var oldRes = data.settings.ddpi; |
456 if (res == null) { | 531 if (res == null) { |
457 res = window.prompt("Display resolution (dpi)", oldRes); | 532 res = window.prompt("Display resolution (dpi)", oldRes); |
458 } | 533 } |
460 data.settings.ddpi = res; | 535 data.settings.ddpi = res; |
461 redisplay(data); | 536 redisplay(data); |
462 } | 537 } |
463 }, | 538 }, |
464 | 539 |
465 // set image scale mode | 540 /** set image scale mode |
541 * | |
542 * @param data | |
543 * @param mode | |
544 */ | |
466 setScaleMode : function (data, mode) { | 545 setScaleMode : function (data, mode) { |
467 var oldM = getScaleMode(data); | 546 var oldM = getScaleMode(data); |
468 if (mode == null) { | 547 if (mode == null) { |
469 mode = window.prompt("Image scale mode (screen, pixel, size)", oldM); | 548 mode = window.prompt("Image scale mode (screen, pixel, size)", oldM); |
470 } | 549 } |
476 } | 555 } |
477 | 556 |
478 // end of actions | 557 // end of actions |
479 }; | 558 }; |
480 | 559 |
481 // returns parameters from page url | 560 /** return parameters from page url |
561 * | |
562 */ | |
482 var parseQueryParams = function() { | 563 var parseQueryParams = function() { |
483 return parseQueryString(window.location.search.slice(1)); | 564 return parseQueryString(window.location.search.slice(1)); |
484 }; | 565 }; |
485 | 566 |
486 // returns parameters from embedded img-element | 567 /** returns parameters from embedded img-element |
568 * | |
569 */ | |
487 var parseImgParams = function($elem) { | 570 var parseImgParams = function($elem) { |
488 var src = $elem.find('img').first().attr('src'); | 571 var src = $elem.find('img').first().attr('src'); |
489 if (!src) return null; | 572 if (!src) return null; |
490 var pos = src.indexOf('?'); | 573 var pos = src.indexOf('?'); |
491 var query = (pos < 0) ? '' : src.substring(pos + 1); | 574 var query = (pos < 0) ? '' : src.substring(pos + 1); |
493 var params = parseQueryString(query); | 576 var params = parseQueryString(query); |
494 params.scalerBaseUrl = scalerUrl; | 577 params.scalerBaseUrl = scalerUrl; |
495 return params; | 578 return params; |
496 }; | 579 }; |
497 | 580 |
498 // parses query parameter string into parameter object | 581 /** parses query parameter string into parameter object |
582 * | |
583 */ | |
499 var parseQueryString = function(query) { | 584 var parseQueryString = function(query) { |
500 var params = {}; | 585 var params = {}; |
501 if (query == null) return params; | 586 if (query == null) return params; |
502 var pairs = query.split("&"); | 587 var pairs = query.split("&"); |
503 //var keys = []; | 588 //var keys = []; |
509 } | 594 } |
510 } | 595 } |
511 return params; | 596 return params; |
512 }; | 597 }; |
513 | 598 |
514 // returns a query string from key names from a parameter hash (ignoring if the same value is in defaults) | 599 /** return a query string from key names from a parameter hash |
600 * (ignores keys if the same value is in defaults) | |
601 * | |
602 */ | |
515 var getParamString = function (settings, keys, defaults) { | 603 var getParamString = function (settings, keys, defaults) { |
516 var paramString = ''; | 604 var paramString = ''; |
517 var nx = false; | 605 var nx = false; |
518 for (var i = 0; i < keys.length; ++i) { | 606 for (var i = 0; i < keys.length; ++i) { |
519 var key = keys[i]; | 607 var key = keys[i]; |
529 } | 617 } |
530 } | 618 } |
531 return paramString; | 619 return paramString; |
532 }; | 620 }; |
533 | 621 |
534 // returns URL and query string for Scaler | 622 /** returns URL and query string for Scaler |
623 * | |
624 */ | |
535 var getScalerUrl = function (data) { | 625 var getScalerUrl = function (data) { |
536 packParams(data); | 626 packParams(data); |
537 var settings = data.settings; | 627 var settings = data.settings; |
538 if (settings.scalerBaseUrl == null) { | 628 if (settings.scalerBaseUrl == null) { |
539 alert("ERROR: URL of digilib Scaler servlet missing!"); | 629 alert("ERROR: URL of digilib Scaler servlet missing!"); |
542 var queryString = getParamString(settings, keys, defaults); | 632 var queryString = getParamString(settings, keys, defaults); |
543 var url = settings.scalerBaseUrl + '?' + queryString; | 633 var url = settings.scalerBaseUrl + '?' + queryString; |
544 return url; | 634 return url; |
545 }; | 635 }; |
546 | 636 |
547 // returns URL for bird's eye view image | 637 /** returns URL for preview background image |
548 var getBgImgUrl = function (data, moreParams) { | 638 * |
639 */ | |
640 var getPreviewImgUrl = function (data, moreParams) { | |
549 var settings = data.settings; | 641 var settings = data.settings; |
550 var bgOptions = { | 642 var bgOptions = { |
551 dw : settings.bgImgWidth, | 643 dw : settings.previewImgWidth, |
552 dh : settings.bgImgHeight | 644 dh : settings.previewImgHeight |
553 }; | 645 }; |
554 var bgSettings = $.extend({}, settings, bgOptions); | 646 var bgSettings = $.extend({}, settings, bgOptions); |
555 // filter scaler flags (use only hmir and vmir) | 647 // filter scaler flags (use only hmir and vmir) |
556 if (bgSettings.mo != null) { | 648 if (bgSettings.mo != null) { |
557 var mo = ''; | 649 var mo = ''; |
561 if (data.scalerFlags.vmir != null) { | 653 if (data.scalerFlags.vmir != null) { |
562 mo += 'vmir'; | 654 mo += 'vmir'; |
563 } | 655 } |
564 bgSettings.mo = mo; | 656 bgSettings.mo = mo; |
565 } | 657 } |
566 var params = getParamString(bgSettings, settings.bgImgParamNames, defaults); | 658 var params = getParamString(bgSettings, settings.previewImgParamNames, defaults); |
567 var url = settings.scalerBaseUrl + '?' + params; | 659 var url = settings.scalerBaseUrl + '?' + params; |
568 return url; | 660 return url; |
569 }; | 661 }; |
570 | 662 |
571 // returns URL and query string for current digilib | 663 /** returns URL and query string for current digilib |
664 * | |
665 */ | |
572 var getDigilibUrl = function (data) { | 666 var getDigilibUrl = function (data) { |
573 packParams(data); | 667 packParams(data); |
574 var settings = data.settings; | 668 var settings = data.settings; |
575 var paramList = settings.additionalParamNames.concat(settings.digilibParamNames); | 669 var paramList = settings.additionalParamNames.concat(settings.digilibParamNames); |
576 if (settings.suppressParamNames != null) { | 670 if (settings.suppressParamNames != null) { |
591 url = url.substring(0, pos); | 685 url = url.substring(0, pos); |
592 } | 686 } |
593 return url + '?' + queryString; | 687 return url + '?' + queryString; |
594 }; | 688 }; |
595 | 689 |
596 // loads image information from digilib server via HTTP | 690 /** loads image information from digilib server via HTTP |
691 * | |
692 */ | |
597 var loadImageInfo = function (data) { | 693 var loadImageInfo = function (data) { |
598 var settings = data.settings; | 694 var settings = data.settings; |
599 // bind default function (only once) | 695 // bind default function (only once) |
600 $(data).off('imageInfo', handleImageInfo); | 696 $(data).off('imageInfo', handleImageInfo); |
601 $(data).on('imageInfo', handleImageInfo); | 697 $(data).on('imageInfo', handleImageInfo); |
608 // send event | 704 // send event |
609 $(data).trigger('imageInfo', [json]); | 705 $(data).trigger('imageInfo', [json]); |
610 }); | 706 }); |
611 }; | 707 }; |
612 | 708 |
613 // processes some parameters into objects and stuff | 709 /** processes some parameters into objects and stuff |
710 * | |
711 */ | |
614 var unpackParams = function (data) { | 712 var unpackParams = function (data) { |
615 var settings = data.settings; | 713 var settings = data.settings; |
616 // zoom area | 714 // zoom area |
617 var zoomArea = geom.rectangle(settings.wx, settings.wy, settings.ww, settings.wh); | 715 var zoomArea = geom.rectangle(settings.wx, settings.wy, settings.ww, settings.wh); |
618 data.zoomArea = zoomArea; | 716 data.zoomArea = zoomArea; |
645 data.scalerFlags = flags; | 743 data.scalerFlags = flags; |
646 data.scaleMode = getScaleMode(data); | 744 data.scaleMode = getScaleMode(data); |
647 retrieveOptions(data); | 745 retrieveOptions(data); |
648 }; | 746 }; |
649 | 747 |
650 // put area into parameters | 748 /** put area into parameters |
749 * | |
750 */ | |
651 var packArea = function (settings, area) { | 751 var packArea = function (settings, area) { |
652 if (!area) return; | 752 if (!area) return; |
653 // zoom area | 753 // zoom area |
654 settings.wx = cropFloat(area.x); | 754 settings.wx = cropFloat(area.x); |
655 settings.wy = cropFloat(area.y); | 755 settings.wy = cropFloat(area.y); |
656 settings.ww = cropFloat(area.width); | 756 settings.ww = cropFloat(area.width); |
657 settings.wh = cropFloat(area.height); | 757 settings.wh = cropFloat(area.height); |
658 }; | 758 }; |
659 | 759 |
660 // put marks into parameters | 760 /** put marks into parameters |
761 * | |
762 */ | |
661 var packMarks = function (settings, marks) { | 763 var packMarks = function (settings, marks) { |
662 if (!marks) return; | 764 if (!marks) return; |
663 settings.mk = ''; | 765 settings.mk = ''; |
664 for (var i = 0; i < marks.length; i++) { | 766 for (var i = 0; i < marks.length; i++) { |
665 if (i) { | 767 if (i) { |
669 cropFloatStr(marks[i].x) + '/' + | 771 cropFloatStr(marks[i].x) + '/' + |
670 cropFloatStr(marks[i].y); | 772 cropFloatStr(marks[i].y); |
671 } | 773 } |
672 }; | 774 }; |
673 | 775 |
674 // pack scaler flags into parameters | 776 /** pack scaler flags into parameters |
777 * | |
778 */ | |
675 var packScalerFlags = function (settings, flags) { | 779 var packScalerFlags = function (settings, flags) { |
676 if (!flags) return; | 780 if (!flags) return; |
677 var mo = ''; | 781 var mo = ''; |
678 for (var f in flags) { | 782 for (var f in flags) { |
679 if (mo) { | 783 if (mo) { |
682 mo += f; | 786 mo += f; |
683 } | 787 } |
684 settings.mo = mo; | 788 settings.mo = mo; |
685 }; | 789 }; |
686 | 790 |
687 // put objects back into parameters | 791 /** put objects back into parameters |
792 * | |
793 */ | |
688 var packParams = function (data) { | 794 var packParams = function (data) { |
689 var settings = data.settings; | 795 var settings = data.settings; |
690 packArea(settings, data.zoomArea); | 796 packArea(settings, data.zoomArea); |
691 packMarks(settings, data.marks); | 797 packMarks(settings, data.marks); |
692 packScalerFlags(settings, data.scalerFlags); | 798 packScalerFlags(settings, data.scalerFlags); |
693 // store user interface options in cookie | 799 // store user interface options in cookie |
694 storeOptions(data); | 800 storeOptions(data); |
695 }; | 801 }; |
696 | 802 |
803 /** store digilib options in a cookie | |
804 * | |
805 */ | |
697 var storeOptions = function (data) { | 806 var storeOptions = function (data) { |
698 // save digilib options in cookie | |
699 var settings = data.settings; | 807 var settings = data.settings; |
700 if (data.dlOpts) { | 808 if (data.dlOpts) { |
701 // save digilib settings in options | 809 // save digilib settings in options |
702 data.dlOpts.birdview = settings.isBirdDivVisible ? 1 : 0; | 810 data.dlOpts.birdview = settings.isBirdDivVisible ? 1 : 0; |
703 data.dlOpts.buttons = settings.visibleButtonSets; | 811 data.dlOpts.buttons = settings.visibleButtonSets; |
721 console.debug("set cookie=", ck, " value=", qs); | 829 console.debug("set cookie=", ck, " value=", qs); |
722 $.cookie(ck, qs); | 830 $.cookie(ck, qs); |
723 } | 831 } |
724 }; | 832 }; |
725 | 833 |
834 /** restrieve digilib options from a cookie | |
835 * | |
836 */ | |
726 var retrieveOptions = function (data) { | 837 var retrieveOptions = function (data) { |
727 // clop (digilib options) | 838 // clop (digilib options) |
728 var opts = {}; | 839 var opts = {}; |
729 var settings = data.settings; | 840 var settings = data.settings; |
730 if ($.cookie) { | 841 if ($.cookie) { |
821 // send event | 932 // send event |
822 $(data).trigger('update'); | 933 $(data).trigger('update'); |
823 }; | 934 }; |
824 | 935 |
825 /** handle "update" display event. | 936 /** handle "update" display event. |
826 * updates overlays etc. | 937 * updates image transform, redraws marks etc. |
827 */ | 938 */ |
828 var handleUpdate = function (evt) { | 939 var handleUpdate = function (evt) { |
829 var data = this; | 940 var data = this; |
830 updateImgTrafo(data); | 941 updateImgTrafo(data); |
831 renderMarks(data); | 942 renderMarks(data); |
1333 }; | 1444 }; |
1334 if (newZoomArea != null) { | 1445 if (newZoomArea != null) { |
1335 // check if aspect ratio has changed | 1446 // check if aspect ratio has changed |
1336 if (newZoomArea.getAspect() !== data.zoomArea.getAspect()) { | 1447 if (newZoomArea.getAspect() !== data.zoomArea.getAspect()) { |
1337 console.debug("aspect ratio changed!"); | 1448 console.debug("aspect ratio changed!"); |
1449 // what now? | |
1338 } | 1450 } |
1339 // get transform for new zoomArea | 1451 // get transform for new zoomArea |
1340 imgTrafo = getImgTrafo($img, newZoomArea, data.settings.rot, | 1452 imgTrafo = getImgTrafo($img, newZoomArea, data.settings.rot, |
1341 data.scalerFlags.hmir, data.scalerFlags.vmir, | 1453 data.scalerFlags.hmir, data.scalerFlags.vmir, |
1342 data.scaleMode, data); | 1454 data.scaleMode, data); |
1357 // additional full-size background using CSS3 | 1469 // additional full-size background using CSS3 |
1358 fullRect = imgTrafo.transform(FULL_AREA); | 1470 fullRect = imgTrafo.transform(FULL_AREA); |
1359 if (fullRect.height < data.settings.maxBgSize && fullRect.width < data.settings.maxBgSize) { | 1471 if (fullRect.height < data.settings.maxBgSize && fullRect.width < data.settings.maxBgSize) { |
1360 // correct offset because background is relative | 1472 // correct offset because background is relative |
1361 fullRect.addPosition(scalerPos.neg()); | 1473 fullRect.addPosition(scalerPos.neg()); |
1362 var url = getBgImgUrl(data); | 1474 var url = getPreviewImgUrl(data); |
1363 // add second background url, size and position | 1475 // add second background url, size and position |
1364 scalerCss['background-image'] += ', url(' + url + ')'; | 1476 scalerCss['background-image'] += ', url(' + url + ')'; |
1365 scalerCss[data.bgSizeName] += ', ' + Math.round(fullRect.width) + 'px ' + Math.round(fullRect.height) + 'px'; | 1477 scalerCss[data.bgSizeName] += ', ' + Math.round(fullRect.width) + 'px ' + Math.round(fullRect.height) + 'px'; |
1366 scalerCss['background-position'] += ', ' + Math.round(fullRect.x) + 'px '+ Math.round(fullRect.y) + 'px'; | 1478 scalerCss['background-position'] += ', ' + Math.round(fullRect.x) + 'px '+ Math.round(fullRect.y) + 'px'; |
1367 } | 1479 } |