Remove private static members from Zoomify source
This commit is contained in:
+70
-67
@@ -13,6 +13,72 @@ import {toSize} from '../size.js';
|
|||||||
import TileImage from '../source/TileImage.js';
|
import TileImage from '../source/TileImage.js';
|
||||||
import TileGrid from '../tilegrid/TileGrid.js';
|
import TileGrid from '../tilegrid/TileGrid.js';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @enum {string}
|
||||||
|
*/
|
||||||
|
const TierSizeCalculation = {
|
||||||
|
DEFAULT: 'default',
|
||||||
|
TRUNCATED: 'truncated'
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @constructor
|
||||||
|
* @extends {ol.ImageTile}
|
||||||
|
* @param {ol.tilegrid.TileGrid} tileGrid TileGrid that the tile belongs to.
|
||||||
|
* @param {ol.TileCoord} tileCoord Tile coordinate.
|
||||||
|
* @param {ol.TileState} state State.
|
||||||
|
* @param {string} src Image source URI.
|
||||||
|
* @param {?string} crossOrigin Cross origin.
|
||||||
|
* @param {ol.TileLoadFunctionType} tileLoadFunction Tile load function.
|
||||||
|
* @param {olx.TileOptions=} opt_options Tile options.
|
||||||
|
*/
|
||||||
|
export const CustomTile = function(
|
||||||
|
tileGrid, tileCoord, state, src, crossOrigin, tileLoadFunction, opt_options) {
|
||||||
|
|
||||||
|
ImageTile.call(this, tileCoord, state, src, crossOrigin, tileLoadFunction, opt_options);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @private
|
||||||
|
* @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement}
|
||||||
|
*/
|
||||||
|
this.zoomifyImage_ = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @private
|
||||||
|
* @type {ol.Size}
|
||||||
|
*/
|
||||||
|
this.tileSize_ = toSize(tileGrid.getTileSize(tileCoord[0]));
|
||||||
|
};
|
||||||
|
inherits(CustomTile, ImageTile);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @inheritDoc
|
||||||
|
*/
|
||||||
|
CustomTile.prototype.getImage = function() {
|
||||||
|
if (this.zoomifyImage_) {
|
||||||
|
return this.zoomifyImage_;
|
||||||
|
}
|
||||||
|
const image = ImageTile.prototype.getImage.call(this);
|
||||||
|
if (this.state == TileState.LOADED) {
|
||||||
|
const tileSize = this.tileSize_;
|
||||||
|
if (image.width == tileSize[0] && image.height == tileSize[1]) {
|
||||||
|
this.zoomifyImage_ = image;
|
||||||
|
return image;
|
||||||
|
} else {
|
||||||
|
const context = createCanvasContext2D(tileSize[0], tileSize[1]);
|
||||||
|
context.drawImage(image, 0, 0);
|
||||||
|
this.zoomifyImage_ = context.canvas;
|
||||||
|
return context.canvas;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return image;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @classdesc
|
* @classdesc
|
||||||
* Layer source for tile data in Zoomify format (both Zoomify and Internet
|
* Layer source for tile data in Zoomify format (both Zoomify and Internet
|
||||||
@@ -30,7 +96,7 @@ const Zoomify = function(opt_options) {
|
|||||||
const size = options.size;
|
const size = options.size;
|
||||||
const tierSizeCalculation = options.tierSizeCalculation !== undefined ?
|
const tierSizeCalculation = options.tierSizeCalculation !== undefined ?
|
||||||
options.tierSizeCalculation :
|
options.tierSizeCalculation :
|
||||||
Zoomify.TierSizeCalculation_.DEFAULT;
|
TierSizeCalculation.DEFAULT;
|
||||||
|
|
||||||
const imageWidth = size[0];
|
const imageWidth = size[0];
|
||||||
const imageHeight = size[1];
|
const imageHeight = size[1];
|
||||||
@@ -40,7 +106,7 @@ const Zoomify = function(opt_options) {
|
|||||||
let tileSizeForTierSizeCalculation = tileSize;
|
let tileSizeForTierSizeCalculation = tileSize;
|
||||||
|
|
||||||
switch (tierSizeCalculation) {
|
switch (tierSizeCalculation) {
|
||||||
case Zoomify.TierSizeCalculation_.DEFAULT:
|
case TierSizeCalculation.DEFAULT:
|
||||||
while (imageWidth > tileSizeForTierSizeCalculation || imageHeight > tileSizeForTierSizeCalculation) {
|
while (imageWidth > tileSizeForTierSizeCalculation || imageHeight > tileSizeForTierSizeCalculation) {
|
||||||
tierSizeInTiles.push([
|
tierSizeInTiles.push([
|
||||||
Math.ceil(imageWidth / tileSizeForTierSizeCalculation),
|
Math.ceil(imageWidth / tileSizeForTierSizeCalculation),
|
||||||
@@ -49,7 +115,7 @@ const Zoomify = function(opt_options) {
|
|||||||
tileSizeForTierSizeCalculation += tileSizeForTierSizeCalculation;
|
tileSizeForTierSizeCalculation += tileSizeForTierSizeCalculation;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Zoomify.TierSizeCalculation_.TRUNCATED:
|
case TierSizeCalculation.TRUNCATED:
|
||||||
let width = imageWidth;
|
let width = imageWidth;
|
||||||
let height = imageHeight;
|
let height = imageHeight;
|
||||||
while (width > tileSizeForTierSizeCalculation || height > tileSizeForTierSizeCalculation) {
|
while (width > tileSizeForTierSizeCalculation || height > tileSizeForTierSizeCalculation) {
|
||||||
@@ -134,7 +200,7 @@ const Zoomify = function(opt_options) {
|
|||||||
|
|
||||||
const tileUrlFunction = createFromTileUrlFunctions(urls.map(createFromTemplate));
|
const tileUrlFunction = createFromTileUrlFunctions(urls.map(createFromTemplate));
|
||||||
|
|
||||||
const ZoomifyTileClass = Zoomify.Tile_.bind(null, tileGrid);
|
const ZoomifyTileClass = CustomTile.bind(null, tileGrid);
|
||||||
|
|
||||||
TileImage.call(this, {
|
TileImage.call(this, {
|
||||||
attributions: options.attributions,
|
attributions: options.attributions,
|
||||||
@@ -152,68 +218,5 @@ const Zoomify = function(opt_options) {
|
|||||||
|
|
||||||
inherits(Zoomify, TileImage);
|
inherits(Zoomify, TileImage);
|
||||||
|
|
||||||
/**
|
|
||||||
* @constructor
|
|
||||||
* @extends {ol.ImageTile}
|
|
||||||
* @param {ol.tilegrid.TileGrid} tileGrid TileGrid that the tile belongs to.
|
|
||||||
* @param {ol.TileCoord} tileCoord Tile coordinate.
|
|
||||||
* @param {ol.TileState} state State.
|
|
||||||
* @param {string} src Image source URI.
|
|
||||||
* @param {?string} crossOrigin Cross origin.
|
|
||||||
* @param {ol.TileLoadFunctionType} tileLoadFunction Tile load function.
|
|
||||||
* @param {olx.TileOptions=} opt_options Tile options.
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
Zoomify.Tile_ = function(
|
|
||||||
tileGrid, tileCoord, state, src, crossOrigin, tileLoadFunction, opt_options) {
|
|
||||||
|
|
||||||
ImageTile.call(this, tileCoord, state, src, crossOrigin, tileLoadFunction, opt_options);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @private
|
|
||||||
* @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement}
|
|
||||||
*/
|
|
||||||
this.zoomifyImage_ = null;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @private
|
|
||||||
* @type {ol.Size}
|
|
||||||
*/
|
|
||||||
this.tileSize_ = toSize(tileGrid.getTileSize(tileCoord[0]));
|
|
||||||
};
|
|
||||||
inherits(Zoomify.Tile_, ImageTile);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @inheritDoc
|
|
||||||
*/
|
|
||||||
Zoomify.Tile_.prototype.getImage = function() {
|
|
||||||
if (this.zoomifyImage_) {
|
|
||||||
return this.zoomifyImage_;
|
|
||||||
}
|
|
||||||
const image = ImageTile.prototype.getImage.call(this);
|
|
||||||
if (this.state == TileState.LOADED) {
|
|
||||||
const tileSize = this.tileSize_;
|
|
||||||
if (image.width == tileSize[0] && image.height == tileSize[1]) {
|
|
||||||
this.zoomifyImage_ = image;
|
|
||||||
return image;
|
|
||||||
} else {
|
|
||||||
const context = createCanvasContext2D(tileSize[0], tileSize[1]);
|
|
||||||
context.drawImage(image, 0, 0);
|
|
||||||
this.zoomifyImage_ = context.canvas;
|
|
||||||
return context.canvas;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return image;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @enum {string}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
Zoomify.TierSizeCalculation_ = {
|
|
||||||
DEFAULT: 'default',
|
|
||||||
TRUNCATED: 'truncated'
|
|
||||||
};
|
|
||||||
export default Zoomify;
|
export default Zoomify;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import {DEFAULT_TILE_SIZE} from '../../../../src/ol/tilegrid/common.js';
|
import {DEFAULT_TILE_SIZE} from '../../../../src/ol/tilegrid/common.js';
|
||||||
import {listen} from '../../../../src/ol/events.js';
|
import {listen} from '../../../../src/ol/events.js';
|
||||||
import Projection from '../../../../src/ol/proj/Projection.js';
|
import Projection from '../../../../src/ol/proj/Projection.js';
|
||||||
import Zoomify from '../../../../src/ol/source/Zoomify.js';
|
import Zoomify, {CustomTile} from '../../../../src/ol/source/Zoomify.js';
|
||||||
import TileGrid from '../../../../src/ol/tilegrid/TileGrid.js';
|
import TileGrid from '../../../../src/ol/tilegrid/TileGrid.js';
|
||||||
|
|
||||||
|
|
||||||
@@ -280,7 +280,7 @@ describe('ol.source.Zoomify', function() {
|
|||||||
it('returns expected tileClass instances via "getTile"', function() {
|
it('returns expected tileClass instances via "getTile"', function() {
|
||||||
const source = getZoomifySource();
|
const source = getZoomifySource();
|
||||||
const tile = source.getTile(0, 0, -1, 1, proj);
|
const tile = source.getTile(0, 0, -1, 1, proj);
|
||||||
expect(tile).to.be.an(Zoomify.Tile_);
|
expect(tile).to.be.a(CustomTile);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('"tile.getImage" returns and caches an unloaded image', function() {
|
it('"tile.getImage" returns and caches an unloaded image', function() {
|
||||||
|
|||||||
Reference in New Issue
Block a user