From 1c98e6ba5e978dc3af61b394deac9640e2bbc969 Mon Sep 17 00:00:00 2001 From: Jon Stroop Date: Fri, 30 Aug 2013 16:40:06 -0400 Subject: [PATCH 1/8] added support for iiif 1.1 --- Gruntfile.js | 1 + src/iiif11tilesource.js | 224 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 225 insertions(+) create mode 100644 src/iiif11tilesource.js diff --git a/Gruntfile.js b/Gruntfile.js index 81f70b10..7867150b 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -34,6 +34,7 @@ module.exports = function(grunt) { "src/tilesource.js", "src/dzitilesource.js", "src/iiiftilesource.js", + "src/iiif11tilesource.js", "src/osmtilesource.js", "src/tmstilesource.js", "src/legacytilesource.js", diff --git a/src/iiif11tilesource.js b/src/iiif11tilesource.js new file mode 100644 index 00000000..d730b176 --- /dev/null +++ b/src/iiif11tilesource.js @@ -0,0 +1,224 @@ +/* + * OpenSeadragon - IIIF11TileSource + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * The getTileUrl implementation is based on Jon Stroop's Python version, + * which is released under the New BSD license: + * https://gist.github.com/jpstroop/4624253 + */ + + +(function( $ ){ + +/** + * A client implementation of the International Image Interoperability + * Format: Image API Draft 0.2 - Please read more about the specification + * at + * + * @class + * @extends OpenSeadragon.TileSource + * @see http://library.stanford.edu/iiif/image-api/ + */ +$.IIIF11TileSource = function( options ){ + + $.extend( true, this, options ); + + if( !(this.height && this.width && this['@id'] ) ){ + throw new Error('IIIF required parameters not provided.'); + } + + //TODO: at this point the base tile source implementation assumes + // a tile is a square and so only has one property tileSize + // to store it. It may be possible to make tileSize a vector + // OpenSeadraon.Point but would require careful implementation + // to preserve backward compatibility. + options.tileSize = this.tile_width; + + if (! options.maxLevel ) { + var mf = -1; + var scfs = this.scale_factors || this.scale_factor; + if ( scfs instanceof Array ) { + for ( var i = 0; i < scfs.length; i++ ) { + var cf = Number( scfs[i] ); + if ( !isNaN( cf ) && cf > mf ) { mf = cf; } + } + } + if ( mf < 0 ) { options.maxLevel = Number(Math.ceil(Math.log(Math.max(this.width, this.height), 2))); } + else { options.maxLevel = mf; } + } + + $.TileSource.apply( this, [ options ] ); +}; + +$.extend( $.IIIF11TileSource.prototype, $.TileSource.prototype, { + /** + * Determine if the data and/or url imply the image service is supported by + * this tile source. + * @function + * @name OpenSeadragon.IIIFTileSource.prototype.supports + * @param {Object|Array} data + * @param {String} optional - url + */ + supports: function( data, url ){ + return data.profile && ( + "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0" == data.profile || + "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1" == data.profile || + "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2" == data.profile || + "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level3" == data.profile || + "http://library.stanford.edu/iiif/image-api/1.1/compliance.html" == data.profile + ); + }, + + /** + * + * @function + * @name OpenSeadragon.IIIF11TileSource.prototype.configure + * @param {Object|XMLDocument} data - the raw configuration + * @param {String} url - the url the data was retreived from if any. + * @return {Object} options - A dictionary of keyword arguments sufficient + * to configure this tile source via it's constructor. + */ + configure: function( data, url ){ + // var service, + // options, + // host; + + + // options = configureFromObject( this, data ); + + // if( url && !options.tilesUrl ){ + // service = url.split('/'); + // service.pop(); //info.json + // service = service.join('/'); + // if( 'http' !== url.substring( 0, 4 ) ){ + // host = location.protocol + '//' + location.host; + // service = host + service; + // } + // options.tilesUrl = service.replace( + // data.identifier, + // '' + // ); + // } + + return configureFromObject( this, data ); + }, + + /** + * Responsible for retreiving the url which will return an image for the + * region speified by the given x, y, and level components. + * @function + * @name OpenSeadragon.IIIFTileSource.prototype.getTileUrl + * @param {Number} level - z index + * @param {Number} x + * @param {Number} y + * @throws {Error} + */ + getTileUrl: function( level, x, y ){ + + //# constants + var IIIF_ROTATION = '0', + IIIF_QUALITY = 'native.jpg', + + //## get the scale (level as a decimal) + scale = Math.pow( 0.5, this.maxLevel - level ), + + //## get iiif size + iiif_size = 'pct:' + ( scale * 100 ), + + //# image dimensions at this level + level_width = Math.ceil( this.width * scale ), + level_height = Math.ceil( this.height * scale ), + + //## iiif region + iiif_tile_size_width = Math.ceil( this.tileSize / scale ), + iiif_tile_size_height = Math.ceil( this.tileSize / scale ), + iiif_region, + iiif_tile_x, + iiif_tile_y, + iiif_tile_w, + iiif_tile_h; + + + if ( level_width < this.tile_width && level_height < this.tile_height ){ + iiif_region = 'full'; + } else { + iiif_tile_x = x * iiif_tile_size_width; + iiif_tile_y = y * iiif_tile_size_height; + iiif_tile_w = Math.min( iiif_tile_size_width, this.width - iiif_tile_x ); + iiif_tile_h = Math.min( iiif_tile_size_height, this.height - iiif_tile_y ); + iiif_region = [ iiif_tile_x, iiif_tile_y, iiif_tile_w, iiif_tile_h ].join(','); + } + + return [ + this['@id'], + iiif_region, + iiif_size, + IIIF_ROTATION, + IIIF_QUALITY + ].join('/'); + } + + +}); + + +/** + * @private + * @inner + * @function + * +{ + "@context" : "http://library.stanford.edu/iiif/image-api/1.1/context.json", + "@id" : "http://iiif.example.com/prefix/1E34750D-38DB-4825-A38A-B60A345E591C", + "width" : 6000, + "height" : 4000, + "scale_factors" : [ 1, 2, 4 ], + "tile_width" : 1024, + "tile_height" : 1024, + "formats" : [ "jpg", "png" ], + "qualities" : [ "native", "grey" ] + "profile" : "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0" +} + */ +function configureFromObject( tileSource, configuration ){ + //the image_host property is not part of the iiif standard but is included here to + //allow the info.json and info.xml specify a different server to load the + //images from so we can test the implementation. + if( configuration.image_host ){ + configuration.tilesUrl = configuration.image_host; + } + return configuration; +} + +}( OpenSeadragon )); From 6182c3911efc2f40e10f6509629818081d140581 Mon Sep 17 00:00:00 2001 From: Jon Stroop Date: Wed, 11 Sep 2013 13:19:30 -0400 Subject: [PATCH 2/8] use pixels for size instead of pct --- src/iiif11tilesource.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/iiif11tilesource.js b/src/iiif11tilesource.js index d730b176..fde83d72 100644 --- a/src/iiif11tilesource.js +++ b/src/iiif11tilesource.js @@ -86,7 +86,7 @@ $.extend( $.IIIF11TileSource.prototype, $.TileSource.prototype, { * Determine if the data and/or url imply the image service is supported by * this tile source. * @function - * @name OpenSeadragon.IIIFTileSource.prototype.supports + * @name OpenSeadragon.IIIF11TileSource.prototype.supports * @param {Object|Array} data * @param {String} optional - url */ @@ -138,7 +138,7 @@ $.extend( $.IIIF11TileSource.prototype, $.TileSource.prototype, { * Responsible for retreiving the url which will return an image for the * region speified by the given x, y, and level components. * @function - * @name OpenSeadragon.IIIFTileSource.prototype.getTileUrl + * @name OpenSeadragon.IIIF11TileSource.prototype.getTileUrl * @param {Number} level - z index * @param {Number} x * @param {Number} y @@ -153,13 +153,18 @@ $.extend( $.IIIF11TileSource.prototype, $.TileSource.prototype, { //## get the scale (level as a decimal) scale = Math.pow( 0.5, this.maxLevel - level ), - //## get iiif size - iiif_size = 'pct:' + ( scale * 100 ), - //# image dimensions at this level level_width = Math.ceil( this.width * scale ), level_height = Math.ceil( this.height * scale ), + //## get iiif size + // Note that this uses pixels rather than percents (as in + // IIIF11TileSource), which will be more precise (i.e. the 'right + // 50% of 11px' case') and easier to pre-bake without worring about + // different browsers' decimal precision (if desired). + iiif_size = level_width + "," + level_height, + + //## iiif region iiif_tile_size_width = Math.ceil( this.tileSize / scale ), iiif_tile_size_height = Math.ceil( this.tileSize / scale ), @@ -169,6 +174,7 @@ $.extend( $.IIIF11TileSource.prototype, $.TileSource.prototype, { iiif_tile_w, iiif_tile_h; + if ( level_width < this.tile_width && level_height < this.tile_height ){ iiif_region = 'full'; From bb924692da8ec350c846d3e6ff65d07fb151b7b5 Mon Sep 17 00:00:00 2001 From: Jon Stroop Date: Wed, 11 Sep 2013 13:40:00 -0400 Subject: [PATCH 3/8] configureFromObject uses @id --- src/iiif11tilesource.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/iiif11tilesource.js b/src/iiif11tilesource.js index fde83d72..bbef643d 100644 --- a/src/iiif11tilesource.js +++ b/src/iiif11tilesource.js @@ -218,12 +218,7 @@ $.extend( $.IIIF11TileSource.prototype, $.TileSource.prototype, { } */ function configureFromObject( tileSource, configuration ){ - //the image_host property is not part of the iiif standard but is included here to - //allow the info.json and info.xml specify a different server to load the - //images from so we can test the implementation. - if( configuration.image_host ){ - configuration.tilesUrl = configuration.image_host; - } + configuration.tilesUrl = configuration["@id"]; return configuration; } From 4b4325c5ff89f28ba198da2a014922adb10b48d5 Mon Sep 17 00:00:00 2001 From: Jon Stroop Date: Tue, 17 Sep 2013 14:17:01 -0400 Subject: [PATCH 4/8] fixed size param --- src/iiif11tilesource.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/iiif11tilesource.js b/src/iiif11tilesource.js index bbef643d..2fd850fb 100644 --- a/src/iiif11tilesource.js +++ b/src/iiif11tilesource.js @@ -162,8 +162,9 @@ $.extend( $.IIIF11TileSource.prototype, $.TileSource.prototype, { // IIIF11TileSource), which will be more precise (i.e. the 'right // 50% of 11px' case') and easier to pre-bake without worring about // different browsers' decimal precision (if desired). - iiif_size = level_width + "," + level_height, + // iiif_size = level_width + "," + level_height, + iiif_size = this.tileSize + "," + this.tileSize, //## iiif region iiif_tile_size_width = Math.ceil( this.tileSize / scale ), @@ -174,7 +175,7 @@ $.extend( $.IIIF11TileSource.prototype, $.TileSource.prototype, { iiif_tile_w, iiif_tile_h; - + if ( level_width < this.tile_width && level_height < this.tile_height ){ iiif_region = 'full'; From 5665ac82a115f9ef018f13ec385347a7dfcd539b Mon Sep 17 00:00:00 2001 From: Jon Stroop Date: Wed, 25 Sep 2013 09:45:45 -0400 Subject: [PATCH 5/8] supports IIIF 1.1 syntax --- src/iiif11tilesource.js | 115 +++++++++------------------------------- 1 file changed, 26 insertions(+), 89 deletions(-) diff --git a/src/iiif11tilesource.js b/src/iiif11tilesource.js index 2fd850fb..98fe722b 100644 --- a/src/iiif11tilesource.js +++ b/src/iiif11tilesource.js @@ -32,18 +32,11 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* - * The getTileUrl implementation is based on Jon Stroop's Python version, - * which is released under the New BSD license: - * https://gist.github.com/jpstroop/4624253 - */ - - (function( $ ){ /** * A client implementation of the International Image Interoperability - * Format: Image API Draft 0.2 - Please read more about the specification + * Format: Image API 1.1 - Please read more about the specification * at * * @class @@ -58,11 +51,6 @@ $.IIIF11TileSource = function( options ){ throw new Error('IIIF required parameters not provided.'); } - //TODO: at this point the base tile source implementation assumes - // a tile is a square and so only has one property tileSize - // to store it. It may be possible to make tileSize a vector - // OpenSeadraon.Point but would require careful implementation - // to preserve backward compatibility. options.tileSize = this.tile_width; if (! options.maxLevel ) { @@ -104,39 +92,27 @@ $.extend( $.IIIF11TileSource.prototype, $.TileSource.prototype, { * * @function * @name OpenSeadragon.IIIF11TileSource.prototype.configure - * @param {Object|XMLDocument} data - the raw configuration - * @param {String} url - the url the data was retreived from if any. - * @return {Object} options - A dictionary of keyword arguments sufficient - * to configure this tile source via it's constructor. + * @param {Object} data - the raw configuration */ - configure: function( data, url ){ - // var service, - // options, - // host; - - - // options = configureFromObject( this, data ); - - // if( url && !options.tilesUrl ){ - // service = url.split('/'); - // service.pop(); //info.json - // service = service.join('/'); - // if( 'http' !== url.substring( 0, 4 ) ){ - // host = location.protocol + '//' + location.host; - // service = host + service; - // } - // options.tilesUrl = service.replace( - // data.identifier, - // '' - // ); - // } - - return configureFromObject( this, data ); + // IIIF 1.1 Info Looks like this (XML syntax is no more): + // { + // "@context" : "http://library.stanford.edu/iiif/image-api/1.1/context.json", + // "@id" : "http://iiif.example.com/prefix/1E34750D-38DB-4825-A38A-B60A345E591C", + // "width" : 6000, + // "height" : 4000, + // "scale_factors" : [ 1, 2, 4 ], + // "tile_width" : 1024, + // "tile_height" : 1024, + // "formats" : [ "jpg", "png" ], + // "qualities" : [ "native", "grey" ] + // "profile" : "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0" + // } + configure: function( data ){ + return data; }, - /** * Responsible for retreiving the url which will return an image for the - * region speified by the given x, y, and level components. + * region specified by the given x, y, and level components. * @function * @name OpenSeadragon.IIIF11TileSource.prototype.getTileUrl * @param {Number} level - z index @@ -157,15 +133,6 @@ $.extend( $.IIIF11TileSource.prototype, $.TileSource.prototype, { level_width = Math.ceil( this.width * scale ), level_height = Math.ceil( this.height * scale ), - //## get iiif size - // Note that this uses pixels rather than percents (as in - // IIIF11TileSource), which will be more precise (i.e. the 'right - // 50% of 11px' case') and easier to pre-bake without worring about - // different browsers' decimal precision (if desired). - - // iiif_size = level_width + "," + level_height, - iiif_size = this.tileSize + "," + this.tileSize, - //## iiif region iiif_tile_size_width = Math.ceil( this.tileSize / scale ), iiif_tile_size_height = Math.ceil( this.tileSize / scale ), @@ -173,54 +140,24 @@ $.extend( $.IIIF11TileSource.prototype, $.TileSource.prototype, { iiif_tile_x, iiif_tile_y, iiif_tile_w, - iiif_tile_h; - - + iiif_tile_h, + iiif_size, + uri; if ( level_width < this.tile_width && level_height < this.tile_height ){ + iiif_size = level_width + "," + level_height; iiif_region = 'full'; } else { iiif_tile_x = x * iiif_tile_size_width; iiif_tile_y = y * iiif_tile_size_height; iiif_tile_w = Math.min( iiif_tile_size_width, this.width - iiif_tile_x ); iiif_tile_h = Math.min( iiif_tile_size_height, this.height - iiif_tile_y ); + iiif_size = Math.ceil(iiif_tile_w * scale) + "," + Math.ceil(iiif_tile_h * scale); iiif_region = [ iiif_tile_x, iiif_tile_y, iiif_tile_w, iiif_tile_h ].join(','); } - - return [ - this['@id'], - iiif_region, - iiif_size, - IIIF_ROTATION, - IIIF_QUALITY - ].join('/'); + uri = [ this['@id'], iiif_region, iiif_size, IIIF_ROTATION, IIIF_QUALITY ].join('/'); + return uri; } - - -}); - - -/** - * @private - * @inner - * @function - * -{ - "@context" : "http://library.stanford.edu/iiif/image-api/1.1/context.json", - "@id" : "http://iiif.example.com/prefix/1E34750D-38DB-4825-A38A-B60A345E591C", - "width" : 6000, - "height" : 4000, - "scale_factors" : [ 1, 2, 4 ], - "tile_width" : 1024, - "tile_height" : 1024, - "formats" : [ "jpg", "png" ], - "qualities" : [ "native", "grey" ] - "profile" : "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0" -} - */ -function configureFromObject( tileSource, configuration ){ - configuration.tilesUrl = configuration["@id"]; - return configuration; -} + }); }( OpenSeadragon )); From dcb2fc71368fd603bd0f15fb5b723b10af86db17 Mon Sep 17 00:00:00 2001 From: Jon Stroop Date: Thu, 26 Sep 2013 17:24:02 -0400 Subject: [PATCH 6/8] added test for 1.1; renamed 11 to 1_1 --- Gruntfile.js | 2 +- ...if11tilesource.js => iiif1_1tilesource.js} | 12 ++++----- test/data/iiif1_1.json | 27 +++++++++++++++++++ test/formats.js | 7 +++++ 4 files changed, 41 insertions(+), 7 deletions(-) rename src/{iiif11tilesource.js => iiif1_1tilesource.js} (94%) create mode 100644 test/data/iiif1_1.json diff --git a/Gruntfile.js b/Gruntfile.js index 7867150b..d0c103de 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -34,7 +34,7 @@ module.exports = function(grunt) { "src/tilesource.js", "src/dzitilesource.js", "src/iiiftilesource.js", - "src/iiif11tilesource.js", + "src/iiif1_1tilesource.js", "src/osmtilesource.js", "src/tmstilesource.js", "src/legacytilesource.js", diff --git a/src/iiif11tilesource.js b/src/iiif1_1tilesource.js similarity index 94% rename from src/iiif11tilesource.js rename to src/iiif1_1tilesource.js index 98fe722b..6e022d3b 100644 --- a/src/iiif11tilesource.js +++ b/src/iiif1_1tilesource.js @@ -1,5 +1,5 @@ /* - * OpenSeadragon - IIIF11TileSource + * OpenSeadragon - IIIF1_1TileSource * * Copyright (C) 2009 CodePlex Foundation * Copyright (C) 2010-2013 OpenSeadragon contributors @@ -43,7 +43,7 @@ * @extends OpenSeadragon.TileSource * @see http://library.stanford.edu/iiif/image-api/ */ -$.IIIF11TileSource = function( options ){ +$.IIIF1_1TileSource = function( options ){ $.extend( true, this, options ); @@ -69,12 +69,12 @@ $.IIIF11TileSource = function( options ){ $.TileSource.apply( this, [ options ] ); }; -$.extend( $.IIIF11TileSource.prototype, $.TileSource.prototype, { +$.extend( $.IIIF1_1TileSource.prototype, $.TileSource.prototype, { /** * Determine if the data and/or url imply the image service is supported by * this tile source. * @function - * @name OpenSeadragon.IIIF11TileSource.prototype.supports + * @name OpenSeadragon.IIIF1_1TileSource.prototype.supports * @param {Object|Array} data * @param {String} optional - url */ @@ -91,7 +91,7 @@ $.extend( $.IIIF11TileSource.prototype, $.TileSource.prototype, { /** * * @function - * @name OpenSeadragon.IIIF11TileSource.prototype.configure + * @name OpenSeadragon.IIIF1_1TileSource.prototype.configure * @param {Object} data - the raw configuration */ // IIIF 1.1 Info Looks like this (XML syntax is no more): @@ -114,7 +114,7 @@ $.extend( $.IIIF11TileSource.prototype, $.TileSource.prototype, { * Responsible for retreiving the url which will return an image for the * region specified by the given x, y, and level components. * @function - * @name OpenSeadragon.IIIF11TileSource.prototype.getTileUrl + * @name OpenSeadragon.IIIF1_1TileSource.prototype.getTileUrl * @param {Number} level - z index * @param {Number} x * @param {Number} y diff --git a/test/data/iiif1_1.json b/test/data/iiif1_1.json new file mode 100644 index 00000000..5a33ce73 --- /dev/null +++ b/test/data/iiif1_1.json @@ -0,0 +1,27 @@ +{ + "profile": "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2", + "scale_factors": [ + 1, + 2, + 4, + 8, + 16 + ], + "tile_height": 256, + "height": 3600, + "width": 2584, + "tile_width": 256, + "qualities": [ + "native", + "bitonal", + "grey", + "color" + ], + "formats": [ + "jpg", + "png", + "gif" + ], + "@context": "http://library.stanford.edu/iiif/image-api/1.1/context.json", + "@id": "http://libimages.princeton.edu/loris/pudl0071%2F4055459%2F01%2F00000030.jp2" +} \ No newline at end of file diff --git a/test/formats.js b/test/formats.js index 0c673bcf..8258c386 100644 --- a/test/formats.js +++ b/test/formats.js @@ -65,4 +65,11 @@ testOpen('testpattern.xml'); }); + // ---------- + asyncTest('IIIF 1.1 JSON', function() { + testOpen('iiif1_1.json'); + }); + + + })(); From 00870530af9025f6e6430f898de21d8f8cb38c9b Mon Sep 17 00:00:00 2001 From: Jon Stroop Date: Sat, 28 Sep 2013 06:46:41 -0400 Subject: [PATCH 7/8] Adding iiif 1.0 info samples --- test/data/iiif1_0.json | 26 ++++++++++++++++++++++++++ test/data/iiif1_0.xml | 1 + 2 files changed, 27 insertions(+) create mode 100644 test/data/iiif1_0.json create mode 100644 test/data/iiif1_0.xml diff --git a/test/data/iiif1_0.json b/test/data/iiif1_0.json new file mode 100644 index 00000000..9cfe9e54 --- /dev/null +++ b/test/data/iiif1_0.json @@ -0,0 +1,26 @@ +{ + "identifier": "pudl0071/4055459/01/00000030", + "width": 2584, + "height": 3600, + "scale_factors": [ + 1, + 2, + 3, + 4, + 5 + ], + "tile_width": 256, + "tile_height": 256, + "formats": [ + "jpg", + "png" + ], + "qualities": [ + "native", + "bitonal", + "grey", + "color" + ], + "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1", + "image_host": "http://img.princeton.edu/loris +} \ No newline at end of file diff --git a/test/data/iiif1_0.xml b/test/data/iiif1_0.xml new file mode 100644 index 00000000..f6963492 --- /dev/null +++ b/test/data/iiif1_0.xml @@ -0,0 +1 @@ +pudl0071/4055459/01/000000302584360012345256256jpgpngnativebitonalgreycolorhttp://library.stanford.edu/iiif/image-api/compliance.html#level1http://img.princeton.edu/loris \ No newline at end of file From 8750300612d414920db1cec33555ea0bc950f5f9 Mon Sep 17 00:00:00 2001 From: Jon Stroop Date: Mon, 30 Sep 2013 19:42:16 -0400 Subject: [PATCH 8/8] applied iangilman\'s patch --- test/data/iiif1_0.json | 6 +++--- test/data/iiif1_0.xml | 2 +- test/formats.js | 12 ++++++++++-- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/test/data/iiif1_0.json b/test/data/iiif1_0.json index 9cfe9e54..2c55544c 100644 --- a/test/data/iiif1_0.json +++ b/test/data/iiif1_0.json @@ -1,5 +1,5 @@ { - "identifier": "pudl0071/4055459/01/00000030", + "identifier": "pudl0001/4609321/s42/00000001", "width": 2584, "height": 3600, "scale_factors": [ @@ -22,5 +22,5 @@ "color" ], "profile": "http://library.stanford.edu/iiif/image-api/compliance.html#level1", - "image_host": "http://img.princeton.edu/loris -} \ No newline at end of file + "image_host": "http://lorisimg.princeton.edu/loris" +} diff --git a/test/data/iiif1_0.xml b/test/data/iiif1_0.xml index f6963492..3e7f931f 100644 --- a/test/data/iiif1_0.xml +++ b/test/data/iiif1_0.xml @@ -1 +1 @@ -pudl0071/4055459/01/000000302584360012345256256jpgpngnativebitonalgreycolorhttp://library.stanford.edu/iiif/image-api/compliance.html#level1http://img.princeton.edu/loris \ No newline at end of file +pudl0001/4609321/s42/000000012584360012345256256jpgpngnativebitonalgreycolorhttp://library.stanford.edu/iiif/image-api/compliance.html#level1http://lorisimg.princeton.edu/loris diff --git a/test/formats.js b/test/formats.js index 8258c386..7a81c4f7 100644 --- a/test/formats.js +++ b/test/formats.js @@ -65,11 +65,19 @@ testOpen('testpattern.xml'); }); + // ---------- + asyncTest('IIIF 1.0 JSON', function() { + testOpen('iiif1_0.json'); + }); + + // ---------- + asyncTest('IIIF 1.0 XML', function() { + testOpen('iiif1_0.xml'); + }); + // ---------- asyncTest('IIIF 1.1 JSON', function() { testOpen('iiif1_1.json'); }); - - })();