reduced typecasts in layerrenderer

This commit is contained in:
Simon Seyock
2019-09-25 15:23:02 +02:00
parent 426cd754cd
commit 6b5c2f47bb
7 changed files with 23 additions and 19 deletions

View File

@@ -7,10 +7,13 @@ import Observable from '../Observable.js';
import EventType from '../events/EventType.js'; import EventType from '../events/EventType.js';
import SourceState from '../source/State.js'; import SourceState from '../source/State.js';
/**
* @template {import("../layer/Layer.js").default} LayerType
*/
class LayerRenderer extends Observable { class LayerRenderer extends Observable {
/** /**
* @param {import("../layer/Layer.js").default} layer Layer. * @param {LayerType} layer Layer.
*/ */
constructor(layer) { constructor(layer) {
@@ -21,7 +24,7 @@ class LayerRenderer extends Observable {
/** /**
* @private * @private
* @type {import("../layer/Layer.js").default} * @type {LayerType}
*/ */
this.layer_ = layer; this.layer_ = layer;
@@ -110,7 +113,7 @@ class LayerRenderer extends Observable {
} }
/** /**
* @return {import("../layer/Layer.js").default} Layer. * @return {LayerType} Layer.
*/ */
getLayer() { getLayer() {
return this.layer_; return this.layer_;

View File

@@ -11,11 +11,12 @@ import {create as createTransform, apply as applyTransform, compose as composeTr
/** /**
* @abstract * @abstract
* @template {import("../../layer/Layer.js").default} LayerType
*/ */
class CanvasLayerRenderer extends LayerRenderer { class CanvasLayerRenderer extends LayerRenderer {
/** /**
* @param {import("../../layer/Layer.js").default} layer Layer. * @param {LayerType} layer Layer.
*/ */
constructor(layer) { constructor(layer) {

View File

@@ -72,7 +72,7 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
* @return {boolean} Tile is drawable. * @return {boolean} Tile is drawable.
*/ */
isDrawableTile(tile) { isDrawableTile(tile) {
const tileLayer = /** @type {import("../../layer/Tile.js").default} */ (this.getLayer()); const tileLayer = this.getLayer();
const tileState = tile.getState(); const tileState = tile.getState();
const useInterimTilesOnError = tileLayer.getUseInterimTilesOnError(); const useInterimTilesOnError = tileLayer.getUseInterimTilesOnError();
return tileState == TileState.LOADED || return tileState == TileState.LOADED ||
@@ -90,7 +90,7 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
getTile(z, x, y, frameState) { getTile(z, x, y, frameState) {
const pixelRatio = frameState.pixelRatio; const pixelRatio = frameState.pixelRatio;
const projection = frameState.viewState.projection; const projection = frameState.viewState.projection;
const tileLayer = /** @type {import("../../layer/Tile.js").default} */ (this.getLayer()); const tileLayer = this.getLayer();
const tileSource = tileLayer.getSource(); const tileSource = tileLayer.getSource();
let tile = tileSource.getTile(z, x, y, pixelRatio, projection); let tile = tileSource.getTile(z, x, y, pixelRatio, projection);
if (tile.getState() == TileState.ERROR) { if (tile.getState() == TileState.ERROR) {
@@ -142,7 +142,7 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
const rotation = viewState.rotation; const rotation = viewState.rotation;
const pixelRatio = frameState.pixelRatio; const pixelRatio = frameState.pixelRatio;
const tileLayer = /** @type {import("../../layer/Tile.js").default} */ (this.getLayer()); const tileLayer = this.getLayer();
const tileSource = tileLayer.getSource(); const tileSource = tileLayer.getSource();
const sourceRevision = tileSource.getRevision(); const sourceRevision = tileSource.getRevision();
const tileGrid = tileSource.getTileGridForProjection(projection); const tileGrid = tileSource.getTileGridForProjection(projection);
@@ -285,7 +285,7 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
const tileGutter = tilePixelRatio * tileSource.getGutterForProjection(projection); const tileGutter = tilePixelRatio * tileSource.getGutterForProjection(projection);
const tilesToDraw = tilesToDrawByZ[currentZ]; const tilesToDraw = tilesToDrawByZ[currentZ];
for (const tileCoordKey in tilesToDraw) { for (const tileCoordKey in tilesToDraw) {
const tile = tilesToDraw[tileCoordKey]; const tile = /** @type {import("../../ImageTile.js").default} */ (tilesToDraw[tileCoordKey]);
const tileCoord = tile.tileCoord; const tileCoord = tile.tileCoord;
// Calculate integer positions and sizes so that tiles align // Calculate integer positions and sizes so that tiles align
@@ -363,7 +363,7 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
} }
/** /**
* @param {import("../../Tile.js").default} tile Tile. * @param {import("../../ImageTile.js").default} tile Tile.
* @param {import("../../PluggableMap.js").FrameState} frameState Frame state. * @param {import("../../PluggableMap.js").FrameState} frameState Frame state.
* @param {number} x Left of the tile. * @param {number} x Left of the tile.
* @param {number} y Top of the tile. * @param {number} y Top of the tile.
@@ -409,12 +409,12 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
/** /**
* Get the image from a tile. * Get the image from a tile.
* @param {import("../../Tile.js").default} tile Tile. * @param {import("../../ImageTile.js").default} tile Tile.
* @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image. * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.
* @protected * @protected
*/ */
getTileImage(tile) { getTileImage(tile) {
return /** @type {import("../../ImageTile.js").default} */ (tile).getImage(); return tile.getImage();
} }
/** /**

View File

@@ -144,7 +144,7 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
const snapToPixel = !(viewHints[ViewHint.ANIMATING] || viewHints[ViewHint.INTERACTING]); const snapToPixel = !(viewHints[ViewHint.ANIMATING] || viewHints[ViewHint.INTERACTING]);
const transform = this.getRenderTransform(frameState, width, height, 0); const transform = this.getRenderTransform(frameState, width, height, 0);
const declutterReplays = /** @type {import("../../layer/Vector.js").default} */ (this.getLayer()).getDeclutter() ? {} : null; const declutterReplays = this.getLayer().getDeclutter() ? {} : null;
replayGroup.execute(context, transform, rotation, snapToPixel, undefined, declutterReplays); replayGroup.execute(context, transform, rotation, snapToPixel, undefined, declutterReplays);
if (vectorSource.getWrapX() && projection.canWrapX() && !containsExtent(projectionExtent, extent)) { if (vectorSource.getWrapX() && projection.canWrapX() && !containsExtent(projectionExtent, extent)) {
@@ -199,7 +199,7 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
} else { } else {
const resolution = frameState.viewState.resolution; const resolution = frameState.viewState.resolution;
const rotation = frameState.viewState.rotation; const rotation = frameState.viewState.rotation;
const layer = /** @type {import("../../layer/Vector").default} */ (this.getLayer()); const layer = this.getLayer();
/** @type {!Object<string, boolean>} */ /** @type {!Object<string, boolean>} */
const features = {}; const features = {};
const result = this.replayGroup_.forEachFeatureAtCoordinate(coordinate, resolution, rotation, hitTolerance, const result = this.replayGroup_.forEachFeatureAtCoordinate(coordinate, resolution, rotation, hitTolerance,
@@ -241,7 +241,7 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
* @inheritDoc * @inheritDoc
*/ */
prepareFrame(frameState) { prepareFrame(frameState) {
const vectorLayer = /** @type {import("../../layer/Vector.js").default} */ (this.getLayer()); const vectorLayer = this.getLayer();
const vectorSource = vectorLayer.getSource(); const vectorSource = vectorLayer.getSource();
const animating = frameState.viewHints[ViewHint.ANIMATING]; const animating = frameState.viewHints[ViewHint.ANIMATING];

View File

@@ -44,11 +44,12 @@ export const WebGLWorkerMessageType = {
* @classdesc * @classdesc
* Base WebGL renderer class. * Base WebGL renderer class.
* Holds all logic related to data manipulation & some common rendering logic * Holds all logic related to data manipulation & some common rendering logic
* @template {import("../../layer/Layer.js").default} LayerType
*/ */
class WebGLLayerRenderer extends LayerRenderer { class WebGLLayerRenderer extends LayerRenderer {
/** /**
* @param {import("../../layer/Layer.js").default} layer Layer. * @param {LayerType} layer Layer.
* @param {Options=} [opt_options] Options. * @param {Options=} [opt_options] Options.
*/ */
constructor(layer, opt_options) { constructor(layer, opt_options) {

View File

@@ -367,7 +367,7 @@ class WebGLPointsLayerRenderer extends WebGLLayerRenderer {
* @inheritDoc * @inheritDoc
*/ */
prepareFrame(frameState) { prepareFrame(frameState) {
const vectorLayer = /** @type {import("../../layer/Vector.js").default} */ (this.getLayer()); const vectorLayer = this.getLayer();
const vectorSource = vectorLayer.getSource(); const vectorSource = vectorLayer.getSource();
const viewState = frameState.viewState; const viewState = frameState.viewState;
@@ -418,7 +418,7 @@ class WebGLPointsLayerRenderer extends WebGLLayerRenderer {
* @private * @private
*/ */
rebuildBuffers_(frameState) { rebuildBuffers_(frameState) {
const vectorLayer = /** @type {import("../../layer/Vector.js").default} */ (this.getLayer()); const vectorLayer = this.getLayer();
const vectorSource = vectorLayer.getSource(); const vectorSource = vectorLayer.getSource();
// saves the projection transform for the current frame state // saves the projection transform for the current frame state

View File

@@ -41,7 +41,7 @@
// "typeRoots": [], /* List of folders to include type definitions from. */ // "typeRoots": [], /* List of folders to include type definitions from. */
// "types": ["node"], /* Type declaration files to be included in compilation. */ // "types": ["node"], /* Type declaration files to be included in compilation. */
// "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
"esModuleInterop": true //, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
/* Source Map Options */ /* Source Map Options */
@@ -53,7 +53,6 @@
/* Experimental Options */ /* Experimental Options */
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
//"skipDefaultLibCheck": true
}, },
"include": [ "include": [
"types/**/*.ts", "types/**/*.ts",