Introduce Instruction executors

Executors are use to render instructions.
They do not contain cod for building instructions.

Signed-off-by: Guillaume Beraudo <guillaume.beraudo@camptocamp.com>
This commit is contained in:
Guillaume Beraudo
2018-11-13 16:26:29 +01:00
parent ecf79a9ec2
commit fcf470fc8d
6 changed files with 1865 additions and 24 deletions

View File

@@ -11,6 +11,7 @@ import {buffer, createEmpty, containsExtent, getWidth} from '../../extent.js';
import RenderEventType from '../../render/EventType.js';
import {labelCache, rotateAtOffset} from '../../render/canvas.js';
import CanvasReplayGroup from '../../render/canvas/ReplayGroup.js';
import InstructionsGroupExecutor from '../../render/canvas/InstructionsGroupExecutor.js';
import CanvasLayerRenderer from './Layer.js';
import {defaultOrder as defaultRenderOrder, getTolerance as getRenderTolerance, getSquaredTolerance as getSquaredRenderTolerance, renderFeature} from '../vector.js';
@@ -66,7 +67,7 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
/**
* @private
* @type {import("../../render/canvas/ReplayGroup.js").default}
* @type {import("../../render/canvas/InstructionsGroupExecutor").default}
*/
this.replayGroup_ = null;
@@ -482,7 +483,7 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
}
const replayGroupInstructions = replayGroup.finish();
const renderingReplayGroup = new CanvasReplayGroup(
const renderingReplayGroup = new InstructionsGroupExecutor(
getRenderTolerance(resolution, pixelRatio), extent, resolution,
pixelRatio, vectorSource.getOverlaps(), this.declutterTree_, vectorLayer.getRenderBuffer());
renderingReplayGroup.replaceInstructions(replayGroupInstructions);

View File

@@ -24,6 +24,7 @@ import {
scale as scaleTransform,
translate as translateTransform
} from '../../transform.js';
import InstructionsGroupExectuor from '../../render/canvas/InstructionsGroupExecutor.js';
/**
@@ -227,7 +228,7 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer {
}
}
const replayGroupInstructions = replayGroup.finish();
const renderingReplayGroup = new CanvasReplayGroup(0, sharedExtent, resolution,
const renderingReplayGroup = new InstructionsGroupExectuor(0, sharedExtent, resolution,
pixelRatio, source.getOverlaps(), this.declutterTree_, layer.getRenderBuffer());
renderingReplayGroup.replaceInstructions(replayGroupInstructions);
sourceTile.setReplayGroup(layer, tile.tileCoord.toString(), renderingReplayGroup);