From 719abf726500dcdfe521477d89d07f373b29b55e Mon Sep 17 00:00:00 2001 From: gkresic Date: Mon, 24 Jul 2017 12:34:53 +0200 Subject: [PATCH 1/2] Support for lineDashOffset --- src/ol/render/canvas/immediate.js | 6 ++++++ src/ol/style/regularshape.js | 6 ++++++ src/ol/typedefs.js | 1 + 3 files changed, 13 insertions(+) diff --git a/src/ol/render/canvas/immediate.js b/src/ol/render/canvas/immediate.js index bcf72367f7..a54503a9a6 100644 --- a/src/ol/render/canvas/immediate.js +++ b/src/ol/render/canvas/immediate.js @@ -735,6 +735,7 @@ ol.render.canvas.Immediate.prototype.setContextStrokeState_ = function(strokeSta context.lineCap = strokeState.lineCap; if (ol.has.CANVAS_LINE_DASH) { context.setLineDash(strokeState.lineDash); + context.lineDashOffset = strokeState.lineDashOffset; } context.lineJoin = strokeState.lineJoin; context.lineWidth = strokeState.lineWidth; @@ -743,6 +744,7 @@ ol.render.canvas.Immediate.prototype.setContextStrokeState_ = function(strokeSta this.contextStrokeState_ = { lineCap: strokeState.lineCap, lineDash: strokeState.lineDash, + lineDashOffset: strokeState.lineDashOffset, lineJoin: strokeState.lineJoin, lineWidth: strokeState.lineWidth, miterLimit: strokeState.miterLimit, @@ -757,6 +759,10 @@ ol.render.canvas.Immediate.prototype.setContextStrokeState_ = function(strokeSta contextStrokeState.lineDash, strokeState.lineDash)) { context.setLineDash(contextStrokeState.lineDash = strokeState.lineDash); } + if (contextStrokeState.lineDashOffset != strokeState.lineDashOffset) { + contextStrokeState.lineDashOffset = context.lineDashOffset = + strokeState.lineDashOffset; + } } if (contextStrokeState.lineJoin != strokeState.lineJoin) { contextStrokeState.lineJoin = context.lineJoin = strokeState.lineJoin; diff --git a/src/ol/style/regularshape.js b/src/ol/style/regularshape.js index 4a992a4daa..08f0a80e36 100644 --- a/src/ol/style/regularshape.js +++ b/src/ol/style/regularshape.js @@ -317,6 +317,7 @@ ol.style.RegularShape.prototype.render_ = function(atlasManager) { var lineJoin = ''; var miterLimit = 0; var lineDash = null; + var lineDashOffset = 0; var strokeStyle; var strokeWidth = 0; @@ -331,8 +332,10 @@ ol.style.RegularShape.prototype.render_ = function(atlasManager) { strokeWidth = ol.render.canvas.defaultLineWidth; } lineDash = this.stroke_.getLineDash(); + lineDashOffset = this.stroke_.getLineDashOffset(); if (!ol.has.CANVAS_LINE_DASH) { lineDash = null; + lineDashOffset = 0; } lineJoin = this.stroke_.getLineJoin(); if (lineJoin === undefined) { @@ -357,6 +360,7 @@ ol.style.RegularShape.prototype.render_ = function(atlasManager) { size: size, lineCap: lineCap, lineDash: lineDash, + lineDashOffset: lineDashOffset, lineJoin: lineJoin, miterLimit: miterLimit }; @@ -460,6 +464,7 @@ ol.style.RegularShape.prototype.draw_ = function(renderOptions, context, x, y) { context.lineWidth = renderOptions.strokeWidth; if (renderOptions.lineDash) { context.setLineDash(renderOptions.lineDash); + context.lineDashOffset = renderOptions.lineDashOffset; } context.lineCap = renderOptions.lineCap; context.lineJoin = renderOptions.lineJoin; @@ -533,6 +538,7 @@ ol.style.RegularShape.prototype.drawHitDetectionCanvas_ = function(renderOptions context.lineWidth = renderOptions.strokeWidth; if (renderOptions.lineDash) { context.setLineDash(renderOptions.lineDash); + context.lineDashOffset = renderOptions.lineDashOffset; } context.stroke(); } diff --git a/src/ol/typedefs.js b/src/ol/typedefs.js index 8581394c33..d9300c5912 100644 --- a/src/ol/typedefs.js +++ b/src/ol/typedefs.js @@ -79,6 +79,7 @@ ol.CanvasFunctionType; /** * @typedef {{lineCap: string, * lineDash: Array., + * lineDashOffset: number, * lineJoin: string, * lineWidth: number, * miterLimit: number, From dd914ef6350f6a27bf04f7581b8ca9e3e977b418 Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Mon, 24 Jul 2017 18:36:08 +0200 Subject: [PATCH 2/2] Add rendering tests --- .../ol/expected/render-polygon-linedash.png | Bin 0 -> 396 bytes .../render-polygon-linedashoffset.png | Bin 0 -> 403 bytes test_rendering/spec/ol/render.test.js | 43 ++++++++++++++++++ .../expected/regularshape-canvas-linedash.png | Bin 0 -> 819 bytes .../regularshape-canvas-linedashoffset.png | Bin 0 -> 831 bytes .../spec/ol/style/regularshape.test.js | 17 +++++++ 6 files changed, 60 insertions(+) create mode 100644 test_rendering/spec/ol/expected/render-polygon-linedash.png create mode 100644 test_rendering/spec/ol/expected/render-polygon-linedashoffset.png create mode 100644 test_rendering/spec/ol/style/expected/regularshape-canvas-linedash.png create mode 100644 test_rendering/spec/ol/style/expected/regularshape-canvas-linedashoffset.png diff --git a/test_rendering/spec/ol/expected/render-polygon-linedash.png b/test_rendering/spec/ol/expected/render-polygon-linedash.png new file mode 100644 index 0000000000000000000000000000000000000000..73ca5f7402c8ba8e22c52063cc4a16006070ec35 GIT binary patch literal 396 zcmeAS@N?(olHy`uVBq!ia0vp^DImh3#XnvAJqRM8cd%#(q_ zOH|#@zFM+uf*2R);t2+(t!vIGuCG}8@6FyTBAbMsTwMJ-J$`k){vGerk5YC{u$_Nu z*7BNGr$ZVlKHiGYCfuwS2(w%N?Dkb5pfNCWXEDQ(HGh{@NO;d=1Zo9?2RVAipZERP*|Prc&+_FZ zb7!8PSsDA|&Mrgk*Z-2=9zV0^?=!X~JN?`}yxn~f_;}2+HQhaV zTHmY*2)uT})#MLz7k>+7Gy2~DZhqyJeyZAew^lUOaJKFHEShL qtW|Db65myw^7eF<87y=dIQKFB^FQe+(p32$BiB|blvE4bXbf1QU?G?m1v*+VK^D3*6Cnv~RVr=_OcFOLwFwH^ z3_-bYt001_2qeXwU@uU)Zc&Tp3^QEsb^ibVJ?F~E{lekQ+;h(JoF8+}bD#4JeP#!P zSW>YK7Vtlu`jvR58$-MCSH(7tTUgMILk!_*Jc}`Wif{0XF2&U0A1rRTb`US&Bb>&M z_#9v0h!C@?j=>>((r`0XgbazJIE3XbW1Ddjui+IuAq1YnXLUETIBlp2orFAwrPzWu zaTX`=Mw_|wP2CMb%t`EO`Fuul3z>rhIEU}>6+XaQ6>V+$`7k4A1314Dk3B!v-?$j&B)Q@JB zSy#g7185hTYlqvJIHy|n`=^GNGBI7uGI2i^bz$#5=BoA{$>DTT%s4J!QwEz4jd79A zoEM4atmajGD6-~RPu0Y-Pdl#4mzqrH=K?l6vKH5|w}9>c3fSz(C48Iu-1JPy3h`yQ zJoPIw+wYl>gQ83$^#?QC@0pOx;-MtCh^U`>Zw?t7P?};PxASUpB246*me2;zU=K)b!zmxjOqqHy0>y~0d=9R^cM9 z;q}yCOrMY7-32ATIMtywG9J2KzS;Zq>C>n8{10!wsp$IrzG?sf002ovPDHLkV1lSUk+=W= literal 0 HcmV?d00001 diff --git a/test_rendering/spec/ol/style/expected/regularshape-canvas-linedashoffset.png b/test_rendering/spec/ol/style/expected/regularshape-canvas-linedashoffset.png new file mode 100644 index 0000000000000000000000000000000000000000..3723123e3d2052c5439767c69ab93889115142d2 GIT binary patch literal 831 zcmV-F1Hk-=P)_Z1-6NT z+SH9>OoRgG8T3Ksg5*@Dg9RDUJe*I@$pVKeq%KX%}I++W4f z8eGmC#N}jPmAi1a82H;bi*N8QPGJ{L3;cqcrs?ZTH<`qoW8(MSB3NcSrw41{1IUP>mc#h!!m4@D`SjdLT_u>)ZHWvj)FuChQiu z(1OpN%wZ94w%~iQ1)n{61SiEQN7D>d2(bt*h^=dr3|$C(Dne$Hj6}#2VnuF}#)Ndl zrhg`thw)e{&)`@e+i5)1Wjn3ZZljz_qE=5!VKFX-&v- z