Mercurial > hg > digilib-old
changeset 35:aa19a358e58e
added documentation for new digilib/client version
author | luginbue |
---|---|
date | Thu, 21 Feb 2002 02:29:51 +0100 |
parents | 84a481a388bb |
children | 232fd1231217 |
files | client/doc/digilib_client.txt client/doc/dokumentation_digilib.html client/doc/dokumentation_digilib.txt |
diffstat | 3 files changed, 186 insertions(+), 441 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/client/doc/digilib_client.txt Thu Feb 21 02:29:51 2002 +0100 @@ -0,0 +1,186 @@ +DIGILIB-CLIENT +============== + + +Table of contents +----------------- + +1 Introduction + +2 Files + +2.1 digilib.jsp +2.2 dlImage.jsp +2.3 navigation_XX.js +2.4 dlMenu.html + +2.5 Modules +2.5.1 pdfMaker.js +2.5.2 pagesTotal.js + +3 Future + +4 Information + +4.1 Supported browsers and platforms + +1 Introduction +-------------- + +Digilib is a client-server-software that transforms high-resolution images to formats that are acceptable for internet network connetions. the client software is based on HTML and JavaScript so that everybody can use it with a normal browser. To see in full detail which browsers and platforms are supported check chapter 4.1. This software provides lots of features like zooming areas of pictures, setting marks to the pictures, jumping to different pictures while always being able to generate URLs so that people can distibute these and everybody can see the same picture with ist marks. +It has been put lots of attention providing files that are as intependant of each other as possible so that embedding it in other kind of pages will be as simple as it can be. Stuff like providing modules or a different menubar are just some of the stuff you can easily do without having to change the files provided. + +Some of the the client-files contain JSP code, to do some serverside configuration. Because of the fact that the serverside software has to use a java module for the web-server there is no need to install more stuff than what is needed by the server-scripts. + +This software is still work in progress and it is quite probable that lots of stuff will change in the future, so check this file with every new version of software you downloaded. + + +2 Files +------- + +There are quite some files the client software needs to run all the interactive user-interface. To give you a detailed view of the files there is a subsection provided in this document explaining what each file does and how it interacts with the others. + +2.1 digilib.jsp +--------------- + +This is the file you will request from the server and which will call the other files. The main purposes of this file are: + - User authentication when wanting to access restriced documents. Check out the + serverside documentation for detailed explanation of how to set it up. + - Converting the query-string to the servlet style parameters (because of some + historical reasons the two parameter-sets are not equal and a project at the + Univerity of Berne based on digilib requires the first kind of parameters. So + for the moment we have to live with it...) + - Building the frameset for the different frames like the one actually holding + the image, one for navigation, etc. . It's up to the developer of a certain + application to change it to its needs. + +The crutial point in this file is the way the query on the URL (get-method) is made. After 'digilib.jsp?' there is a comma-separated list of parameters. It is to say that principally all of them are optional, but the first of them describing the url of the image-directory should really be set. Here is the list of the diffenent attributes in digilib.jsp?[att0]+[att1]+[att2]+[att3]+[att4]+ ... +[att8] + + [att0] Directory where the image can be found (check the documentation for + serverside). + [att1] The page number (equals the index of the image in the sorted directory). + [att2] The dimension relative to the visible height/width in the frame (1.0 means + that the image fits exactly into the frame, while 2.0 means twice that size). + [att3] Attribute to pass extra options to the servlet (for example 'fit' means that + normally not resized gif-images will be scaled). + [att4] Here are the marks passed separated by ';', while the coordinates are + separated with '/'. The cooridnates are in a relative format (0.0 - 1.0). + Example ... +0.33/0.5;0.25/0.25+ ... means that there are two marks one a + third from the left and half down the image and the second a quarter from left + and top of the image. + [att5] Relative (0.0 - 1.0) value giving the most left pixels visible in the zoomed + image. + [att6] Dito with the topmost pixels. + [att7] Gives the visible width of the image (also 0.0 - 1.0). + [att8] Same with the height. + +It is important to understand that all cooridnates that are used by digilib are passed as relative values where the width/height of an image is 1. This way it is possible that the images are displayed the same way on all kind of different screen-sizes and so making opening the possibility of sharing a url between people that will see the same on their screens. + +2.2 dlImage.jsp +--------------- + +The parameterlist in 'dlImage.jsp' is quite the same as in 'digilib.jsp' but is represented in another format. As in chapter 2.1 we are discussing here the parameterlist. The parameters are no longer separated with the plus-sign put with an ampersand '&', which is the official way of passing different parameters through the URL. The parameters have all a name followed by a value, like ' .../dlImage.jsp?fn=histbot/botany&pn=3& ... '. I will give you now a list of parameters dlImage.jsp understands by default by indication the name and its equivalent in digilib.jsp and if needed some special comments. It is possible and the somehow the aim of dlImage to pass more parameters to this file for additional functionality. Check out section 2.5.1 where is a good example of how to modify dlImage.jsp for adding new functionality. + + fn = att0 + pn = att1 + ws = att2 + mo = att3 + mk = att4 + wx = att5 + wy = att6 + ww = att7 + wh = att8 + + dx = Width of the frame containing the to be displayed image in pixels. + dh = Dito with the height. + +DlImage.jsp can react in two completely different ways on a request. When requesting the file it checks whether the width and height of the frame are passed as parameters in the URL. This is not the case on every first view of a session. If the dimensions are not set, then dlImage sends a dummy page to the client, calculates the width and height of the frame (which is only possible with a correct html-file) and resends the request to dlImage.jsp this time with the indicated dimensions. + +The other way dlImage.jsp reacts is its noraml reaction. This means that it parses the parameterslist and fills in some default values if they are missing (check out the source-code to see them). Then the file is going to include some script files that do offer the functionality. Part of these JavaScript-files are browser dependant, some are not. The most important files are named with navigation_XX.js where XX is a shortcut for the browser. The other files (the ones not browser-dependant) are some sample modules that are discussed in section 2.5. +Then it is time to build the actual HTML for the frame. There is one layer holding the picture (the way the parameters should be passed is described in the serverside dokumentaion). The layers named 'dotX' are the layers holding the marks, the ones named 'eckX' are the corners when zooming a rectangle. +Last but not least the parameters are passed to the navigation-script or the the module using them (<body bgcolor="#666666" onload='init_XXXXX("<%= fn ... ")'>). + +2.3 navigation_XX.js +-------------------- + +Let's look at the crucail points about navigation_XX.js-files. Most important is that the parameters passed to the init-function are stored in an array globally accesible (the code in init shows this). The name of the array is 'att'. There is also a function called 'loadPicture' that puts together a new URL (dlImage.jsp?...) for loading a new picture or another part of the same. Then we have lots of functions dealing with different parts of the digilib functionality: + + backPage Loading the previous picture in the directory + nextPage Loading the next picture in the directory + page Loading a picture in the same directory by index + digicat Loading a new window containing thumbnails of images in the directoy + (some closely related project called 'digiCat') + ref Generating HTML- or LaTeX-style links for the special part of picture + including marks to build into other documents. The URL is made with + digilib.jsp?...+... . + mark Sets a mark to the current picture + zoomArea Zooms an area of the current picture + zoomPoint Zooms in around the selected point on the picture + moveTo Moves the center of a image area to this point while maintaining the same + zooming grade (sometimes this is known as 'pan') + scale Scales an image relative to the dimensions of the image-frame (normally + the image fits right into it) + +The other functions are helpers that are should not be directly accessed from outside the frame. + +2.4 dlMenu.html +--------------- + +This file generates the navigation-frame with buttons and menus. From this point the calls are made to navigation_XX.js. Please consider this frame as a sample the we at the University of Berne are currently using. If you are good in graphics design feel free to create your own buttons. +The files related to dlMenu.html are in a subdirectory called 'buttons' where the gif-images are stored and also the menu.js-scripts handling the menus. + +2.5 Modules +----------- + +The modules form a very important part of the whole project. This software aims to be easy to upgrade with new functionality. Because of the fact that JavaScript is not a full featured programming language modularisation in so that intuitive and simple. Still we have found a way of providing enough freedom to build new modules and adding features to digilib. The example of two sample modules (that are nevertheless useful), we would like to show how we think one should implement another module to add new functionality. + +2.5.1 pdfMaker.js + +In the subdirectory 'modules' is a very simple module called pdfMaker.js. This very basic module only has one function (makePDF) that does nothing more than giving a prompt where one can enter a number of image-indices and call a serverside script that creates a PDF-file with the different picures. To make this module work it has first to be loaded by dlImage.jsp. Because it is browser-independant there is only one version of it. Aften being loaded it has access to the whole 'att'-array which is quite stupidely shown in makePDF by giving the index of the currently displayed image as default value. +One other thing that has to be done is to enter a new button to navigation.html so that the new function can be called... quite logic i know. + +2.5.2 pagesTotal.js + +'pagesTotal.js' is a lot more complicated than the first module and shows some more things to think of when making a module. It aims to show the current pagenumber (index) and the total number of images in the directory in a separated frame. The first thing that has to be done is implementing a new frame in diglib.jsp to provide space to write down the information. +As we know the current index is stored in the parameter 'pn' in dlImage.jsp and easily accessible in the scripts with 'att[1]', where as the total number of pages is only known by the server. To get this information one has to make a call to a server function. This is done in digilib.jsp (query += "&pt=" + DB.getNumPages(request);) the resulting number that should not cheange during a session is stored in a new parameter 'pt' that is sent in the parameter-list to dlImage.jsp. +In dlImage we have to load the module (configure 2.5.1). Next thing is to make the 'pt' accessible through all the scripts (adding a new cell to the 'att'-array) by creating an init'function in the module. While the original function is called 'init' the one in pagesTotal is called 'init_pagesTotal' and acception the additional parameter 'pt'. In 'init_pagesTotal' there is a call to the original 'init' with all parameters but 'pt' and so filling the first nine cells of the att-array. Then it's time to add a new cell with 'pt' as its value. Further on there is a call to function 'pagesTotal' that writes the data into the new frame. +As you can see there are some functions overriding the original ones. 'nextPage', 'page' and 'loadPicture' are rewritten in the module to make use of the new functionality. In the first two functions we can make now some additional checks that we cannot run past the last image. 'loadPicture' has to be improved so that 'pt' will be in the URL sent when loading a new picture or area. + + +3 Future +-------- + +There are some future plans concerning the cilent software. While there is no actual list of things that have to be done, but some vague ideas of improvements: + + - Cleaning up the different stiles of holding the parameters. + - Makeing some handy generic functions like mouseclicks or mousemoves so that they can + be used in modules. + - Makeing the implementation of modules clearer, easier and safer than it is now. In + JavaScript there are some (rudimentary?) object-oriented ideas that might help + improving it - but I didn't got it until now. + - Make it work on more platforms/browsers. Lots of trial and error has to be done to + make it work with 'Opera'. + - You can always make the code clearer, smaller, better, faster, ... :-) + + +4 Information +------------- + +4.1 Supported browsers and platforms +------------------------------------ + +Here is a very incomplete list of browsers and platforms known to work with digilib. We provide three different navigation-scripts to work with different implementations of JavaScript in different browsers. These are Netscape 4, Internet Explorer (working on versions 4 - 6) and the Mozilla5-engine. Due to some bugs in the browsers and special behaviours of different platforms we cannot garantee that digilib works on every platform supported by for example the Mozilla5-engine. Anyone having success on a different platform than the ones indicated below, please send a note. + +- Netscape 4.7x (Windows, MacOS 9.0/9.1, MacOS X, Linux, Solaris) +- Mozilla 0.9.x (Windows, Linux, MacOS X) +- Internet Explorer 4.01+ (Windows) +- Internet Explorer 5 (MacOS 9.0/9.1, MacOS X) + +It is known and already mentioned that 'Opera' is currently not supported by digilib, but still this is some task that is planned for the future. + + +------------------------------------------------------------------------------------------- +University of Berne - Switzerland +History and Philosophy of Science + +18.02.2002 Christian Luginbuehl (luginbuehl@student.unibe.ch)
--- a/client/doc/dokumentation_digilib.html Thu Feb 21 02:27:06 2002 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,153 +0,0 @@ -<html> -<head> -<title>Untitled Document</title> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> -</head> - -<body bgcolor="#FFFFFF" text="#000000"> -<h1>Digital Document Library</h1> -<h4> </h4> -<table border="0" cellspacing="3" width="573"> - <tr> - <td> - <h4>Stand:</h4> - </td> - <td> - <h4>27. März 2001</h4> - </td> - </tr> - <tr> - <td> - <h4> </h4> - </td> - <td> - <h4> </h4> - </td> - </tr> - <tr> - <td> - <h4>Leitung:</h4> - </td> - <td> - <h4>Gerd Grasshoff (<a href="mailto:gerd.grasshoff@philo.unibe.ch">gerd.grasshoff@philo.unibe.ch</a>)</h4> - </td> - </tr> - <tr> - <td> - <h4>Autor:</h4> - </td> - <td> - <h4>Christian Luginbühl (<a href="mailto:luginbuehl@student.unibe.ch">luginbuehl@student.unibe.ch</a>)</h4> - </td> - </tr> -</table> -<h3>Inhalt</h3> -<ol> - <li>Einführung</li> - <li>Filestruktur</li> - <li>Files</li> -</ol> -<h3>1. Einführung</h3> -<p>Das Projekt Digital Document Library hat zum Ziel, "Dokumente"mit - Heilfe eines Web-Browsers anschauen zu können. Diese Dokumente sind hochaufgelöste - Bilddateien, die auf einem Server gespeichert sind. Um der Benutzerin, dem Benutzer - die Möglichkeit einer raschen Konsultation der Daten liefern zu können, - müssen diese Bilddaten auf eine vernünftige Grösse verkleinert - und an die Anfragenden geschickt werden. Weiter sollen den Usern Hilfsmittel - zur Verfügung stehen um in diesen Seiten zu navigieren. Diese Hilfsmittel - bestehen aus Funktionen um zwischen verschiedenen Seiten hin und her zu wechseln, - Ausschnitte aus einem Bild zu zoomen und der Möglichkeit Markierungen zu - setzen. Ein weiter wichtiges Feature dieses Programms ist es, Referenzen von - Seiten (inkl. Ausschnitte und Markierungen) verfügbar zu machen, die dann - in beliebiegen anderen Dokumenten eingebaut werden können. Sofern die Lesenden - dieser Dokumente dann über einen Anschluss ins Internet verfügen, - können diese Referenzen direkt konsultiert werden und so die Digital Document - Library als grosse Quelltextsammlung gebraucht werden.</p> -<h3>2. Filestruktur</h3> -<p>Die Digital Document Library ist als Client/Server-Modell aufgebaut, wobei - an dieser Stelle hauptsächlich die Clientseite beschrieben wird. Zu einem - besseren Verständnis ist nun folgend eine Skizze mit den verschiedenen - Files und Verzeichnissen anfügt.</p> -<p align="left"><img src="Digilib.gif" width="691" height="603" border="0" vspace="20" hspace="20"></p> -<p align="left">Da JavaScript auf den verschiedenen verfügbaren Browsern - nicht genau gleich implementiert wurde und Digilib auf dieser Scriptsprache - aufsetzt, ist es wichtig in digilib.html eine geeignete Version von navigation_XX.js - zu finden. Das XX wird als Variable für unterschiedliche Anpassungen an - die Browser. Momentan sind Netscape 4 (navigation_n4.js) und Netscape 6 (navigation_n6.js) - unterstützt.<br> - Beim Erstellen der Struktur wurde darauf geachtet, dass das Layout und die tatsächliche - Funktionalität voneinander getrennt sind. Dies ermöglicht eine besstmögliche - Portabilität des Codes, so dass es möglich ist, Digilib für spezielle - Anwendungen anzupassen (vgl. Compago, Universität Bern).</p> -<h3 align="left">3. Files</h3> -<h4>3.1 digilib.html</h4> -<p>Dies ist die Schnittstelle zwischen Layout und Funktion von Digilib. Die Aufgaben - dieser Datei sind, das Laden der richtigen navigation_XX.js-Datei und das Anpassen - des Layouts. Hauptaufgabe jedoch ist das Lesen der Parameter aus der URL. digilib.html - ist so aufgebaut, dass ein Bild (inkl. Ausschnitte und Markierungen) vollständig - über Parameter in der URL angegeben werden kann. Nun folgend ist eine Liste - mit allen möglichen Parametern, wobei nur gerade der erste gegeben sein - muss - alle andern haben Defaultwerte, die in Klammern angegeben sind:</p> -<pre>http://penelope.uni.../digitallibrary/digilib.html?att0+[att1]+[att2]+...+[att8]</pre> -<ul> - <li><b>att0</b> gibt das Verzeichnis an, in dem das Bild gespeichert ist.</li> - <li><b>att1</b> (1) gibt die Seitenzahl des Bildes an. Diese Zahl bezieht sich - nicht auf die Buchseite, sondern zeigt auf die x-te Datei im unter att0 angegebenen - Verzeichnis.</li> - <li><b>att2</b> (1) ist der Skalierungsfaktor. Ein Faktor von 1 zoomt das Bild - auf Framegrösse, 2 macht das Bild doppelt so hoch und breit.</li> - <li><b>att3</b> ("") ist für zusätzliche Kommandos an das - Servlet gedacht und per default leer. Einziges unterstütztes Argument - ist hier "f" um das Servlet anzuweisen auch gif-Images zu zoomen.</li> - <li><b>att4</b> (0/0) enthält die Informationen für Markierungspunkte. - Die x- und y-Koordinate verden mit "/" getrennt, verschiedene Markierungen - mit ";" (es sind bis zu 8 möglich). Die Makrierungen werden - relativ zur Bildbreite und -höhe von 0 bis 1 angegeben (0/0 wird nicht - gezeichnet).</li> - <li><b>att5, att6</b> (0, 0) geben die linke ober Ecke des gewünschten - Ausschnitts an (ebenfalls relativ - vgl. att4).</li> - <li><b>att7, att8</b> (1, 1) geben die relative Breite bzw. Höhe des Ausschnitts - an. (Standardmässig sind die Parameter so gesetzt, dass das ganze Bild - angezeigt wird).</li> -</ul> -<p>Diese Parameter werden von digilib.html als ein Block gelesen und an navigation_XX - weitergeleitet, wo dieser Block dann auseinander genommen und im richitgen Format - gespeichert wird.</p> -<h4>3.2 navigation.html</h4> -<p>Diese Datei lädt fw_menu.js, mit Funktionen für Events bei den Knöpfen - und Menus. Weiter ist hier das Layout der Navigationsleiste festgelegt und die - Texte für die Kontexthilfe sind hier gespeichert.</p> -<h4>3.3 fw_menu.js</h4> -<p>In dieser von Fireworks generierten JavaScript-Datei werden die Events abgearbeitet, - die bei Mausbewegungen und -klicks über den Knöpfen gesendet werden. - In dieser Datei ist auch eine Funktion für die kantextsensitive Hilfe der - einzelnen Knöpfe gespeichert. Wenn sie eingeschaltet ist, dann wird beim - Überfahren der Knöpfe ein kleines Fenster geöffnet, in dem kurz - die Funktion und der Gebrauch dieses Knopfes erläutert.<br> -</p> -<h4>3.4 navigation_XX.js</h4> -<p>Diese Datei bildet das Kernstück des Digilib-Clients. Hier werden die - Funktionen angeboten um Seiten zu wechseln, Makierungen zu setzen, Referenzen - zu erzeugen und Ausschnitte zu zoomen. Weiter werden hier die Parameter aus - digilib.html überprüft und gespeichert, die Anfrage ans Servlet gemacht, - wenn ein neuer Ausschnitt bzw ein neues Bild gewünscht wird und dieses - wird dann ebenfalls von dieser Datei aus im Browser ausgegeben.<br> - Es gibt zwei wichtige globale Variablen in dieser Datei:</p> -<ul> - <li><b>whichFrame:</b> Diese Variable gibt an, in welchem Frame die erhaltenen - Bilder dargestellt werden sollen. Man hat so die Möglichkeit von aussen - auf diese Variable zuzugreiffen und so Anpassungen machen, wenn man ein anderes - Layout will (Bsp. Vergleichsbildschirm von Compago, Universität Bern). - Das Format ist nach passendem DOM (Document Object Model - vgl. <a href="http://www.w3c.org">www.w3c.org</a>) - als relativer Pfad von der Stelle anzugeben, wo navigation_XX.js geladen wurde.</li> - <li><b>att-Array: </b>In diesem Array sind die einzelnen Parameter gespeichert - wie sie in Kapitel 3.1 aufgeführt wurden. Der Grund weshalb diese Variable - global gehalten wurde, ist der, dass ein modifizierter Client Informationen - über eine Seite speichern und weiterverarbeiten kann (auch hier sei auf - den "Vergleichsbildschirm" des Projektes Compago der Universität - Bern hingewiesen).</li> -</ul> -<p> </p> -<p>Christian Luginbühl</p> -</body> -</html>
--- a/client/doc/dokumentation_digilib.txt Thu Feb 21 02:27:06 2002 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,288 +0,0 @@ -DIGITAL DOCUMENT LIBRARY ------------------------- - -Stand : 21. Januar 2001 - - -Leitung : Gerd Grasshoff (gerd.grasshoff@philo.unibe.ch) - -Autor : Christian Luginbühl (luginbuehl@student.unibe.ch) - - - -Inhalt ------- - -1. Einführung - -2. digilib3.jsp - -3. navigation3XXX.js - -4. ScaleServlet.java - - - -1. Einführung -------------- - -Das Projekt Digital Document Library hat zum Ziel, "Dokumente" mit Hilfe eines -Browsers anschauen zu können. Diese Dokumente sind hochaufgelöste Bilddateien, -die auf einem Server gespeichert sind. Um der Benutzerin, dem Benutzer die -Möglichkeit einer raschen Konsultation der Daten liefern zu können, müssen diese -Bilddaten auf eine vernünftige Grösse verkleinert und in dieser Form dann an die -Anfragenden geschickt werden. Weiten sollen den Benutzenden Hilfsmittel zur -Verfügung stehen um in diesen Seiten zu navigieren. Diese Hilfsmittel bestehen -aus Funktionen um zwischen verschieden Seiten hin und her zu wechseln, -Ausschnitte aus einem Bild zu zoomen und der Möglichkeit Markierungen zu setzen. -Ein weiteres wichtiges Feature dieses Programms ist es, Referenzen ganz -bestimmter Seiten (inkl. Ausschnitte und Markierungen) auszugeben, die dann in -beliebigen anderen Dokumenten eingebaut werden können. Sofern die Lesenden -dieser Dokumente dann über einen Anschluss ins Internet verfügen, können diese -Referenzen direkt angeschaut werden und so die Digital Document Library als -grosse Quelltextsammlung gebraucht werden. - -Das Programm nun ist ein Client/Server-Modell. Einerseits haben wir das User --Interface (also den Client), wo die Darstellung und die Navigation aufgebaut -und berechnet werden. Dieser Teil des Programms umfasst im Prinzip zwei Dateien. -Mit der Frage des Layouts beschäftigt sich digilib3.jsp. Es ist die Datei, die -im Browser aufgerufen wird (mit den verschiedenen Parametern, die in Kapitel 2 -erläutert werden) und die nötigen Aufrufe macht für die Skalierung der Bilddaten -und der entsprechenden Navigationselemente. Die zweite Datei des Clients ist -eine dynamisch ausgerufene JavaScript-Datei namens navigation3XXX.js, wobei die -XXX für die verschidenen Borwservarianten stehen. Da die Scriptsprache -JavaScript in den verschiedenen Browsern nicht ganz gleich implementiert ist, -ist es nötig diese Datei an die verschidenen Umgebungen anzupassen. Das Laden -dieser Dateien übernimmt digilib3.jsp, indem es erst abfragt, welchen Browser -von Client gebraucht wird und dann die entsprechende navigation-Datei vom Server -verlangt. Auf der Serverseite ist ein Programm namens ScaleServlet sehr wichtig. -Dieses Servlet handelt die Anfragen der Clients und macht die verschiedenen -Skalierungen an dem Bildern und schickt, dann den entsprechenden Ausschnitt an -den Client. - -In den nächsten Kapitel sind die einzelnen Files mit ihren verschidenen -Parametern der Aufrufe erläutert. - - -2. digilib3.jsp ---------------- - -Bei einem Request von digilib3.jsp werden auf der Serverseite die verschiedenen -Parameter des Aufrufs in die zurückgesendete Datei eingefüllt und dann vor allem -für den von 'digilib' ausgehenden Aufruf des ScaleServlets verwendet. Die -verschiedenen Parameter beim Request sind durch Pluszeichen voneinander -getrennt. Beispiel: - -http://pene ... /digilib3.jsp?histast/eastwood-collection/AF+3+s1.2+r:3852+12/30 - ------------------------------ - ---- ------ ----- - Parameter 1 2 3 4 5 - -Die verschiedenen Parameter werden in digilib3.jsp in ein Array mit 11 Elementen -(1 - 11) aufgenommen. Folgend ist nun eine Auflistung aller Parameter und ihrer -Bedeutung. Es ist absolut zwingend, dass diese in der richtigen Reihenfolge -aufgerufen werden. - -- att[1] = '<%= docuurl %>' - -Dieser Parameter gibt den Pfad ohne Hostnamen zum Verzeichnis mit dem -gewünschten Werk an. Wichtig zu verstehen ist, dass hier nicht ein bestimmtes -Bild angesprochen wird, sondern nur ein Verzeichnis. - -- att[2] = '<%= startPage %>' - -Dies ist die Nummer des Bildes im von Parameter 1 gewählten Verzeichnis. Falls -dieser Parameter leer ist, wird er automatisch auf '1' gesetzt. - -- att[3] = '<%= scalefact %>' - -Scalefact gibt den Vergrösserungsfaktor der Bildes an, im Vergleich zur in -ScaleServlet angegebenen Standardgrösse. Die Syntax diese Parameters ist 'sx.x', -wobei x.x für die Werte 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 2.0, 2.5 oder 3.0 stehen -kann. Standardwert ist 's1.0'. - -(Anm: Serverseitig wird an diesem Teil noch gearbeitet, damit die Standardgrösse -auf verschidenen Bildschirmen auch verschieden gross ist) - -- att[4] = '<%= commandostring %>' - -Gebraucht wird dieser Parameter dafür, dass die Bilder nicht aus dem -Browsercache genommen werden, sondern auf dem Server dann neu berechnet werden. -Bei einem "Zoom Out" wird hier eine Zufallszahl generiert. Die Syntax ist -'r:xxxx', wobei x irgend eine höchstens vierstellige Zahl. Standardwert ist r:1. - -- att[5] = '<%= remarkcoord %>' - -In diesem Parameter werden die Koordinaten der Markierungspunkte festgehalten. -Syntax ist 'xxx/yyy;zzz/ttt; ... aaa/bbb'. Die Koordinatenpaare um "/" geben an, -wo eine Markierung gesetzt werden soll, wobei Werte von 0 bis zur aktuellen -Bildgrösse erlaubt sind. Durch ";" werden die einzelnen Markierungen getrennt -(maximal 5 sind möglich). Standardwerte sind hier '' (leer) oder '0/0' (keine -Markierung wird gesetzt). - -- att[6] = '<%= windowwidth %>' / att[7] = '<%= windowheight %>' - -Windowwidth gibt an, wie breit/hoch das Bild auf dem Bildschirm ist. Standard -ist '' (leer). - -- att[8] = '<%= xoffset %>' / att[9] = '<%= yoffset %>' - -Diese Attribute haben zwei Bedeutungen. Falls att[10] und att[11] leer sind, -gibt xoffset bzw. yoffset an, um welchen Punkt im Bild gezoomt werden soll. -Falls att[10], att[11] nicht leer sind, geben sie die Koordinaten der linke -oberen Ecke des zu vergrössernden Bildausschnitts an. Standard ist hier '' -(leer). - -- att[10] = '<%= width %>' / att[11] = '<%= height %>' - -Falls diese Attribute verschieden von '' (leer) sind, geben sie die Breite/Höhe -des Bildaussschnittes an, der gezoom werden soll. - - -Die weiteren Funktionen von digilib3.jsp sind: - -- Laden des navigation3XXX.js-Files für den entsprechenden Browser. -- Erstellen eines Framesets (kleiner Frame mit den Navigationsbuttons und - Frame mit dem Bild). -- Erstellen der Navigationsbuttons. -- Zusammenstellen der korrekten Parameterliste für den Aufruf von ScaleServlet. -- Erstellen der verschiedenen Layers mit dem Bild (Aufruf), den Markierungen und - den Zeichen für die Eckpunkte beim Vergrössern. -- Aufruf an navigation3XXX.js für Intialbefehle wie Setzen der Markierungspunkte. - - -3. navigation3XXX.js --------------------- - -Navigation3XXX.js ist eine Sammlung von Funktionen zur Navigation in der Digital -Document Library. Die verschidenen Funktionen werden zum Beispiel durch klicken -auf einen in digilib3.jsp erstellten Navigationsknopf aufgerufen. Um -verschiedene Browser zu unterstützen (die Implementierung von Javascript und das -Document Object Model sind unterschiedlich), gibt es angepasste navigation3 --files, die von digilib3.jsp entsprechend des verwendeten Browsers geladen -werden. Momentan sind Versionen für Netscape Communicator 4.xx (navigation3.js) -und Netscape 6 (navigation3_n6.js) verfügbar. Bei der Programmierung des Clients -wurde darauf geschaut, dass digilib3.jsp für möglichst alle Browser das selbe -ist und somit nur navigation3XXX.js angepasst werden muss. Voraussetzung hierzu -ist, dass ein Brwoser mit Layern (<div>-Tags) umgehen kann. Nachstehend ist ganz -kurz erläutert, welche Funktionen in navigation3XXX.js welche Aufgaben erfüllen: - -- genString(detail) - -Anhand von 'detail' generiert diese Funktion die Parameterliste für einen Aufruf -eines neuen Bildes, eines Ausschnittes oder des Strings für eine -Referenzabfrage. 'detail' wird gebraucht, um die Anzahl der nötigen Parameter -für das Ausführen der aufrufenden Funktion zu bestimmen. Diese Funktion wird -immer indirekt, d.h. in anderen Funktionen von navigation3XXX.js aufgrufen und -liefert eine Stringrückgabe. - -- Backpage(), Nextpage(), Page() - -Diese Funktionen handeln die Navigation durch die Seiten eines Verzeichnisses. -Diese Funktionen werden mit einem Klick auf die Navigationsbuttons aufgerufen -und Laden eine neue Seite. - -- Ref(refselect) - -Hier wird ein PopUp-Fenster erzeugt, das die komplette URL der momentanen Seite -zurückgibt. Mit 'refselect' wird bestimmt, ob die Formatierung der Ausgabe in -HTML- oder LaTeX-Form sein soll. Diese Funktion wird mit dem "Ref"-Button -aufgerufen. - -- Mark() - -Diese Funktion plaziert eine Markierung auf dem Bild, wobei sie zuerst nur die -Maus-koordinaten bei einem Klick auf das Bild abfängt und dann die Funktion -'setmark()' aufruft. Es können bis zu fünf Markierungen auf ein Bild gesetzt -werden. Auch diese Funktion wird direkt über die Navbuttons aufgerufen. - -- Zoomrect(), Zoomin(), Zoomout() - -Direkt aufgerufene Funktionen die sich mit dem Zoomen innerhalb eines Bildes -beschäftigen. Die Rückgabe ist bei allen drei Funktionen ein Aufruf eines neuen -Bildes. - -- Moveto() - -Diese Funktion verändert das Zentrum bei einem schon gezoomten Bild. Die -geklickten Koordinaten entsprechen dann dem Zenrum des neuen Bildes bei gleicher -Vergrösserung. Dieses Feature wird in Zeichnungsprogrammen oft mit 'Pan' -betitelt. Direkter Aufruf und Aufruf des neuen Bildes sind gleich wie bei den -Zoom-Funktionen. - -- Scaledef(scaledef) - -Mit Scaledef wird die Bildgrösse im Vegleich zur in ScaleServlet.java -angegebenen Standardgrösse verändert. Der Parameter 'scaledef' gibt diesen -Faktor an. Eine Liste der möglichen Werte ist weiter oben angegeben. Auch hier -wird di Funktion direkt über die Auswahlliste im Navigationsframe aufgerufen und -auch hier wird ein neues Bild geladen. - -- setmark() - -Setmark wird indirekt von Mark() oder initScripts() aufgerufen und zeichnet sich -für die Positionierung der Markierungen verantwortlich. Die Funktion extrahiert -aus att[5] die einzelnen Koordinaten und setzt die Punkte. Wenn eine bestimmte -Reihenfolge bei den Punkten eingehalten werden soll, dann müssen sie auch immer -gleich in der Parameterliste aufgerufen werden. Die Funktion setmark gibt nichts -zurück. - -- parseKeypress() - -Diese Funktion dient dem Abfangen von Tastatureingaben, wobei die Tasten "n" für -nächste Seite und "b" für vordere Seite abgefragt werden. parseKeypress wird von -initScripts aufgerufen und hat keinen Rückgabewert. - -- initScripts() - -In dieser Funktion werden Vorkehrungen getroffen, die beim Anzeigen einer neuen -Seite getroffen werden müssen. Deshalb wird diese Funktion automatisch beim -Laden von digilib3.jsp aufgerufen. Insbesondere ruft diese Funktion -parseKeypress und setmark auf, wobei bei verschiedenen Browsertypen auch noch -andere Sachen hinzukommen (bei Netscape 6 wird zum Beispiel auch die -Clientgrösse berechnet und geschaut ob Scrollbalken gemacht werden müssen). - - -4. ScaleServlet.java --------------------- - -Der Aufruf von ScaleServlet.java erfolgt grundsätzlich von digilib3.jsp und die -Parameterliste hat auch die selben Attribute (ausgenommen ist att[5] mit den -Koordinaten der Markierungspunkte. Bei Fragen über die einzelnen Bedeutungen der -Attribute sie hier also auf Kapitel 2 verwiesen. An dieser Stelle sei aber noch -etwas gesagt, über die Zusammensetzung der Parameterliste. ScaleServlet.java -kennt drei verschiden lange Parameterlisten, mit denen es arbeiten kann, wobei -die korrekte Zusammenstellung der Parameterliste in digilib3.jsp erfolgt. - -- Kurz (att[1] - att[4]) - -Diese vier Parameter geben dem ScaleServlet die Aufgabe, ein Bild (bestimmt mit -att[1] und att[2]) auf die Standardgrösse zu skalieren und an den Client zu -senden. Att[3] gibt zusätzlich den Skalierungsfaktor an und att[4] verhindert -mit einer Zufallszahl, dass das Bild aus dem Browsercache geholt wird. - -- Mittel (att[1] - att[4] + att[6] - att[9]) - -Diese Möglichkeit des Aufrufs wird gebraucht, um bezüglich des in att[8] und -att[9] bestimmten Mittelpunktes einen Ausschnitt zu vergrossen. Um den genannten -Punkt einzuordnen, wird die grösse des momentan angezeigten Bildes mit den -Parametern 6 und 7 mitgegeben. - -- Lang (att[1] - att[4] + att[6]- att[11]) - -Ein Aufruf in dieser Form gibt dem Servlet an, einen Ausschnitt aus einem Bild -zu vergrössern und zurückzusenden. Folgt ein Aufruf in dieser Form, bekommen die -Parameter att[8] und att[9] die Werte der linken oberen Ecke und att[10]/[11] -die Breite/Höhe des Ausschnitts. - - -Aufgrund eines eingebauten Session-Managements im Servlet ist es möglich mit -digilib auch mehrfach in ein Bild hinein zu zoomen. - -(Anm: Auch wenn dieses Session-Management seinen Zweck beim Anschauen der Bilder -sehr gut erfüllt, ist es dem ScaleServlet nicht möglich den Referenz-URLs -anzusehen, ob zuerst mehrfach hineingezoomt wurde und gibt unter Umständen -- eben wenn mehrfach hieingezoomt wurde vor der Generierung der Referenz - einen -falschen Ausschnitt zurück.) - - ----------------------------------------------- \ No newline at end of file