ProjectMirador / m1

An open-source, web-based 'multi-up' viewer that supports zoom-pan-rotate functionality, ability to display/compare simple images, and images with annotations. This repository is no longer maintained, for further project details, see the latest version at http://github.com/IIIF/mirador.
Other
40 stars 9 forks source link

Double-clicking ImageView without a loaded image freezes #67

Closed azaroth42 closed 10 years ago

azaroth42 commented 10 years ago

Steps to reproduce:

Expected behaviour:

Actual behaviour:

aeschylus commented 10 years ago

I've narrowed this down to something in the initialisation of the osd viewport, but the error seems to only occur in manuscripts with no annotations. It may be in OSD itself, but still investigating.

aeschylus commented 10 years ago

Actually, it seems the manuscript mentioned is lacking part of the tile source information needed for OSD to render a canvas correctly.

I've added a default tile size into mirador.js that will provide for the case where a manifest does not list a tilesize. This solved the issue of OSD trying to render a canvas with infinitesimally-small tiles.

regisrob commented 10 years ago

Yes I can confirm this, the bug is from OSD. It is because Sanddragon at BL does not provide any tile dimensions in info.json (tile_width and tile_height). And since the version of OSD built with Mirador does not include IIIF1_1tilesource implementation, every info request is treated as an IIIFTileSource implementation and thus causes OSD to fail because it needs at least tile_width (unlike IIIF1_1TileSource, it does not use the short dimension if there aren't tile sizes provided : see this commit by jstroop : https://github.com/openseadragon/openseadragon/commit/22587cec6e0ade72d72e79ad5937a59211de05f4, solving this issue : https://github.com/openseadragon/openseadragon/pull/286)

That's why the BL hacked OSD to make their Mirador instance work with IIIFTileSource: see http://sanddragon.bl.uk/mirador/mirador.js (line 13282)

But nevermind if the issue is solved by iiif.js.