/* COPYRIGHT Esri - https://js.arcgis.com/5.0.18/LICENSE.txt */
import{__decorate as t}from"tslib";import{property as e,subclass as r}from"../../../core/accessorSupport/decorators.js";import s from"./BaseRasterFunction.js";import o from"./CurvatureFunctionArguments.js";import{gcsFactor as i,curvature as n}from"./surfaceUtils.js";let u=class extends s{constructor(){super(...arguments),this.functionName="Curvature",this.functionArguments=null,this.rasterArgumentNames=["raster"],this.isGCS=!1}_bindSourceRasters(){this.outputPixelType=this._getOutputPixelType("f32");const t=this.sourceRasterInfos[0].clone();return t.pixelType=this.outputPixelType,t.bandCount=1,this._removeStatsHistColormapVAT(t),this.rasterInfo=t,this.isGCS=t.spatialReference?.isGeographic??!1,{success:!0,supportsGPU:!0}}_processPixels(t){const e=t.pixelBlocks?.[0];if(null==e)return null;const{zFactor:r,curvatureType:s}=this.functionArguments,{extent:o,primaryPixelSizes:u}=t,a=u?.[0],c=a??(o?{x:o.width/e.width,y:o.height/e.height}:{x:1,y:1}),p=this.isGCS&&r>=1?r*i:r;return n(e,{zFactor:p,curvatureType:s,resolution:c})}_getWebGLParameters(){const{zFactor:t,curvatureType:e}=this.functionArguments;return{curvatureType:e,zFactor:this.isGCS&&t>=1?t*i:t}}};t([e({json:{write:!0,name:"rasterFunction"}})],u.prototype,"functionName",void 0),t([e({type:o,json:{write:!0,name:"rasterFunctionArguments"}})],u.prototype,"functionArguments",void 0),t([e()],u.prototype,"rasterArgumentNames",void 0),t([e({json:{write:!0}})],u.prototype,"isGCS",void 0),u=t([r("esri.layers.raster.functions.CurvatureFunction")],u);const a=u;export{a as default};
