annotate client/digitallibrary/greyskin/dllib.js @ 446:8f8d7c1a12b9

experimental intermediary release - more object-orientation in javascript - more changes afoot - reloading works properly - setting a mark reloads quickly
author robcast
date Mon, 23 Jan 2006 18:29:52 +0100
parents a7bd9e2e1bbe
children c3a36b515a73
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
1 /* Copyright (C) 2003,2004 IT-Group MPIWG, WTWG Uni Bern and others
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
2
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
3 This program is free software; you can redistribute it and/or
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
4 modify it under the terms of the GNU General Public License
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
5 as published by the Free Software Foundation; either version 2
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
6 of the License, or (at your option) any later version.
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
7
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
8 This program is distributed in the hope that it will be useful,
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
11 GNU General Public License for more details.
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
12
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
13 You should have received a copy of the GNU General Public License
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
14 along with this program; if not, write to the Free Software
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
15 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
16
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
17 Authors:
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
18 Christian Luginbuehl, 01.05.2003 (first version)
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
19 DW 24.03.2004 (Changed for digiLib in Zope)
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
20 Robert Casties, 8.11.2005
407
21540fe26235 some general refactoring;
hertzhaft
parents: 397
diff changeset
21 Martin Raspe <hertzhaft@biblhertz.it>, 12.12.2005
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
22
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
23 ! Requires baselib.js !
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
24
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
25 */
407
21540fe26235 some general refactoring;
hertzhaft
parents: 397
diff changeset
26 digilibVersion = "Digilib NG";
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
27 dllibVersion = "2.040";
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
28
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
29 /****************************************************
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
30 * digilib specific classes (must be defined first)
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
31 ****************************************************/
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
32
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
33 /*
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
34 * Marks class
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
35 */
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
36 function Marks() {
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
37 return this;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
38 }
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
39 // Marks inherits from Array
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
40 Marks.prototype = new Array();
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
41 Marks.prototype.parse = function(query) {
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
42 this.length = 0;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
43 if (query.indexOf(";") >= 0) {
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
44 var pa = query.split(";"); // old format with ";"
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
45 } else {
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
46 var pa = query.split(","); // new format
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
47 }
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
48 for (var i = 0; i < pa.length ; i++) {
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
49 var pos = pa[i].split("/");
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
50 if (pos.length > 1) this.push(new Position(pos[0], pos[1]));
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
51 }
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
52 }
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
53 Marks.prototype.getAll = function() {
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
54 var ma = new Array();
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
55 for (var i = 0; i < this.length; i++) {
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
56 ma.push(cropFloat(this[i].x) + "/" + cropFloat(this[i].y));
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
57 }
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
58 return ma.join(",");
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
59 }
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
60 Marks.prototype.addEvent = function(evt) {
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
61 // add a mark from a screen event
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
62 var pos = dlTrafo.invtransform(evtPosition(evt));
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
63 this.push(pos);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
64 }
425
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
65
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
66 /*
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
67 * DLParameters -- digilibs own parameter class
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
68 */
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
69 function DLParameters() {
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
70 // flags for parameter sets
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
71 this.PARAM_FILE = 1;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
72 this.PARAM_MODE = 2;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
73 this.PARAM_DIM = 4;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
74 this.PARAM_IMAGE = 8;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
75 this.PARAM_DPI = 16;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
76 this.PARAM_SIZE = 32;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
77 this.PARAM_MARK = 64;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
78 this.PARAM_PAGES = 128;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
79 this.PARAM_ALL = 255;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
80 return this;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
81 }
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
82 DLParameters.prototype = new Parameters();
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
83 // move the inherited getAll because we need it later
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
84 DLParameters.prototype._getAll = Parameters.prototype.getAll;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
85 DLParameters.prototype.getAll = function(paDetail, moDetail) {
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
86 // get Flags and Marks first
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
87 var mo = dlFlags.getAll(moDetail);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
88 this.set("mo", mo);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
89 var mk = dlMarks.getAll();
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
90 this.set("mk", mk);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
91 var ret = this._getAll(paDetail);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
92 return ret;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
93 }
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
94
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
95 /*
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
96 * DLModes -- digilibs own flags class
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
97 */
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
98 function DLFlags() {
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
99 // flags for mode sets
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
100 this.MODE_QUAL = 1;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
101 this.MODE_SIZE = 2;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
102 this.MODE_MIR = 4;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
103 this.MODE_OTHER = 128;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
104 this.MODE_ALL = 255;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
105 return this;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
106 }
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
107 // inherits from Flags
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
108 DLFlags.prototype = new Flags();
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
109
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
110 /********************************
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
111 * global variables
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
112 ********************************/
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
113
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
114 var isDigilibInitialized = false; // gets set to true in dl_param_init
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
115
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
116 var dlParams;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
117 var dlTrafo;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
118 var dlMaxArea = new Rectangle(0.0, 0.0, 1.0, 1.0); // should be CONST
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
119 var dlArea;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
120 var dlFlags;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
121 var dlMarks;
425
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
122
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
123 // global elements
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
124 var scalerDiv = null;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
125 var scalerImg = null;
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
126
441
a7bd9e2e1bbe pageWidth (not yet working in IE)
hertzhaft
parents: 439
diff changeset
127 // default inset (for scalerImg relativ to scalerDiv
a7bd9e2e1bbe pageWidth (not yet working in IE)
hertzhaft
parents: 439
diff changeset
128 INSET = 40; // because of scrollbars of main window and scaler [Firefox bug?]
a7bd9e2e1bbe pageWidth (not yet working in IE)
hertzhaft
parents: 439
diff changeset
129
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
130 /* old parameter function compatibility stuff */
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
131 function newParameter(a,b,c) {return dlParams.define(a,b,c)};
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
132 function resetParameter(a) {return dlParams.reset(a)};
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
133 function deleteParameter(a) {return dlParams.remove(a)};
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
134 function getParameter(a) {return dlParams.get(a)};
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
135 function setParameter(a,b,c) {return dlParams.set(a,b,c)};
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
136 function hasParameter(a) {return dlParams.isSet(a)};
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
137 function getAllParameters(a) {return dlParams.getAll(a)};
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
138 getQueryString = getAllParameters;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
139 function parseParameters(a) {return dlParams.parse(a)};
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
140 function getAllMarks() {return dlMarks.getAll()};
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
141 getMarksQueryString = getAllMarks;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
142 function addMark(evt) {return dlMarks.addEvent(evt)};
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
143 function deleteMark() {return dlMarks.pop()};
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
144 function deleteAllMarks() {return dlMarks = new Marks()};
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
145 function hasFlag(mode) {return dlFlags.get(mode)};
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
146 function addFlag(mode) {return dlFlags.set(mode)};
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
147 function removeFlag(mode) {return dlFlags.reset(mode)};
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
148 function toggleFlag(mode) {return dlFlags.toggle(mode)};
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
149 function getAllFlags() {return dlFlags.getAll()};
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
150
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
151
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
152
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
153 // mouse drag area that counts as one click
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
154 MIN_AREA_SIZE = 3 * 3 + 1;
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
155
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
156 // standard zoom factor
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
157 ZOOMFACTOR = Math.sqrt(2);
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
158
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
159 // bird's eye view dimensions
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
160 BIRD_MAXX = 100;
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
161 BIRD_MAXY = 100;
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
162
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
163 // with of arrow bars
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
164 ARROW_WIDTH = 32;
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
165
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
166 // with of calibration bar
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
167 CALIBRATION_WIDTH = 64;
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
168
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
169 function identify() {
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
170 // used for identifying a digilib instance
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
171 // Relato uses that function - lugi
407
21540fe26235 some general refactoring;
hertzhaft
parents: 397
diff changeset
172 return digilibVersion;
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
173 }
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
174
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
175 /*
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
176 * more parameter handling
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
177 */
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
178
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
179 function parseArea() {
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
180 // returns area Rectangle from current parameters
407
21540fe26235 some general refactoring;
hertzhaft
parents: 397
diff changeset
181 return new Rectangle(
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
182 dlParams.get("wx"),
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
183 dlParams.get("wy"),
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
184 dlParams.get("ww"),
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
185 dlParams.get("wh"));
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
186 }
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
187
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
188 function setParamFromArea(rect) {
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
189 // sets digilib wx etc. from rect
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
190 dlParams.set("wx", cropFloat(rect.x));
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
191 dlParams.set("wy", cropFloat(rect.y));
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
192 dlParams.set("ww", cropFloat(rect.width));
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
193 dlParams.set("wh", cropFloat(rect.height));
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
194 return true;
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
195 }
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
196
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
197 function initParameters() {
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
198 // initialisation before onload
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
199 if (!baseLibVersion) alert("ERROR: baselib.js not loaded!");
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
200 if (isDigilibInitialized) return false; // dl_param_init was already run
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
201 dlParams = new DLParameters();
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
202 dlFlags = new DLFlags();
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
203 dlMarks = new Marks();
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
204 /* request parameters */
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
205 with (dlParams) {
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
206 // file
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
207 define('fn', '', PARAM_FILE);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
208 define('pn', '1', PARAM_FILE);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
209 // mode
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
210 define('mo', '', PARAM_MODE);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
211 // relative dimensions of zoomed image
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
212 define('wx', '0.0', PARAM_DIM);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
213 define('wy', '0.0', PARAM_DIM);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
214 define('ww', '1.0', PARAM_DIM);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
215 define('wh', '1.0', PARAM_DIM);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
216 // image manipulation
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
217 define('brgt', '0.0', PARAM_IMAGE);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
218 define('cont', '0.0', PARAM_IMAGE);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
219 define('rot', '0.0', PARAM_IMAGE);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
220 define('rgba', '', PARAM_IMAGE);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
221 define('rgbm', '', PARAM_IMAGE);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
222 // resolution
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
223 define('ddpi', '', PARAM_DPI);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
224 define('ddpix', '', PARAM_DPI);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
225 define('ddpiy', '', PARAM_DPI);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
226 // marks
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
227 define('mk', '', PARAM_MARK);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
228 // pages total
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
229 define('pt', '0', PARAM_PAGES);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
230 // size
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
231 define('ws', '1.0', PARAM_SIZE);
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
232 }
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
233 /* mode flags */
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
234 with (dlFlags) {
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
235 define('q0', MODE_QUAL);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
236 define('q1', MODE_QUAL);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
237 define('q2', MODE_QUAL);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
238 define('fit', MODE_SIZE);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
239 define('clip', MODE_SIZE);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
240 define('osize', MODE_SIZE);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
241 define('vmir', MODE_MIR);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
242 define('hmir', MODE_MIR);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
243 }
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
244 // parse parameters
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
245 parseAllParameters();
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
246 isDigilibInitialized = true;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
247 }
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
248
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
249 /* **********************************************
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
250 * parse parameters routines
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
251 * ******************************************** */
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
252
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
253 function parseTrafo(elem) {
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
254 // returns Transform from current dlArea and picsize
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
255 var picsize = getElementRect(elem);
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
256 var trafo = new Transform();
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
257 // subtract area offset and size
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
258 trafo.concat(getTranslation(new Position(-dlArea.x, -dlArea.y)));
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
259 trafo.concat(getScale(new Size(1/dlArea.width, 1/dlArea.height)));
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
260 // scale to screen size
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
261 trafo.concat(getScale(picsize));
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
262 trafo.concat(getTranslation(picsize));
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
263 // FIX ME: Robert, kannst Du mal nachsehen, ob das folgende tut, was es soll?
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
264 // oder gibt es dafuer neuen Code? -- ROC: Bisher funktioniert es nicht!
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
265 // rotate
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
266 //var rot = getRotation(- dlParams.get("rot"), new Position(0.5*picsize.width, 0.5*picsize.height));
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
267 //trafo.concat(rot);
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
268 // mirror
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
269 //if (hasFlag("hmir")) trafo.m00 = - trafo.m00; // ??
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
270 //if (hasFlag("vmir")) trafo.m11 = - trafo.m11; // ??
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
271 return trafo;
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
272 }
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
273
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
274 /* **********************************************
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
275 * marks routines
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
276 * ******************************************** */
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
277
407
21540fe26235 some general refactoring;
hertzhaft
parents: 397
diff changeset
278 function createMarkDiv(index) {
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
279 var div = document.createElement("div");
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
280 div.className = "mark";
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
281 div.id = "mark" + index;
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
282 div.innerHTML = index + 1;
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
283 document.body.appendChild(div);
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
284 return div;
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
285 }
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
286
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
287
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
288
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
289
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
290 function bestPicSize(elem, inset) {
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
291 // returns a Size with the best image size for the given element
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
292 if (! defined(inset)) {
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
293 inset = 25;
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
294 }
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
295 var ws = getWinSize();
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
296 var es = getElementPosition(elem);
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
297 if (es) {
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
298 ws.width = ws.width - es.x - inset;
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
299 ws.height = ws.height - es.y - inset;
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
300 }
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
301 return ws;
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
302 }
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
303
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
304 function setDLParam(e, s, relative) {
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
305 // sets parameter based on HTML event
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
306 var nam;
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
307 var val;
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
308 if (s.type && (s.type == "select-one")) {
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
309 nam = s.name;
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
310 val = s.options[s.selectedIndex].value;
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
311 } else if (s.name && s.value) {
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
312 nam = s.name;
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
313 val = s.value;
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
314 }
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
315 if (nam && val) {
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
316 dlParams.set(nam, val, relative);
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
317 display();
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
318 } else {
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
319 alert("ERROR: unable to process event!");
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
320 }
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
321 return true;
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
322 }
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
323
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
324
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
325 /* **********************************************
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
326 * digilib specific routines
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
327 * ******************************************** */
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
328
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
329
407
21540fe26235 some general refactoring;
hertzhaft
parents: 397
diff changeset
330 function parseAllParameters() {
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
331 // put the query parameters (sans "?") in the parameters array
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
332 dlParams.parse(location.search.slice(1));
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
333 // treat special parameters
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
334 dlMarks.parse(dlParams.get("mk"));
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
335 dlArea = parseArea();
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
336 dlFlags.parse(dlParams.get("mo"));
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
337 }
407
21540fe26235 some general refactoring;
hertzhaft
parents: 397
diff changeset
338
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
339 function dl_param_init() {
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
340 return true;
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
341 }
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
342
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
343 function dl_init() {
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
344 // initalisation on load
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
345 if (!isDigilibInitialized) dl_param_init();
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
346 // wait for image to load and display marks
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
347 renderMarks();
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
348 // done
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
349 focus();
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
350 }
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
351
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
352 function setScalerImage(detail) {
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
353 // set the scaler image source (needs the browser size)
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
354 if (!scalerDiv) scalerDiv = getElement("scaler");
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
355 if (!scalerImg) scalerImg = getElement("pic");
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
356 var picsize = bestPicSize(scalerDiv, 50);
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
357 var src = "../servlet/Scaler?"
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
358 + dlParams.getAll(dlParams.PARAM_ALL & ~(dlParams.PARAM_MARK | dlParams.PARAM_PAGES))
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
359 + "&dw=" + picsize.width
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
360 + "&dh=" + picsize.height;
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
361 // debug(src);
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
362 scalerImg.onload = onImgLoad;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
363 scalerImg.src = src;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
364 //initScaler(); // dl_init braucht die endgueltigen Masze des pic Elements
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
365 }
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
366
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
367 function display(detail, moDetail) {
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
368 // redisplay the page
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
369 var queryString = dlParams.getAll(detail, moDetail);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
370 location.href
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
371 = location.protocol + "//"
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
372 + location.host
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
373 + location.pathname
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
374 + "?" + queryString;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
375 }
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
376
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
377 /* **********************************************
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
378 * interactive digilib functions
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
379 * ******************************************** */
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
380 function renderMarks() {
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
381 // make sure the image is loaded so we know its size
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
382 if (!dlTrafo) {
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
383 alert("ERROR: cannot render marks!");
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
384 return;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
385 }
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
386 // debugProps(dlArea, "dlArea");
407
21540fe26235 some general refactoring;
hertzhaft
parents: 397
diff changeset
387 for (var i = 0; i < dlMarks.length; i++) {
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
388 var div = getElement("mark" + i, true) || createMarkDiv(i);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
389 var mark = dlMarks[i];
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
390 // debugProps(mark, "mark");
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
391 if (dlArea.containsPosition(mark)) {
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
392 var mpos = dlTrafo.transform(mark);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
393 // debugProps(mark, "mpos");
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
394 // suboptimal to place -5 pixels and not half size of mark-image
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
395 // better not hide the marked spot (MR)
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
396 // mpos.x = mpos.x -5;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
397 // mpos.y = mpos.y -5;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
398 moveElement(div, mpos);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
399 showElement(div, true);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
400 } else {
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
401 // hide the other marks
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
402 showElement(div, false);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
403 }
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
404 }
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
405 }
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
406
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
407 function setMark(reload) {
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
408
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
409 function markEvent(evt) {
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
410 // event handler adding a new mark
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
411 unregisterEvent("mousedown", scalerDiv, markEvent);
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
412 dlMarks.addEvent(evt);
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
413 if ( defined(reload) && !reload ) {
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
414 // don't redisplay
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
415 renderMarks();
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
416 return;
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
417 }
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
418 display();
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
419 return stopEvent(evt);
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
420 }
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
421
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
422 // add a mark where clicked
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
423 window.focus();
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
424 moveCenter(false);
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
425 // start event capturing
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
426 registerEvent("mousedown", scalerDiv, markEvent);
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
427 }
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
428
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
429 function removeMark(reload) {
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
430 // remove the last mark
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
431 dlMarks.pop();
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
432 if (defined(reload)&&(!reload)) {
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
433 // don't redisplay
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
434 renderMarks();
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
435 return;
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
436 }
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
437 display();
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
438 }
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
439
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
440 function zoomArea() {
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
441 var pt1, pt2;
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
442 var zoomdiv = getElement("zoom");
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
443 var overlay = getElement("overlay");
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
444 // use overlay div to avoid <img> mousemove problems
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
445 var picRect = getElementRect(scalerImg);
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
446 // FIX ME: is there a way to query the border width from CSS info?
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
447 // rect.x -= 2; // account for overlay borders
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
448 // rect.y -= 2;
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
449 moveElement(overlay, picRect);
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
450 showElement(overlay, true);
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
451 // start event capturing
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
452 registerEvent("mousedown", overlay, zoomStart);
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
453 registerEvent("mousedown", scalerImg, zoomStart);
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
454 window.focus();
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
455
407
21540fe26235 some general refactoring;
hertzhaft
parents: 397
diff changeset
456 // mousedown handler: start moving
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
457 function zoomStart(evt) {
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
458 pt1 = evtPosition(evt);
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
459 unregisterEvent("mousedown", overlay, zoomStart);
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
460 unregisterEvent("mousedown", scalerImg, zoomStart);
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
461 // setup and show zoom div
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
462 moveElement(zoomdiv, Rectangle(pt1.x, pt1.y, 0, 0));
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
463 showElement(zoomdiv, true);
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
464 // register events
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
465 registerEvent("mousemove", document, zoomMove);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
466 registerEvent("mouseup", document, zoomEnd);
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
467 return stopEvent(evt);
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
468 }
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
469
407
21540fe26235 some general refactoring;
hertzhaft
parents: 397
diff changeset
470 // mouseup handler: end moving
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
471 function zoomEnd(evt) {
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
472 pt2 = evtPosition(evt);
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
473 // assume a click if the area is too small (up to 3 x 3 pixel)
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
474 var clickRect = new Rectangle(pt1, pt2);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
475 clickRect.normalize();
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
476 if (clickRect.getArea() <= MIN_AREA_SIZE) return stopEvent(evt);
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
477 // hide zoom div
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
478 showElement(zoomdiv, false);
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
479 showElement(overlay, false);
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
480 // unregister events
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
481 unregisterEvent("mousemove", document, zoomMove);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
482 unregisterEvent("mouseup", document, zoomMove);
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
483 // clip and transform
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
484 clickRect.clipTo(picRect);
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
485 var area = dlTrafo.invtransform(clickRect);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
486 setParamFromArea(area);
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
487 // zoomed is always fit
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
488 dlParams.set("ws", 1);
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
489 display();
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
490 return stopEvent(evt);
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
491 }
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
492
407
21540fe26235 some general refactoring;
hertzhaft
parents: 397
diff changeset
493 // mouse move handler
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
494 function zoomMove(evt) {
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
495 pt2 = evtPosition(evt);
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
496 var rect = new Rectangle(pt1, pt2);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
497 rect.normalize();
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
498 rect.clipTo(picRect);
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
499 // update zoom div
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
500 moveElement(zoomdiv, rect);
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
501 return stopEvent(evt);
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
502 }
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
503 }
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
504
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
505 function zoomBy(factor) {
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
506 // zooms by the given factor
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
507 var newarea = dlArea.copy();
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
508 newarea.width /= factor;
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
509 newarea.height /= factor;
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
510 newarea.x -= 0.5 * (newarea.width - dlArea.width);
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
511 newarea.y -= 0.5 * (newarea.height - dlArea.height);
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
512 newarea = dlMaxArea.fit(newarea);
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
513 setParamFromArea(newarea);
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
514 display();
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
515 }
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
516
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
517
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
518 function zoomFullpage() {
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
519 // zooms out to show the whole image
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
520 dlParams.set("wx", 0.0);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
521 dlParams.set("wy", 0.0);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
522 dlParams.set("ww", 1.0);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
523 dlParams.set("wh", 1.0);
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
524 display();
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
525 }
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
526
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
527
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
528 function moveCenter(on) {
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
529 // move visible area so that it's centered around the clicked point
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
530 if (isFullArea()) return; // nothing to do
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
531 // starting event capture
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
532 if (on) registerEvent("mousedown", scalerImg, moveCenterEvent);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
533 else unregisterEvent("mousedown", scalerImg, moveCenterEvent);
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
534 window.focus();
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
535 }
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
536
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
537 function moveCenterEvent(evt) {
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
538 // move to handler
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
539 var pt = dlTrafo.invtransform(evtPosition(evt));
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
540 var newarea = new Rectangle(
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
541 pt.x - 0.5 * dlArea.width,
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
542 pt.y - 0.5 * dlArea.height,
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
543 dlArea.width,
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
544 dlArea.height
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
545 );
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
546 newarea.stayInside(dlMaxArea);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
547 // newarea = dlMaxArea.fit(newarea);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
548 // debugProps(newarea, "newarea");
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
549 // debugProps(dlArea, "dlArea");
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
550 if (newarea.equals(dlArea)) return; // keep event handler
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
551 unregisterEvent("mousedown", scalerImg, moveCenterEvent);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
552 // set parameters
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
553 setParamFromArea(newarea);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
554 parseArea();
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
555 display();
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
556 }
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
557
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
558 function isFullArea(area) {
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
559 if (!area) area = dlArea;
439
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
560 // pixel by pixel is not always full area
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
561 return (area.width == 1.0) && (area.height == 1.0) && ! hasFlag("clip");
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
562 }
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
563
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
564 function canMove(movx, movy) {
425
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
565 if (isFullArea()) return false;
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
566 var x2 = dlArea.x + dlArea.width;
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
567 var y2 = dlArea.y + dlArea.height;
425
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
568 // debugProps(dlArea);
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
569 return ((movx < 0) && (dlArea.x > 0))
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
570 || ((movx > 0) && (x2 < 1.0))
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
571 || ((movy < 0) && (dlArea.y > 0))
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
572 || ((movy > 0) && (y2 < 1.0))
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
573 }
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
574
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
575 function moveBy(movx, movy) {
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
576 // move visible area by movx and movy (in units of ww, wh)
425
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
577 if (!canMove(movx, movy)) return; // nothing to do
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
578 var newarea = dlArea.copy();
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
579 newarea.x += parseFloat(movx)*dlArea.width;
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
580 newarea.y += parseFloat(movy)*dlArea.height;
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
581 newarea = dlMaxArea.fit(newarea);
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
582 // set parameters
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
583 setParamFromArea(newarea);
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
584 parseArea();
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
585 display();
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
586 }
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
587
407
21540fe26235 some general refactoring;
hertzhaft
parents: 397
diff changeset
588 function getRef(baseURL) {
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
589 // returns a reference to the current digilib set
425
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
590 if (!baseUrl) baseUrl
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
591 = location.protocol
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
592 + "//"
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
593 + location.host
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
594 + location.pathname;
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
595 var hyperlinkRef = baseUrl;
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
596 var params = dlParams.getAll(dlParams.PARAM_ALL & ~(dlParams.PARAM_DPI | dlParams.PARAM_PAGES)); // all without ddpi, pt
407
21540fe26235 some general refactoring;
hertzhaft
parents: 397
diff changeset
597 if (params.length > 0) hyperlinkRef += "?" + params;
21540fe26235 some general refactoring;
hertzhaft
parents: 397
diff changeset
598 return hyperlinkRef;
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
599 }
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
600
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
601 function getRefWin(type, msg) {
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
602 // shows an alert with a reference to the current digilib set
407
21540fe26235 some general refactoring;
hertzhaft
parents: 397
diff changeset
603 if (! msg) msg = "URL reference to the current view";
21540fe26235 some general refactoring;
hertzhaft
parents: 397
diff changeset
604 prompt(msg, getRef());
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
605 }
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
606
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
607 function getQuality() {
407
21540fe26235 some general refactoring;
hertzhaft
parents: 397
diff changeset
608 // returns the current q setting
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
609 for (var i = 0; i < 3; i++) {
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
610 if (dlFlags.get("q"+i)) return i;
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
611 }
407
21540fe26235 some general refactoring;
hertzhaft
parents: 397
diff changeset
612 return 1
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
613 }
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
614
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
615 function setQuality(qual) {
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
616 // set the image quality
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
617 for (var i = 0; i < 3; i++) dlFlags.reset("q" + i);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
618 if ((qual < 0)||(qual > 2)) return alert("Quality setting not supported");
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
619 dlFlags.set("q" + qual);
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
620 display();
407
21540fe26235 some general refactoring;
hertzhaft
parents: 397
diff changeset
621 }
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
622
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
623 function setQualityWin(msg) {
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
624 // dialog for setting quality
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
625 if (! msg) msg = "Quality (0..2)";
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
626 var q = getQuality();
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
627 var newq = window.prompt(msg, q);
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
628 if (newq) setQuality(newq);
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
629 }
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
630
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
631 function mirror(dir) {
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
632 // mirror the image horizontally or vertically
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
633 if (dir == "h") {
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
634 dlFlags.toggle("hmir");
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
635 } else {
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
636 dlFlags.toggle("vmir");
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
637 }
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
638 display();
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
639 }
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
640
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
641 function gotoPage(gopage, keep) {
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
642 // goto given page nr (+/-: relative)
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
643 var oldpn = parseInt(dlParams.get("pn"));
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
644 dlParams.set("pn", gopage, true);
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
645 var pn = parseInt(dlParams.get("pn"));
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
646 if (pn < 1) {
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
647 alert("No such page! (Page number too low)");
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
648 dlParams.set("pn", oldpn);
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
649 return;
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
650 }
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
651 if (dlParams.isSet("pt")) {
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
652 pt = parseInt(dlParams.get("pt"))
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
653 if (pn > pt) {
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
654 alert("No such page! (Page number too high)");
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
655 dlParams.set("pn", oldpn);
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
656 return;
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
657 }
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
658 }
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
659 if (keep) {
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
660 display(dlParams.PARAM_ALL & ~dlParams.PARAM_MARK); // all, no mark
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
661 } else {
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
662 display(dlParams.PARAM_FILE | dlParams.PARAM_MODE | dlParams.PARAM_PAGES, dlParams.MODE_QUAL | dlParams.MODE_OTHER); // fn, pn, ws, mo + pt
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
663 }
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
664 }
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
665
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
666 function gotoPageWin() {
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
667 // dialog to ask for new page nr
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
668 var pn = dlParams.get("pn");
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
669 var gopage = window.prompt("Go to page", pn);
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
670 if (gopage) gotoPage(gopage);
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
671 }
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
672
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
673 function setParamWin(param, text, relative) {
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
674 // dialog to ask for new parameter value
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
675 var val = dlParams.get(param);
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
676 var newval = window.prompt(text, val);
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
677 if (newval) {
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
678 dlParams.set(param, newval, relative);
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
679 display();
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
680 }
396
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
681 }
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
682
fa84aff8190b simplyfications
hertzhaft
parents:
diff changeset
683 function showOptions(show) {
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
684 // show or hide option div
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
685 var elem = getElement("dloptions");
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
686 showElement(elem, show);
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
687 // FIX ME: get rid of the dotted line around the buttons when focused
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
688 }
407
21540fe26235 some general refactoring;
hertzhaft
parents: 397
diff changeset
689
21540fe26235 some general refactoring;
hertzhaft
parents: 397
diff changeset
690 function showAboutDiv(show) {
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
691 // show or hide "about" div
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
692 var elem = getElement("about");
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
693 if (elem == null) {
439
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
694 if (show) alert("About Digilib - dialog missing in HTML code!"
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
695 + "\nDigilib Version: " + digilibVersion
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
696 + "\JSP Version: " + jspVersion
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
697 + "\ndlLib Version: " + dllibVersion
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
698 + "\nbaseLib Version: " + baseLibVersion);
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
699 return;
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
700 }
439
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
701 if (show) {
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
702 getElement("digilib-version").innerHTML = "Digilib Version: " + digilibVersion;
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
703 getElement("jsp-version").innerHTML = "JSP Version: " + jspVersion;
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
704 getElement("baselib-version").innerHTML = "baseLib Version: " + baseLibVersion;
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
705 getElement("dllib-version").innerHTML = "dlLib Version: " + dllibVersion;
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
706 var aboutRect = getElementRect(elem);
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
707 aboutRect.setCenter(getWinRect().getCenter());
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
708 moveElement(elem, aboutRect);
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
709 }
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
710 showElement(elem, show);
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
711 }
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
712
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
713 function loadBirdImage() {
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
714 var img = getElement("bird-image");
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
715 var src = "../servlet/Scaler?"
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
716 + dlParams.getAll(dlParams.PARAM_FILE)
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
717 + "&dw=" + BIRD_MAXX
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
718 + "&dh=" + BIRD_MAXY;
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
719 img.src = src;
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
720 }
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
721
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
722 function showBirdDiv(show) {
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
723 // show or hide "bird's eye" div
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
724 var startPos; // anchor for dragging
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
725 var newRect; // position after drag
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
726 var birdImg = getElement("bird-image");
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
727 var birdArea = getElement("bird-area");
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
728 var overlay = getElement("overlay");
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
729 showElement(birdImg, show);
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
730 // dont show selector if area has full size
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
731 if (!show || isFullArea()) {
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
732 // hide area
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
733 showElement(birdArea, false);
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
734 showElement(overlay, false);
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
735 return;
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
736 };
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
737 var birdImgRect = getElementRect(birdImg);
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
738 var area = parseArea();
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
739 // scale area down to img size
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
740 var birdAreaRect = new Rectangle(
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
741 // what about borders ??
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
742 birdImgRect.x + birdImgRect.width * area.x,
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
743 birdImgRect.y + birdImgRect.height * area.y,
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
744 birdImgRect.width * area.width,
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
745 birdImgRect.height * area.height
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
746 );
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
747 moveElement(birdArea, birdAreaRect);
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
748 showElement(birdArea, true);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
749 moveElement(overlay, birdImgRect);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
750 showElement(overlay, true);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
751 registerEvent("mousedown", overlay, birdAreaStartDrag);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
752 registerEvent("mousedown", birdImg, birdAreaStartDrag);
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
753
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
754 function birdAreaStartDrag(evt) {
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
755 // mousedown handler: start drag
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
756 startPos = evtPosition(evt);
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
757 unregisterEvent("mousedown", overlay, birdAreaStartDrag);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
758 unregisterEvent("mousedown", birdImg, birdAreaStartDrag);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
759 registerEvent("mousemove", document, birdAreaMove);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
760 registerEvent("mouseup", document, birdAreaEndDrag);
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
761 // debugProps(getElementRect(bird))
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
762 return stopEvent(evt);
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
763 }
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
764
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
765 function birdAreaMove(evt) {
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
766 // mousemove handler: drag
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
767 var pos = evtPosition(evt);
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
768 var dx = pos.x - startPos.x;
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
769 var dy = pos.y - startPos.y;
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
770 // move birdArea div, keeping size
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
771 newRect = new Rectangle(
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
772 birdAreaRect.x + dx,
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
773 birdAreaRect.y + dy,
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
774 birdAreaRect.width,
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
775 birdAreaRect.height);
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
776 // stay within image
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
777 newRect.stayInside(birdImgRect);
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
778 moveElement(birdArea, newRect);
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
779 showElement(birdArea, true);
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
780 return stopEvent(evt);
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
781 }
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
782
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
783 function birdAreaEndDrag(evt) {
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
784 // mouseup handler: reload page
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
785 unregisterEvent("mousemove", document, birdAreaMove);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
786 unregisterEvent("mouseup", document, birdAreaEndDrag);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
787 showElement(overlay, false);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
788 if (newRect == null) { // no movement happened
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
789 startPos = birdAreaRect.getCenter();
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
790 birdAreaMove(evt); // set center to click position
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
791 }
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
792 dlParams.set("wx", cropFloat((newRect.x - birdImgRect.x) / birdImgRect.width));
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
793 dlParams.set("wy", cropFloat((newRect.y - birdImgRect.y) / birdImgRect.height));
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
794 // zoomed is always fit
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
795 dlParams.set("ws", 1);
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
796 display();
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
797 return stopEvent(evt);
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
798 }
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
799 }
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
800
425
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
801 function showArrow(name, rect, show) {
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
802 var arrow = getElement(name);
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
803 moveElement(arrow, rect);
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
804 showElement(arrow, show);
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
805 }
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
806
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
807 function showArrows() {
439
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
808 // show the 4 arrow bars on top of scaler img according to current dlArea
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
809 if (defined(scalerImg.complete) && !scalerImg.complete && !browserType.isN4 ) {
425
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
810 setTimeout("showArrows()", 100);
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
811 return;
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
812 }
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
813 var r = getElementRect(scalerImg);
425
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
814 showArrow('up',
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
815 new Rectangle(r.x, r.y, r.width, ARROW_WIDTH),
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
816 canMove(0, -1)
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
817 );
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
818 showArrow('down',
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
819 new Rectangle(r.x, r.y + r.height - ARROW_WIDTH, r.width, ARROW_WIDTH),
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
820 canMove(0, 1)
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
821 );
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
822 showArrow('left',
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
823 new Rectangle(r.x, r.y, ARROW_WIDTH, r.height),
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
824 canMove(-1, 0)
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
825 );
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
826 showArrow('right',
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
827 new Rectangle(r.x + r.width - ARROW_WIDTH, r.y, ARROW_WIDTH, r.height),
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
828 canMove(1, 0)
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
829 );
ab2557f079fc added showArrows() function (navigation arrows overlay)
hertzhaft
parents: 412
diff changeset
830 }
412
e2bc7587aee1 added constants for parameter sets;
hertzhaft
parents: 407
diff changeset
831
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
832 function calibrate(direction) {
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
833 // calibrate screen
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
834 var startPos; // anchor for dragging
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
835 var newRect; // position after drag
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
836 var calDiv = getElement("calibration");
435
a6af40003a38 added osize and pixel-by-pixel;
hertzhaft
parents: 430
diff changeset
837 var pixel = calDiv.getElementsByTagName("p")[0];
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
838 var overlay = getElement("overlay");
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
839 moveElement(overlay, getWinRect());
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
840 showElement(overlay, true);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
841 var xDir = direction == "x";
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
842 moveCenter(false);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
843 registerEvent("mousedown", document, calibrationStartDrag);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
844
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
845 function calibrationStartDrag(evt) {
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
846 // mousedown handler: start drag
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
847 startPos = evtPosition(evt);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
848 unregisterEvent("mousedown", document, calibrationStartDrag);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
849 registerEvent("mousemove", document, calibrationMove);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
850 registerEvent("mouseup", document, calibrationEndDrag);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
851 newRect = new Rectangle(
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
852 startPos.x,
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
853 startPos.y,
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
854 xDir ? 1 : CALIBRATION_WIDTH,
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
855 xDir ? CALIBRATION_WIDTH : 1
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
856 );
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
857 moveElement(calDiv, newRect);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
858 showElement(calDiv, true);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
859 // debugProps(getElementRect(bird))
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
860 return stopEvent(evt);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
861 }
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
862
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
863 function calibrationMove(evt) {
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
864 // mousemove handler: drag
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
865 var pos = evtPosition(evt);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
866 var dx = (xDir) ? pos.x - startPos.x : CALIBRATION_WIDTH;
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
867 var dy = (xDir) ? CALIBRATION_WIDTH : pos.y - startPos.y;
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
868 // move birdArea div, keeping size
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
869 newRect = new Rectangle(startPos.x, startPos.y, dx, dy);
435
a6af40003a38 added osize and pixel-by-pixel;
hertzhaft
parents: 430
diff changeset
870 pixel.innerHTML = (xDir ? dx : dy) + " px";
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
871 moveElement(calDiv, newRect);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
872 showElement(calDiv, true);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
873 return stopEvent(evt);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
874 }
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
875
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
876 function calibrationEndDrag(evt) {
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
877 // mouseup handler: calibrate
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
878 unregisterEvent("mousemove", document, calibrationMove);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
879 unregisterEvent("mouseup", document, calibrationEndDrag);
435
a6af40003a38 added osize and pixel-by-pixel;
hertzhaft
parents: 430
diff changeset
880 if (xDir) {
a6af40003a38 added osize and pixel-by-pixel;
hertzhaft
parents: 430
diff changeset
881 var val = newRect.width * 0.254; // ratio dm/inch
a6af40003a38 added osize and pixel-by-pixel;
hertzhaft
parents: 430
diff changeset
882 cookie.add("ddpi", val);
a6af40003a38 added osize and pixel-by-pixel;
hertzhaft
parents: 430
diff changeset
883 cookie.add("ddpix", val);
a6af40003a38 added osize and pixel-by-pixel;
hertzhaft
parents: 430
diff changeset
884 } else {
a6af40003a38 added osize and pixel-by-pixel;
hertzhaft
parents: 430
diff changeset
885 var val = newRect.height * 0.254;
a6af40003a38 added osize and pixel-by-pixel;
hertzhaft
parents: 430
diff changeset
886 cookie.add("ddpiy", val);
a6af40003a38 added osize and pixel-by-pixel;
hertzhaft
parents: 430
diff changeset
887 }
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
888 showElement(calDiv, false);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
889 showElement(overlay, false);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
890 moveCenter(true);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
891 return stopEvent(evt);
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
892 }
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
893 }
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
894
439
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
895 function originalSize(on) {
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
896 // set osize flag, needs calibrated screen
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
897 if (on) {
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
898 var dpi = cookie.get("ddpi");
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
899 if (dpi == null) {
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
900 alert("Screen has not yet been calibrated - using default value of 72 dpi");
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
901 dpi = 72;
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
902 }
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
903 dlParams.set("ddpi", dpi);
439
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
904 addFlag("osize");
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
905 display();
435
a6af40003a38 added osize and pixel-by-pixel;
hertzhaft
parents: 430
diff changeset
906 }
439
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
907 else removeFlag("osize");
435
a6af40003a38 added osize and pixel-by-pixel;
hertzhaft
parents: 430
diff changeset
908 }
a6af40003a38 added osize and pixel-by-pixel;
hertzhaft
parents: 430
diff changeset
909
439
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
910 function pixelByPixel(on) {
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
911 // sets clip flag
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
912 if (on) {
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
913 addFlag("clip");
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
914 display();
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
915 }
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
916 else removeFlag("clip");
435
a6af40003a38 added osize and pixel-by-pixel;
hertzhaft
parents: 430
diff changeset
917 }
436
95f910ecdca5 sizes menu;
hertzhaft
parents: 435
diff changeset
918
441
a7bd9e2e1bbe pageWidth (not yet working in IE)
hertzhaft
parents: 439
diff changeset
919 function pageWidth() {
a7bd9e2e1bbe pageWidth (not yet working in IE)
hertzhaft
parents: 439
diff changeset
920 var divSize = getElementSize(scalerDiv);
a7bd9e2e1bbe pageWidth (not yet working in IE)
hertzhaft
parents: 439
diff changeset
921 divSize.width -= INSET; // allow for scrollbars [Firefox bug?]
a7bd9e2e1bbe pageWidth (not yet working in IE)
hertzhaft
parents: 439
diff changeset
922 var imgSize = getElementSize(scalerImg);
a7bd9e2e1bbe pageWidth (not yet working in IE)
hertzhaft
parents: 439
diff changeset
923 if (imgSize.width < divSize.width) {
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
924 dlParams.set("ws", cropFloat(divSize.width / imgSize.width));
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
925 display(dlParams.PARAM_ALL & ~dlParams.PARAM_DIM); // no zoom
441
a7bd9e2e1bbe pageWidth (not yet working in IE)
hertzhaft
parents: 439
diff changeset
926 };
a7bd9e2e1bbe pageWidth (not yet working in IE)
hertzhaft
parents: 439
diff changeset
927 // TODO: how to calculate correct width if zoom is on? (plus size?)
a7bd9e2e1bbe pageWidth (not yet working in IE)
hertzhaft
parents: 439
diff changeset
928
a7bd9e2e1bbe pageWidth (not yet working in IE)
hertzhaft
parents: 439
diff changeset
929 }
a7bd9e2e1bbe pageWidth (not yet working in IE)
hertzhaft
parents: 439
diff changeset
930
436
95f910ecdca5 sizes menu;
hertzhaft
parents: 435
diff changeset
931 function resize(factor) {
446
8f8d7c1a12b9 experimental intermediary release
robcast
parents: 441
diff changeset
932 dlParams.set("ws", factor);
439
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
933 showSizeMenu(false);
436
95f910ecdca5 sizes menu;
hertzhaft
parents: 435
diff changeset
934 display();
95f910ecdca5 sizes menu;
hertzhaft
parents: 435
diff changeset
935 }
95f910ecdca5 sizes menu;
hertzhaft
parents: 435
diff changeset
936
439
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
937 function showSizeMenu(show) {
436
95f910ecdca5 sizes menu;
hertzhaft
parents: 435
diff changeset
938 var menu = getElement("sizes");
439
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
939 if (show) {
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
940 // align menu with button
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
941 var buttonPos = getElementPosition(getElement("size"));
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
942 moveElement(menu, new Position(buttonPos.x - 50, buttonPos.y));
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
943 }
da024b494561 placement of size menu
hertzhaft
parents: 436
diff changeset
944 showElement(menu, show);
436
95f910ecdca5 sizes menu;
hertzhaft
parents: 435
diff changeset
945 }
430
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
946 // :tabSize=4:indentSize=4:noTabs=true:
fc5b8cade32f bug fixes;
hertzhaft
parents: 425
diff changeset
947