From 43237150f0259398e9e92a7b1f7026c638601ee0 Mon Sep 17 00:00:00 2001 From: Alexander Harm Date: Tue, 19 Sep 2017 22:01:21 +0200 Subject: [PATCH] =?UTF-8?q?Update=20auf=20OpenSeadragon=202.3.0,=20dateiab?= =?UTF-8?q?h=C3=A4ngige=20Metadatenabfrage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + Kacheltechnik_Allgemein.md | 142 ++++++ LICENSE | 2 +- README.md | 46 ++ .../Controller/KachelviewerController.php | 22 + .../FlexForms/DlaKachelviewer.xml | 118 +++++ .../Templates/Kachelviewer/Deepzoom.html | 19 + .../Resources/Public/CSS/dla_kachelviewer.css | 42 ++ .../Public/JavaScript/dla_kachelviewer.js | 414 ++++++++++++++++++ .../images/button_grouphover.png | Bin 0 -> 1506 bytes .../openseadragon/images/button_hover.png | Bin 0 -> 1827 bytes .../openseadragon/images/button_pressed.png | Bin 0 -> 1895 bytes .../openseadragon/images/button_rest.png | Bin 0 -> 1066 bytes .../images/fullpage_grouphover.png | Bin 0 -> 1085 bytes .../openseadragon/images/fullpage_hover.png | Bin 0 -> 2184 bytes .../openseadragon/images/fullpage_pressed.png | Bin 0 -> 2225 bytes .../openseadragon/images/fullpage_rest.png | Bin 0 -> 1309 bytes .../openseadragon/images/home_grouphover.png | Bin 0 -> 1062 bytes .../openseadragon/images/home_hover.png | Bin 0 -> 2091 bytes .../openseadragon/images/home_pressed.png | Bin 0 -> 2138 bytes .../Public/openseadragon/images/home_rest.png | Bin 0 -> 1258 bytes .../openseadragon/images/next_grouphover.png | Bin 0 -> 1918 bytes .../openseadragon/images/next_hover.png | Bin 0 -> 2358 bytes .../openseadragon/images/next_pressed.png | Bin 0 -> 2411 bytes .../Public/openseadragon/images/next_rest.png | Bin 0 -> 2027 bytes .../images/previous_grouphover.png | Bin 0 -> 1933 bytes .../openseadragon/images/previous_hover.png | Bin 0 -> 2361 bytes .../openseadragon/images/previous_pressed.png | Bin 0 -> 2413 bytes .../openseadragon/images/previous_rest.png | Bin 0 -> 2029 bytes .../images/rotateleft_grouphover.png | Bin 0 -> 1731 bytes .../openseadragon/images/rotateleft_hover.png | Bin 0 -> 2094 bytes .../images/rotateleft_pressed.png | Bin 0 -> 2036 bytes .../openseadragon/images/rotateleft_rest.png | Bin 0 -> 1779 bytes .../images/rotateright_grouphover.png | Bin 0 -> 1800 bytes .../images/rotateright_hover.png | Bin 0 -> 2158 bytes .../images/rotateright_pressed.png | Bin 0 -> 2039 bytes .../openseadragon/images/rotateright_rest.png | Bin 0 -> 1812 bytes .../images/zoomin_grouphover.png | Bin 0 -> 1060 bytes .../openseadragon/images/zoomin_hover.png | Bin 0 -> 2116 bytes .../openseadragon/images/zoomin_pressed.png | Bin 0 -> 2159 bytes .../openseadragon/images/zoomin_rest.png | Bin 0 -> 1262 bytes .../images/zoomout_grouphover.png | Bin 0 -> 977 bytes .../openseadragon/images/zoomout_hover.png | Bin 0 -> 1926 bytes .../openseadragon/images/zoomout_pressed.png | Bin 0 -> 1997 bytes .../openseadragon/images/zoomout_rest.png | Bin 0 -> 1153 bytes .../Public/openseadragon/openseadragon.min.js | 15 + dla_kachelviewer/ext_emconf.php | 21 + dla_kachelviewer/ext_icon.gif | Bin 0 -> 476 bytes dla_kachelviewer/ext_localconf.php | 11 + dla_kachelviewer/ext_tables.php | 17 + package-lock.json | 14 + package.json | 20 + 52 files changed, 904 insertions(+), 1 deletion(-) create mode 100644 Kacheltechnik_Allgemein.md create mode 100644 dla_kachelviewer/Classes/Controller/KachelviewerController.php create mode 100755 dla_kachelviewer/Configuration/FlexForms/DlaKachelviewer.xml create mode 100644 dla_kachelviewer/Resources/Private/Templates/Kachelviewer/Deepzoom.html create mode 100644 dla_kachelviewer/Resources/Public/CSS/dla_kachelviewer.css create mode 100644 dla_kachelviewer/Resources/Public/JavaScript/dla_kachelviewer.js create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/button_grouphover.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/button_hover.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/button_pressed.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/button_rest.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/fullpage_grouphover.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/fullpage_hover.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/fullpage_pressed.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/fullpage_rest.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/home_grouphover.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/home_hover.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/home_pressed.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/home_rest.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/next_grouphover.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/next_hover.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/next_pressed.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/next_rest.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/previous_grouphover.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/previous_hover.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/previous_pressed.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/previous_rest.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/rotateleft_grouphover.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/rotateleft_hover.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/rotateleft_pressed.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/rotateleft_rest.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/rotateright_grouphover.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/rotateright_hover.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/rotateright_pressed.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/rotateright_rest.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/zoomin_grouphover.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/zoomin_hover.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/zoomin_pressed.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/zoomin_rest.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/zoomout_grouphover.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/zoomout_hover.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/zoomout_pressed.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/images/zoomout_rest.png create mode 100644 dla_kachelviewer/Resources/Public/openseadragon/openseadragon.min.js create mode 100644 dla_kachelviewer/ext_emconf.php create mode 100644 dla_kachelviewer/ext_icon.gif create mode 100644 dla_kachelviewer/ext_localconf.php create mode 100755 dla_kachelviewer/ext_tables.php create mode 100644 package-lock.json create mode 100644 package.json diff --git a/.gitignore b/.gitignore index 00cbbdf..d247aad 100644 --- a/.gitignore +++ b/.gitignore @@ -57,3 +57,5 @@ typings/ # dotenv environment variables file .env +# MacOS +.DS_Store \ No newline at end of file diff --git a/Kacheltechnik_Allgemein.md b/Kacheltechnik_Allgemein.md new file mode 100644 index 0000000..8706101 --- /dev/null +++ b/Kacheltechnik_Allgemein.md @@ -0,0 +1,142 @@ +# Einbindung OpenSeadragon auf beliebiger Webseite + +## OpenSeadragon +[http://openseadragon.github.io](http://openseadragon.github.io) +OpenSeadragon von Homepage laden und entpacken. +Bei Bedarf andere Icons installieren, z. B. [https://github.com/peterthomet/openseadragon-flat-toolbar-icons](https://github.com/peterthomet/openseadragon-flat-toolbar-icons) (ggfls. Höhe der Toolbar anpassen). + +## HTML + +Diese Elemente an einer beliebigen Stelle einfügen: +``` +
+
+ + Seite  + +  von  + + +
+
+
+``` + +## CSS + +Werte an Seite anpassen! CSS in einer Datei speichern. + +``` +#dla_kachelviewer_viewport { + width: 777px; /* DLA homepage (default 800px) */ + height: 600px; +} +#dla_kachelviewer_toolbar { + width: 100%; + height: 2.3125rem; /* DLA input element (default 30px) */ +} +} +#dla_kachelviewer_seitenanzeige { + display: table; + margin: auto; + padding-left: 1em; /* ggfls. anpassen */ + padding-right: 1em; /* ggfls. anpassen */ + background-color: white; /* ggfls. anpassen */ +} +#dla_kachelviewer_seite { + display: inline; /* nur auf DLA Homepage nötig */ + width: 3em; /* nur auf DLA Homepage nötig */ +} +#dla_kachelviewer_content { + width: 100%; + height: 100%; + background-color: black; /* ggfls. anpassen */ +} +``` +Datei im Header der Seite einbinden: +``` + + … + + … + +``` + +## JavaScript + +Pfade und tileSources anpassen. Javascript in Datei speichern. +Für IIIF siehe hier: [http://openseadragon.github.io/examples/tilesource-iiif/](http://openseadragon.github.io/examples/tilesource-iiif/) + +``` +/** + * Skript zur Anzeige von Kacheln + */ + +/** + * Konfiguration + */ +var dlaKachelviewerConfig = { + id: 'dla_kachelviewer_content' + , toolbar: 'dla_kachelviewer_toolbar' + , prefixUrl: 'Pfad/zu/openseadragon/images/' + , tileSources: ['Pfad/zu/kachel1.dzi', 'Pfad/zu/kachel2.dzi'] + , sequenceMode: true + , showReferenceStrip: true +} + +/** + * Setup OpenSeadragon Kachelviewer + */ +var dlaKachelviewer +var setupDlaKachelviewer = function () { + + // Bestehende Instanz von dlaKachelviewer löschen + if (dlaKachelviewer) dlaKachelviewer.destroy() + + // Seitennummern setzen + var totalPages = dlaKachelviewerConfig['tileSources'].length + document.getElementById("dla_kachelviewer_seite").value = 1 + document.getElementById("dla_kachelviewer_seite").size = String(totalPages).length + document.getElementById("dla_kachelviewer_seite").maxLength = String(totalPages).length + document.getElementById("dla_kachelviewer_seiten").innerHTML = String(totalPages) + + // Viewer einrichten + dlaKachelviewer = OpenSeadragon(dlaKachelviewerConfig) + + /** + * Event handler definieren + */ + + // Seitenzahlen + dlaKachelviewer.addHandler("page", function (data) { + document.getElementById("dla_kachelviewer_seite").value = data.page + 1 + }) + var pageInput = document.getElementById("dla_kachelviewer_seite") + pageInput.oninput = function (e) { + var p = pageInput.value + if (p) { + if (pageInput.value > totalPages) p = totalPages + else if (pageInput.value < 1) p = 1 + dlaKachelviewer.goToPage(p - 1) + } + } + pageInput.onpropertychange = pageInput.oninput +} + +/** + * Ausführen + */ +setupDlaKachelviewer() +``` + +Javascript zusammen mit OpenSeadragon am Ende(!) der Seite einfügen. Reihenfolge beachten. + +``` + … + + + +``` + +___ +*6.11.2016, Alexander Harm* \ No newline at end of file diff --git a/LICENSE b/LICENSE index 8dada3e..28d6ed2 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright {yyyy} {name of copyright owner} + Copyright 2017 Deutsches Literaturarchiv Marbach Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/README.md b/README.md index 6bfe196..e5b622f 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,48 @@ # dla_kachelviewer A Typo3-Extension to view DeepZoomImages using OpenSeadragon + +### Installation + +Dieses Repositorium klonen und das Unterverzeichnis `dla_kachelviewer` in den Pfad der Typo3-Erweiterungen kopieren (`.../typo3conf/ext/`). + +### Einbindung auf einer Typo3-Seite + +Auf der gewünschten Seite ein neues `Inhaltselement` Typ `Allgemeines Plug-In` hinzufügen. +Unter `Plug-In` nun den `DLA Kachelviewer` auswählen und speichern. + + +### Konfiguration + +Es gibt folgende Konfigurationsmöglichkeiten im Typo3-Backend: + +* Speicherpfad: Pfad unter dem die Digitalisate/Kacheln in Unterordnern gespeichert sind. Normalerweise ist dies der Typo3-Ordner `fileadmin`. + +* Objekt ID: Der Verzeichnisname (nicht als vollständiger Pfad!). + +* Metadaten anzeigen: Zeigt Metadaten aus dem Kallias-OPAC an. + +* Metadaten ID: Falls sich der Verzeichnisname nicht mit der Mediennummer deckt, kann hier eine Alternative angegeben werden. Zusätzlich ist es möglich eine Regular Expression anzugeben. In diesem Fall werden die Metadaten aus den einzelnen Dateinamen generiert. Die Regular Expression muss mit `re:` beginnen und genau eine Match-Group enthalten, z. B. `re:^.*\/(.+)_[0-9]{4}.dzi$` (entfernt die laufende Nummer). Achtung: OpenSeadragon gibt den vollständigen Pfad zurück. + +* Startseite: Bei Bedarf kann eine Startseite definiert werden. + +* Suchmaske: Bei Bedarf kann eine Suchmaske eingeblendet werden über die direkt Objekte angegeben werden können. + +* Speicherstruktur: Es gibt prinzipiell zwei Strukturen in denen die Dateien abgelegt sind: + + * 1. Object/Quality/File: z. B. `.../HS_12345678/tiles/...` + * 2. Quality/Object/File: z. B. `.../tiles/HS_12345678/...` + + Normalerweise wird immer in Struktur 1 abgelegt. + +### Paramterübergabe per URL + +Manche Parameter können auch direkt über die URL im SearchString übergeben werden: + +* id: Wird von Typo3 vergeben +* object: Die Objekt ID +* metadata: Die Metadata ID (keine Regular Expression) +* physpage: Die Startseite + +Beispiel: + +`https://www.dla-marbach.de/index.php?id=1017&object=HS_12345678&metadata=HS_87654321&physpage=10` \ No newline at end of file diff --git a/dla_kachelviewer/Classes/Controller/KachelviewerController.php b/dla_kachelviewer/Classes/Controller/KachelviewerController.php new file mode 100644 index 0000000..b5fc7c3 --- /dev/null +++ b/dla_kachelviewer/Classes/Controller/KachelviewerController.php @@ -0,0 +1,22 @@ +response->addAdditionalHeaderData(''); + // Pass variables to JavaScript + $this->response->addAdditionalHeaderData(''); + $this->response->addAdditionalHeaderData(''); + $this->response->addAdditionalHeaderData(''); + $this->response->addAdditionalHeaderData(''); + $this->response->addAdditionalHeaderData(''); + $this->response->addAdditionalHeaderData(''); + $this->response->addAdditionalHeaderData(''); + } + } + +?> \ No newline at end of file diff --git a/dla_kachelviewer/Configuration/FlexForms/DlaKachelviewer.xml b/dla_kachelviewer/Configuration/FlexForms/DlaKachelviewer.xml new file mode 100755 index 0000000..5d30f1d --- /dev/null +++ b/dla_kachelviewer/Configuration/FlexForms/DlaKachelviewer.xml @@ -0,0 +1,118 @@ + + + 1 + + + + + + General Settings + + array + + + + + + input + 75 + /fileadmin/data/repo/dido + trim + + + + + + + + input + 30 + re:^.*\/(.+)_[0-9]{4}.dzi$ + trim + + + + + + + + select + 1 + + + True + True + + + False + False + + + + + + + + + + input + 30 + re:^.*\/(.+)_[0-9]{4}.dzi$ + trim + + + + + + + + input + 5 + 1 + trim + + + + + + + + select + 1 + + + False + False + + + True + True + + + + + + + + + + select + 1 + + + 1: Object/Quality/File + 1 + + + 2: Quality/Object/File + 2 + + + + + + + + + + diff --git a/dla_kachelviewer/Resources/Private/Templates/Kachelviewer/Deepzoom.html b/dla_kachelviewer/Resources/Private/Templates/Kachelviewer/Deepzoom.html new file mode 100644 index 0000000..6023a77 --- /dev/null +++ b/dla_kachelviewer/Resources/Private/Templates/Kachelviewer/Deepzoom.html @@ -0,0 +1,19 @@ +
Objekt wurde nicht gefunden!
+
+ + +
+
+
+ + Seite  + +  von  + + +
+
+
+
+ + \ No newline at end of file diff --git a/dla_kachelviewer/Resources/Public/CSS/dla_kachelviewer.css b/dla_kachelviewer/Resources/Public/CSS/dla_kachelviewer.css new file mode 100644 index 0000000..573a237 --- /dev/null +++ b/dla_kachelviewer/Resources/Public/CSS/dla_kachelviewer.css @@ -0,0 +1,42 @@ +#dla_kachelviewer_error { + color: red; + font-weight: bold; + visibility: hidden; +} +#dla_kachelviewer_input { + margin-bottom: 20px; +} +#dla_kachelviewer_input_text { + display: inline; /* nur auf DLA Homepage nötig */ + width: 9em; /* nur auf DLA Homepage nötig */ +} +#dla_kachelviewer_input_submit { + display: inline; /* nur auf DLA Homepage nötig */ +} +#dla_kachelviewer_viewport { + width: 777px; /* DLA homepage (default 800px) */ +} +#dla_kachelviewer_toolbar { + width: 100%; + height: 2.3125rem; /* DLA input element (default 30px) */ +} +#dla_kachelviewer_seitenanzeige { + display: table; + margin: auto; + padding-left: 1em; + padding-right: 1em; + background-color: white; /* ggfls. anpassen */ +} +#dla_kachelviewer_seite { + display: inline; /* nur auf DLA Homepage nötig */ + width: 3em; /* nur auf DLA Homepage nötig */ +} +#dla_kachelviewer_content { + width: 100%; + height: 600px; + background-color: black; /* ggfls. anpassen */ +} +#dla_kachelviewer_metadaten table tr td { + padding-bottom: 0.25rem; + padding-top: 0.25rem; +} \ No newline at end of file diff --git a/dla_kachelviewer/Resources/Public/JavaScript/dla_kachelviewer.js b/dla_kachelviewer/Resources/Public/JavaScript/dla_kachelviewer.js new file mode 100644 index 0000000..acafc16 --- /dev/null +++ b/dla_kachelviewer/Resources/Public/JavaScript/dla_kachelviewer.js @@ -0,0 +1,414 @@ +/** + * Skript zur Anzeige von Kacheln + */ + +/** + * Check Extension Variables + */ +if (dlaKachelviewerStoragePath) { + if (dlaKachelviewerStoragePath.substr(0, 1) !== '/') dlaKachelviewerStoragePath = '/' + dlaKachelviewerStoragePath + if (dlaKachelviewerStoragePath.substr(dlaKachelviewerStoragePath.length - 1, 1) !== '/') dlaKachelviewerStoragePath = dlaKachelviewerStoragePath + '/' +} +else { + dlaKachelviewerStoragePath = '/fileadmin/data/repo/dido/' +} +var dlaKachelviewerFullStoragePath = '' // Dependent on dlaKachelviewerStoragePattern (1: Object/Quality/File, 2: Quality/Object/File) + +if (dlaKachelviewerShowSearchField) { + if (dlaKachelviewerShowSearchField === 'True') dlaKachelviewerShowSearchField = true + else dlaKachelviewerShowSearchField = false +} +else { + dlaKachelviewerShowSearchField = true +} + +if (dlaKachelviewerShowMetadata) { + if (dlaKachelviewerShowMetadata === 'True') dlaKachelviewerShowMetadata = true + else dlaKachelviewerShowMetadata = false +} +else { + dlaKachelviewerShowMetadata = true +} + +if (!dlaKachelviewerPhysPage) { + dlaKachelviewerPhysPage = 0 +} + +/** + * Suchfeld anzeigen/verstecken + */ +if (!dlaKachelviewerShowSearchField) document.getElementById('dla_kachelviewer_input').style.display = 'none' + +/** + * Objekt-ID aus URL bestimmen + * Zwei Quellen möglich: 'searchString', 'userInput' + */ +var dlaKachelviewerGetObjectID = function (source, searchString) { + + // Regular Expression + var reObjectID + var reMetadataID + var rePhysPage = /physpage=([0-9]+)/ + + // Anpassen der Parameter an Quelle + if (source === 'userInput') { + reObjectID = /([A-Z]{0,2}[_]{0,1}[0-9]{1,8}[0-9Xx]{0,1})/ + } + else { + searchString = window.location.search + reObjectID = /object=([A-Z]{0,2}[_]{0,1}[0-9]{1,8}[0-9Xx]{0,1})/ + reMetadataID = /metadata=((?:[A-Z]{0,2}[_]{0,1}[0-9]{1,8}[0-9Xx]{0,1})|(?:false))/ + } + + // Prüfen ob Seite übergeben wurde + var physPage = searchString.match(rePhysPage) + + if (physPage && physPage[1]) { + console.log('PhysPage: ' + physPage[1]) + dlaKachelviewerPhysPage = physPage[1] + } + + // Objekt-ID + var objectID = searchString.match(reObjectID) + + if (objectID && objectID[1]) { + // Objektdaten laden + console.log('ObjectID: ' + objectID[1]) + document.getElementById("dla_kachelviewer_input_text").value = objectID[1] + dlaKachelviewerOsDataExists(objectID[1], 1) + } + else { + console.log('No ObjectID') + dlaKachelviewerShowError() + } + + // Metadaten-ID + if (objectID && objectID[1]) { + + var metadataID = searchString.match(reMetadataID) + if (metadataID && metadataID[1]) { + + if (metadataID[1] === 'false') { + console.log('MetadataID: false') + } + else { + console.log('MetadataID: ' + metadataID[1]) + dlaKachelviewerLoadKalliasData(metadataID[1]) + } + + } + else { + console.log('MetadataID: ' + objectID[1]) + dlaKachelviewerLoadKalliasData(objectID[1]) + } + + } + +} + +/** + * Laden der Kallias-Metadaten + */ +var dlaKachelviewerLoadKalliasData = function (metadataID) { + + // Bestand bestimmen + var kalliasBestand = metadataID.match(/^[A-Z]{2}/) + // Datensatznummer bestimmen + var kalliasDatensatznummer = metadataID.match(/[0-9]{1,8}/) + + // API Abfrage + var kalliasApi = 'https://www.dla-marbach.de/cgi-bin/aDISCGI/kallias_prod/lib/adis.htm?ADISDB=' + kalliasApi += kalliasBestand[0] + kalliasApi += '&ADISOI=' + kalliasApi += kalliasDatensatznummer[0] + kalliasApi += '&WEB=JA' + + var xhr = new XMLHttpRequest() + xhr.open('GET', kalliasApi, true) + xhr.onload = function (e) { + if (xhr.readyState === 4) { + if (xhr.status === 200) { + console.log('KalliasData loaded: ' + metadataID) + dlaKachelviewerParseKallias(xhr.responseText) + } + else { + console.log('No KalliasData loaded') + } + } + } + xhr.onerror = function (e) { + console.log('No KalliasData loaded') + } + xhr.send(null) + +} + +/** + * Parse Kallias Metadaten + */ +var dlaKachelviewerParseKallias = function (kalliasRawData) { + + // leider können alle getesten Parser (xhr.responseXML, htmlparser) nicht mit dem gelieferten HTML umgehen + // Identifizieren des span-Elements über RegEx (nicht empfohlen, daher wird RegEx so genau wie möglich definiert) + var re = /[\s\S]*?document\.close\(\)\s<\/script>\s<\/span>/ + var kalliasData = kalliasRawData.match(re)[0] + + // Manchmal werden mehrere Tabellen zurückgegeben, wir wollen nur die erste + var reTables = /([\s\S]+?)(?:){0,}([\s\S]+?)/ + kalliasData = kalliasData.replace(reTables, "$1$2") + + // Das Ergebnis kann auch einen Scripttag beinhalten + var reScript = // + kalliasData = kalliasData.replace(reScript, "") + + // Tabellenbreite korrigieren + var reWidth = /width="150%"/ + kalliasData = kalliasData.replace(reWidth, "width=\"100%\"") + + // HTML-Element erstellen + var kalliasHtmlElement = document.createElement('div') + kalliasHtmlElement.innerHTML = kalliasData + + // Metadaten-Tabelle analysieren (falls vorhanden) + var zellen = kalliasHtmlElement.querySelectorAll("td") + if (zellen.length > 0) { + // HTML säubern + for(var i = 0; i < zellen.length; i++) { + zellen[i].innerHTML = zellen[i].innerText || zellen[i].textContent + } + + // Kallias Tabelle in Metadaten einfügen + document.getElementById('dla_kachelviewer_metadaten').innerHTML = kalliasHtmlElement.innerHTML + } + else document.getElementById('dla_kachelviewer_metadaten').innerHTML = '' + +} + +/** + * Testen ob OpenSeadragon-Metadaten existieren + */ +var dlaKachelviewerOsDataExists = function (objectID, dlaKachelviewerStoragePattern) { + + // storage path + if (dlaKachelviewerStoragePattern === 1) dlaKachelviewerFullStoragePath = dlaKachelviewerStoragePath + objectID + '/tiles/' + else dlaKachelviewerFullStoragePath = dlaKachelviewerStoragePath + 'tiles/' + objectID + '/' + + var xhr = new XMLHttpRequest() + xhr.open('HEAD', dlaKachelviewerFullStoragePath + objectID + '.json', true) + xhr.onload = function (e) { + if (xhr.readyState === 4) { + if (xhr.status === 200) { + console.log('OsData found: ' + objectID) + dlaKachelviewerLoadOsData(objectID, dlaKachelviewerStoragePattern) + } + else { + if (dlaKachelviewerStoragePattern === 1) dlaKachelviewerOsDataExists(objectID, 2) + else { + console.log('No OsData found') + dlaKachelviewerShowError() + } + } + } + } + xhr.onerror = function (e) { + console.log('OsData: Error') + dlaKachelviewerShowError() + } + xhr.send(null) + +} + +/** + * Laden der OpenSeadragon-Metadaten + */ +var dlaKachelviewerLoadOsData = function (objectID) { + + var xhr = new XMLHttpRequest() + xhr.open('GET', dlaKachelviewerFullStoragePath + objectID + '.json', true) + xhr.onload = function (e) { + if (xhr.readyState === 4) { + if (xhr.status === 200) { + console.log('OsData loaded: ' + objectID) + var osData = JSON.parse(xhr.responseText) + dlaKachelviewerSetupOpenSeadragon(objectID, osData) + } + else { + console.log('No OsData loaded') + dlaKachelviewerShowError() + } + } + } + xhr.onerror = function (e) { + dlaKachelviewerShowError() + } + xhr.send(null) + +} + +/** + * Setup OpenSeadragon + */ +var dlaKachelviewerViewer +var dlaKachelviewerSetupOpenSeadragon = function (objectID, osData) { + + // set visibility of elements + document.getElementById('dla_kachelviewer_error').style.visibility = 'hidden' + document.getElementById('dla_kachelviewer_input').style.visibility = 'visible' + document.getElementById('dla_kachelviewer_viewport').style.visibility = 'visible' + + // set page numbers + var totalPages = osData['files'].length + document.getElementById("dla_kachelviewer_seite").value = 1 + document.getElementById("dla_kachelviewer_seite").size = String(totalPages).length + document.getElementById("dla_kachelviewer_seite").maxLength = String(totalPages).length + document.getElementById("dla_kachelviewer_seiten").innerHTML = String(totalPages) + + // modify path + for (var i = 0; i < osData['files'].length; i++) { + osData['files'][i] = dlaKachelviewerFullStoragePath + osData['files'][i].replace(/\.[a-z]{3,4}$/i, '.dzi') + } + + // if dlaKachelviewerViewer exists destroy it + if (dlaKachelviewerViewer) dlaKachelviewerViewer.destroy() + + // create dlaKachelviewerViewer + dlaKachelviewerViewer = OpenSeadragon({ + id: 'dla_kachelviewer_content' + , prefixUrl: 'typo3conf/ext/dla_kachelviewer/Resources/Public/openseadragon/images/' + , tileSources: osData['files'] + , toolbar: 'dla_kachelviewer_toolbar' + , sequenceMode: true + , showReferenceStrip: true + }) + + /** + * add event handlers + */ + + // new image opened + dlaKachelviewerViewer.addHandler("open", function (data) { + + // Reload Metadata if ShowMetadata is true and MetadataID is a RegEx + if (dlaKachelviewerShowMetadata === true) { + + // Check if MetadataID exists and is a regex + if (dlaKachelviewerMetadataID && dlaKachelviewerMetadataID.substr(0, 3) === "re:") { + dlaKachelviewerLoadKalliasData(data.source.match(new RegExp(dlaKachelviewerMetadataID.substr(3)))[1]) + } + } + }) + + // page numbers + dlaKachelviewerViewer.addHandler("page", function (data) { + document.getElementById("dla_kachelviewer_seite").value = data.page + 1 + }) + var pageInput = document.getElementById("dla_kachelviewer_seite") + pageInput.oninput = function (e) { + var p = pageInput.value + if (p) { + if (pageInput.value > totalPages) p = totalPages + else if (pageInput.value < 1) p = 1 + dlaKachelviewerViewer.goToPage(p - 1) + } + } + pageInput.onpropertychange = pageInput.oninput + + /** + * Element fokussieren und Keys zur Navigation nutzen + */ + // fokussieren + document.getElementsByClassName('openseadragon-canvas')[0].focus() + + var dlaKachelviewerShiftKey = false + window.addEventListener("keydown", function (e) { + + // aktuelle Seite + var currentPage = dlaKachelviewerViewer.currentPage() + + // Welcher Key gedrückt? + var key = e.keyCode || e.which + + // Shift-Key Zustand speichern + if (key === 16) dlaKachelviewerShiftKey = true + else { + // Shift gedrückt? + if (e.shiftKey || dlaKachelviewerShiftKey) { + + // Shift - Pfeiltaste links + if (key === 37 || e.key === 'ArrowLeft') { + e.preventDefault() + if (currentPage > 0) dlaKachelviewerViewer.goToPage(currentPage - 1) + } + // Shift - Pfeiltaste rechts + if (key === 39 || e.key === 'ArrowRight') { + e.preventDefault() + if (currentPage < totalPages - 1) dlaKachelviewerViewer.goToPage(currentPage + 1) + } + } + } + + }) + + window.addEventListener("keyup", function (e) { + + // Welcher Key gedrückt? + var key = e.keyCode || e.which + // Shift-Key Zustand speichern + if (key === 16) dlaKachelviewerShiftKey = false + + }) + + /** + * Übergebenes Digitalisat aufrufen + */ + dlaKachelviewerViewer.goToPage(Math.max(0, Math.min(dlaKachelviewerPhysPage - 1, totalPages))) + +} + +/** + * Error Handling + */ +var dlaKachelviewerShowError = function () { + document.getElementById('dla_kachelviewer_error').style.visibility = 'visible' + document.getElementById('dla_kachelviewer_input').style.visibility = 'visible' + document.getElementById('dla_kachelviewer_viewport').style.visibility = 'hidden' +} + +/** + * Setup Object Search + */ +var dlaKachelviewerObjectInput = document.getElementById("dla_kachelviewer_input_submit") +dlaKachelviewerObjectInput.onclick = function (e) { + dlaKachelviewerGetObjectID('userInput', document.getElementById("dla_kachelviewer_input_text").value) +} + +/** + * Execute + */ +if (dlaKachelviewerObjectID) { + + document.getElementById("dla_kachelviewer_input_text").value = dlaKachelviewerObjectID + dlaKachelviewerOsDataExists(dlaKachelviewerObjectID, 1) + + // Show Metadata + if (dlaKachelviewerShowMetadata === true) { + + // Check if MetadataID exists + if (dlaKachelviewerMetadataID) { + + // Load if it is not a RegEx + if (dlaKachelviewerMetadataID.substr(0, 3) !== "re:") { + dlaKachelviewerLoadKalliasData(dlaKachelviewerMetadataID) + } + + } + + // Use ObjectID as default + else { + dlaKachelviewerLoadKalliasData(dlaKachelviewerObjectID) + } + } +} +else { + dlaKachelviewerGetObjectID('searchString') +} \ No newline at end of file diff --git a/dla_kachelviewer/Resources/Public/openseadragon/images/button_grouphover.png b/dla_kachelviewer/Resources/Public/openseadragon/images/button_grouphover.png new file mode 100644 index 0000000000000000000000000000000000000000..9db590ea2adb845fc875b2e3a1fc45ad2a5fc8c8 GIT binary patch literal 1506 zcmV<81s(c{P);M1%f1T;mr?<=Ha+c?L;^&`#KKSXUpPrTg1t>37V40yV4#or#e*E#rTU>{zSFhgW zP$<;V_kB_-7K@ZjCifmZc<{GZUw!qH4?q0yFcD>y%ups6Gl(rALXSQ6ShE{$xZ$3L z4IAEUSr)+w;$R3BLI_e&sZ@%#ZQJ(oyYIgH{>LAGypM=dPzK6LpkgVIxCoH&>eZ_k zckI~lb%x-<7(}_DLY?#9Fcd43${X2YXY(jFqV|dAZymF zxw%c7HZRz=O@%^%^7%Z&C?Fj~fd=BgbsUFcu^3gaUVU7jK7BGj{P4q8mEbx=DU8XL z@Q*+KI2Mk)6Ap(Ng6&rW8$*XuVC+!Mnl%YAtZv=9+mkZACHM@hS z2OvgA^n2>s1jkbbclp>7t1z)_*|KeF$?J7UcSbL0p*nTy{GT6yB;+^K-&jcj7^Oh? zw+zFp3%N&4n>L+AMAe`ukE0b(VVRtH?z!iBVtTr2346|5Q7cD3SHZtiK>Qqbxj};l zZHEmT)?I^f)HIo#aay--J&s*b^X(M@!+r`PAN;N*$hKUvh08y}xkZ++0pj2q=e8~H zS^883E;nx6nDb{S5k(Y?a>gMov}x*sr1g{WxUd|DLLrCj0tRD7eGP#NX zlgERK~Xvi?Ezli)#YZBFEZ|(Y0Lkw1Q`Z@t^{#@0RAxn{Vua;K6yyt~A&cOh0YhxN#qx-=S?KSl+qXfz86c z#X;7OYu~;-KSVXk%M!bY=h5e%e@<}y8?3JNL{tvNp^S9N(_w@rXEy?G(-G0$bzLs! zsx4fSIBM0ZMJG<2V3?K1k01Yth|VyK+Hk4dQ7~lcQK-W4y?gi088Bc#@ZfYh%{g?@ zj&ShyfnNqKhRVy!--E+EMP<^JG?X*Llze)eJbCg2lCEsircI;!_3KB~s#Rkk)vwMg z20$MQTFTQ;Kg}!XJ-GV^5uJuApoF&L^UvjsufrkPc49>wMBA^6Xxg=FS5-v==~Kt| zxu>Dy2R#TIDSGk67dhu%LVNj9f|N5zsVl}kaLN8RA~!-c9LH&dy~rJ~ec{xpQ>jar zEaC28jaGiW5;Oo=FRloci$0e)vuV=FYz+Rv^Yd625E!+2`^i&s$9?*jGbH$r+&xrs2seKkIE7AhWz3`Ra^#=ifM|V4z=Pu#lUIk zh#Vv#<&%B*`3jhEB07*qo IM6N<$g437j#Q*>R literal 0 HcmV?d00001 diff --git a/dla_kachelviewer/Resources/Public/openseadragon/images/button_hover.png b/dla_kachelviewer/Resources/Public/openseadragon/images/button_hover.png new file mode 100644 index 0000000000000000000000000000000000000000..645c241b9fd4ceb3b2dc44ad9dc81c323ccdf803 GIT binary patch literal 1827 zcmV+;2i*9HP)Kn2s5j9y2q;GEZPKnIyKmyRNg-y0dZ~ zy?I(F=~JzDpuhQTH-vEJRrEXfjDOJ@iahXr_?mMvTyT9>WGIJlNQcP%n>_5X4l~sG zp`_?xN+?e-;B9Yv+sGT<@P-X(nhIkK?cTlnQ}$|$f$GZk>Wr-?AwirNc#$c8CDSsL4$;ZlOlku0Eh{$nAs8-ER2B}NEvOB z8m25k*GMsYtP{?xZ*O?|)1SV>rPJ|3%BO^)WYqTU+n*5~yCv=(m(nOLNu>m%!301M zGyq};{cl-X@v#gmh{(cPW`Gq9dXm7ThI+?Aa})dHEnBuc-pSkzAoLExL8{=jmaevn zLwAPBp#?S*u?PYovGV4)=73nSu?`^sFbDuMF);%YBnA>BhyjqvIO{Ciq}3Lc`ED2l z8`c4cyohv&)!rtNW!YHJTnKEVDY2MZUQhu1cqk~Mm9G$p`Tu8kQbLMmN@SL0Wl05E z&sB#+Xf+vHT3TX}^hKO3D@mG^lsKbO1l`jpaUz$K&~!Q-6s-7AD5zGewbUo#5z`IW zWI~c)oJmO{nHWSelS@|i-5=X4bS~JT@u^d%4x9`}(#@rwG#yP+)0xQ_KrmBW%EZ3@ zSlVbb^0P2|3T5n_ciwr^txw+2dEs1tKG|;t35HYvDFF%uAPEpyt^6wD!hjP2MqnO&h{*l|dTQ}R~I1LD>0aOK0 zaovGcUfM}fdCK!2cd9n2 zvoLc)Tpftee+Q-l33d`TA~2jtZ1Lc{?7r(CWBZz|_AagUegI9MO3#rF$rK+&>h*e4 z22tnY`rOv1J-HokjM7L$z*JYH;H21rGQm1dOAL?%X$jR)iyN!5{np=BA3WJy-qY*# zt_4tcEIK;59Urfj3_Fk$I-DAD>d*I#v06uCPut$B42+mp2Iat^9D)EQNJEGN22We_ z!~4VIAN_TBq`uhuTaqMKdXbi+Gn`7{9(ZW~TXK{gHKo+Fd#K+&H7Z{E;g>E=y?RG7 z`lwM|wkd%vKoSs&alkUG|7@46A8VK!wAL3h^U2(EvXpyP^jc&nzYliAj;f<3 zrJRZ5_@zRKCo=Qwqt@$atjw~p#O98JNQ^PZn0cS;Hv%~62XFiC6Di)1ul1-BIATvZ zN6AUe0jMx@>Ztoc5>Gcr@8KU+iW8DvD0Du;*UhmV-e1<{sZ6O!f_F; RjBo$|002ovPDHLkV1lbmc`X0{ literal 0 HcmV?d00001 diff --git a/dla_kachelviewer/Resources/Public/openseadragon/images/button_pressed.png b/dla_kachelviewer/Resources/Public/openseadragon/images/button_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..d5b1d7d0c94a08de3cc8a851523620f88df16db1 GIT binary patch literal 1895 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 literal 0 HcmV?d00001 diff --git a/dla_kachelviewer/Resources/Public/openseadragon/images/fullpage_grouphover.png b/dla_kachelviewer/Resources/Public/openseadragon/images/fullpage_grouphover.png new file mode 100644 index 0000000000000000000000000000000000000000..da9002b11ff438c59f78031f514d7fedfd623bd3 GIT binary patch literal 1085 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 KMNUMnLSTZq6&5D| literal 0 HcmV?d00001 diff --git a/dla_kachelviewer/Resources/Public/openseadragon/images/fullpage_pressed.png b/dla_kachelviewer/Resources/Public/openseadragon/images/fullpage_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..6fa182aea98eb7884d7e82dc07f4975c02303564 GIT binary patch literal 2225 zcmV;i2u}BjP)X*utmM|~A_~PW% zS6{tvb93{=z|A%7-m<<@3W32?H;+ySOy9e1-MURT-+c4Z&p!Js1;8Dml+-Vgp^%|@ zVO)0EWy!0qy6Uhh$2fY`Hy_XJ+PbN>zq30Q6az_uKqSCTjbbCJvLjl@w71SWaK(nU z-QV1E&pnGi{q)l=069fLQ4EEG;X?EaM9dF9_+Z|=IkV4O^3DtU?OMKkRR8WCUQA~L z@_eZ)6^$TC0>nT}=S(k;F{`mkluw$pW7Ph~eD~@bZ+>*sO*btAkPW5WQbN3h3=7c} zrh2M_$G5gz@Xa$1oY40D()#{wol?)Z!3eJT4Z7{uo0h22%%IvZMN%_@gdkyLy+CyK zk=xx-)t}zgI_<#2cN=OqmbwyBemFu3WMN<=`{IY2sEo6B(H zDPsZ&3B85N*9akzh#b8j3x>lwMJi&rlb)g_jW!f`d3QKbMuowv2S9)yGWJ ztN>sRJ5WomCZ@(b&fToZ`g-8?_fcxcS|O%2lT$sG-d$%?yu5-gKXR<_VupP5+Ya70 z;N#*WYDI08lzz5=F|ndJtbs&!&1TB3-!3!TIxuK2k`?60f)xaTHB5wlOolR3!TN_ar2NCnO`yM>d;9i4z|TC6Y>|@;qj`iE5oWwcu8RqK>##t1)IU3}Or} zG3m1DaUb_xSu2S%oN>b{T1|{!`Bn#icU^|X$J*R!WdHg9T5zXMXF;5M{r&wOhNYB@ z9HhOyz01?}bfVrutOhJrFUeBv85Kmt0HzVj#w94xYJqqWb802terPs?kT~+Z@A2Au zdm)GrZ!yVfA{zYvSS?th*`#hyq}9V_qMKbvNg1(v_3EwdIlj$mt{@}9$*3Zxmq}up zkHKW}0;_u@ZS*+XkQLOI$zxWliP=-j5Dm8^>1Fug|Lt;4@i7(j#fH>2^{_*mUZ4;^ zCLMA{#DB2?9Voyp8(=2|$LoUtZAQI7#$1Oi7(} z)v^!O@azE47s?bA#c0ozzR!eTr_<@Ikj$IEN%{vJF|MJO`!Qtm5afe20b)?d9~csY zkU)W;=Pbk%jo4E;vGcg=mc84yJGH@e-HiZxB0}y^&qQUSkx@Cd412P9f8gaW)4Rq@ z8&ffERI(V@5W zeA6D^a^b($etOS~o91V8`K3aL9X}x=6!Ir8S;5Aq0l1-o(voD!baT)#S*)&{JrHZA6DRNC2DPdSa}=#j`H@W zrJ}`ugrSHCfkF(I_$%HL(SPzSk-s*-zrlY4x#}XU2!muN00000NkvXXu0mjf3ARyj literal 0 HcmV?d00001 diff --git a/dla_kachelviewer/Resources/Public/openseadragon/images/fullpage_rest.png b/dla_kachelviewer/Resources/Public/openseadragon/images/fullpage_rest.png new file mode 100644 index 0000000000000000000000000000000000000000..bfab64339211da4c3220a209dda18efb1ae99389 GIT binary patch literal 1309 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 VQ~vuQ5gh;k002ovPDHLkV1msc@dy9_ literal 0 HcmV?d00001 diff --git a/dla_kachelviewer/Resources/Public/openseadragon/images/home_pressed.png b/dla_kachelviewer/Resources/Public/openseadragon/images/home_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..00c349b0dd9ad581d2c48a6d7120ca0e266c4951 GIT binary patch literal 2138 zcmV-g2&MOlP) zr*iP%rM?nmX7uT`p7oybUkK8JGYWbJ7p6W;q6APw$1L!(rzEJH!QFR7f>Ojs_;86A z+KK=@gPf*BFbnF-U;gsQ>t6S|zIMA!UDqYcmoG1^TD7X?3%C-;$Mp$IouW){3H<{f z_(0~WtFC(1=;-J&CRGrwhYuCQ-eeZi4SFT)H1Yif~C3R96 z;=_Ci?ZY4baOTP@uY7UZ(q6Ic@rN#%Ik>OCGM$fjZBGzRKnMrZ6%v`3uFqSrXmY`& z&)c#mckJ<>|NQ6cR;*Yt1E3*kN!q@U7ZxI?Afn%Y|NYCBU4GfSH{5;wvyX1xd{*UH zfwfC@k2tPSrHVozhyVx$p(>+lB0`PfG*6s+?$}w+dF7M0+IF*|%zy9WfB*Gsb5Cs?tQ?vaYR&fMF~uEHO?OZ?cvjK9K27HtMe|~u zaINlme7a2R{8YM9I=bM(=e?LMSiIDg&r=?N2rpAere{|4KmPHL=U#sCMel#|pTB+M zv9&v+-b~HQQq>)`EZ#3AlDZ~hstQw6iK!^WfC2-Q8-xhM5rUSR9xu#VO{cJE;j>=Y z@&snLZQE83RT=MH+P+9PE9ako{&P3n`L|b0ZQdJ|f7ls~7~Vk26p54$MOPSA89<5r zC*ZXNcS^PpMZwi37mO%ea|CG?8n(N6uhurTS6p`4Wx0R+;~z%@4|1^lMX$^#68*aC zu6rIUO?+_diPaZ)6J@z1nm0Tzg3N+Ao9t6Hdq~&%&QGZ3f~a!q;i7)-C23|xHNss& zJO>b-pn`KsJrAVPfWhn-8|-6db~L|b%a%LyrtEt+yXIM6G;$6HAd8^LXB*MnIkdUxp+rNfX!{Y01Usr z?f|aaS5Q;W?$Z+I#1*5@P!v<49t0)hRWV3v3uKG}Fak1ELTHb&X7XbF<)dS<#@_ux zDHox4WRfP;vnE@$vq%+1L6@LR_jvhZQ~2iHhZq*e6l)|x6pK->)gbNMF=16_BD$_8 z0qCI@Dtawb=RFe@c3r3C0-QrTNO|2uqLo{N-!FfXeC7L(qEe}#6O6GSb0U;d)a!LT zx$Y3&_uU8C=A&C#b8HjZ(+3Ez6^JEThUa-kNQ4}(v`MX26B))yEFy@-1k{K}>-9-; z{zx0=el&x3eS9UlVVMjUT`+`drGy=Os_4c!i(~ld=NF68qmzVLHr3KXFjG*XxO1{S z-uS&+h+?tW%tmxO(x+0Z4QQ5t7IQJbA83yl2*$ZfqIl}IOVJ53awobGu_!K|uVXSR zP$|2VG65^5l3J8GGPBO9G*_a-C&$7$aH=R7(oV43~&@ zn;ZIt24Bq zWG13g2t-c`qDUE86$r*mzKtLK=`eouhl2=)a5=!6o#$=t_v7g(srC<-?pQs3NG?;p z+e-NG@G}!^7wrQF4s2aJZ*c9q7mvP5Ei@n^4ybA)Yt-=IPZvV5On?x0O&h%3p4(sk z>!qNoCPiErZWG+Df~g)XO+#Yw2!6DtxIUlHj|X}i`?#-z0Ls|dScz+W=EYZxo-;yA zai9TWacHWG;k1jPsExr$6GJgc!p3mI!BG6^a|2cb8Lc5DTc8bscr=THi6uur_2aD% z6$*tN0A?knfRrZ@$IDDx(#qv>o4$85dEkd1z38nYc`s$V1qfjSt}V9&p#MIb2>)>u ze)r2-3M?yw^3eIkw_myG0l7S50LqeDpzG_I8HDB@QYw||Tu^8AKH)z9rAvnTnHxd9 z1x`E=g@aH55Ds*<5Fh}+1<)c;8wR4WVT`BFnSS-Po9@XSEAFvvdoO@OS18c&iC!`Y zHOWMlVWHl1t2aGTI=bk>Mad;+Wzt3+40R6P%YNXgnS$qeHO_faa>Rd7tCEVp^+kF$YKO5nhDLfsV`FP7D zYG}|8&)RNiy!Fm-ygj*8c=-3}1`pu*+pxrcC3<}&qK4`HmB{}w{u>wk7w8WF@?bSV QcK`qY07*qoM6N<$f~LC{^Z)<= literal 0 HcmV?d00001 diff --git a/dla_kachelviewer/Resources/Public/openseadragon/images/home_rest.png b/dla_kachelviewer/Resources/Public/openseadragon/images/home_rest.png new file mode 100644 index 0000000000000000000000000000000000000000..6ac397da6208b3c05f89f49b5482e3340e6bf530 GIT binary patch literal 1258 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 literal 0 HcmV?d00001 diff --git a/dla_kachelviewer/Resources/Public/openseadragon/images/next_pressed.png b/dla_kachelviewer/Resources/Public/openseadragon/images/next_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..5297c52661475ec06ad3ca43c3494abd49cb1220 GIT binary patch literal 2411 zcmV-x36%DUP)`+p+jt9VuE#LM090CN2my$&*zntQXM&RBwT)OnHMTU9im9t;NT#;_~MH>0OJE6 z_>4I|K5FK2R&s1)q)#cuJ>^oVG+Qf`O4XxBE5YW?_jv%kC{sbPSo8~pg8yt%^jt*l zxZ@5Mr(OQ?mwy=e)_1@B#&svGTOYLQ`KiPE`u%pBfd~Wn)r(r%#e)YAK6=Hq*X}s` zwA0D}{0MJ&c-SqM%OQZETk5&UP=_cg9+iZzS+mCc$*+Gs^uc$%10@38Uet%?5eBYw0a=- zmECvW@}&b0PYf+iR*3sym@#CS;)b#rK@h3sFYwQs)l!JP-L z`R~8}wbKFSWH#GeSXgl55~>)8r|O|vtwsQhjT<+v86WKb;`ZBb_}rd5?jG^xn<~qM zKVVxb#Uc^Tv}Cjrk=7a^aTRc(T7D2Vrxtjlx+SZ<;G=JR^_$%v{q(2$%+pTWp74DY zl}tw^TNa@R&3m&F_lfbvFMd1o(GS1xlSdxB_g6%L6^U#;rX)PchXo9T2~HyVwuv464*B@ziS zH#aAL``e$q!E9H*dE}8t-rAg+VFQK{3`Y`aX%H8pBfu!S)r>K4P7zB+iog`WA`b#I zV}K^tgMgc0xeS_|m9}r+S zpF1>^ashM*BWOjYyH`H@&e!If(^GG*P8CK(t*QDAOGg=DQVK9r5EBASFc9y^@a2Yq z3ImvAKnEe(O%0_3Efm+jPteu2PS4C_hVqFG8%8su`wD0Z-){j}o-Fl*%tXCH8D#kC ze15z>S6&q^)>(>pkdlH-+aNn@la+NyCQUFyfH-@+?X_OIIaZk?iyIgwQ&%fhU7uB2 z`MwSVUt_+dGsErUj?X3Y`+&(nHI1luL^SH`3DXp9ejV80x91{lR>(z!qN2PhF7TmUOFSNBg z6Tocdl8)egK*AF3hERsFyrGgn&k9VF`+ktp&AP3tvj`eKHN%E->>TakNp{;rn+GJ3 zOeG+M5%&y1YX!y#rD6qlZaIM4w;bT_d;Kc*+5TiWJl70Wt))9fG=r8Yw6*~*l}2<| zFNr+maYok_wOTDCn4*Ni$PyZiTo!s&R++BS^$!(+MjL<~!D3{D7onCIO53PZJ>0wF zQ5xHjWgnK7vZbbuJLif5&m|yW!st2&>Mc`eH5${HpI>aJBy&?4lTyNGcG7@hfxSA( z@u!cD=)mHTl2iAlqBUS}!epg|3vM`uSFKLt3mY=}LrJOCY?NK$aVKps&*4$BT_0#_ zNC|jYSx+icYi353rc1N=0b1xEFp)Of+;K=tQ)8V)c=eE@MM8iZOveMg(leG|*epS- zJ~f7quTAQNuhFjh@KRuDQ&2V|*8XKbKm*Qn&1y(m183&cOe`OB0%Gr7mG{Q zf#UnhRdBSSv1YWk@!s;qr(Cz=y0t@g>0qT*0WcdMYy9ra=m;fwU+7@Y-FvLOcXhUJ z^V)p+z_a)#t!R$YFiw(G8abH@NQ7u}#8cl}CsMDI7% z=H|lu2>i{D9Ne38=&m=9<<`H>2-es^gDH!^B?EPx|I<@wAkIwaYZzL?&N(>D?Wt?G z9oe?;K;dvcXV(k!tyY(e?(n3{l!0jSa$cW3zp!J+)TUD)n&)TmBjrw6*YlA?N zhzVMfdVFWnE9KFlhVr!*A&^KrG@s1P{qKs&yKjB)@Sd@pIWt*r)c`aj-0ss*{#0jq z?RFc&2IW%Jp4igx0!#3<>j#F8OHfhi-%hsgFY5y*-&T6yq|5hC0D7;K#`I#tn+H&f=qc0Fp9AxF z>@CM}?5y3)6lO7$S~c>{PrfSk)~~&L_ziCvw?+qLm|~vCl+s{~0BPuAi!JP}xHH#2 zRNiyyebc)!zj$!KL0Ji7damkM0d%OxCGww(3@wj(EM$%6cxum7Eel}yEpHlo-P!?T zEX9#Ynk;9VT)JKuG~8fewxt&*7yX5Yw-%2AD31?YwV7JD*laF|G;Gp*jz<5HH{<{S002ovPDHLkV1jO%l3M@( literal 0 HcmV?d00001 diff --git a/dla_kachelviewer/Resources/Public/openseadragon/images/next_rest.png b/dla_kachelviewer/Resources/Public/openseadragon/images/next_rest.png new file mode 100644 index 0000000000000000000000000000000000000000..e3c5a3ca732014d06beb4fea48ba424ae9650a6d GIT binary patch literal 2027 zcmVHrK?Y}fL(f7Mk$*a7qo_255sbrGQ z?bGL?d$iAKDuf*s&F*lu@tO)r}iB2CrVdI`H7Z1Lx?`qqXktZl|N8!@Ya= zu5;(k9Vbp!@QKO9iEP`pO%G*H|M8E1Z28My{xWCElqr)6g+dEN(!P&>%*7r)eAsjL z?AhBNe)!?3_uhN&K9B2y_V)JL{rmSl8TLFv>P19|zd=Zh2@@uy|Ms`PwSDuO-<&^j z;>7v3ZFlRso&q{#0!)*ue1k$kwOaKC2L~S>IB?+f`t|G2?b@~L&ZSG222irr)6-KA z33*9E#*2s$bCb|y-+ue;1wZ@Q&wh{OOH+2L-84+)d7cC6s3KPpiE|r* zOJXWibv=|>7hMENb{E@Mot7GyMhjEoyM&ZZ?yKBmmT zzC?NYsJy5Xc5ppOMv*HD>CCB9r;etVlvtG;sUoZAW0@!qio{${5bzt>EnpV;uJGi^ zlQL=)@YNuVpEQ1SsX~e&P517=Uq-@MEEXd&unLXMPoOfHj0xH)Jr^nOSQskVTvGl0 z{S}&788w8Mjwvw>3ot1nhF+Odxh#s)QAxQi7<(w zh=!!Kp`jr~5=uEMCQ^{9jvYJh8q((&Ci!A$31f00=o4Oj#flY8RAZHK>5lTA0NjF9nf-@g5X?&wu2rAAre#KVThj~{=AUU8cwl`1lU7B?Xd0hdCk z;A1=+>yg>BXJ24pRZ)&=GC5A@B>1olmwk+PLJB0v&<6rm<#B+z#i3}pT%MQZ0|Q4M zR+pq^vO#jjh!QtRMwDRznP2|$mnX=xK8_7Kd8G4=D4o52{kqE$;|U9@p-}ALl^_Fw z075SN$i2yvCqDpFSbdgU7yzCm^`l3RTn*!SpgqGFr>LGmQH_I^j=5o8WeI=z=FOWm zhCPxHqLBC!_{k0&0H5lS7b6h63@KO25a*W2%nBPxEs*d%3jrnxiu}5alW#;_$P{<% z*kMs=kEFjcMo85`sLsPpZrw1I)Il|rcoq>76`qS|45rgx@`SEq z?b@{gs@$R_JjCCi)C#Bp_j$^Q`Bahv`znfGMV-t+*nLS_IY!t{JH3N$1qWUh2y%KafbdWx90P^Qgn2L*QE z3=?NiA;z z!yY4{%E=Kywgiv^1&{_oD1B9cT7!@q6ml^V)sTo2FX>PGCl2T#sgwYf(kTo@QgqZ5 z6Q;>8d9MhkF9&zbrO!A#mu!wBA^|@6pSUC;ff2$CiCMrD(AuM&I0~@`oEY2?{wMx> z`w3NwV1&>^MCQj3Cji3tUy!K;84IN1NT{ZVP~f$his3Wc{{d&lSLL-$7lZ%+002ov JPDHLkV1m9S(G>sy literal 0 HcmV?d00001 diff --git a/dla_kachelviewer/Resources/Public/openseadragon/images/previous_grouphover.png b/dla_kachelviewer/Resources/Public/openseadragon/images/previous_grouphover.png new file mode 100644 index 0000000000000000000000000000000000000000..5e0fda1b5f6263456ff4a17eb3200462e9df54fa GIT binary patch literal 1933 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 literal 0 HcmV?d00001 diff --git a/dla_kachelviewer/Resources/Public/openseadragon/images/previous_pressed.png b/dla_kachelviewer/Resources/Public/openseadragon/images/previous_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..75c7e7d253ba307c55b9b1bdb2d53bbe2dddbf33 GIT binary patch literal 2413 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 LNkvXXu0mjf369FO literal 0 HcmV?d00001 diff --git a/dla_kachelviewer/Resources/Public/openseadragon/images/rotateleft_grouphover.png b/dla_kachelviewer/Resources/Public/openseadragon/images/rotateleft_grouphover.png new file mode 100644 index 0000000000000000000000000000000000000000..302ac6285f316bea6a9445c2b992a79d21bb88c9 GIT binary patch literal 1731 zcmV;!20ZzRP)X+Wiylk&@larb^_2%}e zb5XZPifAV7)q-u>g0R=j4~b4h88~K@X0^=&v{_SJiS7wSCnG~}40-@ASBn&(EfNVJ zY1R~BDHfTGG*BTDy$pJP^2sNc4j(>zt1pA+rTx^@)O>&Hsi!_^2*iLcu0)8G*Bv1l zfrtzA1o}Mv^wZlHFJ63?Qfh3!e*IMc{{21tECNfVQlh=RT>)M)nXLNq%P()c>86{0 zz*alZ0dxX!AlV%u8G%SIpzoeNdtT|=x9^5w!-h#i!gmH$L|_sIBPm5v_4W0lp`l^d zh7B7o!*&bMW=O@lBP62`*|%@su0ewaO&B$5RLXH2p4!6$eIk5#U|MVcGrpr-*OmB= zgRm(Os$98p7%{9 zO(hZua*`xU#fYx1E-L5^9Xiy5kI`R!_0@H{Q7E?z`{) znu-wNKIB@;D8sh*!i5X(9x-Bs#A#Dhgz?|GbB8J}E|$f`MIvmYMvWF@$BxyVot=I~ zSxGHG!b9~5_;XJ_`Q+Cu0zxTb zu`Wr~Xe5NN1>koy{Al3w7*huXw#U?|rGGtRz zlOJn3BAJek4j#@s>7&tV|UO2S%NT0Hzs z3Kf^wzkh!W;Y`6Vn`5tZB)A%LGmv4wV4N9y1(h_)H-%2>hXd+}k3Ray#f7NPKKmRG zeMY?e^2_SO4?jpdrm|2%LkW+{k{p#nWin*(K#kubqxlDbq|}T%APqE5=AqxD&O7gX ziSpMaB_$q-pLN#R8uyX&%{O2B&I=0*X)^YNhLhCfgD^uSr%ajRq9R=uz<1w$_Y{XL!X6`RWm1N1?3rht`4;VaA3CcG zxm`G9xC9Z92$bSQ>AF1--fNPvSlmNSu!MaglP6Dhp&;(Hoeq*X>%$K}+-(h6fjZg= zH$1x=|M0^PUv1j7=}gQt13-qCp+t_b8e|YQ5@Wtl6^4ai__#NF_G||sRcr$o&KmBy z=bjtPfYl7N1T&3ACi6Seu3fv{!IX9;mG1H_Mc?LFw24k?^f`RJ>3{^vTgO3|Gjs!$tB!==8 z9Hu~`2|eXW&d(%5M4Evk66y~OG{pLE-n{udD6#^ueH{4y`|sa0rQ2!3(HimXAo_cg zA=S^Uea!D&t9hFCkS5a+;l1h4y-`|InoTAZ^^NlX^{)Nz{}xP7i0GUPv Z`vpbOG?l!-l_CHD002ovPDHLkV1goEL{R_$ literal 0 HcmV?d00001 diff --git a/dla_kachelviewer/Resources/Public/openseadragon/images/rotateleft_hover.png b/dla_kachelviewer/Resources/Public/openseadragon/images/rotateleft_hover.png new file mode 100644 index 0000000000000000000000000000000000000000..e757d87a673323d6e8704e1ba4be0df689fdaf0c GIT binary patch literal 2094 zcmV+}2+{Y6P)BUZQC~f|Jt@~+qP{V+rn7b6SLD;Yu%MyovBn;rYe_sD^HB4 zzOV7E5R4a+zD<#iPJ#68-y4!Z4cuTETtn928S*3WlGj~>m3)q-< zAtVaJum_+|kT8%^qlC!c(wfh|=}pHUdi?S4)P=%cV2raM@QE=)5=|+Uw(UZiRI3|* z^Ru76`%Rzv^z8sThOWUkgob#O5E(=SEbfx{a;tB73rsVOd8|0m^L2g{zp1p~I$#f+mThb}tO7 z^{}w#o(`QgE8Cg3U|v)%Z#?GQbFTqVON2TpA@Fo%hBj9B)*t-fb29I(oLSktUT$CA z?KXDk{L{!yrJe#-9g-g=gfMrZh7U+HY-)^q4vg@C`NkDL|eCO zE~BAhEaDomq88)C&1N&z+i&a6v7Ls$GF!Olvddobk#BwL{-j0W@a|4`(;_=^GfOkI zYOV9cladqWHUnng@u1)vH%sFCK8DHIEkv}#ZLh&CyCJx2aTatL3wqpW3mb5{k3S}z za;Zs*#f1R8p~?&no@BZ_>AmQOAN;`6LZw))Qtoyhd_u>in9M~rTE1kvYPFhZHk)X* zTD!RKp_qL1>lR<#ZaMDkl4aQ?!Ga1$tHw~T8?iw6k3FKiN+pbxVjp|eD=z`yCNg|f zn+7thIBV7^q}vTpsUq4kMFZ}lH`|I&Jh&R)b^l_~XbED1bUyceumhHMovZh1k!ZUU zqO6rFcL?eYhIX5yQU;wjKiYGzy^a9z?Lk#W$|TS@3^@-1ts70ox{*+uCG{U5s*sV< z=?B!=N540Z5rUD~x)pTq{FHT&t5nz#ij}2eeh3l8+LV#1pr_*~n(n}`$e>N>5E;e9 ze1I?|g(bC3JBr6^BHFtl>f_bZsl?LhzjFrWE3WzOs=VcQiU(6P9T zg{8I4wc^v?8-~tMCkT>^l!>E|MPW#&)`A1Jh_%I=l*tX8$ww((efCym@emiDuv35W zg=_Rr-}#t6@5G&m<9M3wC7@Rfm_0iX!d8||w6F*S)0)R&M0!$1qvjz#LPqyLU}UJs zW`#uvB?N*gFkYiHUSm@?r^t&>E$Jhd_z3UFzya{mqpN896u-ZvfPS8=Sag3|bBhBY zq<^7S&SRY@q|z{Il%S(zs#`YSG}Y^I<$0FKhoEAh-z%YeC1ZS0+hFkvx!)jsU5PKRY1^*VsCPkPu&_f93o!Q=Pb^Nvch zi5q(X%bamC;eCmT5Ugm(8G(ERUNBOIzQ{w{ZIo*QAAQayEDU0xf$56%U(cR@0&eI9 zq}*)brWC6abzBopUhQinH*|2Rr!S?^a`Jo;2S5wI4nwkr>FdlUBtBIo70S$QdSH zd-W-wyLDsd0MF&P`uN2-_waehu`UobF$l48Xv!>pdFOU~`{qq(`!SAOpYX%-u$TQ>efhU*zMt&6e$tNC_^X5Qm$aFr zb(s-M*Flsa9+K()ee0$%R+I@&YD!DX>^ek@zoPulueJYo|AqJu|35Q++vpgOU5t^x Y0z3gJtqq~URsaA107*qoM6N<$g3o3lEC2ui literal 0 HcmV?d00001 diff --git a/dla_kachelviewer/Resources/Public/openseadragon/images/rotateleft_pressed.png b/dla_kachelviewer/Resources/Public/openseadragon/images/rotateleft_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..1480b1ae48975d491769388c758f1acd39cac296 GIT binary patch literal 2036 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 V+AcUF<%a+O002ovPDHLkV1ktsRHgs` literal 0 HcmV?d00001 diff --git a/dla_kachelviewer/Resources/Public/openseadragon/images/rotateright_grouphover.png b/dla_kachelviewer/Resources/Public/openseadragon/images/rotateright_grouphover.png new file mode 100644 index 0000000000000000000000000000000000000000..9e71371209a165941aeb234f59ab46ebd977e822 GIT binary patch literal 1800 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 literal 0 HcmV?d00001 diff --git a/dla_kachelviewer/Resources/Public/openseadragon/images/zoomout_grouphover.png b/dla_kachelviewer/Resources/Public/openseadragon/images/zoomout_grouphover.png new file mode 100644 index 0000000000000000000000000000000000000000..b588ecf77670d984c29ae63728b44eb7ad087ef6 GIT binary patch literal 977 zcmV;?11|iDP)Rx7s6&iK*kw65H}=1}$ulG4-;F=*CM3Ww zDt6$(FtutG&&*~pr@s7Y|2x0Y7c>S8z{L6cf{NEHJfie^Q4l-Jq?+7A_iuQ6BvC8_ zr7;!`*_vB2xJ0p!M#r`FD(oP-e0y`=w(uM+W#rsB{!0 zpAZoV#$s^eSx3{I3^oRs+Dr8pW$|RO@$^Iz&e$Rg2?PR445Ri;x(UX_u#=s!IKm~5 zO&<(Aa@cx@L;*foY$A#%Osqz-F&phE(;FO+!(}J^S;W5XUl<3NOu%CtNcCEmR>kcMB9G>o`UnkK|X49D> z`tduvM^T_88>OQd35(%>%o)C)o)V`WDWoUsnLKmHa9SuxGN|-yJW88>`jKt|^4gO? z4BjO7ANy&cgqNNTvXaHX0bjZ|C7lOrz>UDDfaFb>_z z>LKc8*3m~5)fNKWvI?SN#|=i$$ig8*R+PcPirbWrhb!`u_*GpsUn{9vaSs<~$*y|g)-*K{hNEHXu{nySbM7bLP!)<(Dn7&o95 zGMR8EZgSsDx!!`B)7bA2Q(bVTyz}mRe`70pF90-CsW?x_ne&cGMV@-1m~&}`P)Vu(B+s^JpVwXx4xgSQk9Km73X0brv=rDSh^ z${QwT5jWp_^A+8}&U4^}9=9s@3UtXKrWFSu4vImmG6Z==w-Tl$rpYKt#2HnS4z+l5 zZ|R`@S01x=?b-`|`O9D4mR`s*BLytyTHzLV@#4jo`!C&6sg0IFGM7Oj1%$B&LF7UZ z&Vpgo!kZ$#1`cF>lWwRvpiDT*SfI25D)bmd1!h9eVsqr}B20;9=eO2ttq(~gFiCizIV%k} z+$F5G>iFZ2-#;Vc?5?kqcNguq-+m`}!!P;a2*D%LrTvRyc1;)@}0EqwF zlE?xU1Ee(Q$QU`JbP`HMaY8E57>)ogThQy<>Ktw_9FwqTZdfV_n}xUg5x-l4I%=i6f_zQ zh~rp%@bpFelM5E8XlD&rH9^!(UaC7nsb%Fh5u8f~>-9RZIAVU>bT}$>I0tVg<}o&K z`}Xb79;H$Vn$0G(M{u~pf>0cS5LBq3KrwH|u5QWZyz%qj+SAk1^$3wVbRbAe#*vXT zCfO;gg!$G-_cOd(AbJRM1tkP}TGH|87-yvJxQ&qUScAtUuNxlOlMNv!So?ljjE|4^ zjq#4eFN9oBXzLm{e4@q=9<0N9K($tZTq{w{#X1dgJ)t^bBp^OI!$i`Y-A`+OJrPf) zrl!)T@ci#4vY3qGQcSYz!8YS++hGw6L4j~SU3Y< z4uZcd!H24TV`OA-2LQ-a#>^#SEb4&=9@x3hKA+e)xUzF~_vlPfA^ALq2*oafdn*3a&5y~Ktjse2&`5=(MYRu8du0+!)ZgEK=Qrq}6Muee!&@~H zmO?-vAAq&CVyRS)1R1mpE+bGG07^Dnpom~BRIs@PN8nbd+-czXGOu0xm-5cBYV)2j z44(#o$&65(sSNSCs+J5z(%LlCU@yh5&@XHG(e)XtB{h z+3t>f?oaN}FlMP+YH3bI@;=Dlc&j2Teo8Sz z!AdQ&xkN;XWimZToDyUR_tdIzm_I1Rv~`I|y5q1VU>QlPP-`QtMy6+aLrvTpZ*O^9 zgYV?@+A2k+=(pM4&Mnp6{HN>=lR;ZdyTp6(lZcr2Cz1Cy-u?mq3jpalfBHQLp8x;= M07*qoM6N<$g7xO3{Qv*} literal 0 HcmV?d00001 diff --git a/dla_kachelviewer/Resources/Public/openseadragon/images/zoomout_pressed.png b/dla_kachelviewer/Resources/Public/openseadragon/images/zoomout_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..679c5cdab467bd848b8623b86ffde3bd5abe9149 GIT binary patch literal 1997 zcmV;;2Qv7HP)kpI+MqnCl%GK{^AcNA#mXiLT6y8e- zVX&G!^{G!yKIb{l>1i|?EDS^Z=Rf~hxccg=%SIs71cuPiBDGeTcnRlaFMCs#OY#Lk5Mw4*otW6$D+vwfw7rKD^~LWO{+fI9+{-JO;0%=lbp?_&<1zC3-y z7r*$$+yC{ie=Pz)Ra4hAjF4;`#uYUWxzkldMAG#X=Dn`nW6XG#4%wTC8 z{Z^0Llo@&P4L|(qvoGI#SAXf^0$F8Wc5@L9SYFugxT;q;vd4B*m#}48p|UH1R0~D) zm*zW5g{jQW$2^f|Hf##@cv>uu0XT}1DhjRO&FrZn5D~v zD^$BBR4QBb?L%km#^I};wr}6QT>#LgNoX96FzsP{X3RMG$xnXr7+#ot`NWO4?2xlX z-6gi{a~zd)9AuVYXbBENi*UYz&~RjghzfN{#DElIQUaE$;Br6B`+K<8JG^xG@ZqJ^ zDIZ;jqM3;Wn!yLq{NJUtq|X z0^;YFWN%@5*XGTeHvvFW<7w>30*WFoGjDjq8-~i$7xq?X=Gwe^5OmotBy}U)=D2`w2}gy?gX<7G7Ea+$ig!gP`_!3nIiWI&6ow6qMj-8KQO(G)8b z3eXylepo-UbpUo-hzJBcO$BNla8P4u~?!3;G_t+6X2dM2R`qo6Z zPro~utO4_qlDJcYQBJU7)FY7qKucGy5ELqq?Ey3jHE7i9;B|*cNyK!I1D66-&@Wq# ztioi7l~Koz9lNl;XV1m;!|gll*;%mGg~+S`03?K^8iZvuV+l1QJV0UTW*=#vSrJWgF7>i^Qw~_R;mEZAwVY0|6hBM0#H6e z(o4Z|-(dcC-#&X$cT-cQ(Q>|t-41w@bUJN&ZEbyfM#Bw`uVvB-n%%=ajk`u1045L| zX+!&X2EKNOyy2?bCl1$YwJ887XqGi~lO+|E!3bhvVxpkz9&h)7;Vna~unwRKEJYxU zjQAfC%+aL{fEn>$Um~#>~R3d8JVh)ks6A~{P!M(h~epZ+kM;< zhBMtk$s_OqJ@ucBI!3~7)-}yi03d1+--5K$1ErCj`Def9&>t6;@~5SgGXRh`S*d9n zEi&;}5xsU)6tUozvlKq|$r}gyM3{tX9f&DF3xIJ1izig{kqK#`o?U#^GM8+y?a;kdiAqxSN2fs+T=95zKt>tH%!?zfimw zhT&>9a;t+jGFHO1$YAswtnoA{O`0**<$2x?T@E(uPdU)p)!Sh?bGf?zx0@HUQp&PY zDzBL|0?V3`DNRP=4&-aUs#qG&kci+SVn?$iB54{6HNK%5p?2@DD)AZOM#$DU5p0bW z+3?6T5|~E)2#uIkm+s&7)`%H|q4lmE8Ulm7pV!+fOSNA94XdFdm@KqNJOn?9L?iwu fk%ur4?q~cPu=JgC>T4o300000NkvXXu0mjf>sHZU literal 0 HcmV?d00001 diff --git a/dla_kachelviewer/Resources/Public/openseadragon/images/zoomout_rest.png b/dla_kachelviewer/Resources/Public/openseadragon/images/zoomout_rest.png new file mode 100644 index 0000000000000000000000000000000000000000..e3ac4abd825fd63e7bc20b18a4d51efa9dae14e4 GIT binary patch literal 1153 zcmV-{1b+L8P)2*9_UPD%ZCltSt617U5%%#aT4fu1mtAbzmaZ^D&-8S6RsE?`!)yHS5oX^0 zN?_Pg4PHUmW^GHuGyv;=C!?X>_npx&1BV4}zA_DI6lC|4HdnE2C~S=b=iKahQwbOB z_3B$8Bm`28&tYK9cv)f2a!uykN{ins})N|m2}yZ_5KD~Jt!)s`Bjv9!XyZsOK6 z_dSJ=5-|lLFalRh@K*JsFCYHwjg4rbjRXR+Ct_PjyqAwVcI<`DBnj145)3wTXhm)TN>FN3Ffu#8h_{NMexrsm5lTF5-+!hypqlg0ukPEe$j zOmxU`m3&h)gKy@MNz(BfbiE|N+pDJ604Wj;&S6_G+h4Qmv{ z$LkJUd-$AFjv^?Hz&5MkmnOap>qR6G8a2EaELeG$?RNlGS}93v8*a@{K9~LB?`RdO zXrPT0s-s~B``@ZHeZXFsW<3$x6oF3_)+|4{q4WdFsG1E-f{bRcu9#T0|FPpd3e&A8 zVtg`h?Rjrf{#C9)1r0<<`kKLkQf)&1w8t@%W1^KNq%aII-&q)I?|G*v{u%#@5^4y| z4oJgksH3Zt;?~E(#PXrO3#n2PM#g#0n<>oAeK_+_T=^yWSxc%2ds#N!i!IpjkwM;? z7&~eFfb+creZUM7Sz6={_B*ru2-2+E z*pT$+FYV~?)iRB(>7C(1lWOEP4&QC4%w@o^QpzBqdWv1Wn3&q^VzOJsu!H&^Vcl}W T`Qdz700000NkvXXu0mjfB_}SI literal 0 HcmV?d00001 diff --git a/dla_kachelviewer/Resources/Public/openseadragon/openseadragon.min.js b/dla_kachelviewer/Resources/Public/openseadragon/openseadragon.min.js new file mode 100644 index 0000000..d42ecf6 --- /dev/null +++ b/dla_kachelviewer/Resources/Public/openseadragon/openseadragon.min.js @@ -0,0 +1,15 @@ +//! openseadragon 2.3.0 +//! Built on 2017-07-14 +//! Git commit: v2.3.0-1-e4fd781 +//! http://openseadragon.github.io +//! License: http://openseadragon.github.io/license/ + + +function OpenSeadragon(a){return new OpenSeadragon.Viewer(a)}!function(a){a.version={versionStr:"2.3.0",major:parseInt("2",10),minor:parseInt("3",10),revision:parseInt("0",10)};var b={"[object Boolean]":"boolean","[object Number]":"number","[object String]":"string","[object Function]":"function","[object Array]":"array","[object Date]":"date","[object RegExp]":"regexp","[object Object]":"object"},c=Object.prototype.toString,d=Object.prototype.hasOwnProperty;a.isFunction=function(b){return"function"===a.type(b)};a.isArray=Array.isArray||function(b){return"array"===a.type(b)};a.isWindow=function(a){return a&&"object"==typeof a&&"setInterval"in a};a.type=function(a){return null===a||void 0===a?String(a):b[c.call(a)]||"object"};a.isPlainObject=function(b){if(!b||"object"!==OpenSeadragon.type(b)||b.nodeType||a.isWindow(b))return!1;if(b.constructor&&!d.call(b,"constructor")&&!d.call(b.constructor.prototype,"isPrototypeOf"))return!1;var c;for(var e in b)c=e;return void 0===c||d.call(b,c)};a.isEmptyObject=function(a){for(var b in a)return!1;return!0};a.freezeObject=function(b){Object.freeze?a.freezeObject=Object.freeze:a.freezeObject=function(a){return a};return a.freezeObject(b)};a.supportsCanvas=function(){var b=document.createElement("canvas");return!(!a.isFunction(b.getContext)||!b.getContext("2d"))}();a.isCanvasTainted=function(a){var b=!1;try{a.getContext("2d").getImageData(0,0,1,1)}catch(a){b=!0}return b};a.pixelDensityRatio=function(){if(a.supportsCanvas){var b=document.createElement("canvas").getContext("2d");var c=window.devicePixelRatio||1;var d=b.webkitBackingStorePixelRatio||b.mozBackingStorePixelRatio||b.msBackingStorePixelRatio||b.oBackingStorePixelRatio||b.backingStorePixelRatio||1;return Math.max(c,1)/d}return 1}()}(OpenSeadragon);!function($){function getOffsetParent(a,b){return b&&a!=document.body?document.body:a.offsetParent}$.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=arguments.length,i=!1,j=1;if("boolean"==typeof g){i=g;g=arguments[1]||{};j=2}"object"==typeof g||OpenSeadragon.isFunction(g)||(g={});if(h===j){g=this;--j}for(;j=c.x&&b.x=c.y},getEvent:function(a){a?$.getEvent=function(a){return a}:$.getEvent=function(){return window.event};return $.getEvent(a)},getMousePosition:function(a){if("number"==typeof a.pageX)$.getMousePosition=function(a){var b=new $.Point;a=$.getEvent(a);b.x=a.pageX;b.y=a.pageY;return b};else{if("number"!=typeof a.clientX)throw new Error("Unknown event mouse position, no known technique.");$.getMousePosition=function(a){var b=new $.Point;a=$.getEvent(a);b.x=a.clientX+document.body.scrollLeft+document.documentElement.scrollLeft;b.y=a.clientY+document.body.scrollTop+document.documentElement.scrollTop;return b}}return $.getMousePosition(a)},getPageScroll:function(){var a=document.documentElement||{},b=document.body||{};if("number"==typeof window.pageXOffset)$.getPageScroll=function(){return new $.Point(window.pageXOffset,window.pageYOffset)};else if(b.scrollLeft||b.scrollTop)$.getPageScroll=function(){return new $.Point(document.body.scrollLeft,document.body.scrollTop)};else{if(!a.scrollLeft&&!a.scrollTop)return new $.Point(0,0);$.getPageScroll=function(){return new $.Point(document.documentElement.scrollLeft,document.documentElement.scrollTop)}}return $.getPageScroll()},setPageScroll:function(a){if("undefined"!=typeof window.scrollTo)$.setPageScroll=function(a){window.scrollTo(a.x,a.y)};else{var b=$.getPageScroll();if(b.x===a.x&&b.y===a.y)return;document.body.scrollLeft=a.x;document.body.scrollTop=a.y;var c=$.getPageScroll();if(c.x!==b.x&&c.y!==b.y){$.setPageScroll=function(a){document.body.scrollLeft=a.x;document.body.scrollTop=a.y};return}document.documentElement.scrollLeft=a.x;document.documentElement.scrollTop=a.y;c=$.getPageScroll();if(c.x!==b.x&&c.y!==b.y){$.setPageScroll=function(a){document.documentElement.scrollLeft=a.x;document.documentElement.scrollTop=a.y};return}$.setPageScroll=function(a){}}return $.setPageScroll(a)},getWindowSize:function(){var a=document.documentElement||{},b=document.body||{};if("number"==typeof window.innerWidth)$.getWindowSize=function(){return new $.Point(window.innerWidth,window.innerHeight)};else if(a.clientWidth||a.clientHeight)$.getWindowSize=function(){return new $.Point(document.documentElement.clientWidth,document.documentElement.clientHeight)};else{if(!b.clientWidth&&!b.clientHeight)throw new Error("Unknown window size, no known technique.");$.getWindowSize=function(){return new $.Point(document.body.clientWidth,document.body.clientHeight)}}return $.getWindowSize()},makeCenteredNode:function(a){a=$.getElement(a);var b=[$.makeNeutralElement("div"),$.makeNeutralElement("div"),$.makeNeutralElement("div")];$.extend(b[0].style,{display:"table",height:"100%",width:"100%"});$.extend(b[1].style,{display:"table-row"});$.extend(b[2].style,{display:"table-cell",verticalAlign:"middle",textAlign:"center"});b[0].appendChild(b[1]);b[1].appendChild(b[2]);b[2].appendChild(a);return b[0]},makeNeutralElement:function(a){var b=document.createElement(a),c=b.style;c.background="transparent none";c.border="none";c.margin="0px";c.padding="0px";c.position="static";return b},now:function(){Date.now?$.now=Date.now:$.now=function(){return(new Date).getTime()};return $.now()},makeTransparentImage:function(a){$.makeTransparentImage=function(a){var b=$.makeNeutralElement("img");b.src=a;return b};$.Browser.vendor==$.BROWSERS.IE&&$.Browser.version<7&&($.makeTransparentImage=function(a){var b=$.makeNeutralElement("img"),c=null;c=$.makeNeutralElement("span");c.style.display="inline-block";b.onload=function(){c.style.width=c.style.width||b.width+"px";c.style.height=c.style.height||b.height+"px";b.onload=null;b=null};b.src=a;c.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+a+"', sizingMethod='scale')";return c});return $.makeTransparentImage(a)},setElementOpacity:function(a,b,c){var d,e;a=$.getElement(a);c&&!$.Browser.alpha&&(b=Math.round(b));if($.Browser.opacity)a.style.opacity=b<1?b:"";else if(b<1){d=Math.round(100*b);e="alpha(opacity="+d+")";a.style.filter=e}else a.style.filter=""},setElementTouchActionNone:function(a){a=$.getElement(a);"undefined"!=typeof a.style.touchAction?a.style.touchAction="none":"undefined"!=typeof a.style.msTouchAction&&(a.style.msTouchAction="none")},addClass:function(a,b){a=$.getElement(a);a.className?(" "+a.className+" ").indexOf(" "+b+" ")===-1&&(a.className+=" "+b):a.className=b},indexOf:function(a,b,c){Array.prototype.indexOf?this.indexOf=function(a,b,c){return a.indexOf(b,c)}:this.indexOf=function(a,b,c){var d,e,f=c?c:0;if(!a)throw new TypeError;e=a.length;if(0===e||f>=e)return-1;f<0&&(f=e-Math.abs(f));for(d=f;d=200&&h.status<300||0===h.status&&"http:"!==g&&"https:"!==g)b(h);else{$.console.log("AJAX request returned %d: %s",h.status,a);$.isFunction(c)&&c(h)}}};try{h.open("GET",a,!0);f&&(h.responseType=f);if(e)for(var i in e)e.hasOwnProperty(i)&&e[i]&&h.setRequestHeader(i,e[i]);d&&(h.withCredentials=!0);h.send(null)}catch(d){var j=d.message;var k=$.Browser.vendor==$.BROWSERS.IE&&$.Browser.version<10;k&&"undefined"!=typeof d.number&&d.number==-2147024891&&(j+="\nSee http://msdn.microsoft.com/en-us/library/ms537505(v=vs.85).aspx#xdomain");$.console.log("%s while making AJAX request: %s",d.name,j);h.onreadystatechange=function(){};if(window.XDomainRequest){var l=new XDomainRequest;if(l){l.onload=function(a){$.isFunction(b)&&b({responseText:l.responseText,status:200,statusText:"OK"})};l.onerror=function(a){$.isFunction(c)&&c({responseText:l.responseText,status:444,statusText:"An error happened. Due to an XDomainRequest deficiency we can not extract any information about this error. Upgrade your browser."})};try{l.open("GET",a);l.send()}catch(a){$.isFunction(c)&&c(h,d)}}}else $.isFunction(c)&&c(h,d)}return h},jsonp:function(a){var b,c=a.url,d=document.head||document.getElementsByTagName("head")[0]||document.documentElement,e=a.callbackName||"openseadragon"+$.now(),f=window[e],g="$1"+e+"$2",h=a.param||"callback",i=a.callback;c=c.replace(/(\=)\?(&|$)|\?\?/i,g);c+=(/\?/.test(c)?"&":"?")+h+"="+e;window[e]=function(a){if(f)window[e]=f;else try{delete window[e]}catch(a){}i&&$.isFunction(i)&&i(a)};b=document.createElement("script");void 0===a.async&&!1===a.async||(b.async="async");a.scriptCharset&&(b.charset=a.scriptCharset);b.src=c;b.onload=b.onreadystatechange=function(a,c){if(c||!b.readyState||/loaded|complete/.test(b.readyState)){b.onload=b.onreadystatechange=null;d&&b.parentNode&&d.removeChild(b);b=void 0}};d.insertBefore(b,d.firstChild)},createFromDZI:function(){throw"OpenSeadragon.createFromDZI is deprecated, use Viewer.open."},parseXml:function(a){if(window.DOMParser)$.parseXml=function(a){var b,c=null;b=new DOMParser;c=b.parseFromString(a,"text/xml");return c};else{if(!window.ActiveXObject)throw new Error("Browser doesn't support XML DOM.");$.parseXml=function(a){var b=null;b=new ActiveXObject("Microsoft.XMLDOM");b.async=!1;b.loadXML(a);return b}}return $.parseXml(a)},parseJSON:function(string){window.JSON&&window.JSON.parse?$.parseJSON=window.JSON.parse:$.parseJSON=function(string){return eval("("+string+")")};return $.parseJSON(string)},imageFormatSupported:function(a){a=a?a:"";return!!FILEFORMATS[a.toLowerCase()]}});$.Browser={vendor:$.BROWSERS.UNKNOWN,version:0,alpha:!0};var FILEFORMATS={bmp:!1,jpeg:!0,jpg:!0,png:!0,tif:!1,wdp:!1},URLPARAMS={};!function(){var a,b=navigator.appVersion,c=navigator.userAgent;switch(navigator.appName){case"Microsoft Internet Explorer":if(window.attachEvent&&window.ActiveXObject){$.Browser.vendor=$.BROWSERS.IE;$.Browser.version=parseFloat(c.substring(c.indexOf("MSIE")+5,c.indexOf(";",c.indexOf("MSIE"))))}break;case"Netscape":if(window.addEventListener)if(c.indexOf("Firefox")>=0){$.Browser.vendor=$.BROWSERS.FIREFOX;$.Browser.version=parseFloat(c.substring(c.indexOf("Firefox")+8))}else if(c.indexOf("Safari")>=0){$.Browser.vendor=c.indexOf("Chrome")>=0?$.BROWSERS.CHROME:$.BROWSERS.SAFARI;$.Browser.version=parseFloat(c.substring(c.substring(0,c.indexOf("Safari")).lastIndexOf("/")+1,c.indexOf("Safari")))}else{a=new RegExp("Trident/.*rv:([0-9]{1,}[.0-9]{0,})");if(null!==a.exec(c)){$.Browser.vendor=$.BROWSERS.IE;$.Browser.version=parseFloat(RegExp.$1)}}break;case"Opera":$.Browser.vendor=$.BROWSERS.OPERA;$.Browser.version=parseFloat(b)}var d,e,f,g=window.location.search.substring(1),h=g.split("&");for(f=0;f0&&(URLPARAMS[d.substring(0,e)]=decodeURIComponent(d.substring(e+1)))}$.Browser.alpha=!($.Browser.vendor==$.BROWSERS.IE&&$.Browser.version<9||$.Browser.vendor==$.BROWSERS.CHROME&&$.Browser.version<2);$.Browser.opacity=!($.Browser.vendor==$.BROWSERS.IE&&$.Browser.version<9)}();var nullfunction=function(a){};$.console=window.console||{log:nullfunction,debug:nullfunction,info:nullfunction,warn:nullfunction,error:nullfunction,assert:nullfunction};!function(a){var b=a.requestAnimationFrame||a.mozRequestAnimationFrame||a.webkitRequestAnimationFrame||a.msRequestAnimationFrame;var c=a.cancelAnimationFrame||a.mozCancelAnimationFrame||a.webkitCancelAnimationFrame||a.msCancelAnimationFrame;if(b&&c){$.requestAnimationFrame=function(){return b.apply(a,arguments)};$.cancelAnimationFrame=function(){return c.apply(a,arguments)}}else{var d,e=[],f=[],g=0;$.requestAnimationFrame=function(a){e.push([++g,a]);d||(d=setInterval(function(){if(e.length){var a=$.now();var b=f;f=e;e=b;for(;f.length;)f.shift()[1](a)}else{clearInterval(d);d=void 0}},20));return g};$.cancelAnimationFrame=function(a){var b,c;for(b=0,c=e.length;b0){a.removeEvent(a.MouseTracker.captureElement,"mousemove",d.mousemovecaptured,!0);a.removeEvent(a.MouseTracker.captureElement,"mouseup",d.mouseupcaptured,!0);a.removeEvent(a.MouseTracker.captureElement,a.MouseTracker.unprefixedPointerEvents?"pointermove":"MSPointerMove",d.pointermovecaptured,!0);a.removeEvent(a.MouseTracker.captureElement,a.MouseTracker.unprefixedPointerEvents?"pointerup":"MSPointerUp",d.pointerupcaptured,!0);a.removeEvent(a.MouseTracker.captureElement,"touchmove",d.touchmovecaptured,!0);a.removeEvent(a.MouseTracker.captureElement,"touchend",d.touchendcaptured,!0);d.activePointersLists[c].captureCount=0}for(c=0;c0){for(d=0;d0){ja(a,b,f,0);c.captureCount=1;g(a,c.type);ha(a,b,f)}}}function M(b,c){var d,e,g,h,j=c.changedTouches.length,k=[],l=b.getActivePointersListByType("touch");d=a.now();if(l.getLength()>c.touches.length-j){a.console.warn("Tracked touch contact count doesn't match event.touches.length. Removing all tracked touch pointers.");L(b,c,l)}for(e=0;e8||"onwheel"in document.createElement("div")?"wheel":void 0!==document.onmousewheel?"mousewheel":"DOMMouseScroll";a.MouseTracker.supportsMouseCapture=function(){var b=document.createElement("div");return a.isFunction(b.setCapture)&&a.isFunction(b.releaseCapture)}();a.MouseTracker.subscribeEvents=["click","dblclick","keydown","keyup","keypress","focus","blur",a.MouseTracker.wheelEventName];"DOMMouseScroll"==a.MouseTracker.wheelEventName&&a.MouseTracker.subscribeEvents.push("MozMousePixelScroll");if(window.PointerEvent&&(window.navigator.pointerEnabled||a.Browser.vendor!==a.BROWSERS.IE)){a.MouseTracker.havePointerEvents=!0;a.MouseTracker.subscribeEvents.push("pointerover","pointerout","pointerdown","pointerup","pointermove","pointercancel");a.MouseTracker.unprefixedPointerEvents=!0;navigator.maxTouchPoints?a.MouseTracker.maxTouchPoints=navigator.maxTouchPoints:a.MouseTracker.maxTouchPoints=0;a.MouseTracker.haveMouseEnter=!1}else if(window.MSPointerEvent&&window.navigator.msPointerEnabled){a.MouseTracker.havePointerEvents=!0;a.MouseTracker.subscribeEvents.push("MSPointerOver","MSPointerOut","MSPointerDown","MSPointerUp","MSPointerMove","MSPointerCancel");a.MouseTracker.unprefixedPointerEvents=!1;navigator.msMaxTouchPoints?a.MouseTracker.maxTouchPoints=navigator.msMaxTouchPoints:a.MouseTracker.maxTouchPoints=0;a.MouseTracker.haveMouseEnter=!1}else{a.MouseTracker.havePointerEvents=!1;if(a.Browser.vendor===a.BROWSERS.IE&&a.Browser.version<9){a.MouseTracker.subscribeEvents.push("mouseenter","mouseleave");a.MouseTracker.haveMouseEnter=!0}else{a.MouseTracker.subscribeEvents.push("mouseover","mouseout");a.MouseTracker.haveMouseEnter=!1}a.MouseTracker.subscribeEvents.push("mousedown","mouseup","mousemove");"ontouchstart"in window&&a.MouseTracker.subscribeEvents.push("touchstart","touchend","touchmove","touchcancel");"ongesturestart"in window&&a.MouseTracker.subscribeEvents.push("gesturestart","gesturechange");a.MouseTracker.mousePointerId="legacy-mouse";a.MouseTracker.maxTouchPoints=10}a.MouseTracker.GesturePointList=function(a){this._gPoints=[];this.type=a;this.buttons=0;this.contacts=0;this.clicks=0;this.captureCount=0};a.MouseTracker.GesturePointList.prototype={getLength:function(){return this._gPoints.length},asArray:function(){return this._gPoints},add:function(a){return this._gPoints.push(a)},removeById:function(a){var b,c=this._gPoints.length;for(b=0;b1&&("mouse"===this.type||"pen"===this.type)&&(this.contacts=1)},removeContact:function(){--this.contacts;this.contacts<0&&(this.contacts=0)}};var qa=function(){try{return window.self!==window.top}catch(a){return!0}}()}(OpenSeadragon);!function(a){a.ControlAnchor={NONE:0,TOP_LEFT:1,TOP_RIGHT:2,BOTTOM_RIGHT:3,BOTTOM_LEFT:4,ABSOLUTE:5};a.Control=function(b,c,d){var e=b.parentNode;if("number"==typeof c){a.console.error("Passing an anchor directly into the OpenSeadragon.Control constructor is deprecated; please use an options object instead. Support for this deprecated variant is scheduled for removal in December 2013");c={anchor:c}}c.attachToViewer="undefined"==typeof c.attachToViewer||c.attachToViewer;this.autoFade="undefined"==typeof c.autoFade||c.autoFade;this.element=b;this.anchor=c.anchor;this.container=d;if(this.anchor==a.ControlAnchor.ABSOLUTE){this.wrapper=a.makeNeutralElement("div");this.wrapper.style.position="absolute";this.wrapper.style.top="number"==typeof c.top?c.top+"px":c.top;this.wrapper.style.left="number"==typeof c.left?c.left+"px":c.left;this.wrapper.style.height="number"==typeof c.height?c.height+"px":c.height;this.wrapper.style.width="number"==typeof c.width?c.width+"px":c.width;this.wrapper.style.margin="0px";this.wrapper.style.padding="0px";this.element.style.position="relative";this.element.style.top="0px";this.element.style.left="0px";this.element.style.height="100%";this.element.style.width="100%"}else{this.wrapper=a.makeNeutralElement("div");this.wrapper.style.display="inline-block";this.anchor==a.ControlAnchor.NONE&&(this.wrapper.style.width=this.wrapper.style.height="100%")}this.wrapper.appendChild(this.element);c.attachToViewer?this.anchor==a.ControlAnchor.TOP_RIGHT||this.anchor==a.ControlAnchor.BOTTOM_RIGHT?this.container.insertBefore(this.wrapper,this.container.firstChild):this.container.appendChild(this.wrapper):e.appendChild(this.wrapper)};a.Control.prototype={destroy:function(){this.wrapper.removeChild(this.element);this.container.removeChild(this.wrapper)},isVisible:function(){return"none"!=this.wrapper.style.display},setVisible:function(b){this.wrapper.style.display=b?this.anchor==a.ControlAnchor.ABSOLUTE?"block":"inline-block":"none"},setOpacity:function(b){this.element[a.SIGNAL]&&a.Browser.vendor==a.BROWSERS.IE?a.setElementOpacity(this.element,b,!0):a.setElementOpacity(this.wrapper,b,!0)}}}(OpenSeadragon);!function(a){function b(a,b){var c,d=a.controls;for(c=d.length-1;c>=0;c--)if(d[c].element==b)return c;return-1}a.ControlDock=function(b){var c,d,e=["topleft","topright","bottomright","bottomleft"];a.extend(!0,this,{id:"controldock-"+a.now()+"-"+Math.floor(1e6*Math.random()),container:a.makeNeutralElement("div"),controls:[]},b);this.container.onsubmit=function(){return!1};if(this.element){this.element=a.getElement(this.element);this.element.appendChild(this.container);this.element.style.position="relative";this.container.style.width="100%";this.container.style.height="100%"}for(d=0;d=0)){switch(d.anchor){case a.ControlAnchor.TOP_RIGHT:e=this.controls.topright;c.style.position="relative";c.style.paddingRight="0px";c.style.paddingTop="0px";break;case a.ControlAnchor.BOTTOM_RIGHT:e=this.controls.bottomright;c.style.position="relative";c.style.paddingRight="0px";c.style.paddingBottom="0px";break;case a.ControlAnchor.BOTTOM_LEFT:e=this.controls.bottomleft;c.style.position="relative";c.style.paddingLeft="0px";c.style.paddingBottom="0px";break;case a.ControlAnchor.TOP_LEFT:e=this.controls.topleft;c.style.position="relative";c.style.paddingLeft="0px";c.style.paddingTop="0px";break;case a.ControlAnchor.ABSOLUTE:e=this.container;c.style.margin="0px";c.style.padding="0px";break;default:case a.ControlAnchor.NONE:e=this.container;c.style.margin="0px";c.style.padding="0px"}this.controls.push(new a.Control(c,d,e));c.style.display="inline-block"}},removeControl:function(c){c=a.getElement(c);var d=b(this,c);if(d>=0){this.controls[d].destroy();this.controls.splice(d,1)}return this},clearControls:function(){for(;this.controls.length>0;)this.controls.pop().destroy();return this},areControlsEnabled:function(){var a;for(a=this.controls.length-1;a>=0;a--)if(this.controls[a].isVisible())return!0;return!1},setControlsEnabled:function(a){var b;for(b=this.controls.length-1;b>=0;b--)this.controls[b].setVisible(a);return this}}}(OpenSeadragon);!function(a){a.Placement=a.freezeObject({CENTER:0,TOP_LEFT:1,TOP:2,TOP_RIGHT:3,RIGHT:4,BOTTOM_RIGHT:5,BOTTOM:6,BOTTOM_LEFT:7,LEFT:8,properties:{0:{isLeft:!1,isHorizontallyCentered:!0,isRight:!1,isTop:!1,isVerticallyCentered:!0,isBottom:!1},1:{isLeft:!0,isHorizontallyCentered:!1,isRight:!1,isTop:!0,isVerticallyCentered:!1,isBottom:!1},2:{isLeft:!1,isHorizontallyCentered:!0,isRight:!1,isTop:!0,isVerticallyCentered:!1,isBottom:!1},3:{isLeft:!1,isHorizontallyCentered:!1,isRight:!0,isTop:!0,isVerticallyCentered:!1,isBottom:!1},4:{isLeft:!1,isHorizontallyCentered:!1,isRight:!0,isTop:!1,isVerticallyCentered:!0,isBottom:!1},5:{isLeft:!1,isHorizontallyCentered:!1,isRight:!0,isTop:!1,isVerticallyCentered:!1,isBottom:!0},6:{isLeft:!1,isHorizontallyCentered:!0,isRight:!1,isTop:!1,isVerticallyCentered:!1,isBottom:!0},7:{isLeft:!0,isHorizontallyCentered:!1,isRight:!1,isTop:!1,isVerticallyCentered:!1,isBottom:!0},8:{isLeft:!0,isHorizontallyCentered:!1,isRight:!1,isTop:!1,isVerticallyCentered:!0,isBottom:!1}}})}(OpenSeadragon);!function(a){function b(b){b=a.getElement(b);return new a.Point(0===b.clientWidth?1:b.clientWidth,0===b.clientHeight?1:b.clientHeight)}function c(b,c,d,e,f){function g(a,b){if(a.ready)e(a);else{a.addHandler("ready",function(){e(a)});a.addHandler("open-failed",function(a){f({message:a.message,source:b})})}}var h=b;if("string"==a.type(c))if(c.match(/^\s*<.*>\s*$/))c=a.parseXml(c);else if(c.match(/^\s*[\{\[].*[\}\]]\s*$/))try{var i=a.parseJSON(c);c=i}catch(a){}setTimeout(function(){if("string"==a.type(c)){c=new a.TileSource({url:c,crossOriginPolicy:void 0!==d.crossOriginPolicy?d.crossOriginPolicy:b.crossOriginPolicy,ajaxWithCredentials:b.ajaxWithCredentials,ajaxHeaders:b.ajaxHeaders,useCanvas:b.useCanvas,success:function(a){e(a.tileSource)}});c.addHandler("open-failed",function(a){f(a)})}else if(a.isPlainObject(c)||c.nodeType){void 0!==c.crossOriginPolicy||void 0===d.crossOriginPolicy&&void 0===b.crossOriginPolicy||(c.crossOriginPolicy=void 0!==d.crossOriginPolicy?d.crossOriginPolicy:b.crossOriginPolicy);void 0===c.ajaxWithCredentials&&(c.ajaxWithCredentials=b.ajaxWithCredentials);void 0===c.useCanvas&&(c.useCanvas=b.useCanvas);if(a.isFunction(c.getTileUrl)){var i=new a.TileSource(c);i.getTileUrl=c.getTileUrl;e(i)}else{var j=a.TileSource.determineType(h,c);if(!j){f({message:"Unable to load TileSource",source:c});return}var k=j.prototype.configure.apply(h,[c]);g(new j(k),c)}}else g(c,c)})}function d(b,c){if(c instanceof a.Overlay)return c;var d=null;if(c.element)d=a.getElement(c.element);else{var e=c.id?c.id:"openseadragon-overlay-"+Math.floor(1e7*Math.random());d=a.getElement(c.id);if(!d){d=document.createElement("a");d.href="#/overlay/"+e}d.id=e;a.addClass(d,c.className?c.className:"openseadragon-overlay")}var f=c.location;var g=c.width;var h=c.height;if(!f){var i=c.x;var j=c.y;if(void 0!==c.px){var k=b.viewport.imageToViewportRectangle(new a.Rect(c.px,c.py,g||0,h||0));i=k.x;j=k.y;g=void 0!==g?k.width:void 0;h=void 0!==h?k.height:void 0}f=new a.Point(i,j)}var l=c.placement;l&&"string"===a.type(l)&&(l=a.Placement[c.placement.toUpperCase()]);return new a.Overlay({element:d,location:f,placement:l,onDraw:c.onDraw,checkResize:c.checkResize,width:g,height:h,rotationMode:c.rotationMode})}function e(a,b){var c;for(c=a.length-1;c>=0;c--)if(a[c].element===b)return c;return-1}function f(b,c){return a.requestAnimationFrame(function(){c(b)})}function g(b){a.requestAnimationFrame(function(){i(b)})}function h(b){if(b.autoHideControls){b.controlsShouldFade=!0;b.controlsFadeBeginTime=a.now()+b.controlsFadeDelay;window.setTimeout(function(){g(b)},b.controlsFadeDelay)}}function i(b){var c,d,e,f;if(b.controlsShouldFade){c=a.now();d=c-b.controlsFadeBeginTime;e=1-d/b.controlsFadeLength;e=Math.min(1,e);e=Math.max(0,e);for(f=b.controls.length-1;f>=0;f--)b.controls[f].autoFade&&b.controls[f].setOpacity(e);e>0&&g(b)}}function j(a){var b;a.controlsShouldFade=!1;for(b=a.controls.length-1;b>=0;b--)a.controls[b].setOpacity(1)}function k(){j(this)}function l(){h(this)}function m(b){if(b.preventDefaultAction||b.ctrl||b.alt||b.meta)return!0;switch(b.keyCode){case 38:b.shift?this.viewport.zoomBy(1.1):this.viewport.panBy(this.viewport.deltaPointsFromPixels(new a.Point(0,-40)));this.viewport.applyConstraints();return!1;case 40:b.shift?this.viewport.zoomBy(.9):this.viewport.panBy(this.viewport.deltaPointsFromPixels(new a.Point(0,40)));this.viewport.applyConstraints();return!1;case 37:this.viewport.panBy(this.viewport.deltaPointsFromPixels(new a.Point(-40,0)));this.viewport.applyConstraints();return!1;case 39:this.viewport.panBy(this.viewport.deltaPointsFromPixels(new a.Point(40,0)));this.viewport.applyConstraints();return!1;default:return!0}}function n(b){if(b.preventDefaultAction||b.ctrl||b.alt||b.meta)return!0;switch(b.keyCode){case 43:case 61:this.viewport.zoomBy(1.1);this.viewport.applyConstraints();return!1;case 45:this.viewport.zoomBy(.9);this.viewport.applyConstraints();return!1;case 48:this.viewport.goHome();this.viewport.applyConstraints();return!1;case 119:case 87:b.shift?this.viewport.zoomBy(1.1):this.viewport.panBy(this.viewport.deltaPointsFromPixels(new a.Point(0,-40)));this.viewport.applyConstraints();return!1;case 115:case 83:b.shift?this.viewport.zoomBy(.9):this.viewport.panBy(this.viewport.deltaPointsFromPixels(new a.Point(0,40)));this.viewport.applyConstraints();return!1;case 97:this.viewport.panBy(this.viewport.deltaPointsFromPixels(new a.Point(-40,0)));this.viewport.applyConstraints();return!1;case 100:this.viewport.panBy(this.viewport.deltaPointsFromPixels(new a.Point(40,0)));this.viewport.applyConstraints();return!1;default:return!0}}function o(a){var b;var c=document.activeElement==this.canvas;c||this.canvas.focus();var d={tracker:a.eventSource,position:a.position,quick:a.quick,shift:a.shift,originalEvent:a.originalEvent,preventDefaultAction:a.preventDefaultAction};this.raiseEvent("canvas-click",d);if(!d.preventDefaultAction&&this.viewport&&a.quick){b=this.gestureSettingsByDeviceType(a.pointerType);if(b.clickToZoom){this.viewport.zoomBy(a.shift?1/this.zoomPerClick:this.zoomPerClick,this.viewport.pointFromPixel(a.position,!0));this.viewport.applyConstraints()}}}function p(a){var b;if(!a.preventDefaultAction&&this.viewport){b=this.gestureSettingsByDeviceType(a.pointerType);if(b.dblClickToZoom){this.viewport.zoomBy(a.shift?1/this.zoomPerClick:this.zoomPerClick,this.viewport.pointFromPixel(a.position,!0));this.viewport.applyConstraints()}}this.raiseEvent("canvas-double-click",{tracker:a.eventSource,position:a.position,shift:a.shift,originalEvent:a.originalEvent})}function q(a){var b;var c={tracker:a.eventSource,position:a.position,delta:a.delta,speed:a.speed,direction:a.direction,shift:a.shift,originalEvent:a.originalEvent,preventDefaultAction:a.preventDefaultAction};this.raiseEvent("canvas-drag",c);if(!a.preventDefaultAction&&this.viewport){b=this.gestureSettingsByDeviceType(a.pointerType);this.panHorizontal||(a.delta.x=0);this.panVertical||(a.delta.y=0);if(this.constrainDuringPan){var d=this.viewport.deltaPointsFromPixels(a.delta.negate());this.viewport.centerSpringX.target.value+=d.x;this.viewport.centerSpringY.target.value+=d.y;var e=this.viewport.getBounds();var f=this.viewport.getConstrainedBounds();this.viewport.centerSpringX.target.value-=d.x;this.viewport.centerSpringY.target.value-=d.y;e.x!=f.x&&(a.delta.x=0);e.y!=f.y&&(a.delta.y=0)}this.viewport.panBy(this.viewport.deltaPointsFromPixels(a.delta.negate()),b.flickEnabled&&!this.constrainDuringPan)}}function r(b){if(!b.preventDefaultAction&&this.viewport){var c=this.gestureSettingsByDeviceType(b.pointerType);if(c.flickEnabled&&b.speed>=c.flickMinSpeed){var d=0;this.panHorizontal&&(d=c.flickMomentum*b.speed*Math.cos(b.direction));var e=0;this.panVertical&&(e=c.flickMomentum*b.speed*Math.sin(b.direction));var f=this.viewport.pixelFromPoint(this.viewport.getCenter(!0));var g=this.viewport.pointFromPixel(new a.Point(f.x-d,f.y-e));this.viewport.panTo(g,!1)}this.viewport.applyConstraints()}this.raiseEvent("canvas-drag-end",{ +tracker:b.eventSource,position:b.position,speed:b.speed,direction:b.direction,shift:b.shift,originalEvent:b.originalEvent})}function s(a){this.raiseEvent("canvas-enter",{tracker:a.eventSource,pointerType:a.pointerType,position:a.position,buttons:a.buttons,pointers:a.pointers,insideElementPressed:a.insideElementPressed,buttonDownAny:a.buttonDownAny,originalEvent:a.originalEvent})}function t(b){window.location!=window.parent.location&&a.MouseTracker.resetAllMouseTrackers();this.raiseEvent("canvas-exit",{tracker:b.eventSource,pointerType:b.pointerType,position:b.position,buttons:b.buttons,pointers:b.pointers,insideElementPressed:b.insideElementPressed,buttonDownAny:b.buttonDownAny,originalEvent:b.originalEvent})}function u(a){this.raiseEvent("canvas-press",{tracker:a.eventSource,pointerType:a.pointerType,position:a.position,insideElementPressed:a.insideElementPressed,insideElementReleased:a.insideElementReleased,originalEvent:a.originalEvent})}function v(a){this.raiseEvent("canvas-release",{tracker:a.eventSource,pointerType:a.pointerType,position:a.position,insideElementPressed:a.insideElementPressed,insideElementReleased:a.insideElementReleased,originalEvent:a.originalEvent})}function w(a){this.raiseEvent("canvas-nonprimary-press",{tracker:a.eventSource,position:a.position,pointerType:a.pointerType,button:a.button,buttons:a.buttons,originalEvent:a.originalEvent})}function x(a){this.raiseEvent("canvas-nonprimary-release",{tracker:a.eventSource,position:a.position,pointerType:a.pointerType,button:a.button,buttons:a.buttons,originalEvent:a.originalEvent})}function y(a){var b,c,d,e;if(!a.preventDefaultAction&&this.viewport){b=this.gestureSettingsByDeviceType(a.pointerType);if(b.pinchToZoom){c=this.viewport.pointFromPixel(a.center,!0);d=this.viewport.pointFromPixel(a.lastCenter,!0);e=d.minus(c);this.panHorizontal||(e.x=0);this.panVertical||(e.y=0);this.viewport.zoomBy(a.distance/a.lastDistance,c,!0);this.viewport.panBy(e,!0);this.viewport.applyConstraints()}if(b.pinchRotate){var f=Math.atan2(a.gesturePoints[0].currentPos.y-a.gesturePoints[1].currentPos.y,a.gesturePoints[0].currentPos.x-a.gesturePoints[1].currentPos.x);var g=Math.atan2(a.gesturePoints[0].lastPos.y-a.gesturePoints[1].lastPos.y,a.gesturePoints[0].lastPos.x-a.gesturePoints[1].lastPos.x);this.viewport.setRotation(this.viewport.getRotation()+(f-g)*(180/Math.PI))}}this.raiseEvent("canvas-pinch",{tracker:a.eventSource,gesturePoints:a.gesturePoints,lastCenter:a.lastCenter,center:a.center,lastDistance:a.lastDistance,distance:a.distance,shift:a.shift,originalEvent:a.originalEvent});return!1}function z(b){var c,d,e,f;e=a.now();f=e-this._lastScrollTime;if(f>this.minScrollDeltaTime){this._lastScrollTime=e;if(!b.preventDefaultAction&&this.viewport){c=this.gestureSettingsByDeviceType(b.pointerType);if(c.scrollToZoom){d=Math.pow(this.zoomPerScroll,b.scroll);this.viewport.zoomBy(d,this.viewport.pointFromPixel(b.position,!0));this.viewport.applyConstraints()}}this.raiseEvent("canvas-scroll",{tracker:b.eventSource,position:b.position,scroll:b.scroll,shift:b.shift,originalEvent:b.originalEvent});if(c&&c.scrollToZoom)return!1}else{c=this.gestureSettingsByDeviceType(b.pointerType);if(c&&c.scrollToZoom)return!1}}function A(a){U[this.hash].mouseInside=!0;j(this);this.raiseEvent("container-enter",{tracker:a.eventSource,position:a.position,buttons:a.buttons,pointers:a.pointers,insideElementPressed:a.insideElementPressed,buttonDownAny:a.buttonDownAny,originalEvent:a.originalEvent})}function B(a){if(a.pointers<1){U[this.hash].mouseInside=!1;U[this.hash].animating||h(this)}this.raiseEvent("container-exit",{tracker:a.eventSource,position:a.position,buttons:a.buttons,pointers:a.pointers,insideElementPressed:a.insideElementPressed,buttonDownAny:a.buttonDownAny,originalEvent:a.originalEvent})}function C(a){D(a);a.isOpen()?a._updateRequestId=f(a,C):a._updateRequestId=!1}function D(a){if(!a._opening){if(a.autoResize){var c=b(a.container);var d=U[a.hash].prevContainerSize;if(!c.equals(d)){var e=a.viewport;if(a.preserveImageSizeOnResize){var f=d.x/c.x;var g=e.getZoom()*f;var i=e.getCenter();e.resize(c,!1);e.zoomTo(g,null,!0);e.panTo(i,!0)}else{var k=e.getBounds();e.resize(c,!0);e.fitBoundsWithConstraints(k,!0)}U[a.hash].prevContainerSize=c;U[a.hash].forceRedraw=!0}}var l=a.viewport.update();var m=a.world.update()||l;l&&a.raiseEvent("viewport-change");a.referenceStrip&&(m=a.referenceStrip.update(a.viewport)||m);if(!U[a.hash].animating&&m){a.raiseEvent("animation-start");j(a)}if(m||U[a.hash].forceRedraw||a.world.needsDraw()){E(a);a._drawOverlays();a.navigator&&a.navigator.update(a.viewport);U[a.hash].forceRedraw=!1;m&&a.raiseEvent("animation")}if(U[a.hash].animating&&!m){a.raiseEvent("animation-finish");U[a.hash].mouseInside||h(a)}U[a.hash].animating=m}}function E(a){a.imageLoader.clear();a.drawer.clear();a.world.draw();a.raiseEvent("update-viewport",{})}function F(a,b){return a?a+b:b}function G(){U[this.hash].lastZoomTime=a.now();U[this.hash].zoomFactor=this.zoomPerSecond;U[this.hash].zooming=!0;J(this)}function H(){U[this.hash].lastZoomTime=a.now();U[this.hash].zoomFactor=1/this.zoomPerSecond;U[this.hash].zooming=!0;J(this)}function I(){U[this.hash].zooming=!1}function J(b){a.requestAnimationFrame(a.delegate(b,K))}function K(){var b,c,d;if(U[this.hash].zooming&&this.viewport){b=a.now();c=b-U[this.hash].lastZoomTime;d=Math.pow(U[this.hash].zoomFactor,c/1e3);this.viewport.zoomBy(d);this.viewport.applyConstraints();U[this.hash].lastZoomTime=b;J(this)}}function L(){if(this.viewport){U[this.hash].zooming=!1;this.viewport.zoomBy(this.zoomPerClick/1);this.viewport.applyConstraints()}}function M(){if(this.viewport){U[this.hash].zooming=!1;this.viewport.zoomBy(1/this.zoomPerClick);this.viewport.applyConstraints()}}function N(){this.buttons.emulateEnter();this.buttons.emulateExit()}function O(){this.viewport&&this.viewport.goHome()}function P(){this.isFullPage()&&!a.isFullScreen()?this.setFullPage(!1):this.setFullScreen(!this.isFullPage());this.buttons&&this.buttons.emulateExit();this.fullPageButton.element.focus();this.viewport&&this.viewport.applyConstraints()}function Q(){if(this.viewport){var a=this.viewport.getRotation();0===a?a=270:a-=90;this.viewport.setRotation(a)}}function R(){if(this.viewport){var a=this.viewport.getRotation();270===a?a=0:a+=90;this.viewport.setRotation(a)}}function S(){var a=this._sequenceIndex-1;this.navPrevNextWrap&&a<0&&(a+=this.tileSources.length);this.goToPage(a)}function T(){var a=this._sequenceIndex+1;this.navPrevNextWrap&&a>=this.tileSources.length&&(a=0);this.goToPage(a)}var U={};var V=1;a.Viewer=function(c){var d,e=arguments,g=this;a.isPlainObject(c)||(c={id:e[0],xmlPath:e.length>1?e[1]:void 0,prefixUrl:e.length>2?e[2]:void 0,controls:e.length>3?e[3]:void 0,overlays:e.length>4?e[4]:void 0});if(c.config){a.extend(!0,c,c.config);delete c.config}a.extend(!0,this,{id:c.id,hash:c.hash||V++,initialPage:0,element:null,container:null,canvas:null,overlays:[],overlaysContainer:null,previousBody:[],customControls:[],source:null,drawer:null,world:null,viewport:null,navigator:null,collectionViewport:null,collectionDrawer:null,navImages:null,buttons:null,profiler:null},a.DEFAULT_SETTINGS,c);if("undefined"==typeof this.hash)throw new Error("A hash must be defined, either by specifying options.id or options.hash.");"undefined"!=typeof U[this.hash]&&a.console.warn("Hash "+this.hash+" has already been used.");U[this.hash]={fsBoundsDelta:new a.Point(1,1),prevContainerSize:null,animating:!1,forceRedraw:!1,mouseInside:!1,group:null,zooming:!1,zoomFactor:null,lastZoomTime:null,fullPage:!1,onfullscreenchange:null};this._sequenceIndex=0;this._firstOpen=!0;this._updateRequestId=null;this._loadQueue=[];this.currentOverlays=[];this._lastScrollTime=a.now();a.EventSource.call(this);this.addHandler("open-failed",function(b){var c=a.getString("Errors.OpenFailed",b.eventSource,b.message);g._showMessage(c)});a.ControlDock.call(this,c);this.xmlPath&&(this.tileSources=[this.xmlPath]);this.element=this.element||document.getElementById(this.id);this.canvas=a.makeNeutralElement("div");this.canvas.className="openseadragon-canvas";!function(a){a.width="100%";a.height="100%";a.overflow="hidden";a.position="absolute";a.top="0px";a.left="0px"}(this.canvas.style);a.setElementTouchActionNone(this.canvas);""!==c.tabIndex&&(this.canvas.tabIndex=void 0===c.tabIndex?0:c.tabIndex);this.container.className="openseadragon-container";!function(a){a.width="100%";a.height="100%";a.position="relative";a.overflow="hidden";a.left="0px";a.top="0px";a.textAlign="left"}(this.container.style);this.container.insertBefore(this.canvas,this.container.firstChild);this.element.appendChild(this.container);this.bodyWidth=document.body.style.width;this.bodyHeight=document.body.style.height;this.bodyOverflow=document.body.style.overflow;this.docOverflow=document.documentElement.style.overflow;this.innerTracker=new a.MouseTracker({element:this.canvas,startDisabled:!this.mouseNavEnabled,clickTimeThreshold:this.clickTimeThreshold,clickDistThreshold:this.clickDistThreshold,dblClickTimeThreshold:this.dblClickTimeThreshold,dblClickDistThreshold:this.dblClickDistThreshold,keyDownHandler:a.delegate(this,m),keyHandler:a.delegate(this,n),clickHandler:a.delegate(this,o),dblClickHandler:a.delegate(this,p),dragHandler:a.delegate(this,q),dragEndHandler:a.delegate(this,r),enterHandler:a.delegate(this,s),exitHandler:a.delegate(this,t),pressHandler:a.delegate(this,u),releaseHandler:a.delegate(this,v),nonPrimaryPressHandler:a.delegate(this,w),nonPrimaryReleaseHandler:a.delegate(this,x),scrollHandler:a.delegate(this,z),pinchHandler:a.delegate(this,y)});this.outerTracker=new a.MouseTracker({element:this.container,startDisabled:!this.mouseNavEnabled,clickTimeThreshold:this.clickTimeThreshold,clickDistThreshold:this.clickDistThreshold,dblClickTimeThreshold:this.dblClickTimeThreshold,dblClickDistThreshold:this.dblClickDistThreshold,enterHandler:a.delegate(this,A),exitHandler:a.delegate(this,B)});this.toolbar&&(this.toolbar=new a.ControlDock({element:this.toolbar}));this.bindStandardControls();U[this.hash].prevContainerSize=b(this.container);this.world=new a.World({viewer:this});this.world.addHandler("add-item",function(a){g.source=g.world.getItemAt(0).source;U[g.hash].forceRedraw=!0;g._updateRequestId||(g._updateRequestId=f(g,C))});this.world.addHandler("remove-item",function(a){g.world.getItemCount()?g.source=g.world.getItemAt(0).source:g.source=null;U[g.hash].forceRedraw=!0});this.world.addHandler("metrics-change",function(a){g.viewport&&g.viewport._setContentBounds(g.world.getHomeBounds(),g.world.getContentFactor())});this.world.addHandler("item-index-change",function(a){g.source=g.world.getItemAt(0).source});this.viewport=new a.Viewport({containerSize:U[this.hash].prevContainerSize,springStiffness:this.springStiffness,animationTime:this.animationTime,minZoomImageRatio:this.minZoomImageRatio,maxZoomPixelRatio:this.maxZoomPixelRatio,visibilityRatio:this.visibilityRatio,wrapHorizontal:this.wrapHorizontal,wrapVertical:this.wrapVertical,defaultZoomLevel:this.defaultZoomLevel,minZoomLevel:this.minZoomLevel,maxZoomLevel:this.maxZoomLevel,viewer:this,degrees:this.degrees,navigatorRotate:this.navigatorRotate,homeFillsViewer:this.homeFillsViewer,margins:this.viewportMargins});this.viewport._setContentBounds(this.world.getHomeBounds(),this.world.getContentFactor());this.imageLoader=new a.ImageLoader({jobLimit:this.imageLoaderLimit,timeout:c.timeout});this.tileCache=new a.TileCache({maxImageCacheCount:this.maxImageCacheCount});this.drawer=new a.Drawer({viewer:this,viewport:this.viewport,element:this.canvas,debugGridColor:this.debugGridColor});this.overlaysContainer=a.makeNeutralElement("div");this.canvas.appendChild(this.overlaysContainer);if(!this.drawer.canRotate()){if(this.rotateLeft){d=this.buttons.buttons.indexOf(this.rotateLeft);this.buttons.buttons.splice(d,1);this.buttons.element.removeChild(this.rotateLeft.element)}if(this.rotateRight){d=this.buttons.buttons.indexOf(this.rotateRight);this.buttons.buttons.splice(d,1);this.buttons.element.removeChild(this.rotateRight.element)}}this.showNavigator&&(this.navigator=new a.Navigator({id:this.navigatorId,position:this.navigatorPosition,sizeRatio:this.navigatorSizeRatio,maintainSizeRatio:this.navigatorMaintainSizeRatio,top:this.navigatorTop,left:this.navigatorLeft,width:this.navigatorWidth,height:this.navigatorHeight,autoResize:this.navigatorAutoResize,autoFade:this.navigatorAutoFade,prefixUrl:this.prefixUrl,viewer:this,navigatorRotate:this.navigatorRotate,crossOriginPolicy:this.crossOriginPolicy}));this.sequenceMode&&this.bindSequenceControls();this.tileSources&&this.open(this.tileSources);for(d=0;d-1&&b.index=0&&a=0)return this;var i=d(this,h);this.currentOverlays.push(i);i.drawHTML(this.overlaysContainer,this.viewport);this.raiseEvent("add-overlay",{element:b,location:h.location,placement:h.placement});return this},updateOverlay:function(b,c,d){var f;b=a.getElement(b);f=e(this.currentOverlays,b);if(f>=0){this.currentOverlays[f].update(c,d);U[this.hash].forceRedraw=!0;this.raiseEvent("update-overlay",{element:b,location:c,placement:d})}return this},removeOverlay:function(b){var c;b=a.getElement(b);c=e(this.currentOverlays,b);if(c>=0){ +this.currentOverlays[c].destroy();this.currentOverlays.splice(c,1);U[this.hash].forceRedraw=!0;this.raiseEvent("remove-overlay",{element:b})}return this},clearOverlays:function(){for(;this.currentOverlays.length>0;)this.currentOverlays.pop().destroy();U[this.hash].forceRedraw=!0;this.raiseEvent("clear-overlay",{});return this},getOverlayById:function(b){var c;b=a.getElement(b);c=e(this.currentOverlays,b);return c>=0?this.currentOverlays[c]:null},_updateSequenceButtons:function(a){this.nextButton&&(this.tileSources&&this.tileSources.length-1!==a?this.nextButton.enable():this.navPrevNextWrap||this.nextButton.disable());this.previousButton&&(a>0?this.previousButton.enable():this.navPrevNextWrap||this.previousButton.disable())},_showMessage:function(b){this._hideMessage();var c=a.makeNeutralElement("div");c.appendChild(document.createTextNode(b));this.messageDiv=a.makeCenteredNode(c);a.addClass(this.messageDiv,"openseadragon-message");this.container.appendChild(this.messageDiv)},_hideMessage:function(){var a=this.messageDiv;if(a){a.parentNode.removeChild(a);delete this.messageDiv}},gestureSettingsByDeviceType:function(a){switch(a){case"mouse":return this.gestureSettingsMouse;case"touch":return this.gestureSettingsTouch;case"pen":return this.gestureSettingsPen;default:return this.gestureSettingsUnknown}},_drawOverlays:function(){var a,b=this.currentOverlays.length;for(a=0;a1){this.referenceStrip=new a.ReferenceStrip({id:this.referenceStripElement,position:this.referenceStripPosition,sizeRatio:this.referenceStripSizeRatio,scroll:this.referenceStripScroll,height:this.referenceStripHeight,width:this.referenceStripWidth,tileSources:this.tileSources,prefixUrl:this.prefixUrl,viewer:this});this.referenceStrip.setFocus(this._sequenceIndex)}}else a.console.warn('Attempting to display a reference strip while "sequenceMode" is off.')}})}(OpenSeadragon);!function(a){function b(a){if(a.quick&&this.viewer.viewport){this.viewer.viewport.panTo(this.viewport.pointFromPixel(a.position));this.viewer.viewport.applyConstraints()}}function c(a){if(this.viewer.viewport){this.panHorizontal||(a.delta.x=0);this.panVertical||(a.delta.y=0);this.viewer.viewport.panBy(this.viewport.deltaPointsFromPixels(a.delta));this.viewer.constrainDuringPan&&this.viewer.viewport.applyConstraints()}}function d(a){a.insideElementPressed&&this.viewer.viewport&&this.viewer.viewport.applyConstraints()}function e(a){this.viewer.raiseEvent("navigator-scroll",{tracker:a.eventSource,position:a.position,scroll:a.scroll,shift:a.shift,originalEvent:a.originalEvent});return!1}function f(a,b){a.style.webkitTransform="rotate("+b+"deg)";a.style.mozTransform="rotate("+b+"deg)";a.style.msTransform="rotate("+b+"deg)";a.style.oTransform="rotate("+b+"deg)";a.style.transform="rotate("+b+"deg)"}a.Navigator=function(g){function h(a){f(l.displayRegionContainer,a);f(l.displayRegion,-a);l.viewport.setRotation(a)}var i,j,k=g.viewer,l=this;if(g.id){this.element=document.getElementById(g.id);g.controlOptions={anchor:a.ControlAnchor.NONE,attachToViewer:!1,autoFade:!1}}else{g.id="navigator-"+a.now();this.element=a.makeNeutralElement("div");g.controlOptions={anchor:a.ControlAnchor.TOP_RIGHT,attachToViewer:!0,autoFade:g.autoFade};if(g.position)if("BOTTOM_RIGHT"==g.position)g.controlOptions.anchor=a.ControlAnchor.BOTTOM_RIGHT;else if("BOTTOM_LEFT"==g.position)g.controlOptions.anchor=a.ControlAnchor.BOTTOM_LEFT;else if("TOP_RIGHT"==g.position)g.controlOptions.anchor=a.ControlAnchor.TOP_RIGHT;else if("TOP_LEFT"==g.position)g.controlOptions.anchor=a.ControlAnchor.TOP_LEFT;else if("ABSOLUTE"==g.position){g.controlOptions.anchor=a.ControlAnchor.ABSOLUTE;g.controlOptions.top=g.top;g.controlOptions.left=g.left;g.controlOptions.height=g.height;g.controlOptions.width=g.width}}this.element.id=g.id;this.element.className+=" navigator";g=a.extend(!0,{sizeRatio:a.DEFAULT_SETTINGS.navigatorSizeRatio},g,{element:this.element,tabIndex:-1,showNavigator:!1,mouseNavEnabled:!1,showNavigationControl:!1,showSequenceControl:!1,immediateRender:!0,blendTime:0,animationTime:0,autoResize:g.autoResize,minZoomImageRatio:1});g.minPixelRatio=this.minPixelRatio=k.minPixelRatio;a.setElementTouchActionNone(this.element);this.borderWidth=2;this.fudge=new a.Point(1,1);this.totalBorderWidths=new a.Point(2*this.borderWidth,2*this.borderWidth).minus(this.fudge);g.controlOptions.anchor!=a.ControlAnchor.NONE&&!function(a,b){a.margin="0px";a.border=b+"px solid #555";a.padding="0px";a.background="#000";a.opacity=.8;a.overflow="hidden"}(this.element.style,this.borderWidth);this.displayRegion=a.makeNeutralElement("div");this.displayRegion.id=this.element.id+"-displayregion";this.displayRegion.className="displayregion";!function(a,b){a.position="relative";a.top="0px";a.left="0px";a.fontSize="0px";a.overflow="hidden";a.border=b+"px solid #900";a.margin="0px";a.padding="0px";a.background="transparent";a.float="left";a.cssFloat="left";a.styleFloat="left";a.zIndex=999999999;a.cursor="default"}(this.displayRegion.style,this.borderWidth);this.displayRegionContainer=a.makeNeutralElement("div");this.displayRegionContainer.id=this.element.id+"-displayregioncontainer";this.displayRegionContainer.className="displayregioncontainer";this.displayRegionContainer.style.width="100%";this.displayRegionContainer.style.height="100%";k.addControl(this.element,g.controlOptions);this._resizeWithViewer=g.controlOptions.anchor!=a.ControlAnchor.ABSOLUTE&&g.controlOptions.anchor!=a.ControlAnchor.NONE;if(this._resizeWithViewer){if(g.width&&g.height){this.element.style.height="number"==typeof g.height?g.height+"px":g.height;this.element.style.width="number"==typeof g.width?g.width+"px":g.width}else{i=a.getElementSize(k.element);this.element.style.height=Math.round(i.y*g.sizeRatio)+"px";this.element.style.width=Math.round(i.x*g.sizeRatio)+"px";this.oldViewerSize=i}j=a.getElementSize(this.element);this.elementArea=j.x*j.y}this.oldContainerSize=new a.Point(0,0);a.Viewer.apply(this,[g]);this.displayRegionContainer.appendChild(this.displayRegion);this.element.getElementsByTagName("div")[0].appendChild(this.displayRegionContainer);if(g.navigatorRotate){var m=g.viewer.viewport?g.viewer.viewport.getRotation():g.viewer.degrees||0;h(m);g.viewer.addHandler("rotate",function(a){h(a.degrees)})}this.innerTracker.destroy();this.innerTracker=new a.MouseTracker({element:this.element,dragHandler:a.delegate(this,c),clickHandler:a.delegate(this,b),releaseHandler:a.delegate(this,d),scrollHandler:a.delegate(this,e)});this.addHandler("reset-size",function(){l.viewport&&l.viewport.goHome(!0)});k.world.addHandler("item-index-change",function(a){window.setTimeout(function(){var b=l.world.getItemAt(a.previousIndex);l.world.setItemIndex(b,a.newIndex)},1)});k.world.addHandler("remove-item",function(a){var b=a.item;var c=l._getMatchingItem(b);c&&l.world.removeItem(c)});this.update(k.viewport)};a.extend(a.Navigator.prototype,a.EventSource.prototype,a.Viewer.prototype,{updateSize:function(){if(this.viewport){var b=new a.Point(0===this.container.clientWidth?1:this.container.clientWidth,0===this.container.clientHeight?1:this.container.clientHeight);if(!b.equals(this.oldContainerSize)){this.viewport.resize(b,!0);this.viewport.goHome(!0);this.oldContainerSize=b;this.drawer.clear();this.world.draw()}}},update:function(b){var c,d,e,f,g,h;c=a.getElementSize(this.viewer.element);if(this._resizeWithViewer&&c.x&&c.y&&!c.equals(this.oldViewerSize)){this.oldViewerSize=c;if(this.maintainSizeRatio||!this.elementArea){d=c.x*this.sizeRatio;e=c.y*this.sizeRatio}else{d=Math.sqrt(this.elementArea*(c.x/c.y));e=this.elementArea/d}this.element.style.width=Math.round(d)+"px";this.element.style.height=Math.round(e)+"px";this.elementArea||(this.elementArea=d*e);this.updateSize()}if(b&&this.viewport){f=b.getBoundsNoRotate(!0);g=this.viewport.pixelFromPointNoRotate(f.getTopLeft(),!1);h=this.viewport.pixelFromPointNoRotate(f.getBottomRight(),!1).minus(this.totalBorderWidths);var i=this.displayRegion.style;i.display=this.world.getItemCount()?"block":"none";i.top=Math.round(g.y)+"px";i.left=Math.round(g.x)+"px";var j=Math.abs(g.x-h.x);var k=Math.abs(g.y-h.y);i.width=Math.round(Math.max(j,0))+"px";i.height=Math.round(Math.max(k,0))+"px"}},addTiledImage:function(b){var c=this;var d=b.originalTiledImage;delete b.original;var e=a.extend({},b,{success:function(a){function b(){c._matchBounds(g,d)}function e(){c._matchOpacity(g,d)}function f(){c._matchCompositeOperation(g,d)}var g=a.item;g._originalForNavigator=d;c._matchBounds(g,d,!0);d.addHandler("bounds-change",b);d.addHandler("clip-change",b);d.addHandler("opacity-change",e);d.addHandler("composite-operation-change",f)}});return a.Viewer.prototype.addTiledImage.apply(this,[e])},_getMatchingItem:function(a){var b=this.world.getItemCount();var c;for(var d=0;d1||b.y>1)break}return a-1},getTileAtPoint:function(b,c){var d=c.x>=0&&c.x<=1&&c.y>=0&&c.y<=1/this.aspectRatio;a.console.assert(d,"[TileSource.getTileAtPoint] must be called with a valid point.");var e=this.dimensions.x*this.getLevelScale(b);var f=c.x*e;var g=c.y*e;var h=Math.floor(f/this.getTileWidth(b));var i=Math.floor(g/this.getTileHeight(b));c.x>=1&&(h=this.getNumTiles(b).x-1);c.y>=1/this.aspectRatio&&(i=this.getNumTiles(b).y-1);return new a.Point(h,i)},getTileBounds:function(b,c,d){var e=this.dimensions.times(this.getLevelScale(b)),f=this.getTileWidth(b),g=this.getTileHeight(b),h=0===c?0:f*c-this.tileOverlap,i=0===d?0:g*d-this.tileOverlap,j=f+(0===c?1:2)*this.tileOverlap,k=g+(0===d?1:2)*this.tileOverlap,l=1/e.x;j=Math.min(j,e.x-h);k=Math.min(k,e.y-i);return new a.Rect(h*l,i*l,j*l,k*l)},getImageInfo:function(c){var d,e,f,g,h,i,j,k=this;if(c){h=c.split("/");i=h[h.length-1];j=i.lastIndexOf(".");j>-1&&(h[h.length-1]=i.slice(0,j))}e=function(b){"string"==typeof b&&(b=a.parseXml(b));var d=a.TileSource.determineType(k,b,c);if(d){g=d.prototype.configure.apply(k,[b,c]);void 0===g.ajaxWithCredentials&&(g.ajaxWithCredentials=k.ajaxWithCredentials);f=new d(g);k.ready=!0;k.raiseEvent("ready",{tileSource:f})}else k.raiseEvent("open-failed",{message:"Unable to load TileSource",source:c})};if(c.match(/\.js$/)){d=c.split("/").pop().replace(".js","");a.jsonp({url:c,async:!1,callbackName:d,callback:e})}else a.makeAjaxRequest({url:c,withCredentials:this.ajaxWithCredentials,headers:this.ajaxHeaders,success:function(a){var c=b(a);e(c)},error:function(a,b){var d;try{d="HTTP "+a.status+" attempting to load TileSource"}catch(a){var e;e="undefined"!=typeof b&&b.toString?b.toString():"Unknown error";d=e+" attempting to load TileSource"}k.raiseEvent("open-failed",{message:d,source:c})}})},supports:function(a,b){return!1},configure:function(a,b){throw new Error("Method not implemented.")},getTileUrl:function(a,b,c){throw new Error("Method not implemented.")},getTileAjaxHeaders:function(a,b,c){return{}},tileExists:function(a,b,c){var d=this.getNumTiles(a);return a>=this.minLevel&&a<=this.maxLevel&&b>=0&&c>=0&&b=0;k--){l=this.displayRects[k];for(m=l.minLevel;m<=l.maxLevel;m++){this._levelRects[m]||(this._levelRects[m]=[]);this._levelRects[m].push(l)}}a.TileSource.apply(this,[n])};a.extend(a.DziTileSource.prototype,a.TileSource.prototype,{supports:function(a,b){var c;a.Image?c=a.Image.xmlns:a.documentElement&&("Image"!=a.documentElement.localName&&"Image"!=a.documentElement.tagName||(c=a.documentElement.namespaceURI));c=(c||"").toLowerCase();return c.indexOf("schemas.microsoft.com/deepzoom/2008")!==-1||c.indexOf("schemas.microsoft.com/deepzoom/2009")!==-1},configure:function(d,e){var f;f=a.isPlainObject(d)?c(this,d):b(this,d);if(e&&!f.tilesUrl){f.tilesUrl=e.replace(/([^\/]+?)(\.(dzi|xml|js)?(\?[^\/]*)?)?\/?$/,"$1_files/");e.search(/\.(dzi|xml|js)\?/)!=-1?f.queryParams=e.match(/\?.*/):f.queryParams=""}return f},getTileUrl:function(a,b,c){return[this.tilesUrl,a,"/",b,"_",c,".",this.fileFormat,this.queryParams].join("")},tileExists:function(a,b,c){var d,e,f,g,h,i,j,k=this._levelRects[a];if(!k||!k.length)return!0;for(j=k.length-1;j>=0;j--){d=k[j];if(!(ad.maxLevel)){e=this.getLevelScale(a);f=d.x*e;g=d.y*e;h=f+d.width*e;i=g+d.height*e;f=Math.floor(f/this._tileWidth);g=Math.floor(g/this._tileWidth);h=Math.ceil(h/this._tileWidth);i=Math.ceil(i/this._tileWidth);if(f<=b&&b0?d.tileSize=Math.max.apply(null,j):d.tileSize=h}else if(this.sizes&&this.sizes.length>0){this.emulateLegacyImagePyramid=!0;d.levels=c(this);a.extend(!0,d,{width:d.levels[d.levels.length-1].width,height:d.levels[d.levels.length-1].height,tileSize:Math.max(d.height,d.width),tileOverlap:0,minLevel:0,maxLevel:d.levels.length-1});this.levels=d.levels}else a.console.error("Nothing in the info.json to construct image pyramids from");d.maxLevel||this.emulateLegacyImagePyramid||(this.scale_factors?d.maxLevel=Math.floor(Math.pow(Math.max.apply(null,this.scale_factors),.5)):d.maxLevel=Number(Math.ceil(Math.log(Math.max(this.width,this.height),2))));a.TileSource.apply(this,[d])};a.extend(a.IIIFTileSource.prototype,a.TileSource.prototype,{supports:function(a,b){return!(!a.protocol||"http://iiif.io/api/image"!=a.protocol)||(!(!a["@context"]||"http://library.stanford.edu/iiif/image-api/1.1/context.json"!=a["@context"]&&"http://iiif.io/api/image/1/context.json"!=a["@context"])||(!(!a.profile||0!==a.profile.indexOf("http://library.stanford.edu/iiif/image-api/compliance.html"))||(!!(a.identifier&&a.width&&a.height)||!(!a.documentElement||"info"!=a.documentElement.tagName||"http://library.stanford.edu/iiif/image-api/ns/"!=a.documentElement.namespaceURI))))},configure:function(b,c){if(a.isPlainObject(b)){if(b["@context"])return b;b["@context"]="http://iiif.io/api/image/1.0/context.json";b["@id"]=c.replace("/info.json","");return b}var e=d(b);e["@context"]="http://iiif.io/api/image/1.0/context.json";e["@id"]=c.replace("/info.xml","");return e},getTileWidth:function(b){if(this.emulateLegacyImagePyramid)return a.TileSource.prototype.getTileWidth.call(this,b);var c=Math.pow(2,this.maxLevel-b);return this.tileSizePerScaleFactor&&this.tileSizePerScaleFactor[c]?this.tileSizePerScaleFactor[c].width:this._tileWidth},getTileHeight:function(b){if(this.emulateLegacyImagePyramid)return a.TileSource.prototype.getTileHeight.call(this,b);var c=Math.pow(2,this.maxLevel-b);return this.tileSizePerScaleFactor&&this.tileSizePerScaleFactor[c]?this.tileSizePerScaleFactor[c].height:this._tileHeight},getLevelScale:function(b){if(this.emulateLegacyImagePyramid){var c=NaN;this.levels.length>0&&b>=this.minLevel&&b<=this.maxLevel&&(c=this.levels[b].width/this.levels[this.maxLevel].width);return c}return a.TileSource.prototype.getLevelScale.call(this,b)},getNumTiles:function(b){if(this.emulateLegacyImagePyramid){var c=this.getLevelScale(b);return c?new a.Point(1,1):new a.Point(0,0)}return a.TileSource.prototype.getNumTiles.call(this,b)},getTileAtPoint:function(b,c){return this.emulateLegacyImagePyramid?new a.Point(0,0):a.TileSource.prototype.getTileAtPoint.call(this,b,c)},getTileUrl:function(a,b,c){if(this.emulateLegacyImagePyramid){var d=null;this.levels.length>0&&a>=this.minLevel&&a<=this.maxLevel&&(d=this.levels[a].url);return d}var e,f,g,h,i,j,k,l,m,n,o,p,q="0",r=Math.pow(.5,this.maxLevel-a),s=Math.ceil(this.width*r),t=Math.ceil(this.height*r);e=this.getTileWidth(a);f=this.getTileHeight(a);g=Math.ceil(e/r);h=Math.ceil(f/r);o=this["@context"].indexOf("/1.0/context.json")>-1||this["@context"].indexOf("/1.1/context.json")>-1||this["@context"].indexOf("/1/context.json")>-1?"native.jpg":"default.jpg";if(sj?i/256:j/256;g.maxLevel=Math.ceil(Math.log(h)/Math.log(2))-1;g.tileSize=256;g.width=i;g.height=j;a.TileSource.apply(this,[g])};a.extend(a.TmsTileSource.prototype,a.TileSource.prototype,{supports:function(a,b){return a.type&&"tiledmapservice"==a.type},configure:function(a,b){return a},getTileUrl:function(a,b,c){var d=this.getNumTiles(a).y-1;return this.tilesUrl+a+"/"+b+"/"+(d-c)+".png"}})}(OpenSeadragon);!function(a){a.ZoomifyTileSource=function(a){a.tileSize=256;var b={x:a.width,y:a.height};a.imageSizes=[{x:a.width,y:a.height}];a.gridSize=[this._getGridSize(a.width,a.height,a.tileSize)];for(;parseInt(b.x,10)>a.tileSize||parseInt(b.y,10)>a.tileSize;){b.x=Math.floor(b.x/2);b.y=Math.floor(b.y/2);a.imageSizes.push({x:b.x,y:b.y});a.gridSize.push(this._getGridSize(b.x,b.y,a.tileSize))}a.imageSizes.reverse();a.gridSize.reverse();a.minLevel=0;a.maxLevel=a.gridSize.length-1;OpenSeadragon.TileSource.apply(this,[a])};a.extend(a.ZoomifyTileSource.prototype,a.TileSource.prototype,{_getGridSize:function(a,b,c){return{x:Math.ceil(a/c),y:Math.ceil(b/c)}},_calculateAbsoluteTileNumber:function(a,b,c){var d=0;var e={};for(var f=0;f")}return e.sort(function(a,b){return a.height-b.height})}function c(b,c){if(!c||!c.documentElement)throw new Error(a.getString("Errors.Xml"));var e,f,g=c.documentElement,h=g.tagName,i=null,j=[];if("image"==h)try{i={type:g.getAttribute("type"),levels:[]};j=g.getElementsByTagName("level");for(f=0;f0){e=d.levels[d.levels.length-1].width;f=d.levels[d.levels.length-1].height}else{e=0;f=0;a.console.error("No supported image formats found")}a.extend(!0,d,{width:e,height:f,tileSize:Math.max(f,e),tileOverlap:0,minLevel:0,maxLevel:d.levels.length>0?d.levels.length-1:0});a.TileSource.apply(this,[d]);this.levels=d.levels};a.extend(a.LegacyTileSource.prototype,a.TileSource.prototype,{supports:function(a,b){return a.type&&"legacy-image-pyramid"==a.type||a.documentElement&&"legacy-image-pyramid"==a.documentElement.getAttribute("type")},configure:function(b,e){var f;f=a.isPlainObject(b)?d(this,b):c(this,b);return f},getLevelScale:function(a){var b=NaN;this.levels.length>0&&a>=this.minLevel&&a<=this.maxLevel&&(b=this.levels[a].width/this.levels[this.maxLevel].width);return b},getNumTiles:function(b){var c=this.getLevelScale(b);return c?new a.Point(1,1):new a.Point(0,0)},getTileUrl:function(a,b,c){var d=null;this.levels.length>0&&a>=this.minLevel&&a<=this.maxLevel&&(d=this.levels[a].url);return d}})}(OpenSeadragon);!function(a){a.ImageTileSource=function(b){b=a.extend({buildPyramid:!0,crossOriginPolicy:!1,ajaxWithCredentials:!1,useCanvas:!0},b);a.TileSource.apply(this,[b])};a.extend(a.ImageTileSource.prototype,a.TileSource.prototype,{supports:function(a,b){return a.type&&"image"===a.type},configure:function(a,b){return a},getImageInfo:function(b){var c=this._image=new Image;var d=this;this.crossOriginPolicy&&(c.crossOrigin=this.crossOriginPolicy);this.ajaxWithCredentials&&(c.useCredentials=this.ajaxWithCredentials);a.addEvent(c,"load",function(){d.width=Object.prototype.hasOwnProperty.call(c,"naturalWidth")?c.naturalWidth:c.width;d.height=Object.prototype.hasOwnProperty.call(c,"naturalHeight")?c.naturalHeight:c.height;d.aspectRatio=d.width/d.height;d.dimensions=new a.Point(d.width,d.height);d._tileWidth=d.width;d._tileHeight=d.height;d.tileOverlap=0;d.minLevel=0;d.levels=d._buildLevels();d.maxLevel=d.levels.length-1; +d.ready=!0;d.raiseEvent("ready",{tileSource:d})});a.addEvent(c,"error",function(){d.raiseEvent("open-failed",{message:"Error loading image at "+b,source:b})});c.src=b},getLevelScale:function(a){var b=NaN;a>=this.minLevel&&a<=this.maxLevel&&(b=this.levels[a].width/this.levels[this.maxLevel].width);return b},getNumTiles:function(b){var c=this.getLevelScale(b);return c?new a.Point(1,1):new a.Point(0,0)},getTileUrl:function(a,b,c){var d=null;a>=this.minLevel&&a<=this.maxLevel&&(d=this.levels[a].url);return d},getContext2D:function(a,b,c){var d=null;a>=this.minLevel&&a<=this.maxLevel&&(d=this.levels[a].context2D);return d},_buildLevels:function(){var b=[{url:this._image.src,width:Object.prototype.hasOwnProperty.call(this._image,"naturalWidth")?this._image.naturalWidth:this._image.width,height:Object.prototype.hasOwnProperty.call(this._image,"naturalHeight")?this._image.naturalHeight:this._image.height}];if(!this.buildPyramid||!a.supportsCanvas||!this.useCanvas){delete this._image;return b}var c=Object.prototype.hasOwnProperty.call(this._image,"naturalWidth")?this._image.naturalWidth:this._image.width;var d=Object.prototype.hasOwnProperty.call(this._image,"naturalHeight")?this._image.naturalHeight:this._image.height;var e=document.createElement("canvas");var f=e.getContext("2d");e.width=c;e.height=d;f.drawImage(this._image,0,0,c,d);b[0].context2D=f;delete this._image;if(a.isCanvasTainted(e))return b;for(;c>=2&&d>=2;){c=Math.floor(c/2);d=Math.floor(d/2);var g=document.createElement("canvas");var h=g.getContext("2d");g.width=c;g.height=d;h.drawImage(e,0,0,c,d);b.splice(0,0,{context2D:h,width:c,height:d});e=g;f=h}return b}})}(OpenSeadragon);!function(a){a.TileSourceCollection=function(b,c,d,e){a.console.error("TileSourceCollection is deprecated; use World instead")}}(OpenSeadragon);!function(a){function b(b){a.requestAnimationFrame(function(){c(b)})}function c(c){var d,e,f;if(c.shouldFade){d=a.now();e=d-c.fadeBeginTime;f=1-e/c.fadeLength;f=Math.min(1,f);f=Math.max(0,f);c.imgGroup&&a.setElementOpacity(c.imgGroup,f,!0);f>0&&b(c)}}function d(c){c.shouldFade=!0;c.fadeBeginTime=a.now()+c.fadeDelay;window.setTimeout(function(){b(c)},c.fadeDelay)}function e(b){b.shouldFade=!1;b.imgGroup&&a.setElementOpacity(b.imgGroup,1,!0)}function f(b,c){if(!b.element.disabled){if(c>=a.ButtonState.GROUP&&b.currentState==a.ButtonState.REST){e(b);b.currentState=a.ButtonState.GROUP}if(c>=a.ButtonState.HOVER&&b.currentState==a.ButtonState.GROUP){b.imgHover&&(b.imgHover.style.visibility="");b.currentState=a.ButtonState.HOVER}if(c>=a.ButtonState.DOWN&&b.currentState==a.ButtonState.HOVER){b.imgDown&&(b.imgDown.style.visibility="");b.currentState=a.ButtonState.DOWN}}}function g(b,c){if(!b.element.disabled){if(c<=a.ButtonState.HOVER&&b.currentState==a.ButtonState.DOWN){b.imgDown&&(b.imgDown.style.visibility="hidden");b.currentState=a.ButtonState.HOVER}if(c<=a.ButtonState.GROUP&&b.currentState==a.ButtonState.HOVER){b.imgHover&&(b.imgHover.style.visibility="hidden");b.currentState=a.ButtonState.GROUP}if(c<=a.ButtonState.REST&&b.currentState==a.ButtonState.GROUP){d(b);b.currentState=a.ButtonState.REST}}}a.ButtonState={REST:0,GROUP:1,HOVER:2,DOWN:3};a.Button=function(b){var c=this;a.EventSource.call(this);a.extend(!0,this,{tooltip:null,srcRest:null,srcGroup:null,srcHover:null,srcDown:null,clickTimeThreshold:a.DEFAULT_SETTINGS.clickTimeThreshold,clickDistThreshold:a.DEFAULT_SETTINGS.clickDistThreshold,fadeDelay:0,fadeLength:2e3,onPress:null,onRelease:null,onClick:null,onEnter:null,onExit:null,onFocus:null,onBlur:null},b);this.element=b.element||a.makeNeutralElement("div");if(!b.element){this.imgRest=a.makeTransparentImage(this.srcRest);this.imgGroup=a.makeTransparentImage(this.srcGroup);this.imgHover=a.makeTransparentImage(this.srcHover);this.imgDown=a.makeTransparentImage(this.srcDown);this.imgRest.alt=this.imgGroup.alt=this.imgHover.alt=this.imgDown.alt=this.tooltip;this.element.style.position="relative";a.setElementTouchActionNone(this.element);this.imgGroup.style.position=this.imgHover.style.position=this.imgDown.style.position="absolute";this.imgGroup.style.top=this.imgHover.style.top=this.imgDown.style.top="0px";this.imgGroup.style.left=this.imgHover.style.left=this.imgDown.style.left="0px";this.imgHover.style.visibility=this.imgDown.style.visibility="hidden";a.Browser.vendor==a.BROWSERS.FIREFOX&&a.Browser.version<3&&(this.imgGroup.style.top=this.imgHover.style.top=this.imgDown.style.top="");this.element.appendChild(this.imgRest);this.element.appendChild(this.imgGroup);this.element.appendChild(this.imgHover);this.element.appendChild(this.imgDown)}this.addHandler("press",this.onPress);this.addHandler("release",this.onRelease);this.addHandler("click",this.onClick);this.addHandler("enter",this.onEnter);this.addHandler("exit",this.onExit);this.addHandler("focus",this.onFocus);this.addHandler("blur",this.onBlur);this.currentState=a.ButtonState.GROUP;this.fadeBeginTime=null;this.shouldFade=!1;this.element.style.display="inline-block";this.element.style.position="relative";this.element.title=this.tooltip;this.tracker=new a.MouseTracker({element:this.element,clickTimeThreshold:this.clickTimeThreshold,clickDistThreshold:this.clickDistThreshold,enterHandler:function(b){if(b.insideElementPressed){f(c,a.ButtonState.DOWN);c.raiseEvent("enter",{originalEvent:b.originalEvent})}else b.buttonDownAny||f(c,a.ButtonState.HOVER)},focusHandler:function(a){this.enterHandler(a);c.raiseEvent("focus",{originalEvent:a.originalEvent})},exitHandler:function(b){g(c,a.ButtonState.GROUP);b.insideElementPressed&&c.raiseEvent("exit",{originalEvent:b.originalEvent})},blurHandler:function(a){this.exitHandler(a);c.raiseEvent("blur",{originalEvent:a.originalEvent})},pressHandler:function(b){f(c,a.ButtonState.DOWN);c.raiseEvent("press",{originalEvent:b.originalEvent})},releaseHandler:function(b){if(b.insideElementPressed&&b.insideElementReleased){g(c,a.ButtonState.HOVER);c.raiseEvent("release",{originalEvent:b.originalEvent})}else b.insideElementPressed?g(c,a.ButtonState.GROUP):f(c,a.ButtonState.HOVER)},clickHandler:function(a){a.quick&&c.raiseEvent("click",{originalEvent:a.originalEvent})},keyHandler:function(a){if(13===a.keyCode){c.raiseEvent("click",{originalEvent:a.originalEvent});c.raiseEvent("release",{originalEvent:a.originalEvent});return!1}return!0}});g(this,a.ButtonState.REST)};a.extend(a.Button.prototype,a.EventSource.prototype,{notifyGroupEnter:function(){f(this,a.ButtonState.GROUP)},notifyGroupExit:function(){g(this,a.ButtonState.REST)},disable:function(){this.notifyGroupExit();this.element.disabled=!0;a.setElementOpacity(this.element,.2,!0)},enable:function(){this.element.disabled=!1;a.setElementOpacity(this.element,1,!0);this.notifyGroupEnter()}})}(OpenSeadragon);!function(a){a.ButtonGroup=function(b){a.extend(!0,this,{buttons:[],clickTimeThreshold:a.DEFAULT_SETTINGS.clickTimeThreshold,clickDistThreshold:a.DEFAULT_SETTINGS.clickDistThreshold,labelText:""},b);var c,d=this.buttons.concat([]),e=this;this.element=b.element||a.makeNeutralElement("div");if(!b.group){this.label=a.makeNeutralElement("label");this.element.style.display="inline-block";this.element.appendChild(this.label);for(c=0;c=270){g=this.getTopRight();this.x=g.x;this.y=g.y;h=this.height;this.height=this.width;this.width=h;this.degrees-=270}else if(this.degrees>=180){g=this.getBottomRight();this.x=g.x;this.y=g.y;this.degrees-=180}else if(this.degrees>=90){g=this.getBottomLeft();this.x=g.x;this.y=g.y;h=this.height;this.height=this.width;this.width=h;this.degrees-=90}};a.Rect.fromSummits=function(b,c,d){var e=b.distanceTo(c);var f=b.distanceTo(d);var g=c.minus(b);var h=Math.atan(g.y/g.x);g.x<0?h+=Math.PI:g.y<0&&(h+=2*Math.PI);return new a.Rect(b.x,b.y,e,f,h/Math.PI*180)};a.Rect.prototype={clone:function(){return new a.Rect(this.x,this.y,this.width,this.height,this.degrees)},getAspectRatio:function(){return this.width/this.height},getTopLeft:function(){return new a.Point(this.x,this.y)},getBottomRight:function(){return new a.Point(this.x+this.width,this.y+this.height).rotate(this.degrees,this.getTopLeft())},getTopRight:function(){return new a.Point(this.x+this.width,this.y).rotate(this.degrees,this.getTopLeft())},getBottomLeft:function(){return new a.Point(this.x,this.y+this.height).rotate(this.degrees,this.getTopLeft())},getCenter:function(){return new a.Point(this.x+this.width/2,this.y+this.height/2).rotate(this.degrees,this.getTopLeft())},getSize:function(){return new a.Point(this.width,this.height)},equals:function(b){return b instanceof a.Rect&&this.x===b.x&&this.y===b.y&&this.width===b.width&&this.height===b.height&&this.degrees===b.degrees},times:function(b){return new a.Rect(this.x*b,this.y*b,this.width*b,this.height*b,this.degrees)},translate:function(b){return new a.Rect(this.x+b.x,this.y+b.y,this.width,this.height,this.degrees)},union:function(b){var c=this.getBoundingBox();var d=b.getBoundingBox();var e=Math.min(c.x,d.x);var f=Math.min(c.y,d.y);var g=Math.max(c.x+c.width,d.x+d.width);var h=Math.max(c.y+c.height,d.y+d.height);return new a.Rect(e,f,g-e,h-f)},intersection:function(b){function c(b,c,e,f){var g=c.minus(b);var h=f.minus(e);var i=-h.x*g.y+g.x*h.y;if(0===i)return null;var j=(g.x*(b.y-e.y)-g.y*(b.x-e.x))/i;var k=(h.x*(b.y-e.y)-h.y*(b.x-e.x))/i;return-d<=j&&j<=1-d&&-d<=k&&k<=1-d?new a.Point(b.x+k*g.x,b.y+k*g.y):null}var d=1e-10;var e=[];var f=this.getTopLeft();b.containsPoint(f,d)&&e.push(f);var g=this.getTopRight();b.containsPoint(g,d)&&e.push(g);var h=this.getBottomLeft();b.containsPoint(h,d)&&e.push(h);var i=this.getBottomRight();b.containsPoint(i,d)&&e.push(i);var j=b.getTopLeft();this.containsPoint(j,d)&&e.push(j);var k=b.getTopRight();this.containsPoint(k,d)&&e.push(k);var l=b.getBottomLeft();this.containsPoint(l,d)&&e.push(l);var m=b.getBottomRight();this.containsPoint(m,d)&&e.push(m);var n=this._getSegments();var o=b._getSegments();for(var p=0;pv&&(v=z.x);z.yx&&(x=z.y)}return new a.Rect(u,w,v-u,x-w)},_getSegments:function(){var a=this.getTopLeft();var b=this.getTopRight();var c=this.getBottomLeft();var d=this.getBottomRight();return[[a,b],[b,d],[d,c],[c,a]]},rotate:function(b,c){b=a.positiveModulo(b,360);if(0===b)return this.clone();c=c||this.getCenter();var d=this.getTopLeft().rotate(b,c);var e=this.getTopRight().rotate(b,c);var f=e.minus(d);f=f.apply(function(a){var b=1e-15;return Math.abs(a)=-b&&(a.x-d.x)*f.x+(a.y-d.y)*f.y<=b&&(a.x-c.x)*g.x+(a.y-c.y)*g.y>=-b&&(a.x-e.x)*g.x+(a.y-e.y)*g.y<=b},toString:function(){return"["+Math.round(100*this.x)/100+", "+Math.round(100*this.y)/100+", "+Math.round(100*this.width)/100+"x"+Math.round(100*this.height)/100+", "+Math.round(100*this.degrees)/100+"deg]"}}}(OpenSeadragon);!function(a){function b(b){var c=Number(this.element.style.marginLeft.replace("px","")),e=Number(this.element.style.marginTop.replace("px","")),f=Number(this.element.style.width.replace("px","")),g=Number(this.element.style.height.replace("px","")),h=a.getElementSize(this.viewer.canvas);this.dragging=!0;if(this.element)if("horizontal"==this.scroll){if(-b.delta.x>0){if(c>-(f-h.x)){this.element.style.marginLeft=c+2*b.delta.x+"px";d(this,h.x,c+2*b.delta.x)}}else if(-b.delta.x<0&&c<0){this.element.style.marginLeft=c+2*b.delta.x+"px";d(this,h.x,c+2*b.delta.x)}}else if(-b.delta.y>0){if(e>-(g-h.y)){this.element.style.marginTop=e+2*b.delta.y+"px";d(this,h.y,e+2*b.delta.y)}}else if(-b.delta.y<0&&e<0){this.element.style.marginTop=e+2*b.delta.y+"px";d(this,h.y,e+2*b.delta.y)}return!1}function c(b){var c=Number(this.element.style.marginLeft.replace("px","")),e=Number(this.element.style.marginTop.replace("px","")),f=Number(this.element.style.width.replace("px","")),g=Number(this.element.style.height.replace("px","")),h=a.getElementSize(this.viewer.canvas);if(this.element)if("horizontal"==this.scroll){if(b.scroll>0){if(c>-(f-h.x)){this.element.style.marginLeft=c-60*b.scroll+"px";d(this,h.x,c-60*b.scroll)}}else if(b.scroll<0&&c<0){this.element.style.marginLeft=c-60*b.scroll+"px";d(this,h.x,c-60*b.scroll)}}else if(b.scroll<0){if(e>h.y-g){this.element.style.marginTop=e+60*b.scroll+"px";d(this,h.y,e+60*b.scroll)}}else if(b.scroll>0&&e<0){this.element.style.marginTop=e+60*b.scroll+"px";d(this,h.y,e+60*b.scroll)}return!1}function d(b,c,d){var e,f,g,h,i,j,k;e="horizontal"==b.scroll?b.panelWidth:b.panelHeight;f=Math.ceil(c/e)+5;g=Math.ceil((Math.abs(d)+c)/e)+1;f=g-f;f=f<0?0:f;for(j=f;jj+g.x-this.panelWidth){c=Math.min(c,h-g.x);this.element.style.marginLeft=-c+"px";d(this,g.x,-c)}else if(ck+g.y-this.panelHeight){c=Math.min(c,i-g.y);this.element.style.marginTop=-c+"px";d(this,g.y,-c)}else if(c1?c[1].springStiffness:5,animationTime:c.length>1?c[1].animationTime:1.5});a.console.assert("number"==typeof b.springStiffness&&0!==b.springStiffness,"[OpenSeadragon.Spring] options.springStiffness must be a non-zero number");a.console.assert("number"==typeof b.animationTime&&b.animationTime>=0,"[OpenSeadragon.Spring] options.animationTime must be a number greater than or equal to 0");if(b.exponential){this._exponential=!0;delete b.exponential}a.extend(!0,this,b);this.current={value:"number"==typeof this.initial?this.initial:this._exponential?0:1,time:a.now()};a.console.assert(!this._exponential||0!==this.current.value,"[OpenSeadragon.Spring] value must be non-zero for exponential springs");this.start={value:this.current.value,time:this.current.time};this.target={value:this.current.value,time:this.current.time};if(this._exponential){this.start._logValue=Math.log(this.start.value);this.target._logValue=Math.log(this.target.value);this.current._logValue=Math.log(this.current.value)}};a.Spring.prototype={resetTo:function(b){a.console.assert(!this._exponential||0!==b,"[OpenSeadragon.Spring.resetTo] target must be non-zero for exponential springs");this.start.value=this.target.value=this.current.value=b;this.start.time=this.target.time=this.current.time=a.now();if(this._exponential){this.start._logValue=Math.log(this.start.value);this.target._logValue=Math.log(this.target.value);this.current._logValue=Math.log(this.current.value)}},springTo:function(b){a.console.assert(!this._exponential||0!==b,"[OpenSeadragon.Spring.springTo] target must be non-zero for exponential springs");this.start.value=this.current.value;this.start.time=this.current.time;this.target.value=b;this.target.time=this.start.time+1e3*this.animationTime;if(this._exponential){this.start._logValue=Math.log(this.start.value);this.target._logValue=Math.log(this.target.value)}},shiftBy:function(b){this.start.value+=b;this.target.value+=b;if(this._exponential){a.console.assert(0!==this.target.value&&0!==this.start.value,"[OpenSeadragon.Spring.shiftBy] spring value must be non-zero for exponential springs");this.start._logValue=Math.log(this.start.value);this.target._logValue=Math.log(this.target.value)}},setExponential:function(b){this._exponential=b;if(this._exponential){a.console.assert(0!==this.current.value&&0!==this.target.value&&0!==this.start.value,"[OpenSeadragon.Spring.setExponential] spring value must be non-zero for exponential springs");this.start._logValue=Math.log(this.start.value);this.target._logValue=Math.log(this.target.value);this.current._logValue=Math.log(this.current.value)}},update:function(){this.current.time=a.now();var c,d;if(this._exponential){c=this.start._logValue;d=this.target._logValue}else{c=this.start.value;d=this.target.value}var e=this.current.time>=this.target.time?d:c+(d-c)*b(this.springStiffness,(this.current.time-this.start.time)/(this.target.time-this.start.time));var f=this.current.value;this._exponential?this.current.value=Math.exp(e):this.current.value=e;return f!=this.current.value},isAtTargetValue:function(){return this.current.value===this.target.value}}}(OpenSeadragon);!function(a){function b(b){a.extend(!0,this,{timeout:a.DEFAULT_SETTINGS.timeout,jobId:null},b);this.image=null}function c(a,b,c){var d;a.jobsInProgress--;if((!a.jobLimit||a.jobsInProgress0){d=a.jobQueue.shift();d.start();a.jobsInProgress++}c(b.image,b.errorMsg,b.request)}b.prototype={errorMsg:null,start:function(){var b=this;var c=this.abort;this.image=new Image;this.image.onload=function(){b.finish(!0)};this.image.onabort=this.image.onerror=function(){b.errorMsg="Image load aborted";b.finish(!1)};this.jobId=window.setTimeout(function(){b.errorMsg="Image load exceeded timeout";b.finish(!1)},this.timeout);if(this.loadWithAjax){this.request=a.makeAjaxRequest({url:this.src,withCredentials:this.ajaxWithCredentials,headers:this.ajaxHeaders,responseType:"arraybuffer",success:function(a){var c;try{c=new window.Blob([a.response])}catch(b){var d=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder;if("TypeError"===b.name&&d){var e=new d;e.append(a.response);c=e.getBlob()}}if(0===c.size){b.errorMsg="Empty image response.";b.finish(!1)}var f=(window.URL||window.webkitURL).createObjectURL(c);b.image.src=f},error:function(a){b.errorMsg="Image load aborted - XHR error";b.finish(!1)}});this.abort=function(){b.request.abort();"function"==typeof c&&c()}}else{this.crossOriginPolicy!==!1&&(this.image.crossOrigin=this.crossOriginPolicy);this.image.src=this.src}},finish:function(a){this.image.onload=this.image.onerror=this.image.onabort=null;a||(this.image=null);this.jobId&&window.clearTimeout(this.jobId);this.callback(this)}};a.ImageLoader=function(b){a.extend(!0,this,{jobLimit:a.DEFAULT_SETTINGS.imageLoaderLimit,timeout:a.DEFAULT_SETTINGS.timeout,jobQueue:[],jobsInProgress:0},b)};a.ImageLoader.prototype={addJob:function(a){var d=this,e=function(b){c(d,b,a.callback)},f={src:a.src,loadWithAjax:a.loadWithAjax,ajaxHeaders:a.loadWithAjax?a.ajaxHeaders:null,crossOriginPolicy:a.crossOriginPolicy,ajaxWithCredentials:a.ajaxWithCredentials,callback:e,abort:a.abort,timeout:this.timeout},g=new b(f);if(!this.jobLimit||this.jobsInProgressc&&(c=e)}return c},needsUpdate:function(){a.console.error("[Drawer.needsUpdate] this function is deprecated. Use World.needsDraw instead.");return this.viewer.world.needsDraw()},numTilesLoaded:function(){a.console.error("[Drawer.numTilesLoaded] this function is deprecated. Use TileCache.numTilesLoaded instead.");return this.viewer.tileCache.numTilesLoaded()},reset:function(){a.console.error("[Drawer.reset] this function is deprecated. Use World.resetItems instead.");this.viewer.world.resetItems();return this},update:function(){a.console.error("[Drawer.update] this function is deprecated. Use Drawer.clear and World.draw instead.");this.clear();this.viewer.world.draw();return this},canRotate:function(){return this.useCanvas},destroy:function(){this.canvas.width=1;this.canvas.height=1;this.sketchCanvas=null;this.sketchContext=null},clear:function(){this.canvas.innerHTML="";if(this.useCanvas){var a=this._calculateCanvasSize();if(this.canvas.width!=a.x||this.canvas.height!=a.y){this.canvas.width=a.x;this.canvas.height=a.y;if(null!==this.sketchCanvas){var b=this._calculateSketchCanvasSize();this.sketchCanvas.width=b.x;this.sketchCanvas.height=b.y}}this._clear()}},_clear:function(a,b){if(this.useCanvas){var c=this._getContext(a);if(b)c.clearRect(b.x,b.y,b.width,b.height);else{var d=c.canvas;c.clearRect(0,0,d.width,d.height)}}},viewportToDrawerRectangle:function(b){var c=this.viewport.pixelFromPointNoRotate(b.getTopLeft(),!0);var d=this.viewport.deltaPixelsFromPointsNoRotate(b.getSize(),!0);return new a.Rect(c.x*a.pixelDensityRatio,c.y*a.pixelDensityRatio,d.x*a.pixelDensityRatio,d.y*a.pixelDensityRatio)},drawTile:function(b,c,d,e,f){a.console.assert(b,"[Drawer.drawTile] tile is required");a.console.assert(c,"[Drawer.drawTile] drawingHandler is required");if(this.useCanvas){var g=this._getContext(d);e=e||1;b.drawCanvas(g,c,e,f)}else b.drawHTML(this.canvas)},_getContext:function(a){var b=this.context;if(a){if(null===this.sketchCanvas){this.sketchCanvas=document.createElement("canvas");var c=this._calculateSketchCanvasSize();this.sketchCanvas.width=c.x;this.sketchCanvas.height=c.y;this.sketchContext=this.sketchCanvas.getContext("2d");if(0===this.viewport.getRotation()){var d=this;this.viewer.addHandler("rotate",function a(){if(0!==d.viewport.getRotation()){d.viewer.removeHandler("rotate",a);var b=d._calculateSketchCanvasSize();d.sketchCanvas.width=b.x;d.sketchCanvas.height=b.y}})}}b=this.sketchContext}return b},saveContext:function(a){this.useCanvas&&this._getContext(a).save()},restoreContext:function(a){this.useCanvas&&this._getContext(a).restore()},setClip:function(a,b){if(this.useCanvas){var c=this._getContext(b);c.beginPath();c.rect(a.x,a.y,a.width,a.height);c.clip()}},drawRectangle:function(a,b,c){if(this.useCanvas){var d=this._getContext(c);d.save();d.fillStyle=b;d.fillRect(a.x,a.y,a.width,a.height);d.restore()}},blendSketch:function(b,c,d,e){var f=b;a.isPlainObject(f)||(f={opacity:b,scale:c,translate:d,compositeOperation:e});if(this.useCanvas&&this.sketchCanvas){b=f.opacity;e=f.compositeOperation;var g=f.bounds;this.context.save();this.context.globalAlpha=b;e&&(this.context.globalCompositeOperation=e);if(g){if(g.x<0){g.width+=g.x;g.x=0}g.x+g.width>this.canvas.width&&(g.width=this.canvas.width-g.x);if(g.y<0){g.height+=g.y;g.y=0}g.y+g.height>this.canvas.height&&(g.height=this.canvas.height-g.y);this.context.drawImage(this.sketchCanvas,g.x,g.y,g.width,g.height,g.x,g.y,g.width,g.height)}else{c=f.scale||1;d=f.translate;var h=d instanceof a.Point?d:new a.Point(0,0);var i=0;var j=0;if(d){var k=this.sketchCanvas.width-this.canvas.width;var l=this.sketchCanvas.height-this.canvas.height;i=Math.round(k/2);j=Math.round(l/2)}this.context.drawImage(this.sketchCanvas,h.x-i*c,h.y-j*c,(this.canvas.width+2*i)*c,(this.canvas.height+2*j)*c,-i,-j,this.canvas.width+2*i,this.canvas.height+2*j)}this.context.restore()}},drawDebugInfo:function(b,c,d,e){if(this.useCanvas){var f=this.context;f.save();f.lineWidth=2*a.pixelDensityRatio;f.font="small-caps bold "+13*a.pixelDensityRatio+"px arial";f.strokeStyle=this.debugGridColor;f.fillStyle=this.debugGridColor;0!==this.viewport.degrees&&this._offsetForRotation({degrees:this.viewport.degrees});e.getRotation(!0)%360!==0&&this._offsetForRotation({degrees:e.getRotation(!0),point:e.viewport.pixelFromPointNoRotate(e._getRotationPoint(!0),!0)});f.strokeRect(b.position.x*a.pixelDensityRatio,b.position.y*a.pixelDensityRatio,b.size.x*a.pixelDensityRatio,b.size.y*a.pixelDensityRatio);var g=(b.position.x+b.size.x/2)*a.pixelDensityRatio;var h=(b.position.y+b.size.y/2)*a.pixelDensityRatio;f.translate(g,h);f.rotate(Math.PI/180*-this.viewport.degrees);f.translate(-g,-h);if(0===b.x&&0===b.y){f.fillText("Zoom: "+this.viewport.getZoom(),b.position.x*a.pixelDensityRatio,(b.position.y-30)*a.pixelDensityRatio);f.fillText("Pan: "+this.viewport.getBounds().toString(),b.position.x*a.pixelDensityRatio,(b.position.y-20)*a.pixelDensityRatio)}f.fillText("Level: "+b.level,(b.position.x+10)*a.pixelDensityRatio,(b.position.y+20)*a.pixelDensityRatio);f.fillText("Column: "+b.x,(b.position.x+10)*a.pixelDensityRatio,(b.position.y+30)*a.pixelDensityRatio);f.fillText("Row: "+b.y,(b.position.x+10)*a.pixelDensityRatio,(b.position.y+40)*a.pixelDensityRatio);f.fillText("Order: "+d+" of "+c,(b.position.x+10)*a.pixelDensityRatio,(b.position.y+50)*a.pixelDensityRatio);f.fillText("Size: "+b.size.toString(),(b.position.x+10)*a.pixelDensityRatio,(b.position.y+60)*a.pixelDensityRatio);f.fillText("Position: "+b.position.toString(),(b.position.x+10)*a.pixelDensityRatio,(b.position.y+70)*a.pixelDensityRatio);0!==this.viewport.degrees&&this._restoreRotationChanges();e.getRotation(!0)%360!==0&&this._restoreRotationChanges();f.restore()}},debugRect:function(b){if(this.useCanvas){var c=this.context;c.save();c.lineWidth=2*a.pixelDensityRatio;c.strokeStyle=this.debugGridColor;c.fillStyle=this.debugGridColor;c.strokeRect(b.x*a.pixelDensityRatio,b.y*a.pixelDensityRatio,b.width*a.pixelDensityRatio,b.height*a.pixelDensityRatio);c.restore()}},getCanvasSize:function(b){var c=this._getContext(b).canvas;return new a.Point(c.width,c.height)},getCanvasCenter:function(){return new a.Point(this.canvas.width/2,this.canvas.height/2)},_offsetForRotation:function(b){var c=b.point?b.point.times(a.pixelDensityRatio):this.getCanvasCenter();var d=this._getContext(b.useSketch);d.save();d.translate(c.x,c.y);d.rotate(Math.PI/180*b.degrees);d.translate(-c.x,-c.y)},_restoreRotationChanges:function(a){var b=this._getContext(a);b.restore()},_calculateCanvasSize:function(){var b=a.pixelDensityRatio;var c=this.viewport.getContainerSize();return{x:c.x*b,y:c.y*b}},_calculateSketchCanvasSize:function(){var a=this._calculateCanvasSize();if(0===this.viewport.getRotation())return a;var b=Math.ceil(Math.sqrt(a.x*a.x+a.y*a.y));return{x:b,y:b}}}}(OpenSeadragon);!function(a){a.Viewport=function(b){var c=arguments;c.length&&c[0]instanceof a.Point&&(b={containerSize:c[0],contentSize:c[1],config:c[2]});if(b.config){a.extend(!0,b,b.config);delete b.config}this._margins=a.extend({left:0,top:0,right:0,bottom:0},b.margins||{});delete b.margins;a.extend(!0,this,{containerSize:null,contentSize:null,zoomPoint:null,viewer:null,springStiffness:a.DEFAULT_SETTINGS.springStiffness,animationTime:a.DEFAULT_SETTINGS.animationTime,minZoomImageRatio:a.DEFAULT_SETTINGS.minZoomImageRatio,maxZoomPixelRatio:a.DEFAULT_SETTINGS.maxZoomPixelRatio,visibilityRatio:a.DEFAULT_SETTINGS.visibilityRatio,wrapHorizontal:a.DEFAULT_SETTINGS.wrapHorizontal,wrapVertical:a.DEFAULT_SETTINGS.wrapVertical,defaultZoomLevel:a.DEFAULT_SETTINGS.defaultZoomLevel,minZoomLevel:a.DEFAULT_SETTINGS.minZoomLevel,maxZoomLevel:a.DEFAULT_SETTINGS.maxZoomLevel,degrees:a.DEFAULT_SETTINGS.degrees,homeFillsViewer:a.DEFAULT_SETTINGS.homeFillsViewer},b);this._updateContainerInnerSize();this.centerSpringX=new a.Spring({initial:0,springStiffness:this.springStiffness,animationTime:this.animationTime});this.centerSpringY=new a.Spring({initial:0,springStiffness:this.springStiffness,animationTime:this.animationTime});this.zoomSpring=new a.Spring({exponential:!0,initial:1,springStiffness:this.springStiffness,animationTime:this.animationTime});this._oldCenterX=this.centerSpringX.current.value;this._oldCenterY=this.centerSpringY.current.value;this._oldZoom=this.zoomSpring.current.value;this._setContentBounds(new a.Rect(0,0,1,1),1);this.goHome(!0);this.update()};a.Viewport.prototype={resetContentSize:function(b){a.console.assert(b,"[Viewport.resetContentSize] contentSize is required");a.console.assert(b instanceof a.Point,"[Viewport.resetContentSize] contentSize must be an OpenSeadragon.Point");a.console.assert(b.x>0,"[Viewport.resetContentSize] contentSize.x must be greater than 0");a.console.assert(b.y>0,"[Viewport.resetContentSize] contentSize.y must be greater than 0");this._setContentBounds(new a.Rect(0,0,1,b.y/b.x),b.x);return this},setHomeBounds:function(b,c){a.console.error("[Viewport.setHomeBounds] this function is deprecated; The content bounds should not be set manually.");this._setContentBounds(b,c)},_setContentBounds:function(b,c){a.console.assert(b,"[Viewport._setContentBounds] bounds is required");a.console.assert(b instanceof a.Rect,"[Viewport._setContentBounds] bounds must be an OpenSeadragon.Rect");a.console.assert(b.width>0,"[Viewport._setContentBounds] bounds.width must be greater than 0");a.console.assert(b.height>0,"[Viewport._setContentBounds] bounds.height must be greater than 0");this._contentBoundsNoRotate=b.clone();this._contentSizeNoRotate=this._contentBoundsNoRotate.getSize().times(c);this._contentBounds=b.rotate(this.degrees).getBoundingBox();this._contentSize=this._contentBounds.getSize().times(c);this._contentAspectRatio=this._contentSize.x/this._contentSize.y;this.viewer&&this.viewer.raiseEvent("reset-size",{contentSize:this._contentSizeNoRotate.clone(),contentFactor:c,homeBounds:this._contentBoundsNoRotate.clone(),contentBounds:this._contentBounds.clone()})},getHomeZoom:function(){if(this.defaultZoomLevel)return this.defaultZoomLevel;var a=this._contentAspectRatio/this.getAspectRatio();var b;b=this.homeFillsViewer?a>=1?a:1:a>=1?1:a;return b/this._contentBounds.width},getHomeBounds:function(){return this.getHomeBoundsNoRotate().rotate(-this.getRotation())},getHomeBoundsNoRotate:function(){var b=this._contentBounds.getCenter();var c=1/this.getHomeZoom();var d=c/this.getAspectRatio();return new a.Rect(b.x-c/2,b.y-d/2,c,d)},goHome:function(a){this.viewer&&this.viewer.raiseEvent("home",{immediately:a});return this.fitBounds(this.getHomeBounds(),a)},getMinZoom:function(){var a=this.getHomeZoom(),b=this.minZoomLevel?this.minZoomLevel:this.minZoomImageRatio*a;return b},getMaxZoom:function(){var a=this.maxZoomLevel;if(!a){a=this._contentSize.x*this.maxZoomPixelRatio/this._containerInnerSize.x;a/=this._contentBounds.width}return Math.max(a,this.getHomeZoom())},getAspectRatio:function(){return this._containerInnerSize.x/this._containerInnerSize.y},getContainerSize:function(){return new a.Point(this.containerSize.x,this.containerSize.y)},getMargins:function(){return a.extend({},this._margins)},setMargins:function(b){a.console.assert("object"===a.type(b),"[Viewport.setMargins] margins must be an object");this._margins=a.extend({left:0,top:0,right:0,bottom:0},b);this._updateContainerInnerSize();this.viewer&&this.viewer.forceRedraw()},getBounds:function(a){return this.getBoundsNoRotate(a).rotate(-this.getRotation())},getBoundsNoRotate:function(b){var c=this.getCenter(b);var d=1/this.getZoom(b);var e=d/this.getAspectRatio();return new a.Rect(c.x-d/2,c.y-e/2,d,e)},getBoundsWithMargins:function(a){return this.getBoundsNoRotateWithMargins(a).rotate(-this.getRotation(),this.getCenter(a))},getBoundsNoRotateWithMargins:function(a){var b=this.getBoundsNoRotate(a);var c=this._containerInnerSize.x*this.getZoom(a);b.x-=this._margins.left/c;b.y-=this._margins.top/c;b.width+=(this._margins.left+this._margins.right)/c;b.height+=(this._margins.top+this._margins.bottom)/c;return b},getCenter:function(b){var c,d,e,f,g,h,i,j,k=new a.Point(this.centerSpringX.current.value,this.centerSpringY.current.value),l=new a.Point(this.centerSpringX.target.value,this.centerSpringY.target.value);if(b)return k;if(!this.zoomPoint)return l;c=this.pixelFromPoint(this.zoomPoint,!0);d=this.getZoom();e=1/d;f=e/this.getAspectRatio();g=new a.Rect(k.x-e/2,k.y-f/2,e,f);h=this._pixelFromPoint(this.zoomPoint,g);i=h.minus(c);j=i.divide(this._containerInnerSize.x*d);return l.plus(j)},getZoom:function(a){return a?this.zoomSpring.current.value:this.zoomSpring.target.value},_applyZoomConstraints:function(a){return Math.max(Math.min(a,this.getMaxZoom()),this.getMinZoom())},_applyBoundaryConstraints:function(b){var c=new a.Rect(b.x,b.y,b.width,b.height);if(this.wrapHorizontal);else{var d=this.visibilityRatio*c.width;var e=c.x+c.width;var f=this._contentBoundsNoRotate.x+this._contentBoundsNoRotate.width;var g=this._contentBoundsNoRotate.x-e+d;var h=f-c.x-d;d>this._contentBoundsNoRotate.width?c.x+=(g+h)/2:h<0?c.x+=h:g>0&&(c.x+=g)}if(this.wrapVertical);else{var i=this.visibilityRatio*c.height;var j=c.y+c.height;var k=this._contentBoundsNoRotate.y+this._contentBoundsNoRotate.height;var l=this._contentBoundsNoRotate.y-j+i;var m=k-c.y-i;i>this._contentBoundsNoRotate.height?c.y+=(l+m)/2:m<0?c.y+=m:l>0&&(c.y+=l)}return c},_raiseConstraintsEvent:function(a){this.viewer&&this.viewer.raiseEvent("constrain",{immediately:a})},applyConstraints:function(a){var b=this.getZoom();var c=this._applyZoomConstraints(b);b!==c&&this.zoomTo(c,this.zoomPoint,a);var d=this.getBoundsNoRotate();var e=this._applyBoundaryConstraints(d);this._raiseConstraintsEvent(a);(d.x!==e.x||d.y!==e.y||a)&&this.fitBounds(e.rotate(-this.getRotation()),a);return this},ensureVisible:function(a){return this.applyConstraints(a)},_fitBounds:function(b,c){c=c||{};var d=c.immediately||!1;var e=c.constraints||!1;var f=this.getAspectRatio();var g=b.getCenter();var h=new a.Rect(b.x,b.y,b.width,b.height,b.degrees+this.getRotation()).getBoundingBox();h.getAspectRatio()>=f?h.height=h.width/f:h.width=h.height*f;h.x=g.x-h.width/2;h.y=g.y-h.height/2;var i=1/h.width;if(e){var j=h.getAspectRatio();var k=this._applyZoomConstraints(i);if(i!==k){i=k;h.width=1/i;h.x=g.x-h.width/2;h.height=h.width/j;h.y=g.y-h.height/2}h=this._applyBoundaryConstraints(h);g=h.getCenter();this._raiseConstraintsEvent(d)}if(d){this.panTo(g,!0);return this.zoomTo(i,null,!0)}this.panTo(this.getCenter(!0),!0);this.zoomTo(this.getZoom(!0),null,!0);var l=this.getBounds();var m=this.getZoom();if(0===m||Math.abs(i/m-1)<1e-8){this.zoomTo(i,!0);return this.panTo(g,d)}h=h.rotate(-this.getRotation());var n=h.getTopLeft().times(i).minus(l.getTopLeft().times(m)).divide(i-m);return this.zoomTo(i,n,d)},fitBounds:function(a,b){return this._fitBounds(a,{immediately:b,constraints:!1})},fitBoundsWithConstraints:function(a,b){return this._fitBounds(a,{immediately:b,constraints:!0})},fitVertically:function(b){var c=new a.Rect(this._contentBounds.x+this._contentBounds.width/2,this._contentBounds.y,0,this._contentBounds.height);return this.fitBounds(c,b)},fitHorizontally:function(b){var c=new a.Rect(this._contentBounds.x,this._contentBounds.y+this._contentBounds.height/2,this._contentBounds.width,0);return this.fitBounds(c,b)},getConstrainedBounds:function(a){var b,c;b=this.getBounds(a);c=this._applyBoundaryConstraints(b);return c},panBy:function(b,c){var d=new a.Point(this.centerSpringX.target.value,this.centerSpringY.target.value);return this.panTo(d.plus(b),c)},panTo:function(a,b){if(b){this.centerSpringX.resetTo(a.x);this.centerSpringY.resetTo(a.y)}else{this.centerSpringX.springTo(a.x);this.centerSpringY.springTo(a.y)}this.viewer&&this.viewer.raiseEvent("pan",{center:a,immediately:b});return this},zoomBy:function(a,b,c){return this.zoomTo(this.zoomSpring.target.value*a,b,c)},zoomTo:function(b,c,d){var e=this;this.zoomPoint=c instanceof a.Point&&!isNaN(c.x)&&!isNaN(c.y)?c:null;d?this._adjustCenterSpringsForZoomPoint(function(){e.zoomSpring.resetTo(b)}):this.zoomSpring.springTo(b);this.viewer&&this.viewer.raiseEvent("zoom",{zoom:b,refPoint:c,immediately:d});return this},setRotation:function(b){if(!this.viewer||!this.viewer.drawer.canRotate())return this;this.degrees=a.positiveModulo(b,360);this._setContentBounds(this.viewer.world.getHomeBounds(),this.viewer.world.getContentFactor());this.viewer.forceRedraw();this.viewer.raiseEvent("rotate",{degrees:b});return this},getRotation:function(){return this.degrees},resize:function(a,b){var c,d=this.getBoundsNoRotate(),e=d;this.containerSize.x=a.x;this.containerSize.y=a.y;this._updateContainerInnerSize();if(b){c=a.x/this.containerSize.x;e.width=d.width*c;e.height=e.width/this.getAspectRatio()}this.viewer&&this.viewer.raiseEvent("resize",{newContainerSize:a,maintain:b});return this.fitBounds(e,!0)},_updateContainerInnerSize:function(){this._containerInnerSize=new a.Point(Math.max(1,this.containerSize.x-(this._margins.left+this._margins.right)),Math.max(1,this.containerSize.y-(this._margins.top+this._margins.bottom)))},update:function(){var a=this;this._adjustCenterSpringsForZoomPoint(function(){a.zoomSpring.update()});this.centerSpringX.update();this.centerSpringY.update();var b=this.centerSpringX.current.value!==this._oldCenterX||this.centerSpringY.current.value!==this._oldCenterY||this.zoomSpring.current.value!==this._oldZoom;this._oldCenterX=this.centerSpringX.current.value;this._oldCenterY=this.centerSpringY.current.value;this._oldZoom=this.zoomSpring.current.value;return b},_adjustCenterSpringsForZoomPoint:function(a){if(this.zoomPoint){var b=this.pixelFromPoint(this.zoomPoint,!0);a();var c=this.pixelFromPoint(this.zoomPoint,!0);var d=c.minus(b);var e=this.deltaPointsFromPixels(d,!0);this.centerSpringX.shiftBy(e.x);this.centerSpringY.shiftBy(e.y);this.zoomSpring.isAtTargetValue()&&(this.zoomPoint=null)}else a()},deltaPixelsFromPointsNoRotate:function(a,b){return a.times(this._containerInnerSize.x*this.getZoom(b))},deltaPixelsFromPoints:function(a,b){return this.deltaPixelsFromPointsNoRotate(a.rotate(this.getRotation()),b)},deltaPointsFromPixelsNoRotate:function(a,b){return a.divide(this._containerInnerSize.x*this.getZoom(b))},deltaPointsFromPixels:function(a,b){return this.deltaPointsFromPixelsNoRotate(a,b).rotate(-this.getRotation())},pixelFromPointNoRotate:function(a,b){return this._pixelFromPointNoRotate(a,this.getBoundsNoRotate(b))},pixelFromPoint:function(a,b){return this._pixelFromPoint(a,this.getBoundsNoRotate(b))},_pixelFromPointNoRotate:function(b,c){return b.minus(c.getTopLeft()).times(this._containerInnerSize.x/c.width).plus(new a.Point(this._margins.left,this._margins.top))},_pixelFromPoint:function(a,b){return this._pixelFromPointNoRotate(a.rotate(this.getRotation(),this.getCenter(!0)),b)},pointFromPixelNoRotate:function(b,c){var d=this.getBoundsNoRotate(c);return b.minus(new a.Point(this._margins.left,this._margins.top)).divide(this._containerInnerSize.x/d.width).plus(d.getTopLeft())},pointFromPixel:function(a,b){return this.pointFromPixelNoRotate(a,b).rotate(-this.getRotation(),this.getCenter(!0))},_viewportToImageDelta:function(b,c){var d=this._contentBoundsNoRotate.width;return new a.Point(b*this._contentSizeNoRotate.x/d,c*this._contentSizeNoRotate.x/d)},viewportToImageCoordinates:function(b,c){if(b instanceof a.Point)return this.viewportToImageCoordinates(b.x,b.y);if(this.viewer){var d=this.viewer.world.getItemCount();if(d>1)a.console.error("[Viewport.viewportToImageCoordinates] is not accurate with multi-image; use TiledImage.viewportToImageCoordinates instead.");else if(1===d){var e=this.viewer.world.getItemAt(0);return e.viewportToImageCoordinates(b,c,!0)}}return this._viewportToImageDelta(b-this._contentBoundsNoRotate.x,c-this._contentBoundsNoRotate.y)},_imageToViewportDelta:function(b,c){var d=this._contentBoundsNoRotate.width;return new a.Point(b/this._contentSizeNoRotate.x*d,c/this._contentSizeNoRotate.x*d)},imageToViewportCoordinates:function(b,c){if(b instanceof a.Point)return this.imageToViewportCoordinates(b.x,b.y);if(this.viewer){var d=this.viewer.world.getItemCount();if(d>1)a.console.error("[Viewport.imageToViewportCoordinates] is not accurate with multi-image; use TiledImage.imageToViewportCoordinates instead.");else if(1===d){var e=this.viewer.world.getItemAt(0);return e.imageToViewportCoordinates(b,c,!0)}}var f=this._imageToViewportDelta(b,c);f.x+=this._contentBoundsNoRotate.x;f.y+=this._contentBoundsNoRotate.y;return f},imageToViewportRectangle:function(b,c,d,e){var f=b;f instanceof a.Rect||(f=new a.Rect(b,c,d,e));if(this.viewer){var g=this.viewer.world.getItemCount();if(g>1)a.console.error("[Viewport.imageToViewportRectangle] is not accurate with multi-image; use TiledImage.imageToViewportRectangle instead.");else if(1===g){var h=this.viewer.world.getItemAt(0);return h.imageToViewportRectangle(b,c,d,e,!0)}}var i=this.imageToViewportCoordinates(f.x,f.y);var j=this._imageToViewportDelta(f.width,f.height);return new a.Rect(i.x,i.y,j.x,j.y,f.degrees)},viewportToImageRectangle:function(b,c,d,e){var f=b;f instanceof a.Rect||(f=new a.Rect(b,c,d,e));if(this.viewer){var g=this.viewer.world.getItemCount();if(g>1)a.console.error("[Viewport.viewportToImageRectangle] is not accurate with multi-image; use TiledImage.viewportToImageRectangle instead.");else if(1===g){var h=this.viewer.world.getItemAt(0);return h.viewportToImageRectangle(b,c,d,e,!0)}}var i=this.viewportToImageCoordinates(f.x,f.y);var j=this._viewportToImageDelta(f.width,f.height);return new a.Rect(i.x,i.y,j.x,j.y,f.degrees)},viewerElementToImageCoordinates:function(a){var b=this.pointFromPixel(a,!0);return this.viewportToImageCoordinates(b)},imageToViewerElementCoordinates:function(a){var b=this.imageToViewportCoordinates(a);return this.pixelFromPoint(b,!0)},windowToImageCoordinates:function(b){a.console.assert(this.viewer,"[Viewport.windowToImageCoordinates] the viewport must have a viewer.");var c=b.minus(a.getElementPosition(this.viewer.element));return this.viewerElementToImageCoordinates(c)},imageToWindowCoordinates:function(b){a.console.assert(this.viewer,"[Viewport.imageToWindowCoordinates] the viewport must have a viewer.");var c=this.imageToViewerElementCoordinates(b);return c.plus(a.getElementPosition(this.viewer.element))},viewerElementToViewportCoordinates:function(a){return this.pointFromPixel(a,!0)},viewportToViewerElementCoordinates:function(a){return this.pixelFromPoint(a,!0)},viewerElementToViewportRectangle:function(b){return a.Rect.fromSummits(this.pointFromPixel(b.getTopLeft(),!0),this.pointFromPixel(b.getTopRight(),!0),this.pointFromPixel(b.getBottomLeft(),!0))},viewportToViewerElementRectangle:function(b){return a.Rect.fromSummits(this.pixelFromPoint(b.getTopLeft(),!0),this.pixelFromPoint(b.getTopRight(),!0),this.pixelFromPoint(b.getBottomLeft(),!0))},windowToViewportCoordinates:function(b){a.console.assert(this.viewer,"[Viewport.windowToViewportCoordinates] the viewport must have a viewer.");var c=b.minus(a.getElementPosition(this.viewer.element));return this.viewerElementToViewportCoordinates(c)},viewportToWindowCoordinates:function(b){a.console.assert(this.viewer,"[Viewport.viewportToWindowCoordinates] the viewport must have a viewer.");var c=this.viewportToViewerElementCoordinates(b);return c.plus(a.getElementPosition(this.viewer.element))},viewportToImageZoom:function(b){if(this.viewer){var c=this.viewer.world.getItemCount();if(c>1)a.console.error("[Viewport.viewportToImageZoom] is not accurate with multi-image.");else if(1===c){var d=this.viewer.world.getItemAt(0);return d.viewportToImageZoom(b)}}var e=this._contentSizeNoRotate.x;var f=this._containerInnerSize.x;var g=this._contentBoundsNoRotate.width;var h=f/e*g;return b*h},imageToViewportZoom:function(b){if(this.viewer){var c=this.viewer.world.getItemCount();if(c>1)a.console.error("[Viewport.imageToViewportZoom] is not accurate with multi-image.");else if(1===c){var d=this.viewer.world.getItemAt(0);return d.imageToViewportZoom(b)}}var e=this._contentSizeNoRotate.x;var f=this._containerInnerSize.x;var g=this._contentBoundsNoRotate.width;var h=e/f/g;return b*h}}}(OpenSeadragon);!function(a){function b(a,b,d,e,f,g,h,i,j){var k=h.getBoundingBox().getTopLeft();var l=h.getBoundingBox().getBottomRight();a.viewer&&a.viewer.raiseEvent("update-level",{tiledImage:a,havedrawn:b,level:e,opacity:f,visibility:g,drawArea:h,topleft:k,bottomright:l,currenttime:i,best:j});m(a.coverage,e);m(a.loadingCoverage,e);var n=a._getCornerTiles(e,k,l);var o=n.topLeft;var p=n.bottomRight;var q=a.source.getNumTiles(e);var r=a.viewport.pixelFromPoint(a.viewport.getCenter());for(var s=o.x;s<=p.x;s++)for(var t=o.y;t<=p.y;t++){if(!a.wrapHorizontal&&!a.wrapVertical){var u=a.source.getTileBounds(e,s,t);if(null===h.intersection(u))continue}j=c(a,d,b,s,t,e,f,g,r,q,i,j)}return j}function c(a,b,c,e,f,j,m,o,p,q,r,s){var t=d(e,f,j,a,a.source,a.tilesMatrix,r,q,a._worldWidthCurrent,a._worldHeightCurrent),u=c;a.viewer&&a.viewer.raiseEvent("update-tile",{tiledImage:a,tile:t});l(a.coverage,j,e,f,!1);var v=t.loaded||t.loading||k(a.loadingCoverage,j,e,f);l(a.loadingCoverage,j,e,f,v);if(!t.exists)return s;b&&!u&&(k(a.coverage,j,e,f)?l(a.coverage,j,e,f,!0):u=!0);if(!u)return s;h(t,a.source.tileOverlap,a.viewport,p,o,a);if(!t.loaded)if(t.context2D)g(a,t);else{var w=a._tileCache.getImageRecord(t.cacheKey);if(w){var x=w.getImage();g(a,t,x)}}if(t.loaded){var y=i(a,t,e,f,j,m,r);y&&(a._needsDraw=!0)}else t.loading?a._tilesLoading++:v||(s=n(s,t));return s}function d(b,c,d,e,f,g,h,i,j,k){var l,m,n,o,p,q,r,s;g[d]||(g[d]={});g[d][b]||(g[d][b]={});if(!g[d][b][c]){l=(i.x+b%i.x)%i.x;m=(i.y+c%i.y)%i.y;n=f.getTileBounds(d,l,m);o=f.tileExists(d,l,m);p=f.getTileUrl(d,l,m);if(e.loadTilesWithAjax){q=f.getTileAjaxHeaders(d,l,m);a.isPlainObject(e.ajaxHeaders)&&(q=a.extend({},e.ajaxHeaders,q))}else q=null;r=f.getContext2D?f.getContext2D(d,l,m):void 0;n.x+=(b-l)/i.x;n.y+=k/j*((c-m)/i.y);g[d][b][c]=new a.Tile(d,b,c,n,o,p,r,e.loadTilesWithAjax,q)}s=g[d][b][c];s.lastTouchTime=h;return s}function e(a,b,c){b.loading=!0;a._imageLoader.addJob({src:b.url,loadWithAjax:b.loadWithAjax,ajaxHeaders:b.ajaxHeaders,crossOriginPolicy:a.crossOriginPolicy,ajaxWithCredentials:a.ajaxWithCredentials,callback:function(d,e,g){f(a,b,c,d,e,g)},abort:function(){b.loading=!1}})}function f(b,c,d,e,f,h){if(e)if(da.visibility?b:b.visibility==a.visibility&&b.squaredDistance1&&i>b.smoothTileEdgesMinZoom&&!b.iOSDevice&&b.getRotation(!0)%360===0&&a.supportsCanvas){e=!0;f=d.getScaleForEdgeSmoothing();g=d.getTranslationForEdgeSmoothing(f,b._drawer.getCanvasSize(!1),b._drawer.getCanvasSize(!0))}var j;if(e){f||(j=b.viewport.viewportToViewerElementRectangle(b.getClippedBounds(!0)).getIntegerBoundingBox().times(a.pixelDensityRatio));b._drawer._clear(!0,j)}if(!f){0!==b.viewport.degrees&&b._drawer._offsetForRotation({degrees:b.viewport.degrees,useSketch:e});b.getRotation(!0)%360!==0&&b._drawer._offsetForRotation({degrees:b.getRotation(!0),point:b.viewport.pixelFromPointNoRotate(b._getRotationPoint(!0),!0),useSketch:e})}var k=!1;if(b._clip){b._drawer.saveContext(e);var l=b.imageToViewportRectangle(b._clip,!0);l=l.rotate(-b.getRotation(!0),b._getRotationPoint(!0));var m=b._drawer.viewportToDrawerRectangle(l);f&&(m=m.times(f));g&&(m=m.translate(g));b._drawer.setClip(m,e);k=!0}if(b.placeholderFillStyle&&b._hasOpaqueTile===!1){var n=b._drawer.viewportToDrawerRectangle(b.getBounds(!0));f&&(n=n.times(f));g&&(n=n.translate(g));var o=null;o="function"==typeof b.placeholderFillStyle?b.placeholderFillStyle(b,b._drawer.context):b.placeholderFillStyle;b._drawer.drawRectangle(n,o,e)}for(var q=c.length-1;q>=0;q--){d=c[q];b._drawer.drawTile(d,b._drawingHandler,e,f,g);d.beingDrawn=!0;b.viewer&&b.viewer.raiseEvent("tile-drawn",{tiledImage:b,tile:d})}k&&b._drawer.restoreContext(e);if(!f){b.getRotation(!0)%360!==0&&b._drawer._restoreRotationChanges(e);0!==b.viewport.degrees&&b._drawer._restoreRotationChanges(e)}if(e){if(f){0!==b.viewport.degrees&&b._drawer._offsetForRotation({degrees:b.viewport.degrees,useSketch:!1});b.getRotation(!0)%360!==0&&b._drawer._offsetForRotation({degrees:b.getRotation(!0),point:b.viewport.pixelFromPointNoRotate(b._getRotationPoint(!0),!0),useSketch:!1})}b._drawer.blendSketch({opacity:b.opacity,scale:f,translate:g,compositeOperation:b.compositeOperation,bounds:j});if(f){b.getRotation(!0)%360!==0&&b._drawer._restoreRotationChanges(!1);0!==b.viewport.degrees&&b._drawer._restoreRotationChanges(!1)}}p(b,c)}}function p(b,c){if(b.debugMode)for(var d=c.length-1;d>=0;d--){var e=c[d];try{b._drawer.drawDebugInfo(e,c.length,d,b)}catch(b){a.console.error(b)}}}a.TiledImage=function(b){var c=this;a.console.assert(b.tileCache,"[TiledImage] options.tileCache is required");a.console.assert(b.drawer,"[TiledImage] options.drawer is required");a.console.assert(b.viewer,"[TiledImage] options.viewer is required");a.console.assert(b.imageLoader,"[TiledImage] options.imageLoader is required");a.console.assert(b.source,"[TiledImage] options.source is required");a.console.assert(!b.clip||b.clip instanceof a.Rect,"[TiledImage] options.clip must be an OpenSeadragon.Rect if present");a.EventSource.call(this);this._tileCache=b.tileCache;delete b.tileCache;this._drawer=b.drawer;delete b.drawer;this._imageLoader=b.imageLoader;delete b.imageLoader;b.clip instanceof a.Rect&&(this._clip=b.clip.clone());delete b.clip;var d=b.x||0;delete b.x;var e=b.y||0;delete b.y;this.normHeight=b.source.dimensions.y/b.source.dimensions.x;this.contentAspectX=b.source.dimensions.x/b.source.dimensions.y;var f=1;if(b.width){f=b.width;delete b.width;if(b.height){a.console.error("specifying both width and height to a tiledImage is not supported");delete b.height}}else if(b.height){f=b.height/this.normHeight;delete b.height}var g=b.fitBounds;delete b.fitBounds;var h=b.fitBoundsPlacement||OpenSeadragon.Placement.CENTER;delete b.fitBoundsPlacement;var i=b.degrees||0;delete b.degrees;a.extend(!0,this,{viewer:null,tilesMatrix:{},coverage:{},loadingCoverage:{},lastDrawn:[],lastResetTime:0,_midDraw:!1,_needsDraw:!0,_hasOpaqueTile:!1,_tilesLoading:0,springStiffness:a.DEFAULT_SETTINGS.springStiffness,animationTime:a.DEFAULT_SETTINGS.animationTime,minZoomImageRatio:a.DEFAULT_SETTINGS.minZoomImageRatio,wrapHorizontal:a.DEFAULT_SETTINGS.wrapHorizontal,wrapVertical:a.DEFAULT_SETTINGS.wrapVertical,immediateRender:a.DEFAULT_SETTINGS.immediateRender,blendTime:a.DEFAULT_SETTINGS.blendTime,alwaysBlend:a.DEFAULT_SETTINGS.alwaysBlend,minPixelRatio:a.DEFAULT_SETTINGS.minPixelRatio,smoothTileEdgesMinZoom:a.DEFAULT_SETTINGS.smoothTileEdgesMinZoom,iOSDevice:a.DEFAULT_SETTINGS.iOSDevice,debugMode:a.DEFAULT_SETTINGS.debugMode,crossOriginPolicy:a.DEFAULT_SETTINGS.crossOriginPolicy,ajaxWithCredentials:a.DEFAULT_SETTINGS.ajaxWithCredentials,placeholderFillStyle:a.DEFAULT_SETTINGS.placeholderFillStyle,opacity:a.DEFAULT_SETTINGS.opacity,preload:a.DEFAULT_SETTINGS.preload,compositeOperation:a.DEFAULT_SETTINGS.compositeOperation},b);this._preload=this.preload;delete this.preload;this._fullyLoaded=!1;this._xSpring=new a.Spring({initial:d,springStiffness:this.springStiffness,animationTime:this.animationTime});this._ySpring=new a.Spring({initial:e,springStiffness:this.springStiffness,animationTime:this.animationTime});this._scaleSpring=new a.Spring({initial:f,springStiffness:this.springStiffness,animationTime:this.animationTime});this._degreesSpring=new a.Spring({initial:i,springStiffness:this.springStiffness,animationTime:this.animationTime});this._updateForScale();g&&this.fitBounds(g,h,!0);this._drawingHandler=function(b){c.viewer.raiseEvent("tile-drawing",a.extend({tiledImage:c},b))}};a.extend(a.TiledImage.prototype,a.EventSource.prototype,{needsDraw:function(){return this._needsDraw},getFullyLoaded:function(){return this._fullyLoaded},_setFullyLoaded:function(a){if(a!==this._fullyLoaded){this._fullyLoaded=a;this.raiseEvent("fully-loaded-change",{fullyLoaded:this._fullyLoaded})}},reset:function(){this._tileCache.clearTilesFor(this);this.lastResetTime=a.now();this._needsDraw=!0},update:function(){var a=this._xSpring.update();var b=this._ySpring.update();var c=this._scaleSpring.update();var d=this._degreesSpring.update();if(a||b||c||d){this._updateForScale();this._needsDraw=!0;return!0}return!1},draw:function(){if(0!==this.opacity||this._preload){this._midDraw=!0;this._updateViewport();this._midDraw=!1}},destroy:function(){this.reset()},getBounds:function(a){return this.getBoundsNoRotate(a).rotate(this.getRotation(a),this._getRotationPoint(a))},getBoundsNoRotate:function(b){return b?new a.Rect(this._xSpring.current.value,this._ySpring.current.value,this._worldWidthCurrent,this._worldHeightCurrent):new a.Rect(this._xSpring.target.value,this._ySpring.target.value,this._worldWidthTarget,this._worldHeightTarget)},getWorldBounds:function(){a.console.error("[TiledImage.getWorldBounds] is deprecated; use TiledImage.getBounds instead");return this.getBounds()},getClippedBounds:function(b){var c=this.getBoundsNoRotate(b);if(this._clip){var d=b?this._worldWidthCurrent:this._worldWidthTarget;var e=d/this.source.dimensions.x;var f=this._clip.times(e);c=new a.Rect(c.x+f.x,c.y+f.y,f.width,f.height)}return c.rotate(this.getRotation(b),this._getRotationPoint(b))},getContentSize:function(){return new a.Point(this.source.dimensions.x,this.source.dimensions.y)},_viewportToImageDelta:function(b,c,d){var e=d?this._scaleSpring.current.value:this._scaleSpring.target.value;return new a.Point(b*(this.source.dimensions.x/e),c*(this.source.dimensions.y*this.contentAspectX/e))},viewportToImageCoordinates:function(b,c,d){var e;if(b instanceof a.Point){d=c;e=b}else e=new a.Point(b,c);e=e.rotate(-this.getRotation(d),this._getRotationPoint(d));return d?this._viewportToImageDelta(e.x-this._xSpring.current.value,e.y-this._ySpring.current.value):this._viewportToImageDelta(e.x-this._xSpring.target.value,e.y-this._ySpring.target.value)},_imageToViewportDelta:function(b,c,d){var e=d?this._scaleSpring.current.value:this._scaleSpring.target.value;return new a.Point(b/this.source.dimensions.x*e,c/this.source.dimensions.y/this.contentAspectX*e)},imageToViewportCoordinates:function(b,c,d){if(b instanceof a.Point){d=c;c=b.y;b=b.x}var e=this._imageToViewportDelta(b,c);if(d){e.x+=this._xSpring.current.value;e.y+=this._ySpring.current.value}else{e.x+=this._xSpring.target.value;e.y+=this._ySpring.target.value}return e.rotate(this.getRotation(d),this._getRotationPoint(d))},imageToViewportRectangle:function(b,c,d,e,f){var g=b;g instanceof a.Rect?f=c:g=new a.Rect(b,c,d,e);var h=this.imageToViewportCoordinates(g.getTopLeft(),f);var i=this._imageToViewportDelta(g.width,g.height,f);return new a.Rect(h.x,h.y,i.x,i.y,g.degrees+this.getRotation(f))},viewportToImageRectangle:function(b,c,d,e,f){var g=b;b instanceof a.Rect?f=c:g=new a.Rect(b,c,d,e);var h=this.viewportToImageCoordinates(g.getTopLeft(),f);var i=this._viewportToImageDelta(g.width,g.height,f);return new a.Rect(h.x,h.y,i.x,i.y,g.degrees-this.getRotation(f))},viewerElementToImageCoordinates:function(a){var b=this.viewport.pointFromPixel(a,!0);return this.viewportToImageCoordinates(b)},imageToViewerElementCoordinates:function(a){var b=this.imageToViewportCoordinates(a);return this.viewport.pixelFromPoint(b,!0)},windowToImageCoordinates:function(a){var b=a.minus(OpenSeadragon.getElementPosition(this.viewer.element));return this.viewerElementToImageCoordinates(b)},imageToWindowCoordinates:function(a){var b=this.imageToViewerElementCoordinates(a);return b.plus(OpenSeadragon.getElementPosition(this.viewer.element))},_viewportToTiledImageRectangle:function(b){var c=this._scaleSpring.current.value;b=b.rotate(-this.getRotation(!0),this._getRotationPoint(!0));return new a.Rect((b.x-this._xSpring.current.value)/c,(b.y-this._ySpring.current.value)/c,b.width/c,b.height/c,b.degrees)},viewportToImageZoom:function(a){var b=this._scaleSpring.current.value*this.viewport._containerInnerSize.x/this.source.dimensions.x;return b*a},imageToViewportZoom:function(a){var b=this._scaleSpring.current.value*this.viewport._containerInnerSize.x/this.source.dimensions.x;return a/b},setPosition:function(a,b){var c=this._xSpring.target.value===a.x&&this._ySpring.target.value===a.y;if(b){if(c&&this._xSpring.current.value===a.x&&this._ySpring.current.value===a.y)return;this._xSpring.resetTo(a.x);this._ySpring.resetTo(a.y);this._needsDraw=!0}else{if(c)return;this._xSpring.springTo(a.x);this._ySpring.springTo(a.y);this._needsDraw=!0}c||this._raiseBoundsChange()},setWidth:function(a,b){this._setScale(a,b)},setHeight:function(a,b){this._setScale(a/this.normHeight,b)},fitBounds:function(b,c,d){c=c||a.Placement.CENTER;var e=a.Placement.properties[c];var f=this.contentAspectX;var g=0;var h=0;var i=1;var j=1;if(this._clip){f=this._clip.getAspectRatio();i=this._clip.width/this.source.dimensions.x;j=this._clip.height/this.source.dimensions.y;if(b.getAspectRatio()>f){g=this._clip.x/this._clip.height*b.height;h=this._clip.y/this._clip.height*b.height}else{g=this._clip.x/this._clip.width*b.width;h=this._clip.y/this._clip.width*b.width}}if(b.getAspectRatio()>f){var k=b.height/j;var l=0;e.isHorizontallyCentered?l=(b.width-b.height*f)/2:e.isRight&&(l=b.width-b.height*f);this.setPosition(new a.Point(b.x-g+l,b.y-h),d);this.setHeight(k,d)}else{var m=b.width/i;var n=0;e.isVerticallyCentered?n=(b.height-b.width/f)/2:e.isBottom&&(n=b.height-b.width/f);this.setPosition(new a.Point(b.x-g,b.y-h+n),d);this.setWidth(m,d)}},getClip:function(){return this._clip?this._clip.clone():null},setClip:function(b){a.console.assert(!b||b instanceof a.Rect,"[TiledImage.setClip] newClip must be an OpenSeadragon.Rect or null");b instanceof a.Rect?this._clip=b.clone():this._clip=null;this._needsDraw=!0;this.raiseEvent("clip-change")},getOpacity:function(){return this.opacity},setOpacity:function(a){if(a!==this.opacity){this.opacity=a;this._needsDraw=!0;this.raiseEvent("opacity-change",{opacity:this.opacity})}},getPreload:function(){return this._preload},setPreload:function(a){this._preload=!!a;this._needsDraw=!0},getRotation:function(a){return a?this._degreesSpring.current.value:this._degreesSpring.target.value},setRotation:function(a,b){if(this._degreesSpring.target.value!==a||!this._degreesSpring.isAtTargetValue()){b?this._degreesSpring.resetTo(a):this._degreesSpring.springTo(a);this._needsDraw=!0;this._raiseBoundsChange()}},_getRotationPoint:function(a){return this.getBoundsNoRotate(a).getCenter()},getCompositeOperation:function(){return this.compositeOperation},setCompositeOperation:function(a){if(a!==this.compositeOperation){this.compositeOperation=a;this._needsDraw=!0;this.raiseEvent("composite-operation-change",{compositeOperation:this.compositeOperation})}},_setScale:function(a,b){var c=this._scaleSpring.target.value===a;if(b){if(c&&this._scaleSpring.current.value===a)return;this._scaleSpring.resetTo(a);this._updateForScale();this._needsDraw=!0}else{if(c)return;this._scaleSpring.springTo(a);this._updateForScale();this._needsDraw=!0}c||this._raiseBoundsChange()},_updateForScale:function(){this._worldWidthTarget=this._scaleSpring.target.value;this._worldHeightTarget=this.normHeight*this._scaleSpring.target.value;this._worldWidthCurrent=this._scaleSpring.current.value;this._worldHeightCurrent=this.normHeight*this._scaleSpring.current.value},_raiseBoundsChange:function(){this.raiseEvent("bounds-change")},_isBottomItem:function(){return this.viewer.world.getItemAt(0)===this},_getLevelsInterval:function(){var a=Math.max(this.source.minLevel,Math.floor(Math.log(this.minZoomImageRatio)/Math.log(2)));var b=this.viewport.deltaPixelsFromPointsNoRotate(this.source.getPixelRatio(0),!0).x*this._scaleSpring.current.value;var c=Math.min(Math.abs(this.source.maxLevel),Math.abs(Math.floor(Math.log(b/this.minPixelRatio)/Math.log(2))));a=Math.min(a,c);return{lowestLevel:a,highestLevel:c}},_updateViewport:function(){this._needsDraw=!1;this._tilesLoading=0;this.loadingCoverage={};for(;this.lastDrawn.length>0;){var c=this.lastDrawn.pop();c.beingDrawn=!1}var d=this.viewport;var f=this._viewportToTiledImageRectangle(d.getBoundsWithMargins(!0));if(!this.wrapHorizontal&&!this.wrapVertical){var g=this._viewportToTiledImageRectangle(this.getClippedBounds(!0));f=f.intersection(g);if(null===f)return}var h=this._getLevelsInterval();var i=h.lowestLevel;var k=h.highestLevel;var l=null;var m=!1;var n=a.now();for(var p=k;p>=i;p--){var q=!1;var r=d.deltaPixelsFromPointsNoRotate(this.source.getPixelRatio(p),!0).x*this._scaleSpring.current.value;if(p===i||!m&&r>=this.minPixelRatio){q=!0;m=!0}else if(!m)continue;var s=d.deltaPixelsFromPointsNoRotate(this.source.getPixelRatio(p),!1).x*this._scaleSpring.current.value;var t=d.deltaPixelsFromPointsNoRotate(this.source.getPixelRatio(Math.max(this.source.getClosestLevel(),0)),!1).x*this._scaleSpring.current.value;var u=this.immediateRender?1:t;var v=Math.min(1,(r-.5)/.5);var w=u/Math.abs(u-s);l=b(this,m,q,p,v,w,f,n,l);if(j(this.coverage,p))break}o(this,this.lastDrawn);if(l&&!l.context2D){e(this,l,n);this._needsDraw=!0;this._setFullyLoaded(!1)}else this._setFullyLoaded(0===this._tilesLoading)},_getCornerTiles:function(b,c,d){var e;var f;if(this.wrapHorizontal){e=a.positiveModulo(c.x,1);f=a.positiveModulo(d.x,1)}else{e=Math.max(0,c.x);f=Math.min(1,d.x)}var g;var h;var i=1/this.source.aspectRatio;if(this.wrapVertical){g=a.positiveModulo(c.y,i);h=a.positiveModulo(d.y,i)}else{g=Math.max(0,c.y);h=Math.min(i,d.y)}var j=this.source.getTileAtPoint(b,new a.Point(e,g));var k=this.source.getTileAtPoint(b,new a.Point(f,h));var l=this.source.getNumTiles(b);if(this.wrapHorizontal){j.x+=l.x*Math.floor(c.x);k.x+=l.x*Math.floor(d.x)}if(this.wrapVertical){j.y+=l.y*Math.floor(c.y/i);k.y+=l.y*Math.floor(d.y/i)}return{topLeft:j,bottomRight:k}}})}(OpenSeadragon);!function(a){var b=function(b){a.console.assert(b,"[TileCache.cacheTile] options is required");a.console.assert(b.tile,"[TileCache.cacheTile] options.tile is required");a.console.assert(b.tiledImage,"[TileCache.cacheTile] options.tiledImage is required");this.tile=b.tile;this.tiledImage=b.tiledImage};var c=function(b){a.console.assert(b,"[ImageRecord] options is required");a.console.assert(b.image,"[ImageRecord] options.image is required");this._image=b.image;this._tiles=[]};c.prototype={destroy:function(){this._image=null;this._renderedContext=null;this._tiles=null},getImage:function(){return this._image},getRenderedContext:function(){if(!this._renderedContext){var a=document.createElement("canvas");a.width=this._image.width;a.height=this._image.height;this._renderedContext=a.getContext("2d");this._renderedContext.drawImage(this._image,0,0);this._image=null}return this._renderedContext},setRenderedContext:function(b){a.console.error("ImageRecord.setRenderedContext is deprecated. The rendered context should be created by the ImageRecord itself when calling ImageRecord.getRenderedContext.");this._renderedContext=b},addTile:function(b){a.console.assert(b,"[ImageRecord.addTile] tile is required");this._tiles.push(b)},removeTile:function(b){for(var c=0;cthis._maxImageCacheCount){var h=null;var i=-1;var j=null;var k,l,m,n,o,p;for(var q=this._tilesLoaded.length-1;q>=0;q--){p=this._tilesLoaded[q];k=p.tile;if(!(k.level<=e||k.beingDrawn))if(h){n=k.lastTouchTime;l=h.lastTouchTime;o=k.level;m=h.level;if(nm){h=k;i=q;j=p}}else{h=k;i=q;j=p}}if(h&&i>=0){this._unloadTile(j);f=i}}this._tilesLoaded[f]=new b({tile:d.tile,tiledImage:d.tiledImage})},clearTilesFor:function(b){a.console.assert(b,"[TileCache.clearTilesFor] tiledImage is required");var c;for(var d=0;d=this._items.length)throw new Error("Index bigger than number of layers.");if(c!==d&&d!==-1){this._items.splice(d,1);this._items.splice(c,0,b);this._needsDraw=!0;this.raiseEvent("item-index-change",{item:b,previousIndex:d,newIndex:c})}},removeItem:function(b){a.console.assert(b,"[World.removeItem] item is required");var c=a.indexOf(this._items,b);if(c!==-1){b.removeHandler("bounds-change",this._delegatedFigureSizes);b.removeHandler("clip-change",this._delegatedFigureSizes);b.destroy();this._items.splice(c,1);this._figureSizes();this._needsDraw=!0;this._raiseRemoveItem(b)}},removeAll:function(){this.viewer._cancelPendingImages();var a;var b;for(b=0;bn.height?g:g*(n.width/n.height);p=o*(n.height/n.width);q=new a.Point(k+(g-o)/2,l+(g-p)/2);m.setPosition(q,c);m.setWidth(o,c);"horizontal"===d?k+=i:l+=i}this.setAutoRefigureSizes(!0)},_figureSizes:function(){var b=this._homeBounds?this._homeBounds.clone():null;var c=this._contentSize?this._contentSize.clone():null;var d=this._contentFactor||0;if(this._items.length){var e=this._items[0];var f=e.getBounds();this._contentFactor=e.getContentSize().x/f.width;var g=e.getClippedBounds().getBoundingBox();var h=g.x;var i=g.y;var j=g.x+g.width;var k=g.y+g.height;for(var l=1;l 'DLA Kachelviewer', + 'description' => 'DLA Kachelviewer auf Basis von OpenSeadragon', + 'category' => 'plugin', + 'author' => 'Alexander Harm', + 'author_company' => 'DLA Marbach', + 'author_email' => 'wdv@dla-marbach.de', + 'dependencies' => 'extbase,fluid', + 'state' => 'beta', + 'clearCacheOnLoad' => '1', + 'version' => '2.0.0', + 'constraints' => array( + 'depends' => array( + 'typo3' => '6.2.0-0.0.0', + 'extbase' => '1.0.0-0.0.0', + 'fluid' => '1.0.0-0.0.0', + ) + ) + ); +?> \ No newline at end of file diff --git a/dla_kachelviewer/ext_icon.gif b/dla_kachelviewer/ext_icon.gif new file mode 100644 index 0000000000000000000000000000000000000000..4c48f50119416477c2d6981305d5a4255554225c GIT binary patch literal 476 zcmZ?wbh9u|6k-ry_{PA{t*u(2s@kloR3Rrf&roN%vF=<$?SnR^Yt8g`TN!V)FkES( z+o!EM-9T%nrBS(_+W~8ny;jDX%ncVB>dewruToX;kdTL5c zXR(2QvA(})^P&CLCL7EQCTpwb>UhrKvnYTTQ2C zyTy$ACjFN*OVN*HEKo0Kpx80$9eH)ubuoU>Xvd$U~394W7UN$YA^+g7EF zS!&q}m2CqXIBTifM9nE`y`18O_L@mbf~JSO`F`Qt)tr{VZ5|ccV(0DGQO$n QH?(+e+_H7s`bGw80O~xV 'deepzoom') + ); + +?> \ No newline at end of file diff --git a/dla_kachelviewer/ext_tables.php b/dla_kachelviewer/ext_tables.php new file mode 100755 index 0000000..1b6041c --- /dev/null +++ b/dla_kachelviewer/ext_tables.php @@ -0,0 +1,17 @@ + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..ee15496 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,14 @@ +{ + "name": "dla_kachelviewer", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "openseadragon": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/openseadragon/-/openseadragon-2.3.0.tgz", + "integrity": "sha1-iZ/j3lQ/9R1+Ftu7g//6ByCjshE=", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..b9ca649 --- /dev/null +++ b/package.json @@ -0,0 +1,20 @@ +{ + "name": "dla_kachelviewer", + "version": "2.0.0", + "description": "A Typo3-Extension to view DeepZoomImages using OpenSeadragon", + "dependencies": {}, + "devDependencies": { + "openseadragon": "^2.3.0" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": "git+https://github.com/dla-marbach/dla_kachelviewer.git", + "author": "Alexander Harm", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/dla-marbach/dla_kachelviewer/issues" + }, + "homepage": "https://github.com/dla-marbach/dla_kachelviewer#readme", + "main": "index.js" +}