27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 | Copyright (C) 2015 OpenSeadragon contributors
2 |
3 | Redistribution and use in source and binary forms, with or without
4 | modification, are permitted provided that the following conditions are met:
5 |
6 | - Redistributions of source code must retain the above copyright notice,
7 | this list of conditions and the following disclaimer.
8 |
9 | - Redistributions in binary form must reproduce the above copyright notice,
10 | this list of conditions and the following disclaimer in the documentation
11 | and/or other materials provided with the distribution.
12 |
13 | - Neither the name of OpenSeadragon nor the names of its contributors
14 | may be used to endorse or promote products derived from this software
15 | without specific prior written permission.
16 |
17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 | POSSIBILITY OF SUCH DAMAGE.
28 |
--------------------------------------------------------------------------------
/common/openseadragon/LICENSE.txt:
--------------------------------------------------------------------------------
1 | Copyright (C) 2009 CodePlex Foundation
2 | Copyright (C) 2010-2022 OpenSeadragon contributors
3 |
4 | Redistribution and use in source and binary forms, with or without
5 | modification, are permitted provided that the following conditions are met:
6 |
7 | - Redistributions of source code must retain the above copyright notice,
8 | this list of conditions and the following disclaimer.
9 |
10 | - Redistributions in binary form must reproduce the above copyright notice,
11 | this list of conditions and the following disclaimer in the documentation
12 | and/or other materials provided with the distribution.
13 |
14 | - Neither the name of CodePlex Foundation nor the names of its contributors
15 | may be used to endorse or promote products derived from this software
16 | without specific prior written permission.
17 |
18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 | POSSIBILITY OF SUCH DAMAGE.
29 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # OpenSeadragonizer: zooming browser extension
2 |
3 | ## Installation
4 |
5 | - [Chrome](https://chrome.google.com/webstore/detail/openseadragonizer/lbjfeiidhldnfohmhnnnjgcmgjbnibgd)
6 | - [Firefox](https://addons.mozilla.org/en-US/firefox/addon/openseadragonizer/)
7 |
8 | ## Usage
9 |
10 | With the browser extension installed, right click on any image on a webpage and select "View with OpenSeadragon".
11 |
12 | ## Development
13 |
14 | ### First Time Setup
15 |
16 | All command-line operations for building and testing OpenSeadragon are scripted using [Grunt](http://gruntjs.com/) which is based on [Node.js](http://nodejs.org/). To get set up:
17 |
18 | 1. Install Node, if you haven't already (available at the link above)
19 | 1. Install the Grunt command line runner (if you haven't already); on the command line, run `npm install -g grunt-cli`
20 | 1. Clone the browser-extension repository
21 | 1. On the command line, go in to the browser-extension folder
22 | 1. Run `npm install`
23 |
24 | You're set... continue reading for build and test instructions.
25 |
26 | ### Building from Source
27 |
28 | To build, just run (on the command line, in the browser-extension folder):
29 |
30 | grunt
31 |
32 | If you want Grunt to watch your source files and rebuild every time you change one, use:
33 |
34 | grunt watch
35 |
36 | ### Testing in Chrome
37 |
38 | 1. Go to your Chrome settings and then extensions.
39 | 1. Turn on the "Developer mode" checkbox.
40 | 1. Choose "Load unpacked extension" and select build/webextension from this repository.
41 |
42 | ### Testing in Firefox
43 |
44 | 1. Type `about:debugging` in the address bar.
45 | 1. Click on "Load Temporary Add-on" and select build/webextension from this repository.
46 |
47 | ### Publishing the standalone web site
48 |
49 | 1. Run `grunt publish`.
50 | 1. Commit and push the `../openseadragon.github.com` website.
51 |
--------------------------------------------------------------------------------
/nbproject/project.properties:
--------------------------------------------------------------------------------
1 | auxiliary.org-netbeans-modules-css-prep.less_2e_compiler_2e_options=
2 | auxiliary.org-netbeans-modules-css-prep.less_2e_enabled=false
3 | auxiliary.org-netbeans-modules-css-prep.less_2e_mappings=/less:/css
4 | auxiliary.org-netbeans-modules-css-prep.sass_2e_compiler_2e_options=
5 | auxiliary.org-netbeans-modules-css-prep.sass_2e_enabled=false
6 | auxiliary.org-netbeans-modules-css-prep.sass_2e_mappings=/scss:/css
7 | auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.expand-tabs=true
8 | auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.indent-shift-width=4
9 | auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.spaces-per-tab=4
10 | auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.tab-size=8
11 | auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.text-limit-width=80
12 | auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.text-line-wrap=none
13 | auxiliary.org-netbeans-modules-editor-indent.CodeStyle.usedProfile=project
14 | auxiliary.org-netbeans-modules-editor-indent.text.javascript.CodeStyle.project.indent-shift-width=4
15 | auxiliary.org-netbeans-modules-editor-indent.text.x-json.CodeStyle.project.indent-shift-width=4
16 | auxiliary.org-netbeans-modules-javascript-nodejs.enabled=false
17 | auxiliary.org-netbeans-modules-javascript-nodejs.node_2e_default=true
18 | auxiliary.org-netbeans-modules-javascript-nodejs.run_2e_enabled=false
19 | auxiliary.org-netbeans-modules-javascript-nodejs.sync_2e_enabled=true
20 | auxiliary.org-netbeans-modules-javascript2-requirejs.enabled=true
21 | auxiliary.org-netbeans-modules-web-clientproject-api.js_2e_libs_2e_folder=js/libs
22 | browser.autorefresh.Chromium.INTEGRATED=true
23 | browser.highlightselection.Chromium.INTEGRATED=true
24 | browser.run=true
25 | file.reference.openseadragon-browser-extension=.
26 | files.encoding=UTF-8
27 | project.licensePath=./nbproject/licenseheader.txt
28 | site.root.folder=
29 | source.folder=
30 | start.file=index.html
31 | web.context.root=/browser-extension
32 |
--------------------------------------------------------------------------------
/webextension/webextension.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015 OpenSeadragon contributors
3 | *
4 | * Redistribution and use in source and binary forms, with or without
5 | * modification, are permitted provided that the following conditions are met:
6 | *
7 | * - Redistributions of source code must retain the above copyright notice,
8 | * this list of conditions and the following disclaimer.
9 | *
10 | * - Redistributions in binary form must reproduce the above copyright notice,
11 | * this list of conditions and the following disclaimer in the documentation
12 | * and/or other materials provided with the distribution.
13 | *
14 | * - Neither the name of OpenSeadragon nor the names of its contributors
15 | * may be used to endorse or promote products derived from this software
16 | * without specific prior written permission.
17 | *
18 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 | * POSSIBILITY OF SUCH DAMAGE.
29 | */
30 | (function () {
31 | chrome.contextMenus.create({
32 | type: "normal",
33 | contexts: ["image"],
34 | title: "View with OpenSeadragon",
35 | onclick: function (event) {
36 | chrome.tabs.update({
37 | url: "index.html?img=" + encodeURIComponent(event.srcUrl) +
38 | "&encoded=true"
39 | });
40 | }
41 | });
42 | })();
43 |
--------------------------------------------------------------------------------
/nbproject/licenseheader.txt:
--------------------------------------------------------------------------------
1 | <#if licenseFirst??>
2 | ${licenseFirst}
3 | #if>
4 | ${licensePrefix}Copyright (C) 2015 OpenSeadragon contributors
5 | ${licensePrefix}
6 | ${licensePrefix}Redistribution and use in source and binary forms, with or without
7 | ${licensePrefix}modification, are permitted provided that the following conditions are met:
8 | ${licensePrefix}
9 | ${licensePrefix}- Redistributions of source code must retain the above copyright notice,
10 | ${licensePrefix} this list of conditions and the following disclaimer.
11 | ${licensePrefix}
12 | ${licensePrefix}- Redistributions in binary form must reproduce the above copyright notice,
13 | ${licensePrefix} this list of conditions and the following disclaimer in the documentation
14 | ${licensePrefix} and/or other materials provided with the distribution.
15 | ${licensePrefix}
16 | ${licensePrefix}- Neither the name of OpenSeadragon nor the names of its contributors
17 | ${licensePrefix} may be used to endorse or promote products derived from this software
18 | ${licensePrefix} without specific prior written permission.
19 | ${licensePrefix}
20 | ${licensePrefix}THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 | ${licensePrefix}AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 | ${licensePrefix}IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 | ${licensePrefix}ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24 | ${licensePrefix}LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25 | ${licensePrefix}CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26 | ${licensePrefix}SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27 | ${licensePrefix}INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28 | ${licensePrefix}CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29 | ${licensePrefix}ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 | ${licensePrefix}POSSIBILITY OF SUCH DAMAGE.
31 | <#if licenseLast??>
32 | ${licenseLast}
33 | #if>
34 |
--------------------------------------------------------------------------------
/common/loading.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/common/style.css:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright (C) 2015 OpenSeadragon contributors
3 |
4 | Redistribution and use in source and binary forms, with or without
5 | modification, are permitted provided that the following conditions are met:
6 |
7 | - Redistributions of source code must retain the above copyright notice,
8 | this list of conditions and the following disclaimer.
9 |
10 | - Redistributions in binary form must reproduce the above copyright notice,
11 | this list of conditions and the following disclaimer in the documentation
12 | and/or other materials provided with the distribution.
13 |
14 | - Neither the name of OpenSeadragon nor the names of its contributors
15 | may be used to endorse or promote products derived from this software
16 | without specific prior written permission.
17 |
18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 | POSSIBILITY OF SUCH DAMAGE.
29 | */
30 | body {
31 | margin: 0;
32 | color: #333;
33 | font-family: Helvetica, Arial, FreeSans, san-serif;
34 | background-color: #121621;
35 | }
36 |
37 | #loader {
38 | position: absolute;
39 | top: 0;
40 | left: 0;
41 | bottom: 0;
42 | right: 0;
43 | text-align: center;
44 | }
45 |
46 | #loader img {
47 | vertical-align: middle;
48 | max-width: 100%;
49 | max-height: 100%;
50 | }
51 |
52 | .img-vertical-align-helper {
53 | display: inline-block;
54 | height: 100%;
55 | vertical-align: middle;
56 | }
57 |
58 | #openseadragon {
59 | position: absolute;
60 | top: 0;
61 | left: 0;
62 | bottom: 0;
63 | right: 0;
64 | }
65 |
66 | #popup {
67 | display: none;
68 | position: absolute;
69 | top: 30%;
70 | left: 12.5%;
71 | background-color: #EEE;
72 | width: 75%;
73 | font-size: x-large;
74 | padding: 5px;
75 | border-radius: 5px;
76 | }
77 |
78 | #popup input {
79 | width: 100%;
80 | font-size: x-large;
81 | color: #333;
82 | margin-bottom: 5px;
83 | box-sizing: border-box;
84 | }
85 |
86 | #popup button {
87 | font-size: x-large;
88 | border-radius: 5px;
89 | color: #333;
90 | border: 1px solid black;
91 | }
92 |
93 | #error {
94 | margin-bottom: 1%;
95 | color: #800;
96 | font-size: large;
97 | font-style: italic;
98 | text-align: center;
99 | }
100 |
101 | #loading-popup {
102 | display: none;
103 | position: absolute;
104 | top: 30%;
105 | width: 100%;
106 | text-align: center;
107 | }
108 |
109 | #loading-message {
110 | background-color: rgba(255, 255, 255, 0.5);
111 | font-size: x-large;
112 | padding: 5px;
113 | border-radius: 5px;
114 | }
115 |
116 | #loading-message > * {
117 | vertical-align: middle;
118 | }
119 |
120 | .powered-by {
121 | position: absolute;
122 | color: #437AB2;
123 | right: 1%;
124 | bottom: 5%;
125 | font-size: medium;
126 | text-align: right;
127 | }
128 |
129 | .powered-by a {
130 | color: #437AB2;
131 | }
132 |
--------------------------------------------------------------------------------
/Gruntfile.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015 OpenSeadragon contributors
3 | *
4 | * Redistribution and use in source and binary forms, with or without
5 | * modification, are permitted provided that the following conditions are met:
6 | *
7 | * - Redistributions of source code must retain the above copyright notice,
8 | * this list of conditions and the following disclaimer.
9 | *
10 | * - Redistributions in binary form must reproduce the above copyright notice,
11 | * this list of conditions and the following disclaimer in the documentation
12 | * and/or other materials provided with the distribution.
13 | *
14 | * - Neither the name of OpenSeadragon nor the names of its contributors
15 | * may be used to endorse or promote products derived from this software
16 | * without specific prior written permission.
17 | *
18 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 | * POSSIBILITY OF SUCH DAMAGE.
29 | */
30 | module.exports = function (grunt) {
31 |
32 | // ----------
33 | grunt.loadNpmTasks("grunt-contrib-watch");
34 | grunt.loadNpmTasks("grunt-contrib-clean");
35 | grunt.loadNpmTasks("grunt-contrib-compress");
36 |
37 | var releaseRoot = "../openseadragon.github.com/openseadragonizer/";
38 |
39 | // ----------
40 | // Project configuration.
41 | grunt.initConfig({
42 | clean: {
43 | build: ["build"],
44 | webextension: ["build/webextension"],
45 | release: {
46 | src: [releaseRoot],
47 | options: {
48 | force: true
49 | }
50 | }
51 | },
52 | watch: {
53 | files: ["Gruntfile.js", "webextension/*", "common/*"],
54 | tasks: "watchTask"
55 | },
56 | compress: {
57 | webextension: {
58 | options: {
59 | archive: "build/webextension.zip"
60 | },
61 | files: [{
62 | expand: true,
63 | cwd: "build/webextension",
64 | src: ["**/*"],
65 | dest: ""
66 | }
67 | ]
68 | }
69 | }
70 | });
71 |
72 | // ----------
73 | // Watch task.
74 | grunt.registerTask("watchTask", function () {
75 | grunt.task.run("build");
76 | });
77 |
78 | function copyCommonDir(destination) {
79 | grunt.file.recurse("common", function (abspath, rootdir, subdir, filename) {
80 | // Only copy the minified version of OSD + the images dir.
81 | if (subdir === "openseadragon" && filename !== "openseadragon.min.js") {
82 | return;
83 | }
84 | subdir = subdir ? subdir + "/" : "";
85 | grunt.file.copy(abspath, destination + subdir + filename);
86 | });
87 | }
88 |
89 | // ----------
90 | // WebExtension build task.
91 | grunt.registerTask("build:webextension", function () {
92 | copyCommonDir("build/webextension/");
93 | grunt.file.recurse("webextension", function (abspath, rootdir, subdir, filename) {
94 | subdir = subdir ? subdir + "/" : "";
95 | grunt.file.copy(abspath, "build/webextension/" + subdir + filename);
96 | });
97 | grunt.task.run("compress:webextension");
98 | });
99 |
100 | // ----------
101 | // Copy release task.
102 | grunt.registerTask("copy:release", function () {
103 | copyCommonDir(releaseRoot);
104 | });
105 |
106 | // ----------
107 | // Full build task.
108 | grunt.registerTask("build", ["clean", "build:webextension"]);
109 |
110 | // ----------
111 | // Publish task.
112 | // Copies the content of common to ../openseadragon.github.com/openseadragonizer.
113 | grunt.registerTask("publish", ["clean:release", "build", "copy:release"]);
114 |
115 | // ----------
116 | // Default task.
117 | // Does a normal build.
118 | grunt.registerTask("default", ["build"]);
119 | };
120 |
--------------------------------------------------------------------------------
/common/index.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015 OpenSeadragon contributors
3 | *
4 | * Redistribution and use in source and binary forms, with or without
5 | * modification, are permitted provided that the following conditions are met:
6 | *
7 | * - Redistributions of source code must retain the above copyright notice,
8 | * this list of conditions and the following disclaimer.
9 | *
10 | * - Redistributions in binary form must reproduce the above copyright notice,
11 | * this list of conditions and the following disclaimer in the documentation
12 | * and/or other materials provided with the distribution.
13 | *
14 | * - Neither the name of OpenSeadragon nor the names of its contributors
15 | * may be used to endorse or promote products derived from this software
16 | * without specific prior written permission.
17 | *
18 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 | * POSSIBILITY OF SUCH DAMAGE.
29 | */
30 | (function () {
31 | var loaderElt = document.getElementById("loader");
32 | var popupElt = document.getElementById("popup");
33 | var urlElt = document.getElementById("url");
34 | var loadingPopupElt = document.getElementById("loading-popup");
35 |
36 | function show() {
37 | location.href = '?img=' + encodeURIComponent(urlElt.value) +
38 | '&encoded=true';
39 | }
40 |
41 | urlElt.onkeyup = function (event) {
42 | if (event.keyCode === 13) {
43 | show();
44 | }
45 | };
46 |
47 | document.getElementById("show-button").onclick = show;
48 |
49 | init();
50 |
51 | function init() {
52 | popupElt.style.display = "none";
53 |
54 | var imgUrlParameter = OpenSeadragon.getUrlParameter("img");
55 | if (!imgUrlParameter) {
56 | popupElt.style.display = "block";
57 | return;
58 | }
59 | var url = OpenSeadragon.getUrlParameter("encoded") ?
60 | decodeURIComponent(imgUrlParameter) : imgUrlParameter;
61 |
62 | var options = {
63 | src: url,
64 | container: document.getElementById("loader"),
65 | crossOrigin: 'Anonymous'
66 | };
67 | loadImage(options, onImageLoaded, function (event) {
68 | loaderElt.removeChild(event.image);
69 | // We retry without CORS
70 | delete options.crossOrigin;
71 | loadImage(options, onImageLoaded, onError);
72 | });
73 | document.title = "OpenSeadragon " + url;
74 | }
75 |
76 | function loadImage(options, successCallback, errorCallback) {
77 | loadingPopupElt.style.display = "block";
78 | var image = new Image();
79 | options.container.appendChild(image);
80 | image.onload = function () {
81 | loadingPopupElt.style.display = "none";
82 | successCallback({
83 | image: image,
84 | options: options
85 | });
86 | };
87 | image.onerror = function () {
88 | loadingPopupElt.style.display = "none";
89 | errorCallback({
90 | image: image,
91 | options: options
92 | });
93 | };
94 | if (options.crossOrigin) {
95 | image.crossOrigin = options.crossOrigin;
96 | }
97 | image.src = options.src;
98 | }
99 |
100 | function onImageLoaded(event) {
101 | var image = event.image;
102 | document.title = "OpenSeadragon " + image.src +
103 | " (" + image.naturalWidth + "x" + image.naturalHeight + ")";
104 | var viewer = OpenSeadragon({
105 | id: "openseadragon",
106 | prefixUrl: "openseadragon/images/",
107 | tileSources: {
108 | type: 'image',
109 | url: image.src,
110 | crossOriginPolicy: event.options.crossOrigin
111 | },
112 | maxZoomPixelRatio: 2,
113 | showRotationControl: true
114 | });
115 | viewer.addOnceHandler("tile-drawn", function() {
116 | document.body.removeChild(loaderElt);
117 | });
118 | }
119 |
120 | function onError(event) {
121 | popupElt.style.display = "block";
122 | loaderElt.removeChild(event.image);
123 | document.getElementById("error").textContent =
124 | "Cannot retrieve requested image.";
125 | }
126 |
127 | })();
128 |
--------------------------------------------------------------------------------
/common/openseadragon/changelog.txt:
--------------------------------------------------------------------------------
1 | OPENSEADRAGON CHANGELOG
2 | =======================
3 |
4 | 4.1.0:
5 |
6 | * NEW BEHAVIOR: When `navigatorRotate` is false, while the navigator image doesn't rotate, the red outline now does (#2356 @lcl45)
7 | * The viewer no longer emits `canvas-key` events for both keydown and keypress events; canvas-key is now just for keydown, and the new `canvas-key-press` is for keypress (#2270 @hrghauri)
8 | * You can now specify a priority when calling addHandler, to control when your event handler gets called relative to others (#2273 @Aiosa)
9 | * Added tileRetryMax and tileRetryDelay options, so the viewer can retry loading failed tiles (#2238 @Ughuuu @paaddyy, #2334 @Ughuuu @Titan21)
10 | * All of the viewers keyboard handling is now in response to keydown events (it used to be split between keydown and keypress) (#2291 @MohitBansal321)
11 | * Added `canvas-focus` and `canvas-blur` events to Viewer (#2301 @MohitBansal321)
12 | * You can now more easily add custom buttons to the viewer (#2306 @MohitBansal321)
13 | * The fitBounds function now takes zoom constraints into account (#2293 @pearcetm)
14 | * The viewer now has an `after-resize` event what happens after the viewport bounds have been updated, to complement the `resize` event which happens before (#2317 @pearcetm)
15 | * IIIFTileSource now uses resolution level dimensions provided in the info.json "sizes" field for more accurate tile requests (#2337 @ruven)
16 | * Added setAjaxHeaders method to Viewer and TiledImage (#2346 @uschmidt83)
17 | * Improved documentation (#2297 @KevinBritten)
18 | * Fixed: The `tile-loaded` event's completionCallback could be called more than once in some circumstances (#2282 @Aiosa, @pearcetm)
19 | * Fixed: Navigator display rectangle was off if the page had `box-sizing: border-box` (#2276 @ambujsahu81)
20 | * Fixed: Code that required identifying functions would fail for async functions (#2273 @Aiosa)
21 | * Fixed: Reference strip click detection was not accurate for long reference strips (#2280 @damonsson)
22 | * Fixed: Translation problems in some circumstances with cropping polygons enabled (#2316 @pearcetm)
23 | * Fixed: The navigator area rectangle would grow larger when you zoom in very far (#2318 @donotloveshampo)
24 | * Fixed: JSON with embedded XML was being incorrectly identified as XML (#2328 @craigberry)
25 | * Fixed: Touch/pinch rotate was not working properly on some platforms (#2324 @rsimon, @pearcetm)
26 | * Fixed: Navigator rotation didn't honor `immediately` parameter (#2333 @robertjcolley)
27 | * Fixed: The navigator didn't update for its new size in certain circumstances (#2347 @pearcetm)
28 |
29 | 4.0.0:
30 |
31 | * NEW BEHAVIOR: Setting the viewport rotation now animates by default (pass true for the new `immediately` parameter to disable) (#2136 @jonasengelmann)
32 | * NEW BEHAVIOR: The auto resize now takes both width and height into account when scaling the contents proportionally to the viewer (#2256 @pearcetm)
33 | * DEPRECATION: Don't access the viewport's degrees property directly anymore; instead use setRotation and getRotation (#2136 @jonasengelmann)
34 | * New gesture: Double-click and drag to zoom (on by default for touch) (#2225 @HamzaTatheer)
35 | * You can now provide a pivot point when rotating the viewport (#2233 #2253 @pearcetm)
36 | * Improved the constraints that keep the image in the viewer, specifically when zoomed out a lot (#2160 @joedf, #2246 @pearcetm)
37 | * You can now provide an element for the navigator (as an alternative to an ID) (#1303 @cameronbaney, #2166 #2175 @joedf)
38 | * Now supporting IIIF "id" and "identifier" in addition to "@id" (#2173 @ahankinson)
39 | * We now delegate tile fetching and caching to the TileSource, to allow for custom tile formats (#2148 @Aiosa)
40 | * Added support for dynamic URLs from tile sources (#2247 @JohnReagan)
41 | * The viewer now emits before-destroy and destroy events (#2239 @pearcetm)
42 | * Auto resize detection is now more efficient (#2256 @pearcetm)
43 | * Improved documentation (#2211 @shyamkumaryadav)
44 | * Fixed: Cropping tiled images with polygons was broken (#2183 @altert)
45 | * Fixed: Boundary constraints were wrong when the viewport was rotated (#2249 @pearcetm)
46 | * Fixed: IIIF tile sizes would be calculated wrong on rare occasions (#2206 @filak)
47 | * Fixed: Disabling buttons only changed their appearance, but they were still clickable (#2187 @pearcetm)
48 | * Fixed: ImageTileSource produced an error having to do with getTileHashKey (#2190 @Aiosa)
49 | * Fixed: On startup you would get an unnecessary "Viewer.buttons is deprecated" warning (#2201 @joedf, #2219 @jssullivan, #2212 @joedf)
50 |
51 | 3.1.0:
52 |
53 | * Added subPixelRoundingForTransparency Viewer option to address seams that can appear in semi-transparent images (#2075 @TanukiSharp)
54 | * Added Viewer.isAnimating() (#2075 @TanukiSharp)
55 | * Added isFullScreen method to Viewer (#2067 @JachiOnuoha)
56 | * Added option to include POST data when loading files via Ajax (#2072 @Aiosa)
57 | * Exposed TiledImage's private functions for better maintainability (#2134 @Aiosa)
58 | * Tile cache keys are now generated by the tile source, so it's easier to override them as needed (#2138 @Aiosa)
59 | * Pinch to zoom now zooms around the center of the pinch, rather than the center of the viewer (#2158 @cavenel)
60 | * Added fallback and deprecation warning for Viewer.buttons (which got changed to buttonGroup in 3.0.0) (#2153 @devbyjonah)
61 | * Fixed an issue where turning off panVertical or panHorizontal would not affect the panning keyboard combos (#2069 @JachiOnuoha)
62 | * Cleaned up console.logs so that errors and warnings use console.error and console.warn as appropriate (#2073 @Abhishek-90)
63 | * Improved documentation (#2067 @JachiOnuoha, #2112 @shyamkumaryadav, #2152 @joedf, #2155 @samwilson)
64 | * Fixed: Setting useCanvas to false would break the viewer (#2116 @rvv-bouvet)
65 | * Allow silencing multi-image warnings on viewport coordinate conversion functions (#2120 @claycoleman)
66 | * Fixed: Swiping fast multiple times made contact points in MouseTracker out of sync for touch events (#2121 @ronnymikalsen)
67 | * Made MouseTracker more robust in certain scenarios (#2134, #2147 @Aiosa)
68 | * Fixed an issue where full page mode wouldn't grow properly if you resized the window (#2100 @TanukiSharp)
69 | * Now if you pass an error handler into makeAjaxRequest, it doesn't report errors into the console (#2142 @Aiosa)
70 | * Fixed error caused by attaching MouseTracker to the page's document element (#2145 @tdiprima)
71 | * Fixed an issue that would sometimes cause problems with freeing up ImageTileSource memory (#2162 @pearcetm)
72 |
73 | 3.0.0:
74 |
75 | * BREAKING CHANGE: Dropped support for older browsers (IE < 11) (#1872 #1949 #1951 @msalsbery, #1950 @rmontroy)
76 | * BREAKING CHANGE: Removed deprecated OpenSeadragon.getEvent function (#1949 @msalsbery)
77 | * DEPRECATION: MouseTracker exitHandler deprecated for name change to leaveHandler for consistency with DOM event names (#1872 @msalsbery)
78 | * Now when "simple image" tile sources are removed from the viewer, they free the memory used by the pyramid they create (#1789 @TakumaKira)
79 | * Improvements to docs (#1814 @kenanchristian, #1872 @msalsbery, #1996 @tdiprima)
80 | * Better cleanup on destruction, to avoid memory leaks (#1832 @JoFrMueller)
81 | * Better handle destruction when navigator in custom location (#1884 @woodchuck)
82 | * Miscellaneous code cleanup (#1840 @msalsbery)
83 | * You can now specify tileSize for the Zoomify Tile Source (#1868 @abrlam)
84 | * Better use of IIIF "max" and "full" URL parameters (#1871 @MImranAsghar)
85 | * You can now specify the file format of the tiles in the Zoomify tile source (#1889 @abrlam)
86 | * Improved browser sniffing - detect EDGE and CHROMEEDGE browsers (#1872 @msalsbery)
87 | * Improved DOM event model feature detection (#1872 @msalsbery)
88 | * Added support for options parameter on addEvent()/removeEvent (to support passive option) (#1872 @msalsbery)
89 | * Added OpenSeadragon.eventIsCanceled() function for defaultPrevented detection on DOM events (#1872 @msalsbery)
90 | * MouseTracker: better PointerEvent model detection - removed use of deprecated window.navigator.pointerEnabled (#1872 @msalsbery)
91 | * MouseTracker: added overHandler/outHandler options for handling corresponding pointerover/pointerout events (#1872 @msalsbery)
92 | * MouseTracker: changed enterHandler/leaveHandler to use DOM pointerenter/pointerleave events instead of simulating using pointerover/pointerout (#1872 @msalsbery)
93 | * All internal uses of MouseTracker use pointerenter/pointerleave events instead of pointerover/pointerout events for more consistent pointer tracking (#1872 @msalsbery)
94 | * Fixed bug in Button class where two MouseTracker event handlers used an invalid "this" causing issues in some browsers (#1872 @msalsbery)
95 | * Added pointerType property to Viewer container-enter, container-exit, canvas-drag, canvas-drag-end, canvas-pinch events (#1872 @msalsbery)
96 | * MouseTracker: Fire dragEndHandler event even if release point same as initial contact point (#1872 @msalsbery)
97 | * MouseTracker: Pointer capture implemented with capture APIs where available. Only fallback to emulated capture on extremely old browsers (#1872 @msalsbery)
98 | * MouseTracker: Added preProcessEventHandler option to allow MouseTracker instances to control bubbling and default behavior of events on their associated element (#1872 @msalsbery)
99 | * MouseTracker: Improved handling of canceled events (#1872 @msalsbery)
100 | * MouseTracker: Improved releasing of tracked pointers on destroy()/stopTracking() (#1872 @msalsbery)
101 | * Updated Viewer, Button, Drawer, Navigator, ReferenceStrip DOM for proper DOM event handling (#1872 @msalsbery)
102 | * Added OpenSeadragon.setElementPointerEventsNone() for setting pointer-events:'none' on DOM elements (#1872 @msalsbery)
103 | * MouseTracker: added contextMenuHandler option for handling contextmenu events (#1872 @msalsbery)
104 | * Viewer: added a canvas-contextmenu event (#1872 @msalsbery)
105 | * Fixed simulated drag events in navigator tests (#1949 @msalsbery)
106 | * Added preventDefault option to MouseTracker.contextMenuHandler and Viewer 'canvas-contextmenu' event args (#1951 @msalsbery)
107 | * MouseTracker: Added preProcessEventHandler for keydown, keyup, keypress, focus, blur Events (#1951 @msalsbery)
108 | * Fixed preventDefaultAction functionality in viewer events (#1953 @msalsbery)
109 | * Added setImageFormatsSupported function (#1954 @pandaxtc)
110 | * Added dragToPan to the GestureSettings class, implemented in Viewer (#1956 @msalsbery)
111 | * Added preventDefault option to MouseTracker handlers: scrollHandler, keyDownHandler, keyUpHandler, keyHandler (#1957 @msalsbery)
112 | * Fixed test "Events: Viewer: preventDefaultAction in dblClickHandler". Fixes #1372 (#1960 @msalsbery)
113 | * ReferenceStrip: Fixed issue where its element was being removed from its parent element twice on destroy, causing an exception (#1958 @msalsbery)
114 | * ReferenceStrip: Made its element focusable for keyboard navigation (#1958 @msalsbery)
115 | * You can now flip individual images (not just the whole viewport) (#1903 @ali1234)
116 | * Accessibility: we now take the browser's zoom into account when choosing what detail level to draw (#1937 @ronnymikalsen)
117 | * Fixed a bug causing overlays to disappear in Sequence Mode (#1865 @gunmiosb)
118 | * Fixed a bug where the ajaxHeaders provided per-image were not being used for image requests (#1968 @maxshuty)
119 | * MouseTracker: Added workaround for WebKit Pointer Event Implicit Capture Bug (#1972 @msalsbery)
120 | * Removed test for move-leave (fly-over, no enter event)...not a valid, handleable event state, no longer supported (#1972 @msalsbery)
121 | * Added OpenSeadragon.setElementPointerEvents() for setting pointer-events to other values besides 'none' on DOM elements (#1972 @msalsbery)
122 | * Now ensuring the page body is display:block when in fullscreen (#1995 @thewilkybarkid)
123 | * Added a static method in OpenSeadragon to get an existing viewer (#2000 @HerCerM)
124 | * Now ensuring that the new item is already in the navigator when the "add-item" event fires (#2005 @RammasEchor)
125 | * Added keys to change image in sequence mode (j: previous, k: next) (#2007 @RammasEchor)
126 | * Fixed a bug where the navigator wouldn't pick up opacity/composite changes made while it is loading (#2018 @crydell)
127 | * Explicitly set passive:false for wheel event handlers to suppress console warnings. Fixes #1669 (#2043 @msalsbery)
128 | * Viewer's canvas-click events now include an originalTarget property so you can know which element received the click (#2037 @iangilman)
129 | * Added method for getting the size of an image in window coordinates (#2049 @superbland)
130 | * Added a setMaxLevel function to TileSource so you can change its maxLevel if needed (#2059, #2066 @kim-sanghoon)
131 |
132 | 2.4.2:
133 |
134 | * Add support for IIIF Image API 3.0 beta (#1764)
135 | * You can now crop an image with arbitrary polygons (#1772)
136 | * Improved support for using the Reference Strip in an OpenSeadragon Viewer inside a Web Component (#1676)
137 | * Added setWidth and setHeight methods to Navigator (#1686)
138 | * Improvements to docs (#1696, #1698, #1716, #1719)
139 | * Now passing Viewer AJAX configs down to ReferenceStrip thumbnails (#1701)
140 | * The ReferenceStrip now honors the useCanvas option from the Viewer (#1742)
141 | * Fixed: Navigator was still resizing after you explicitly set its width and height with navigatorWidth and navigatorHeight (#1686)
142 | * Fixed issues with touches on iOS 13 and iPad (#1754, #1756)
143 | * No longer throwing an exception on pages that have malformed URL parameters (#1758)
144 | * Fixed an issue with flipping the viewport on high pixel density screens (#1779)
145 | * Removed use of deprecated imageSmoothingEnabled prefixes (#1740)
146 |
147 | 2.4.1:
148 |
149 | * You can now turn off the default canvas image smoothing, if you want sharp pixels when zoomed in past 100% (#1507, #1593, #1595, #1647, #1648)
150 | * Fixed problem with navigator highlight rectangle when returning from full screen with a custom navigator location (#1515)
151 | * Added option to set rotation increment for nav buttons and keyboard (#1524)
152 | * Fixed issue with flipping and opacity with multi-image (#1549)
153 | * Removed vestigial button group label element that was causing issues for accessibility tools (#1560)
154 | * Fixed a bug causing Viewer.areControlsEnabled to throw an exception (#1562)
155 | * Added tileFormat option to IIIFTileSource so you can specify the tile format (#1625)
156 | * Now using canonical URIs more consistently in IIIF to make caching and processing time easier on the server side (#1625)
157 | * Added support for IIIF's new preferredFormats property (#1656)
158 |
159 | 2.4.0:
160 |
161 | * BREAKING CHANGE: Viewer's canvas-double-click event is now fired before it initiates the zoom (#1288)
162 | * You can now flip the viewport to get a mirror image of the original (#1441)
163 | * You can now prevent canvas-double-click events from zooming on a per-event basis (#1288)
164 | * Fixed: Opacity 0 images were causing unnecessary redraws (#1319)
165 | * The "page" event is now fired after the page index has been updated (#1330)
166 | * Added option pixelsPerArrowPress that sets the speed of arrow keys (#1364)
167 | * Improved IIIF options.maxLevel calculation (#1401)
168 | * Added canvas-key events, along with the ability to cancel key actions (#1414)
169 | * Added optional zoom in the middle of the image instead of pointer position (#1423)
170 | * Now supporting square edge tiles that are padded rather than cropped (#1426)
171 | * Fixed an issue causing the simple image tileSource to sometimes show duplicate copies (#1370)
172 | * Fixed an issue causing seams to appear in semi-transparent PNG tiled images (#1470)
173 | * Added visual customization options for the navigator (#1480)
174 | * You can now prevent canvas-drag events on the navigator (#1484)
175 | * You can now prevent canvas-click events on the navigator (#1416)
176 | * The navigator can now be restricted to just horizontal or just vertical panning (#1416)
177 | * Fixed DziTileSource so it doesn't load levels above maxLevel or below minLevel, if set (#1492)
178 |
179 | 2.3.1:
180 |
181 | * Debug mode now uses different colors for different tiled images (customizable via debugGridColor) (#1271)
182 | * Fixed a problem with preventDefaultAction for the canvas-drag event (#1278)
183 | * Fixed an issue causing double images with certain aspect ratios (#1280)
184 | * Fixed: placeholderFillStyle had no effect (#1286)
185 | * Fixed seams that appear in wrap mode on Safari and Firefox (#1305)
186 |
187 | 2.3.0:
188 |
189 | * BREAKING CHANGE: Tile.distance has been removed (#1027)
190 | * BREAKING CHANGE: Viewer's canvas-click event is now fired before it initiates the zoom (#1148)
191 | * BREAKING CHANGE: Viewer's canvas-drag event is now fired before it pans (#1149)
192 | * Added Zoomify tile source (#863)
193 | * You can now set the rotation of individual tiled images (#1006)
194 | * Added getFullyLoaded method and "fully-loaded-change" event to TiledImage to know when tiles are fully loaded (#837, #1073)
195 | * You can now preload images without drawing them to the screen (#1071)
196 | * Added support for commonjs (#984)
197 | * Added an option to addTiledImage to change the crossOriginPolicy (#981)
198 | * You can now load tiles via AJAX and custom AJAX request headers (#1055)
199 | * Added ability to provide thumbnail URLs for reference strip (#1241)
200 | * Improved panning constraints for constrainDuringPan (#1133 and #1245)
201 | * You can now prevent canvas-click events from zooming on a per-event basis (#1148)
202 | * You can now prevent canvas-drag events from panning on a per-event basis (#1149)
203 | * The navigationControlAnchor option now works for custom toolbar as well (#1004)
204 | * LegacyTileSource now allows any image URLs regardless of type (#1056)
205 | * Enabled configuration of ImageLoader timeout (#1192)
206 | * Viewer.open() now supports an initialPage argument for sequenceMode (#1196)
207 | * New events for opacity and compositeOperation changes (#1203)
208 | * Added support for setting debug mode after the Viewer object has been constructed (#1224)
209 | * Added functions for dynamically adding and removing the reference strip in sequence mode (#1213)
210 | * Better calculation for TileCache release cutoff (#1214)
211 | * The navigator now picks up opacity and compositeOperation changes (#1203)
212 | * Improved calculation for determining which level to load first (#1198)
213 | * Added fix for supporting weird filenames that look like JSONs (#1189)
214 | * Improved DziTileSource guessing of tilesUrl (#1074)
215 | * The Viewer's tileSources option is now smarter about detecting JSON vs XML vs URL (#999)
216 | * Better compression for our UI images (#1134)
217 | * Optimization: Use the squared distance when comparing tiles (#1027)
218 | * Now clamping pixel ratio density to a minimum of 1, fixing display issues on low density devices (#1200)
219 | * More forgiving check for DZI schema (#1249)
220 | * ImageTileSource now works in IE8 (#1041)
221 | * Fixed CORS bug in IE 10 (#967)
222 | * Fixed issue with tiles not appearing with wrapHorizontal/wrapVertical if you pan too far away from the origin (#987, #1066)
223 | * Fixed: Initial tile load wasn't happening in parallel (#1014)
224 | * Fixed problem with "sparse image" DZI files (#995)
225 | * Fix IndexSizeError on IE and Edge that occurred under certain circumstances (e.g. multi-image with transparency) (#1035)
226 | * Fixed error in IE8 when zooming in (due to edge smoothing) (#1064)
227 | * Fixed issue with OpenSeadragon.version in the minified JavaScript (#1099)
228 | * Fixed smoothTileEdgesMinZoom performance degradation on single-tile images (#1101)
229 | * Fixed issue with tiles not appearing after rotation (#1102)
230 | * Fixed: The navigator wasn't respecting the constrainDuringPan setting (#1104)
231 | * Fixed an issue causing overlays to be mis-positioned in some circumstances (#1119)
232 | * Fixed: ImageTileSource would sometimes produce a double image (#1123)
233 | * Fixed: console.debug caused exceptions on IE10 (#1129)
234 | * Fixed: the reference strip would leak memory when opening new sets of images (#1175)
235 | * Fixed: zoomTo/zoomBy ignore refPoint if immediately is true (#1184)
236 | * Fixed: IIPImageServer didn't work with the latest OSD release (#1199)
237 | * Fixed: setItemIndex method not working with navigator inside "open" event (#1201)
238 | * Fixed: The reference strip didn't show the initial page if it wasn't the first page (#1208)
239 | * Fixed: Sometimes the image would stick to the mouse when right-clicking and left-clicking simultaneously (#1223)
240 | * Fixed issue with transparent images sometimes disappearing on Safari (#1222)
241 | * Fixed: One image failing to load could cause the others to never load (#1229)
242 | * Fixed: Mouse up outside map will cause "canvas-drag" event to stick (#1133)
243 | * Fixed more issues with tracking multiple pointers (#1244)
244 |
245 | 2.2.1:
246 |
247 | * Fixed problems with zoom/pan constraints with certain extreme settings (#965)
248 | * Fixed an issue causing the browser to crash on iOS (#966)
249 |
250 | 2.2.0:
251 |
252 | * BREAKING CHANGE: Viewport.homeBounds, Viewport.contentSize, Viewport.contentAspectX and
253 | Viewport.contentAspectY have been removed. (#846)
254 | * BREAKING CHANGE: The Overlay.getBounds method now takes the viewport as parameter. (#896)
255 | * DEPRECATION: Overlay.scales, Overlay.bounds and Overlay.position have been deprecated. (#896)
256 | * Overlay.width !== null should be used to test whether the overlay scales horizontally
257 | * Overlay.height !== null should be used to test whether the overlay scales vertically
258 | * The Overlay.getBounds method should be used to get the bounds of the overlay in viewport coordinates
259 | * Overlay.location replaces Overlay.position
260 | * DEPRECATION: Viewport.setHomeBounds has been deprecated (#846)
261 | * DEPRECATION: the Viewport constructor is now ignoring the contentSize option (#846)
262 | * Tile edge smoothing at high zoom (#764)
263 | * Fixed issue with reference strip popping up virtual keyboard on mobile devices (#779)
264 | * Now supporting rotation in the Rect class (#782)
265 | * Drag outside of iframe now works better, as long as both pages are on the same domain (#790)
266 | * Coordinate conversion now takes rotation into account (#796)
267 | * Support tile-less IIIF as per LegacyTileSource (#816)
268 | * You can now give an empty string to the tabIndex option (#805)
269 | * Fixed issue with rotation and clicking in the navigator (#807)
270 | * Broadened the check for mime type in LegacyTileSource URLs to allow query strings (#819)
271 | * Added globalCompositeOperation option for tiledImage, to allow for different transfer modes (#814)
272 | * Added Viewer.addSimpleImage method for easily adding non-tiled images (#827)
273 | * DziTileSource now works properly with DZI files that have no extension (#835)
274 | * Fixed content clipping with rotation (#463, #567 and #833)
275 | * Fixed navigator not being rotated when viewport rotation is set in constructor (#840)
276 | * Fixed: Viewer.setMouseNavEnabled wasn't affecting all of the viewer's trackers (#845)
277 | * Fixed: with scrollToZoom disabled, the viewer caused page scrolling to slow down (#858)
278 | * Added Viewer.getOverlayById and Overlay.getBounds functions (#853)
279 | * Tiled images with 0 opacity no longer load their tiles or do drawing calculations (#859)
280 | * Fixed issue with edge smoothing with PNG tiles at high zoom (#860)
281 | * Fixed: Images with transparency were clearing images layered below them (#861)
282 | * Fixed issue causing HTML pages to jump unwantedly to the reference strip upon loading (#872)
283 | * Added addOnceHandler method to EventSource (#887)
284 | * Added TiledImage.fitBounds method (#888)
285 | * Overlays can now be scaled in a single dimension by providing a point location and either width or height (#896)
286 | * Added full rotation support to overlays (#729, #193)
287 | * Viewport.goHome() now takes clipping into account (#910)
288 | * Improved zoom to point (#923)
289 | * Optimized sketch canvas clearing and blending for images with opacity or transfer modes (#927)
290 | * Now taking rotation into account in viewport getBounds and fitBounds methods (#934)
291 | * Added option to disable navigator auto-fade (#935)
292 | * Fixed issue with maintaining viewport position with full screen (#940)
293 | * Fixed an issue with simultaneous touch events (#930)
294 | * Avoid loading clipped out tiles (#939)
295 | * Improved precision for subtle moves with fitBounds (#939)
296 | * Fixed an issue in viewer.addTiledImage with replace:true when viewer has navigator (#948)
297 |
298 | 2.1.0:
299 |
300 | * BREAKING CHANGE: the tile does not hold a reference to its image anymore. Only the tile cache keep a reference to images.
301 | * BREAKING CHANGE: TileSource.tileSize no longer exists; use TileSource.getTileWidth() and TileSource.getTileHeight() instead.
302 | * DEPRECATION: let ImageRecord.getRenderedContext create the rendered context instead of using ImageRecord.setRenderedContext
303 | * DEPRECATION: TileSource.getTileSize() is deprecated. Use TileSource.getTileWidth() and TileSource.getTileHeight() instead.
304 | * Changed resize behaviour to prevent "snapping" to world bounds when constraints allow more space (#711)
305 | * Added support for non-square tiles (#673)
306 | * TileSource.Options objects can now optionally provide tileWidth/tileHeight instead of tileSize for non-square tile support.
307 | * IIIFTileSources will now respect non-square tiles if available.
308 | * Added new tile source for simple images: ImageTileSource (#760)
309 | * Optimized adding large numbers of items to the world with collectionMode (#735)
310 | * Registers as an AMD module where possible (#719)
311 | * Added "tile-loaded" event on the viewer allowing to modify a tile before it is marked ready to be drawn (#659)
312 | * Added "tile-unloaded" event on the viewer allowing to free up memory one has allocated on a tile (#659)
313 | * Added 'tile-load-failed' event (#725)
314 | * Added additional coordinates conversion methods to TiledImage (#662)
315 | * Added `preserveImageSizeOnResize` option (#666)
316 | * Added collectionColumns as a configuration parameter (#680)
317 | * Added option in addTiledImage to replace tiledImage at index (#706)
318 | * Added autoRefigureSizes flag to World for optimizing mass rearrangements (#715)
319 | * You can now change viewport margins after the viewer is created (#721)
320 | * Added a patch to help slow down the scroll devices that fire too fast (#754)
321 | * Fixed flickering tiles with useCanvas=false when no cache is used (#661)
322 | * 'display: none' no longer gets reset on overlays during draw (#668)
323 | * Better error reporting for tile load failures (#679)
324 | * Added XDomainRequest as fallback method for ajax requests if XMLHttpRequest fails (for IE < 10) (#693)
325 | * Now avoiding using eval when JSON.parse is available (#696)
326 | * Rotation now works properly on retina display (#708)
327 | * Fixed issue with tiledImages loading tiles at every level instead of just the best level (#728)
328 | * Fixed placeholderFillStyle flicker (#727)
329 | * Fix for Chrome (v45) issue that key is sometimes undefined outside of the for-in loop (#730)
330 | * World.removeAll now cancels any in-flight image loads; same for Viewer.open and Viewer.close (#734)
331 | * Fixed overlays position (use rounding instead of flooring and ceiling) (#741)
332 | * Fixed issue with including overlays in your tileSources array when creating/opening in the viewer (#745)
333 | * Fixed issue in iOS devices that would cause all touch events to fail after a Multitasking Gesture was triggered (#744)
334 | * Fixed an issue with TiledImage setPosition/setWidth/setHeight not reliably triggering a redraw (#720)
335 | * Fixed zooming in with plus key on a Swedish keyboard (#763)
336 |
337 | 2.0.0:
338 |
339 | * True multi-image mode (#450)
340 | * BREAKING CHANGE: Passing an array for the tileSources option is no longer enough to trigger sequence mode; you have to set the sequenceMode option to true as well
341 | * BREAKING CHANGE: Navigator no longer sends an open event when its viewer opens
342 | * BREAKING CHANGE: Viewer.drawers and Viewer.drawersContainer no longer exist
343 | * BREAKING CHANGE: A Viewer's Drawer and Viewport are now made once per Viewer and reused for every image that Viewer opens (rather than being recreated for every open); this means if you change Viewer options between opens, the behavior is different now.
344 | * DEPRECATION: use Viewer.addTiledImage instead of Viewer.addLayer
345 | * addTiledImage supports positioning config properties
346 | * DEPRECATION: use World.getItemAt instead of Viewer.getLayerAtLevel
347 | * DEPRECATION: use World.getIndexOfItem instead of Viewer.getLevelOfLayer
348 | * DEPRECATION: use World.getItemCount instead of Viewer.getLayersCount
349 | * DEPRECATION: use World.setItemIndex instead of Viewer.setLayerLevel
350 | * DEPRECATION: use World.removeItem instead of Viewer.removeLayer
351 | * DEPRECATION: use World.needsDraw instead of Drawer.needsUpdate
352 | * DEPRECATION: use TileCache.numTilesLoaded instead of Drawer.numTilesLoaded
353 | * DEPRECATION: use World.resetItems instead of Drawer.reset
354 | * DEPRECATION: use Drawer.clear and World.draw instead of Drawer.update
355 | * DEPRECATION: the layersAspectRatioEpsilon option is no longer necessary
356 | * DEPRECATION: Viewer's add-layer event is now World's add-item event
357 | * DEPRECATION: Viewer's layer-level-changed event is now World's item-index-change event
358 | * DEPRECATION: Viewer's remove-layer event is now World's remove-item event
359 | * DEPRECATION: Viewer's add-layer-failed event is now add-item-failed
360 | * DEPRECATION: TileSourceCollection has been retired in favor of World
361 | * DEPRECATION: collectionMode no longer draws outlines or reflections for items
362 | * Drawer has been split into three classes:
363 | * TiledImage, tile management and positioning for a single tiled image
364 | * TileCache, tile caching for all images
365 | * Drawer, tile drawing for all images
366 | * New class: World, keeps track of multiple images in the scene
367 | * Viewer now has world and tileCache properties
368 | * Rect and Point now have clone functions
369 | * New Viewport method for managing homeBounds as well as constraints: setHomeBounds
370 | * Viewport.open supports positioning config properties
371 | * For multi-image open, drawing isn't started until all tileSources have been opened
372 | * You can specify a clip area for each image (only works on browsers that support the HTML5 canvas) (#594)
373 | * Added placeholderFillStyle so image rectangles can be drawn even before their tiles load (#635)
374 | * Ability to set opacity on individual TiledImages (#644)
375 | * Margins option to push the home region in from the edges of the Viewer (#505)
376 | * Rect and Point toString() functions are now consistent: rounding values to nearest hundredth
377 | * Overlays appear in the DOM immediately on open or addOverlay (#507)
378 | * imageLoaderLimit now works (#544)
379 | * Turning off scrollToZoom in gestureSettings now allows scroll events to propagate
380 | * You can now set a minZoomLevel that's greater than the home zoom level
381 | * Added union() to OpenSeadragon.Rect
382 | * Fixed an error in fitBounds if the new and old bounds were extremely close in size
383 | * Added ajaxWithCredentials option (#543)
384 | * Added viewport-change event for after the viewport changes but before it's drawn
385 | * A spring's current value is now updated immediately on reset (#524)
386 | * Fixed an error in fitBounds that occurred sometimes with immediately = true
387 | * Added support for HDPI (retina) displays (#583)
388 | * Corrected IIIF tile source to use canonical syntax (#586)
389 | * Fixed x/y typo that caused horizontal reference strip to be rendered only relative to height (#595)
390 | * Fixed Firefox 35 not able to open local files (#588)
391 | * Fixed an issue with zero size viewers in IE8 (#609)
392 | * Fixed: Cross Origin policy not working (#613)
393 | * Optimized tile loading by clearing the queue on a re-draw when imageLoaderLimit is set (#616)
394 | * Now animating zoom spring exponentially (#631)
395 | * Added http://editorconfig.org/ config file (#637)
396 | * Keyboard pan speed is now the same regardless of zoom level (#645)
397 |
398 | 1.2.1:
399 |
400 | * Added preserveOverlays option (#561)
401 | * Fixed: DZI tilesource was broken on IE8/IE9 (#563)
402 | * Exposed secondary pointer button (middle, right, etc.) events from MouseTracker and through viewer (#479)
403 | * MouseTracker - Improved IE 8 compatibility (#562)
404 | * MouseTracker - Improved IE 9+ compatibility (#564)
405 | * MouseTracker - Simulated touchenter/touchleave events now bubble to parent element MouseTrackers (#566)
406 | * MouseTracker - Improved multitouch support in enter/exit event handlers (#566)
407 | * MouseTracker - orphaned tracked touch pointers removed (fix for #539)
408 | * MouseTracker - removed touchenter/touchleave event support since the events don't exist on any known platform and have been removed from the W3C specification (#566)
409 | * Removed Viewer onContainerPress/onContainerRelease handlers (and the associated 'container-release' event ) that were never fired due to the canvas (child) element capturing the DOM events (#566)
410 | * Added 'canvas-enter', 'canvas-exit', and 'canvas-press' events to Viewer (#566)
411 | * ButtonGroup - removed obsolete MouseTracker event handlers (#566)
412 | * MouseTracker - added keydown and keyup handlers (#568)
413 | * Modifier keys ignored in keyboard navigation handlers (#503)
414 | * Requesting keyboard focus when viewer is clicked (#537)
415 | * Arrow key navigation fixed across platforms (#565)
416 | * Removed textarea element from viewer DOM. Viewer.canvas now handles keyboard navigation (#569)
417 | * Removed 'position' property from MouseTracker keyDownHandler/keyUpHandler/keyHandler functions (#573)
418 | * Fixed pointer event model detection for IE 10 and IE 11 (#571)
419 | * Added setMouseNavEnabled() support to Navigator (#572)
420 | * MouseTracker now defaults to tracking on (#558)
421 | * Removed Viewer focusHandler/onCanvasFocus (#577)
422 | * Added tabIndex option to viewer (#577)
423 |
424 | 1.2.0:
425 |
426 | * New combined IIIF TileSource for 1.0 through 2.0 (#441)
427 | * BREAKING CHANGE: Removed IIIF1_1TileSource (now that IIIFTileSource supports all versions)
428 | * Allowed TileSources to have dynamic tileSize via source.getTileSize(level) (#441)
429 | * DEPRECATION: Use .getTileSize(level) instead of .tileSize
430 | * Fix for IIPServer-style urls when using DZI (#413)
431 | * Fix memory leak while destroying the viewer (#421)
432 | * Added fitBoundsWithConstraints() to the viewport (#423)
433 | * Fixed MouseTracker cross-browser issues with tracking pointers over and out of the tracked element (pull request #448, fix for #152, #404, #420, and #427)
434 | * Fixed incorrect flick direction after image is rotated (#452)
435 | * Debug mode now works with rotate images (#453)
436 | * Now supporting dzi xml with namespaces (#462)
437 | * You can now rotate the navigator along with the main viewer (#455)
438 | * Viewport.setRotation now allows all rotation angles (#466)
439 | * Pinch rotate is now available (defaults to off) (#468)
440 | * Added option for home button to fill viewer (#474)
441 | * Better handling of mid-update image loaded callbacks (#409)
442 | * Tracked pointers are now cleaned up when Viewer.setMouseNavEnabled(false) is called (#518)
443 | * Added explicit pointer capture for touch event model touchstart events (#552)
444 |
445 | 1.1.1:
446 |
447 | * Fixed issue with dragging the navigator highlight on Webkit browsers (#395)
448 | * Improved Viewer Options Support in Gesture Handling (#399)
449 |
450 | 1.1.0:
451 |
452 | * BREAKING CHANGE: the openseadragon-canvas element now has two child divs. This means: (#298)
453 | * The drawer element is no longer accessible via viewer.canvas.firstChild but via viewer.drawersContainer.firstChild or viewer.drawer.canvas.
454 | * The overlays elements are no longer accessible via viewer.canvas.childNodes but via viewer.overlaysContainer.childNodes or viewer.currentOverlays[i].element.
455 | * BREAKING CHANGE: Pseudo full screen mode on IE<11 using activex has been dropped. OpenSeadragon will run in full page if full screen mode is requested.
456 | * BREAKING CHANGE: MouseTracker touch pinch gestures are no longer converted to scroll events. MouseTracker.pinchHandler should be used instead. (#369)
457 | * DEPRECATION: overlay functions have been moved from Drawer to Viewer (#331)
458 | * DEPRECATION: OpenSeadragon.cancelFullScreen has been renamed OpenSeadragon.exitFullScreen (#358)
459 | * DEPRECATION: The 'isTouchEvent' property passed in MouseTracker events is deprecated and has been replaced with 'pointerType', which is a String value "mouse", "touch", "pen", etc. to support multiple simultaneous pointing devices (#369)
460 | * DEPRECATION: The 'buttonDownAny' property passed in MouseTracker enter and exit events (enterHandler/exitHandler) is deprecated and has been replaced with 'buttons', which indicates the button(s) currently pressed (#369)
461 | * DEPRECATION: The 'buttonDownAny' property passed in Viewer's 'container-enter' and 'container-exit' events is deprecated and has been replaced with 'buttons', which indicates the button(s) currently pressed (#369)
462 | * Added layers support. Multiple images can now been displayed on top of each other with transparency via the Viewer.addLayer method (#298)
463 | * Improved overlay functions (#331)
464 | * Fixed: Nav button highlight states aren't quite aligned on Firefox (#303)
465 | * Added ControlAnchor options for default controls (#304)
466 | * Enabled basic cross-domain tile loading without tainting canvas (works in Chrome and Firefox) (#308)
467 | * Added crossOriginPolicy drawer configuration to enable or disable CORS image requests (#364)
468 | * Disabled CORS by default (#377)
469 | * Added a ControlAnchor.ABSOLUTE enumeration. Enables absolute positioning of control elements in the viewer (#310)
470 | * Added a 'navigator-scroll' event to Navigator. Fired when mousewheel events occur in the navigator (#310)
471 | * Added a navigatorMaintainSizeRatio option. If set to true, the navigator minimap resizes when the viewer element is resized (#310)
472 | * Added 'ABSOLUTE' as a navigatorPosition option, along with corresponding navigatorTop, navigatorLeft options. Allows the navigator minimap to be placed anywhere in the viewer (#310)
473 | * Enhanced the navigatorTop, navigatorLeft, navigatorHeight, and navigatorWidth options to allow a number for pixel units or a string for other element units (%, em, etc.) (#310)
474 | * Additional enhancements for IIIF support (#315)
475 | * Fixed: Setting degrees in Viewer constructor has no effect (#336)
476 | * Added pre-draw event for tiles to allow applications to alter the image (#348)
477 | * Added optional Rotate Left/Right buttons to standard controls (#341)
478 | * Added optimization for large numbers of overlays: `checkResize = false` option for OpenSeadragon.Overlay (#365)
479 | * Updated full screen API, adding support for Opera and IE11 and allowing keyboard input in Chrome (#358)
480 | * Various fixes to bring OpenSeadragon into W3C compliance (#375)
481 | * Added separate flags for turning off each of the nav buttons (#376)
482 | * Added support for query parameters in DZI tileSource URL (#378)
483 | * Enhanced MouseTracker for multi-touch (#369)
484 | * Added support for tracking multiple touch-points on multiple/simultaneous pointing devices
485 | * Added support for the W3C Pointer Events event model. Enables touch/multi-touch on IE10+
486 | * Added a dragEndHandler event callback, called when a drag gesture ends
487 | * Added a pinchHandler event callback, called as a pinch gesture (2 touch points) is occurring
488 | * Added real-time velocity (speed and direction) tracking to drag operations. 'speed' and 'direction' values are passed in the dragHandler and dragEndHandler event data
489 | * Enhanced Viewer for multi-touch (#369)
490 | * Added pinch zoom with the new MouseTracker pinchHandler. The 'pan' and 'zoom' Viewer events can be used to detect changes resulting in pinch gestures
491 | * Added a "canvas-pinch" event fired by the pinch event handler
492 | * Added flick gesture with the new MouseTracker dragEndHandler
493 | * Added a "canvas-drag-end" event fired by the drag-end event handler
494 | * Added a GestureSettings class for per-device gesture options. Currently has settings to enable/disable zoom-on-scroll, zoom-on-pinch, zoom-on-click, and flick gesture settings.
495 | * Added GestureSettings objects for mouse, touch, and pen devices to the Viewer options giving users the ability to customize gesture handling in the viewer
496 | * Added velocity (speed and direction) properties to the "canvas-drag" event
497 | * Added double-click gesture detection to MouseTracker with corresponding dblClickHandler event callback (#392)
498 | * Added zoom on double-click feature to Viewer, with corresponding dblClickToZoom option added to the GestureSettings class (#392)
499 | * Made it possible to run OpenSeadragon from local filesystem on some browsers (#379)
500 |
501 | 1.0.0:
502 |
503 | NOTE: This version has a number of breaking changes to the API, mostly in event handling. See below.
504 |
505 | * BREAKING CHANGE: All EventSource and MouseTracker event handler method signatures changed to 'handlerMethod(event)' where event == { eventSource, userData, ... } (#251) (Also fixes #23, #224, #239)
506 | * The new eventSource property in the event object replaces the old eventSource parameter that was passed to handler methods.
507 | * Where the event object duplicated the eventSource value, those properties have been removed. This affects the following events:
508 | * All Button events - 'button' property removed
509 | * All Viewer (Viewer, Drawer, Viewport) events - 'viewer' property removed
510 | * BREAKING CHANGE: Renamed EventHandler to EventSource (#225)
511 | * BREAKING CHANGE: Event names changed for consistency: changed to lower case, compound names hyphenated, and "on" prefixes removed (#226):
512 | * Viewer "animationstart" changed to "animation-start"
513 | * Viewer "animationfinish" changed to "animation-finish"
514 | * Button "onPress" changed to "press"
515 | * Button "onRelease" changed to "release"
516 | * Button "onClick" changed to "click"
517 | * Button "onEnter" changed to "enter"
518 | * Button "onExit" changed to "exit"
519 | * Button "onFocus" changed to "focus"
520 | * Button "onBlur" changed to "blur"
521 | * BREAKING CHANGE: Numerous improvements to fullPage/fullScreen (#256):
522 | * Retains zoom/pan position better when switching into and out of fullPage.
523 | * Retains scroll position when switching back out.
524 | * More resilient to styling variations on the page.
525 | * setFullPage no longer automatically engages fullScreen; there's now a separate setFullScreen.
526 | * 'fullpage' event is now 'full-page'.
527 | * The `fullpage` property of the 'full-page' event is now `fullPage`.
528 | * There is now a 'full-screen' event with a `fullScreen` property (true if it has gone to full screen).
529 | * There are now 'pre-full-page' and 'pre-full-screen' events that include a `preventDefaultAction` property you can set in your handler to cancel. They also have `fullPage` and `fullScreen` properties respectively, to indicate if they are going into or out of the mode.
530 | * BREAKING CHANGE: Removed the 'onPageChange' callback from the viewer options. Viewer.goToPage() now raises the 'page' event only (#285)
531 | * Major documentation improvements (#281)
532 | * MouseTracker now passes the original event objects to its handler methods (#23)
533 | * MouseTracker now supports an optional 'moveHandler' method for tracking mousemove events (#215)
534 | * Added stopHandler to MouseTracker. (#262)
535 | * Fixed: Element-relative mouse coordinates now correct if the element and/or page is scrolled (using new OpenSeadragon.getElementOffset() method) (#131)
536 | * Fixed: Pinch zoom event issue, regressive issue from previous event system changes (#244)
537 | * Added IIIF Image API 1.1 Tile Source (#230)
538 | * IIIF 1.0 now uses pixel based syntax (#249)
539 | * Fixed: Touch event issue where no canvas-click events were being raised (#240)
540 | * Check that zoom reference point is valid before using it in zoomTo and zoomBy (#247)
541 | * Added a number of easier coordinate conversion methods to viewport (#243)
542 | * Added the ability to create a viewer and start at a specified page (#252)
543 | * Fixed image resolve issue with collection mode (#255)
544 | * DOM events are now passed through as 'event.originalEvent' in viewer and button events where appropriate. (#257) Affects the following events:
545 | * Viewer: 'canvas-release', 'canvas-click', 'canvas-drag', 'canvas-scroll', 'container-enter', 'container-exit', 'container-release'
546 | * Button: 'enter', 'exit', 'press', 'release', 'focus', 'blur', 'click'
547 | * Fixed: IE 10 not reading DZI file correctly in certain circumstances (#218)
548 | * Added support for the 'wheel' DOM mousewheel event (#261)
549 | * Fix for non-canvas tile rendering at large size (#264)
550 | * Drawer now uses an HTML5 canvas element whenever it's available. Can be overridden with the Viewer.useCanvas option (#191)
551 | * Added a boolean preventDefaultAction property (default false) to the event object passed to MouseTracker handler methods. (#270) Implemented in the following MouseTracker subscribers:
552 | * Viewer.keyboardCommandArea.innerTracker.focusHandler: preventDefaultAction == true prevents scrolling viewer into view
553 | * Viewer.keyboardCommandArea.innerTracker.keyHandler: preventDefaultAction == true prevents viewer keyboard navigation
554 | * Viewer.innerTracker.clickHandler: preventDefaultAction == true prevents viewer zoom on click
555 | * Viewer.innerTracker.dragHandler: preventDefaultAction == true prevents viewer panning with mouse/touch
556 | * Viewer.innerTracker.scrollHandler: preventDefaultAction == true prevents viewer zooming on mousewheel/pinch
557 | * Fixed: IE8 error with custom buttons - "Object doesn't support this action" (#279)
558 | * Support IIIF servers that don't report tile dimensions (#286)
559 | * Added an autoResize option. Default is true. When set to false, the viewer takes no action when its container element is resized. (#291)
560 | * Added a static 'version' property to OpenSeadragon. Useful for plugins that require specific OpenSeadragon versions. (#292)
561 |
562 | 0.9.131:
563 |
564 | * Fixed: canvas-click event shouldn't fire as you drag (#198)
565 | * Fixed: LegacyTileSource doesn't fail gracefully when no supported file formats are found (#202)
566 | * Added an optional userData argument to EventHandler.addHandler() which is passed unchanged to the handler method (#203)
567 | * Fixed AJAX error reporting on IE8 (#208)
568 | * Added viewportToImageRectangle method, and updated imageToViewportRectangle, imageToViewportCoordinates, and viewportToImageCoordinates to be more flexible with params (#212)
569 | * Fixed: Viewer is not responsive (css) after returning from full screen (#222)
570 |
571 | 0.9.130:
572 |
573 | * Added partial support for rotation (just 90 degree increments for now). (#185)
574 | * Hiding and restoring broke the viewer; fixed (#177)
575 | * You can now provide an onDraw function for overlays to do custom overlay manipulation (#160)
576 | * Added a destroy function on the viewer to clean up and remove elements (#179)
577 | * Fixed: navigatorPosition option corrected. (#163)
578 | * OpenSeadragon.now() returned undefined the first time; fixed
579 | * onTouchEnd did not call the correct mouse up handler; fixed (#159)
580 | * Touch events no longer capture mouse (was causing issues on devices that support both) (#168)
581 | * Clicking on a button control no longer refreshes page (#184)
582 | * Drawer now works when the page is rtl (#187)
583 | * Fixed a situation that could throw errors in touch handling (#188)
584 |
585 | 0.9.129:
586 |
587 | * Fixed: navigator image not updating when base zoom image is changed (#147)
588 | * Fixed tile rendering issue at lower zoom levels with the IIIF TileSource (#55)
589 | * On IE, ajax errors would cause an exception to be thrown; fixed (#144)
590 | * Faster and more consistent millisecond getter (#138)
591 | * Fixed an error when using navPrevNextWrap on single images (#135)
592 | * Various fixes to our timer handling (#133)
593 | * Now generating source map for openseadragon.min.js (#51)
594 | * Fix for calculating overlay width / height (#142)
595 | * JSHint tidying (#136)
596 | * Improved Ajax method (#149)
597 | * Overhauled AJAX error reporting (#151)
598 |
599 | 0.9.128:
600 |
601 | * The navigator is now off by default (#102)
602 | * Reverted minPixelRatio to 0.5 for better quality (#116)
603 | * Sometimes tiles wouldn't resolve if you used the blendTime option; fixed. (#95)
604 | * You can now choose to have previous and next buttons wrap using the config.navPrevNextWrap. (#114)
605 | * You can now specify an ID for a div to hold the navigator (#46)
606 | * You can now click in the navigator to go to a new location (#46)
607 | * Keyboard handling is now done in the viewer rather than navigator (#46)
608 | * Additional navigator fixes (#46)
609 | * Drawer events now fire properly (#94)
610 | * Fixed an error in EventHandler.removeHandler() (#48)
611 | * Better requestAnimationFrame detection on older Firefox (#103)
612 | * More efficient navigator loading (#115)
613 | * Simplified element opacity setting implementation (#123)
614 |
615 | 0.9.127:
616 |
617 | * Fixed a problem with getString when the string property is a sub-property. (#64)
618 | * Fixed: Tooltips for Navigation Controls not displaying (#63)
619 | * Cleaned up some diagnostic code that was broken.
620 | * Added fullpage class to viewer element when in fullpage mode (#61)
621 | * Reverted to original New BSD license; cleaned up license declarations (#89)
622 |
623 | 0.9.126:
624 |
625 | * DZI JSONp was broken; fixed.
626 |
627 | 0.9.125:
628 |
629 | * Fully deprecated OpenSeadragon.createFromDZI, safely deprecated Viewer.openTileSource and
630 | Viewer.openDZI to use Viewer.open internally. (#53 & #54).
631 | * Full page bug fix for when viewer is child of document body (#43).
632 | * Overlays for DZI bug fix (#45).
633 | * DziTileSource: avoid changing relative paths (#56).
634 | * Fix typo in preserveViewport handling (#77).
635 | * Fix updateMulti timer leak after multiple Viewer.open() calls (#76).
636 | * Minor documentation fixes.
637 |
638 | 0.9.124:
639 |
640 | * Performance enhancements.
641 |
642 |
643 | 0.9.123:
644 |
645 | * Real fullscreen support.
646 |
647 |
648 | 0.9.122:
649 |
650 | * Performance enhancements.
651 |
652 |
653 | 0.9.121:
654 |
655 | * Touch pan now works on Android.
656 | * Pinch zoom is better on all devices.
657 |
--------------------------------------------------------------------------------