Mercurial > hg > digilib-old
changeset 400:be66c85821ff
simplyfications
author | hertzhaft |
---|---|
date | Thu, 08 Dec 2005 13:16:43 +0100 |
parents | d20d75e6f143 |
children | dbeb240fa170 |
files | client/digitallibrary/greyskin/diginew.jsp client/digitallibrary/greyskin/dllib.js client/digitallibrary/greyskin/down.png client/digitallibrary/greyskin/down.svg client/digitallibrary/greyskin/left.svg client/digitallibrary/greyskin/options.png client/digitallibrary/greyskin/options.svg client/digitallibrary/greyskin/right.svg client/digitallibrary/greyskin/up.png client/digitallibrary/greyskin/up.svg |
diffstat | 10 files changed, 1563 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/client/digitallibrary/greyskin/diginew.jsp Thu Dec 08 13:16:43 2005 +0100 @@ -0,0 +1,551 @@ +<%@ page language="java" %><%! + // -- JSP init ------------- + + // create DocumentBean instance for all JSP requests + digilib.servlet.DocumentBean docBean = new digilib.servlet.DocumentBean(); + + // initialize DocumentBean instance in JSP init + public void jspInit() { + try { + // set servlet init-parameter + docBean.setConfig(getServletConfig()); + } catch (javax.servlet.ServletException e) { + System.out.println(e); + } + } + // -- end of JSP init ------------- +%> + +<% + // -- JSP request ------------- + + // parsing the query + // ----------------- + digilib.servlet.DigilibRequest dlRequest = new digilib.servlet.DigilibRequest(request); + docBean.setRequest(dlRequest); + // check if authentication is needed and redirect if necessary + docBean.doAuthentication(response); + // add number of pages + dlRequest.setValue("pt", docBean.getNumPages()); + // store objects for jsp:include + pageContext.setAttribute("docBean", docBean, pageContext.REQUEST_SCOPE); +%> + +<html> + +<head> + <title>Digital Document Library NG</title> + + <style type="text/css"> + + body { background-color: #E0E0E0; color: black; font-size: 8pt } + code { font-family: monospace; color: blue; } + pre { color: #006060; } + + a.icon { margin: 0px; padding: 0px; } + + img.png { border: none; } + img.mark { border: none; } + + div.button { padding: 0px; } + div.dot { position: absolute; left: -20; top: 100; visibility: hidden } + div#scaler-table { padding-right: 40px; } + + div#buttons { position: absolute; right: 5px; top: 5px; background-color: #E0E0E0; } + div#dloptions { position: absolute; right: 5px; top: 5px; background-color: #E0E0E0; visibility: hidden; } + div#zoom { position: absolute; border: 2px solid #f0cccc; visibility: hidden; } + + </style> + + <script type="text/javascript" src="baselib.js"></script> + + <script type="text/javascript" src="dllib.js"></script> + + <script language="JavaScript"> + var isOptionDivVisible = false; + var dlTarget = window.name; + var baseUrl = '<%= dlRequest.getAsString("base.url") %>'; + var toolbarEnabledURL = window.location.href; + + function resetParams() { + newParameter('fn', '', 1); + newParameter('pn', '1', 1); + newParameter('ws', '1.0', 1); + newParameter('mo', '', 1); + newParameter('mk', '', 3); + newParameter('wx', '0.0', 2); + newParameter('wy', '0.0', 2); + newParameter('ww', '1.0', 2); + newParameter('wh', '1.0', 2); + newParameter('pt', '<%= dlRequest.getAsString("pt") %>', 1); + newParameter('brgt', '0.0', 1); + newParameter('cont', '0.0', 1); + newParameter('rot', '0.0', 1); + newParameter('rgba', '', 1); + newParameter('rgbm', '', 1); + newParameter('ddpix', '', 1); + newParameter('ddpiy', '', 1); + document.id='digilib'; + } + + + function toggleOptionDiv() { + isOptionDivVisible = !isOptionDivVisible; + showOptions(isOptionDivVisible); + } + + function highlightPNG(id, on) { + var img = document.getElementById(id); + var a = img.parentNode + var div = a.parentNode; + var src = img.src; + // FIXME: IE - transparente PNGs offenbar nicht nachladbar + + // if (browserType.isIE) + // img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "');" + div.style.backgroundImage = on + ? "url('corona.png')" + : ""; + } + + // initialize image; called by body.onload + function onBodyLoaded() { + var scaler = getElement('scaler'); + var pic = getElement('pic'); + var ps = bestPicSize(scaler, 50); + var src = "../servlet/Scaler?" + getQueryString() + "&dw=" + ps.width + "&dh=" + ps.height; + pic.src = src; + dl_init(); // dl_init braucht die endgültigen Maße des pic Elements + } + + base_init(); // browser recognition + resetParams(); // default values + dl_param_init(); // parse parameter values + + </script> +</head> + +<body onload="onBodyLoaded();"> + + <!-- slot for the scaled image --> + <div id="scaler-table"> + <div id="scaler" style="visibility:visible"> + <img id="pic"></img> + </div> + </div> + + <!-- slot for the zoom --> + <div id="zoom"> + </div> + + <!-- marks as dynamically created divs with numbers or text? --> + <div id="dot0" class="dot"><img class="mark" src="../img/mark1.gif" ></div> + <div id="dot1" class="dot"><img class="mark" src="../img/mark2.gif" ></div> + <div id="dot2" class="dot"><img class="mark" src="../img/mark3.gif" ></div> + <div id="dot3" class="dot"><img class="mark" src="../img/mark4.gif" ></div> + <div id="dot4" class="dot"><img class="mark" src="../img/mark5.gif" ></div> + <div id="dot5" class="dot"><img class="mark" src="../img/mark6.gif" ></div> + <div id="dot6" class="dot"><img class="mark" src="../img/mark7.gif" ></div> + <div id="dot7" class="dot"><img class="mark" src="../img/mark8.gif" ></div> + + <div id="buttons"> + <div class="button"> + <a + class="icon" + href="javascript:getRefWin()" + > + + <img + class="png" + id="reference" + onmouseover="highlightPNG('reference', 1)" + onmouseout="highlightPNG('reference', 0)" + title="get a reference URL" + src="reference.png" + > + </a> + </div> + + <div class="button"> + <a + class="icon" + href="javascript:zoomBy(1.4)" + > + + <img + class="png" + id="zoom-in" + onmouseover="highlightPNG('zoom-in', 1)" + onmouseout="highlightPNG('zoom-in', 0)" + title="zoom in" + src="zoom-in.png" + > + </a> + </div> + + <div class="button"> + <a + class="icon" + href="javascript:zoomBy(0.7)" + > + + <img + class="png" + id="zoom-out" + onmouseover="highlightPNG('zoom-out', 1)" + onmouseout="highlightPNG('zoom-out', 0)" + title="zoom out" + src="zoom-out.png" + > + </a> + </div> + + <div class="button"> + <a + class="icon" + href="javascript:showOptions(0);zoomArea()" + > + + <img + class="png" + id="zoom-area" + onmouseover="highlightPNG('zoom-area', 1)" + onmouseout="highlightPNG('zoom-area', 0)" + title="zoom area" + src="zoom-area.png" + > + </a> + </div> + + <div class="button"> + <a + class="icon" + href="javascript:zoomFullpage()" + > + + <img + class="png" + id="zoom-full" + onmouseover="highlightPNG('zoom-full', 1)" + onmouseout="highlightPNG('zoom-full', 0)" + title="view the whole image" + src="zoom-full.png" + > + </a> + </div> + + <div class="button"> + <a + class="icon" + href="javascript:gotoPage('-1')" + > + + <img + class="png" + id="back" + onmouseover="highlightPNG('back', 1)" + onmouseout="highlightPNG('back', 0)" + title="goto previous image" + src="back.png" + > + </a> + </div> + + <div class="button"> + <a + class="icon" + href="javascript:gotoPage('+1')" + > + + <img + class="png" + id="fwd" + onmouseover="highlightPNG('fwd', 1)" + onmouseout="highlightPNG('fwd', 0)" + title="goto next image" + src="fwd.png" + > + </a> + </div> + + <div class="button"> + <a + class="icon" + href="javascript:help()" + > + + <img + class="png" + id="help" + onmouseover="highlightPNG('help', 1)" + onmouseout="highlightPNG('help', 0)" + title="help" + src="help.png" + > + </a> + </div> + + <div class="button"> + <a + class="icon" + href="javascript:toggleOptionDiv()" + > + + <img + class="png" + id="options" + onmouseover="highlightPNG('options', 1)" + onmouseout="highlightPNG('options', 0)" + title="more options" + src="options.png" + > + </a> + </div> + +</div> + +<!-- options div --> + +<div id="dloptions"> + <div class="button"> + <a + class="icon" + href="javascript:showOptions(0);setMark()" + > + + <img + class="png" + id="mark" + onmouseover="highlightPNG('mark', 1)" + onmouseout="highlightPNG('mark', 0)" + title="set a mark" + src="mark.png" + > + </a> + </div> + + <div class="button"> + <a + class="icon" + href="javascript:removeMark()" + > + + <img + class="png" + id="delmark" + onmouseover="highlightPNG('delmark', 1)" + onmouseout="highlightPNG('delmark', 0)" + title="delete the last mark" + src="delmark.png" + > + </a> + </div> + + <div class="button"> + <a + class="icon" + href="javascript:mirror('h')" + > + + <img + class="png" + id="mirror-h" + onmouseover="highlightPNG('mirror-h', 1)" + onmouseout="highlightPNG('mirror-h', 0)" + title="mirror horizontally" + src="mirror-horizontal.png" + > + </a> + </div> + + <div class="button"> + <a + class="icon" + href="javascript:mirror('v')" + > + + <img + class="png" + id="mirror-v" + onmouseover="highlightPNG('mirror-v', 1)" + onmouseout="highlightPNG('mirror-v', 0)" + title="mirror vertically" + src="mirror-vertical.png" + > + </a> + </div> + + <div class="button"> + <a + class="icon" + href="javascript:setParamWin('rot', 'Rotate (0..360) clockwise')" + > + + <img + class="png" + id="rotate" + onmouseover="highlightPNG('rotate', 1)" + onmouseout="highlightPNG('rotate', 0)" + title="rotate image" + src="rotate.png" + > + </a> + </div> + + <div class="button"> + <a + class="icon" + href="javascript:setParamWin('brgt', 'Brightness (-255..255)')" + > + + <img + class="png" + id="brightness" + onmouseover="highlightPNG('brightness', 1)" + onmouseout="highlightPNG('brightness', 0)" + title="set brightness" + src="brightness.png" + > + </a> + </div> + + <div class="button"> + <a + class="icon" + href="javascript:setParamWin('cont', 'Contrast (0..8)')" + > + + <img + class="png" + id="contrast" + onmouseover="highlightPNG('contrast', 1)" + onmouseout="highlightPNG('contrast', 0)" + title="set contrast" + src="contrast.png" + > + </a> + </div> + + <div class="button"> + <a + class="icon" + href="javascript:setParamWin('rgb', '...')" + > + + <img + class="png" + id="rgb" + onmouseover="highlightPNG('rgb', 1)" + onmouseout="highlightPNG('rgb', 0)" + title="set rgb values" + src="rgb.png" + > + </a> + </div> + + <div class="button"> + <a + class="icon" + href="javascript:setParamWin('size', '...')" + > + + <img + class="png" + id="size" + onmouseover="highlightPNG('size', 1)" + onmouseout="highlightPNG('size', 0)" + title="resize page" + src="size.png" + > + </a> + </div> + + <div class="button"> + <a + class="icon" + href="javascript:setQualityWin('Quality (0..2)')" + > + + <img + class="png" + id="quality" + onmouseover="highlightPNG('quality', 1)" + onmouseout="highlightPNG('quality', 0)" + title="set image quality" + src="quality.png" + > + </a> + </div> + + <div class="button"> + <a + class="icon" + href="javascript:gotoPageWin()" + > + + <img + class="png" + id="page" + onmouseover="highlightPNG('page', 1)" + onmouseout="highlightPNG('page', 0)" + title="specify image" + src="page.png" + > + </a> + </div> + + <div class="button"> + <a + class="icon" + href="javascript:pixelByPixel()" + > + + <img + class="png" + id="pixel-by-pixel" + onmouseover="highlightPNG('pixel-by-pixel', 1)" + onmouseout="highlightPNG('pixel-by-pixel', 0)" + title="view image pixel by pixel" + src="pixel-by-pixel.png" + > + </a> + </div> + + <div class="button"> + <a + class="icon" + href="javascript:originalSize()" + > + + <img + class="png" + id="original-size" + onmouseover="highlightPNG('original-size', 1)" + onmouseout="highlightPNG('original-size', 0)" + title="view image in original size" + src="original-size.png" + > + </a> + </div> + + <div class="button"> + <a + class="icon" + href="javascript:toggleOptionDiv()" + > + + <img + class="png" + id="options-1" + onmouseover="highlightPNG('options-1', 1)" + onmouseout="highlightPNG('options-1', 0)" + title="hide options" + src="options.png" + > + </a> + </div> +</div> + +</body> + +</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/client/digitallibrary/greyskin/dllib.js Thu Dec 08 13:16:43 2005 +0100 @@ -0,0 +1,591 @@ +/* Copyright (C) 2003,2004 IT-Group MPIWG, WTWG Uni Bern and others + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + +Authors: + Christian Luginbuehl, 01.05.2003 (first version) + DW 24.03.2004 (Changed for digiLib in Zope) + Robert Casties, 8.11.2005 + + ! Requires baselib.js ! + +*/ + + +function identify() { + // used for identifying a digilib instance + // Relato uses that function - lugi + return "Digilib 0.6"; +} +/* + * more parameter handling + */ + +function parseArea() { + // returns area Rectangle from current parameters + return new Rectangle(getParameter("wx"), getParameter("wy"), getParameter("ww"), getParameter("wh")); +} + +function setParamFromArea(rect) { + // sets digilib wx etc. from rect + setParameter("wx", cropFloat(rect.x)); + setParameter("wy", cropFloat(rect.y)); + setParameter("ww", cropFloat(rect.width)); + setParameter("wh", cropFloat(rect.height)); + return true; +} + +function parseTrafo(elem) { + // returns Transform from current dlArea and picsize + var picsize = getElementRect(elem); + var trafo = new Transform(); + // subtract area offset and size + trafo.concat(getTranslation(new Position(-dlArea.x, -dlArea.y))); + trafo.concat(getScale(new Size(1/dlArea.width, 1/dlArea.height))); + // scale to screen size + trafo.concat(getScale(picsize)); + trafo.concat(getTranslation(picsize)); + // rotate + //trafo.concat(getRotation(- getParameter("rot"), new Position(0.5*picsize.width, 0.5*picsize.height))); + // mirror + //if (hasFlag("hmir")) { + //trafo.m00 = - trafo.m00; + //} + //if (hasFlag("vmir")) { + //trafo.m11 = - trafo.m11; + //} + return trafo; +} + + +function parseMarks() { + // returns marks array from current parameters + var marks = new Array(); + var ma; + var mk = getParameter("mk"); + if (mk.indexOf(";") >= 0) { + // old format with ";" + ma = mk.split(";"); + } else { + ma = mk.split(","); + } + for (var i = 0; i < ma.length ; i++) { + var pos = ma[i].split("/"); + if (pos.length > 1) { + marks.push(new Position(pos[0], pos[1])); + } + } + return marks; +} + +function getAllMarks() { + // returns a string with all marks in query format + var marks = new Array(); + for (var i = 0; i < dlMarks.length; i++) { + marks.push(cropFloat(dlMarks[i].x) + "/" + cropFloat(dlMarks[i].y)); + } + return marks.join(","); +} + +function addMark(pos) { + // add a mark + dlMarks.push(pos); + setParameter("mk", getAllMarks()); + return true; +} + +function deleteMark() { + // delete the last mark + dlMarks.pop(); + setParameter("mk", getAllMarks()); + return true; +} + +function hasFlag(mode) { + // returns if mode flag is set + return (dlFlags[mode]); +} + +function addFlag(mode) { + // add a mode flag + dlFlags[mode] = mode; + setParameter("mo", getAllFlags()); + return true; +} + +function removeFlag(mode) { + // remove a mode flag + if (dlFlags[mode]) { + delete dlFlags[mode]; + } + setParameter("mo", getAllFlags()); + return true; +} + +function toggleFlag(mode) { + // change a mode flag + if (dlFlags[mode]) { + delete dlFlags[mode]; + } else { + dlFlags[mode] = mode; + } + setParameter("mo", getAllFlags()); + return true; +} + +function getAllFlags() { + // returns a string with all flags in query format + var fa = new Array(); + for (var f in dlFlags) { + if ((f != "")&&(dlFlags[f] != null)) { + fa.push(f); + } + } + return fa.join(","); +} + +function parseFlags() { + // sets dlFlags from the current parameters + var flags = new Object(); + var fa = getParameter("mo").split(","); + for (var i = 0; i < fa.length ; i++) { + var f = fa[i]; + if (f != "") { + flags[f] = f; + } + } + return flags; +} + + +function bestPicSize(elem, inset) { + // returns a Size with the best image size for the given element + if (! defined(inset)) { + inset = 25; + } + var ws = getWinSize(); + var es = getElementPosition(elem); + if (es) { + ws.width = ws.width - es.x - inset; + ws.height = ws.height - es.y - inset; + } + return ws; +} + +function setDLParam(e, s, relative) { + // 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, relative); + display(); + } else { + alert("ERROR: unable to process event!"); + } + return true; +} + + +/* ********************************************** + * digilib specific routines + * ******************************************** */ + + +function dl_param_init() { + // parameter initialisation before onload + if (!baseScriptVersion) { + base_init(); + } + dlScriptVersion = "1.2b"; + 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 + parseParameters(location.search.slice(1)); + // treat special parameters + dlMarks = parseMarks(); + dlArea = parseArea(); + dlFlags = parseFlags(); +} + + +function dl_init() { + // initalisation on load + if (!dlScriptVersion) { + dl_param_init(); + } + elemScaler = getElement("scaler", true); + picElem = getElement("pic", true); + if (picElem == null && elemScaler) { + // in N4 pic is in the scaler layer + picElem = elemScaler.document.images[0]; + } + if (!elemScaler) { + alert("Digilib problem: No element with id 'scaler' found"); + return false; + } + if (!picElem) { + alert("Digilib problem: No element with id 'pic' found"); + return false; + } + // give a name to the window containing digilib + if (defined(dlTarget) && (dlTarget)) { + window.name = dlTarget; + } else { + window.name = "digilib"; + } + // put the query parameters (sans "?") in the parameters array + parseParameters(location.search.slice(1)); + // treat special parameters + dlMarks = parseMarks(); + dlArea = parseArea(); + dlFlags = parseFlags(); + // wait for image to load and display marks + renderMarks(); + // done + focus(); + return; +} + + +function display(detail) { + // redisplay the page + if (! detail) { + detail = 255; + } + var queryString = getAllParameters(detail); + location.href = location.protocol + "//" + location.host + location.pathname + "?" + queryString; +} + + +/* ********************************************** + * interactive digilib functions + * ******************************************** */ + +// TO BE CHANGED +function renderMarks() { + // put the visible marks on the image + var mark_count = dlMarks.length; + // make shure the image is loaded so we know its size + if (defined(picElem.complete) && picElem.complete == false && ! browserType.isN4 ) { + setTimeout("renderMarks()", 100); + } else { + dlTrafo = parseTrafo(picElem); + for (var i = 0; i < 8; i++) { + var me = getElement("dot"+i); + if (i < mark_count) { + if (dlArea.containsPosition(dlMarks[i])) { + var mpos = dlTrafo.transform(dlMarks[i]); + // suboptimal to place -5 pixels and not half size of mark-image + mpos.x = mpos.x -5; + mpos.y = mpos.y -5; + moveElement(me, mpos); + showElement(me, true); + } + } else { + // hide the other marks + showElement(me, false); + } + } + } +} + + +function setMark(reload) { + // add a mark where clicked + if ( dlMarks.length > 7 ) { + alert("Only 8 marks are possible at the moment!"); + return; + } + window.focus(); + + function markEvent(evt) { + // event handler adding a new mark + unregisterEvent("mousedown", elemScaler, markEvent); + var p = dlTrafo.invtransform(evtPosition(evt)); + addMark(p); + if (defined(reload)&&(!reload)) { + // don't redisplay + renderMarks(); + return; + } + display(); + } + + // starting event capture + registerEvent("mousedown", elemScaler, markEvent); +} + + +function removeMark(reload) { + // remove the last mark + deleteMark(); + if (defined(reload)&&(!reload)) { + // don't redisplay + renderMarks(); + return; + } + display(); +} + + +function zoomArea() { + var click = 1; + var pt1, pt2; + window.focus(); + var zoomdiv = getElement("zoom"); + + function zoomClick(evt) { + // mouse click handler + if (click == 1) { + // first click -- start moving + click = 2; + pt1 = evtPosition(evt); + moveElement(zoomdiv, Rectangle(pt1.x, pt1.y, 0, 0)); + showElement(zoomdiv, true); + // show moving + registerEvent("mousemove", elemScaler, zoomMove); + registerEvent("mousemove", zoomdiv, zoomMove); + // enable drag-to-zoom + registerEvent("mouseup", elemScaler, zoomClick); + registerEvent("mouseup", zoomdiv, zoomClick); + } else { + // second click -- end moving + pt2 = evtPosition(evt); + showElement(zoomdiv, false); + unregisterEvent("mousemove", elemScaler, zoomMove); + unregisterEvent("mousemove", zoomdiv, zoomMove); + unregisterEvent("mousedown", elemScaler, zoomClick); + unregisterEvent("mousedown", zoomdiv, zoomClick); + var p1 = dlTrafo.invtransform(pt1); + var p2 = dlTrafo.invtransform(pt2); + var ww = p2.x-p1.x; + var wh = p2.y-p1.y; + if ((ww > 0)&&(wh > 0)) { + setParameter("wx", cropFloat(p1.x)); + setParameter("wy", cropFloat(p1.y)); + setParameter("ww", cropFloat(ww)); + setParameter("wh", cropFloat(wh)); + parseArea(); + // zoomed is always fit + setParameter("ws", 1); + display(); + } + } + } + + function zoomMove(evt) { + // mouse move handler + pt2 = evtPosition(evt); + // restrict marks to move right and down + moveElement(zoomdiv, Rectangle(pt1.x, pt1.y, Math.abs(pt1.x - pt2.x), Math.abs(pt1.y - pt2.y))); + } + + // starting event capture + registerEvent("mousedown", elemScaler, zoomClick); + registerEvent("mousedown", zoomdiv, zoomClick); +} + +function zoomBy(factor) { + // zooms by the given factor + var newarea = dlArea.copy(); + newarea.width /= factor; + newarea.height /= factor; + newarea.x -= 0.5 * (newarea.width - dlArea.width); + newarea.y -= 0.5 * (newarea.height - dlArea.height); + newarea = dlMaxArea.fit(newarea); + setParamFromArea(newarea); + display(); +} + + +function zoomFullpage() { + // zooms out to show the whole image + setParameter("wx", 0.0); + setParameter("wy", 0.0); + setParameter("ww", 1.0); + setParameter("wh", 1.0); + display(); +} + + +function moveCenter() { + // move visible area so that it's centered around the clicked point + if ( (dlArea.width == 1.0) && (dlArea.height == 1.0) ) { + // nothing to do + return; + } + window.focus(); + + function moveCenterEvent(evt) { + // move to handler + unregisterEvent("mousedown", elemScaler, moveCenterEvent); + var pt = dlTrafo.invtransform(evtPosition(evt)); + var newarea = new Rectangle(pt.x-0.5*dlArea.width, pt.y-0.5*dlArea.height, dlArea.width, dlArea.height); + newarea = dlMaxArea.fit(newarea); + // set parameters + setParamFromArea(newarea); + parseArea(); + display(); + } + + // starting event capture + 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() { + // returns a reference to the current digilib set + if (! baseUrl) { + var baseUrl = location.protocol + "//" + location.host + location.pathname; + } + var hyperlinkRef = baseUrl; + var par = getAllParameters(7+16); // all without ddpi, pt + if (par.length > 0) { + hyperlinkRef += "?" + par; + } + return hyperlinkRef; +} + +function getRefWin(type, msg) { + // shows an alert with a reference to the current digilib set + if (! msg) { + msg = "Link for HTML documents"; + } + 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, keep) { + // goto given page nr (+/-: relative) + var oldpn = parseInt(getParameter("pn")); + setParameter("pn", gopage, true); + var pn = parseInt(getParameter("pn")); + if (pn < 1) { + alert("No such page! (Page number too low)"); + setParameter("pn", oldpn); + return; + } + if (hasParameter("pt")) { + pt = parseInt(getParameter("pt")) + if (pn > pt) { + alert("No such page! (Page number too high)"); + setParameter("pn", oldpn); + return; + } + } + if (keep) { + display(15+32); // all, no mark + } else { + display(3+32); // fn, pn, ws, mo + pt + } +} + +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, relative) { + // dialog to ask for new parameter value + var val = getParameter(param); + var newval = window.prompt(text, val); + if (newval) { + setParameter(param, newval, relative); + display(); + } +} + +function showOptions(show) { + // show or hide option div + var elem = getElement("dloptions"); + showElement(elem, show); +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/client/digitallibrary/greyskin/down.svg Thu Dec 08 13:16:43 2005 +0100 @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://web.resource.org/cc/" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2388" + sodipodi:version="0.32" + inkscape:version="0.43" + sodipodi:docbase="C:\src\ECHO\digilib\client\digitallibrary\greyskin" + sodipodi:docname="down.svg" + inkscape:export-filename="C:\src\ECHO\digilib\client\digitallibrary\greyskin\down.png" + inkscape:export-xdpi="60.000000" + inkscape:export-ydpi="60.000000" + version="1.0"> + <defs + id="defs2390"> + <linearGradient + id="linearGradient3124"> + <stop + id="stop7644" + offset="0.0000000" + style="stop-color:#000000;stop-opacity:0.19587629;" /> + <stop + style="stop-color:#545454;stop-opacity:0.22680412;" + offset="0.50000000" + id="stop7646" /> + <stop + style="stop-color:#5f5f5f;stop-opacity:1.0000000;" + offset="1.0000000" + id="stop3128" /> + </linearGradient> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="7" + inkscape:cx="24" + inkscape:cy="30.235294" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="830" + inkscape:window-height="540" + inkscape:window-x="17" + inkscape:window-y="22" /> + <metadata + id="metadata2393"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer" + style="display:inline"> + <path + style="opacity:1;fill:#707070;fill-opacity:0.35526315;fill-rule:evenodd;stroke:#000000;stroke-width:0.52918273;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.50331128" + d="M 23.6875,42.214557 C 13.517688,41.821426 5.3749998,33.298347 5.375,22.870807 C 5.375,12.193005 13.927192,3.5270576 24.4375,3.5270566 C 31.499113,3.5270566 37.650231,7.4400376 40.9375,13.245807 L 24.5,13.245807 L 8,13.245807 L 16.25,27.527057 L 24.5,41.808307 L 32.75,27.527057 L 40.96875,13.308307 C 42.552395,16.129468 43.46875,19.392821 43.46875,22.870807 C 43.46875,33.548609 34.947807,42.214557 24.4375,42.214557 C 24.191165,42.214557 23.931575,42.223992 23.6875,42.214557 z " + id="path2396" /> + </g> +</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/client/digitallibrary/greyskin/left.svg Thu Dec 08 13:16:43 2005 +0100 @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://web.resource.org/cc/" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2388" + sodipodi:version="0.32" + inkscape:version="0.43" + sodipodi:docbase="C:\src\ECHO\digilib\client\digitallibrary\greyskin" + sodipodi:docname="left.svg" + inkscape:export-filename="C:\src\ECHO\digilib\client\digitallibrary\greyskin\left.png" + inkscape:export-xdpi="60.000000" + inkscape:export-ydpi="60.000000" + version="1.0"> + <defs + id="defs2390"> + <linearGradient + id="linearGradient3124"> + <stop + id="stop7644" + offset="0.0000000" + style="stop-color:#000000;stop-opacity:0.19587629;" /> + <stop + style="stop-color:#545454;stop-opacity:0.22680412;" + offset="0.50000000" + id="stop7646" /> + <stop + style="stop-color:#5f5f5f;stop-opacity:1.0000000;" + offset="1.0000000" + id="stop3128" /> + </linearGradient> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="7" + inkscape:cx="24" + inkscape:cy="30.235294" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="830" + inkscape:window-height="540" + inkscape:window-x="17" + inkscape:window-y="22" /> + <metadata + id="metadata2393"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer" + style="display:inline"> + <path + style="opacity:1;fill:#707070;fill-opacity:0.35526315;fill-rule:evenodd;stroke:#000000;stroke-width:0.52918273;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.50331128" + d="M 5.0802215,22.138528 C 5.4733525,11.968716 13.996431,3.8260283 24.423971,3.8260285 C 35.101773,3.8260285 43.767721,12.37822 43.767722,22.888528 C 43.767722,29.950141 39.854741,36.101259 34.048971,39.388528 L 34.048971,22.951028 L 34.048971,6.4510285 L 19.767721,14.701028 L 5.4864715,22.951028 L 19.767721,31.201028 L 33.986471,39.419778 C 31.16531,41.003423 27.901957,41.919778 24.423971,41.919778 C 13.746169,41.919778 5.0802215,33.398835 5.0802215,22.888528 C 5.0802215,22.642193 5.0707865,22.382603 5.0802215,22.138528 z " + id="path2396" /> + </g> +</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/client/digitallibrary/greyskin/options.svg Thu Dec 08 13:16:43 2005 +0100 @@ -0,0 +1,102 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://web.resource.org/cc/" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48px" + height="48px" + id="svg2388" + sodipodi:version="0.32" + inkscape:version="0.43" + sodipodi:docbase="C:\src\ECHO\digilib\client\digitallibrary\greyskin" + sodipodi:docname="options.svg" + inkscape:export-filename="C:\src\ECHO\digilib\client\digitallibrary\greyskin\options.png" + inkscape:export-xdpi="60.000000" + inkscape:export-ydpi="60.000000"> + <defs + id="defs2390"> + <linearGradient + id="linearGradient3124"> + <stop + id="stop7644" + offset="0.0000000" + style="stop-color:#000000;stop-opacity:0.19587629;" /> + <stop + style="stop-color:#545454;stop-opacity:0.22680412;" + offset="0.50000000" + id="stop7646" /> + <stop + style="stop-color:#5f5f5f;stop-opacity:1.0000000;" + offset="1.0000000" + id="stop3128" /> + </linearGradient> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="7" + inkscape:cx="24" + inkscape:cy="20" + inkscape:current-layer="layer3" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="830" + inkscape:window-height="540" + inkscape:window-x="17" + inkscape:window-y="22" /> + <metadata + id="metadata2393"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + sodipodi:type="arc" + style="opacity:1.0000000;fill:#707070;fill-opacity:0.35526314;fill-rule:evenodd;stroke:#000000;stroke-width:0.52918273;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:0.50331128" + id="path2396" + sodipodi:cx="30.214285" + sodipodi:cy="26.214285" + sodipodi:rx="17.928572" + sodipodi:ry="18.214285" + d="M 48.142857 26.214285 A 17.928572 18.214285 0 1 1 12.285713,26.214285 A 17.928572 18.214285 0 1 1 48.142857 26.214285 z" + transform="matrix(1.062015,0.000000,0.000000,1.062015,-7.659466,-4.965116)" /> + </g> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="l2" + style="display:none"> + <path + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.23305082;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 16.866525,15.295096 L 16.866525,31.383475 L 30.841102,23.163136 L 16.866525,15.295096 z " + id="path7614" /> + <path + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 33,13.571429 L 33,32.428571" + id="path1367" /> + </g> + <g + inkscape:groupmode="layer" + id="layer3" + inkscape:label="l3" + style="display:inline" /> +</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/client/digitallibrary/greyskin/right.svg Thu Dec 08 13:16:43 2005 +0100 @@ -0,0 +1,82 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://web.resource.org/cc/" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2388" + sodipodi:version="0.32" + inkscape:version="0.43" + sodipodi:docbase="C:\src\ECHO\digilib\client\digitallibrary\greyskin" + sodipodi:docname="right.svg" + inkscape:export-filename="C:\src\ECHO\digilib\client\digitallibrary\greyskin\right.png" + inkscape:export-xdpi="60.000000" + inkscape:export-ydpi="60.000000" + version="1.0"> + <defs + id="defs2390"> + <linearGradient + id="linearGradient3124"> + <stop + id="stop7644" + offset="0.0000000" + style="stop-color:#000000;stop-opacity:0.19587629;" /> + <stop + style="stop-color:#545454;stop-opacity:0.22680412;" + offset="0.50000000" + id="stop7646" /> + <stop + style="stop-color:#5f5f5f;stop-opacity:1.0000000;" + offset="1.0000000" + id="stop3128" /> + </linearGradient> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="7" + inkscape:cx="24" + inkscape:cy="30.235294" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="830" + inkscape:window-height="540" + inkscape:window-x="17" + inkscape:window-y="22" /> + <metadata + id="metadata2393"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer" + style="display:inline"> + <path + style="opacity:1;fill:#707070;fill-opacity:0.35526315;fill-rule:evenodd;stroke:#000000;stroke-width:0.52918273;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.50331128" + d="M 43.763529,23.607278 C 43.370398,33.77709 34.847319,41.919778 24.419779,41.919778 C 13.741977,41.919778 5.0760293,33.367586 5.0760283,22.857278 C 5.0760283,15.795665 8.9890093,9.644547 14.794779,6.3572783 L 14.794779,22.794778 L 14.794779,39.294778 L 29.076029,31.044778 L 43.357279,22.794778 L 29.076029,14.544778 L 14.857279,6.3260283 C 17.67844,4.7423833 20.941793,3.8260283 24.419779,3.8260283 C 35.097581,3.8260283 43.763529,12.346971 43.763529,22.857278 C 43.763529,23.103613 43.772964,23.363203 43.763529,23.607278 z " + id="path2396" + inkscape:export-filename="C:\src\ECHO\digilib\client\digitallibrary\greyskin\right.png" + inkscape:export-xdpi="60" + inkscape:export-ydpi="60" /> + </g> +</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/client/digitallibrary/greyskin/up.svg Thu Dec 08 13:16:43 2005 +0100 @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://web.resource.org/cc/" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2388" + sodipodi:version="0.32" + inkscape:version="0.43" + sodipodi:docbase="C:\src\ECHO\digilib\client\digitallibrary\greyskin" + sodipodi:docname="up.svg" + inkscape:export-filename="C:\src\ECHO\digilib\client\digitallibrary\greyskin\up.png" + inkscape:export-xdpi="60.000000" + inkscape:export-ydpi="60.000000" + version="1.0"> + <defs + id="defs2390"> + <linearGradient + id="linearGradient3124"> + <stop + id="stop7644" + offset="0.0000000" + style="stop-color:#000000;stop-opacity:0.19587629;" /> + <stop + style="stop-color:#545454;stop-opacity:0.22680412;" + offset="0.50000000" + id="stop7646" /> + <stop + style="stop-color:#5f5f5f;stop-opacity:1.0000000;" + offset="1.0000000" + id="stop3128" /> + </linearGradient> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="7" + inkscape:cx="24" + inkscape:cy="30.235294" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="830" + inkscape:window-height="540" + inkscape:window-x="17" + inkscape:window-y="22" /> + <metadata + id="metadata2393"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer" + style="display:inline"> + <path + style="opacity:1;fill:#707070;fill-opacity:0.35526315;fill-rule:evenodd;stroke:#000000;stroke-width:0.52918273;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.50331128" + d="M 23.6875 3.53125 C 13.517688 3.9243803 5.3749998 12.44746 5.375 22.875 C 5.375 33.552802 13.927192 42.218749 24.4375 42.21875 C 31.499113 42.21875 37.650231 38.305769 40.9375 32.5 L 24.5 32.5 L 8 32.5 L 16.25 18.21875 L 24.5 3.9375 L 32.75 18.21875 L 40.96875 32.4375 C 42.552395 29.616339 43.46875 26.352986 43.46875 22.875 C 43.46875 12.197198 34.947807 3.53125 24.4375 3.53125 C 24.191165 3.53125 23.931575 3.5218149 23.6875 3.53125 z " + id="path2396" /> + </g> +</svg>