Skip to content

Releases: openseadragon/openseadragon

v6.1.0

Choose a tag to compare

@iangilman iangilman released this 06 Aug 16:57
  • Now properly supporting non-power of two tile source levels (#2884 @Aiosa)
  • Added discardLevelsBelowDownsampleRatio option for both viewer and individual tiled images so you can control the pixel ratio between loaded levels (#2884 @Aiosa)
  • New UI feature: cooperative gesture handling, to allow normal scroll events on the page (#2934 @superbland)
  • Added stopImmediatePropagation to MouseTracker.EventProcessInfo options (#2891 @msalsbery)
  • It's now possible for the WebGLDrawer to use context2d objects from offscreen canvases (#2914 @koltenpearson)
  • Added tileQuality and extraQualities options to IIIFTileSource (#2916 @lukew-cogapp)
  • Better support for proper drawer choice and fallback for the navigator; added navigatorDrawer option (#2898 @jeffschuler)
  • Improved cache safety (#2942 @Aiosa)
  • Improved the isSupported API and documentation for drawers (#2903 @Aiosa)
  • Improved logic and documentation for viewer resize (#2900 @Aiosa)
  • Improved type annotation (#2912 @altundag, #2923 @msalsbery #2924 @msalsbery)
  • Improved documentation (#2910 @Aiosa, #2915 @lukew-cogapp)
  • Fixed tile blending in canvas and HTML drawers (#2893 @Aiosa)
  • Fixed an issue with placeholderFillStyle in the canvas drawer that would sometimes show a seam at the edge of an image (#2905 @pearcetm)
  • Fixed an issue with tile coverage tracking when multiple images are present (#2933 @Aiosa)
  • Fixed a bug where calling setVisible(false) on the navigator wouldn't hide it completely (#2944 @lucifer2661)
  • Now tracking built library size (#2806 @adriandarian)

v6.0.2

Choose a tag to compare

@iangilman iangilman released this 12 Mar 16:56

v6.0.1

Choose a tag to compare

@iangilman iangilman released this 23 Feb 17:35

v6.0.0

Choose a tag to compare

@iangilman iangilman released this 18 Feb 18:22
  • NEW BEHAVIOR: OpenSeadragon Data Pipeline Overhaul (#2407, #2643, #2718, #2739, #2775, #2762, #2816, #2863, #2858, #2871 @Aiosa)
    • DEPRECATION: Properties on tile that manage drawer data, or store data to draw: Tile.[element|imgElement|style|context2D|getImage|getCanvasContext] and transitively Tile.getScaleForEdgeSmoothing
    • DEPRECATION: TileSource data lifecycle handlers: system manages these automatically: TileSource.[createTileCache|destroyTileCache|getTileCacheData|getTileCacheDataAsImage|getTileCacheDataAsContext2D]
    • Tiles data is driven by caches: tiles can have multiple caches and cache can reference multiple tiles.
    • Data types & conversion pipeline: caches support automated conversion between types, and call optionally destructors. These are asynchronous.
    • Data conversion reasoning: the system keeps costs of converters and seeks the cheapest conversion to a target format (using Dijkstra).
    • Async support: events can now await handlers. Added OpenSeadragon.Promise proxy object. This object supports also synchronous mode.
    • Drawers define what data they are able to work with, and receive automatically data from one of the declared types.
    • Drawers now store data only inside cache, and provide optional type converters to move data into a format they can work with.
    • TileSource equality operator. TileSource destructor support. TileSources now must output type of the data they download [context.finish].
    • Zombies: data can outlive tiles, and be kept in the system to wait if they are not suddenly needed. Turned on automatically with TiledImage addition with replace: true and equality test success.
    • ImagesLoadedPerFrame is boosted 10 times when system is fresh (reset / open) and then declines back to original value.
    • CacheRecord supports 'internal cache' of 'SimpleCache' type. This cache can be used by drawers to hide complex types used for rendering. Such caches are stored internally on CacheRecord objects.
    • CacheRecord drives asynchronous data management and ensures correct behavior through awaiting Promises.
    • TileCache adds new methods for cache modification: renameCache, cloneCache, injectCache, replaceCache, restoreTilesThatShareOriginalCache, safeUnloadCache, unloadCacheForTile and more. Used internally within invalidation events
    • Tiles have up to two 'originalCacheKey' and 'cacheKey' caches, which keep original data and target drawn data (if modified).
    • Invalidation Pipeline: New event 'tile-invalidated' and requestInvalidate methods on World and TiledImage. Tiles get methods to modify data to draw, system prepares data for drawing and swaps them with the current main tile cache.
    • New test suites for the new cache system, conversion pipeline and invalidation events.
    • New testing/demo utilities (MockSeadragon, DrawerSwitcher for switching drawers in demos, getBuiltInDrawersForTest for testing all drawers), serialization guard in tests to remove circular references.
    • New demos, demonstrating the new pipeline. New demos for older plugins to show how compatible new version is.
    • Misc: updated CSS for dev server, new dev & test commands.
  • NEW BEHAVIOR: The per-image ajaxHeaders (specified when opening) are now being merged with the viewer's ajaxHeaders (overriding as appropriate), rather than replacing them (#2757 @hrocha1)
  • New tile source: IIP (Internet Imaging Protocol) (#2719 @ruven)
  • New tile source: Iris (#2759 @nkathawa)
  • The default drawer is now 'auto' which chooses between WebGL or canvas based on the device (#2829 @iangilman)
  • New option: loadDestinationTilesOnAnimation. With it on, during animations, OSD loads tiles in the destination region, rather than the areas passed through on the way to the destination. This new feature is on by default. (#2686, #2690 @MichaelWGibson)
  • New option: DrawerBase option for offscreen drawer creation, methods for TiledImage and TileSource creation exposed (#2790, #2822 @Aiosa)
  • New data types: imageBitmap support with workers, image fetching moved from downloadTileStart to convertor (#2790 @Aiosa)
  • New API: stopPropagation property on events (#2790 @Aiosa)
  • Viewer element coordinate transformations are now based on the actual OSD element, rather than the element given to it by the user code, so it's more reliable (#2855 @dao251)
  • Overlay wrapper elements now have a "openseadragon-overlay-wrapper" class. If the overlay element has an ID, the wrapper gets a variant on that ID, but if the overlay element does not have an ID, we no longer give the wrapper an ID. (#2698 @lokaesshwar)
  • The functions the viewer uses to operate the zoom in and zoom out buttons are now accessible to be called programatically (#2702 @achu1998)
  • The Viewer now has a getFullyLoaded function and a fully-loaded-change event, so you can know when all of the images in the viewer are loaded (#2707 @achu1998)
  • The Viewer and TiledImage now both have a whenFullyLoaded function that will call you back when they are fully loaded (#2707 @achu1998)
  • Improved IIIF tile requests in certain edge cases (#2710 @ruven)
  • Now only removing OSD-created elements on destroy (rather than emptying out the entire container) (#2724 @Vinith1919)
  • Now if you hold down navigation keys (pan or zoom), the movement is continuous rather than having a pause after the initial start (#2735 @achu1998)
  • Added tries and maxReached properties to tile-load-failed event (#2777 @Tobio89)
  • You can now turn off keyboard navigation (#2773 @colinrlim @yurii2007)
  • Added: WebGLDrawer option to unpack textures with premultiplied alpha (#2776 @adriandarian)
  • The WebGLDrawer now explicitly supports WebGL2. It's engaged automatically where available, with improvements to render quality (#2804 @adriandarian)
  • If the WebGLDrawer loses its context (e.g. because too many WebGL surfaces in the browser) it now tries to recover, and switches to the canvas drawer if it can't (#2853 @pearcetm)
  • Added optional support for tile load batching (#2834 @Aiosa)
  • We are now including the TypeScript definitions directly in the project (#2813, #2823 @rssaini01)
  • Better error handling in DataTypeConverter (#2860 @dao251)
  • Improved detection for proper WebGL support before using the WebGLDrawer (#2865 @pearcetm)
  • Improved drawer selection process; now if a drawer isn't included in the list of options, we won't use it (#2868 @pearcetm)
  • Improved performance on mobile (#2732 @Sumaiya2505)
  • Improved OSM compatibility (#2854 @JohanVisser97)
  • Improved how OpenSeadragon is imported in various environments (#2644 @Aiosa)
  • Improved documentation and code naming (#2676 @bennlich, #2729 @shaswata-26, #2754 @ganglike248, #2826 @kaicataldo, #2851 @pearcetm, #2852 @Aiosa)
  • Improved unit tests (#2640 @harshkg23, #2803 @adriandarian, #2845 @adriandarian)
  • Other internal code improvements (#2785 @suvanshenoy)
  • Fixed: Transparency detection didn't always work properly (#2636 @pcram-techcyte)
  • Fixed: MouseTracker's hasGestureHandlers and hasScrollHandler values were not getting updated upon dynamically adding/removing handlers (#2649 @Seafret)
  • Fixed: Sometimes images wouldn't update when you changed their opacity (#2652 @pearcetm)
  • Fixed: Possible MouseTracker hash collision (#2657 @cff29546)
  • Fixed: Relative panning sometimes used the wrong starting point, causing jumping during touch panning (#2704 @DougTCooke)
  • Fixed: World.arrange would misalign images that were rotated (#2709 @yowzadave)
  • Fixed: In some cases TiledImage would throw an exception if there were no tiles to update (#2733 @DougTCooke)
  • Fixed: TileSource API has now uniform behavior (#2790 @Aiosa)
  • Fixed: Bugfixes and documentation improvement on tile invalidation pipeline (#2790 @Aiosa)
  • Fixed: Sometimes the tile positions wouldn't update when the viewer was resized (#2798 @artokai)
  • Fixed: Sometimes other elements on the page would get disrupted by the viewer going into full page/full screen mode (#2786 @DrRataplan)
  • Fixed: In some circumstances an inline DZI tile source would get "undefined" added to the end of its URLs (#2832 @susanmonnelly)
  • Fixed: In some circumstances the navigator wouldn't update its contents if you resized it (#2849 @pearcetm)

v5.0.1

Choose a tag to compare

@iangilman iangilman released this 09 Dec 17:35
  • Improved overlay handling so it plays better with other libraries (#2582 @BeebBenjamin)
  • WebGLDrawer now supports the imageSmoothingEnabled option (#2615 @pearcetm)
  • Fixed: If you switched from WebGL drawer to canvas drawer, it didn't clean up properly (#2570 @pearcetm)
  • Fixed: TiledImage.setClip would sometimes leave tiles unloaded (#2590 @pearcetm)
  • Fixed: The WebGL drawer didn't support viewportMargins (#2600, #2606 @pearcetm)
  • Fixed: If you set viewport rotation before flip, the navigator display region would be drawn wrong (#2619 @jbakarich)
  • Fixed: In some cases, the WebGL drawer would draw the image in white (#2620 @sbarex)
  • Fixed: If the user changed the page zoom or moved the window a different monitor, the image would disappear (#2627 @pearcetm)

v5.0.0

Choose a tag to compare

@iangilman iangilman released this 14 Aug 16:36

v4.1.1

Choose a tag to compare

@iangilman iangilman released this 01 Apr 17:00

This is just a small patch release to fix IIIF issues downstream.

Fixed: Strange behavior if IIIF sizes were not in ascending order (#2416 @lutzhelm)

v4.1.0

Choose a tag to compare

@iangilman iangilman released this 25 May 20:57
  • NEW BEHAVIOR: When navigatorRotate is false, while the navigator image doesn't rotate, the red outline now does (#2356 @lcl45)
  • The viewer no longer emits canvas-key events for both keydown and keypress events; canvas-key is now just for keydown, and the new canvas-key-press is for keypress (#2270 @hrghauri)
  • You can now specify a priority when calling addHandler, to control when your event handler gets called relative to others (#2273 @Aiosa)
  • Added tileRetryMax and tileRetryDelay options, so the viewer can retry loading failed tiles (#2238 @Ughuuu @paaddyy, #2334 @Ughuuu @Titan21)
  • All of the viewers keyboard handling is now in response to keydown events (it used to be split between keydown and keypress) (#2291 @MohitBansal321)
  • Added canvas-focus and canvas-blur events to Viewer (#2301 @MohitBansal321)
  • You can now more easily add custom buttons to the viewer (#2306 @MohitBansal321)
  • The fitBounds function now takes zoom constraints into account (#2293 @pearcetm)
  • The viewer now has an after-resize event what happens after the viewport bounds have been updated, to complement the resize event which happens before (#2317 @pearcetm)
  • IIIFTileSource now uses resolution level dimensions provided in the info.json "sizes" field for more accurate tile requests (#2337 @ruven)
  • Added setAjaxHeaders method to Viewer and TiledImage (#2346 @uschmidt83)
  • Improved documentation (#2297 @KevinBritten)
  • Fixed: The tile-loaded event's completionCallback could be called more than once in some circumstances (#2282 @Aiosa, @pearcetm)
  • Fixed: Navigator display rectangle was off if the page had box-sizing: border-box (#2276 @ambujsahu81)
  • Fixed: Code that required identifying functions would fail for async functions (#2273 @Aiosa)
  • Fixed: Reference strip click detection was not accurate for long reference strips (#2280 @damonsson)
  • Fixed: Translation problems in some circumstances with cropping polygons enabled (#2316 @pearcetm)
  • Fixed: The navigator area rectangle would grow larger when you zoom in very far (#2318 @donotloveshampo)
  • Fixed: JSON with embedded XML was being incorrectly identified as XML (#2328 @craigberry)
  • Fixed: Touch/pinch rotate was not working properly on some platforms (#2324 @rsimon, @pearcetm)
  • Fixed: Navigator rotation didn't honor immediately parameter (#2333 @robertjcolley)
  • Fixed: The navigator didn't update for its new size in certain circumstances (#2347 @pearcetm)

v4.0.0

Choose a tag to compare

@iangilman iangilman released this 16 Dec 22:21
  • NEW BEHAVIOR: Setting the viewport rotation now animates by default (pass true for the new immediately parameter to disable) (#2136 @jonasengelmann)
  • NEW BEHAVIOR: The auto resize now takes both width and height into account when scaling the contents proportionally to the viewer (#2256 @pearcetm)
  • DEPRECATION: Don't access the viewport's degrees property directly anymore; instead use setRotation and getRotation (#2136 @jonasengelmann)
  • New gesture: Double-click and drag to zoom (on by default for touch) (#2225 @HamzaTatheer)
  • You can now provide a pivot point when rotating the viewport (#2233 #2253 @pearcetm)
  • Improved the constraints that keep the image in the viewer, specifically when zoomed out a lot (#2160 @joedf, #2246 @pearcetm)
  • You can now provide an element for the navigator (as an alternative to an ID) (#1303 @cameronbaney, #2166 #2175 @joedf)
  • Now supporting IIIF "id" and "identifier" in addition to "@id" (#2173 @ahankinson)
  • We now delegate tile fetching and caching to the TileSource, to allow for custom tile formats (#2148 @Aiosa)
  • Added support for dynamic URLs from tile sources (#2247 @JohnReagan)
  • The viewer now emits before-destroy and destroy events (#2239 @pearcetm)
  • Auto resize detection is now more efficient (#2256 @pearcetm)
  • Improved documentation (#2211 @shyamkumaryadav)
  • Fixed: Cropping tiled images with polygons was broken (#2183 @altert)
  • Fixed: Boundary constraints were wrong when the viewport was rotated (#2249 @pearcetm)
  • Fixed: IIIF tile sizes would be calculated wrong on rare occasions (#2206 @filak)
  • Fixed: Disabling buttons only changed their appearance, but they were still clickable (#2187 @pearcetm)
  • Fixed: ImageTileSource produced an error having to do with getTileHashKey (#2190 @Aiosa)
  • Fixed: On startup you would get an unnecessary "Viewer.buttons is deprecated" warning (#2201 @joedf, #2219 @jssullivan, #2212 @joedf)

v3.1.0

Choose a tag to compare

@iangilman iangilman released this 07 Jun 21:03
  • Added subPixelRoundingForTransparency Viewer option to address seams that can appear in semi-transparent images (#2075 @TanukiSharp)
  • Added Viewer.isAnimating() (#2075 @TanukiSharp)
  • Added isFullScreen method to Viewer (#2067 @JachiOnuoha)
  • Added option to include POST data when loading files via Ajax (#2072 @Aiosa)
  • Exposed TiledImage's private functions for better maintainability (#2134 @Aiosa)
  • Tile cache keys are now generated by the tile source, so it's easier to override them as needed (#2138 @Aiosa)
  • Pinch to zoom now zooms around the center of the pinch, rather than the center of the viewer (#2158 @cavenel)
  • Added fallback and deprecation warning for Viewer.buttons (which got changed to buttonGroup in 3.0.0) (#2153 @devbyjonah)
  • Fixed an issue where turning off panVertical or panHorizontal would not affect the panning keyboard combos (#2069 @JachiOnuoha)
  • Cleaned up console.logs so that errors and warnings use console.error and console.warn as appropriate (#2073 @Abhishek-90)
  • Improved documentation (#2067 @JachiOnuoha, #2112 @shyamkumaryadav, #2152 @joedf, #2155 @samwilson)
  • Fixed: Setting useCanvas to false would break the viewer (#2116 @rvv-bouvet)
  • Allow silencing multi-image warnings on viewport coordinate conversion functions (#2120 @claycoleman)
  • Fixed: Swiping fast multiple times made contact points in MouseTracker out of sync for touch events (#2121 @ronnymikalsen)
  • Made MouseTracker more robust in certain scenarios (#2134, #2147 @Aiosa)
  • Fixed an issue where full page mode wouldn't grow properly if you resized the window (#2100 @TanukiSharp)
  • Now if you pass an error handler into makeAjaxRequest, it doesn't report errors into the console (#2142 @Aiosa)
  • Fixed error caused by attaching MouseTracker to the page's document element (#2145 @tdiprima)
  • Fixed an issue that would sometimes cause problems with freeing up ImageTileSource memory (#2162 @pearcetm)