<html> <title>OpenSeadragon Overlay Demo</title> <script type="text/javascript" src='../../build/openseadragon/openseadragon.js'></script> <script type="text/javascript" src='../lib/jquery-1.9.1.min.js'></script> <style type="text/css"> .openseadragon1 { width: 800px; height: 600px; } </style> </head> <body> <div id="contentDiv" class="openseadragon1"></div> <div id="annotation-div"> <input type="button" value="Hide Overlays" id="hideOverlays"> <input type="button" value="Rotate" id="rotate"> <span id="degrees">0deg</span> </div> <canvas id="test-canvas" width = "400" height="400" style="image-rendering: pixelated; position:fixed;right:10px;top:10px;width:400px;height:400px;background-color:white;border:thin gray solid;"></canvas> <script type="text/javascript"> var canvas = document.getElementById('test-canvas');// width == height == 400 var context = canvas.getContext("2d"); context.fillRect(0, 0, 400, 400); // fill entire canvas with black rectangle context.translate(200, 200); // translate to center context.rotate(1 * Math.PI/180); // rotate by 1 degree context.clearRect(-100, -100, 200, 200); // clear a 200 x 200 rectangle context.fillRect(-100, -100, 100, 200); // draw a 100 x 200 rectangle in the left half context.fillRect(-00, -100, 100, 200); // draw a 100 x 200 rectangle in the right half window.context = context; var viewer = OpenSeadragon({ id: "contentDiv", prefixUrl: "../../build/openseadragon/images/", tileSources: "../data/testpattern.dzi", minZoomImageRatio: 0, maxZoomPixelRatio: 10, subPixelRoundingForTransparency: OpenSeadragon.SUBPIXEL_ROUNDING_OCCURRENCES.ALWAYS }); window.c = viewer.drawer.canvas.getContext("2d"); viewer.addHandler("open", function(event) { viewer.world.getItemAt(0).source.hasTransparency = function(){ return true; } viewer.viewport.rotateTo(1); var elt = document.createElement("div"); elt.className = "runtime-overlay"; elt.style.background = "green"; elt.style.outline = "3px solid red"; elt.style.opacity = "0.7"; elt.textContent = "Scaled overlay"; viewer.addOverlay({ element: elt, location: new OpenSeadragon.Rect(0.21, 0.21, 0.099, 0.099), rotationMode: OpenSeadragon.OverlayRotationMode.BOUNDING_BOX }); elt = document.createElement("div"); elt.className = "runtime-overlay"; elt.style.background = "white"; elt.style.outline = "3px solid red"; elt.style.width = "100px"; elt.textContent = "Scaled vertically"; viewer.addOverlay({ element: elt, location: new OpenSeadragon.Point(0.6, 0.6), height: 0.1, placement: OpenSeadragon.Placement.TOP_LEFT, rotationMode: OpenSeadragon.OverlayRotationMode.NO_ROTATION }); elt = document.createElement("div"); elt.className = "runtime-overlay"; elt.style.background = "white"; elt.style.opacity = "0.5"; elt.style.outline = "1px solid blue"; elt.style.height = "100px"; elt.textContent = "Scaled horizontally"; viewer.addOverlay({ element: elt, location: new OpenSeadragon.Point(0.1, 0.5), width: 0.1 }); elt = document.createElement("div"); elt.className = "runtime-overlay"; elt.style.background = "white"; elt.style.opacity = "0.5"; elt.style.outline = "5px solid pink"; elt.style.width = "100px"; elt.style.height = "100px"; elt.textContent = "Not scaled, centered in the middle"; viewer.addOverlay({ element: elt, location: new OpenSeadragon.Point(0.5, 0.5), placement: OpenSeadragon.Placement.CENTER, checkResize: false, rotationMode: OpenSeadragon.OverlayRotationMode.EXACT }); }); $("#hideOverlays").click(function(){ $(".runtime-overlay").toggle(); }); $("#rotate").click(function() { viewer.viewport.setRotation(viewer.viewport.getRotation() + 22.5); $("#degrees").text(viewer.viewport.getRotation() + "deg"); }); </script> </body> </html>