Make code prettier
This updates ESLint and our shared eslint-config-openlayers to use Prettier. Most formatting changes were automatically applied with this:
npm run lint -- --fix
A few manual changes were required:
* In `examples/offscreen-canvas.js`, the `//eslint-disable-line` comment needed to be moved to the appropriate line to disable the error about the `'worker-loader!./offscreen-canvas.worker.js'` import.
* In `examples/webpack/exapmle-builder.js`, spaces could not be added after a couple `function`s for some reason. While editing this, I reworked `ExampleBuilder` to be a class.
* In `src/ol/format/WMSGetFeatureInfo.js`, the `// @ts-ignore` comment needed to be moved down one line so it applied to the `parsersNS` argument.
This commit is contained in:
@@ -1,16 +1,25 @@
|
||||
/**
|
||||
* @module ol/renderer/canvas/TileLayer
|
||||
*/
|
||||
import {getUid} from '../../util.js';
|
||||
import {fromUserExtent} from '../../proj.js';
|
||||
import CanvasLayerRenderer from './Layer.js';
|
||||
import TileRange from '../../TileRange.js';
|
||||
import TileState from '../../TileState.js';
|
||||
import {createEmpty, equals, getIntersection, getTopLeft} from '../../extent.js';
|
||||
import CanvasLayerRenderer from './Layer.js';
|
||||
import {apply as applyTransform, compose as composeTransform, makeInverse} from '../../transform.js';
|
||||
import {numberSafeCompareFunction} from '../../array.js';
|
||||
import {createTransformString} from '../../render/canvas.js';
|
||||
import {
|
||||
apply as applyTransform,
|
||||
compose as composeTransform,
|
||||
makeInverse,
|
||||
} from '../../transform.js';
|
||||
import {assign} from '../../obj.js';
|
||||
import {
|
||||
createEmpty,
|
||||
equals,
|
||||
getIntersection,
|
||||
getTopLeft,
|
||||
} from '../../extent.js';
|
||||
import {createTransformString} from '../../render/canvas.js';
|
||||
import {fromUserExtent} from '../../proj.js';
|
||||
import {getUid} from '../../util.js';
|
||||
import {numberSafeCompareFunction} from '../../array.js';
|
||||
|
||||
/**
|
||||
* @classdesc
|
||||
@@ -18,7 +27,6 @@ import {assign} from '../../obj.js';
|
||||
* @api
|
||||
*/
|
||||
class CanvasTileLayerRenderer extends CanvasLayerRenderer {
|
||||
|
||||
/**
|
||||
* @param {import("../../layer/Tile.js").default|import("../../layer/VectorTile.js").default} tileLayer Tile layer.
|
||||
*/
|
||||
@@ -89,9 +97,11 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
|
||||
const tileLayer = this.getLayer();
|
||||
const tileState = tile.getState();
|
||||
const useInterimTilesOnError = tileLayer.getUseInterimTilesOnError();
|
||||
return tileState == TileState.LOADED ||
|
||||
tileState == TileState.EMPTY ||
|
||||
tileState == TileState.ERROR && !useInterimTilesOnError;
|
||||
return (
|
||||
tileState == TileState.LOADED ||
|
||||
tileState == TileState.EMPTY ||
|
||||
(tileState == TileState.ERROR && !useInterimTilesOnError)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -167,9 +177,13 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
|
||||
const tileResolution = tileGrid.getResolution(z);
|
||||
|
||||
let extent = frameState.extent;
|
||||
const layerExtent = layerState.extent && fromUserExtent(layerState.extent, projection);
|
||||
const layerExtent =
|
||||
layerState.extent && fromUserExtent(layerState.extent, projection);
|
||||
if (layerExtent) {
|
||||
extent = getIntersection(extent, fromUserExtent(layerState.extent, projection));
|
||||
extent = getIntersection(
|
||||
extent,
|
||||
fromUserExtent(layerState.extent, projection)
|
||||
);
|
||||
}
|
||||
|
||||
const tilePixelRatio = tileSource.getTilePixelRatio(pixelRatio);
|
||||
@@ -184,13 +198,13 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
|
||||
height = size;
|
||||
}
|
||||
|
||||
const dx = tileResolution * width / 2 / tilePixelRatio;
|
||||
const dy = tileResolution * height / 2 / tilePixelRatio;
|
||||
const dx = (tileResolution * width) / 2 / tilePixelRatio;
|
||||
const dy = (tileResolution * height) / 2 / tilePixelRatio;
|
||||
const canvasExtent = [
|
||||
viewCenter[0] - dx,
|
||||
viewCenter[1] - dy,
|
||||
viewCenter[0] + dx,
|
||||
viewCenter[1] + dy
|
||||
viewCenter[1] + dy,
|
||||
];
|
||||
|
||||
const tileRange = tileGrid.getTileRangeForExtentAndZ(extent, z);
|
||||
@@ -201,7 +215,11 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
|
||||
const tilesToDrawByZ = {};
|
||||
tilesToDrawByZ[z] = {};
|
||||
|
||||
const findLoadedTiles = this.createLoadedTileFinder(tileSource, projection, tilesToDrawByZ);
|
||||
const findLoadedTiles = this.createLoadedTileFinder(
|
||||
tileSource,
|
||||
projection,
|
||||
tilesToDrawByZ
|
||||
);
|
||||
|
||||
const tmpExtent = this.tmpExtent;
|
||||
const tmpTileRange = this.tmpTileRange_;
|
||||
@@ -214,7 +232,10 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
|
||||
if (tile.getState() == TileState.LOADED) {
|
||||
tilesToDrawByZ[z][tile.tileCoord.toString()] = tile;
|
||||
const inTransition = tile.inTransition(uid);
|
||||
if (!this.newTiles_ && (inTransition || this.renderedTiles.indexOf(tile) === -1)) {
|
||||
if (
|
||||
!this.newTiles_ &&
|
||||
(inTransition || this.renderedTiles.indexOf(tile) === -1)
|
||||
) {
|
||||
this.newTiles_ = true;
|
||||
}
|
||||
}
|
||||
@@ -224,28 +245,39 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
|
||||
}
|
||||
}
|
||||
|
||||
const childTileRange = tileGrid.getTileCoordChildTileRange(tile.tileCoord, tmpTileRange, tmpExtent);
|
||||
const childTileRange = tileGrid.getTileCoordChildTileRange(
|
||||
tile.tileCoord,
|
||||
tmpTileRange,
|
||||
tmpExtent
|
||||
);
|
||||
|
||||
let covered = false;
|
||||
if (childTileRange) {
|
||||
covered = findLoadedTiles(z + 1, childTileRange);
|
||||
}
|
||||
if (!covered) {
|
||||
tileGrid.forEachTileCoordParentTileRange(tile.tileCoord, findLoadedTiles, tmpTileRange, tmpExtent);
|
||||
tileGrid.forEachTileCoordParentTileRange(
|
||||
tile.tileCoord,
|
||||
findLoadedTiles,
|
||||
tmpTileRange,
|
||||
tmpExtent
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const canvasScale = tileResolution / viewResolution;
|
||||
|
||||
// set forward and inverse pixel transforms
|
||||
composeTransform(this.pixelTransform,
|
||||
frameState.size[0] / 2, frameState.size[1] / 2,
|
||||
1 / tilePixelRatio, 1 / tilePixelRatio,
|
||||
composeTransform(
|
||||
this.pixelTransform,
|
||||
frameState.size[0] / 2,
|
||||
frameState.size[1] / 2,
|
||||
1 / tilePixelRatio,
|
||||
1 / tilePixelRatio,
|
||||
rotation,
|
||||
-width / 2, -height / 2
|
||||
-width / 2,
|
||||
-height / 2
|
||||
);
|
||||
|
||||
const canvasTransform = createTransformString(this.pixelTransform);
|
||||
@@ -257,11 +289,15 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
|
||||
makeInverse(this.inversePixelTransform, this.pixelTransform);
|
||||
|
||||
// set scale transform for calculating tile positions on the canvas
|
||||
composeTransform(this.tempTransform_,
|
||||
width / 2, height / 2,
|
||||
canvasScale, canvasScale,
|
||||
composeTransform(
|
||||
this.tempTransform_,
|
||||
width / 2,
|
||||
height / 2,
|
||||
canvasScale,
|
||||
canvasScale,
|
||||
0,
|
||||
-width / 2, -height / 2
|
||||
-width / 2,
|
||||
-height / 2
|
||||
);
|
||||
|
||||
if (canvas.width != width || canvas.height != height) {
|
||||
@@ -284,7 +320,11 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
|
||||
zs.sort(numberSafeCompareFunction);
|
||||
|
||||
let clips, clipZs, currentClip;
|
||||
if (layerState.opacity === 1 && (!this.containerReused || tileSource.getOpaque(frameState.viewState.projection))) {
|
||||
if (
|
||||
layerState.opacity === 1 &&
|
||||
(!this.containerReused ||
|
||||
tileSource.getOpaque(frameState.viewState.projection))
|
||||
) {
|
||||
zs = zs.reverse();
|
||||
} else {
|
||||
clips = [];
|
||||
@@ -292,27 +332,39 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
|
||||
}
|
||||
for (let i = zs.length - 1; i >= 0; --i) {
|
||||
const currentZ = zs[i];
|
||||
const currentTilePixelSize = tileSource.getTilePixelSize(currentZ, pixelRatio, projection);
|
||||
const currentTilePixelSize = tileSource.getTilePixelSize(
|
||||
currentZ,
|
||||
pixelRatio,
|
||||
projection
|
||||
);
|
||||
const currentResolution = tileGrid.getResolution(currentZ);
|
||||
const currentScale = currentResolution / tileResolution;
|
||||
const dx = currentTilePixelSize[0] * currentScale * canvasScale;
|
||||
const dy = currentTilePixelSize[1] * currentScale * canvasScale;
|
||||
const originTileCoord = tileGrid.getTileCoordForCoordAndZ(getTopLeft(canvasExtent), currentZ);
|
||||
const originTileCoord = tileGrid.getTileCoordForCoordAndZ(
|
||||
getTopLeft(canvasExtent),
|
||||
currentZ
|
||||
);
|
||||
const originTileExtent = tileGrid.getTileCoordExtent(originTileCoord);
|
||||
const origin = applyTransform(this.tempTransform_, [
|
||||
tilePixelRatio * (originTileExtent[0] - canvasExtent[0]) / tileResolution,
|
||||
tilePixelRatio * (canvasExtent[3] - originTileExtent[3]) / tileResolution
|
||||
(tilePixelRatio * (originTileExtent[0] - canvasExtent[0])) /
|
||||
tileResolution,
|
||||
(tilePixelRatio * (canvasExtent[3] - originTileExtent[3])) /
|
||||
tileResolution,
|
||||
]);
|
||||
const tileGutter = tilePixelRatio * tileSource.getGutterForProjection(projection);
|
||||
const tileGutter =
|
||||
tilePixelRatio * tileSource.getGutterForProjection(projection);
|
||||
const tilesToDraw = tilesToDrawByZ[currentZ];
|
||||
for (const tileCoordKey in tilesToDraw) {
|
||||
const tile = /** @type {import("../../ImageTile.js").default} */ (tilesToDraw[tileCoordKey]);
|
||||
const tile = /** @type {import("../../ImageTile.js").default} */ (tilesToDraw[
|
||||
tileCoordKey
|
||||
]);
|
||||
const tileCoord = tile.tileCoord;
|
||||
|
||||
// Calculate integer positions and sizes so that tiles align
|
||||
const floatX = (origin[0] - (originTileCoord[1] - tileCoord[1]) * dx);
|
||||
const floatX = origin[0] - (originTileCoord[1] - tileCoord[1]) * dx;
|
||||
const nextX = Math.round(floatX + dx);
|
||||
const floatY = (origin[1] - (originTileCoord[2] - tileCoord[2]) * dy);
|
||||
const floatY = origin[1] - (originTileCoord[2] - tileCoord[2]) * dy;
|
||||
const nextY = Math.round(floatY + dy);
|
||||
const x = Math.round(floatX);
|
||||
const y = Math.round(floatY);
|
||||
@@ -320,7 +372,8 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
|
||||
const h = nextY - y;
|
||||
const transition = z === currentZ;
|
||||
|
||||
const inTransition = transition && tile.getAlpha(getUid(this), frameState.time) !== 1;
|
||||
const inTransition =
|
||||
transition && tile.getAlpha(getUid(this), frameState.time) !== 1;
|
||||
if (!inTransition) {
|
||||
if (clips) {
|
||||
// Clip mask for regions in this tile that already filled by a higher z tile
|
||||
@@ -349,7 +402,17 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
|
||||
context.clearRect(x, y, w, h);
|
||||
}
|
||||
}
|
||||
this.drawTileImage(tile, frameState, x, y, w, h, tileGutter, transition, layerState.opacity);
|
||||
this.drawTileImage(
|
||||
tile,
|
||||
frameState,
|
||||
x,
|
||||
y,
|
||||
w,
|
||||
h,
|
||||
tileGutter,
|
||||
transition,
|
||||
layerState.opacity
|
||||
);
|
||||
if (clips && !inTransition) {
|
||||
context.restore();
|
||||
}
|
||||
@@ -358,16 +421,24 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
this.renderedRevision = sourceRevision;
|
||||
this.renderedResolution = tileResolution;
|
||||
this.extentChanged = !this.renderedExtent_ || !equals(this.renderedExtent_, canvasExtent);
|
||||
this.extentChanged =
|
||||
!this.renderedExtent_ || !equals(this.renderedExtent_, canvasExtent);
|
||||
this.renderedExtent_ = canvasExtent;
|
||||
this.renderedPixelRatio = pixelRatio;
|
||||
this.renderedProjection = projection;
|
||||
|
||||
this.manageTilePyramid(frameState, tileSource, tileGrid, pixelRatio,
|
||||
projection, extent, z, tileLayer.getPreload());
|
||||
this.manageTilePyramid(
|
||||
frameState,
|
||||
tileSource,
|
||||
tileGrid,
|
||||
pixelRatio,
|
||||
projection,
|
||||
extent,
|
||||
z,
|
||||
tileLayer.getPreload()
|
||||
);
|
||||
this.scheduleExpireCache(frameState, tileSource);
|
||||
|
||||
this.postRender(context, frameState);
|
||||
@@ -407,8 +478,17 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
|
||||
this.context.save();
|
||||
this.context.globalAlpha = alpha;
|
||||
}
|
||||
this.context.drawImage(image, gutter, gutter,
|
||||
image.width - 2 * gutter, image.height - 2 * gutter, x, y, w, h);
|
||||
this.context.drawImage(
|
||||
image,
|
||||
gutter,
|
||||
gutter,
|
||||
image.width - 2 * gutter,
|
||||
image.height - 2 * gutter,
|
||||
x,
|
||||
y,
|
||||
w,
|
||||
h
|
||||
);
|
||||
|
||||
if (alphaChanged) {
|
||||
this.context.restore();
|
||||
@@ -450,11 +530,13 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
|
||||
* @param {import("../../PluggableMap.js").default} map Map.
|
||||
* @param {import("../../PluggableMap.js").FrameState} frameState Frame state.
|
||||
*/
|
||||
const postRenderFunction = function(tileSource, map, frameState) {
|
||||
const postRenderFunction = function (tileSource, map, frameState) {
|
||||
const tileSourceKey = getUid(tileSource);
|
||||
if (tileSourceKey in frameState.usedTiles) {
|
||||
tileSource.expireCache(frameState.viewState.projection,
|
||||
frameState.usedTiles[tileSourceKey]);
|
||||
tileSource.expireCache(
|
||||
frameState.viewState.projection,
|
||||
frameState.usedTiles[tileSourceKey]
|
||||
);
|
||||
}
|
||||
}.bind(null, tileSource);
|
||||
|
||||
@@ -526,8 +608,12 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
|
||||
if (tile.getState() == TileState.IDLE) {
|
||||
wantedTiles[tile.getKey()] = true;
|
||||
if (!tileQueue.isKeyQueued(tile.getKey())) {
|
||||
tileQueue.enqueue([tile, tileSourceKey,
|
||||
tileGrid.getTileCoordCenter(tile.tileCoord), tileResolution]);
|
||||
tileQueue.enqueue([
|
||||
tile,
|
||||
tileSourceKey,
|
||||
tileGrid.getTileCoordCenter(tile.tileCoord),
|
||||
tileResolution,
|
||||
]);
|
||||
}
|
||||
}
|
||||
if (opt_tileCallback !== undefined) {
|
||||
@@ -540,15 +626,12 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @function
|
||||
* @return {import("../../layer/Tile.js").default|import("../../layer/VectorTile.js").default}
|
||||
*/
|
||||
CanvasTileLayerRenderer.prototype.getLayer;
|
||||
|
||||
|
||||
export default CanvasTileLayerRenderer;
|
||||
|
||||
Reference in New Issue
Block a user