@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 1.39 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.32/esri/copyright.txt for details.
*/
import{GeometryCursor as t}from"../../../geometry/GeometryCursor.js";import{PathEffectCursor as i}from"../CIMCursor.js";import{CurveHelper as s}from"../CurveHelper.js";class e{static local(){return null===e.instance&&(e.instance=new e),e.instance}execute(t,i,s,e,o){return new n(t,i,s)}}e.instance=null;class n extends i{constructor(t,i,e){super(t,!1,!0),this._curveHelper=new s,this._length=(void 0!==i.length?i.length:20)*e,this._angle=void 0!==i.angle?i.angle:225,this._position=void 0!==i.position?i.position:50,this._length<0&&(this._length=-this._length),this._position<20&&(this._position=20),this._position>80&&(this._position=80),this._mirror=!1}processPath(i){const s=t.createEmptyOptimizedCIM("esriGeometryPolyline");if(this._curveHelper.isEmpty(i))return null;i.seekInPath(0);const e=i.x,n=i.y;i.seekInPath(i.pathSize-1);const o=i.x,r=i.y,h=[o-e,r-n];this._curveHelper.normalize(h);const l=e+(o-e)*this._position/100,_=n+(r-n)*this._position/100,a=Math.cos((90-this._angle)/180*Math.PI);let p=Math.sin((90-this._angle)/180*Math.PI);this._mirror&&(p=-p),this._mirror=!this._mirror;const c=[l-this._length/2*a,_-this._length/2*p],m=[l+this._length/2*a,_+this._length/2*p];return s.pushPath([[e,n],c,m,[o,r]]),s}}export{e as EffectJog};