// All material copyright Esri, All Rights Reserved, unless otherwise specified. // See https://js.arcgis.com/4.30/esri/copyright.txt for details. //>>built define(["exports","../../Color","../cim/utils"],function(g,k,f){function n(a){a=f.toCIMSymbolJSON(a);if("CIMTextSymbol"===a?.type)return a.height??0;let b=0;if(a?.symbolLayers)for(const e of a.symbolLayers)f.isCIMMarker(e)&&null!=e.size&&e.size>b?b=e.size:f.isCIMStroke(e)&&null!=e.width&&e.width>b?b=e.width:f.isCIMFill(e);return b}function h(a,b,e,d){if(a)if("CIMTextSymbol"===a.type)null!=a.height&&(a.height*=b);else{if(e&&a.effects)for(const c of a.effects)r(c,b);if(a.symbolLayers)for(const c of a.symbolLayers)switch(c.type){case "CIMPictureMarker":case "CIMVectorMarker":p(c, b,d);break;case "CIMPictureStroke":case "CIMSolidStroke":!d?.preserveOutlineWidth&&c.width&&(c.width*=b);break;case "CIMPictureFill":c.height&&(c.height*=b);c.offsetX&&(c.offsetX*=b);c.offsetY&&(c.offsetY*=b);break;case "CIMHatchFill":h(c.lineSymbol,b,!0,{...d,preserveOutlineWidth:!1}),c.offsetX&&(c.offsetX*=b),c.offsetY&&(c.offsetY*=b),c.separation&&(c.separation*=b)}}}function p(a,b,e){if(a&&(a.markerPlacement&&t(a.markerPlacement,b),a.offsetX&&(a.offsetX*=b),a.offsetY&&(a.offsetY*=b),a.anchorPoint&& "Absolute"===a.anchorPointUnits&&(a.anchorPoint={x:a.anchorPoint.x*b,y:a.anchorPoint.y*b}),a.size=null!=a.size?a.size*b:0,"CIMVectorMarker"===a.type&&a.markerGraphics))for(const d of a.markerGraphics)a.scaleSymbolsProportionally||h(d.symbol,b,!0,e)}function t(a,b){f.isCIMMarkerStrokePlacement(a)&&a.offset&&(a.offset*=b);switch(a.type){case "CIMMarkerPlacementAlongLineRandomSize":case "CIMMarkerPlacementAlongLineSameSize":a.customEndingOffset&&(a.customEndingOffset*=b);a.offsetAlongLine&&(a.offsetAlongLine*= b);if(a.placementTemplate&&a.placementTemplate.length){var e=a.placementTemplate.map(d=>d*b);a.placementTemplate=e}break;case "CIMMarkerPlacementAlongLineVariableSize":a.maxRandomOffset&&(a.maxRandomOffset*=b);a.placementTemplate&&a.placementTemplate.length&&(e=a.placementTemplate.map(d=>d*b),a.placementTemplate=e);break;case "CIMMarkerPlacementOnLine":a.startPointOffset&&(a.startPointOffset*=b);break;case "CIMMarkerPlacementAtExtremities":a.offsetAlongLine&&(a.offsetAlongLine*=b);break;case "CIMMarkerPlacementAtRatioPositions":a.beginPosition&& (a.beginPosition*=b);a.endPosition&&(a.endPosition*=b);break;case "CIMMarkerPlacementPolygonCenter":a.offsetX&&(a.offsetX*=b);a.offsetY&&(a.offsetY*=b);break;case "CIMMarkerPlacementInsidePolygon":a.offsetX&&(a.offsetX*=b),a.offsetY&&(a.offsetY*=b),a.stepX&&(a.stepX*=b),a.stepY&&(a.stepY*=b)}}function r(a,b){switch(a.type){case "CIMGeometricEffectArrow":case "CIMGeometricEffectDonut":a.width&&(a.width*=b);break;case "CIMGeometricEffectBuffer":a.size&&(a.size*=b);break;case "CIMGeometricEffectCut":a.beginCut&& (a.beginCut*=b);a.endCut&&(a.endCut*=b);a.middleCut&&(a.middleCut*=b);break;case "CIMGeometricEffectDashes":a.customEndingOffset&&(a.customEndingOffset*=b);a.offsetAlongLine&&(a.offsetAlongLine*=b);if(a.dashTemplate&&a.dashTemplate.length){const e=a.dashTemplate.map(d=>d*b);a.dashTemplate=e}break;case "CIMGeometricEffectExtension":case "CIMGeometricEffectJog":case "CIMGeometricEffectRadial":a.length&&(a.length*=b);break;case "CIMGeometricEffectMove":a.offsetX&&(a.offsetX*=b);a.offsetY&&(a.offsetY*= b);break;case "CIMGeometricEffectOffset":case "CIMGeometricEffectOffsetTangent":a.offset&&(a.offset*=b);break;case "CIMGeometricEffectRegularPolygon":a.radius&&(a.radius*=b);break;case "CIMGeometricEffectTaperedPolygon":a.fromWidth&&(a.fromWidth*=b);a.length&&(a.length*=b);a.toWidth&&(a.toWidth*=b);break;case "CIMGeometricEffectWave":a.amplitude&&(a.amplitude*=b),a.period&&(a.period*=b)}}function l(a,b){if(a){var e="CIMTextSymbol"===a.type?a.symbol:a;a="CIMPolygonSymbol"===a.type;if(e?.symbolLayers)for(const d of e.symbolLayers)if(!(d.colorLocked|| a&&(f.isCIMStroke(d)||f.isCIMMarker(d)&&d.markerPlacement&&f.isCIMMarkerStrokePlacement(d.markerPlacement))))switch(d.type){case "CIMPictureMarker":case "CIMPictureStroke":case "CIMPictureFill":d.tintColor&&q(b,d.tintColor);break;case "CIMVectorMarker":d.markerGraphics?.forEach(c=>{l(c.symbol,b)});break;case "CIMSolidStroke":case "CIMSolidFill":q(b,d.color);break;case "CIMHatchFill":l(d.lineSymbol,b)}}}function q(a,b){for(const e of a)if(e.join(".")===b.join("."))return;a.push(b)}function m(a,b,e){if(a){var d= "CIMTextSymbol"===a.type?a.symbol:a;a="CIMPolygonSymbol"===d?.type;if(d?.symbolLayers)for(const c of d.symbolLayers)if(!c.colorLocked){if(a)if(e){if({layersToColor:d}=e,(f.isCIMStroke(c)||f.isCIMMarker(c)&&c.markerPlacement&&f.isCIMMarkerStrokePlacement(c.markerPlacement))&&"fill"===d||f.isCIMFill(c)&&"outline"===d)continue}else if(f.isCIMStroke(c)||f.isCIMMarker(c)&&c.markerPlacement&&f.isCIMMarkerStrokePlacement(c.markerPlacement))continue;d=b.toArray();switch(c.type){case "CIMPictureMarker":case "CIMPictureStroke":case "CIMPictureFill":c.tintColor= d;break;case "CIMVectorMarker":c.markerGraphics?.forEach(u=>{m(u.symbol,b,e)});break;case "CIMSolidStroke":case "CIMSolidFill":c.color=d;break;case "CIMHatchFill":m(c.lineSymbol,b,e)}}}}g.applyCIMSymbolColor=function(a,b,e){b instanceof k||(b=new k(b));(a=f.toCIMSymbolJSON(a))&&m(a,b,e)};g.applyCIMSymbolRotation=function(a,b,e=!1){a=f.toCIMSymbolJSON(a);e&&(b=360-b);if("CIMTextSymbol"===a?.type)a.angle=b;else if("CIMPointSymbol"===a?.type&&a.symbolLayers){e=b-(a.angle||0);for(const d of a.symbolLayers)if(f.isCIMMarker(d)){let c= d.rotation||0;c=d.rotateClockwise?c-e:c+e;d.rotation=c}a.angle=b}};g.getCIMSymbolColor=function(a){a=f.toCIMSymbolJSON(a);const b=[];l(a,b);return b.length?new k(f.normalizeAlpha(b[0])):null};g.getCIMSymbolRotation=function(a,b=!1){a=f.toCIMSymbolJSON(a);return"CIMTextSymbol"===a?.type||"CIMPointSymbol"===a?.type?(a=a.angle,null!=a&&b?360-a:a??0):0};g.getCIMSymbolSize=n;g.getCIMSymbolType=function(a){a=f.toCIMSymbolJSON(a);if(!a)return null;switch(a.type){case "CIMPointSymbol":return"CIMPointSymbol"; case "CIMLineSymbol":return"CIMLineSymbol";case "CIMPolygonSymbol":return"CIMPolygonSymbol";case "CIMTextSymbol":return"CIMTextSymbol";case "CIMMeshSymbol":return"CIMMeshSymbol";default:return null}};g.scaleCIMMarker=p;g.scaleCIMSymbol=h;g.scaleCIMSymbolTo=function(a,b,e){if(a){var d=f.toCIMSymbolJSON(a);a=n(a);if(0===a){if(d)if("CIMTextSymbol"===d.type)d.height=b;else if(d.symbolLayers)for(const c of d.symbolLayers)switch(c.type){case "CIMPictureMarker":case "CIMVectorMarker":c.size=b;break;case "CIMPictureStroke":case "CIMSolidStroke":c.width= b}}else h(d,b/a,!1,e)}};Object.defineProperty(g,Symbol.toStringTag,{value:"Module"})});