From fd939d58f3e414a486b79a53f3c28cf1f8709257 Mon Sep 17 00:00:00 2001 From: Toke Eskildsen <te@ekot.dk> Date: Tue, 17 Sep 2013 23:08:57 +0200 Subject: [PATCH] Added missing support files --- quack.css | 143 ++++++++++++++++++++++++++++++++++++++++++++++++++ quack.js | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 297 insertions(+) create mode 100644 quack.css create mode 100644 quack.js diff --git a/quack.css b/quack.css new file mode 100644 index 0000000..24ec5f8 --- /dev/null +++ b/quack.css @@ -0,0 +1,143 @@ +.xmlvalue { + color: #066; +} + +#zoom-display { + position: relative; + margin-right: 340px; + height: 900px; + border: 1px solid black; + overflow: hidden; +} + +div.openseadragon-canvas canvas { + /* + Since we're doing QA and are likely to look at pixels, + we try to disable fancy scaling + Seems not to be working... + */ + image-rendering:optimizeSpeed; /* Legal fallback */ + image-rendering:optimize-contrast; /* CSS3 Proposed */ + image-rendering:-moz-crisp-edges; /* Firefox */ + image-rendering:-o-crisp-edges; /* Opera */ + image-rendering:-webkit-optimize-contrast; /* Chrome (and eventually Safari) */ + -ms-interpolation-mode:nearest-neighbor; /* IE8+ */ +} + +#gridbox { + position: absolute; + z-index: 10; + pointer-events: none; + width : 100%; + margin-right: 400px; + height: 900px; + overflow: hidden; +} + +.control { + position: absolute; + width: 250px; + right: 10px; + margin-right: 2em; + padding: 0.5em 1.5em 0.5em 1em; + border: 3px solid #999; +} + +.control p { + margin-bottom: 0; + margin-top: 0; +} + +.gridline { + position: absolute; + pointer-events: none; + background: #00C; +} + +.gridlinex { + height: 1px; + width: 100%; +} + +.gridliney { + height: 100%; + width: 1px; +} + +.highlight { + opacity: 0.4; + filter: alpha(opacity=40); + border: 2px solid #BE3333; + background-color: transparent; +} +.highlight:hover, .highlight:focus { + filter: alpha(opacity=70); + opacity: 0.7; + border: 4px solid #FF3333; +} +.group { + background-color: #9999FF; +} +.next { + background-color: #3333FF; + opacity: 0.8; + filter: alpha(opacity=80); +} +.illustration { + opacity: 0.4; + filter: alpha(opacity=40); + border: 2px solid #3333BE; + background-color: transparent; +} +.illustration.group { + border: 3px solid #9999FF; + opacity: 1.0; + filter: alpha(opacity=100); +} +.composed { + opacity: 0.4; + filter: alpha(opacity=40); + outline: 2px solid #CCCC33; + background-color: transparent; +} + +#idbox #idnextbox { + width: 100%; + min-height: 1.5em; +} + +#ocrbox { + width: 100%; + min-height: 20em; + border: 2px solid #FF3333; +} + +.warning { + background: #F99; +} + +.thumblink { + margin-right: 1em; +} + +ul.alternatives { + font-size: 70%; + margin-left: 0; + padding-left: 0; +} +ul.alternatives li { + display: inline; + margin-left: 0; + padding-left: 0; +} +ul.alternatives li + li:before { + content: " | "; +} +.histogram img { + border: 1px dotted grey; +} + +.whiteoverlay { + background-size: 100% 100%; + pointer-events: none; +} \ No newline at end of file diff --git a/quack.js b/quack.js new file mode 100644 index 0000000..f1252ab --- /dev/null +++ b/quack.js @@ -0,0 +1,154 @@ +//! Toggling of grid and overlays + +function toggleGrid() { + if (document.getElementById('toggle_grid').checked) { + state = 'block'; + } else { + state = 'none'; + } + + var content = document.getElementsByClassName('gridline'); + for (var i = 0 ; i < content.length ; i++) { + content[i].style.display = state; + } +} + +function toggleBlown() { + if (document.getElementById('toggle_blown').checked) { + opacity = 100; + } else { + opacity = 0; + } + + for (var i = 0; i < myDragon.overlays.length; i++) { + var id = myDragon.overlays[i].id; + if ( id == 'black' || id == 'white' ) { + OpenSeadragon.setElementOpacity(id, opacity, false); + } + } + + if (document.getElementById('toggle_blown').checked) { + state = 'block'; + } else { + state = 'none'; + } + + var content = document.getElementsByClassName('whiteoverlay'); + for (var i = 0 ; i < content.length ; i++) { + content[i].style.display = state; + } + var content = document.getElementsByClassName('blackoverlay'); + for (var i = 0 ; i < content.length ; i++) { + content[i].style.display = state; + } +} + +function toggleTextBlock() { + if (document.getElementById('toggle_textblock').checked) { + opacity = 100; + } else { + opacity = 0; + } + + for (var i = 0; i < myDragon.overlays.length; i++) { + var id = myDragon.overlays[i].id; + if ( id == 'black' || id == 'white' ) { + continue; + } + OpenSeadragon.setElementOpacity(id, opacity, false); + } +} + +var ocrs = {}; +var nexts = {}; +var prevs = {}; + +// Fill in OCR for blocks with +// ocrs["BLOCK1"] = "MyOCR"; +// On the preview page + +function addForward(overlay, className) { + if (!document.getElementById(overlay)) return; + document.getElementById(overlay).className = document.getElementById(overlay).className + ' ' + className; + if (overlay in nexts) { + addForward(nexts[overlay], className); + } +} +function addBackward(overlay, className) { + if (!document.getElementById(overlay)) return; + document.getElementById(overlay).className = document.getElementById(overlay).className + ' ' + className; + if (overlay in prevs) { + addBackward(prevs[overlay], className); + } +} +function removeForward(overlay, className) { + if (!document.getElementById(overlay)) return; + document.getElementById(overlay).className = document.getElementById(overlay).className.replace(' ' + className, ''); + if (overlay in nexts) { + removeForward(nexts[overlay], className); + } +} +function removeBackward(overlay, className) { + if (!document.getElementById(overlay)) return; + document.getElementById(overlay).className = document.getElementById(overlay).className.replace(' ' + className, ''); + if (overlay in prevs) { + removeBackward(prevs[overlay], className); + } +} +function inOverlay(overlay) { + document.getElementById('idbox').innerHTML = 'ID: ' + overlay; + if (overlay in nexts) { + document.getElementById('idnextbox').innerHTML = 'IDNEXT: ' + nexts[overlay]; + } else { + document.getElementById('idnextbox').innerHTML = 'IDNEXT: '; + } + + if (overlay in ocrs) { + document.getElementById('ocrbox').innerHTML = ocrs[overlay]; + } else { + document.getElementById('ocrbox').innerHTML = ''; + } + addForward(overlay, "group"); +// addForward(overlay, "next"); + addBackward(overlay, "group"); + if (overlay in nexts) { + document.getElementById(nexts[overlay]).className = document.getElementById(nexts[overlay]).className + ' next'; + } +} +function outOverlay(overlay) { + document.getElementById('ocrbox').innerHTML = ''; + document.getElementById('idnextbox').innerHTML = 'IDNEXT: '; + document.getElementById('idbox').innerHTML = 'ID: '; + + removeForward(overlay, "group"); + removeForward(overlay, "next"); + removeBackward(overlay, "group"); + removeBackward(overlay, "next"); +} + +function setupJS() { + toggleGrid(); + toggleTextBlock(); + toggleBlown(); + + //! Create a callback for eack overlay with the overlay-ID as argument + for (var i = 0; i < myDragon.overlays.length; i++) { + id = myDragon.overlays[i].id; + shortid = id.split("/").pop(); + if ( id == 'white' || id == 'black' ) { + continue; + } + + o = document.getElementById(id); + o.onmouseover = new Function('inOverlay("' + shortid + '")'); + o.onmouseout = new Function('outOverlay("' + shortid + '")'); + } + + // Try to disable fancy interpolation + var canvases = document.getElementsByTagName("canvas"); + for(var i = 0; i < canvases.length; i++){ + canvases[i].style.imageRendering = "-moz-crisp-edges"; + canvases[i].getContext.mozImageSmoothingEnabled = false; + } +} +window.onload=setupJS; -- GitLab