// 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 ../../core/colorUtils ../../core/fontUtils ../../core/lang ../../core/Logger ../../core/screenUtils ../../core/string ./CIMSymbolHelper ./defaultCIMValues ./enums ./OverrideHelper ./SDFHelper ./utils ./effects/CIMEffectHelper ../../views/2d/engine/webgl/definitions".split(" "),function(L,U,V,M,W,Q,X,Y,B,H,F,I,h,R,Z){function N(a){return a&&0===a.indexOf("Level_")&&(a=parseInt(a.substr(6),10),!isNaN(a))?a:0}function aa(a){var e=a.symbolLayers;if(!e||2!==e.length)return!1;a=e.find(c=> c.effects?.find(b=>"CIMGeometricEffectDashes"===b.type&&null!=b.dashTemplate));e=e.find(c=>c.effects?.find(b=>"CIMGeometricEffectAddControlPoints"===b.type));return!!a||!!e}function S(a){return M.clone(a).map(e=>({...e,propertyName:h.uncapitalize(e.propertyName)}))}class ba{constructor(a){this._cimLayers=[];this._poMap={};this._primitiveOverrides=[];a&&(this._resourceManager=a)}analyzeSymbolReference(a,e,c){this._cimLayers=c??[];if(!a)return this._cimLayers;this._reset();if(a.primitiveOverrides){this._primitiveOverrides= a.primitiveOverrides;for(const b of this._primitiveOverrides)(c=b.valueExpressionInfo)?this._setPoMap(b.primitiveName,b.propertyName,c):null!=b.value&&(c=b.value,b.propertyName.includes("Color")&&(U.isRGB(c)&&(c=h.colorToArray(c)),c=h.normalizeAlpha(c)),this._setPoMap(b.primitiveName,b.propertyName,c))}this._analyzeSymbol(a.symbol,e);return this._cimLayers}_reset(){this._cimLayers=[];this._poMap={};this._primitiveOverrides=[]}_analyzeSymbol(a,e){switch(a?.type){case "CIMPointSymbol":case "CIMLineSymbol":case "CIMPolygonSymbol":this._analyzeMultiLayerSymbol(a, e)}}_analyzeMultiLayerSymbol(a,e){const c=a?.symbolLayers;if(c){var b=a.effects,f=H.Alignment.SCREEN,g=h.getSize(a)??0;"CIMPointSymbol"===a.type&&"Map"===a.angleAlignment&&(f=H.Alignment.MAP);for(var l="CIMPolygonSymbol"===a.type,k=c.length;k--;){const n=c[k];if(!n||!1===n.enable)continue;let m;b?.length&&(m=[...b]);var d=n.effects;d?.length&&(b?m.push(...d):m=[...d]);d=null;if(m){d=[];for(const v of m){var p=F.OverrideHelper.findEffectOverrides(v,this._primitiveOverrides);p&&d.push(p)}}F.OverrideHelper.findApplicableOverrides(n, this._primitiveOverrides,[]);switch(n.type){case "CIMSolidFill":this._analyzeSolidFill(n,d);break;case "CIMPictureFill":this._analyzePictureFill(n,d);break;case "CIMHatchFill":this._analyzeHatchFill(n,d);break;case "CIMGradientFill":this._analyzeGradientFill(n,d);break;case "CIMSolidStroke":this._analyzeSolidStroke(n,d,l,g);break;case "CIMPictureStroke":this._analyzePictureStroke(n,d,l,g);break;case "CIMGradientStroke":this._analyzeGradientStroke(n,d,l,g);break;case "CIMCharacterMarker":case "CIMPictureMarker":case "CIMVectorMarker":if("CIMLineSymbol"=== a.type||"CIMPolygonSymbol"===a.type)f=(f=n.markerPlacement)&&f.angleToLine?H.Alignment.MAP:H.Alignment.SCREEN;p=[];var q=n.primitiveName;q&&p.push(q);q=l&&h.isCIMMarkerStrokePlacement(n.markerPlacement);this._analyzeMarker(n,d,null,p,f,g,e,[],!1,q);break;default:W.getLogger("esri.symbols.cim.cimAnalyzer").error("Cannot analyze CIM layer",n.type)}}}}_analyzeSolidFill(a,e){const {primitiveName:c,type:b}=a,f=h.normalizeAlpha(a.color);this._cimLayers.push({type:"fill",spriteRasterizationParam:null,colorLocked:!!a.colorLocked, color:this._getValueOrOverrideExpression(b,c,"Color",f),height:0,angle:0,offsetX:0,offsetY:0,scaleX:1,effects:e,applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!1})}_analyzePictureFill(a,e){const {primitiveName:c,type:b}=a,f=h.getTintColor(a),g=h.getNumericValue(a.height,B.defaultCIMValues.CIMPictureFill.height);let l=h.getNumericValue(a.scaleX,1);if("width"in a&&"number"===typeof a.width){var k=a.width;let d=1;const p=this._resourceManager.getResource(a.url);null!=p&&(d=p.width/ p.height);l/=g/k*d}k={type:"sprite-rasterization-param",resource:a,overrides:this._getPrimitiveMaterialOverrides(c,b)};this._cimLayers.push({type:"fill",spriteRasterizationParam:k,colorLocked:!!a.colorLocked,effects:e,color:this._getValueOrOverrideExpression(b,c,"TintColor",f),height:this._getValueOrOverrideExpression(b,c,"Height",g),scaleX:this._getValueOrOverrideExpression(b,c,"ScaleX",l),angle:this._getValueOrOverrideExpression(b,c,"Rotation",h.getNumericValue(a.rotation)),offsetX:this._getValueOrOverrideExpression(b, c,"OffsetX",h.getNumericValue(a.offsetX)),offsetY:this._getValueOrOverrideExpression(b,c,"OffsetY",h.getNumericValue(a.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!1,hasUnresolvedReplacementColor:!1})}_analyzeHatchFill(a,e){const {primitiveName:c,type:b}=a;var f=this._analyzeMaterialOverrides(c,["Rotation","OffsetX","OffsetY"]);f=h.normalizePrimitiveOverrideProps(f);let g=[255,255,255,1],l=!1;if(a.lineSymbol?.symbolLayers)for(const d of a.lineSymbol.symbolLayers){if("CIMSolidStroke"!==d.type)continue; const p=d.primitiveName??c;l||!p||d.colorLocked||null==this._poMap[p]?.Color&&null==this._poMap[p]?.StrokeColor||(g=h.normalizeAlpha(d.color),g=this._maybeGetValueOrOverrideExpression(p,"StrokeColor")??this._getValueOrOverrideExpression(b,p,"Color",g),l=!0);var k=this._maybeGetValueOrOverrideExpression(p,"StrokeWidth");if(k){let q=null,n=null;"number"===typeof k?q=k:n=k.valueExpressionInfo;(k=f.find(m=>"strokeWidth"===m.propertyName))?k.propertyName="width":(k={type:"CIMPrimitiveOverride",primitiveName:p, propertyName:"width",valueExpressionInfo:n,value:q,defaultValue:h.getDefaultCIMValue(b,"width")},f.push(k))}}this._cimLayers.push({type:"fill",spriteRasterizationParam:{type:"sprite-rasterization-param",resource:a,overrides:f},colorLocked:!!a.colorLocked,effects:e,color:g,height:this._getValueOrOverrideExpression(b,c,"Separation",h.getNumericValue(a.separation,B.defaultCIMValues.CIMHatchFill.separation)),scaleX:1,angle:this._getValueOrOverrideExpression(b,c,"Rotation",h.getNumericValue(a.rotation)), offsetX:this._getValueOrOverrideExpression(b,c,"OffsetX",h.getNumericValue(a.offsetX)),offsetY:this._getValueOrOverrideExpression(b,c,"OffsetY",h.getNumericValue(a.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!l})}_analyzeGradientFill(a,e){this._cimLayers.push({type:"fill",spriteRasterizationParam:null,colorLocked:!!a.colorLocked,effects:e,color:[128,128,128,1],height:0,angle:0,offsetX:0,offsetY:0,scaleX:1,applyRandomOffset:!1,sampleAlphaOnly:!1,hasUnresolvedReplacementColor:!1})}_analyzeSolidStroke(a, e,c,b){const {primitiveName:f,type:g}=a,l=h.normalizeAlpha(a.color),k=h.getNumericValue(a.width,B.defaultCIMValues.CIMSolidStroke.width),d=h.getEnum(a.capStyle,B.defaultCIMValues.CIMSolidStroke.capstyle),p=h.getEnum(a.joinStyle,B.defaultCIMValues.CIMSolidStroke.joinstyle),q=a.miterLimit;let n=[];this._analyzePrimitiveOverrides(f,e,null,null)&&(n=this._getPrimitiveMaterialOverrides(f,g));let m,v;if(e&&Array.isArray(e)&&0b.primitiveName=== a));c.forEach(b=>b.defaultValue=h.getDefaultCIMValue(e,b.propertyName.toLowerCase()));return c}_analyzeMaterialOverrides(a,e){return this._primitiveOverrides.filter(c=>c.primitiveName!==a||!e.includes(c.propertyName))}}L.CIMAnalyzer=ba;L.analyzeCIMResource=function(a,e){if(!e||0===e.length)return a;a=M.clone(a);F.OverrideHelper.applyOverrides(a,e);return a};Object.defineProperty(L,Symbol.toStringTag,{value:"Module"})});