Diff for /zogiLib/js/Attic/dl_lib.js between versions 1.1 and 1.2

version 1.1, 2004/05/05 12:29:08 version 1.2, 2004/06/02 17:32:54
Line 43  function setParamFromArea(rect) { Line 43  function setParamFromArea(rect) {
   
 var dlTrafo = new Transform();  var dlTrafo = new Transform();
   
 function parseTrafo() {  function parseTrafo(elem) {
     // returns Transform from current dlArea and picsize      // returns Transform from current dlArea and picsize
     var picsize = getElementSize("pic");      var picsize = getElementRect(elem);
     var trafo = new Transform();      var trafo = new Transform();
     // subtract area offset and size      // subtract area offset and size
     trafo.concat(getTranslation(new Position(-dlArea.x, -dlArea.y)));      trafo.concat(getTranslation(new Position(-dlArea.x, -dlArea.y)));
Line 71  var dlMarks = new Array(); Line 71  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();
     var ma = getParameter("mk").split(";");      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++) {      for (var i = 0; i < ma.length ; i++) {
     var pos = ma[i].split("/");      var pos = ma[i].split("/");
     if (pos.length > 1) {      if (pos.length > 1) {
Line 87  function getAllMarks() { Line 94  function getAllMarks() {
     for (var i = 0; i < dlMarks.length; i++) {      for (var i = 0; i < dlMarks.length; i++) {
     marks.push(cropFloat(dlMarks[i].x) + "/" + cropFloat(dlMarks[i].y));      marks.push(cropFloat(dlMarks[i].x) + "/" + cropFloat(dlMarks[i].y));
     }      }
     return marks.join(";");      return marks.join(",");
 }  }
   
 function addMark(pos) {  function addMark(pos) {
Line 160  function parseFlags() { Line 167  function parseFlags() {
 }      }    
   
   
 function bestPicSize(tagid) {  function bestPicSize(elem, inset) {
     // returns a Size with the best image size for the given tagid      // returns a Size with the best image size for the given element
     var inset = 0;      if (! defined(inset)) {
       inset = 25;
       }
     var ws = getWinSize();      var ws = getWinSize();
     var es = getElementSize(tagid);      var es = getElementPosition(elem);
     if (es) {      if (es) {
     ws.width = ws.width - es.x - inset;      ws.width = ws.width - es.x - inset;
     ws.height = ws.height - es.y - inset;      ws.height = ws.height - es.y - inset;
Line 177  function bestPicSize(tagid) { Line 186  function bestPicSize(tagid) {
  *     digilib specific routines   *     digilib specific routines
  * ******************************************** */   * ******************************************** */
   
 function init() {  var elemScaler = null;
     if (document.layers) {  var picElem = null;
     alert("Sorry Netscape4 is not supported!");  
   function dl_init() {
       elemScaler = getElement("scaler");
       if (! elemScaler) {
     return false;      return false;
     }      }
     // give a name to the window containing digilib - this way one can test if there is already a      picElem = getElement("pic", true);
     // digilib-window open and replace the contents of it (ex. digicat)      if (picElem == null) {
       // in N4 pic is in the layer scaler
       picElem = elemScaler.document.images[0];
       }
       // give a name to the window containing digilib
     top.window.name = "digilib";      top.window.name = "digilib";
     // 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));
     // treat special parameters      // treat special parameters
     dlMarks = parseMarks();      dlMarks = parseMarks();
     dlArea = parseArea();      dlArea = parseArea();
     dlFlags = parseFlags();      dlFlags = parseFlags();
       // wait for image to load and display marks
     //registerKeyDown(parseKeypress);  
       
     renderMarks();      renderMarks();
       // done
     focus();      focus();
     return null;      return null;
 }  }
   
 function display(detail) {  function display(detail) {
     // redisplay the page      // redisplay the page
       if (! detail) {
       detail = 9;
       }
     var queryString = getAllParameters(detail);      var queryString = getAllParameters(detail);
     location.href = location.protocol + "//" + location.host + location.pathname + "?" + queryString;      location.href = location.protocol + "//" + location.host + location.pathname + "?" + queryString;
 }  }
   
   function openWin(url, title, params) {
       // open browser window
       var ow = window.open(url, title, params);
       ow.focus();
   }
   
 /* **********************************************  /* **********************************************
  *     interactive digilib functions   *     interactive digilib functions
  * ******************************************** */   * ******************************************** */
   
 function ref(select) {  function getRef(select) {
     // open a dialog with a reference to the current digilib set      // open a dialog with a reference to the current digilib set
     var hyperlinkRef = baseUrl + "?" + getAllParameters(9);      var hyperlinkRef = baseUrl + "?" + getAllParameters(9);
     if ( select == 0 ) {      if ( select == 0 ) {
Line 224  function ref(select) { Line 246  function ref(select) {
 function renderMarks() {  function renderMarks() {
     // put the visible marks on the image      // put the visible marks on the image
     var mark_count = dlMarks.length;      var mark_count = dlMarks.length;
     var picelem = getElement("pic");  
     // make shure the image is loaded so we know its size      // make shure the image is loaded so we know its size
     if (picelem && picelem.complete == false) {      if (defined(picElem.complete) && picElem.complete == false && ! browserType.isN4 ) {
     setTimeout("placeMarks()", 100);      setTimeout("renderMarks()", 100);
     } else {      } else {
     var picsize = getElementSize("pic");      //alert("rendermarks!");
     dlTrafo = parseTrafo();      dlTrafo = parseTrafo(picElem);
     for (var i = 0; i < 8; i++) {      for (var i = 0; i < 8; i++) {
           var me = getElement("dot"+i);
         if (i < mark_count) {          if (i < mark_count) {
         if (dlArea.containsPosition(dlMarks[i])) {          if (dlArea.containsPosition(dlMarks[i])) {
             var mpos = dlTrafo.transform(dlMarks[i]);              var mpos = dlTrafo.transform(dlMarks[i]);
             // suboptimal to place -5 pixels and not half size of mark-image              // suboptimal to place -5 pixels and not half size of mark-image
             mpos.x = mpos.x -5;              mpos.x = mpos.x -5;
             mpos.y = mpos.y -5;              mpos.y = mpos.y -5;
             moveElement("dot"+i, mpos);              moveElement(me, mpos);
             showElement("dot"+i, true);              showElement(me, true);
         }          }
         } else {          } else {
         // hide the other marks          // hide the other marks
         showElement("dot"+i, false);          showElement(me, false);
         }          }
     }      }
     }      }
 }  }
   
 function mark() {  function setMark() {
     // add a mark where clicked      // add a mark where clicked
     if ( dlMarks.length > 7 ) {      if ( dlMarks.length > 7 ) {
     alert("Only 8 marks are possible at the moment!");      alert("Only 8 marks are possible at the moment!");
Line 258  function mark() { Line 280  function mark() {
   
     function markEvent(evt) {      function markEvent(evt) {
     // event handler adding a new mark       // event handler adding a new mark 
     unregisterMouseDown("scaler", markEvent);  
     var p = dlTrafo.invtransform(evtPosition(evt));      var p = dlTrafo.invtransform(evtPosition(evt));
       unregisterMouseDown(elemScaler, markEvent);
     addMark(p);      addMark(p);
     placeMarks();      display();
     }      }
   
     // starting event capture      // starting event capture
     registerMouseDown("scaler", markEvent);      registerMouseDown(elemScaler, markEvent);
 }  
   
 function unmark() {  
     // remove the last mark  
     deleteMark();  
     placeMarks();  
 }  }
   
 var ZOOMFACTOR = Math.sqrt(2);  var ZOOMFACTOR = Math.sqrt(2);
Line 297  function zoomPoint(inout) { Line 313  function zoomPoint(inout) {
     // set parameters      // set parameters
     setParamFromArea(zoomarea);      setParamFromArea(zoomarea);
     parseArea();      parseArea();
     display(3);      // zoomed is always fit
       setParameter("ws", 1);
       display();
     }      }
   
     // starting event capture      // starting event capture
     registerMouseDown("scaler", zoomPointEvent);      registerMouseDown(elemScaler, zoomPointEvent);
 }  }
   
   
Line 310  function zoomArea() { Line 328  function zoomArea() {
     var pt1, pt2;      var pt1, pt2;
     var eck1pos, eck2pos, eck3pos, eck4pos;      var eck1pos, eck2pos, eck3pos, eck4pos;
     window.focus();      window.focus();
       var eck1 = getElement("eck1");
       var eck2 = getElement("eck2");
       var eck3 = getElement("eck3");
       var eck4 = getElement("eck4");
   
     function zoomClick(evt) {      function zoomClick(evt) {
     // mouse click handler      // mouse click handler
Line 322  function zoomArea() { Line 344  function zoomArea() {
         eck2pos = new Position(pt1.x - 12, pt1.y);          eck2pos = new Position(pt1.x - 12, pt1.y);
         eck3pos = new Position(pt1.x, pt1.y - 12);          eck3pos = new Position(pt1.x, pt1.y - 12);
         eck4pos = new Position(pt1.y - 12, pt1.y - 12);          eck4pos = new Position(pt1.y - 12, pt1.y - 12);
         moveElement("eck1", eck1pos);          moveElement(eck1, eck1pos);
         moveElement("eck2", eck2pos);          moveElement(eck2, eck2pos);
         moveElement("eck3", eck3pos);          moveElement(eck3, eck3pos);
         moveElement("eck4", eck4pos);          moveElement(eck4, eck4pos);
         showElement("eck1", true);          showElement(eck1, true);
         showElement("eck2", true);          showElement(eck2, true);
         showElement("eck3", true);          showElement(eck3, true);
         showElement("eck4", true);          showElement(eck4, true);
         registerMouseMove("scaler", zoomMove);          registerMouseMove(elemScaler, zoomMove);
         registerMouseMove("eck4", zoomMove);          registerMouseMove(eck4, zoomMove);
     } else {      } else {
         // second click -- end moving          // second click -- end moving
         pt2 = evtPosition(evt);          pt2 = evtPosition(evt);
         showElement("eck1", false);          showElement(eck1, false);
         showElement("eck2", false);          showElement(eck2, false);
         showElement("eck3", false);          showElement(eck3, false);
         showElement("eck4", false);          showElement(eck4, false);
         unregisterMouseMove("scaler", zoomMove);          unregisterMouseMove(elemScaler, zoomMove);
         unregisterMouseMove("eck4", zoomMove);          unregisterMouseMove(eck4, zoomMove);
         unregisterMouseDown("scaler", zoomClick);          unregisterMouseDown(elemScaler, zoomClick);
         unregisterMouseDown("eck4", zoomClick);          unregisterMouseDown(eck4, zoomClick);
         var p1 = dlTrafo.invtransform(pt1);          var p1 = dlTrafo.invtransform(pt1);
         var p2 = dlTrafo.invtransform(pt2);          var p2 = dlTrafo.invtransform(pt2);
         var ww = p2.x-p1.x;          var ww = p2.x-p1.x;
Line 353  function zoomArea() { Line 375  function zoomArea() {
         setParameter("ww", cropFloat(ww));          setParameter("ww", cropFloat(ww));
         setParameter("wh", cropFloat(wh));          setParameter("wh", cropFloat(wh));
         parseArea();          parseArea();
         display(3);          // zoomed is always fit
           setParameter("ws", 1);
           display();
         }          }
     }      }
     }      }
Line 366  function zoomArea() { Line 390  function zoomArea() {
     eck2pos = new Position(Math.max(pt1.x, pt2.x)-12, pt1.y);      eck2pos = new Position(Math.max(pt1.x, pt2.x)-12, pt1.y);
     eck3pos = new Position(pt1.x, Math.max(pt1.y, pt2.y)-12);      eck3pos = new Position(pt1.x, Math.max(pt1.y, pt2.y)-12);
     eck4pos = new Position(Math.max(pt1.x, pt2.x)-12, Math.max(pt1.y, pt2.y)-12);      eck4pos = new Position(Math.max(pt1.x, pt2.x)-12, Math.max(pt1.y, pt2.y)-12);
     moveElement("eck1", eck1pos);      moveElement(eck1, eck1pos);
     moveElement("eck2", eck2pos);      moveElement(eck2, eck2pos);
     moveElement("eck3", eck3pos);      moveElement(eck3, eck3pos);
     moveElement("eck4", eck4pos);      moveElement(eck4, eck4pos);
     }      }
   
     // starting event capture      // starting event capture
     registerMouseDown("scaler", zoomClick);      registerMouseDown(elemScaler, zoomClick);
     registerMouseDown("eck4", zoomClick);      registerMouseDown(eck4, zoomClick);
 }  }
   
   
Line 391  function moveTo() { Line 415  function moveTo() {
     var newarea = new Rectangle(pt.x-0.5*dlArea.width, pt.y-0.5*dlArea.height, dlArea.width, dlArea.height);      var newarea = new Rectangle(pt.x-0.5*dlArea.width, pt.y-0.5*dlArea.height, dlArea.width, dlArea.height);
     newarea = dlMaxArea.fit(newarea);      newarea = dlMaxArea.fit(newarea);
     // stopping event capture      // stopping event capture
     unregisterMouseDown("scaler", moveToEvent);      unregisterMouseDown(elemScaler, moveToEvent);
     // set parameters      // set parameters
     setParameter("wx", cropFloat(newarea.x));      setParameter("wx", cropFloat(newarea.x));
     setParameter("wy", cropFloat(newarea.y));      setParameter("wy", cropFloat(newarea.y));
     setParameter("ww", cropFloat(newarea.width));      setParameter("ww", cropFloat(newarea.width));
     setParameter("wh", cropFloat(newarea.height));      setParameter("wh", cropFloat(newarea.height));
     display(3);      display();
     }      }
   
     // starting event capture      // starting event capture
     registerMouseDown("scaler", moveToEvent);      registerMouseDown(elemScaler, moveToEvent);
 }  
   
 function parseKeypress(evt) {  
     // capturing keypresses for next and previous page  
     if ( document.all ) {  
     if ( event.keyCode == 110 ) {  
         page('+1');  
     }  
     if ( event.keyCode == 98 ) {  
         page('-1');  
     }  
     document.cancelBubble = true;  
     } else {  
     if ( evt.charCode == 110 ) {  
         page('+1');  
     } else if ( evt.charCode == 98 ) {  
         page('-1');  
     } else if ( evt.which == 110 ) {  
         page('+1');  
     } else if ( evt.which == 98 ) {  
         // does not work currentlyfor Opera, because it catches the 'b'-key on it's own  
         // have to change the key or find another way - luginbuehl  
         page('-1');  
     }  
     }  
 }  }
   
   
 /* **********************************************  // debuggin'
  *     digilib parameter-only functions  function showcoordsN4() {
  * ******************************************** */      var s = "";
       for (var l in document.layers) {
 function setSize(factor) {      if (l == "length") continue;
     // change the size of the image      e = document.layers[l];
     setParameter("ws", cropFloat(factor));      if (e) {
     display(3);          s += " [" + e.name + "]: pageX:" + e.pageX + " pageY:" + e.pageY + " width:" + e.clip.width + " height:" + e.clip.height + " visibility:" + e.visibility + " zindex:" + e.zIndex + "<br>\n";
 }  
   
 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(3);  
 }      
   
 function mirror(dir) {  
     // mirror the image horizontally or vertically  
     if (dir == "h") {  
     toggleFlag("hmir");  
     } else {  
     toggleFlag("vmir");  
     }  
     setParameter("mo", getAllFlags());  
     display(3);  
 }  
   
 function page(page, details) {  
   
   if ( details == null ) {  
     details = 1;  
   }  
     
   if ( page.indexOf('-') == 0 ) {  
     if ( dlParams.pn.value > 1 ) {  
       page = Math.max(parseInt(dlParams.pn.value) - parseInt(page.slice(1)), 1);  
       dlParams.pn.value = page;  
       display(details);  
     } else {      } else {
       alert("You are already on the first page!");          s += " {" + l + "}<br>\n";
     }  
   
   } else if ( page.indexOf('+') == 0 ) {  
     page = parseInt(dlParams.pn.value) + parseInt(page.slice(1));  
     dlParams.pn.value = page;  
     display(details);  
   } else if ( page == parseInt(page) ) {  
     dlParams.pn.value = parseInt(page);  
     display(details);  
   }    }
   
 }  }
       return s;
 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);  
     parseArea();  
     display(3);  
 }  }
   

Removed from v.1.1  
changed lines
  Added in v.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>