annotate webapp/src/main/webapp/jquery/jquery.digilib.js @ 1019:287e2d2d2ae8

fix flicker in Firefox by leaving scaler background visible. add setSize and setRGB actions. disabled rotation slider for now (needs excact numerical input option).
author robcast
date Mon, 20 Feb 2012 22:23:07 +0100
parents 7f8aaae89f9b
children 0eedb4a5b674
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
1 /* Copyright (c) 2011 Martin Raspe, Robert Casties
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
2
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
3 This program is free software: you can redistribute it and/or modify
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
4 it under the terms of the GNU Lesser General Public License as published by
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
5 the Free Software Foundation, either version 2 of the License, or
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
6 (at your option) any later version.
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
7
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
8 This program is distributed in the hope that it will be useful,
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
11 GNU Lesser General Public License for more details.
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
12
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
13 You should have received a copy of the GNU Lesser General Public License
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
14 along with this program. If not, see <http://www.gnu.org/licenses/>.
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
15
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
16 Authors:
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
17 Martin Raspe, Robert Casties, 11.1.2011
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
18 */
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
19
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
20 /**
604
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
21 * digilib jQuery plugin
745
ad483c008159 move birdview zoom indicator along with zoom drag
hertzhaft
parents: 744
diff changeset
22 **/
ad483c008159 move birdview zoom indicator along with zoom drag
hertzhaft
parents: 744
diff changeset
23
767
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
24 /*jslint browser: true, debug: true, forin: true
745
ad483c008159 move birdview zoom indicator along with zoom drag
hertzhaft
parents: 744
diff changeset
25 */
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
26
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
27 // fallback for console.log calls
797
6914ddedaca7 loadImageInfo sends event when loaded.
robcast
parents: 795
diff changeset
28 if (typeof console === 'undefined') {
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
29 var console = {
692
ab8054bba8d3 console debug div for IE
hertzhaft
parents: 691
diff changeset
30 log : function(){},
ab8054bba8d3 console debug div for IE
hertzhaft
parents: 691
diff changeset
31 debug : function(){},
ab8054bba8d3 console debug div for IE
hertzhaft
parents: 691
diff changeset
32 error : function(){}
ab8054bba8d3 console debug div for IE
hertzhaft
parents: 691
diff changeset
33 };
779
62c3b902f878 better width calculation for scaler div
hertzhaft
parents: 778
diff changeset
34 var customConsole = false; // set to true if debugging for MS IE
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
35 }
604
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
36
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
37 (function($) {
617
cd846b5c8be8 toggle view event handlers for bird's eye and 'about windows
hertzhaft
parents: 616
diff changeset
38
605
aee94e4a8c48 next version zero of jquery.digilib
robcast
parents: 604
diff changeset
39 var defaults = {
616
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
40 // version of this script
1019
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
41 'version' : 'jquery.digilib.js 2.1.6a1',
616
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
42 // logo url
913
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
43 'logoUrl' : 'img/digilib-logo-text1.png',
635
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
44 // homepage url (behind logo)
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
45 'homeUrl' : 'http://digilib.berlios.de',
913
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
46 // base URL to digilib (e.g. 'http://digilib.mpiwg-berlin.mpg.de/digitallibrary')
744
95e6dc1b34ec get reference works now in embedded.
robcast
parents: 743
diff changeset
47 'digilibBaseUrl' : null,
913
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
48 // base URL to Scaler servlet (usually digilibBaseUrl+'/servlet/Scaler')
652
01557c5e0682 added guessing of scalerBaseUrl
robcast
parents: 651
diff changeset
49 'scalerBaseUrl' : null,
995
76cffbaf0083 starting introduction of cssPrefix.
robcast
parents: 993
diff changeset
50 // prefix of digilib classes in CSS styles
76cffbaf0083 starting introduction of cssPrefix.
robcast
parents: 993
diff changeset
51 'cssPrefix' : 'dl-',
610
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
52 // list of Scaler parameters
627
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
53 'scalerParamNames' : ['fn','pn','dw','dh','ww','wh','wx','wy','ws','mo',
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
54 'rot','cont','brgt','rgbm','rgba','ddpi','ddpix','ddpiy'],
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
55 // Scaler parameter defaults
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
56 'pn' : 1,
627
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
57 'ww' : 1.0,
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
58 'wh' : 1.0,
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
59 'wx' : 0.0,
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
60 'wy' : 0.0,
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
61 'ws' : 1.0,
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
62 'mo' : '',
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
63 'rot' : 0,
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
64 'cont' : 0,
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
65 'brgt' : 0,
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
66 'rgbm' : '0/0/0',
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
67 'rgba' : '0/0/0',
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
68 'ddpi' : null,
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
69 'ddpix' : null,
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
70 'ddpiy' : null,
644
ee8ccd84c5f8 reload doesn't take list of changed parameters any more
robcast
parents: 643
diff changeset
71 // list of digilib parameters
772
33b5477f8d84 original size mode works with zoom area now. needs error handling.
robcast
parents: 769
diff changeset
72 'digilibParamNames' : ['fn','pn','ww','wh','wx','wy','ws','mo','rot','cont','brgt','rgbm','rgba','ddpi','mk','clop'],
644
ee8ccd84c5f8 reload doesn't take list of changed parameters any more
robcast
parents: 643
diff changeset
73 // digilib parameter defaults
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
74 'mk' : '',
650
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
75 'clop' : '',
913
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
76 // list of additional parameters (for page outside of digilib)
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
77 'additionalParamNames' : [],
914
1180d7a6aec1 added suppressParamNames for half-embedded mode.
robcast
parents: 913
diff changeset
78 // list of parameters to suppress when generating page URL
1180d7a6aec1 added suppressParamNames for half-embedded mode.
robcast
parents: 913
diff changeset
79 'suppressParamNames' : null,
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
80 // mode of operation:
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
81 // fullscreen = take parameters from page URL, keep state in page URL
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
82 // embedded = take parameters from Javascript options, keep state inside object
610
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
83 'interactionMode' : 'fullscreen',
616
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
84 // is the "about" window shown?
741
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
85 'isAboutDivVisible' : false,
991
497ab03868ab moved marks to separate plugin. (pack and unpack is still in digilib.js)
robcast
parents: 990
diff changeset
86 // default size of preview image for drag-scroll (preferrably same as Bird's Eye View image)
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
87 'previewImgWidth' : 200,
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
88 'previewImgHeight' : 200,
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
89 // maximum width or height of preview background image for drag-scroll
778
f8235c42f4a0 more preparations for SVG measuring tool
hertzhaft
parents: 777
diff changeset
90 'maxBgSize' : 10000,
795
00d37112d062 birds eye view now as a plugin.
robcast
parents: 794
diff changeset
91 // parameters used by background image
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
92 'previewImgParamNames' : ['fn','pn','dw','dh','mo','rot'],
989
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 987
diff changeset
93 // reserved space in full page display (default value accounts for body margins)
990
2feb71b40e10 new, less wide scroll arrows.
robcast
parents: 989
diff changeset
94 'scalerInsets' : { 'x' : 26, 'y': 20 }
610
cd9f657d49fa code for generating the buttons
hertzhaft
parents: 609
diff changeset
95 };
655
72acc47f1831 first try at birdview indicator
hertzhaft
parents: 653
diff changeset
96
786
868c2e795aca new plugin architecture.
robcast
parents: 785
diff changeset
97 // list of plugins
868c2e795aca new plugin architecture.
robcast
parents: 785
diff changeset
98 var plugins = {};
787
b322f553f92e more new plugin architecture.
robcast
parents: 786
diff changeset
99 // object to export functions to plugins
948
cd8c1fe97607 small cleanups.
robcast
parents: 947
diff changeset
100 var fn = null;
786
868c2e795aca new plugin architecture.
robcast
parents: 785
diff changeset
101 // affine geometry plugin stub
948
cd8c1fe97607 small cleanups.
robcast
parents: 947
diff changeset
102 var geom = null;
944
3916303b8f17 "preview" works now also for zoomIn/Out
robcast
parents: 943
diff changeset
103 // rectangle with maximum zoom area
948
cd8c1fe97607 small cleanups.
robcast
parents: 947
diff changeset
104 var FULL_AREA = null;
944
3916303b8f17 "preview" works now also for zoomIn/Out
robcast
parents: 943
diff changeset
105 // limit for float comparison
947
5bde01bcfb16 button plugin works now.
robcast
parents: 946
diff changeset
106 var EPSILON = 0.0001;
5bde01bcfb16 button plugin works now.
robcast
parents: 946
diff changeset
107 // list of buttons
5bde01bcfb16 button plugin works now.
robcast
parents: 946
diff changeset
108 var buttons = {};
655
72acc47f1831 first try at birdview indicator
hertzhaft
parents: 653
diff changeset
109
651
694bdb86cbad renamed 'actions' to 'buttons' and 'methods' to 'actions'
robcast
parents: 650
diff changeset
110 var actions = {
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
111 /** init: digilib initialization
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
112 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
113 * @param options
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
114 * @returns
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
115 */
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
116 init : function(options) {
786
868c2e795aca new plugin architecture.
robcast
parents: 785
diff changeset
117 // import geometry classes
868c2e795aca new plugin architecture.
robcast
parents: 785
diff changeset
118 if (plugins.geometry == null) {
868c2e795aca new plugin architecture.
robcast
parents: 785
diff changeset
119 $.error("jquery.digilib.geometry plugin not found!");
790
baa98b639126 put plugins reference into plugin object. put geom into fn object for plugins.
robcast
parents: 788
diff changeset
120 // last straw: old version
785
b9a75079aece geometry as first digilib plugin.
robcast
parents: 784
diff changeset
121 geom = dlGeometry();
b9a75079aece geometry as first digilib plugin.
robcast
parents: 784
diff changeset
122 } else {
793
63c1b33e38b1 documentation for new plugin api in jquery-digilib-plugin.txt.
robcast
parents: 791
diff changeset
123 // geometry plugin puts classes in the shared fn
63c1b33e38b1 documentation for new plugin api in jquery-digilib-plugin.txt.
robcast
parents: 791
diff changeset
124 geom = fn.geometry;
785
b9a75079aece geometry as first digilib plugin.
robcast
parents: 784
diff changeset
125 }
b9a75079aece geometry as first digilib plugin.
robcast
parents: 784
diff changeset
126 FULL_AREA = geom.rectangle(0, 0, 1, 1);
788
ddb28f6b066a make plugins available to other plugins
hertzhaft
parents: 787
diff changeset
127
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
128 // settings for this digilib instance are merged from defaults and options
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
129 var settings = $.extend({}, defaults, options);
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
130 var isFullscreen = settings.interactionMode === 'fullscreen';
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
131 var queryParams = {};
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
132 if (isFullscreen) {
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
133 queryParams = parseQueryParams();
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
134 // filter additional parameters
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
135 for (var p in queryParams) {
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
136 if ($.inArray(p, settings.digilibParamNames) < 0) {
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
137 settings.additionalParamNames.push(p);
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
138 }
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
139 }
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
140 }
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
141 return this.each(function() {
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
142 var $elem = $(this);
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
143 var data = $elem.data('digilib');
688
0235a8e63818 reset button plus action
hertzhaft
parents: 687
diff changeset
144 var params, elemSettings;
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
145 // if the plugin hasn't been initialized yet
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
146 if (!data) {
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
147 // merge query parameters
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
148 if (isFullscreen) {
688
0235a8e63818 reset button plus action
hertzhaft
parents: 687
diff changeset
149 params = queryParams;
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
150 } else {
688
0235a8e63818 reset button plus action
hertzhaft
parents: 687
diff changeset
151 params = parseImgParams($elem);
785
b9a75079aece geometry as first digilib plugin.
robcast
parents: 784
diff changeset
152 if ($.cookie) {
727
fc61c6b02c78 first steps to storing embedded state in cookie
robcast
parents: 726
diff changeset
153 // retrieve params from cookie
fc61c6b02c78 first steps to storing embedded state in cookie
robcast
parents: 726
diff changeset
154 var ck = "digilib-embed:fn:" + escape(params.fn) + ":pn:" + (params.pn || '1');
785
b9a75079aece geometry as first digilib plugin.
robcast
parents: 784
diff changeset
155 var cs = $.cookie(ck);
727
fc61c6b02c78 first steps to storing embedded state in cookie
robcast
parents: 726
diff changeset
156 console.debug("get cookie=", ck, " value=", cs);
fc61c6b02c78 first steps to storing embedded state in cookie
robcast
parents: 726
diff changeset
157 if (cs) {
fc61c6b02c78 first steps to storing embedded state in cookie
robcast
parents: 726
diff changeset
158 var cp = parseQueryString(cs);
728
84ad95fd3202 embedded mode state in cookie works now.
robcast
parents: 727
diff changeset
159 // ignore fn and pn from cookie TODO: should we keep pn?
84ad95fd3202 embedded mode state in cookie works now.
robcast
parents: 727
diff changeset
160 delete cp.fn;
84ad95fd3202 embedded mode state in cookie works now.
robcast
parents: 727
diff changeset
161 delete cp.pn;
785
b9a75079aece geometry as first digilib plugin.
robcast
parents: 784
diff changeset
162 $.extend(params, cp);
727
fc61c6b02c78 first steps to storing embedded state in cookie
robcast
parents: 726
diff changeset
163 }
fc61c6b02c78 first steps to storing embedded state in cookie
robcast
parents: 726
diff changeset
164 }
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
165 }
856
5795b9cae183 first step towards zoom arrows
hertzhaft
parents: 851
diff changeset
166 // setup $elem.data, needs "deep copy" because of nesting
849
a0ae2d86bcf4 settings need deep copy to be duplicated
hertzhaft
parents: 822
diff changeset
167 elemSettings = $.extend(true, {}, settings, params);
697
f60a45e7abb3 better handling of button sets
robcast
parents: 695
diff changeset
168 data = {
856
5795b9cae183 first step towards zoom arrows
hertzhaft
parents: 851
diff changeset
169 // let $(this) know about $(this) :-)
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
170 $elem : $elem,
856
5795b9cae183 first step towards zoom arrows
hertzhaft
parents: 851
diff changeset
171 // let $elem have its own copy of settings
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
172 settings : elemSettings,
856
5795b9cae183 first step towards zoom arrows
hertzhaft
parents: 851
diff changeset
173 // and of the URL query parameters
965
2673b88d7beb more commas
hertzhaft
parents: 962
diff changeset
174 queryParams : params
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
175 };
793
63c1b33e38b1 documentation for new plugin api in jquery-digilib-plugin.txt.
robcast
parents: 791
diff changeset
176 // store in jQuery data element
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
177 $elem.data('digilib', data);
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
178 } else {
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
179 // data exists
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
180 elemSettings = data.settings;
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
181 }
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
182 unpackParams(data);
989
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 987
diff changeset
183 // list of current insets (dynamic for buttons etc.)
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 987
diff changeset
184 data.currentInsets = {'static' : elemSettings.scalerInsets};
744
95e6dc1b34ec get reference works now in embedded.
robcast
parents: 743
diff changeset
185 // check if browser knows *background-size
741
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
186 for (var bs in {'':1, '-moz-':1, '-webkit-':1, '-o-':1}) {
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
187 if ($elem.css(bs+'background-size')) {
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
188 data.hasBgSize = true;
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
189 data.bgSizeName = bs+'background-size';
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
190 break;
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
191 }
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
192 }
944
3916303b8f17 "preview" works now also for zoomIn/Out
robcast
parents: 943
diff changeset
193 data.hasPreviewBg = false;
942
2b136cdbc6b2 working on more generic "preview"
robcast
parents: 934
diff changeset
194 // check if browser supports AJAX-like URL-replace without reload
2b136cdbc6b2 working on more generic "preview"
robcast
parents: 934
diff changeset
195 data.hasAsyncReload = (typeof history.replaceState === 'function');
993
862d2ae56c20 fixed problems with new events and some browsers.
robcast
parents: 992
diff changeset
196 // check if browser sets complete on cached images
862d2ae56c20 fixed problems with new events and some browsers.
robcast
parents: 992
diff changeset
197 data.hasCachedComplete = ! $.browser.mozilla;
744
95e6dc1b34ec get reference works now in embedded.
robcast
parents: 743
diff changeset
198 // check digilib base URL
95e6dc1b34ec get reference works now in embedded.
robcast
parents: 743
diff changeset
199 if (elemSettings.digilibBaseUrl == null) {
95e6dc1b34ec get reference works now in embedded.
robcast
parents: 743
diff changeset
200 if (isFullscreen) {
95e6dc1b34ec get reference works now in embedded.
robcast
parents: 743
diff changeset
201 // take current host
95e6dc1b34ec get reference works now in embedded.
robcast
parents: 743
diff changeset
202 var url = window.location.toString();
913
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
203 // assume the page lives in [webapp]/jquery/
915
ee3383f80cb0 fix bug with fullscreen mode
robcast
parents: 914
diff changeset
204 var pos = url.indexOf('/jquery/');
913
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
205 if (pos > 0) {
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
206 elemSettings.digilibBaseUrl = url.substring(0, pos);
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
207 }
744
95e6dc1b34ec get reference works now in embedded.
robcast
parents: 743
diff changeset
208 } else {
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
209 // may be we got the scaler URL from the img
744
95e6dc1b34ec get reference works now in embedded.
robcast
parents: 743
diff changeset
210 var url = elemSettings.scalerBaseUrl;
95e6dc1b34ec get reference works now in embedded.
robcast
parents: 743
diff changeset
211 if (url) {
95e6dc1b34ec get reference works now in embedded.
robcast
parents: 743
diff changeset
212 // build it from scaler URL
913
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
213 var pos = url.indexOf('/servlet/Scaler');
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
214 elemSettings.digilibBaseUrl = url.substring(0, pos);
744
95e6dc1b34ec get reference works now in embedded.
robcast
parents: 743
diff changeset
215 }
95e6dc1b34ec get reference works now in embedded.
robcast
parents: 743
diff changeset
216 }
95e6dc1b34ec get reference works now in embedded.
robcast
parents: 743
diff changeset
217 }
913
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
218 // check scaler base URL
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
219 if (elemSettings.scalerBaseUrl == null) {
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
220 if (elemSettings.digilibBaseUrl) {
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
221 elemSettings.scalerBaseUrl = elemSettings.digilibBaseUrl + '/servlet/Scaler';
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
222 }
913
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
223 }
947
5bde01bcfb16 button plugin works now.
robcast
parents: 946
diff changeset
224 // set up event handlers
5bde01bcfb16 button plugin works now.
robcast
parents: 946
diff changeset
225 $(data).on('update', handleUpdate); // handleUpdate needs to be the first handler for update
5bde01bcfb16 button plugin works now.
robcast
parents: 946
diff changeset
226 $(data).on('changeZoomArea', handleChangeZoomArea);
786
868c2e795aca new plugin architecture.
robcast
parents: 785
diff changeset
227 // initialise plugins
787
b322f553f92e more new plugin architecture.
robcast
parents: 786
diff changeset
228 for (n in plugins) {
b322f553f92e more new plugin architecture.
robcast
parents: 786
diff changeset
229 var p = plugins[n];
793
63c1b33e38b1 documentation for new plugin api in jquery-digilib-plugin.txt.
robcast
parents: 791
diff changeset
230 if (typeof p.init === 'function') {
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
231 // call the plugins init() method
793
63c1b33e38b1 documentation for new plugin api in jquery-digilib-plugin.txt.
robcast
parents: 791
diff changeset
232 p.init(data);
63c1b33e38b1 documentation for new plugin api in jquery-digilib-plugin.txt.
robcast
parents: 791
diff changeset
233 }
786
868c2e795aca new plugin architecture.
robcast
parents: 785
diff changeset
234 }
992
4fcc85d4db8f pack and unpack parameters now as events. used in marks plugin.
robcast
parents: 991
diff changeset
235 // trigger unpack params handlers
4fcc85d4db8f pack and unpack parameters now as events. used in marks plugin.
robcast
parents: 991
diff changeset
236 $(data).trigger('unpack');
763
31664707999e pixel-by-pixel scale mode works with zoom area. (not in all cases)
robcast
parents: 761
diff changeset
237 // get image info from server if needed
31664707999e pixel-by-pixel scale mode works with zoom area. (not in all cases)
robcast
parents: 761
diff changeset
238 if (data.scaleMode === 'pixel' || data.scaleMode === 'size') {
797
6914ddedaca7 loadImageInfo sends event when loaded.
robcast
parents: 795
diff changeset
239 loadImageInfo(data); // triggers "imageInfo" on completion
763
31664707999e pixel-by-pixel scale mode works with zoom area. (not in all cases)
robcast
parents: 761
diff changeset
240 }
947
5bde01bcfb16 button plugin works now.
robcast
parents: 946
diff changeset
241 // create HTML structure for scaler
779
62c3b902f878 better width calculation for scaler div
hertzhaft
parents: 778
diff changeset
242 setupScalerDiv(data);
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
243 // about window creation - TODO: could be deferred? restrict to only one item?
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
244 setupAboutDiv(data);
795
00d37112d062 birds eye view now as a plugin.
robcast
parents: 794
diff changeset
245 // send setup event
00d37112d062 birds eye view now as a plugin.
robcast
parents: 794
diff changeset
246 $(data).trigger('setup');
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
247 });
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
248 },
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
249
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
250 /** destroy: clean up digilib
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
251 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
252 * @param data
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
253 * @returns
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
254 */
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
255 destroy : function(data) {
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
256 return this.each(function(){
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
257 var $elem = $(this);
917
104fc89ef68b fixed bugs with reload when changing scale mode
robcast
parents: 915
diff changeset
258 $(window).off('.digilib'); // unbind all digilibs(?)
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
259 data.digilib.remove();
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
260 $elem.removeData('digilib');
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
261 });
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
262 },
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
263
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
264 /** show or hide the 'about' window
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
265 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
266 * @param data
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
267 * @param show
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
268 */
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
269 showAboutDiv : function(data, show) {
765
8d5239d7b1d4 state indicators for buttons
hertzhaft
parents: 763
diff changeset
270 var on = showDiv(data.settings.isAboutDivVisible, data.$aboutDiv, show);
8d5239d7b1d4 state indicators for buttons
hertzhaft
parents: 763
diff changeset
271 data.settings.isAboutDivVisible = on;
946
aa5a978a5311 moved button code into plugin
robcast
parents: 945
diff changeset
272 //FIXME: highlightButtons(data, 'help', on);
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
273 },
655
72acc47f1831 first try at birdview indicator
hertzhaft
parents: 653
diff changeset
274
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
275 /** goto given page nr (+/-: relative)
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
276 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
277 * @param data
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
278 * @param pageNr
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
279 * @returns {Boolean}
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
280 */
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
281 gotoPage : function (data, pageNr) {
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
282 var settings = data.settings;
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
283 var oldpn = settings.pn;
716
6b9b8e1401d8 goto page works now (with window.prompt)
robcast
parents: 715
diff changeset
284 if (pageNr == null) {
6b9b8e1401d8 goto page works now (with window.prompt)
robcast
parents: 715
diff changeset
285 pageNr = window.prompt("Goto page number", oldpn);
6b9b8e1401d8 goto page works now (with window.prompt)
robcast
parents: 715
diff changeset
286 }
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
287 var pn = setNumValue(settings, "pn", pageNr);
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
288 if (pn == null) return false; // nothing happened
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
289 if (pn < 1) {
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
290 alert("no such page (page number too low)");
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
291 settings.pn = oldpn;
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
292 return false;
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
293 }
767
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
294 // TODO: how do we get pt?
955
c8c441d1d7a0 fixed bug with prev/next page. (too quick in using jQuery functions)
robcast
parents: 954
diff changeset
295 if (settings.pt != null) {
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
296 if (pn > settings.pt) {
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
297 alert("no such page (page number too high)");
623
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
298 settings.pn = oldpn;
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
299 return false;
634
34ee220a664b trying showAboutDivFn...
robcast
parents: 633
diff changeset
300 }
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
301 }
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
302 // reset mk and others(?)
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
303 data.marks = [];
927
95d8184995ab fixed bug with next/prev page.
robcast
parents: 918
diff changeset
304 data.zoomArea = FULL_AREA.copy();
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
305 // then reload
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
306 redisplay(data);
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
307 },
654
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
308
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
309 /** zoom by a given factor
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
310 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
311 * @param data
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
312 * @param factor
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
313 */
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
314 zoomBy : function (data, factor) {
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
315 zoomBy(data, factor);
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
316 },
647
2e817524992e set mark works now
robcast
parents: 645
diff changeset
317
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
318 /** zoom to area (or interactive)
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
319 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
320 * @param data
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
321 * @param area
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
322 */
767
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
323 zoomArea : function (data, area) {
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
324 if (area == null) {
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
325 // interactively
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
326 zoomArea(data);
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
327 } else {
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
328 data.zoomArea = geom.rectangle(area);
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
329 redisplay(data);
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
330 }
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
331 },
650
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
332
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
333 /** zoom out to full page
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
334 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
335 * @param data
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
336 * @param mode
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
337 */
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
338 zoomFull : function (data, mode) {
917
104fc89ef68b fixed bugs with reload when changing scale mode
robcast
parents: 915
diff changeset
339 data.zoomArea = FULL_AREA.copy();
972
2ad5ba781e88 better scale mode change handling.
robcast
parents: 968
diff changeset
340 setFitMode(data, mode);
2ad5ba781e88 better scale mode change handling.
robcast
parents: 968
diff changeset
341 // zoom full only works in screen mode
2ad5ba781e88 better scale mode change handling.
robcast
parents: 968
diff changeset
342 setScaleMode(data, 'screen');
1010
ba9d90589ee8 switch bird's eye off for fullzoom
hertzhaft
parents: 1009
diff changeset
343 data.settings.isBirdDivVisible = false;
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
344 redisplay(data);
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
345 },
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
346
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
347 /** mirror the image
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
348 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
349 * @param data
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
350 * @param mode
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
351 */
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
352 mirror : function (data, mode) {
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
353 var flags = data.scalerFlags;
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
354 if (mode === 'h') {
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
355 if (flags.hmir) {
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
356 delete flags.hmir;
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
357 } else {
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
358 flags.hmir = 1;
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
359 }
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
360 } else {
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
361 if (flags.vmir) {
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
362 delete flags.vmir;
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
363 } else {
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
364 flags.vmir = 1;
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
365 }
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
366 }
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
367 redisplay(data);
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
368 },
650
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
369
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
370 /** rotate the image
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
371 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
372 * @param data
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
373 * @param angle
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
374 */
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
375 rotate : function (data, angle) {
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
376 var rot = data.settings.rot;
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
377 if (angle == null) {
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
378 angle = window.prompt("Rotation angle:", rot);
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
379 }
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
380 data.settings.rot = angle;
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
381 redisplay(data);
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
382 },
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
383
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
384 /** change brightness
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
385 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
386 * @param data
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
387 * @param factor
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
388 */
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
389 brightness : function (data, factor) {
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
390 var brgt = data.settings.brgt;
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
391 if (factor == null) {
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
392 factor = window.prompt("Brightness (-255..255)", brgt);
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
393 }
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
394 data.settings.brgt = factor;
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
395 redisplay(data);
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
396 },
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
397
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
398 /** change contrast
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
399 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
400 * @param data
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
401 * @param factor
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
402 */
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
403 contrast : function (data, factor) {
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
404 var cont = data.settings.cont;
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
405 if (factor == null) {
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
406 factor = window.prompt("Contrast (-8, 8)", cont);
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
407 }
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
408 data.settings.cont = factor;
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
409 redisplay(data);
688
0235a8e63818 reset button plus action
hertzhaft
parents: 687
diff changeset
410 },
710
d533bdf0e64e cosmetics
hertzhaft
parents: 709
diff changeset
411
1019
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
412 /** change rgb contrast and brightness
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
413 *
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
414 * @param data
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
415 * @param rgbm
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
416 * @param rgba
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
417 */
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
418 setRGB : function (data, rgbm, rgba) {
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
419 var oldRgbm = data.settings.rgbm;
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
420 var oldRgba = data.settings.rgba;
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
421 if (rgbm == null && rgba == null) {
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
422 var rgb = window.prompt("RGBm, RGBa (m_r/m_g/m_b, a_r/a_g/a_b)", oldRgbm+', '+oldRgba);
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
423 if (rgb != null) {
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
424 rgbs = rgb.split(/,\s*/);
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
425 if (rgbs.length == 2) {
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
426 data.settings.rgbm = rgbs[0];
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
427 data.settings.rgba = rgbs[1];
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
428 redisplay(data);
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
429 }
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
430 }
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
431 } else {
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
432 if (rgbm != null) data.settings.rgbm = rgbm;
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
433 if (rgba != null) data.settings.rgba = rgba;
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
434 redisplay(data);
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
435 }
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
436 },
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
437
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
438 /** reset image parameters to defaults
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
439 * TODO: improve this!
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
440 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
441 * @param data
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
442 */
688
0235a8e63818 reset button plus action
hertzhaft
parents: 687
diff changeset
443 reset : function (data) {
0235a8e63818 reset button plus action
hertzhaft
parents: 687
diff changeset
444 var settings = data.settings;
0235a8e63818 reset button plus action
hertzhaft
parents: 687
diff changeset
445 var paramNames = settings.digilibParamNames;
0235a8e63818 reset button plus action
hertzhaft
parents: 687
diff changeset
446 var params = data.queryParams;
0235a8e63818 reset button plus action
hertzhaft
parents: 687
diff changeset
447 // delete all digilib parameters
0235a8e63818 reset button plus action
hertzhaft
parents: 687
diff changeset
448 for (var i = 0; i < paramNames.length; i++) {
0235a8e63818 reset button plus action
hertzhaft
parents: 687
diff changeset
449 var paramName = paramNames[i];
0235a8e63818 reset button plus action
hertzhaft
parents: 687
diff changeset
450 delete settings[paramName];
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
451 }
735
790a7673bef0 improved some embedded buttons; fixed reset function
hertzhaft
parents: 733
diff changeset
452 settings.fn = params.fn || ''; // no default defined
790a7673bef0 improved some embedded buttons; fixed reset function
hertzhaft
parents: 733
diff changeset
453 settings.pn = params.pn || defaults.pn;
986
91534bc0c15b fix reset method
hertzhaft
parents: 984
diff changeset
454 var size = getFullscreenImgSize(data);
91534bc0c15b fix reset method
hertzhaft
parents: 984
diff changeset
455 settings.dw = params.dw || size.width;
91534bc0c15b fix reset method
hertzhaft
parents: 984
diff changeset
456 settings.dh = params.dh || size.height;
709
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
457 settings.isBirdDivVisible = false;
946
aa5a978a5311 moved button code into plugin
robcast
parents: 945
diff changeset
458 settings.visibleButtonSets = 1; // FIXME
735
790a7673bef0 improved some embedded buttons; fixed reset function
hertzhaft
parents: 733
diff changeset
459 // resets zoomArea, marks, scalerflags
917
104fc89ef68b fixed bugs with reload when changing scale mode
robcast
parents: 915
diff changeset
460 data.zoomArea = FULL_AREA.copy();
735
790a7673bef0 improved some embedded buttons; fixed reset function
hertzhaft
parents: 733
diff changeset
461 data.marks = [];
790a7673bef0 improved some embedded buttons; fixed reset function
hertzhaft
parents: 733
diff changeset
462 data.scalerFlags = {};
712
823f0050f7eb 'reset' should reset fitwidth/fitheight, too
hertzhaft
parents: 711
diff changeset
463 delete data.dlOpts.fitwidth;
823f0050f7eb 'reset' should reset fitwidth/fitheight, too
hertzhaft
parents: 711
diff changeset
464 delete data.dlOpts.fitheight;
986
91534bc0c15b fix reset method
hertzhaft
parents: 984
diff changeset
465 data.scaleMode = 'screen';
688
0235a8e63818 reset button plus action
hertzhaft
parents: 687
diff changeset
466 redisplay(data);
689
f5f2b262be07 reference button plus action
hertzhaft
parents: 688
diff changeset
467 },
f5f2b262be07 reference button plus action
hertzhaft
parents: 688
diff changeset
468
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
469 /** presents a reference url (returns value if noprompt)
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
470 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
471 * @param data
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
472 * @param noprompt
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
473 * @returns
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
474 */
703
0d49c33646da set quality works now (window.prompt only)
robcast
parents: 701
diff changeset
475 reference : function (data, noprompt) {
744
95e6dc1b34ec get reference works now in embedded.
robcast
parents: 743
diff changeset
476 var url = getDigilibUrl(data);
703
0d49c33646da set quality works now (window.prompt only)
robcast
parents: 701
diff changeset
477 if (noprompt == null) {
0d49c33646da set quality works now (window.prompt only)
robcast
parents: 701
diff changeset
478 window.prompt("URL reference to the current view", url);
1011
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
479 // return nothing so we can use is in javascript: url without reload
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
480 return;
703
0d49c33646da set quality works now (window.prompt only)
robcast
parents: 701
diff changeset
481 }
0d49c33646da set quality works now (window.prompt only)
robcast
parents: 701
diff changeset
482 return url;
0d49c33646da set quality works now (window.prompt only)
robcast
parents: 701
diff changeset
483 },
710
d533bdf0e64e cosmetics
hertzhaft
parents: 709
diff changeset
484
1011
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
485 /**
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
486 * Returns URL to the full digilib.html with the current parameters.
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
487 * Redirects immediately with mode=open.
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
488 *
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
489 * @param data
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
490 * @param mode
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
491 */
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
492 digilibUrl : function (data, mode) {
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
493 var url = getDigilibUrl(data, '/jquery/digilib.html');
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
494 if (mode === 'open') {
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
495 // redirect
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
496 window.location = url;
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
497 } else if (mode === 'open_new') {
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
498 // open new window
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
499 window.open(url);
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
500 return;
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
501 }
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
502 return url;
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
503 },
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
504
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
505
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
506 /** set image quality
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
507 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
508 * @param data
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
509 * @param qual
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
510 */
748
4b9349765b9c small method name change
robcast
parents: 747
diff changeset
511 setQuality : function (data, qual) {
703
0d49c33646da set quality works now (window.prompt only)
robcast
parents: 701
diff changeset
512 var oldq = getQuality(data);
0d49c33646da set quality works now (window.prompt only)
robcast
parents: 701
diff changeset
513 if (qual == null) {
0d49c33646da set quality works now (window.prompt only)
robcast
parents: 701
diff changeset
514 qual = window.prompt("Image quality (0..2)", oldq);
0d49c33646da set quality works now (window.prompt only)
robcast
parents: 701
diff changeset
515 }
0d49c33646da set quality works now (window.prompt only)
robcast
parents: 701
diff changeset
516 qual = parseInt(qual, 10);
0d49c33646da set quality works now (window.prompt only)
robcast
parents: 701
diff changeset
517 if (qual >= 0 && qual <= 2) {
0d49c33646da set quality works now (window.prompt only)
robcast
parents: 701
diff changeset
518 setQuality(data, qual);
0d49c33646da set quality works now (window.prompt only)
robcast
parents: 701
diff changeset
519 redisplay(data);
0d49c33646da set quality works now (window.prompt only)
robcast
parents: 701
diff changeset
520 }
754
ce5a0e6b5ee9 reading image info asynchronously works now. has just no use yet.
robcast
parents: 751
diff changeset
521 },
760
f0be4432f515 primitive plugin extension mechanism - unsure how useful this is
hertzhaft
parents: 755
diff changeset
522
1019
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
523 /** set image size
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
524 *
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
525 * @param data
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
526 * @param size
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
527 */
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
528 setSize : function (data, size) {
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
529 var olds = data.settings.ws;
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
530 if (size == null) {
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
531 size = window.prompt("Image size (1=screen size)", olds);
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
532 }
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
533 size = parseFloat(size);
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
534 if (size > 0) {
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
535 data.settings.ws = size;
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
536 redisplay(data);
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
537 }
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
538 },
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
539
991
497ab03868ab moved marks to separate plugin. (pack and unpack is still in digilib.js)
robcast
parents: 990
diff changeset
540 /** calibrate (set client screen dpi)
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
541 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
542 * @param data
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
543 * @param res
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
544 */
772
33b5477f8d84 original size mode works with zoom area now. needs error handling.
robcast
parents: 769
diff changeset
545 calibrate : function (data, res) {
33b5477f8d84 original size mode works with zoom area now. needs error handling.
robcast
parents: 769
diff changeset
546 var oldRes = data.settings.ddpi;
33b5477f8d84 original size mode works with zoom area now. needs error handling.
robcast
parents: 769
diff changeset
547 if (res == null) {
33b5477f8d84 original size mode works with zoom area now. needs error handling.
robcast
parents: 769
diff changeset
548 res = window.prompt("Display resolution (dpi)", oldRes);
33b5477f8d84 original size mode works with zoom area now. needs error handling.
robcast
parents: 769
diff changeset
549 }
33b5477f8d84 original size mode works with zoom area now. needs error handling.
robcast
parents: 769
diff changeset
550 if (res != null) {
33b5477f8d84 original size mode works with zoom area now. needs error handling.
robcast
parents: 769
diff changeset
551 data.settings.ddpi = res;
33b5477f8d84 original size mode works with zoom area now. needs error handling.
robcast
parents: 769
diff changeset
552 redisplay(data);
33b5477f8d84 original size mode works with zoom area now. needs error handling.
robcast
parents: 769
diff changeset
553 }
760
f0be4432f515 primitive plugin extension mechanism - unsure how useful this is
hertzhaft
parents: 755
diff changeset
554 },
775
65cdf970934d minor precisations
hertzhaft
parents: 769
diff changeset
555
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
556 /** set image scale mode
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
557 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
558 * @param data
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
559 * @param mode
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
560 */
761
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
561 setScaleMode : function (data, mode) {
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
562 var oldM = getScaleMode(data);
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
563 if (mode == null) {
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
564 mode = window.prompt("Image scale mode (screen, pixel, size)", oldM);
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
565 }
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
566 if (mode != null) {
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
567 setScaleMode(data, mode);
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
568 redisplay(data);
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
569 }
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
570 }
763
31664707999e pixel-by-pixel scale mode works with zoom area. (not in all cases)
robcast
parents: 761
diff changeset
571 // end of actions
605
aee94e4a8c48 next version zero of jquery.digilib
robcast
parents: 604
diff changeset
572 };
604
3a2942d2d5cd version zero of jquery.digilib
robcast
parents:
diff changeset
573
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
574 /** return parameters from page url
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
575 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
576 */
607
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
577 var parseQueryParams = function() {
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
578 return parseQueryString(window.location.search.slice(1));
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
579 };
655
72acc47f1831 first try at birdview indicator
hertzhaft
parents: 653
diff changeset
580
984
32ec05f60e1e fitwidth works without reload.
robcast
parents: 983
diff changeset
581 /**
32ec05f60e1e fitwidth works without reload.
robcast
parents: 983
diff changeset
582 * returns parameters from embedded img-element
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
583 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
584 */
607
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
585 var parseImgParams = function($elem) {
613
53ee659e2d00 keeping img tag for embedded mode seems to work now
robcast
parents: 612
diff changeset
586 var src = $elem.find('img').first().attr('src');
710
d533bdf0e64e cosmetics
hertzhaft
parents: 709
diff changeset
587 if (!src) return null;
607
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
588 var pos = src.indexOf('?');
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
589 var query = (pos < 0) ? '' : src.substring(pos + 1);
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
590 var scalerUrl = src.substring(0, pos);
627
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
591 var params = parseQueryString(query);
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
592 params.scalerBaseUrl = scalerUrl;
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
593 return params;
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
594 };
607
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
595
984
32ec05f60e1e fitwidth works without reload.
robcast
parents: 983
diff changeset
596 /**
32ec05f60e1e fitwidth works without reload.
robcast
parents: 983
diff changeset
597 * parses query parameter string into parameter object
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
598 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
599 */
607
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
600 var parseQueryString = function(query) {
701
a343240a6f7c cookie handling now just in pack/unpackParameters
robcast
parents: 700
diff changeset
601 var params = {};
a343240a6f7c cookie handling now just in pack/unpackParameters
robcast
parents: 700
diff changeset
602 if (query == null) return params;
607
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
603 var pairs = query.split("&");
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
604 //var keys = [];
607
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
605 for (var i = 0; i < pairs.length; i++) {
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
606 var pair = pairs[i].split("=");
f5d5cae64828 parameter parsing
hertzhaft
parents: 605
diff changeset
607 if (pair.length === 2) {
627
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
608 params[pair[0]] = pair[1];
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
609 //keys.push(pair[0]);
634
34ee220a664b trying showAboutDivFn...
robcast
parents: 633
diff changeset
610 }
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
611 }
627
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
612 return params;
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
613 };
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
614
984
32ec05f60e1e fitwidth works without reload.
robcast
parents: 983
diff changeset
615 /**
32ec05f60e1e fitwidth works without reload.
robcast
parents: 983
diff changeset
616 * return a query string from key names from a parameter hash
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
617 * (ignores keys if the same value is in defaults)
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
618 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
619 */
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
620 var getParamString = function (settings, keys, defaults) {
615
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
621 var paramString = '';
650
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
622 var nx = false;
913
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
623 for (var i = 0; i < keys.length; ++i) {
615
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
624 var key = keys[i];
663
9791a2cec863 rotate, contrast, and brightness
robcast
parents: 662
diff changeset
625 if ((settings[key] != null) && ((defaults == null) || (settings[key] != defaults[key]))) {
615
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
626 // first param gets no '&'
650
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
627 if (nx) {
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
628 paramString += '&';
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
629 } else {
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
630 nx = true;
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
631 }
615
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
632 // add parm=val
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
633 paramString += key + '=' + settings[key];
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
634 }
615
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
635 }
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
636 return paramString;
631
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
637 };
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
638
984
32ec05f60e1e fitwidth works without reload.
robcast
parents: 983
diff changeset
639 /**
32ec05f60e1e fitwidth works without reload.
robcast
parents: 983
diff changeset
640 * returns URL and query string for Scaler
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
641 */
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
642 var getScalerUrl = function (data) {
741
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
643 packParams(data);
653
b21c1a539af3 fixed dumb bug
robcast
parents: 652
diff changeset
644 var settings = data.settings;
652
01557c5e0682 added guessing of scalerBaseUrl
robcast
parents: 651
diff changeset
645 if (settings.scalerBaseUrl == null) {
01557c5e0682 added guessing of scalerBaseUrl
robcast
parents: 651
diff changeset
646 alert("ERROR: URL of digilib Scaler servlet missing!");
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
647 }
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
648 var keys = settings.scalerParamNames;
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
649 var queryString = getParamString(settings, keys, defaults);
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
650 var url = settings.scalerBaseUrl + '?' + queryString;
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
651 return url;
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
652 };
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
653
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
654 /** returns URL for preview background image
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
655 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
656 */
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
657 var getPreviewImgUrl = function (data, moreParams) {
741
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
658 var settings = data.settings;
795
00d37112d062 birds eye view now as a plugin.
robcast
parents: 794
diff changeset
659 var bgOptions = {
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
660 dw : settings.previewImgWidth,
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
661 dh : settings.previewImgHeight
741
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
662 };
795
00d37112d062 birds eye view now as a plugin.
robcast
parents: 794
diff changeset
663 var bgSettings = $.extend({}, settings, bgOptions);
931
58343be11fa3 "preview" for scroll arrows. still ugly code.
robcast
parents: 929
diff changeset
664 // filter scaler flags (use only hmir and vmir)
795
00d37112d062 birds eye view now as a plugin.
robcast
parents: 794
diff changeset
665 if (bgSettings.mo != null) {
00d37112d062 birds eye view now as a plugin.
robcast
parents: 794
diff changeset
666 var mo = '';
00d37112d062 birds eye view now as a plugin.
robcast
parents: 794
diff changeset
667 if (data.scalerFlags.hmir != null) {
00d37112d062 birds eye view now as a plugin.
robcast
parents: 794
diff changeset
668 mo += 'hmir,';
767
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
669 }
795
00d37112d062 birds eye view now as a plugin.
robcast
parents: 794
diff changeset
670 if (data.scalerFlags.vmir != null) {
00d37112d062 birds eye view now as a plugin.
robcast
parents: 794
diff changeset
671 mo += 'vmir';
00d37112d062 birds eye view now as a plugin.
robcast
parents: 794
diff changeset
672 }
00d37112d062 birds eye view now as a plugin.
robcast
parents: 794
diff changeset
673 bgSettings.mo = mo;
743
05665cc70a5f zoom-drag background follows rotation and mirror
robcast
parents: 742
diff changeset
674 }
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
675 var params = getParamString(bgSettings, settings.previewImgParamNames, defaults);
743
05665cc70a5f zoom-drag background follows rotation and mirror
robcast
parents: 742
diff changeset
676 var url = settings.scalerBaseUrl + '?' + params;
741
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
677 return url;
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
678 };
745
ad483c008159 move birdview zoom indicator along with zoom drag
hertzhaft
parents: 744
diff changeset
679
1011
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
680 /**
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
681 * returns URL and query string for current digilib.
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
682 * if digilibPage != null returns URL to page in digilib installation with digilib parameters,
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
683 * otherwise using current URL and parameters.
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
684 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
685 */
1011
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
686 var getDigilibUrl = function (data, digilibPage) {
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
687 packParams(data);
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
688 var settings = data.settings;
1011
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
689 var paramList = settings.digilibParamNames;
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
690 if (digilibPage != null) {
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
691 var baseUrl = data.settings.digilibBaseUrl + digilibPage;
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
692 } else {
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
693 paramList = settings.additionalParamNames.concat(settings.digilibParamNames);
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
694 if (settings.suppressParamNames != null) {
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
695 // eliminate suppressed parameters from list
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
696 paramList = $.map(paramList, function(e, idx) {
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
697 if ($.inArray(e, settings.suppressParamNames) >= 0) {
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
698 return null;
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
699 } else {
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
700 return e;
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
701 }
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
702 });
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
703 }
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
704 // take url from current location
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
705 var baseUrl = window.location.href;
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
706 var pos = baseUrl.indexOf('?');
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
707 if (pos > -1) {
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
708 baseUrl = baseUrl.substring(0, pos);
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
709 }
913
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
710 }
1007
15ebafae854a fixed behaviour of digilibUrl action.
robcast
parents: 1006
diff changeset
711 var queryString = getParamString(settings, paramList, defaults);
1011
5f35e97d8ae3 oops, worked on wrong version
hertzhaft
parents: 1010
diff changeset
712 return baseUrl + '?' + queryString;
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
713 };
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
714
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
715 /** loads image information from digilib server via HTTP
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
716 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
717 */
797
6914ddedaca7 loadImageInfo sends event when loaded.
robcast
parents: 795
diff changeset
718 var loadImageInfo = function (data) {
754
ce5a0e6b5ee9 reading image info asynchronously works now. has just no use yet.
robcast
parents: 751
diff changeset
719 var settings = data.settings;
917
104fc89ef68b fixed bugs with reload when changing scale mode
robcast
parents: 915
diff changeset
720 // bind default function (only once)
104fc89ef68b fixed bugs with reload when changing scale mode
robcast
parents: 915
diff changeset
721 $(data).off('imageInfo', handleImageInfo);
104fc89ef68b fixed bugs with reload when changing scale mode
robcast
parents: 915
diff changeset
722 $(data).on('imageInfo', handleImageInfo);
104fc89ef68b fixed bugs with reload when changing scale mode
robcast
parents: 915
diff changeset
723 var url = settings.digilibBaseUrl + '/ImgInfo-json.jsp';
754
ce5a0e6b5ee9 reading image info asynchronously works now. has just no use yet.
robcast
parents: 751
diff changeset
724 url += '?' + getParamString(settings, ['fn', 'pn'], defaults);
767
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
725 // TODO: better error handling
785
b9a75079aece geometry as first digilib plugin.
robcast
parents: 784
diff changeset
726 $.getJSON(url, function (json) {
754
ce5a0e6b5ee9 reading image info asynchronously works now. has just no use yet.
robcast
parents: 751
diff changeset
727 console.debug("got json data=", json);
ce5a0e6b5ee9 reading image info asynchronously works now. has just no use yet.
robcast
parents: 751
diff changeset
728 data.imgInfo = json;
797
6914ddedaca7 loadImageInfo sends event when loaded.
robcast
parents: 795
diff changeset
729 // send event
6914ddedaca7 loadImageInfo sends event when loaded.
robcast
parents: 795
diff changeset
730 $(data).trigger('imageInfo', [json]);
754
ce5a0e6b5ee9 reading image info asynchronously works now. has just no use yet.
robcast
parents: 751
diff changeset
731 });
ce5a0e6b5ee9 reading image info asynchronously works now. has just no use yet.
robcast
parents: 751
diff changeset
732 };
775
65cdf970934d minor precisations
hertzhaft
parents: 769
diff changeset
733
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
734 /** processes some parameters into objects and stuff
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
735 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
736 */
631
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
737 var unpackParams = function (data) {
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
738 var settings = data.settings;
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
739 // zoom area
631
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
740 var zoomArea = geom.rectangle(settings.wx, settings.wy, settings.ww, settings.wh);
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
741 data.zoomArea = zoomArea;
650
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
742 // mo (Scaler flags)
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
743 var flags = {};
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
744 if (settings.mo) {
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
745 var pa = settings.mo.split(",");
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
746 for (var i = 0; i < pa.length ; i++) {
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
747 flags[pa[i]] = pa[i];
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
748 }
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
749 }
650
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
750 data.scalerFlags = flags;
763
31664707999e pixel-by-pixel scale mode works with zoom area. (not in all cases)
robcast
parents: 761
diff changeset
751 data.scaleMode = getScaleMode(data);
723
123706249227 improved bird image handling.
robcast
parents: 719
diff changeset
752 retrieveOptions(data);
655
72acc47f1831 first try at birdview indicator
hertzhaft
parents: 653
diff changeset
753 };
72acc47f1831 first try at birdview indicator
hertzhaft
parents: 653
diff changeset
754
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
755 /** put area into parameters
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
756 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
757 */
822
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
758 var packArea = function (settings, area) {
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
759 if (!area) return;
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
760 // zoom area
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
761 settings.wx = cropFloat(area.x);
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
762 settings.wy = cropFloat(area.y);
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
763 settings.ww = cropFloat(area.width);
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
764 settings.wh = cropFloat(area.height);
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
765 };
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
766
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
767 /** pack scaler flags into parameters
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
768 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
769 */
822
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
770 var packScalerFlags = function (settings, flags) {
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
771 if (!flags) return;
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
772 var mo = '';
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
773 for (var f in flags) {
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
774 if (mo) {
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
775 mo += ',';
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
776 }
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
777 mo += f;
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
778 }
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
779 settings.mo = mo;
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
780 };
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
781
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
782 /** put objects back into parameters
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
783 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
784 */
631
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
785 var packParams = function (data) {
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
786 var settings = data.settings;
822
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
787 packArea(settings, data.zoomArea);
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
788 packScalerFlags(settings, data.scalerFlags);
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
789 // store user interface options in cookie
723
123706249227 improved bird image handling.
robcast
parents: 719
diff changeset
790 storeOptions(data);
992
4fcc85d4db8f pack and unpack parameters now as events. used in marks plugin.
robcast
parents: 991
diff changeset
791 // trigger pack handlers
4fcc85d4db8f pack and unpack parameters now as events. used in marks plugin.
robcast
parents: 991
diff changeset
792 $(data).trigger('pack');
709
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
793 };
688
0235a8e63818 reset button plus action
hertzhaft
parents: 687
diff changeset
794
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
795 /** store digilib options in a cookie
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
796 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
797 */
723
123706249227 improved bird image handling.
robcast
parents: 719
diff changeset
798 var storeOptions = function (data) {
709
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
799 var settings = data.settings;
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
800 if (data.dlOpts) {
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
801 // save digilib settings in options
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
802 data.dlOpts.birdview = settings.isBirdDivVisible ? 1 : 0;
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
803 data.dlOpts.buttons = settings.visibleButtonSets;
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
804 var clop = '';
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
805 for (var o in data.dlOpts) {
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
806 if (clop) {
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
807 clop += '&';
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
808 }
709
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
809 clop += o + '=' + data.dlOpts[o];
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
810 }
785
b9a75079aece geometry as first digilib plugin.
robcast
parents: 784
diff changeset
811 if ($.cookie) {
709
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
812 var ck = "digilib:fn:" + escape(settings.fn) + ":pn:" + settings.pn;
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
813 console.debug("set cookie=", ck, " value=", clop);
785
b9a75079aece geometry as first digilib plugin.
robcast
parents: 784
diff changeset
814 $.cookie(ck, clop);
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
815 }
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
816 }
785
b9a75079aece geometry as first digilib plugin.
robcast
parents: 784
diff changeset
817 if (settings.interactionMode !== 'fullscreen' && $.cookie) {
727
fc61c6b02c78 first steps to storing embedded state in cookie
robcast
parents: 726
diff changeset
818 // store normal parameters in cookie for embedded mode
fc61c6b02c78 first steps to storing embedded state in cookie
robcast
parents: 726
diff changeset
819 var qs = getParamString(settings, settings.digilibParamNames, defaults);
fc61c6b02c78 first steps to storing embedded state in cookie
robcast
parents: 726
diff changeset
820 var ck = "digilib-embed:fn:" + escape(settings.fn) + ":pn:" + settings.pn;
fc61c6b02c78 first steps to storing embedded state in cookie
robcast
parents: 726
diff changeset
821 console.debug("set cookie=", ck, " value=", qs);
785
b9a75079aece geometry as first digilib plugin.
robcast
parents: 784
diff changeset
822 $.cookie(ck, qs);
727
fc61c6b02c78 first steps to storing embedded state in cookie
robcast
parents: 726
diff changeset
823 }
631
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
824 };
655
72acc47f1831 first try at birdview indicator
hertzhaft
parents: 653
diff changeset
825
983
66db81af85e1 moved scroll arrows to separate plugin.
robcast
parents: 978
diff changeset
826 /** retrieve digilib options from a cookie
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
827 *
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
828 */
723
123706249227 improved bird image handling.
robcast
parents: 719
diff changeset
829 var retrieveOptions = function (data) {
709
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
830 // clop (digilib options)
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
831 var opts = {};
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
832 var settings = data.settings;
785
b9a75079aece geometry as first digilib plugin.
robcast
parents: 784
diff changeset
833 if ($.cookie) {
709
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
834 // read from cookie
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
835 var ck = "digilib:fn:" + escape(settings.fn) + ":pn:" + settings.pn;
785
b9a75079aece geometry as first digilib plugin.
robcast
parents: 784
diff changeset
836 var cp = $.cookie(ck);
709
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
837 console.debug("get cookie=", ck, " value=", cp);
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
838 // in query string format
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
839 opts = parseQueryString(cp);
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
840 }
709
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
841 data.dlOpts = opts;
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
842 // birdview option
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
843 if (opts.birdview != null) {
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
844 settings.isBirdDivVisible = opts.birdview === '1';
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
845 }
709
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
846 // visible button sets
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
847 if (opts.buttons != null) {
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
848 settings.visibleButtonSets = opts.buttons;
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
849 }
711
eab17859be79 improved button positioning
robcast
parents: 710
diff changeset
850 };
709
fca26721e8dd fixed some reset and cookie issues
hertzhaft
parents: 708
diff changeset
851
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
852 /** (re)load the image with the current settings.
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
853 *
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
854 */
644
ee8ccd84c5f8 reload doesn't take list of changed parameters any more
robcast
parents: 643
diff changeset
855 var redisplay = function (data) {
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
856 var settings = data.settings;
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
857 if (settings.interactionMode === 'fullscreen') {
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
858 // update location.href (browser URL) in fullscreen mode
644
ee8ccd84c5f8 reload doesn't take list of changed parameters any more
robcast
parents: 643
diff changeset
859 var url = getDigilibUrl(data);
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
860 var history = window.history;
942
2b136cdbc6b2 working on more generic "preview"
robcast
parents: 934
diff changeset
861 if (data.hasAsyncReload) {
798
b07d1824ca2a fullscreen mode works without reload on browsers supporting history.pushstate!
robcast
parents: 797
diff changeset
862 console.debug("faking reload to "+url);
b07d1824ca2a fullscreen mode works without reload on browsers supporting history.pushstate!
robcast
parents: 797
diff changeset
863 // change url without reloading (stateObj, title, url)
890
613c2089bc7a use setstate in redisplay instead of pushstate as long as we don't deal with popstate (i.e. history-back).
robcast
parents: 889
diff changeset
864 // TODO: we really need to push the state in stateObj and listen to pop-events
913
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
865 try {
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
866 history.replaceState({}, '', url);
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
867 // show busy cursor
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
868 $('body').css('cursor', 'progress');
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
869 data.$scaler.css('cursor', 'progress');
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
870 // change img src
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
871 var $img = data.$img;
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
872 var imgurl = getScalerUrl(data);
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
873 $img.attr('src', imgurl);
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
874 // trigger load event if image is cached. Doesn't work with Firefox!!
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
875 if (data.hasCachedComplete && $img.prop('complete')) {
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
876 console.debug("cached img.load");
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
877 $img.trigger('load');
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
878 }
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
879 if (data.scalerFlags.clip != null || data.scalerFlags.osize != null) {
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
880 // we need image info, do we have it?
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
881 if (data.imgInfo == null) {
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
882 loadImageInfo(data);
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
883 }
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
884 }
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
885 // update if we have a preview
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
886 if (data.hasPreviewBg) {
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
887 $(data).trigger('update');
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
888 }
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
889 //FIXME: highlightButtons(data);
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
890 // send event
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
891 $(data).trigger('redisplay');
913
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
892 } catch (e) {
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
893 console.error("replaceState("+url+") didn't work: "+e);
913
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
894 // reload window
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
895 window.location = url;
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
896 }
798
b07d1824ca2a fullscreen mode works without reload on browsers supporting history.pushstate!
robcast
parents: 797
diff changeset
897 } else {
b07d1824ca2a fullscreen mode works without reload on browsers supporting history.pushstate!
robcast
parents: 797
diff changeset
898 // reload window
b07d1824ca2a fullscreen mode works without reload on browsers supporting history.pushstate!
robcast
parents: 797
diff changeset
899 window.location = url;
b07d1824ca2a fullscreen mode works without reload on browsers supporting history.pushstate!
robcast
parents: 797
diff changeset
900 }
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
901 } else {
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
902 // embedded mode -- just change img src
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
903 // show busy cursor
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
904 $('body').css('cursor', 'progress');
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
905 data.$scaler.css('cursor', 'progress');
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
906 var $img = data.$img;
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
907 var url = getScalerUrl(data);
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
908 $img.attr('src', url);
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
909 // trigger load event if image is cached
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
910 if ($img.prop('complete')) $img.trigger('load');
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
911 if (data.scalerFlags.clip != null || data.scalerFlags.osize != null) {
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
912 // we need image info, do we have it?
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
913 if (data.imgInfo == null) {
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
914 loadImageInfo(data);
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
915 }
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
916 }
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
917 //FIXME: highlightButtons(data);
795
00d37112d062 birds eye view now as a plugin.
robcast
parents: 794
diff changeset
918 // send event
00d37112d062 birds eye view now as a plugin.
robcast
parents: 794
diff changeset
919 $(data).trigger('redisplay');
913
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
920 }
622
cc3d81f02d4e factored out display function
hertzhaft
parents: 621
diff changeset
921 };
cc3d81f02d4e factored out display function
hertzhaft
parents: 621
diff changeset
922
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
923 /** update display (overlays etc.)
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
924 * (just triggers "update" event)
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
925 */
767
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
926 var updateDisplay = function (data) {
947
5bde01bcfb16 button plugin works now.
robcast
parents: 946
diff changeset
927 // send event
5bde01bcfb16 button plugin works now.
robcast
parents: 946
diff changeset
928 $(data).trigger('update');
5bde01bcfb16 button plugin works now.
robcast
parents: 946
diff changeset
929 };
5bde01bcfb16 button plugin works now.
robcast
parents: 946
diff changeset
930
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
931 /** handle "update" display event.
991
497ab03868ab moved marks to separate plugin. (pack and unpack is still in digilib.js)
robcast
parents: 990
diff changeset
932 * updates image transform, etc.
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
933 */
947
5bde01bcfb16 button plugin works now.
robcast
parents: 946
diff changeset
934 var handleUpdate = function (evt) {
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
935 var data = this;
767
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
936 updateImgTrafo(data);
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
937 setupZoomDrag(data);
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
938 };
974
678313a989a9 first part of calibration dialog
hertzhaft
parents: 972
diff changeset
939
984
32ec05f60e1e fitwidth works without reload.
robcast
parents: 983
diff changeset
940 /**
32ec05f60e1e fitwidth works without reload.
robcast
parents: 983
diff changeset
941 * returns maximum size for scaler img in fullscreen mode.
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
942 */
778
f8235c42f4a0 more preparations for SVG measuring tool
hertzhaft
parents: 777
diff changeset
943 var getFullscreenImgSize = function (data) {
989
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 987
diff changeset
944 //var mode = data.settings.interactionMode;
662
6a03dbd30e4f fix bug in birdview handling.
robcast
parents: 661
diff changeset
945 var $win = $(window);
6a03dbd30e4f fix bug in birdview handling.
robcast
parents: 661
diff changeset
946 var winH = $win.height();
779
62c3b902f878 better width calculation for scaler div
hertzhaft
parents: 778
diff changeset
947 var winW = $win.width();
989
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 987
diff changeset
948 // add all current insets
991
497ab03868ab moved marks to separate plugin. (pack and unpack is still in digilib.js)
robcast
parents: 990
diff changeset
949 // accounting for left/right border, body margins and additional requirements
989
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 987
diff changeset
950 var insets = { 'x' : 0, 'y' : 0};
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 987
diff changeset
951 for (var n in data.currentInsets) {
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 987
diff changeset
952 insets.x += data.currentInsets[n].x;
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 987
diff changeset
953 insets.y += data.currentInsets[n].y;
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 987
diff changeset
954 };
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 987
diff changeset
955 var imgW = winW - insets.x;
f4757bf6ab65 new arrows plugin for scroll arrows next to the image.
robcast
parents: 987
diff changeset
956 var imgH = winH - insets.y;
998
d084717a1ed9 steps towards sliders
hertzhaft
parents: 996
diff changeset
957 console.debug('getFullscreenImgSize - screen w/h:', winW, winH, 'window.width', $win.width(), 'img w/h:', imgW, imgH);
886
cb23fe100d7e make getFullscreenImgSize more robust. put button width in settings.
robcast
parents: 879
diff changeset
958 return geom.size(imgW, imgH);
662
6a03dbd30e4f fix bug in birdview handling.
robcast
parents: 661
diff changeset
959 };
6a03dbd30e4f fix bug in birdview handling.
robcast
parents: 661
diff changeset
960
984
32ec05f60e1e fitwidth works without reload.
robcast
parents: 983
diff changeset
961 /**
32ec05f60e1e fitwidth works without reload.
robcast
parents: 983
diff changeset
962 * returns a rectangle.with the fullscreen dimensions
974
678313a989a9 first part of calibration dialog
hertzhaft
parents: 972
diff changeset
963 */
678313a989a9 first part of calibration dialog
hertzhaft
parents: 972
diff changeset
964 var getFullscreenRect = function (data) {
678313a989a9 first part of calibration dialog
hertzhaft
parents: 972
diff changeset
965 return geom.rectangle(getFullscreenImgSize(data));
678313a989a9 first part of calibration dialog
hertzhaft
parents: 972
diff changeset
966 };
678313a989a9 first part of calibration dialog
hertzhaft
parents: 972
diff changeset
967
984
32ec05f60e1e fitwidth works without reload.
robcast
parents: 983
diff changeset
968 /**
32ec05f60e1e fitwidth works without reload.
robcast
parents: 983
diff changeset
969 * creates HTML structure for digilib in elem
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
970 */
627
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
971 var setupScalerDiv = function (data) {
c2566e470569 scalerImgLoaded sets up img trafo
robcast
parents: 626
diff changeset
972 var settings = data.settings;
647
2e817524992e set mark works now
robcast
parents: 645
diff changeset
973 var $elem = data.$elem;
996
0b63093d598e cssPrefix works now.
robcast
parents: 995
diff changeset
974 var cssPrefix = settings.cssPrefix;
0b63093d598e cssPrefix works now.
robcast
parents: 995
diff changeset
975 $elem.addClass(cssPrefix+'digilib');
728
84ad95fd3202 embedded mode state in cookie works now.
robcast
parents: 727
diff changeset
976 var $img;
84ad95fd3202 embedded mode state in cookie works now.
robcast
parents: 727
diff changeset
977 var scalerUrl;
608
774a3f60efd5 start work on scaler call
robcast
parents: 607
diff changeset
978 if (settings.interactionMode === 'fullscreen') {
728
84ad95fd3202 embedded mode state in cookie works now.
robcast
parents: 727
diff changeset
979 // fullscreen
995
76cffbaf0083 starting introduction of cssPrefix.
robcast
parents: 993
diff changeset
980 $elem.addClass(cssPrefix+'fullscreen');
778
f8235c42f4a0 more preparations for SVG measuring tool
hertzhaft
parents: 777
diff changeset
981 var imgSize = getFullscreenImgSize(data);
1012
dc09bccf8357 better aspect ratio for preview (almost right)
hertzhaft
parents: 1011
diff changeset
982 data.maxImgSize = imgSize;
650
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
983 // fitwidth/height omits destination height/width
728
84ad95fd3202 embedded mode state in cookie works now.
robcast
parents: 727
diff changeset
984 if (data.dlOpts.fitheight == null) {
650
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
985 settings.dw = imgSize.width;
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
986 }
728
84ad95fd3202 embedded mode state in cookie works now.
robcast
parents: 727
diff changeset
987 if (data.dlOpts.fitwidth == null) {
650
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
988 settings.dh = imgSize.height;
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
989 }
686
86c4174977f1 trying to work around IE bugs, debugging for IE
hertzhaft
parents: 682
diff changeset
990 scalerUrl = getScalerUrl(data);
728
84ad95fd3202 embedded mode state in cookie works now.
robcast
parents: 727
diff changeset
991 $img = $('<img/>');
609
435f81210a33 start work on scaler call
robcast
parents: 608
diff changeset
992 } else {
728
84ad95fd3202 embedded mode state in cookie works now.
robcast
parents: 727
diff changeset
993 // embedded mode -- try to keep img tag
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
994 data.maxImgSize = geom.rectangle($elem).getSize();
995
76cffbaf0083 starting introduction of cssPrefix.
robcast
parents: 993
diff changeset
995 $elem.addClass(cssPrefix+'embedded');
728
84ad95fd3202 embedded mode state in cookie works now.
robcast
parents: 727
diff changeset
996 scalerUrl = getScalerUrl(data);
623
7ba95f12d172 first attempt at switching images by page number
hertzhaft
parents: 622
diff changeset
997 $img = $elem.find('img');
613
53ee659e2d00 keeping img tag for embedded mode seems to work now
robcast
parents: 612
diff changeset
998 if ($img.length > 0) {
870
80cc227c1d50 keep title and alt attributes from HTML for scaler img
hertzhaft
parents: 869
diff changeset
999 var oldUrl = $img.attr('src');
80cc227c1d50 keep title and alt attributes from HTML for scaler img
hertzhaft
parents: 869
diff changeset
1000 // keep img attributes from html
80cc227c1d50 keep title and alt attributes from HTML for scaler img
hertzhaft
parents: 869
diff changeset
1001 var title = $img.attr('title');
80cc227c1d50 keep title and alt attributes from HTML for scaler img
hertzhaft
parents: 869
diff changeset
1002 var alt = $img.attr('alt');
80cc227c1d50 keep title and alt attributes from HTML for scaler img
hertzhaft
parents: 869
diff changeset
1003 if (oldUrl === scalerUrl) {
80cc227c1d50 keep title and alt attributes from HTML for scaler img
hertzhaft
parents: 869
diff changeset
1004 console.debug("img detach:", $img);
80cc227c1d50 keep title and alt attributes from HTML for scaler img
hertzhaft
parents: 869
diff changeset
1005 $img.detach();
80cc227c1d50 keep title and alt attributes from HTML for scaler img
hertzhaft
parents: 869
diff changeset
1006 } else {
80cc227c1d50 keep title and alt attributes from HTML for scaler img
hertzhaft
parents: 869
diff changeset
1007 $img = $('<img/>');
80cc227c1d50 keep title and alt attributes from HTML for scaler img
hertzhaft
parents: 869
diff changeset
1008 $img.attr("title", title);
80cc227c1d50 keep title and alt attributes from HTML for scaler img
hertzhaft
parents: 869
diff changeset
1009 $img.attr("alt", alt);
728
84ad95fd3202 embedded mode state in cookie works now.
robcast
parents: 727
diff changeset
1010 }
613
53ee659e2d00 keeping img tag for embedded mode seems to work now
robcast
parents: 612
diff changeset
1011 } else {
53ee659e2d00 keeping img tag for embedded mode seems to work now
robcast
parents: 612
diff changeset
1012 $img = $('<img/>');
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
1013 }
608
774a3f60efd5 start work on scaler call
robcast
parents: 607
diff changeset
1014 }
822
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
1015 // create new inner html, keeping buttons and content marked with "keep" class
996
0b63093d598e cssPrefix works now.
robcast
parents: 995
diff changeset
1016 $elem.contents(':not(.'+cssPrefix+'keep)').remove();
995
76cffbaf0083 starting introduction of cssPrefix.
robcast
parents: 993
diff changeset
1017 var $scaler = $('<div class="'+cssPrefix+'scaler"/>');
779
62c3b902f878 better width calculation for scaler div
hertzhaft
parents: 778
diff changeset
1018 // scaler should be the first child element?
62c3b902f878 better width calculation for scaler div
hertzhaft
parents: 778
diff changeset
1019 $elem.prepend($scaler);
613
53ee659e2d00 keeping img tag for embedded mode seems to work now
robcast
parents: 612
diff changeset
1020 $scaler.append($img);
995
76cffbaf0083 starting introduction of cssPrefix.
robcast
parents: 993
diff changeset
1021 $img.addClass(cssPrefix+'pic');
649
fd526464ae87 beter event handling for setMark...
robcast
parents: 648
diff changeset
1022 data.$scaler = $scaler;
636
7049579a0097 last and next page works now
robcast
parents: 635
diff changeset
1023 data.$img = $img;
947
5bde01bcfb16 button plugin works now.
robcast
parents: 946
diff changeset
1024 // set busy cursor
5bde01bcfb16 button plugin works now.
robcast
parents: 946
diff changeset
1025 $('body').css('cursor','progress');
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1026 data.$scaler.css('cursor', 'progress');
942
2b136cdbc6b2 working on more generic "preview"
robcast
parents: 934
diff changeset
1027 // set up image load handler before setting the src attribute (IE bug)
687
97c01b911754 fix zoom bug introduced with last change
hertzhaft
parents: 686
diff changeset
1028 $img.load(scalerImgLoadedHandler(data));
767
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
1029 $img.error(function () {console.error("error loading scaler image");});
687
97c01b911754 fix zoom bug introduced with last change
hertzhaft
parents: 686
diff changeset
1030 $img.attr('src', scalerUrl);
608
774a3f60efd5 start work on scaler call
robcast
parents: 607
diff changeset
1031 };
615
ec131e9699a6 setup bird's eye view div
hertzhaft
parents: 614
diff changeset
1032
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1033 /** creates HTML structure for the about view in elem
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1034 *
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1035 */
628
1f077f8afc5e changed methods to pass "data" around instead of "settings"
robcast
parents: 627
diff changeset
1036 var setupAboutDiv = function (data) {
647
2e817524992e set mark works now
robcast
parents: 645
diff changeset
1037 var $elem = data.$elem;
628
1f077f8afc5e changed methods to pass "data" around instead of "settings"
robcast
parents: 627
diff changeset
1038 var settings = data.settings;
996
0b63093d598e cssPrefix works now.
robcast
parents: 995
diff changeset
1039 var $aboutDiv = $('<div class="'+settings.cssPrefix+'about" style="display:none"/>');
886
cb23fe100d7e make getFullscreenImgSize more robust. put button width in settings.
robcast
parents: 879
diff changeset
1040 var $header = $('<p>Digilib Image Viewer</p>');
616
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
1041 var $link = $('<a/>');
996
0b63093d598e cssPrefix works now.
robcast
parents: 995
diff changeset
1042 var $logo = $('<img class="'+settings.cssPrefix+'logo" title="digilib"/>');
616
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
1043 var $content = $('<p/>');
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
1044 $elem.append($aboutDiv);
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
1045 $aboutDiv.append($header);
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
1046 $aboutDiv.append($link);
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
1047 $aboutDiv.append($content);
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
1048 $link.append($logo);
913
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
1049 logoUrl = settings.logoUrl;
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
1050 // make relative logoUrl absolute
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
1051 if (logoUrl.charAt(0) !== '/' && logoUrl.substring(0,3) !== 'http') {
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1052 logoUrl = settings.digilibBaseUrl + '/' + logoUrl;
913
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
1053 }
ad071f122164 make dirInfo crash less. make digilib better for half-embedded use.
robcast
parents: 903
diff changeset
1054 $logo.attr('src', logoUrl);
635
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
1055 $link.attr('href', settings.homeUrl);
616
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
1056 $content.text('Version: ' + settings.version);
775
65cdf970934d minor precisations
hertzhaft
parents: 769
diff changeset
1057 data.$aboutDiv = $aboutDiv;
635
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
1058 // click hides
917
104fc89ef68b fixed bugs with reload when changing scale mode
robcast
parents: 915
diff changeset
1059 $aboutDiv.on('click.digilib', function () {
775
65cdf970934d minor precisations
hertzhaft
parents: 769
diff changeset
1060 actions['showAboutDiv'](data, false);
710
d533bdf0e64e cosmetics
hertzhaft
parents: 709
diff changeset
1061 });
634
34ee220a664b trying showAboutDivFn...
robcast
parents: 633
diff changeset
1062 };
34ee220a664b trying showAboutDivFn...
robcast
parents: 633
diff changeset
1063
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1064 /** shows some window e.g. 'about' (toggle visibility if show is null)
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1065 *
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1066 */
635
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
1067 var showDiv = function (isVisible, $div, show) {
645
91d168f7dd0d small improvement
robcast
parents: 644
diff changeset
1068 if (show == null) {
635
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
1069 // toggle visibility
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
1070 isVisible = !isVisible;
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
1071 } else {
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
1072 // set visibility
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
1073 isVisible = show;
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
1074 }
635
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
1075 if (isVisible) {
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
1076 $div.fadeIn();
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
1077 } else {
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
1078 $div.fadeOut();
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
1079 }
635
7293a42f44f5 changed button onclick binding to use closure
robcast
parents: 634
diff changeset
1080 return isVisible;
634
34ee220a664b trying showAboutDivFn...
robcast
parents: 633
diff changeset
1081 };
616
55e06ebb879f setup the 'about' window
hertzhaft
parents: 615
diff changeset
1082
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1083 /** Create Transform from zoom area and image size and parameters.
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1084 * Returns Transform between normalized coordinates and image pixel coordinates.
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1085 */
772
33b5477f8d84 original size mode works with zoom area now. needs error handling.
robcast
parents: 769
diff changeset
1086 var getImgTrafo = function ($img, area, rot, hmir, vmir, mode, data) {
658
9ddcf0070122 split bird's view code in two more parts, analog to scaler-img code.
robcast
parents: 656
diff changeset
1087 var picrect = geom.rectangle($img);
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1088 // handle pixel-by-pixel and original-size modes
763
31664707999e pixel-by-pixel scale mode works with zoom area. (not in all cases)
robcast
parents: 761
diff changeset
1089 if (mode != null) {
772
33b5477f8d84 original size mode works with zoom area now. needs error handling.
robcast
parents: 769
diff changeset
1090 var imgInfo = data.imgInfo;
763
31664707999e pixel-by-pixel scale mode works with zoom area. (not in all cases)
robcast
parents: 761
diff changeset
1091 if (mode === 'pixel') {
31664707999e pixel-by-pixel scale mode works with zoom area. (not in all cases)
robcast
parents: 761
diff changeset
1092 // scaler mo=clip - image area size does not come from ww, wh
31664707999e pixel-by-pixel scale mode works with zoom area. (not in all cases)
robcast
parents: 761
diff changeset
1093 if (imgInfo != null) {
31664707999e pixel-by-pixel scale mode works with zoom area. (not in all cases)
robcast
parents: 761
diff changeset
1094 area.width = picrect.width / imgInfo.width;
31664707999e pixel-by-pixel scale mode works with zoom area. (not in all cases)
robcast
parents: 761
diff changeset
1095 area.height = picrect.height / imgInfo.height;
31664707999e pixel-by-pixel scale mode works with zoom area. (not in all cases)
robcast
parents: 761
diff changeset
1096 } else {
31664707999e pixel-by-pixel scale mode works with zoom area. (not in all cases)
robcast
parents: 761
diff changeset
1097 console.error("No image info for pixel mode!");
31664707999e pixel-by-pixel scale mode works with zoom area. (not in all cases)
robcast
parents: 761
diff changeset
1098 }
31664707999e pixel-by-pixel scale mode works with zoom area. (not in all cases)
robcast
parents: 761
diff changeset
1099 }
772
33b5477f8d84 original size mode works with zoom area now. needs error handling.
robcast
parents: 769
diff changeset
1100 if (mode === 'size') {
33b5477f8d84 original size mode works with zoom area now. needs error handling.
robcast
parents: 769
diff changeset
1101 // scaler mo=osize - image area size does not come from ww, wh
33b5477f8d84 original size mode works with zoom area now. needs error handling.
robcast
parents: 769
diff changeset
1102 if (imgInfo != null) {
33b5477f8d84 original size mode works with zoom area now. needs error handling.
robcast
parents: 769
diff changeset
1103 var ddpi = parseFloat(data.settings.ddpi);
33b5477f8d84 original size mode works with zoom area now. needs error handling.
robcast
parents: 769
diff changeset
1104 area.width = (picrect.width / ddpi) / (imgInfo.width / imgInfo.dpi_x);
33b5477f8d84 original size mode works with zoom area now. needs error handling.
robcast
parents: 769
diff changeset
1105 area.height = (picrect.height / ddpi) / (imgInfo.height / imgInfo.dpi_y);
33b5477f8d84 original size mode works with zoom area now. needs error handling.
robcast
parents: 769
diff changeset
1106 } else {
33b5477f8d84 original size mode works with zoom area now. needs error handling.
robcast
parents: 769
diff changeset
1107 console.error("No image info for original size mode!");
33b5477f8d84 original size mode works with zoom area now. needs error handling.
robcast
parents: 769
diff changeset
1108 }
33b5477f8d84 original size mode works with zoom area now. needs error handling.
robcast
parents: 769
diff changeset
1109 }
763
31664707999e pixel-by-pixel scale mode works with zoom area. (not in all cases)
robcast
parents: 761
diff changeset
1110 }
658
9ddcf0070122 split bird's view code in two more parts, analog to scaler-img code.
robcast
parents: 656
diff changeset
1111 var trafo = geom.transform();
675
ca37fb4b1e72 transformation with mirror works now too!
robcast
parents: 673
diff changeset
1112 // move zoom area offset to center
658
9ddcf0070122 split bird's view code in two more parts, analog to scaler-img code.
robcast
parents: 656
diff changeset
1113 trafo.concat(trafo.getTranslation(geom.position(-area.x, -area.y)));
675
ca37fb4b1e72 transformation with mirror works now too!
robcast
parents: 673
diff changeset
1114 // scale zoom area size to [1,1]
658
9ddcf0070122 split bird's view code in two more parts, analog to scaler-img code.
robcast
parents: 656
diff changeset
1115 trafo.concat(trafo.getScale(geom.size(1/area.width, 1/area.height)));
675
ca37fb4b1e72 transformation with mirror works now too!
robcast
parents: 673
diff changeset
1116 // rotate and mirror (around transformed image center i.e. [0.5,0.5])
ca37fb4b1e72 transformation with mirror works now too!
robcast
parents: 673
diff changeset
1117 if (rot || hmir || vmir) {
ca37fb4b1e72 transformation with mirror works now too!
robcast
parents: 673
diff changeset
1118 // move [0.5,0.5] to center
ca37fb4b1e72 transformation with mirror works now too!
robcast
parents: 673
diff changeset
1119 trafo.concat(trafo.getTranslation(geom.position(-0.5, -0.5)));
ca37fb4b1e72 transformation with mirror works now too!
robcast
parents: 673
diff changeset
1120 if (hmir) {
ca37fb4b1e72 transformation with mirror works now too!
robcast
parents: 673
diff changeset
1121 // mirror about center
ca37fb4b1e72 transformation with mirror works now too!
robcast
parents: 673
diff changeset
1122 trafo.concat(trafo.getMirror('y'));
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
1123 }
675
ca37fb4b1e72 transformation with mirror works now too!
robcast
parents: 673
diff changeset
1124 if (vmir) {
ca37fb4b1e72 transformation with mirror works now too!
robcast
parents: 673
diff changeset
1125 // mirror about center
ca37fb4b1e72 transformation with mirror works now too!
robcast
parents: 673
diff changeset
1126 trafo.concat(trafo.getMirror('x'));
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
1127 }
675
ca37fb4b1e72 transformation with mirror works now too!
robcast
parents: 673
diff changeset
1128 if (rot) {
ca37fb4b1e72 transformation with mirror works now too!
robcast
parents: 673
diff changeset
1129 // rotate around center
ca37fb4b1e72 transformation with mirror works now too!
robcast
parents: 673
diff changeset
1130 trafo.concat(trafo.getRotation(parseFloat(rot)));
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
1131 }
675
ca37fb4b1e72 transformation with mirror works now too!
robcast
parents: 673
diff changeset
1132 // move back
ca37fb4b1e72 transformation with mirror works now too!
robcast
parents: 673
diff changeset
1133 trafo.concat(trafo.getTranslation(geom.position(0.5, 0.5)));
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
1134 }
664
d5a5ee4cbf04 work on getting transformation to work with rotation (currently still doesn't)
robcast
parents: 663
diff changeset
1135 // scale to screen position and size
658
9ddcf0070122 split bird's view code in two more parts, analog to scaler-img code.
robcast
parents: 656
diff changeset
1136 trafo.concat(trafo.getScale(picrect));
9ddcf0070122 split bird's view code in two more parts, analog to scaler-img code.
robcast
parents: 656
diff changeset
1137 trafo.concat(trafo.getTranslation(picrect));
9ddcf0070122 split bird's view code in two more parts, analog to scaler-img code.
robcast
parents: 656
diff changeset
1138 return trafo;
655
72acc47f1831 first try at birdview indicator
hertzhaft
parents: 653
diff changeset
1139 };
678
d50d24b7fd95 first step at dragging birdview zoom indicator around
hertzhaft
parents: 677
diff changeset
1140
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1141 /** update current scaler image transform
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1142 */
767
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
1143 var updateImgTrafo = function (data) {
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
1144 var $img = data.$img;
895
01b875d668b1 another ugly workaround for IE7
hertzhaft
parents: 890
diff changeset
1145 if ($img == null)
01b875d668b1 another ugly workaround for IE7
hertzhaft
parents: 890
diff changeset
1146 return;
01b875d668b1 another ugly workaround for IE7
hertzhaft
parents: 890
diff changeset
1147 var imgLoaded = $.browser.msie
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1148 ? $img.prop('width') > 0
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1149 : $img.prop('complete');
950
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1150 if (imgLoaded || data.hasPreviewBg) {
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1151 // create Transform from current zoomArea and image size
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1152 data.imgTrafo = getImgTrafo($img, data.zoomArea, data.settings.rot,
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1153 data.scalerFlags.hmir, data.scalerFlags.vmir,
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1154 data.scaleMode, data);
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1155 console.debug("updateImgTrafo: ", data.imgTrafo);
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1156 }
767
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
1157 };
775
65cdf970934d minor precisations
hertzhaft
parents: 769
diff changeset
1158
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1159 /** return handler for load event of scaler img
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1160 * (necessary for closure with data object)
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1161 */
767
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
1162 var scalerImgLoadedHandler = function (data) {
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
1163 return function () {
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
1164 var $img = $(this);
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
1165 console.debug("scaler img loaded=",$img);
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
1166 var $scaler = data.$scaler;
760
f0be4432f515 primitive plugin extension mechanism - unsure how useful this is
hertzhaft
parents: 755
diff changeset
1167 var imgRect = geom.rectangle($img);
931
58343be11fa3 "preview" for scroll arrows. still ugly code.
robcast
parents: 929
diff changeset
1168 data.imgRect = imgRect;
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1169 // reset busy cursor
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1170 $('body').css('cursor', 'auto');
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1171 $scaler.css('cursor', 'auto');
957
c4bd6f984aee don't set position of scaler div, just size.
robcast
parents: 956
diff changeset
1172 // adjust scaler div size (beware: setting position makes the element relative)
c4bd6f984aee don't set position of scaler div, just size.
robcast
parents: 956
diff changeset
1173 imgRect.getSize().adjustDiv($scaler);
715
c1b1c463bc44 getting rid of bg div in zoomDrag
hertzhaft
parents: 714
diff changeset
1174 // show image in case it was hidden (for example in zoomDrag)
733
25f2898696a2 fixed setupZoomDrag
robcast
parents: 732
diff changeset
1175 $img.css('visibility', 'visible');
1019
287e2d2d2ae8 fix flicker in Firefox by leaving scaler background visible.
robcast
parents: 1018
diff changeset
1176 $scaler.css({'opacity' : '1'});
950
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1177 data.hasPreviewBg = false;
767
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
1178 // update display (render marks, etc.)
68b0c7a8ca7c pixel-by-pixel scale fully works now.
robcast
parents: 763
diff changeset
1179 updateDisplay(data);
658
9ddcf0070122 split bird's view code in two more parts, analog to scaler-img code.
robcast
parents: 656
diff changeset
1180 };
9ddcf0070122 split bird's view code in two more parts, analog to scaler-img code.
robcast
parents: 656
diff changeset
1181 };
9ddcf0070122 split bird's view code in two more parts, analog to scaler-img code.
robcast
parents: 656
diff changeset
1182
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1183 /** handle imageInfo loaded event
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1184 *
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1185 */
797
6914ddedaca7 loadImageInfo sends event when loaded.
robcast
parents: 795
diff changeset
1186 var handleImageInfo = function (evt, json) {
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1187 console.debug("handleImageInfo:", json);
797
6914ddedaca7 loadImageInfo sends event when loaded.
robcast
parents: 795
diff changeset
1188 var data = this;
6914ddedaca7 loadImageInfo sends event when loaded.
robcast
parents: 795
diff changeset
1189 updateDisplay(data);
6914ddedaca7 loadImageInfo sends event when loaded.
robcast
parents: 795
diff changeset
1190 };
813
1a7b14deae3a regions plugin works, inclunding event handlers
hertzhaft
parents: 807
diff changeset
1191
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1192 /** handle changeZoomArea event
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1193 *
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1194 */
942
2b136cdbc6b2 working on more generic "preview"
robcast
parents: 934
diff changeset
1195 var handleChangeZoomArea = function (evt, newZa) {
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1196 console.debug("handleChangeZoomArea:", newZa);
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1197 var data = this;
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1198 // hide all overlays (marks/regions)
996
0b63093d598e cssPrefix works now.
robcast
parents: 995
diff changeset
1199 data.$elem.find('.'+data.settings.cssPrefix+'overlay').hide();
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1200 setPreviewBg(data, newZa);
942
2b136cdbc6b2 working on more generic "preview"
robcast
parents: 934
diff changeset
1201 };
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1202
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1203 /** zoom by the given factor.
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1204 *
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1205 */
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
1206 var zoomBy = function(data, factor) {
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
1207 var area = data.zoomArea;
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
1208 var newarea = area.copy();
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
1209 // scale
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
1210 newarea.width /= factor;
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
1211 newarea.height /= factor;
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
1212 // and recenter
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
1213 newarea.x -= 0.5 * (newarea.width - area.width);
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
1214 newarea.y -= 0.5 * (newarea.height - area.height);
735
790a7673bef0 improved some embedded buttons; fixed reset function
hertzhaft
parents: 733
diff changeset
1215 newarea = FULL_AREA.fit(newarea);
950
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1216 setZoomArea(data, newarea);
972
2ad5ba781e88 better scale mode change handling.
robcast
parents: 968
diff changeset
1217 // reset modes
2ad5ba781e88 better scale mode change handling.
robcast
parents: 968
diff changeset
1218 setScaleMode(data, 'screen');
2ad5ba781e88 better scale mode change handling.
robcast
parents: 968
diff changeset
1219 setFitMode(data, 'both');
644
ee8ccd84c5f8 reload doesn't take list of changed parameters any more
robcast
parents: 643
diff changeset
1220 redisplay(data);
643
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
1221 };
c108607e1bc0 zoomin and -out works now
robcast
parents: 641
diff changeset
1222
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1223 /** zoom to the area around two clicked points.
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1224 *
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1225 */
654
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1226 var zoomArea = function(data) {
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1227 $elem = data.$elem;
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1228 $scaler = data.$scaler;
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1229 var pt1, pt2;
996
0b63093d598e cssPrefix works now.
robcast
parents: 995
diff changeset
1230 var $zoomDiv = $('<div class="'+data.settings.cssPrefix+'zoomrect" style="display:none"/>');
654
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1231 $elem.append($zoomDiv);
775
65cdf970934d minor precisations
hertzhaft
parents: 769
diff changeset
1232 // $zoomDiv.css(data.settings.zoomrectStyle);
654
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1233 var picRect = geom.rectangle($scaler);
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1234 // FIX ME: is there a way to query the border width from CSS info?
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1235 // rect.x -= 2; // account for overlay borders
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1236 // rect.y -= 2;
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1237
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1238 var zoomStart = function (evt) {
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1239 pt1 = geom.position(evt);
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1240 // setup and show zoom div
738
b4460f0a540d small improvements
robcast
parents: 737
diff changeset
1241 pt1.adjustDiv($zoomDiv);
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
1242 $zoomDiv.width(0).height(0);
654
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1243 $zoomDiv.show();
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1244 // register events
917
104fc89ef68b fixed bugs with reload when changing scale mode
robcast
parents: 915
diff changeset
1245 $elem.on("mousemove.dlZoomArea", zoomMove);
104fc89ef68b fixed bugs with reload when changing scale mode
robcast
parents: 915
diff changeset
1246 $elem.on("mouseup.dlZoomArea", zoomEnd);
654
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1247 return false;
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1248 };
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
1249
741
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
1250 // mouse move handler
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
1251 var zoomMove = function (evt) {
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
1252 pt2 = geom.position(evt);
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
1253 var rect = geom.rectangle(pt1, pt2);
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
1254 rect.clipTo(picRect);
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
1255 // update zoom div
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
1256 rect.adjustDiv($zoomDiv);
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
1257 return false;
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
1258 };
745
ad483c008159 move birdview zoom indicator along with zoom drag
hertzhaft
parents: 744
diff changeset
1259
654
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1260 // mouseup handler: end moving
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1261 var zoomEnd = function (evt) {
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1262 pt2 = geom.position(evt);
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1263 // assume a click and continue if the area is too small
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1264 var clickRect = geom.rectangle(pt1, pt2);
710
d533bdf0e64e cosmetics
hertzhaft
parents: 709
diff changeset
1265 if (clickRect.getArea() <= 5) return false;
654
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1266 // hide zoom div
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1267 $zoomDiv.remove();
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1268 // unregister events
917
104fc89ef68b fixed bugs with reload when changing scale mode
robcast
parents: 915
diff changeset
1269 $elem.off("mousemove.dlZoomArea", zoomMove);
104fc89ef68b fixed bugs with reload when changing scale mode
robcast
parents: 915
diff changeset
1270 $elem.off("mouseup.dlZoomArea", zoomEnd);
654
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1271 // clip and transform
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1272 clickRect.clipTo(picRect);
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1273 var area = data.imgTrafo.invtransform(clickRect);
951
9c699b6cfcca preview for ZoomArea. shows distortions when changing aspect ratio.
robcast
parents: 950
diff changeset
1274 setZoomArea(data, area);
972
2ad5ba781e88 better scale mode change handling.
robcast
parents: 968
diff changeset
1275 // reset modes
2ad5ba781e88 better scale mode change handling.
robcast
parents: 968
diff changeset
1276 setFitMode(data, 'both');
2ad5ba781e88 better scale mode change handling.
robcast
parents: 968
diff changeset
1277 setScaleMode(data, 'screen');
654
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1278 redisplay(data);
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1279 return false;
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1280 };
668
ad4a2edcbdbc make zoomarea and birdview work in embedded mode
hertzhaft
parents: 665
diff changeset
1281
742
2b6d3ef57d68 fixed problem with setmark, zoomarea and zoomDrag handlers.
robcast
parents: 741
diff changeset
1282 // clear old handler (also ZoomDrag)
917
104fc89ef68b fixed bugs with reload when changing scale mode
robcast
parents: 915
diff changeset
1283 $scaler.off('.dlZoomArea');
104fc89ef68b fixed bugs with reload when changing scale mode
robcast
parents: 915
diff changeset
1284 $scaler.off(".dlZoomDrag");
104fc89ef68b fixed bugs with reload when changing scale mode
robcast
parents: 915
diff changeset
1285 $elem.off('.dlZoomArea');
654
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1286 // bind start zoom handler
738
b4460f0a540d small improvements
robcast
parents: 737
diff changeset
1287 $scaler.one('mousedown.dlZoomArea', zoomStart);
654
b3c05e1568cf zoomarea works now
robcast
parents: 653
diff changeset
1288 };
647
2e817524992e set mark works now
robcast
parents: 645
diff changeset
1289
950
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1290 /** set preview background.
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1291 * optional newZoomArea scales and moves background to preview.
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1292 */
950
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1293 var setPreviewBg = function(data, newZoomArea) {
746
2e9a48dc7a0c move zoom-drag background along with birdview indicator
hertzhaft
parents: 745
diff changeset
1294 var $scaler = data.$scaler;
2e9a48dc7a0c move zoom-drag background along with birdview indicator
hertzhaft
parents: 745
diff changeset
1295 var $img = data.$img;
950
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1296 var imgTrafo = data.imgTrafo;
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1297 var scalerPos = geom.position($scaler);
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1298 var bgRect = null;
746
2e9a48dc7a0c move zoom-drag background along with birdview indicator
hertzhaft
parents: 745
diff changeset
1299 // hide the scaler img, show background of div instead
2e9a48dc7a0c move zoom-drag background along with birdview indicator
hertzhaft
parents: 745
diff changeset
1300 $img.css('visibility', 'hidden');
918
f7869186ccb2 use current size background as well as scaled full-size background when dragging
robcast
parents: 917
diff changeset
1301 // use current image as first background
746
2e9a48dc7a0c move zoom-drag background along with birdview indicator
hertzhaft
parents: 745
diff changeset
1302 var scalerCss = {
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1303 'background-image' : 'url(' + $img.attr('src') + ')',
950
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1304 'background-repeat' : 'no-repeat',
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1305 'background-position' : '0px 0px',
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1306 'opacity' : '0.7',
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1307 'cursor' : 'move'
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1308 };
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1309 if (newZoomArea != null) {
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1310 // check if aspect ratio has changed
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1311 if (Math.abs(newZoomArea.getAspect() - data.zoomArea.getAspect()) > 0.001 ) {
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1312 var newRect = data.imgTrafo.transform(newZoomArea);
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1313 var newAspect = newRect.getAspect();
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1314 var newSize = data.maxImgSize.fitAspect(newAspect);
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1315 // set scaler to presumed new size
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1316 newSize.adjustDiv($scaler);
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1317 console.debug("adjusting aspect ratio for preview", data.maxImgSize, newSize);
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1318 }
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1319 // get transform for new zoomArea (use 'screen' instead of data.scaleMode)
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1320 imgTrafo = getImgTrafo($scaler, newZoomArea, data.settings.rot,
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1321 data.scalerFlags.hmir, data.scalerFlags.vmir,
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1322 'screen', data);
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1323 // for new background coordinates transform old zoomArea with new Transform
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1324 bgRect = imgTrafo.transform(data.zoomArea);
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1325 // correct offset because background is relative
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1326 bgRect.addPosition(scalerPos.neg());
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1327 // position background
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1328 scalerCss['background-position'] = Math.round(bgRect.x) + 'px '+ Math.round(bgRect.y) + 'px';
950
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1329 }
746
2e9a48dc7a0c move zoom-drag background along with birdview indicator
hertzhaft
parents: 745
diff changeset
1330 if (data.hasBgSize) {
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1331 // scale background using CSS3-background-size
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1332 if (bgRect != null && (bgRect.height < data.settings.maxBgSize && bgRect.width < data.settings.maxBgSize)) {
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1333 scalerCss[data.bgSizeName] = Math.round(bgRect.width) + 'px ' + Math.round(bgRect.height) + 'px';
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1334 } else {
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1335 scalerCss[data.bgSizeName] = 'auto';
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1336 }
950
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1337 // additional full-size background using CSS3
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1338 fullRect = imgTrafo.transform(FULL_AREA);
746
2e9a48dc7a0c move zoom-drag background along with birdview indicator
hertzhaft
parents: 745
diff changeset
1339 if (fullRect.height < data.settings.maxBgSize && fullRect.width < data.settings.maxBgSize) {
2e9a48dc7a0c move zoom-drag background along with birdview indicator
hertzhaft
parents: 745
diff changeset
1340 // correct offset because background is relative
751
00b7857f07f5 zoom-drag background follows birdZoom also in embedded mode (still imprecise)
hertzhaft
parents: 748
diff changeset
1341 fullRect.addPosition(scalerPos.neg());
954
36102de2301e code cosmetics
robcast
parents: 953
diff changeset
1342 var url = getPreviewImgUrl(data);
950
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1343 // add second background url, size and position
918
f7869186ccb2 use current size background as well as scaled full-size background when dragging
robcast
parents: 917
diff changeset
1344 scalerCss['background-image'] += ', url(' + url + ')';
950
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1345 scalerCss[data.bgSizeName] += ', ' + Math.round(fullRect.width) + 'px ' + Math.round(fullRect.height) + 'px';
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1346 scalerCss['background-position'] += ', ' + Math.round(fullRect.x) + 'px '+ Math.round(fullRect.y) + 'px';
746
2e9a48dc7a0c move zoom-drag background along with birdview indicator
hertzhaft
parents: 745
diff changeset
1347 }
918
f7869186ccb2 use current size background as well as scaled full-size background when dragging
robcast
parents: 917
diff changeset
1348 }
f7869186ccb2 use current size background as well as scaled full-size background when dragging
robcast
parents: 917
diff changeset
1349 $scaler.css(scalerCss);
942
2b136cdbc6b2 working on more generic "preview"
robcast
parents: 934
diff changeset
1350 data.hasPreviewBg = true;
929
e881ab1c2f47 first step to "preview" like zoom-drag for more operations
robcast
parents: 928
diff changeset
1351 };
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1352
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1353 /** setup handlers for dragging the zoomed image.
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1354 *
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1355 */
705
e1995c540667 drag zoomed image
hertzhaft
parents: 703
diff changeset
1356 var setupZoomDrag = function(data) {
942
2b136cdbc6b2 working on more generic "preview"
robcast
parents: 934
diff changeset
1357 var startPos, delta;
733
25f2898696a2 fixed setupZoomDrag
robcast
parents: 732
diff changeset
1358 var $document = $(document);
795
00d37112d062 birds eye view now as a plugin.
robcast
parents: 794
diff changeset
1359 var $data = $(data);
705
e1995c540667 drag zoomed image
hertzhaft
parents: 703
diff changeset
1360 var $elem = data.$elem;
e1995c540667 drag zoomed image
hertzhaft
parents: 703
diff changeset
1361 var $scaler = data.$scaler;
e1995c540667 drag zoomed image
hertzhaft
parents: 703
diff changeset
1362 var $img = data.$img;
710
d533bdf0e64e cosmetics
hertzhaft
parents: 709
diff changeset
1363
733
25f2898696a2 fixed setupZoomDrag
robcast
parents: 732
diff changeset
1364 // drag the image and load a new detail on mouse up
705
e1995c540667 drag zoomed image
hertzhaft
parents: 703
diff changeset
1365 var dragStart = function (evt) {
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1366 // cancel if not left-click
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1367 if (evt.which != 1) return;
813
1a7b14deae3a regions plugin works, inclunding event handlers
hertzhaft
parents: 807
diff changeset
1368 console.debug("dragstart at=", evt);
737
7c93bdbb5153 setup zoomdrag even when image is not initially zoomed
hertzhaft
parents: 736
diff changeset
1369 // don't start dragging if not zoomed
7c93bdbb5153 setup zoomdrag even when image is not initially zoomed
hertzhaft
parents: 736
diff changeset
1370 if (isFullArea(data.zoomArea)) return false;
813
1a7b14deae3a regions plugin works, inclunding event handlers
hertzhaft
parents: 807
diff changeset
1371 $elem.find(".overlay").hide(); // hide all overlays (marks/regions)
733
25f2898696a2 fixed setupZoomDrag
robcast
parents: 732
diff changeset
1372 startPos = geom.position(evt);
741
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
1373 delta = null;
746
2e9a48dc7a0c move zoom-drag background along with birdview indicator
hertzhaft
parents: 745
diff changeset
1374 // set low res background immediately on mousedown
950
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1375 setPreviewBg(data);
917
104fc89ef68b fixed bugs with reload when changing scale mode
robcast
parents: 915
diff changeset
1376 $document.on("mousemove.dlZoomDrag", dragMove);
104fc89ef68b fixed bugs with reload when changing scale mode
robcast
parents: 915
diff changeset
1377 $document.on("mouseup.dlZoomDrag", dragEnd);
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
1378 return false;
705
e1995c540667 drag zoomed image
hertzhaft
parents: 703
diff changeset
1379 };
745
ad483c008159 move birdview zoom indicator along with zoom drag
hertzhaft
parents: 744
diff changeset
1380
733
25f2898696a2 fixed setupZoomDrag
robcast
parents: 732
diff changeset
1381 // mousemove handler: drag zoomed image
705
e1995c540667 drag zoomed image
hertzhaft
parents: 703
diff changeset
1382 var dragMove = function (evt) {
e1995c540667 drag zoomed image
hertzhaft
parents: 703
diff changeset
1383 var pos = geom.position(evt);
741
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
1384 delta = startPos.delta(pos);
807
1b1728926534 geometry: overlapsRect() plus some comment clarifications
hertzhaft
parents: 799
diff changeset
1385 // send message event with current zoom position
745
ad483c008159 move birdview zoom indicator along with zoom drag
hertzhaft
parents: 744
diff changeset
1386 var za = geom.rectangle($img);
ad483c008159 move birdview zoom indicator along with zoom drag
hertzhaft
parents: 744
diff changeset
1387 za.addPosition(delta.neg());
947
5bde01bcfb16 button plugin works now.
robcast
parents: 946
diff changeset
1388 // transform back
5bde01bcfb16 button plugin works now.
robcast
parents: 946
diff changeset
1389 var newArea = data.imgTrafo.invtransform(za);
5bde01bcfb16 button plugin works now.
robcast
parents: 946
diff changeset
1390 $data.trigger('changeZoomArea', newArea);
705
e1995c540667 drag zoomed image
hertzhaft
parents: 703
diff changeset
1391 return false;
e1995c540667 drag zoomed image
hertzhaft
parents: 703
diff changeset
1392 };
710
d533bdf0e64e cosmetics
hertzhaft
parents: 709
diff changeset
1393
733
25f2898696a2 fixed setupZoomDrag
robcast
parents: 732
diff changeset
1394 // mouseup handler: reload zoomed image in new position
705
e1995c540667 drag zoomed image
hertzhaft
parents: 703
diff changeset
1395 var dragEnd = function (evt) {
739
922c74a7b935 busy cursor while loading doesn't work (for me)
robcast
parents: 738
diff changeset
1396 $scaler.css('cursor', 'auto');
917
104fc89ef68b fixed bugs with reload when changing scale mode
robcast
parents: 915
diff changeset
1397 $document.off("mousemove.dlZoomDrag", dragMove);
104fc89ef68b fixed bugs with reload when changing scale mode
robcast
parents: 915
diff changeset
1398 $document.off("mouseup.dlZoomDrag", dragEnd);
733
25f2898696a2 fixed setupZoomDrag
robcast
parents: 732
diff changeset
1399 if (delta == null || delta.distance() < 2) {
25f2898696a2 fixed setupZoomDrag
robcast
parents: 732
diff changeset
1400 // no movement
25f2898696a2 fixed setupZoomDrag
robcast
parents: 732
diff changeset
1401 $img.css('visibility', 'visible');
741
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
1402 $scaler.css({'opacity' : '1', 'background-image' : 'none'});
944
3916303b8f17 "preview" works now also for zoomIn/Out
robcast
parents: 943
diff changeset
1403 data.hasPreviewBg = false;
993
862d2ae56c20 fixed problems with new events and some browsers.
robcast
parents: 992
diff changeset
1404 // unhide marks etc.
862d2ae56c20 fixed problems with new events and some browsers.
robcast
parents: 992
diff changeset
1405 updateDisplay(data);
733
25f2898696a2 fixed setupZoomDrag
robcast
parents: 732
diff changeset
1406 return false;
25f2898696a2 fixed setupZoomDrag
robcast
parents: 732
diff changeset
1407 }
25f2898696a2 fixed setupZoomDrag
robcast
parents: 732
diff changeset
1408 // get old zoom area (screen coordinates)
741
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
1409 var za = geom.rectangle($img);
733
25f2898696a2 fixed setupZoomDrag
robcast
parents: 732
diff changeset
1410 // move
741
ee620bcf4ab0 image-drag now with full background image :-)
robcast
parents: 740
diff changeset
1411 za.addPosition(delta.neg());
733
25f2898696a2 fixed setupZoomDrag
robcast
parents: 732
diff changeset
1412 // transform back
25f2898696a2 fixed setupZoomDrag
robcast
parents: 732
diff changeset
1413 var newArea = data.imgTrafo.invtransform(za);
735
790a7673bef0 improved some embedded buttons; fixed reset function
hertzhaft
parents: 733
diff changeset
1414 data.zoomArea = FULL_AREA.fit(newArea);
708
120ace160386 img reload works for fullscreen, but somehow not precise
hertzhaft
parents: 707
diff changeset
1415 redisplay(data);
705
e1995c540667 drag zoomed image
hertzhaft
parents: 703
diff changeset
1416 return false;
e1995c540667 drag zoomed image
hertzhaft
parents: 703
diff changeset
1417 };
735
790a7673bef0 improved some embedded buttons; fixed reset function
hertzhaft
parents: 733
diff changeset
1418
733
25f2898696a2 fixed setupZoomDrag
robcast
parents: 732
diff changeset
1419 // clear old handler
917
104fc89ef68b fixed bugs with reload when changing scale mode
robcast
parents: 915
diff changeset
1420 $document.off(".dlZoomDrag");
104fc89ef68b fixed bugs with reload when changing scale mode
robcast
parents: 915
diff changeset
1421 $scaler.off(".dlZoomDrag");
742
2b6d3ef57d68 fixed problem with setmark, zoomarea and zoomDrag handlers.
robcast
parents: 741
diff changeset
1422 if (! isFullArea(data.zoomArea)) {
2b6d3ef57d68 fixed problem with setmark, zoomarea and zoomDrag handlers.
robcast
parents: 741
diff changeset
1423 // set handler
917
104fc89ef68b fixed bugs with reload when changing scale mode
robcast
parents: 915
diff changeset
1424 $scaler.on("mousedown.dlZoomDrag", dragStart);
742
2b6d3ef57d68 fixed problem with setmark, zoomarea and zoomDrag handlers.
robcast
parents: 741
diff changeset
1425 }
705
e1995c540667 drag zoomed image
hertzhaft
parents: 703
diff changeset
1426 };
e1995c540667 drag zoomed image
hertzhaft
parents: 703
diff changeset
1427
950
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1428 /** set the zoom area.
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1429 * also triggers "changeZoomArea" event.
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1430 */
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1431 var setZoomArea = function(data, za) {
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1432 $(data).trigger('changeZoomArea', za);
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1433 data.oldZoomArea = data.zoomArea;
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1434 data.zoomArea = za;
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1435 };
1012
dc09bccf8357 better aspect ratio for preview (almost right)
hertzhaft
parents: 1011
diff changeset
1436
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1437 /** get image quality as a number (0..2).
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1438 *
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1439 */
703
0d49c33646da set quality works now (window.prompt only)
robcast
parents: 701
diff changeset
1440 var getQuality = function (data) {
0d49c33646da set quality works now (window.prompt only)
robcast
parents: 701
diff changeset
1441 var flags = data.scalerFlags;
0d49c33646da set quality works now (window.prompt only)
robcast
parents: 701
diff changeset
1442 var q = flags.q2 || flags.q1 || 'q0'; // assume q0 as default
0d49c33646da set quality works now (window.prompt only)
robcast
parents: 701
diff changeset
1443 return parseInt(q[1], 10);
706
f345b9657f5c some minor fixes, img reload still missing
hertzhaft
parents: 705
diff changeset
1444 };
703
0d49c33646da set quality works now (window.prompt only)
robcast
parents: 701
diff changeset
1445
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1446 /** set image quality as a number (0..2).
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1447 *
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1448 */
703
0d49c33646da set quality works now (window.prompt only)
robcast
parents: 701
diff changeset
1449 var setQuality = function (data, qual) {
0d49c33646da set quality works now (window.prompt only)
robcast
parents: 701
diff changeset
1450 var flags = data.scalerFlags;
0d49c33646da set quality works now (window.prompt only)
robcast
parents: 701
diff changeset
1451 // clear flags
0d49c33646da set quality works now (window.prompt only)
robcast
parents: 701
diff changeset
1452 for (var i = 0; i < 3; ++i) {
0d49c33646da set quality works now (window.prompt only)
robcast
parents: 701
diff changeset
1453 delete flags['q'+i];
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
1454 }
703
0d49c33646da set quality works now (window.prompt only)
robcast
parents: 701
diff changeset
1455 flags['q'+qual] = 'q'+qual;
706
f345b9657f5c some minor fixes, img reload still missing
hertzhaft
parents: 705
diff changeset
1456 };
710
d533bdf0e64e cosmetics
hertzhaft
parents: 709
diff changeset
1457
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1458 /** get image scale mode (screen, pixel, size).
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1459 *
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1460 */
761
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
1461 var getScaleMode = function (data) {
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
1462 if (data.scalerFlags.clip != null) {
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
1463 return 'pixel';
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
1464 } else if (data.scalerFlags.osize != null) {
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
1465 return 'size';
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
1466 }
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
1467 // mo=fit is default
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
1468 return 'screen';
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
1469 };
775
65cdf970934d minor precisations
hertzhaft
parents: 769
diff changeset
1470
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1471 /** set image scale mode (screen, pixel, size).
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1472 *
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1473 */
761
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
1474 var setScaleMode = function (data, mode) {
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
1475 delete data.scalerFlags.fit;
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
1476 delete data.scalerFlags.clip;
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
1477 delete data.scalerFlags.osize;
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
1478 if (mode === 'pixel') {
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
1479 data.scalerFlags.clip = 'clip';
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
1480 } else if (mode === 'size') {
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
1481 data.scalerFlags.osize = 'osize';
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
1482 }
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
1483 // mo=fit is default
972
2ad5ba781e88 better scale mode change handling.
robcast
parents: 968
diff changeset
1484 // save mode
2ad5ba781e88 better scale mode change handling.
robcast
parents: 968
diff changeset
1485 data.scaleMode = mode;
761
16778bd2de7c added setScaleMode. no compensation for change in scaling yet.
robcast
parents: 760
diff changeset
1486 };
775
65cdf970934d minor precisations
hertzhaft
parents: 769
diff changeset
1487
972
2ad5ba781e88 better scale mode change handling.
robcast
parents: 968
diff changeset
1488 /** get screen fit mode (width, height, both).
2ad5ba781e88 better scale mode change handling.
robcast
parents: 968
diff changeset
1489 *
2ad5ba781e88 better scale mode change handling.
robcast
parents: 968
diff changeset
1490 */
2ad5ba781e88 better scale mode change handling.
robcast
parents: 968
diff changeset
1491 var getFitMode = function (data) {
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1492 if (data.dlOpts.fitwidth != null) {
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1493 return "width";
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1494 } else if (data.dlOpts.fitheight != null) {
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1495 return "height";
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1496 }
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1497 // "both" is default
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1498 return "both";
972
2ad5ba781e88 better scale mode change handling.
robcast
parents: 968
diff changeset
1499 };
1012
dc09bccf8357 better aspect ratio for preview (almost right)
hertzhaft
parents: 1011
diff changeset
1500
972
2ad5ba781e88 better scale mode change handling.
robcast
parents: 968
diff changeset
1501 /**
2ad5ba781e88 better scale mode change handling.
robcast
parents: 968
diff changeset
1502 * set screen fit mode (width, height, both).
2ad5ba781e88 better scale mode change handling.
robcast
parents: 968
diff changeset
1503 */
2ad5ba781e88 better scale mode change handling.
robcast
parents: 968
diff changeset
1504 var setFitMode = function (data, mode) {
984
32ec05f60e1e fitwidth works without reload.
robcast
parents: 983
diff changeset
1505 var settings = data.settings;
1012
dc09bccf8357 better aspect ratio for preview (almost right)
hertzhaft
parents: 1011
diff changeset
1506 var imgSize = data.maxImgSize;
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1507 if (mode === 'width') {
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1508 data.dlOpts.fitwidth = 1;
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1509 delete data.dlOpts.fitheight;
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1510 if (imgSize != null) {
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1511 // fitwidth omits destination height
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1512 settings.dw = imgSize.width;
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1513 settings.dh = null;
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1514 }
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1515 } else if (mode === 'height') {
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1516 data.dlOpts.fitheight = 1;
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1517 delete data.dlOpts.fitwidth;
984
32ec05f60e1e fitwidth works without reload.
robcast
parents: 983
diff changeset
1518 if (imgSize != null) {
32ec05f60e1e fitwidth works without reload.
robcast
parents: 983
diff changeset
1519 // fitheight omits destination width
32ec05f60e1e fitwidth works without reload.
robcast
parents: 983
diff changeset
1520 settings.dw = null;
32ec05f60e1e fitwidth works without reload.
robcast
parents: 983
diff changeset
1521 settings.dh = imgSize.height;
32ec05f60e1e fitwidth works without reload.
robcast
parents: 983
diff changeset
1522 }
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1523 } else {
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1524 delete data.dlOpts.fitwidth;
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1525 delete data.dlOpts.fitheight;
984
32ec05f60e1e fitwidth works without reload.
robcast
parents: 983
diff changeset
1526 if (imgSize != null) {
32ec05f60e1e fitwidth works without reload.
robcast
parents: 983
diff changeset
1527 settings.dw = imgSize.width;
32ec05f60e1e fitwidth works without reload.
robcast
parents: 983
diff changeset
1528 settings.dh = imgSize.height;
32ec05f60e1e fitwidth works without reload.
robcast
parents: 983
diff changeset
1529 }
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1530 }
972
2ad5ba781e88 better scale mode change handling.
robcast
parents: 968
diff changeset
1531 };
1015
5b7fd3515e4c set maxImgSize for embedded mode
hertzhaft
parents: 1014
diff changeset
1532
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1533 /** sets a key to a value (relative values with +/- if relative=true).
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1534 *
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1535 */
650
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
1536 var setNumValue = function(settings, key, value) {
716
6b9b8e1401d8 goto page works now (with window.prompt)
robcast
parents: 715
diff changeset
1537 if (value == null) return null;
955
c8c441d1d7a0 fixed bug with prev/next page. (too quick in using jQuery functions)
robcast
parents: 954
diff changeset
1538 if (isNumber(value)) {
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
1539 settings[key] = value;
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
1540 return value;
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
1541 }
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
1542 var sign = value[0];
650
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
1543 if (sign === '+' || sign === '-') {
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
1544 if (settings[key] == null) {
651
694bdb86cbad renamed 'actions' to 'buttons' and 'methods' to 'actions'
robcast
parents: 650
diff changeset
1545 // this isn't perfect but still...
650
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
1546 settings[key] = 0;
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
1547 }
650
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
1548 settings[key] = parseFloat(settings[key]) + parseFloat(value);
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
1549 } else {
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
1550 settings[key] = value;
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
1551 }
650
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
1552 return settings[key];
0c5930916d53 zoom to page width works now
robcast
parents: 649
diff changeset
1553 };
655
72acc47f1831 first try at birdview indicator
hertzhaft
parents: 653
diff changeset
1554
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1555 /** return width of border on $elem.
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1556 * assumes equal border width on all sides.
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1557 */
775
65cdf970934d minor precisations
hertzhaft
parents: 769
diff changeset
1558 var getBorderWidth = function($elem) {
65cdf970934d minor precisations
hertzhaft
parents: 769
diff changeset
1559 var border = $elem.outerWidth() - $elem.width();
65cdf970934d minor precisations
hertzhaft
parents: 769
diff changeset
1560 return border/2;
65cdf970934d minor precisations
hertzhaft
parents: 769
diff changeset
1561 };
65cdf970934d minor precisations
hertzhaft
parents: 769
diff changeset
1562
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1563 /** return if the current zoomarea can be moved further.
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1564 *
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1565 */
878
f6e2e6831aaf arrows: show only if zoomarea can move
hertzhaft
parents: 877
diff changeset
1566 var canMove = function(data, movx, movy) {
f6e2e6831aaf arrows: show only if zoomarea can move
hertzhaft
parents: 877
diff changeset
1567 var za = data.zoomArea;
f6e2e6831aaf arrows: show only if zoomarea can move
hertzhaft
parents: 877
diff changeset
1568 if (isFullArea(za)) return false;
f6e2e6831aaf arrows: show only if zoomarea can move
hertzhaft
parents: 877
diff changeset
1569 var x2 = za.x + za.width;
f6e2e6831aaf arrows: show only if zoomarea can move
hertzhaft
parents: 877
diff changeset
1570 var y2 = za.y + za.height;
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1571 return (((movx < 0) && (za.x > 0))
878
f6e2e6831aaf arrows: show only if zoomarea can move
hertzhaft
parents: 877
diff changeset
1572 || ((movx > 0) && (x2 < 1.0))
f6e2e6831aaf arrows: show only if zoomarea can move
hertzhaft
parents: 877
diff changeset
1573 || ((movy < 0) && (za.y > 0))
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1574 || ((movy > 0) && (y2 < 1.0)));
878
f6e2e6831aaf arrows: show only if zoomarea can move
hertzhaft
parents: 877
diff changeset
1575 };
f6e2e6831aaf arrows: show only if zoomarea can move
hertzhaft
parents: 877
diff changeset
1576
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1577 /** return if area is maximal.
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1578 *
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1579 */
795
00d37112d062 birds eye view now as a plugin.
robcast
parents: 794
diff changeset
1580 var isFullArea = function (area) {
659
9da101c94465 small birdview improvements
hertzhaft
parents: 658
diff changeset
1581 return (area.width === 1.0) && (area.height === 1.0);
655
72acc47f1831 first try at birdview indicator
hertzhaft
parents: 653
diff changeset
1582 };
72acc47f1831 first try at birdview indicator
hertzhaft
parents: 653
diff changeset
1583
955
c8c441d1d7a0 fixed bug with prev/next page. (too quick in using jQuery functions)
robcast
parents: 954
diff changeset
1584 /** return if the argument is a number.
c8c441d1d7a0 fixed bug with prev/next page. (too quick in using jQuery functions)
robcast
parents: 954
diff changeset
1585 * from Douglas Crockford, A.10.
c8c441d1d7a0 fixed bug with prev/next page. (too quick in using jQuery functions)
robcast
parents: 954
diff changeset
1586 * this is different from $.isNumeric().
c8c441d1d7a0 fixed bug with prev/next page. (too quick in using jQuery functions)
robcast
parents: 954
diff changeset
1587 */
c8c441d1d7a0 fixed bug with prev/next page. (too quick in using jQuery functions)
robcast
parents: 954
diff changeset
1588 var isNumber = function (value) {
c8c441d1d7a0 fixed bug with prev/next page. (too quick in using jQuery functions)
robcast
parents: 954
diff changeset
1589 return typeof value === 'number' && isFinite(value);
c8c441d1d7a0 fixed bug with prev/next page. (too quick in using jQuery functions)
robcast
parents: 954
diff changeset
1590 };
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1591 /** return number with reduced precision.
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1592 * ("crop senseless precision")
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1593 */
631
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
1594 var cropFloat = function (x) {
637
d904c0c74c15 small fixes
robcast
parents: 636
diff changeset
1595 return parseInt(10000 * x, 10) / 10000;
631
4f7b52b97738 more work on initialisation
robcast
parents: 629
diff changeset
1596 };
655
72acc47f1831 first try at birdview indicator
hertzhaft
parents: 653
diff changeset
1597
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1598 /** return string from number with reduced precision.
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1599 *
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1600 */
813
1a7b14deae3a regions plugin works, inclunding event handlers
hertzhaft
parents: 807
diff changeset
1601 var cropFloatStr = function (x) {
1a7b14deae3a regions plugin works, inclunding event handlers
hertzhaft
parents: 807
diff changeset
1602 return cropFloat(x).toString();
1a7b14deae3a regions plugin works, inclunding event handlers
hertzhaft
parents: 807
diff changeset
1603 };
1a7b14deae3a regions plugin works, inclunding event handlers
hertzhaft
parents: 807
diff changeset
1604
692
ab8054bba8d3 console debug div for IE
hertzhaft
parents: 691
diff changeset
1605 // fallback for console.log calls
ab8054bba8d3 console debug div for IE
hertzhaft
parents: 691
diff changeset
1606 if (customConsole) {
ab8054bba8d3 console debug div for IE
hertzhaft
parents: 691
diff changeset
1607 var logFunction = function(type) {
ab8054bba8d3 console debug div for IE
hertzhaft
parents: 691
diff changeset
1608 return function(){
996
0b63093d598e cssPrefix works now.
robcast
parents: 995
diff changeset
1609 var $debug = $('#'+defaults.cssPrefix+'debug'); // debug div
692
ab8054bba8d3 console debug div for IE
hertzhaft
parents: 691
diff changeset
1610 if (!$debug) return;
ab8054bba8d3 console debug div for IE
hertzhaft
parents: 691
diff changeset
1611 var args = Array.prototype.slice.call(arguments);
ab8054bba8d3 console debug div for IE
hertzhaft
parents: 691
diff changeset
1612 var argtext = args.join(' ');
ab8054bba8d3 console debug div for IE
hertzhaft
parents: 691
diff changeset
1613 var $logDiv = $('<div/>');
ab8054bba8d3 console debug div for IE
hertzhaft
parents: 691
diff changeset
1614 $logDiv.addClass(type);
ab8054bba8d3 console debug div for IE
hertzhaft
parents: 691
diff changeset
1615 $logDiv.text(argtext);
ab8054bba8d3 console debug div for IE
hertzhaft
parents: 691
diff changeset
1616 $debug.append($logDiv);
ab8054bba8d3 console debug div for IE
hertzhaft
parents: 691
diff changeset
1617 };
ab8054bba8d3 console debug div for IE
hertzhaft
parents: 691
diff changeset
1618 };
ab8054bba8d3 console debug div for IE
hertzhaft
parents: 691
diff changeset
1619 console.log = logFunction('_log');
ab8054bba8d3 console debug div for IE
hertzhaft
parents: 691
diff changeset
1620 console.debug = logFunction('_debug');
ab8054bba8d3 console debug div for IE
hertzhaft
parents: 691
diff changeset
1621 console.error = logFunction('_error');
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
1622 }
692
ab8054bba8d3 console debug div for IE
hertzhaft
parents: 691
diff changeset
1623
949
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1624 /** functions to export to plugins.
9aacae8ae45e more cleanup to make eclipse checker happy.
robcast
parents: 948
diff changeset
1625 */
787
b322f553f92e more new plugin architecture.
robcast
parents: 786
diff changeset
1626 fn = {
791
304488c72344 first step to birdseye view as a plugin.
robcast
parents: 790
diff changeset
1627 geometry : geom,
787
b322f553f92e more new plugin architecture.
robcast
parents: 786
diff changeset
1628 parseQueryString : parseQueryString,
b322f553f92e more new plugin architecture.
robcast
parents: 786
diff changeset
1629 getScalerUrl : getScalerUrl,
b322f553f92e more new plugin architecture.
robcast
parents: 786
diff changeset
1630 getParamString : getParamString,
b322f553f92e more new plugin architecture.
robcast
parents: 786
diff changeset
1631 getDigilibUrl : getDigilibUrl,
b322f553f92e more new plugin architecture.
robcast
parents: 786
diff changeset
1632 unpackParams : unpackParams,
b322f553f92e more new plugin architecture.
robcast
parents: 786
diff changeset
1633 packParams : packParams,
822
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
1634 packArea : packArea,
637e8b601763 refactored packParams(); new 'keep' marker class
hertzhaft
parents: 814
diff changeset
1635 packScalerFlags : packScalerFlags,
795
00d37112d062 birds eye view now as a plugin.
robcast
parents: 794
diff changeset
1636 storeOptions : storeOptions,
787
b322f553f92e more new plugin architecture.
robcast
parents: 786
diff changeset
1637 redisplay : redisplay,
b322f553f92e more new plugin architecture.
robcast
parents: 786
diff changeset
1638 updateDisplay : updateDisplay,
791
304488c72344 first step to birdseye view as a plugin.
robcast
parents: 790
diff changeset
1639 showDiv : showDiv,
983
66db81af85e1 moved scroll arrows to separate plugin.
robcast
parents: 978
diff changeset
1640 setZoomArea : setZoomArea,
950
164d69e2c481 much nicer implementation of preview for scrolling and zooming.
robcast
parents: 949
diff changeset
1641 setPreviewBg : setPreviewBg,
787
b322f553f92e more new plugin architecture.
robcast
parents: 786
diff changeset
1642 getImgTrafo : getImgTrafo,
b322f553f92e more new plugin architecture.
robcast
parents: 786
diff changeset
1643 getQuality : getQuality,
b322f553f92e more new plugin architecture.
robcast
parents: 786
diff changeset
1644 setQuality : setQuality,
b322f553f92e more new plugin architecture.
robcast
parents: 786
diff changeset
1645 getScaleMode : getScaleMode,
b322f553f92e more new plugin architecture.
robcast
parents: 786
diff changeset
1646 setScaleMode : setScaleMode,
972
2ad5ba781e88 better scale mode change handling.
robcast
parents: 968
diff changeset
1647 getFitMode : getFitMode,
2ad5ba781e88 better scale mode change handling.
robcast
parents: 968
diff changeset
1648 setFitMode : setFitMode,
878
f6e2e6831aaf arrows: show only if zoomarea can move
hertzhaft
parents: 877
diff changeset
1649 canMove : canMove,
795
00d37112d062 birds eye view now as a plugin.
robcast
parents: 794
diff changeset
1650 isFullArea : isFullArea,
978
3b334a7d81ec finished calibration dialog
hertzhaft
parents: 976
diff changeset
1651 isNumber : isNumber,
974
678313a989a9 first part of calibration dialog
hertzhaft
parents: 972
diff changeset
1652 getFullscreenRect : getFullscreenRect,
813
1a7b14deae3a regions plugin works, inclunding event handlers
hertzhaft
parents: 807
diff changeset
1653 getBorderWidth : getBorderWidth,
1a7b14deae3a regions plugin works, inclunding event handlers
hertzhaft
parents: 807
diff changeset
1654 cropFloat : cropFloat,
1a7b14deae3a regions plugin works, inclunding event handlers
hertzhaft
parents: 807
diff changeset
1655 cropFloatStr : cropFloatStr
787
b322f553f92e more new plugin architecture.
robcast
parents: 786
diff changeset
1656 };
788
ddb28f6b066a make plugins available to other plugins
hertzhaft
parents: 787
diff changeset
1657
799
12f790cb30de started to adapt regions plugin to new plugin mechanism
hertzhaft
parents: 798
diff changeset
1658 // hook digilib plugin into jquery
785
b9a75079aece geometry as first digilib plugin.
robcast
parents: 784
diff changeset
1659 $.fn.digilib = function (action) {
799
12f790cb30de started to adapt regions plugin to new plugin mechanism
hertzhaft
parents: 798
diff changeset
1660 // plugin extension mechanism, called when the plugins' code is read
786
868c2e795aca new plugin architecture.
robcast
parents: 785
diff changeset
1661 if (action === 'plugin') {
868c2e795aca new plugin architecture.
robcast
parents: 785
diff changeset
1662 var plugin = arguments[1];
868c2e795aca new plugin architecture.
robcast
parents: 785
diff changeset
1663 // each plugin needs a name
868c2e795aca new plugin architecture.
robcast
parents: 785
diff changeset
1664 if (plugin.name != null) {
868c2e795aca new plugin architecture.
robcast
parents: 785
diff changeset
1665 plugins[plugin.name] = plugin;
793
63c1b33e38b1 documentation for new plugin api in jquery-digilib-plugin.txt.
robcast
parents: 791
diff changeset
1666 // share common objects
63c1b33e38b1 documentation for new plugin api in jquery-digilib-plugin.txt.
robcast
parents: 791
diff changeset
1667 plugin.defaults = defaults;
947
5bde01bcfb16 button plugin works now.
robcast
parents: 946
diff changeset
1668 plugin.buttons = buttons;
793
63c1b33e38b1 documentation for new plugin api in jquery-digilib-plugin.txt.
robcast
parents: 791
diff changeset
1669 plugin.actions = actions;
63c1b33e38b1 documentation for new plugin api in jquery-digilib-plugin.txt.
robcast
parents: 791
diff changeset
1670 plugin.fn = fn;
63c1b33e38b1 documentation for new plugin api in jquery-digilib-plugin.txt.
robcast
parents: 791
diff changeset
1671 plugin.plugins = plugins;
63c1b33e38b1 documentation for new plugin api in jquery-digilib-plugin.txt.
robcast
parents: 791
diff changeset
1672 // and install
63c1b33e38b1 documentation for new plugin api in jquery-digilib-plugin.txt.
robcast
parents: 791
diff changeset
1673 if (typeof plugin.install === 'function') {
63c1b33e38b1 documentation for new plugin api in jquery-digilib-plugin.txt.
robcast
parents: 791
diff changeset
1674 plugin.install(plugin);
63c1b33e38b1 documentation for new plugin api in jquery-digilib-plugin.txt.
robcast
parents: 791
diff changeset
1675 }
786
868c2e795aca new plugin architecture.
robcast
parents: 785
diff changeset
1676 }
799
12f790cb30de started to adapt regions plugin to new plugin mechanism
hertzhaft
parents: 798
diff changeset
1677 // plugins will be initialised when action.init is called
760
f0be4432f515 primitive plugin extension mechanism - unsure how useful this is
hertzhaft
parents: 755
diff changeset
1678 } else if (actions[action]) {
651
694bdb86cbad renamed 'actions' to 'buttons' and 'methods' to 'actions'
robcast
parents: 650
diff changeset
1679 // call action on this with the remaining arguments (inserting data as first argument)
694bdb86cbad renamed 'actions' to 'buttons' and 'methods' to 'actions'
robcast
parents: 650
diff changeset
1680 var $elem = $(this);
694bdb86cbad renamed 'actions' to 'buttons' and 'methods' to 'actions'
robcast
parents: 650
diff changeset
1681 var data = $elem.data('digilib');
694bdb86cbad renamed 'actions' to 'buttons' and 'methods' to 'actions'
robcast
parents: 650
diff changeset
1682 var args = Array.prototype.slice.call(arguments, 1);
694bdb86cbad renamed 'actions' to 'buttons' and 'methods' to 'actions'
robcast
parents: 650
diff changeset
1683 args.unshift(data);
694bdb86cbad renamed 'actions' to 'buttons' and 'methods' to 'actions'
robcast
parents: 650
diff changeset
1684 return actions[action].apply(this, args);
798
b07d1824ca2a fullscreen mode works without reload on browsers supporting history.pushstate!
robcast
parents: 797
diff changeset
1685 } else if (typeof action === 'object' || !action) {
799
12f790cb30de started to adapt regions plugin to new plugin mechanism
hertzhaft
parents: 798
diff changeset
1686 // call init on the digilib jQuery object
651
694bdb86cbad renamed 'actions' to 'buttons' and 'methods' to 'actions'
robcast
parents: 650
diff changeset
1687 return actions.init.apply(this, arguments);
605
aee94e4a8c48 next version zero of jquery.digilib
robcast
parents: 604
diff changeset
1688 } else {
713
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
1689 $.error('action ' + action + ' does not exist on jQuery.digilib');
c1fa722c570e more cosmetics: added options to validate with http://www.jslint.com
robcast
parents: 711
diff changeset
1690 }
605
aee94e4a8c48 next version zero of jquery.digilib
robcast
parents: 604
diff changeset
1691 };
692
ab8054bba8d3 console debug div for IE
hertzhaft
parents: 691
diff changeset
1692
991
497ab03868ab moved marks to separate plugin. (pack and unpack is still in digilib.js)
robcast
parents: 990
diff changeset
1693 })(jQuery);