OPENSEADRAGON CHANGELOG ======================= 2.1.1: (in progress) * 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) 2.1.0: * 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) 2.0.0: * True multi-image mode (#450) * BREAKING CHANGE: Passing an array for the tileSources option is no longer enough to trigger sequence mode; you have to set the sequenceMode option to true as well * BREAKING CHANGE: Navigator no longer sends an open event when its viewer opens * BREAKING CHANGE: Viewer.drawers and Viewer.drawersContainer no longer exist * BREAKING CHANGE: A Viewer's Drawer and Viewport are now made once per Viewer and reused for every image that Viewer opens (rather than being recreated for every open); this means if you change Viewer options between opens, the behavior is different now. * DEPRECATION: use Viewer.addTiledImage instead of Viewer.addLayer * addTiledImage supports positioning config properties * DEPRECATION: use World.getItemAt instead of Viewer.getLayerAtLevel * DEPRECATION: use World.getIndexOfItem instead of Viewer.getLevelOfLayer * DEPRECATION: use World.getItemCount instead of Viewer.getLayersCount * DEPRECATION: use World.setItemIndex instead of Viewer.setLayerLevel * DEPRECATION: use World.removeItem instead of Viewer.removeLayer * DEPRECATION: use World.needsDraw instead of Drawer.needsUpdate * DEPRECATION: use TileCache.numTilesLoaded instead of Drawer.numTilesLoaded * DEPRECATION: use World.resetItems instead of Drawer.reset * DEPRECATION: use Drawer.clear and World.draw instead of Drawer.update * DEPRECATION: the layersAspectRatioEpsilon option is no longer necessary * DEPRECATION: Viewer's add-layer event is now World's add-item event * DEPRECATION: Viewer's layer-level-changed event is now World's item-index-change event * DEPRECATION: Viewer's remove-layer event is now World's remove-item event * DEPRECATION: Viewer's add-layer-failed event is now add-item-failed * DEPRECATION: TileSourceCollection has been retired in favor of World * DEPRECATION: collectionMode no longer draws outlines or reflections for items * Drawer has been split into three classes: * TiledImage, tile management and positioning for a single tiled image * TileCache, tile caching for all images * Drawer, tile drawing for all images * New class: World, keeps track of multiple images in the scene * Viewer now has world and tileCache properties * Rect and Point now have clone functions * New Viewport method for managing homeBounds as well as constraints: setHomeBounds * Viewport.open supports positioning config properties * For multi-image open, drawing isn't started until all tileSources have been opened * You can specify a clip area for each image (only works on browsers that support the HTML5 canvas) (#594) * Added placeholderFillStyle so image rectangles can be drawn even before their tiles load (#635) * Ability to set opacity on individual TiledImages (#644) * Margins option to push the home region in from the edges of the Viewer (#505) * Rect and Point toString() functions are now consistent: rounding values to nearest hundredth * Overlays appear in the DOM immediately on open or addOverlay (#507) * imageLoaderLimit now works (#544) * Turning off scrollToZoom in gestureSettings now allows scroll events to propagate * You can now set a minZoomLevel that's greater than the home zoom level * Added union() to OpenSeadragon.Rect * Fixed an error in fitBounds if the new and old bounds were extremely close in size * Added ajaxWithCredentials option (#543) * Added viewport-change event for after the viewport changes but before it's drawn * A spring's current value is now updated immediately on reset (#524) * Fixed an error in fitBounds that occurred sometimes with immediately = true * Added support for HDPI (retina) displays (#583) * Corrected IIIF tile source to use canonical syntax (#586) * Fixed x/y typo that caused horizontal reference strip to be rendered only relative to height (#595) * Fixed Firefox 35 not able to open local files (#588) * Fixed an issue with zero size viewers in IE8 (#609) * Fixed: Cross Origin policy not working (#613) * Optimized tile loading by clearing the queue on a re-draw when imageLoaderLimit is set (#616) * Now animating zoom spring exponentially (#631) * Added http://editorconfig.org/ config file (#637) * Keyboard pan speed is now the same regardless of zoom level (#645) 1.2.1: * Added preserveOverlays option (#561) * Fixed: DZI tilesource was broken on IE8/IE9 (#563) * Exposed secondary pointer button (middle, right, etc.) events from MouseTracker and through viewer (#479) * MouseTracker - Improved IE 8 compatibility (#562) * MouseTracker - Improved IE 9+ compatibility (#564) * MouseTracker - Simulated touchenter/touchleave events now bubble to parent element MouseTrackers (#566) * MouseTracker - Improved multitouch support in enter/exit event handlers (#566) * MouseTracker - orphaned tracked touch pointers removed (fix for #539) * MouseTracker - removed touchenter/touchleave event support since the events don't exist on any known platform and have been removed from the W3C specification (#566) * Removed Viewer onContainerPress/onContainerRelease handlers (and the associated 'container-release' event ) that were never fired due to the canvas (child) element capturing the DOM events (#566) * Added 'canvas-enter', 'canvas-exit', and 'canvas-press' events to Viewer (#566) * ButtonGroup - removed obsolete MouseTracker event handlers (#566) * MouseTracker - added keydown and keyup handlers (#568) * Modifier keys ignored in keyboard navigation handlers (#503) * Requesting keyboard focus when viewer is clicked (#537) * Arrow key navigation fixed across platforms (#565) * Removed textarea element from viewer DOM. Viewer.canvas now handles keyboard navigation (#569) * Removed 'position' property from MouseTracker keyDownHandler/keyUpHandler/keyHandler functions (#573) * Fixed pointer event model detection for IE 10 and IE 11 (#571) * Added setMouseNavEnabled() support to Navigator (#572) * MouseTracker now defaults to tracking on (#558) * Removed Viewer focusHandler/onCanvasFocus (#577) * Added tabIndex option to viewer (#577) 1.2.0: * New combined IIIF TileSource for 1.0 through 2.0 (#441) * BREAKING CHANGE: Removed IIIF1_1TileSource (now that IIIFTileSource supports all versions) * Allowed TileSources to have dynamic tileSize via source.getTileSize(level) (#441) * DEPRECATION: Use .getTileSize(level) instead of .tileSize * Fix for IIPServer-style urls when using DZI (#413) * Fix memory leak while destroying the viewer (#421) * Added fitBoundsWithConstraints() to the viewport (#423) * Fixed MouseTracker cross-browser issues with tracking pointers over and out of the tracked element (pull request #448, fix for #152, #404, #420, and #427) * Fixed incorrect flick direction after image is rotated (#452) * Debug mode now works with rotate images (#453) * Now supporting dzi xml with namespaces (#462) * You can now rotate the navigator along with the main viewer (#455) * Viewport.setRotation now allows all rotation angles (#466) * Pinch rotate is now available (defaults to off) (#468) * Added option for home button to fill viewer (#474) * Better handling of mid-update image loaded callbacks (#409) * Tracked pointers are now cleaned up when Viewer.setMouseNavEnabled(false) is called (#518) * Added explicit pointer capture for touch event model touchstart events (#552) 1.1.1: * Fixed issue with dragging the navigator highlight on Webkit browsers (#395) * Improved Viewer Options Support in Gesture Handling (#399) 1.1.0: * BREAKING CHANGE: the openseadragon-canvas element now has two child divs. This means: (#298) * The drawer element is no longer accessible via viewer.canvas.firstChild but via viewer.drawersContainer.firstChild or viewer.drawer.canvas. * The overlays elements are no longer accessible via viewer.canvas.childNodes but via viewer.overlaysContainer.childNodes or viewer.currentOverlays[i].element. * BREAKING CHANGE: Pseudo full screen mode on IE<11 using activex has been dropped. OpenSeadragon will run in full page if full screen mode is requested. * BREAKING CHANGE: MouseTracker touch pinch gestures are no longer converted to scroll events. MouseTracker.pinchHandler should be used instead. (#369) * DEPRECATION: overlay functions have been moved from Drawer to Viewer (#331) * DEPRECATION: OpenSeadragon.cancelFullScreen has been renamed OpenSeadragon.exitFullScreen (#358) * DEPRECATION: The 'isTouchEvent' property passed in MouseTracker events is deprecated and has been replaced with 'pointerType', which is a String value "mouse", "touch", "pen", etc. to support multiple simultaneous pointing devices (#369) * DEPRECATION: The 'buttonDownAny' property passed in MouseTracker enter and exit events (enterHandler/exitHandler) is deprecated and has been replaced with 'buttons', which indicates the button(s) currently pressed (#369) * DEPRECATION: The 'buttonDownAny' property passed in Viewer's 'container-enter' and 'container-exit' events is deprecated and has been replaced with 'buttons', which indicates the button(s) currently pressed (#369) * Added layers support. Multiple images can now been displayed on top of each other with transparency via the Viewer.addLayer method (#298) * Improved overlay functions (#331) * Fixed: Nav button highlight states aren't quite aligned on Firefox (#303) * Added ControlAnchor options for default controls (#304) * Enabled basic cross-domain tile loading without tainting canvas (works in Chrome and Firefox) (#308) * Added crossOriginPolicy drawer configuration to enable or disable CORS image requests (#364) * Disabled CORS by default (#377) * Added a ControlAnchor.ABSOLUTE enumeration. Enables absolute positioning of control elements in the viewer (#310) * Added a 'navigator-scroll' event to Navigator. Fired when mousewheel events occur in the navigator (#310) * Added a navigatorMaintainSizeRatio option. If set to true, the navigator minimap resizes when the viewer element is resized (#310) * Added 'ABSOLUTE' as a navigatorPosition option, along with corresponding navigatorTop, navigatorLeft options. Allows the navigator minimap to be placed anywhere in the viewer (#310) * Enhanced the navigatorTop, navigatorLeft, navigatorHeight, and navigatorWidth options to allow a number for pixel units or a string for other element units (%, em, etc.) (#310) * Additional enhancements for IIIF support (#315) * Fixed: Setting degrees in Viewer constructor has no effect (#336) * Added pre-draw event for tiles to allow applications to alter the image (#348) * Added optional Rotate Left/Right buttons to standard controls (#341) * Added optimization for large numbers of overlays: `checkResize = false` option for OpenSeadragon.Overlay (#365) * Updated full screen API, adding support for Opera and IE11 and allowing keyboard input in Chrome (#358) * Various fixes to bring OpenSeadragon into W3C compliance (#375) * Added separate flags for turning off each of the nav buttons (#376) * Added support for query parameters in DZI tileSource URL (#378) * Enhanced MouseTracker for multi-touch (#369) * Added support for tracking multiple touch-points on multiple/simultaneous pointing devices * Added support for the W3C Pointer Events event model. Enables touch/multi-touch on IE10+ * Added a dragEndHandler event callback, called when a drag gesture ends * Added a pinchHandler event callback, called as a pinch gesture (2 touch points) is occurring * Added real-time velocity (speed and direction) tracking to drag operations. 'speed' and 'direction' values are passed in the dragHandler and dragEndHandler event data * Enhanced Viewer for multi-touch (#369) * Added pinch zoom with the new MouseTracker pinchHandler. The 'pan' and 'zoom' Viewer events can be used to detect changes resulting in pinch gestures * Added a "canvas-pinch" event fired by the pinch event handler * Added flick gesture with the new MouseTracker dragEndHandler * Added a "canvas-drag-end" event fired by the drag-end event handler * Added a GestureSettings class for per-device gesture options. Currently has settings to enable/disable zoom-on-scroll, zoom-on-pinch, zoom-on-click, and flick gesture settings. * Added GestureSettings objects for mouse, touch, and pen devices to the Viewer options giving users the ability to customize gesture handling in the viewer * Added velocity (speed and direction) properties to the "canvas-drag" event * Added double-click gesture detection to MouseTracker with corresponding dblClickHandler event callback (#392) * Added zoom on double-click feature to Viewer, with corresponding dblClickToZoom option added to the GestureSettings class (#392) * Made it possible to run OpenSeadragon from local filesystem on some browsers (#379) 1.0.0: NOTE: This version has a number of breaking changes to the API, mostly in event handling. See below. * BREAKING CHANGE: All EventSource and MouseTracker event handler method signatures changed to 'handlerMethod(event)' where event == { eventSource, userData, ... } (#251) (Also fixes #23, #224, #239) * The new eventSource property in the event object replaces the old eventSource parameter that was passed to handler methods. * Where the event object duplicated the eventSource value, those properties have been removed. This affects the following events: * All Button events - 'button' property removed * All Viewer (Viewer, Drawer, Viewport) events - 'viewer' property removed * BREAKING CHANGE: Renamed EventHandler to EventSource (#225) * BREAKING CHANGE: Event names changed for consistency: changed to lower case, compound names hyphenated, and "on" prefixes removed (#226): * Viewer "animationstart" changed to "animation-start" * Viewer "animationfinish" changed to "animation-finish" * Button "onPress" changed to "press" * Button "onRelease" changed to "release" * Button "onClick" changed to "click" * Button "onEnter" changed to "enter" * Button "onExit" changed to "exit" * Button "onFocus" changed to "focus" * Button "onBlur" changed to "blur" * BREAKING CHANGE: Numerous improvements to fullPage/fullScreen (#256): * Retains zoom/pan position better when switching into and out of fullPage. * Retains scroll position when switching back out. * More resilient to styling variations on the page. * setFullPage no longer automatically engages fullScreen; there's now a separate setFullScreen. * 'fullpage' event is now 'full-page'. * The `fullpage` property of the 'full-page' event is now `fullPage`. * There is now a 'full-screen' event with a `fullScreen` property (true if it has gone to full screen). * There are now 'pre-full-page' and 'pre-full-screen' events that include a `preventDefaultAction` property you can set in your handler to cancel. They also have `fullPage` and `fullScreen` properties respectively, to indicate if they are going into or out of the mode. * BREAKING CHANGE: Removed the 'onPageChange' callback from the viewer options. Viewer.goToPage() now raises the 'page' event only (#285) * Major documentation improvements (#281) * MouseTracker now passes the original event objects to its handler methods (#23) * MouseTracker now supports an optional 'moveHandler' method for tracking mousemove events (#215) * Added stopHandler to MouseTracker. (#262) * Fixed: Element-relative mouse coordinates now correct if the element and/or page is scrolled (using new OpenSeadragon.getElementOffset() method) (#131) * Fixed: Pinch zoom event issue, regressive issue from previous event system changes (#244) * Added IIIF Image API 1.1 Tile Source (#230) * IIIF 1.0 now uses pixel based syntax (#249) * Fixed: Touch event issue where no canvas-click events were being raised (#240) * Check that zoom reference point is valid before using it in zoomTo and zoomBy (#247) * Added a number of easier coordinate conversion methods to viewport (#243) * Added the ability to create a viewer and start at a specified page (#252) * Fixed image resolve issue with collection mode (#255) * DOM events are now passed through as 'event.originalEvent' in viewer and button events where appropriate. (#257) Affects the following events: * Viewer: 'canvas-release', 'canvas-click', 'canvas-drag', 'canvas-scroll', 'container-enter', 'container-exit', 'container-release' * Button: 'enter', 'exit', 'press', 'release', 'focus', 'blur', 'click' * Fixed: IE 10 not reading DZI file correctly in certain circumstances (#218) * Added support for the 'wheel' DOM mousewheel event (#261) * Fix for non-canvas tile rendering at large size (#264) * Drawer now uses an HTML5 canvas element whenever it's available. Can be overridden with the Viewer.useCanvas option (#191) * Added a boolean preventDefaultAction property (default false) to the event object passed to MouseTracker handler methods. (#270) Implemented in the following MouseTracker subscribers: * Viewer.keyboardCommandArea.innerTracker.focusHandler: preventDefaultAction == true prevents scrolling viewer into view * Viewer.keyboardCommandArea.innerTracker.keyHandler: preventDefaultAction == true prevents viewer keyboard navigation * Viewer.innerTracker.clickHandler: preventDefaultAction == true prevents viewer zoom on click * Viewer.innerTracker.dragHandler: preventDefaultAction == true prevents viewer panning with mouse/touch * Viewer.innerTracker.scrollHandler: preventDefaultAction == true prevents viewer zooming on mousewheel/pinch * Fixed: IE8 error with custom buttons - "Object doesn't support this action" (#279) * Support IIIF servers that don't report tile dimensions (#286) * Added an autoResize option. Default is true. When set to false, the viewer takes no action when its container element is resized. (#291) * Added a static 'version' property to OpenSeadragon. Useful for plugins that require specific OpenSeadragon versions. (#292) 0.9.131: * Fixed: canvas-click event shouldn't fire as you drag (#198) * Fixed: LegacyTileSource doesn't fail gracefully when no supported file formats are found (#202) * Added an optional userData argument to EventHandler.addHandler() which is passed unchanged to the handler method (#203) * Fixed AJAX error reporting on IE8 (#208) * Added viewportToImageRectangle method, and updated imageToViewportRectangle, imageToViewportCoordinates, and viewportToImageCoordinates to be more flexible with params (#212) * Fixed: Viewer is not responsive (css) after returning from full screen (#222) 0.9.130: * Added partial support for rotation (just 90 degree increments for now). (#185) * Hiding and restoring broke the viewer; fixed (#177) * You can now provide an onDraw function for overlays to do custom overlay manipulation (#160) * Added a destroy function on the viewer to clean up and remove elements (#179) * Fixed: navigatorPosition option corrected. (#163) * OpenSeadragon.now() returned undefined the first time; fixed * onTouchEnd did not call the correct mouse up handler; fixed (#159) * Touch events no longer capture mouse (was causing issues on devices that support both) (#168) * Clicking on a button control no longer refreshes page (#184) * Drawer now works when the page is rtl (#187) * Fixed a situation that could throw errors in touch handling (#188) 0.9.129: * Fixed: navigator image not updating when base zoom image is changed (#147) * Fixed tile rendering issue at lower zoom levels with the IIIF TileSource (#55) * On IE, ajax errors would cause an exception to be thrown; fixed (#144) * Faster and more consistent millisecond getter (#138) * Fixed an error when using navPrevNextWrap on single images (#135) * Various fixes to our timer handling (#133) * Now generating source map for openseadragon.min.js (#51) * Fix for calculating overlay width / height (#142) * JSHint tidying (#136) * Improved Ajax method (#149) * Overhauled AJAX error reporting (#151) 0.9.128: * The navigator is now off by default (#102) * Reverted minPixelRatio to 0.5 for better quality (#116) * Sometimes tiles wouldn't resolve if you used the blendTime option; fixed. (#95) * You can now choose to have previous and next buttons wrap using the config.navPrevNextWrap. (#114) * You can now specify an ID for a div to hold the navigator (#46) * You can now click in the navigator to go to a new location (#46) * Keyboard handling is now done in the viewer rather than navigator (#46) * Additional navigator fixes (#46) * Drawer events now fire properly (#94) * Fixed an error in EventHandler.removeHandler() (#48) * Better requestAnimationFrame detection on older Firefox (#103) * More efficient navigator loading (#115) * Simplified element opacity setting implementation (#123) 0.9.127: * Fixed a problem with getString when the string property is a sub-property. (#64) * Fixed: Tooltips for Navigation Controls not displaying (#63) * Cleaned up some diagnostic code that was broken. * Added fullpage class to viewer element when in fullpage mode (#61) * Reverted to original New BSD license; cleaned up license declarations (#89) 0.9.126: * DZI JSONp was broken; fixed. 0.9.125: * Fully deprecated OpenSeadragon.createFromDZI, safely deprecated Viewer.openTileSource and Viewer.openDZI to use Viewer.open internally. (#53 & #54). * Full page bug fix for when viewer is child of document body (#43). * Overlays for DZI bug fix (#45). * DziTileSource: avoid changing relative paths (#56). * Fix typo in preserveViewport handling (#77). * Fix updateMulti timer leak after multiple Viewer.open() calls (#76). * Minor documentation fixes. 0.9.124: * Performance enhancements. 0.9.123: * Real fullscreen support. 0.9.122: * Performance enhancements. 0.9.121: * Touch pan now works on Android. * Pinch zoom is better on all devices.