annotate client/digitallibrary/dllib.js @ 643:c108607e1bc0 jquery

zoomin and -out works now gotopage resets (some) parameters reload takes changed parameters (to put in url) getParamString omits parameters with default values (for shorter urls)
author robcast
date Wed, 19 Jan 2011 20:03:44 +0100
parents 92e49afaea90
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
243
4dbff786ff50 new digimage with red triangles for moving the zoomed area
robcast
parents: 239
diff changeset
1 /* Copyright (C) 2003,2004 IT-Group MPIWG, WTWG Uni Bern and others
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
2
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
3 This program is free software; you can redistribute it and/or
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
4 modify it under the terms of the GNU General Public License
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
5 as published by the Free Software Foundation; either version 2
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
6 of the License, or (at your option) any later version.
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
7
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
8 This program is distributed in the hope that it will be useful,
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
11 GNU General Public License for more details.
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
12
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
13 You should have received a copy of the GNU General Public License
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
14 along with this program; if not, write to the Free Software
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
15 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
16
243
4dbff786ff50 new digimage with red triangles for moving the zoomed area
robcast
parents: 239
diff changeset
17 Authors:
4dbff786ff50 new digimage with red triangles for moving the zoomed area
robcast
parents: 239
diff changeset
18 Christian Luginbuehl, 01.05.2003 (first version)
4dbff786ff50 new digimage with red triangles for moving the zoomed area
robcast
parents: 239
diff changeset
19 DW 24.03.2004 (Changed for digiLib in Zope)
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
20 Robert Casties, 8.11.2005
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
21
243
4dbff786ff50 new digimage with red triangles for moving the zoomed area
robcast
parents: 239
diff changeset
22 ! Requires baselib.js !
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
23
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
24 */
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
25
317
610c7ee770cb big autumn cleaning :-)
robcast
parents: 243
diff changeset
26
610c7ee770cb big autumn cleaning :-)
robcast
parents: 243
diff changeset
27 function identify() {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
28 // used for identifying a digilib instance
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
29 // Relato uses that function - lugi
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
30 return "Digilib 0.6";
317
610c7ee770cb big autumn cleaning :-)
robcast
parents: 243
diff changeset
31 }
610c7ee770cb big autumn cleaning :-)
robcast
parents: 243
diff changeset
32
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
33
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
34 /*
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
35 * more parameter handling
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
36 */
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
37
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
38 function parseArea() {
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
39 // returns area Rectangle from current parameters
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
40 return new Rectangle(getParameter("wx"), getParameter("wy"), getParameter("ww"), getParameter("wh"));
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
41 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
42
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
43 function setParamFromArea(rect) {
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
44 // sets digilib wx etc. from rect
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
45 setParameter("wx", cropFloat(rect.x));
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
46 setParameter("wy", cropFloat(rect.y));
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
47 setParameter("ww", cropFloat(rect.width));
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
48 setParameter("wh", cropFloat(rect.height));
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
49 return true;
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
50 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
51
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
52 function parseTrafo(elem) {
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
53 // returns Transform from current dlArea and picsize
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
54 var picsize = getElementRect(elem);
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
55 var trafo = new Transform();
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
56 // subtract area offset and size
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
57 trafo.concat(getTranslation(new Position(-dlArea.x, -dlArea.y)));
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
58 trafo.concat(getScale(new Size(1/dlArea.width, 1/dlArea.height)));
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
59 // scale to screen size
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
60 trafo.concat(getScale(picsize));
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
61 trafo.concat(getTranslation(picsize));
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
62 // rotate
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
63 //trafo.concat(getRotation(- getParameter("rot"), new Position(0.5*picsize.width, 0.5*picsize.height)));
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
64 // mirror
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
65 //if (hasFlag("hmir")) {
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
66 //trafo.m00 = - trafo.m00;
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
67 //}
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
68 //if (hasFlag("vmir")) {
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
69 //trafo.m11 = - trafo.m11;
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
70 //}
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
71 return trafo;
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
72 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
73
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
74
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
75 function parseMarks() {
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
76 // returns marks array from current parameters
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
77 var marks = new Array();
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
78 var ma;
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
79 var mk = getParameter("mk");
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
80 if (mk.indexOf(";") >= 0) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
81 // old format with ";"
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
82 ma = mk.split(";");
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
83 } else {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
84 ma = mk.split(",");
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
85 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
86 for (var i = 0; i < ma.length ; i++) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
87 var pos = ma[i].split("/");
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
88 if (pos.length > 1) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
89 marks.push(new Position(pos[0], pos[1]));
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
90 }
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
91 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
92 return marks;
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
93 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
94
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
95 function getAllMarks() {
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
96 // returns a string with all marks in query format
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
97 var marks = new Array();
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
98 for (var i = 0; i < dlMarks.length; i++) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
99 marks.push(cropFloat(dlMarks[i].x) + "/" + cropFloat(dlMarks[i].y));
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
100 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
101 return marks.join(",");
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
102 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
103
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
104 function addMark(pos) {
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
105 // add a mark
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
106 dlMarks.push(pos);
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
107 setParameter("mk", getAllMarks());
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
108 return true;
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
109 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
110
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
111 function deleteMark() {
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
112 // delete the last mark
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
113 dlMarks.pop();
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
114 setParameter("mk", getAllMarks());
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
115 return true;
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
116 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
117
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
118 function hasFlag(mode) {
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
119 // returns if mode flag is set
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
120 return (dlFlags[mode]);
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
121 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
122
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
123 function addFlag(mode) {
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
124 // add a mode flag
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
125 dlFlags[mode] = mode;
239
264c55606a4e new version with false setMark ;-)
robcast
parents: 238
diff changeset
126 setParameter("mo", getAllFlags());
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
127 return true;
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
128 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
129
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
130 function removeFlag(mode) {
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
131 // remove a mode flag
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
132 if (dlFlags[mode]) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
133 delete dlFlags[mode];
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
134 }
239
264c55606a4e new version with false setMark ;-)
robcast
parents: 238
diff changeset
135 setParameter("mo", getAllFlags());
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
136 return true;
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
137 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
138
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
139 function toggleFlag(mode) {
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
140 // change a mode flag
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
141 if (dlFlags[mode]) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
142 delete dlFlags[mode];
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
143 } else {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
144 dlFlags[mode] = mode;
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
145 }
239
264c55606a4e new version with false setMark ;-)
robcast
parents: 238
diff changeset
146 setParameter("mo", getAllFlags());
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
147 return true;
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
148 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
149
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
150 function getAllFlags() {
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
151 // returns a string with all flags in query format
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
152 var fa = new Array();
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
153 for (var f in dlFlags) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
154 if ((f != "")&&(dlFlags[f] != null)) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
155 fa.push(f);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
156 }
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
157 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
158 return fa.join(",");
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
159 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
160
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
161 function parseFlags() {
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
162 // sets dlFlags from the current parameters
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
163 var flags = new Object();
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
164 var fa = getParameter("mo").split(",");
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
165 for (var i = 0; i < fa.length ; i++) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
166 var f = fa[i];
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
167 if (f != "") {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
168 flags[f] = f;
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
169 }
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
170 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
171 return flags;
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
172 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
173
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
174
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
175 function bestPicSize(elem, inset) {
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
176 // returns a Size with the best image size for the given element
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
177 if (! defined(inset)) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
178 inset = 25;
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
179 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
180 var ws = getWinSize();
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
181 var es = getElementPosition(elem);
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
182 if (es) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
183 ws.width = ws.width - es.x - inset;
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
184 ws.height = ws.height - es.y - inset;
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
185 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
186 return ws;
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
187 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
188
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
189 function setDLParam(e, s, relative) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
190 // sets parameter based on HTML event
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
191 var nam;
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
192 var val;
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
193 if (s.type && (s.type == "select-one")) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
194 nam = s.name;
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
195 val = s.options[s.selectedIndex].value;
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
196 } else if (s.name && s.value) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
197 nam = s.name;
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
198 val = s.value;
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
199 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
200 if (nam && val) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
201 setParameter(nam, val, relative);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
202 display();
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
203 } else {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
204 alert("ERROR: unable to process event!");
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
205 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
206 return true;
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
207 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
208
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
209
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
210 /* **********************************************
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
211 * digilib specific routines
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
212 * ******************************************** */
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
213
238
1ccda61967b2 initial parameter parsing now earlier
robcast
parents: 237
diff changeset
214
1ccda61967b2 initial parameter parsing now earlier
robcast
parents: 237
diff changeset
215 function dl_param_init() {
1ccda61967b2 initial parameter parsing now earlier
robcast
parents: 237
diff changeset
216 // parameter initialisation before onload
332
d14782908c37 fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 317
diff changeset
217 if (!baseScriptVersion) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
218 base_init();
332
d14782908c37 fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 317
diff changeset
219 }
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
220 dlScriptVersion = "1.2b";
332
d14782908c37 fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 317
diff changeset
221 dlArea = new Rectangle(0.0, 0.0, 1.0, 1.0);
d14782908c37 fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 317
diff changeset
222 dlMaxArea = new Rectangle(0.0, 0.0, 1.0, 1.0);
d14782908c37 fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 317
diff changeset
223 dlTrafo = new Transform();
d14782908c37 fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 317
diff changeset
224 dlMarks = new Array();
d14782908c37 fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 317
diff changeset
225 dlFlags = new Object();
d14782908c37 fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 317
diff changeset
226 elemScaler = null;
d14782908c37 fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 317
diff changeset
227 picElem = null;
d14782908c37 fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 317
diff changeset
228 ZOOMFACTOR = Math.sqrt(2);
238
1ccda61967b2 initial parameter parsing now earlier
robcast
parents: 237
diff changeset
229
1ccda61967b2 initial parameter parsing now earlier
robcast
parents: 237
diff changeset
230 // put the query parameters (sans "?") in the parameters array
1ccda61967b2 initial parameter parsing now earlier
robcast
parents: 237
diff changeset
231 parseParameters(location.search.slice(1));
1ccda61967b2 initial parameter parsing now earlier
robcast
parents: 237
diff changeset
232 // treat special parameters
1ccda61967b2 initial parameter parsing now earlier
robcast
parents: 237
diff changeset
233 dlMarks = parseMarks();
1ccda61967b2 initial parameter parsing now earlier
robcast
parents: 237
diff changeset
234 dlArea = parseArea();
1ccda61967b2 initial parameter parsing now earlier
robcast
parents: 237
diff changeset
235 dlFlags = parseFlags();
1ccda61967b2 initial parameter parsing now earlier
robcast
parents: 237
diff changeset
236 }
1ccda61967b2 initial parameter parsing now earlier
robcast
parents: 237
diff changeset
237
1ccda61967b2 initial parameter parsing now earlier
robcast
parents: 237
diff changeset
238
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
239 function dl_init() {
238
1ccda61967b2 initial parameter parsing now earlier
robcast
parents: 237
diff changeset
240 // initalisation on load
332
d14782908c37 fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 317
diff changeset
241 if (!dlScriptVersion) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
242 dl_param_init();
332
d14782908c37 fixed problems with Netscape4 (silly error by me partly :-)
robcast
parents: 317
diff changeset
243 }
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
244 elemScaler = getElement("scaler", true);
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
245 picElem = getElement("pic", true);
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
246 if (picElem == null && elemScaler) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
247 // in N4 pic is in the scaler layer
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
248 picElem = elemScaler.document.images[0];
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
249 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
250 if ((!elemScaler)||(!picElem)) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
251 alert("Sorry, digilib doesn't work here!");
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
252 return false;
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
253 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
254 // give a name to the window containing digilib
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
255 if (defined(dlTarget)&&(dlTarget)) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
256 window.name = dlTarget;
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
257 } else {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
258 window.name = "digilib";
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
259 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
260 // put the query parameters (sans "?") in the parameters array
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
261 parseParameters(location.search.slice(1));
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
262 // treat special parameters
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
263 dlMarks = parseMarks();
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
264 dlArea = parseArea();
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
265 dlFlags = parseFlags();
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
266 // wait for image to load and display marks
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
267 renderMarks();
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
268 // done
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
269 focus();
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
270 return;
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
271 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
272
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
273
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
274 function display(detail) {
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
275 // redisplay the page
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
276 if (! detail) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
277 detail = 255;
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
278 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
279 var queryString = getAllParameters(detail);
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
280 location.href = location.protocol + "//" + location.host + location.pathname + "?" + queryString;
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
281 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
282
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
283
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
284 /* **********************************************
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
285 * interactive digilib functions
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
286 * ******************************************** */
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
287
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
288
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
289 function renderMarks() {
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
290 // put the visible marks on the image
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
291 var mark_count = dlMarks.length;
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
292 // make shure the image is loaded so we know its size
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
293 if (defined(picElem.complete) && picElem.complete == false && ! browserType.isN4 ) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
294 setTimeout("renderMarks()", 100);
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
295 } else {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
296 dlTrafo = parseTrafo(picElem);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
297 for (var i = 0; i < 8; i++) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
298 var me = getElement("dot"+i);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
299 if (i < mark_count) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
300 if (dlArea.containsPosition(dlMarks[i])) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
301 var mpos = dlTrafo.transform(dlMarks[i]);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
302 // suboptimal to place -5 pixels and not half size of mark-image
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
303 mpos.x = mpos.x -5;
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
304 mpos.y = mpos.y -5;
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
305 moveElement(me, mpos);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
306 showElement(me, true);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
307 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
308 } else {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
309 // hide the other marks
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
310 showElement(me, false);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
311 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
312 }
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
313 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
314 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
315
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
316
239
264c55606a4e new version with false setMark ;-)
robcast
parents: 238
diff changeset
317 function setMark(reload) {
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
318 // add a mark where clicked
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
319 if ( dlMarks.length > 7 ) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
320 alert("Only 8 marks are possible at the moment!");
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
321 return;
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
322 }
317
610c7ee770cb big autumn cleaning :-)
robcast
parents: 243
diff changeset
323 window.focus();
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
324
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
325 function markEvent(evt) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
326 // event handler adding a new mark
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
327 unregisterEvent("mousedown", elemScaler, markEvent);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
328 var p = dlTrafo.invtransform(evtPosition(evt));
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
329 addMark(p);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
330 if (defined(reload)&&(!reload)) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
331 // don't redisplay
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
332 renderMarks();
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
333 return;
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
334 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
335 display();
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
336 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
337
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
338 // starting event capture
243
4dbff786ff50 new digimage with red triangles for moving the zoomed area
robcast
parents: 239
diff changeset
339 registerEvent("mousedown", elemScaler, markEvent);
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
340 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
341
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
342
239
264c55606a4e new version with false setMark ;-)
robcast
parents: 238
diff changeset
343 function removeMark(reload) {
264c55606a4e new version with false setMark ;-)
robcast
parents: 238
diff changeset
344 // remove the last mark
264c55606a4e new version with false setMark ;-)
robcast
parents: 238
diff changeset
345 deleteMark();
264c55606a4e new version with false setMark ;-)
robcast
parents: 238
diff changeset
346 if (defined(reload)&&(!reload)) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
347 // don't redisplay
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
348 renderMarks();
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
349 return;
239
264c55606a4e new version with false setMark ;-)
robcast
parents: 238
diff changeset
350 }
264c55606a4e new version with false setMark ;-)
robcast
parents: 238
diff changeset
351 display();
264c55606a4e new version with false setMark ;-)
robcast
parents: 238
diff changeset
352 }
264c55606a4e new version with false setMark ;-)
robcast
parents: 238
diff changeset
353
264c55606a4e new version with false setMark ;-)
robcast
parents: 238
diff changeset
354
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
355 function zoomArea() {
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
356 var click = 1;
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
357 var pt1, pt2;
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
358 var eck1pos, eck2pos, eck3pos, eck4pos;
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
359 window.focus();
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
360 var eck1 = getElement("eck1");
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
361 var eck2 = getElement("eck2");
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
362 var eck3 = getElement("eck3");
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
363 var eck4 = getElement("eck4");
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
364
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
365 function zoomClick(evt) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
366 // mouse click handler
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
367 if (click == 1) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
368 // first click -- start moving
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
369 click = 2;
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
370 pt1 = evtPosition(evt);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
371 pt2 = pt1;
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
372 eck1pos = pt1;
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
373 eck2pos = new Position(pt1.x - 12, pt1.y);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
374 eck3pos = new Position(pt1.x, pt1.y - 12);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
375 eck4pos = new Position(pt1.y - 12, pt1.y - 12);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
376 moveElement(eck1, eck1pos);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
377 moveElement(eck2, eck2pos);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
378 moveElement(eck3, eck3pos);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
379 moveElement(eck4, eck4pos);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
380 showElement(eck1, true);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
381 showElement(eck2, true);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
382 showElement(eck3, true);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
383 showElement(eck4, true);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
384 // show moving
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
385 registerEvent("mousemove", elemScaler, zoomMove);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
386 registerEvent("mousemove", eck4, zoomMove);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
387 // enable drag-to-zoom
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
388 registerEvent("mouseup", elemScaler, zoomClick);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
389 registerEvent("mouseup", eck4, zoomClick);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
390 } else {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
391 // second click -- end moving
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
392 pt2 = evtPosition(evt);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
393 showElement(eck1, false);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
394 showElement(eck2, false);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
395 showElement(eck3, false);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
396 showElement(eck4, false);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
397 unregisterEvent("mousemove", elemScaler, zoomMove);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
398 unregisterEvent("mousemove", eck4, zoomMove);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
399 unregisterEvent("mousedown", elemScaler, zoomClick);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
400 unregisterEvent("mousedown", eck4, zoomClick);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
401 var p1 = dlTrafo.invtransform(pt1);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
402 var p2 = dlTrafo.invtransform(pt2);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
403 var ww = p2.x-p1.x;
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
404 var wh = p2.y-p1.y;
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
405 if ((ww > 0)&&(wh > 0)) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
406 setParameter("wx", cropFloat(p1.x));
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
407 setParameter("wy", cropFloat(p1.y));
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
408 setParameter("ww", cropFloat(ww));
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
409 setParameter("wh", cropFloat(wh));
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
410 parseArea();
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
411 // zoomed is always fit
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
412 setParameter("ws", 1);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
413 display();
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
414 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
415 }
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
416 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
417
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
418 function zoomMove(evt) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
419 // mouse move handler
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
420 pt2 = evtPosition(evt);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
421 // restrict marks to move right and down
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
422 eck1pos = pt1;
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
423 eck2pos = new Position(Math.max(pt1.x, pt2.x)-12, pt1.y);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
424 eck3pos = new Position(pt1.x, Math.max(pt1.y, pt2.y)-12);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
425 eck4pos = new Position(Math.max(pt1.x, pt2.x)-12, Math.max(pt1.y, pt2.y)-12);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
426 moveElement(eck1, eck1pos);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
427 moveElement(eck2, eck2pos);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
428 moveElement(eck3, eck3pos);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
429 moveElement(eck4, eck4pos);
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
430 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
431
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
432 // starting event capture
243
4dbff786ff50 new digimage with red triangles for moving the zoomed area
robcast
parents: 239
diff changeset
433 registerEvent("mousedown", elemScaler, zoomClick);
4dbff786ff50 new digimage with red triangles for moving the zoomed area
robcast
parents: 239
diff changeset
434 registerEvent("mousedown", eck4, zoomClick);
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
435 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
436
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
437 function zoomBy(factor) {
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
438 // zooms by the given factor
239
264c55606a4e new version with false setMark ;-)
robcast
parents: 238
diff changeset
439 var newarea = dlArea.copy();
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
440 newarea.width /= factor;
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
441 newarea.height /= factor;
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
442 newarea.x -= 0.5 * (newarea.width - dlArea.width);
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
443 newarea.y -= 0.5 * (newarea.height - dlArea.height);
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
444 newarea = dlMaxArea.fit(newarea);
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
445 setParamFromArea(newarea);
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
446 display();
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
447 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
448
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
449
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
450 function zoomFullpage() {
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
451 // zooms out to show the whole image
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
452 setParameter("wx", 0.0);
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
453 setParameter("wy", 0.0);
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
454 setParameter("ww", 1.0);
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
455 setParameter("wh", 1.0);
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
456 display();
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
457 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
458
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
459
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
460 function moveCenter() {
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
461 // move visible area so that it's centered around the clicked point
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
462 if ( (dlArea.width == 1.0) && (dlArea.height == 1.0) ) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
463 // nothing to do
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
464 return;
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
465 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
466 window.focus();
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
467
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
468 function moveCenterEvent(evt) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
469 // move to handler
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
470 unregisterEvent("mousedown", elemScaler, moveCenterEvent);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
471 var pt = dlTrafo.invtransform(evtPosition(evt));
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
472 var newarea = new Rectangle(pt.x-0.5*dlArea.width, pt.y-0.5*dlArea.height, dlArea.width, dlArea.height);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
473 newarea = dlMaxArea.fit(newarea);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
474 // set parameters
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
475 setParamFromArea(newarea);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
476 parseArea();
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
477 display();
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
478 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
479
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
480 // starting event capture
243
4dbff786ff50 new digimage with red triangles for moving the zoomed area
robcast
parents: 239
diff changeset
481 registerEvent("mousedown", elemScaler, moveCenterEvent);
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
482 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
483
243
4dbff786ff50 new digimage with red triangles for moving the zoomed area
robcast
parents: 239
diff changeset
484 function moveBy(movx, movy) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
485 // move visible area by movx and movy (in units of ww, wh)
243
4dbff786ff50 new digimage with red triangles for moving the zoomed area
robcast
parents: 239
diff changeset
486 if ((dlArea.width == 1.0)&&(dlArea.height == 1.0)) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
487 // nothing to do
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
488 return;
243
4dbff786ff50 new digimage with red triangles for moving the zoomed area
robcast
parents: 239
diff changeset
489 }
4dbff786ff50 new digimage with red triangles for moving the zoomed area
robcast
parents: 239
diff changeset
490 var newarea = dlArea.copy();
4dbff786ff50 new digimage with red triangles for moving the zoomed area
robcast
parents: 239
diff changeset
491 newarea.x += parseFloat(movx)*dlArea.width;
4dbff786ff50 new digimage with red triangles for moving the zoomed area
robcast
parents: 239
diff changeset
492 newarea.y += parseFloat(movy)*dlArea.height;
4dbff786ff50 new digimage with red triangles for moving the zoomed area
robcast
parents: 239
diff changeset
493 newarea = dlMaxArea.fit(newarea);
4dbff786ff50 new digimage with red triangles for moving the zoomed area
robcast
parents: 239
diff changeset
494 // set parameters
4dbff786ff50 new digimage with red triangles for moving the zoomed area
robcast
parents: 239
diff changeset
495 setParamFromArea(newarea);
4dbff786ff50 new digimage with red triangles for moving the zoomed area
robcast
parents: 239
diff changeset
496 parseArea();
4dbff786ff50 new digimage with red triangles for moving the zoomed area
robcast
parents: 239
diff changeset
497 display();
4dbff786ff50 new digimage with red triangles for moving the zoomed area
robcast
parents: 239
diff changeset
498 }
4dbff786ff50 new digimage with red triangles for moving the zoomed area
robcast
parents: 239
diff changeset
499
238
1ccda61967b2 initial parameter parsing now earlier
robcast
parents: 237
diff changeset
500 function getRef() {
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
501 // returns a reference to the current digilib set
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
502 if (! baseUrl) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
503 var baseUrl = location.protocol + "//" + location.host + location.pathname;
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
504 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
505 var hyperlinkRef = baseUrl;
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
506 var par = getAllParameters(7+16); // all without ddpi, pt
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
507 if (par.length > 0) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
508 hyperlinkRef += "?" + par;
237
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
509 }
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
510 return hyperlinkRef;
786c27786281 new javascript code for digilib
robcast
parents:
diff changeset
511 }
317
610c7ee770cb big autumn cleaning :-)
robcast
parents: 243
diff changeset
512
610c7ee770cb big autumn cleaning :-)
robcast
parents: 243
diff changeset
513 function getRefWin(type, msg) {
610c7ee770cb big autumn cleaning :-)
robcast
parents: 243
diff changeset
514 // shows an alert with a reference to the current digilib set
610c7ee770cb big autumn cleaning :-)
robcast
parents: 243
diff changeset
515 if (! msg) {
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
516 msg = "Link for HTML documents";
317
610c7ee770cb big autumn cleaning :-)
robcast
parents: 243
diff changeset
517 }
610c7ee770cb big autumn cleaning :-)
robcast
parents: 243
diff changeset
518 prompt(msg, getRef());
610c7ee770cb big autumn cleaning :-)
robcast
parents: 243
diff changeset
519 }
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
520
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
521 function getQuality() {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
522 // returns the current q setting
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
523 for (var i = 0; i < 3; i++) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
524 if (hasFlag("q"+i)) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
525 return i;
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
526 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
527 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
528 return 1
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
529 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
530
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
531 function setQuality(qual) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
532 // set the image quality
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
533 for (var i = 0; i < 3; i++) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
534 removeFlag("q"+i);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
535 if (i == qual) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
536 addFlag("q"+i);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
537 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
538 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
539 setParameter("mo", getAllFlags());
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
540 display();
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
541 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
542
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
543 function setQualityWin(msg) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
544 // dialog for setting quality
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
545 if (! msg) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
546 msg = "Quality (0..2)";
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
547 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
548 var q = getQuality();
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
549 var newq = window.prompt(msg, q);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
550 if (newq) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
551 setQuality(newq);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
552 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
553 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
554
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
555 function mirror(dir) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
556 // mirror the image horizontally or vertically
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
557 if (dir == "h") {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
558 toggleFlag("hmir");
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
559 } else {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
560 toggleFlag("vmir");
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
561 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
562 setParameter("mo", getAllFlags());
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
563 display();
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
564 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
565
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
566 function gotoPage(gopage, keep) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
567 // goto given page nr (+/-: relative)
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
568 var oldpn = parseInt(getParameter("pn"));
447
92e49afaea90 fixed problem with next/prev page button in oldskin
robcast
parents: 386
diff changeset
569 // try setParameter with relative value
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
570 setParameter("pn", gopage, true);
447
92e49afaea90 fixed problem with next/prev page button in oldskin
robcast
parents: 386
diff changeset
571 // check the result
386
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
572 var pn = parseInt(getParameter("pn"));
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
573 if (pn < 1) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
574 alert("No such page! (Page number too low)");
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
575 setParameter("pn", oldpn);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
576 return;
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
577 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
578 if (hasParameter("pt")) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
579 pt = parseInt(getParameter("pt"))
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
580 if (pn > pt) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
581 alert("No such page! (Page number too high)");
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
582 setParameter("pn", oldpn);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
583 return;
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
584 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
585 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
586 if (keep) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
587 display(15+32); // all, no mark
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
588 } else {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
589 display(3+32); // fn, pn, ws, mo + pt
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
590 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
591 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
592
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
593 function gotoPageWin() {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
594 // dialog to ask for new page nr
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
595 var pn = getParameter("pn");
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
596 var gopage = window.prompt("Go to page", pn);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
597 if (gopage) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
598 gotoPage(gopage);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
599 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
600 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
601
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
602 function setParamWin(param, text, relative) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
603 // dialog to ask for new parameter value
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
604 var val = getParameter(param);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
605 var newval = window.prompt(text, val);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
606 if (newval) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
607 setParameter(param, newval, relative);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
608 display();
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
609 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
610 }
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
611
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
612 function showOptions(show) {
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
613 // show or hide option div
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
614 var elem = getElement("dloptions");
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
615 showElement(elem, show);
3b710e39823b latest version of baselib.js and dllib.js
robcast
parents: 332
diff changeset
616 }