From b3520f821712909c943fafd8cdc94254ccee432b Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Fri, 7 Dec 2018 13:13:39 +0100 Subject: [PATCH] Remove CANVAS_LINE_DASH from ol/has Test if `context.setLineDash` is defined instead. --- src/ol/has.js | 15 --------------- src/ol/render/canvas/Executor.js | 5 ++--- src/ol/render/canvas/Immediate.js | 5 ++--- src/ol/style/RegularShape.js | 7 +------ 4 files changed, 5 insertions(+), 27 deletions(-) diff --git a/src/ol/has.js b/src/ol/has.js index 117cdbe3cb..9902b52940 100644 --- a/src/ol/has.js +++ b/src/ol/has.js @@ -40,21 +40,6 @@ export const MAC = ua.indexOf('macintosh') !== -1; export const DEVICE_PIXEL_RATIO = window.devicePixelRatio || 1; -/** - * True if the browser's Canvas implementation implements {get,set}LineDash. - * @type {boolean} - */ -export const CANVAS_LINE_DASH = function() { - let has = false; - try { - has = !!document.createElement('canvas').getContext('2d').setLineDash; - } catch (e) { - // pass - } - return has; -}(); - - /** * Is HTML5 geolocation supported in the current browser? * @const diff --git a/src/ol/render/canvas/Executor.js b/src/ol/render/canvas/Executor.js index 4742841f09..c046da4510 100644 --- a/src/ol/render/canvas/Executor.js +++ b/src/ol/render/canvas/Executor.js @@ -8,7 +8,6 @@ import {createEmpty, createOrUpdate, import {lineStringLength} from '../../geom/flat/length.js'; import {drawTextOnPath} from '../../geom/flat/textpath.js'; import {transform2D} from '../../geom/flat/transform.js'; -import {CANVAS_LINE_DASH} from '../../has.js'; import {isEmpty} from '../../obj.js'; import {drawImage, resetTransform, defaultPadding, defaultTextBaseline} from '../canvas.js'; import CanvasInstruction from './Instruction.js'; @@ -199,7 +198,7 @@ class Executor { context.lineCap = /** @type {CanvasLineCap} */ (strokeState.lineCap); context.lineJoin = /** @type {CanvasLineJoin} */ (strokeState.lineJoin); context.miterLimit = strokeState.miterLimit; - if (CANVAS_LINE_DASH && strokeState.lineDash.length) { + if (context.setLineDash && strokeState.lineDash.length) { context.setLineDash(strokeState.lineDash); context.lineDashOffset = strokeState.lineDashOffset; } @@ -395,7 +394,7 @@ class Executor { context.lineCap = /** @type {CanvasLineCap} */ (instruction[3]); context.lineJoin = /** @type {CanvasLineJoin} */ (instruction[4]); context.miterLimit = /** @type {number} */ (instruction[5]); - if (CANVAS_LINE_DASH) { + if (context.setLineDash) { context.lineDashOffset = /** @type {number} */ (instruction[7]); context.setLineDash(/** @type {Array} */ (instruction[6])); } diff --git a/src/ol/render/canvas/Immediate.js b/src/ol/render/canvas/Immediate.js index f38d3fca00..b87f972234 100644 --- a/src/ol/render/canvas/Immediate.js +++ b/src/ol/render/canvas/Immediate.js @@ -11,7 +11,6 @@ import {intersects} from '../../extent.js'; import GeometryType from '../../geom/GeometryType.js'; import {transformGeom2D} from '../../geom/SimpleGeometry.js'; import {transform2D} from '../../geom/flat/transform.js'; -import {CANVAS_LINE_DASH} from '../../has.js'; import VectorContext from '../VectorContext.js'; import {defaultTextAlign, defaultFillStyle, defaultLineCap, defaultLineDash, defaultLineDashOffset, defaultLineJoin, defaultLineWidth, defaultMiterLimit, defaultStrokeStyle, defaultTextBaseline, defaultFont} from '../canvas.js'; import {create as createTransform, compose as composeTransform} from '../../transform.js'; @@ -694,7 +693,7 @@ class CanvasImmediateRenderer extends VectorContext { const contextStrokeState = this.contextStrokeState_; if (!contextStrokeState) { context.lineCap = /** @type {CanvasLineCap} */ (strokeState.lineCap); - if (CANVAS_LINE_DASH) { + if (context.setLineDash) { context.setLineDash(strokeState.lineDash); context.lineDashOffset = strokeState.lineDashOffset; } @@ -715,7 +714,7 @@ class CanvasImmediateRenderer extends VectorContext { if (contextStrokeState.lineCap != strokeState.lineCap) { contextStrokeState.lineCap = context.lineCap = /** @type {CanvasLineCap} */ (strokeState.lineCap); } - if (CANVAS_LINE_DASH) { + if (context.setLineDash) { if (!equals(contextStrokeState.lineDash, strokeState.lineDash)) { context.setLineDash(contextStrokeState.lineDash = strokeState.lineDash); } diff --git a/src/ol/style/RegularShape.js b/src/ol/style/RegularShape.js index de342a524d..b519307d19 100644 --- a/src/ol/style/RegularShape.js +++ b/src/ol/style/RegularShape.js @@ -5,7 +5,6 @@ import {asString} from '../color.js'; import {asColorLike} from '../colorlike.js'; import {createCanvasContext2D} from '../dom.js'; -import {CANVAS_LINE_DASH} from '../has.js'; import ImageState from '../ImageState.js'; import {defaultStrokeStyle, defaultFillStyle, defaultLineCap, defaultLineWidth, defaultLineJoin, defaultMiterLimit} from '../render/canvas.js'; import ImageStyle from './Image.js'; @@ -342,10 +341,6 @@ class RegularShape extends ImageStyle { } lineDash = this.stroke_.getLineDash(); lineDashOffset = this.stroke_.getLineDashOffset(); - if (!CANVAS_LINE_DASH) { - lineDash = null; - lineDashOffset = 0; - } lineJoin = this.stroke_.getLineJoin(); if (lineJoin === undefined) { lineJoin = defaultLineJoin; @@ -470,7 +465,7 @@ class RegularShape extends ImageStyle { if (this.stroke_) { context.strokeStyle = renderOptions.strokeStyle; context.lineWidth = renderOptions.strokeWidth; - if (renderOptions.lineDash) { + if (context.setLineDash && renderOptions.lineDash) { context.setLineDash(renderOptions.lineDash); context.lineDashOffset = renderOptions.lineDashOffset; }