Skip to content
Compare
Choose a tag to compare
  • 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)
Compare
Choose a tag to compare
  • BREAKING CHANGE: Dropped support for older browsers (IE < 11) (#1872 #1949 #1951 @msalsbery, #1950 @rmontroy)
  • BREAKING CHANGE: Removed deprecated OpenSeadragon.getEvent function (#1949 @msalsbery)
  • DEPRECATION: MouseTracker exitHandler deprecated for name change to leaveHandler for consistency with DOM event names (#1872 @msalsbery)
  • Now when "simple image" tile sources are removed from the viewer, they free the memory used by the pyramid they create (#1789 @TakumaKira)
  • Improvements to docs (#1814 @kenanchristian, #1872 @msalsbery, #1996 @tdiprima)
  • Better cleanup on destruction, to avoid memory leaks (#1832 @JoFrMueller)
  • Better handle destruction when navigator in custom location (#1884 @woodchuck)
  • Miscellaneous code cleanup (#1840 @msalsbery)
  • You can now specify tileSize for the Zoomify Tile Source (#1868 @abrlam)
  • Better use of IIIF "max" and "full" URL parameters (#1871 @MImranAsghar)
  • You can now specify the file format of the tiles in the Zoomify tile source (#1889 @abrlam)
  • Improved browser sniffing - detect EDGE and CHROMEEDGE browsers (#1872 @msalsbery)
  • Improved DOM event model feature detection (#1872 @msalsbery)
  • Added support for options parameter on addEvent()/removeEvent (to support passive option) (#1872 @msalsbery)
  • Added OpenSeadragon.eventIsCanceled() function for defaultPrevented detection on DOM events (#1872 @msalsbery)
  • MouseTracker: better PointerEvent model detection - removed use of deprecated window.navigator.pointerEnabled (#1872 @msalsbery)
  • MouseTracker: added overHandler/outHandler options for handling corresponding pointerover/pointerout events (#1872 @msalsbery)
  • MouseTracker: changed enterHandler/leaveHandler to use DOM pointerenter/pointerleave events instead of simulating using pointerover/pointerout (#1872 @msalsbery)
  • All internal uses of MouseTracker use pointerenter/pointerleave events instead of pointerover/pointerout events for more consistent pointer tracking (#1872 @msalsbery)
  • Fixed bug in Button class where two MouseTracker event handlers used an invalid "this" causing issues in some browsers (#1872 @msalsbery)
  • Added pointerType property to Viewer container-enter, container-exit, canvas-drag, canvas-drag-end, canvas-pinch events (#1872 @msalsbery)
  • MouseTracker: Fire dragEndHandler event even if release point same as initial contact point (#1872 @msalsbery)
  • MouseTracker: Pointer capture implemented with capture APIs where available. Only fallback to emulated capture on extremely old browsers (#1872 @msalsbery)
  • MouseTracker: Added preProcessEventHandler option to allow MouseTracker instances to control bubbling and default behavior of events on their associated element (#1872 @msalsbery)
  • MouseTracker: Improved handling of canceled events (#1872 @msalsbery)
  • MouseTracker: Improved releasing of tracked pointers on destroy()/stopTracking() (#1872 @msalsbery)
  • Updated Viewer, Button, Drawer, Navigator, ReferenceStrip DOM for proper DOM event handling (#1872 @msalsbery)
  • Added OpenSeadragon.setElementPointerEventsNone() for setting pointer-events:'none' on DOM elements (#1872 @msalsbery)
  • MouseTracker: added contextMenuHandler option for handling contextmenu events (#1872 @msalsbery)
  • Viewer: added a canvas-contextmenu event (#1872 @msalsbery)
  • Fixed simulated drag events in navigator tests (#1949 @msalsbery)
  • Added preventDefault option to MouseTracker.contextMenuHandler and Viewer 'canvas-contextmenu' event args (#1951 @msalsbery)
  • MouseTracker: Added preProcessEventHandler for keydown, keyup, keypress, focus, blur Events (#1951 @msalsbery)
  • Fixed preventDefaultAction functionality in viewer events (#1953 @msalsbery)
  • Added setImageFormatsSupported function (#1954 @pandaxtc)
  • Added dragToPan to the GestureSettings class, implemented in Viewer (#1956 @msalsbery)
  • Added preventDefault option to MouseTracker handlers: scrollHandler, keyDownHandler, keyUpHandler, keyHandler (#1957 @msalsbery)
  • Fixed test "Events: Viewer: preventDefaultAction in dblClickHandler". Fixes #1372 (#1960 @msalsbery)
  • ReferenceStrip: Fixed issue where its element was being removed from its parent element twice on destroy, causing an exception (#1958 @msalsbery)
  • ReferenceStrip: Made its element focusable for keyboard navigation (#1958 @msalsbery)
  • You can now flip individual images (not just the whole viewport) (#1903 @ali1234)
  • Accessibility: we now take the browser's zoom into account when choosing what detail level to draw (#1937 @ronnymikalsen)
  • Fixed a bug causing overlays to disappear in Sequence Mode (#1865 @gunmiosb)
  • Fixed a bug where the ajaxHeaders provided per-image were not being used for image requests (#1968 @maxshuty)
  • MouseTracker: Added workaround for WebKit Pointer Event Implicit Capture Bug (#1972 @msalsbery)
  • Removed test for move-leave (fly-over, no enter event)...not a valid, handleable event state, no longer supported (#1972 @msalsbery)
  • Added OpenSeadragon.setElementPointerEvents() for setting pointer-events to other values besides 'none' on DOM elements (#1972 @msalsbery)
  • Now ensuring the page body is display:block when in fullscreen (#1995 @thewilkybarkid)
  • Added a static method in OpenSeadragon to get an existing viewer (#2000 @HerCerM)
  • Now ensuring that the new item is already in the navigator when the "add-item" event fires (#2005 @RammasEchor)
  • Added keys to change image in sequence mode (j: previous, k: next) (#2007 @RammasEchor)
  • Fixed a bug where the navigator wouldn't pick up opacity/composite changes made while it is loading (#2018 @crydell)
  • Explicitly set passive:false for wheel event handlers to suppress console warnings. Fixes #1669 (#2043 @msalsbery)
  • Viewer's canvas-click events now include an originalTarget property so you can know which element received the click (#2037 @iangilman)
  • Added method for getting the size of an image in window coordinates (#2049 @superbland)
  • Added a setMaxLevel function to TileSource so you can change its maxLevel if needed (#2059, #2066 @kim-sanghoon)
Compare
Choose a tag to compare
  • Add support for IIIF Image API 3.0 beta (#1764)
  • You can now crop an image with arbitrary polygons (#1772)
  • Improved support for using the Reference Strip in an OpenSeadragon Viewer inside a Web Component (#1676)
  • Added setWidth and setHeight methods to Navigator (#1686)
  • Improvements to docs (#1696, #1698, #1716, #1719)
  • Now passing Viewer AJAX configs down to ReferenceStrip thumbnails (#1701)
  • The ReferenceStrip now honors the useCanvas option from the Viewer (#1742)
  • Fixed: Navigator was still resizing after you explicitly set its width and height with navigatorWidth and navigatorHeight (#1686)
  • Fixed issues with touches on iOS 13 and iPad (#1754, #1756)
  • No longer throwing an exception on pages that have malformed URL parameters (#1758)
  • Fixed an issue with flipping the viewport on high pixel density screens (#1779)
  • Removed use of deprecated imageSmoothingEnabled prefixes (#1740)
Compare
Choose a tag to compare
  • You can now turn off the default canvas image smoothing, if you want sharp pixels when zoomed in past 100% (#1507, #1593, #1595, #1647, #1648)
  • Fixed problem with navigator highlight rectangle when returning from full screen with a custom navigator location (#1515)
  • Added option to set rotation increment for nav buttons and keyboard (#1524)
  • Fixed issue with flipping and opacity with multi-image (#1549)
  • Removed vestigial button group label element that was causing issues for accessibility tools (#1560)
  • Fixed a bug causing Viewer.areControlsEnabled to throw an exception (#1562)
  • Added tileFormat option to IIIFTileSource so you can specify the tile format (#1625)
  • Now using canonical URIs more consistently in IIIF to make caching and processing time easier on the server side (#1625)
  • Added support for IIIF's new preferredFormats property (#1656)
Compare
Choose a tag to compare
  • BREAKING CHANGE: Viewer's canvas-double-click event is now fired before it initiates the zoom (#1288)
  • You can now flip the viewport to get a mirror image of the original (#1441)
  • You can now prevent canvas-double-click events from zooming on a per-event basis (#1288)
  • Fixed: Opacity 0 images were causing unnecessary redraws (#1319)
  • The "page" event is now fired after the page index has been updated (#1330)
  • Added option pixelsPerArrowPress that sets the speed of arrow keys (#1364)
  • Improved IIIF options.maxLevel calculation (#1401)
  • Added canvas-key events, along with the ability to cancel key actions (#1414)
  • Added optional zoom in the middle of the image instead of pointer position (#1423)
  • Now supporting square edge tiles that are padded rather than cropped (#1426)
  • Fixed an issue causing the simple image tileSource to sometimes show duplicate copies (#1370)
  • Fixed an issue causing seams to appear in semi-transparent PNG tiled images (#1470)
  • Added visual customization options for the navigator (#1480)
  • You can now prevent canvas-drag events on the navigator (#1484)
  • You can now prevent canvas-click events on the navigator (#1416)
  • The navigator can now be restricted to just horizontal or just vertical panning (#1416)
  • Fixed DziTileSource so it doesn't load levels above maxLevel or below minLevel, if set (#1492)
Compare
Choose a tag to compare
  • Debug mode now uses different colors for different tiled images (customizable via debugGridColor) (#1271)
  • Fixed a problem with preventDefaultAction for the canvas-drag event (#1278)
  • Fixed an issue causing double images with certain aspect ratios (#1280)
  • Fixed: placeholderFillStyle had no effect (#1286)
  • Fixed seams that appear in wrap mode on Safari and Firefox (#1305
Compare
Choose a tag to compare
  • BREAKING CHANGE: Tile.distance has been removed (#1027)
  • BREAKING CHANGE: Viewer's canvas-click event is now fired before it initiates the zoom (#1148)
  • BREAKING CHANGE: Viewer's canvas-drag event is now fired before it pans (#1149)
  • Added Zoomify tile source (#863)
  • You can now set the rotation of individual tiled images (#1006)
  • Added getFullyLoaded method and "fully-loaded-change" event to TiledImage to know when tiles are fully loaded (#837, #1073)
  • You can now preload images without drawing them to the screen (#1071)
  • Added support for commonjs (#984)
  • Added an option to addTiledImage to change the crossOriginPolicy (#981)
  • You can now load tiles via AJAX and custom AJAX request headers (#1055)
  • Added ability to provide thumbnail URLs for reference strip (#1241)
  • Improved panning constraints for constrainDuringPan (#1133 and #1245)
  • You can now prevent canvas-click events from zooming on a per-event basis (#1148)
  • You can now prevent canvas-drag events from panning on a per-event basis (#1149)
  • The navigationControlAnchor option now works for custom toolbar as well (#1004)
  • LegacyTileSource now allows any image URLs regardless of type (#1056)
  • Enabled configuration of ImageLoader timeout (#1192)
  • Viewer.open() now supports an initialPage argument for sequenceMode (#1196)
  • New events for opacity and compositeOperation changes (#1203)
  • Added support for setting debug mode after the Viewer object has been constructed (#1224)
  • Added functions for dynamically adding and removing the reference strip in sequence mode (#1213)
  • Better calculation for TileCache release cutoff (#1214)
  • The navigator now picks up opacity and compositeOperation changes (#1203)
  • Improved calculation for determining which level to load first (#1198)
  • Added fix for supporting weird filenames that look like JSONs (#1189)
  • Improved DziTileSource guessing of tilesUrl (#1074)
  • The Viewer's tileSources option is now smarter about detecting JSON vs XML vs URL (#999)
  • Better compression for our UI images (#1134)
  • Optimization: Use the squared distance when comparing tiles (#1027)
  • Now clamping pixel ratio density to a minimum of 1, fixing display issues on low density devices (#1200)
  • More forgiving check for DZI schema (#1249)
  • ImageTileSource now works in IE8 (#1041)
  • Fixed CORS bug in IE 10 (#967)
  • Fixed issue with tiles not appearing with wrapHorizontal/wrapVertical if you pan too far away from the origin (#987, #1066)
  • Fixed: Initial tile load wasn't happening in parallel (#1014)
  • Fixed problem with "sparse image" DZI files (#995)
  • Fix IndexSizeError on IE and Edge that occurred under certain circumstances (e.g. multi-image with transparency) (#1035)
  • Fixed error in IE8 when zooming in (due to edge smoothing) (#1064)
  • Fixed issue with OpenSeadragon.version in the minified JavaScript (#1099)
  • Fixed smoothTileEdgesMinZoom performance degradation on single-tile images (#1101)
  • Fixed issue with tiles not appearing after rotation (#1102)
  • Fixed: The navigator wasn't respecting the constrainDuringPan setting (#1104)
  • Fixed an issue causing overlays to be mis-positioned in some circumstances (#1119)
  • Fixed: ImageTileSource would sometimes produce a double image (#1123)
  • Fixed: console.debug caused exceptions on IE10 (#1129)
  • Fixed: the reference strip would leak memory when opening new sets of images (#1175)
  • Fixed: zoomTo/zoomBy ignore refPoint if immediately is true (#1184)
  • Fixed: IIPImageServer didn't work with the latest OSD release (#1199)
  • Fixed: setItemIndex method not working with navigator inside "open" event (#1201)
  • Fixed: The reference strip didn't show the initial page if it wasn't the first page (#1208)
  • Fixed: Sometimes the image would stick to the mouse when right-clicking and left-clicking simultaneously (#1223)
  • Fixed issue with transparent images sometimes disappearing on Safari (#1222)
  • Fixed: One image failing to load could cause the others to never load (#1229)
  • Fixed: Mouse up outside map will cause "canvas-drag" event to stick (#1133)
  • Fixed more issues with tracking multiple pointers (#1244)
Compare
Choose a tag to compare
  • Fixed problems with zoom/pan constraints with certain extreme settings (#965)
  • Fixed an issue causing the browser to crash on iOS (#966)
Compare
Choose a tag to compare
  • BREAKING CHANGE: Viewport.homeBounds, Viewport.contentSize, Viewport.contentAspectX and
    Viewport.contentAspectY have been removed. (#846)
  • BREAKING CHANGE: The Overlay.getBounds method now takes the viewport as parameter. (#896)
  • DEPRECATION: Overlay.scales, Overlay.bounds and Overlay.position have been deprecated. (#896)
    • Overlay.width !== null should be used to test whether the overlay scales horizontally
    • Overlay.height !== null should be used to test whether the overlay scales vertically
    • The Overlay.getBounds method should be used to get the bounds of the overlay in viewport coordinates
    • Overlay.location replaces Overlay.position
  • DEPRECATION: Viewport.setHomeBounds has been deprecated (#846)
  • DEPRECATION: the Viewport constructor is now ignoring the contentSize option (#846)
  • Tile edge smoothing at high zoom (#764)
  • Fixed issue with reference strip popping up virtual keyboard on mobile devices (#779)
  • Now supporting rotation in the Rect class (#782)
  • Drag outside of iframe now works better, as long as both pages are on the same domain (#790)
  • Coordinate conversion now takes rotation into account (#796)
  • Support tile-less IIIF as per LegacyTileSource (#816)
  • You can now give an empty string to the tabIndex option (#805)
  • Fixed issue with rotation and clicking in the navigator (#807)
  • Broadened the check for mime type in LegacyTileSource URLs to allow query strings (#819)
  • Added globalCompositeOperation option for tiledImage, to allow for different transfer modes (#814)
  • Added Viewer.addSimpleImage method for easily adding non-tiled images (#827)
  • DziTileSource now works properly with DZI files that have no extension (#835)
  • Fixed content clipping with rotation (#463, #567 and #833)
  • Fixed navigator not being rotated when viewport rotation is set in constructor (#840)
  • Fixed: Viewer.setMouseNavEnabled wasn't affecting all of the viewer's trackers (#845)
  • Fixed: with scrollToZoom disabled, the viewer caused page scrolling to slow down (#858)
  • Added Viewer.getOverlayById and Overlay.getBounds functions (#853)
  • Tiled images with 0 opacity no longer load their tiles or do drawing calculations (#859)
  • Fixed issue with edge smoothing with PNG tiles at high zoom (#860)
  • Fixed: Images with transparency were clearing images layered below them (#861)
  • Fixed issue causing HTML pages to jump unwantedly to the reference strip upon loading (#872)
  • Added addOnceHandler method to EventSource (#887)
  • Added TiledImage.fitBounds method (#888)
  • Overlays can now be scaled in a single dimension by providing a point location and either width or height (#896)
  • Added full rotation support to overlays (#729, #193)
  • Viewport.goHome() now takes clipping into account (#910)
  • Improved zoom to point (#923)
  • Optimized sketch canvas clearing and blending for images with opacity or transfer modes (#927)
  • Now taking rotation into account in viewport getBounds and fitBounds methods (#934)
  • Added option to disable navigator auto-fade (#935)
  • Fixed issue with maintaining viewport position with full screen (#940)
  • Fixed an issue with simultaneous touch events (#930)
  • Avoid loading clipped out tiles (#939)
  • Improved precision for subtle moves with fitBounds (#939)
  • Fixed an issue in viewer.addTiledImage with replace:true when viewer has navigator (#948)
Compare
Choose a tag to compare
  • BREAKING CHANGE: the tile does not hold a reference to its image anymore. Only the tile cache keep a reference to images.
  • BREAKING CHANGE: TileSource.tileSize no longer exists; use TileSource.getTileWidth() and TileSource.getTileHeight() instead.
  • DEPRECATION: let ImageRecord.getRenderedContext create the rendered context instead of using ImageRecord.setRenderedContext
  • DEPRECATION: TileSource.getTileSize() is deprecated. Use TileSource.getTileWidth() and TileSource.getTileHeight() instead.
  • Changed resize behaviour to prevent "snapping" to world bounds when constraints allow more space (#711)
  • Added support for non-square tiles (#673)
    • TileSource.Options objects can now optionally provide tileWidth/tileHeight instead of tileSize for non-square tile support.
    • IIIFTileSources will now respect non-square tiles if available.
  • Added new tile source for simple images: ImageTileSource (#760)
  • Optimized adding large numbers of items to the world with collectionMode (#735)
  • Registers as an AMD module where possible (#719)
  • Added "tile-loaded" event on the viewer allowing to modify a tile before it is marked ready to be drawn (#659)
  • Added "tile-unloaded" event on the viewer allowing to free up memory one has allocated on a tile (#659)
  • Added 'tile-load-failed' event (#725)
  • Added additional coordinates conversion methods to TiledImage (#662)
  • Added preserveImageSizeOnResize option (#666)
  • Added collectionColumns as a configuration parameter (#680)
  • Added option in addTiledImage to replace tiledImage at index (#706)
  • Added autoRefigureSizes flag to World for optimizing mass rearrangements (#715)
  • You can now change viewport margins after the viewer is created (#721)
  • Added a patch to help slow down the scroll devices that fire too fast (#754)
  • Fixed flickering tiles with useCanvas=false when no cache is used (#661)
  • 'display: none' no longer gets reset on overlays during draw (#668)
  • Better error reporting for tile load failures (#679)
  • Added XDomainRequest as fallback method for ajax requests if XMLHttpRequest fails (for IE < 10) (#693)
  • Now avoiding using eval when JSON.parse is available (#696)
  • Rotation now works properly on retina display (#708)
  • Fixed issue with tiledImages loading tiles at every level instead of just the best level (#728)
  • Fixed placeholderFillStyle flicker (#727)
  • Fix for Chrome (v45) issue that key is sometimes undefined outside of the for-in loop (#730)
  • World.removeAll now cancels any in-flight image loads; same for Viewer.open and Viewer.close (#734)
  • Fixed overlays position (use rounding instead of flooring and ceiling) (#741)
  • Fixed issue with including overlays in your tileSources array when creating/opening in the viewer (#745)
  • Fixed issue in iOS devices that would cause all touch events to fail after a Multitasking Gesture was triggered (#744)
  • Fixed an issue with TiledImage setPosition/setWidth/setHeight not reliably triggering a redraw (#720)
  • Fixed zooming in with plus key on a Swedish keyboard (#763)