|
|
| version 1.3, 2004/10/04 20:58:01 | version 1.6, 2005/11/08 10:13:31 |
|---|---|
| Line 17 Foundation, Inc., 59 Temple Place - Suit | Line 17 Foundation, Inc., 59 Temple Place - Suit |
| Authors: | Authors: |
| Christian Luginbuehl, 01.05.2003 (first version) | Christian Luginbuehl, 01.05.2003 (first version) |
| DW 24.03.2004 (Changed for digiLib in Zope) | DW 24.03.2004 (Changed for digiLib in Zope) |
| Robert Casties, 04.10.2004 | Robert Casties, 2.11.2004 |
| ! Requires baselib.js ! | ! Requires baselib.js ! |
| */ | */ |
| var dlScriptVersion = "1.0b3"; | |
| function identify() { | |
| // used for identifying a digilib instance | |
| // Relato uses that function - lugi | |
| return "Digilib 0.6"; | |
| } | |
| /* | /* |
| * more parameter handling | * more parameter handling |
| */ | */ |
| var dlArea = new Rectangle(0.0, 0.0, 1.0, 1.0); | |
| var dlMaxArea = new Rectangle(0.0, 0.0, 1.0, 1.0); | |
| function parseArea() { | function parseArea() { |
| // returns area Rectangle from current parameters | // returns area Rectangle from current parameters |
| return new Rectangle(getParameter("wx"), getParameter("wy"), getParameter("ww"), getParameter("wh")); | return new Rectangle(getParameter("wx"), getParameter("wy"), getParameter("ww"), getParameter("wh")); |
| Line 46 function setParamFromArea(rect) { | Line 49 function setParamFromArea(rect) { |
| return true; | return true; |
| } | } |
| var dlTrafo = new Transform(); | |
| function parseTrafo(elem) { | function parseTrafo(elem) { |
| // returns Transform from current dlArea and picsize | // returns Transform from current dlArea and picsize |
| var picsize = getElementRect(elem); | var picsize = getElementRect(elem); |
| Line 71 function parseTrafo(elem) { | Line 72 function parseTrafo(elem) { |
| } | } |
| var dlMarks = new Array(); | |
| function parseMarks() { | function parseMarks() { |
| // returns marks array from current parameters | // returns marks array from current parameters |
| var marks = new Array(); | var marks = new Array(); |
| Line 116 function deleteMark() { | Line 115 function deleteMark() { |
| return true; | return true; |
| } | } |
| var dlFlags = new Object(); | |
| function hasFlag(mode) { | function hasFlag(mode) { |
| // returns if mode flag is set | // returns if mode flag is set |
| return (dlFlags[mode]); | return (dlFlags[mode]); |
| Line 189 function bestPicSize(elem, inset) { | Line 186 function bestPicSize(elem, inset) { |
| return ws; | return ws; |
| } | } |
| function setDLParam(e, s) { | |
| // sets parameter based on HTML event | |
| var nam; | |
| var val; | |
| if (s.type && (s.type == "select-one")) { | |
| nam = s.name; | |
| val = s.options[s.selectedIndex].value; | |
| } else if (s.name && s.value) { | |
| nam = s.name; | |
| val = s.value; | |
| } | |
| if (nam && val) { | |
| setParameter(nam, val); | |
| display(); | |
| } else { | |
| alert("unable to process event!"); | |
| } | |
| return true; | |
| } | |
| /* ********************************************** | /* ********************************************** |
| * digilib specific routines | * digilib specific routines |
| * ******************************************** */ | * ******************************************** */ |
| var elemScaler = null; | |
| var picElem = null; | |
| function dl_param_init() { | function dl_param_init() { |
| // parameter initialisation before onload | // parameter initialisation before onload |
| if (!baseScriptVersion) { | |
| base_init(); | |
| } | |
| dlScriptVersion = "1.1b"; | |
| dlArea = new Rectangle(0.0, 0.0, 1.0, 1.0); | |
| dlMaxArea = new Rectangle(0.0, 0.0, 1.0, 1.0); | |
| dlTrafo = new Transform(); | |
| dlMarks = new Array(); | |
| dlFlags = new Object(); | |
| elemScaler = null; | |
| picElem = null; | |
| ZOOMFACTOR = Math.sqrt(2); | |
| // put the query parameters (sans "?") in the parameters array | // put the query parameters (sans "?") in the parameters array |
| parseParameters(location.search.slice(1)); | parseParameters(location.search.slice(1)); |
| Line 212 function dl_param_init() { | Line 238 function dl_param_init() { |
| function dl_init() { | function dl_init() { |
| // initalisation on load | // initalisation on load |
| if (!dlScriptVersion) { | |
| dl_param_init(); | |
| } | |
| elemScaler = getElement("scaler", true); | elemScaler = getElement("scaler", true); |
| picElem = getElement("pic", true); | picElem = getElement("pic", true); |
| if (picElem == null && elemScaler) { | if (picElem == null && elemScaler) { |
| Line 219 function dl_init() { | Line 248 function dl_init() { |
| picElem = elemScaler.document.images[0]; | picElem = elemScaler.document.images[0]; |
| } | } |
| if ((!elemScaler)||(!picElem)) { | if ((!elemScaler)||(!picElem)) { |
| alert("Sorry, zogilib doesn't work here!"); | alert("Sorry, digilib doesn't work here!"); |
| return false; | return false; |
| } | } |
| // give a name to the window containing digilib | // give a name to the window containing digilib |
| Line 405 function zoomArea() { | Line 434 function zoomArea() { |
| registerEvent("mousedown", eck4, zoomClick); | registerEvent("mousedown", eck4, zoomClick); |
| } | } |
| var ZOOMFACTOR = Math.sqrt(2); | |
| function zoomBy(factor) { | function zoomBy(factor) { |
| // zooms by the given factor | // zooms by the given factor |
| var newarea = dlArea.copy(); | var newarea = dlArea.copy(); |
| Line 454 function moveCenter() { | Line 481 function moveCenter() { |
| registerEvent("mousedown", elemScaler, moveCenterEvent); | registerEvent("mousedown", elemScaler, moveCenterEvent); |
| } | } |
| function moveBy(movx, movy) { | |
| // move visible area by movx and movy (in units of ww, wh) | |
| if ((dlArea.width == 1.0)&&(dlArea.height == 1.0)) { | |
| // nothing to do | |
| return; | |
| } | |
| var newarea = dlArea.copy(); | |
| newarea.x += parseFloat(movx)*dlArea.width; | |
| newarea.y += parseFloat(movy)*dlArea.height; | |
| newarea = dlMaxArea.fit(newarea); | |
| // set parameters | |
| setParamFromArea(newarea); | |
| parseArea(); | |
| display(); | |
| } | |
| function getRef() { | function getRef() { |
| // returns a reference to the current digilib set | // returns a reference to the current digilib set |
| Line 473 function getRefWin(type, msg) { | Line 514 function getRefWin(type, msg) { |
| // shows an alert with a reference to the current digilib set | // shows an alert with a reference to the current digilib set |
| if (! msg) { | if (! msg) { |
| msg = "Link for HTML documents"; | msg = "Link for HTML documents"; |
| } | |
| prompt(msg, getRef()); | prompt(msg, getRef()); |
| } | } |
| function getQuality() { | |
| // returns the current q setting | |
| for (var i = 0; i < 3; i++) { | |
| if (hasFlag("q"+i)) { | |
| return i; | |
| } | |
| } | |
| return 1 | |
| } | |
| function setQuality(qual) { | |
| // set the image quality | |
| for (var i = 0; i < 3; i++) { | |
| removeFlag("q"+i); | |
| if (i == qual) { | |
| addFlag("q"+i); | |
| } | |
| } | |
| setParameter("mo", getAllFlags()); | |
| display(); | |
| } | |
| function setQualityWin(msg) { | |
| // dialog for setting quality | |
| if (! msg) { | |
| msg = "Quality (0..2)"; | |
| } | |
| var q = getQuality(); | |
| var newq = window.prompt(msg, q); | |
| if (newq) { | |
| setQuality(newq); | |
| } | |
| } | |
| function mirror(dir) { | |
| // mirror the image horizontally or vertically | |
| if (dir == "h") { | |
| toggleFlag("hmir"); | |
| } else { | |
| toggleFlag("vmir"); | |
| } | |
| setParameter("mo", getAllFlags()); | |
| display(); | |
| } | |
| function gotoPage(gopage) { | |
| // goto given page nr (+/- relative) | |
| setParameter("pn", gopage); | |
| var pn = parseInt(getParameter("pn")); | |
| if (pn < 1) { | |
| pn = 1; | |
| setParameter("pn", pn); | |
| } | |
| // TODO: check for last page | |
| display(1); | |
| } | |
| function gotoPageWin() { | |
| // dialog to ask for new page nr | |
| var pn = getParameter('pn'); | |
| var gopage = window.prompt("Go to page", pn); | |
| if (gopage) { | |
| gotoPage(gopage); | |
| } | |
| } | |
| function setParamWin(param, text) { | |
| // dialog to ask for new parameter value | |
| var val = getParameter(param); | |
| var newval = window.prompt(text, val); | |
| if (newval) { | |
| setParameter(param, newval); | |
| display(); | |
| } | |
| } | |
| function showOptions(show) { | |
| // show or hide option div | |
| var elem = getElement("dloptions"); | |
| showElement(elem, show); | |
| } | |