<!DOCTYPE html>
<html>
<head>
    <title>OpenSeadragon Coordinates 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>
        Simple demo page to show OpenSeadragon coordinates system.
    </div>
    <div id="contentDiv" class="openseadragon1"></div>
    <div>
        <table border="1">
            <tr>
                <th></th>
                <th>Window (pixel)</th>
                <th>Container (pixel)</th>
                <th>Viewport (point)</th>
                <th>Big Image (pixel)</th>
                <th>Small Image (pixel)</th>
            </tr>
            <tr>
                <th>Cursor position</th>
                <td id="cursorWindowPosition"></td>
                <td id="cursorContainerPosition"></td>
                <td id="cursorViewportPosition"></td>
                <td id="cursorImage1Position"></td>
                <td id="cursorImage2Position"></td>
            </tr>
            <tr>
                <th>Big Image top left position</th>
                <td id="image1WindowPosition"></td>
                <td id="image1ContainerPosition"></td>
                <td id="image1ViewportPosition"></td>
                <td id="image1Image1Position"></td>
                <td id="image1Image2Position"></td>
            </tr>
            <tr>
                <th>Small Image top left position</th>
                <td id="image2WindowPosition"></td>
                <td id="image2ContainerPosition"></td>
                <td id="image2ViewportPosition"></td>
                <td id="image2Image1Position"></td>
                <td id="image2Image2Position"></td>
            </tr>
            <tr>
                <th>Zoom</th>
                <td>-</td>
                <td>-</td>
                <td id="viewportZoom"></td>
                <td id="image1Zoom"></td>
                <td id="image2Zoom"></td>
            </tr>
        </table>
    </div>
    <button onclick="rotate();">Rotate</button>
    <script type="text/javascript">

        var viewer = OpenSeadragon({
            debugMode: true,
            id: "contentDiv",
            prefixUrl: "../../build/openseadragon/images/",
            tileSources: [{
                    tileSource: "../data/testpattern.dzi",
                    clip: new OpenSeadragon.Rect(0, 0, 500, 1000)
                }, {
                    tileSource: "../data/testpattern.dzi",
                    x: 1,
                    y: 1,
                    width: 0.5
                }
            ],
            showNavigator: true
        });
        viewer.addHandler("open", onAnimation);

        function pointToString(point) {
            return point.x.toPrecision(4) + "," + point.y.toPrecision(4);
        }

        function onMouseTrackerMove(event) {
            var viewerX = event.position.x;
            var viewerY = event.position.y;
            var windowPoint = new OpenSeadragon.Point(viewerX, viewerY);
            $("#cursorWindowPosition").text(pointToString(windowPoint));
            var containerPoint = windowPoint.minus(
                    OpenSeadragon.getElementPosition(viewer.element));
            $("#cursorContainerPosition").text(pointToString(containerPoint));
            var image1 = viewer.world.getItemAt(0);
            var imagePoint = image1.windowToImageCoordinates(windowPoint);
            $("#cursorImage1Position").text(pointToString(imagePoint));
            var image2 = viewer.world.getItemAt(1);
            var imagePoint = image2.windowToImageCoordinates(windowPoint);
            $("#cursorImage2Position").text(pointToString(imagePoint));
            var viewportPoint = viewer.viewport.windowToViewportCoordinates(windowPoint);
            $("#cursorViewportPosition").text(pointToString(viewportPoint));
        }
        mouseTracker = new OpenSeadragon.MouseTracker({
            element: document,
            moveHandler: onMouseTrackerMove
        }).setTracking(true);

        function onAnimation() {
            var viewportZoom = viewer.viewport.getZoom(true);
            $("#viewportZoom").text(viewportZoom.toFixed(3));
            var image1 = viewer.world.getItemAt(0);
            var image1Zoom = image1.viewportToImageZoom(viewportZoom);
            $("#image1Zoom").text(image1Zoom.toFixed(3));
            var image2 = viewer.world.getItemAt(1);
            var image2Zoom = image2.viewportToImageZoom(viewportZoom);
            $("#image2Zoom").text(image2Zoom.toFixed(3));

            var origin = new OpenSeadragon.Point(0, 0);
            var image1WindowPoint = image1.imageToWindowCoordinates(origin);
            $("#image1WindowPosition").text(pointToString(image1WindowPoint));
            var image1ContainerPoint = image1.imageToViewerElementCoordinates(origin);
            $("#image1ContainerPosition").text(pointToString(image1ContainerPoint));
            var image1Image1Position = image1.viewportToImageCoordinates(
                image1.getBounds(true).getTopLeft());
            $("#image1Image1Position").text(pointToString(image1Image1Position));
            var image1Image2Position = image1.viewportToImageCoordinates(
                image2.getBounds(true).getTopLeft());
            $("#image1Image2Position").text(pointToString(image1Image2Position));
            var image1ViewportPoint = image1.imageToViewportCoordinates(origin);
            $("#image1ViewportPosition").text(pointToString(image1ViewportPoint));

            var image2WindowPoint = image2.imageToWindowCoordinates(origin);
            $("#image2WindowPosition").text(pointToString(image2WindowPoint));
            var image2ContainerPoint = image2.imageToViewerElementCoordinates(origin);
            $("#image2ContainerPosition").text(pointToString(image2ContainerPoint));
            var image2Image1Position = image2.viewportToImageCoordinates(
                image1.getBounds(true).getTopLeft());
            $("#image2Image1Position").text(pointToString(image2Image1Position));
            var image2Image2Position = image2.viewportToImageCoordinates(
                image2.getBounds(true).getTopLeft());
            $("#image2Image2Position").text(pointToString(image2Image2Position));
            var image2ViewportPoint = image2.imageToViewportCoordinates(origin);
            $("#image2ViewportPosition").text(pointToString(image2ViewportPoint));
        }
        viewer.addHandler("animation", onAnimation);

        function rotate() {
            viewer.viewport.setRotation(viewer.viewport.getRotation() + 45);
            onAnimation();
        }
    </script>
</body>
</html>