@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 1.3 kB
JavaScript
import{PathGeometryCursor as e}from"../CIMCursor.js";import{CurveHelper as t}from"../CurveHelper.js";class u{static local(){return null===u.instance&&(u.instance=new u),u.instance}execute(e,t,u,i,r){return new s(e,t,u)}}u.instance=null;class s extends e{constructor(e,u,s){super(e,!0,!0),this._curveHelper=new t,this._beginCut=(void 0!==u.beginCut?u.beginCut:1)*s,this._endCut=(void 0!==u.endCut?u.endCut:1)*s,this._middleCut=(void 0!==u.middleCut?u.middleCut:0)*s,this._invert=void 0!==u.invert&&u.invert,this._beginCut<0&&(this._beginCut=0),this._endCut<0&&(this._endCut=0),this._middleCut<0&&(this._middleCut=0)}processPath(e){const t=this._beginCut,u=this._endCut,s=this._middleCut,i=this._curveHelper.calculatePathLength(e),r=[];if(this._invert)if(0===t&&0===u&&0===s);else if(t+u+s>=i)r.push(e);else{let n=this._curveHelper.getSubCurve(e,0,t);n&&r.push(n),n=this._curveHelper.getSubCurve(e,.5*(i-s),.5*(i+s)),n&&r.push(n),n=this._curveHelper.getSubCurve(e,i-u,u),n&&r.push(n)}else if(0===t&&0===u&&0===s)r.push(e);else if(t+u+s>=i);else if(0===s){const s=this._curveHelper.getSubCurve(e,t,i-u);s&&r.push(s)}else{let n=this._curveHelper.getSubCurve(e,t,.5*(i-s));n&&r.push(n),n=this._curveHelper.getSubCurve(e,.5*(i+s),i-u),n&&r.push(n)}return 0===r.length?null:{paths:r}}}export{u as EffectCut};