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

View File

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

View File

@@ -72,7 +72,7 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
* @return {boolean} Tile is drawable.
*/
isDrawableTile(tile) {
const tileLayer = /** @type {import("../../layer/Tile.js").default} */ (this.getLayer());
const tileLayer = this.getLayer();
const tileState = tile.getState();
const useInterimTilesOnError = tileLayer.getUseInterimTilesOnError();
return tileState == TileState.LOADED ||
@@ -90,7 +90,7 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
getTile(z, x, y, frameState) {
const pixelRatio = frameState.pixelRatio;
const projection = frameState.viewState.projection;
const tileLayer = /** @type {import("../../layer/Tile.js").default} */ (this.getLayer());
const tileLayer = this.getLayer();
const tileSource = tileLayer.getSource();
let tile = tileSource.getTile(z, x, y, pixelRatio, projection);
if (tile.getState() == TileState.ERROR) {
@@ -142,7 +142,7 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
const rotation = viewState.rotation;
const pixelRatio = frameState.pixelRatio;
const tileLayer = /** @type {import("../../layer/Tile.js").default} */ (this.getLayer());
const tileLayer = this.getLayer();
const tileSource = tileLayer.getSource();
const sourceRevision = tileSource.getRevision();
const tileGrid = tileSource.getTileGridForProjection(projection);
@@ -285,7 +285,7 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
const tileGutter = tilePixelRatio * tileSource.getGutterForProjection(projection);
const tilesToDraw = tilesToDrawByZ[currentZ];
for (const tileCoordKey in tilesToDraw) {
const tile = tilesToDraw[tileCoordKey];
const tile = /** @type {import("../../ImageTile.js").default} */ (tilesToDraw[tileCoordKey]);
const tileCoord = tile.tileCoord;
// 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 {number} x Left of the tile.
* @param {number} y Top of the tile.
@@ -409,12 +409,12 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
/**
* 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.
* @protected
*/
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 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);
if (vectorSource.getWrapX() && projection.canWrapX() && !containsExtent(projectionExtent, extent)) {
@@ -199,7 +199,7 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
} else {
const resolution = frameState.viewState.resolution;
const rotation = frameState.viewState.rotation;
const layer = /** @type {import("../../layer/Vector").default} */ (this.getLayer());
const layer = this.getLayer();
/** @type {!Object<string, boolean>} */
const features = {};
const result = this.replayGroup_.forEachFeatureAtCoordinate(coordinate, resolution, rotation, hitTolerance,
@@ -241,7 +241,7 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
* @inheritDoc
*/
prepareFrame(frameState) {
const vectorLayer = /** @type {import("../../layer/Vector.js").default} */ (this.getLayer());
const vectorLayer = this.getLayer();
const vectorSource = vectorLayer.getSource();
const animating = frameState.viewHints[ViewHint.ANIMATING];

View File

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

View File

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

View File

@@ -41,7 +41,7 @@
// "typeRoots": [], /* List of folders to include type definitions from. */
// "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. */
"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. */
/* Source Map Options */
@@ -53,7 +53,6 @@
/* Experimental Options */
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
//"skipDefaultLibCheck": true
},
"include": [
"types/**/*.ts",