Mercurial > hg > digilib
comparison client/digitallibrary/greyskin/dllib.js @ 425:ab2557f079fc
added showArrows() function (navigation arrows overlay)
added canMove() function ()
pulled global vars out of init functions
author | hertzhaft |
---|---|
date | Thu, 22 Dec 2005 11:46:22 +0100 |
parents | e2bc7587aee1 |
children | fc5b8cade32f |
comparison
equal
deleted
inserted
replaced
424:de930d030a53 | 425:ab2557f079fc |
---|---|
24 | 24 |
25 */ | 25 */ |
26 digilibVersion = "Digilib NG"; | 26 digilibVersion = "Digilib NG"; |
27 dllibVersion = "2.0"; | 27 dllibVersion = "2.0"; |
28 isDigilibInitialized = false; // gets set to true in dl_param_init | 28 isDigilibInitialized = false; // gets set to true in dl_param_init |
29 reloadPage = true; // reload the page when parameters are changed | 29 reloadPage = true; // reload the page when parameters are changed, otherwise update only "src" attribute of scaler img |
30 // (false: update only "src" attribute of scaler img) | 30 |
31 // global variables | |
32 dlTrafo = new Transform(); | |
33 dlMaxArea = new Rectangle(0.0, 0.0, 1.0, 1.0); | |
34 dlArea = null; | |
35 dlMarks = null; | |
36 dlFlags = null; | |
37 | |
38 // global elements | |
39 elemScaler = null; | |
40 picElem = null; | |
41 | |
31 | 42 |
32 // flags for parameter sets | 43 // flags for parameter sets |
33 PARAM_FILE = 1; | 44 PARAM_FILE = 1; |
34 PARAM_MODE = 2; | 45 PARAM_MODE = 2; |
35 PARAM_SIZE = 4; | 46 PARAM_SIZE = 4; |
301 | 312 |
302 function dl_param_init() { | 313 function dl_param_init() { |
303 // initialisation before onload | 314 // initialisation before onload |
304 if (!baseLibVersion) alert("ERROR: baselib.js not loaded!"); | 315 if (!baseLibVersion) alert("ERROR: baselib.js not loaded!"); |
305 if (isDigilibInitialized) return false; // dl_param_init was already run | 316 if (isDigilibInitialized) return false; // dl_param_init was already run |
306 dlMaxArea = new Rectangle(0.0, 0.0, 1.0, 1.0); | |
307 dlTrafo = new Transform(); | |
308 // dlArea = new Rectangle(0.0, 0.0, 1.0, 1.0); // overwritten by parseAllParameters() below | 317 // dlArea = new Rectangle(0.0, 0.0, 1.0, 1.0); // overwritten by parseAllParameters() below |
309 // dlMarks = new Array(); // dito | 318 // dlMarks = new Array(); // dito |
310 // dlFlags = new Object(); // dito | 319 // dlFlags = new Object(); // dito |
311 elemScaler = null; // ? | |
312 picElem = null; // ? | |
313 // parse parameters | 320 // parse parameters |
314 parseAllParameters(); | 321 parseAllParameters(); |
315 isDigilibInitialized = true; | 322 isDigilibInitialized = true; |
316 return true; | 323 return true; |
317 } | 324 } |
384 dlTrafo = parseTrafo(picElem); | 391 dlTrafo = parseTrafo(picElem); |
385 // debugProps(dlArea, "dlArea"); | 392 // debugProps(dlArea, "dlArea"); |
386 for (var i = 0; i < dlMarks.length; i++) { | 393 for (var i = 0; i < dlMarks.length; i++) { |
387 var div = document.getElementById("mark" + i) || createMarkDiv(i); | 394 var div = document.getElementById("mark" + i) || createMarkDiv(i); |
388 var mark = dlMarks[i]; | 395 var mark = dlMarks[i]; |
389 debugProps(mark, "mark"); | 396 // debugProps(mark, "mark"); |
390 if (dlArea.containsPosition(mark)) { | 397 if (dlArea.containsPosition(mark)) { |
391 var mpos = dlTrafo.transform(mark); // FIX ME: transform does not change anything | 398 var mpos = dlTrafo.transform(mark); // FIX ME: transform does not change anything |
392 debugProps(mark, "mpos"); | 399 // debugProps(mark, "mpos"); |
393 // suboptimal to place -5 pixels and not half size of mark-image | 400 // suboptimal to place -5 pixels and not half size of mark-image |
394 // better not hide the marked spot (MR) | 401 // better not hide the marked spot (MR) |
395 // mpos.x = mpos.x -5; | 402 // mpos.x = mpos.x -5; |
396 // mpos.y = mpos.y -5; | 403 // mpos.y = mpos.y -5; |
397 moveElement(div, mpos); | 404 moveElement(div, mpos); |
554 } | 561 } |
555 window.focus(); | 562 window.focus(); |
556 | 563 |
557 function moveCenterEvent(evt) { | 564 function moveCenterEvent(evt) { |
558 // move to handler | 565 // move to handler |
566 var pt = dlTrafo.invtransform(evtPosition(evt)); | |
567 var newarea = new Rectangle( | |
568 pt.x - 0.5 * dlArea.width, | |
569 pt.y - 0.5 * dlArea.height, | |
570 dlArea.width, | |
571 dlArea.height | |
572 ); | |
573 newarea.stayInside(dlMaxArea); | |
574 // newarea = dlMaxArea.fit(newarea); | |
575 // debugProps(newarea, "newarea"); | |
576 // debugProps(dlArea, "dlArea"); | |
577 if (newarea.equals(dlArea)) return; // keep event handler | |
559 unregisterEvent("mousedown", elemScaler, moveCenterEvent); | 578 unregisterEvent("mousedown", elemScaler, moveCenterEvent); |
560 var pt = dlTrafo.invtransform(evtPosition(evt)); | |
561 var newarea = new Rectangle(pt.x-0.5*dlArea.width, pt.y-0.5*dlArea.height, dlArea.width, dlArea.height); | |
562 newarea = dlMaxArea.fit(newarea); | |
563 // set parameters | 579 // set parameters |
564 setParamFromArea(newarea); | 580 setParamFromArea(newarea); |
565 parseArea(); | 581 parseArea(); |
566 display(); | 582 display(); |
567 } | 583 } |
574 if (!area) area = dlArea; | 590 if (!area) area = dlArea; |
575 return ((area.width == 1.0) && (area.height == 1.0)); | 591 return ((area.width == 1.0) && (area.height == 1.0)); |
576 } | 592 } |
577 | 593 |
578 function canMove(movx, movy) { | 594 function canMove(movx, movy) { |
579 if (isFullArea) return false; | 595 if (isFullArea()) return false; |
596 // debugProps(dlArea); | |
580 return ((movx < 0) && (dlArea.x > 0)) | 597 return ((movx < 0) && (dlArea.x > 0)) |
581 || ((movy < 0) && (dlArea.y > 0)) | 598 || ((movy < 0) && (dlArea.y > 0)) |
582 || ((movx > 0) && (dlArea.x + dlArea.width < 1.0)) | 599 || ((movx > 0) && (dlArea.x + dlArea.width < 1.0)) |
583 || ((movy > 0) && (dlArea.y + dlArea.height < 1.0)) | 600 || ((movy > 0) && (dlArea.y + dlArea.height < 1.0)) |
584 } | 601 } |
585 | 602 |
586 function moveBy(movx, movy) { | 603 function moveBy(movx, movy) { |
587 // move visible area by movx and movy (in units of ww, wh) | 604 // move visible area by movx and movy (in units of ww, wh) |
588 if (isFullArea) return; | 605 if (!canMove(movx, movy)) return; // nothing to do |
589 // nothing to do | |
590 var newarea = dlArea.copy(); | 606 var newarea = dlArea.copy(); |
591 newarea.x += parseFloat(movx)*dlArea.width; | 607 newarea.x += parseFloat(movx)*dlArea.width; |
592 newarea.y += parseFloat(movy)*dlArea.height; | 608 newarea.y += parseFloat(movy)*dlArea.height; |
593 newarea = dlMaxArea.fit(newarea); | 609 newarea = dlMaxArea.fit(newarea); |
594 // set parameters | 610 // set parameters |
597 display(); | 613 display(); |
598 } | 614 } |
599 | 615 |
600 function getRef(baseURL) { | 616 function getRef(baseURL) { |
601 // returns a reference to the current digilib set | 617 // returns a reference to the current digilib set |
602 if (!baseUrl) baseUrl | 618 if (!baseUrl) baseUrl |
603 = location.protocol | 619 = location.protocol |
604 + "//" | 620 + "//" |
605 + location.host | 621 + location.host |
606 + location.pathname; | 622 + location.pathname; |
607 var hyperlinkRef = baseUrl; | 623 var hyperlinkRef = baseUrl; |
608 var params = getAllParameters(PARAM_ALL & ~(PARAM_DPI | PARAM_PAGES)); // all without ddpi, pt | 624 var params = getAllParameters(PARAM_ALL & ~(PARAM_DPI | PARAM_PAGES)); // all without ddpi, pt |
609 if (params.length > 0) hyperlinkRef += "?" + params; | 625 if (params.length > 0) hyperlinkRef += "?" + params; |
610 return hyperlinkRef; | 626 return hyperlinkRef; |
611 } | 627 } |
641 if (newq) setQuality(newq); | 657 if (newq) setQuality(newq); |
642 } | 658 } |
643 | 659 |
644 function mirror(dir) { | 660 function mirror(dir) { |
645 // mirror the image horizontally or vertically | 661 // mirror the image horizontally or vertically |
646 if (dir == "h") { | 662 toggleFlag(dir == "h" |
647 toggleFlag("hmir"); | 663 ? "hmir" |
648 } else { | 664 : "vmir" |
649 toggleFlag("vmir"); | 665 ); |
650 } | |
651 setParameter("mo", getAllFlags()); | 666 setParameter("mo", getAllFlags()); |
652 display(); | 667 display(); |
653 } | 668 } |
654 | 669 |
655 function gotoPage(gopage, keep) { | 670 function gotoPage(gopage, keep) { |
803 display(); | 818 display(); |
804 return stopEvent(evt); | 819 return stopEvent(evt); |
805 } | 820 } |
806 } | 821 } |
807 | 822 |
808 function showArrows() { | 823 function showArrow(name, rect, show) { |
809 if (defined(picElem.complete) && !picElem.complete && !browserType.isN4 ) { | 824 var arrow = getElement(name); |
810 setTimeout("showArrows()", 100); | 825 moveElement(arrow, rect); |
811 return; | 826 showElement(arrow, show); |
812 } | 827 } |
813 var arrow, pos, r; | 828 |
814 r = getElementRect(picElem); | 829 function showArrows() { |
815 // up | 830 if (defined(picElem.complete) && !picElem.complete && !browserType.isN4 ) { |
816 arrow = getElement("up"); | 831 setTimeout("showArrows()", 100); |
817 pos = r.copy(); | 832 return; |
818 pos.height = ARROW_WIDTH; | 833 } |
819 moveElement(arrow, pos); | 834 var r = getElementRect(picElem); |
820 showElement(arrow, true); | 835 showArrow('up', |
821 // down | 836 new Rectangle(r.x, r.y, r.width, ARROW_WIDTH), |
822 arrow = getElement("down"); | 837 canMove(0, -1) |
823 pos = r.copy(); | 838 ); |
824 pos.y = pos.y + pos.height - ARROW_WIDTH; | 839 showArrow('down', |
825 pos.height = ARROW_WIDTH; | 840 new Rectangle(r.x, r.y + r.height - ARROW_WIDTH, r.width, ARROW_WIDTH), |
826 debugProps(pos); | 841 canMove(0, 1) |
827 moveElement(arrow, pos); | 842 ); |
828 showElement(arrow, true); | 843 showArrow('left', |
829 // left | 844 new Rectangle(r.x, r.y, ARROW_WIDTH, r.height), |
830 arrow = getElement("left"); | 845 canMove(-1, 0) |
831 pos = r.copy(); | 846 ); |
832 pos.width = ARROW_WIDTH; | 847 showArrow('right', |
833 debugProps(pos); | 848 new Rectangle(r.x + r.width - ARROW_WIDTH, r.y, ARROW_WIDTH, r.height), |
834 moveElement(arrow, pos); | 849 canMove(1, 0) |
835 showElement(arrow, true); | 850 ); |
836 // right | 851 } |
837 arrow = getElement("right"); | 852 |
838 pos = r.copy(); | |
839 pos.x = pos.x + pos.width - ARROW_WIDTH; | |
840 pos.width = ARROW_WIDTH; | |
841 debugProps(pos); | |
842 moveElement(arrow, pos); | |
843 showElement(arrow, true); | |
844 } | |
845 |