@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
3 lines (2 loc) • 6.13 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */
import{clone as t}from"../../core/lang.js";function e(t,e,i=32774,n=[0,0,0,0]){return{srcRgb:t,srcAlpha:t,dstRgb:e,dstAlpha:e,opRgb:i,opAlpha:i,color:{r:n[0],g:n[1],b:n[2],a:n[3]}}}function i(t,e,i,n,s=32774,l=32774,r=[0,0,0,0]){return{srcRgb:t,srcAlpha:e,dstRgb:i,dstAlpha:n,opRgb:s,opAlpha:l,color:{r:r[0],g:r[1],b:r[2],a:r[3]}}}const n=e(0,771),s=e(1,0),l=e(1,1),r=e(1,771),a=i(770,1,771,771),h=i(0,0,768,1),o={face:1029,mode:2305},_={face:1028,mode:2305},c=t=>2===t?o:1===t?_:null,d={zNear:0,zFar:1},u={r:!0,g:!0,b:!0,a:!0};function f(t){return D.intern(t)}function p(t){return m.intern(t)}function g(t){return C.intern(t)}function v(t){return P.intern(t)}function I(t){return z.intern(t)}function W(t){return j.intern(t)}function S(t){return N.intern(t)}function b(t){return M.intern(t)}function T(t){return E.intern(t)}function w(t){return H.intern(t)}class B{constructor(t,e){this._makeKey=t,this._makeRef=e,this._interns=new Map}intern(t){if(!t)return null;const e=this._makeKey(t),i=this._interns;return i.has(e)||i.set(e,this._makeRef(t)),i.get(e)??null}}function y(t){return"["+t.join(",")+"]"}const D=new B(O,t=>({__tag:"Blending",...t}));function O(t){return t?y([t.srcRgb,t.srcAlpha,t.dstRgb,t.dstAlpha,t.opRgb,t.opAlpha,t.color.r,t.color.g,t.color.b,t.color.a]):null}const m=new B(R,t=>({__tag:"Culling",...t}));function R(t){return t?y([t.face,t.mode]):null}const C=new B(A,t=>({__tag:"PolygonOffset",...t}));function A(t){return t?y([t.factor,t.units]):null}const P=new B(k,t=>({__tag:"DepthTest",...t}));function k(t){return t?y([t.func]):null}const z=new B(F,t=>({__tag:"StencilTest",...t}));function F(t){return t?y([t.function.func,t.function.ref,t.function.mask,t.operation.fail,t.operation.zFail,t.operation.zPass]):null}const j=new B(K,t=>({__tag:"DepthWrite",...t}));function K(t){return t?y([t.zNear,t.zFar]):null}const N=new B(x,t=>({__tag:"ColorWrite",...t}));function x(t){return t?y([t.r,t.g,t.b,t.a]):null}const M=new B(q,t=>({__tag:"StencilWrite",...t}));function q(t){return t?y([t.mask]):null}const E=new B(G,t=>({__tag:"DrawBuffers",...t}));function G(t){return t?y(t.buffers):null}const H=new B(J,t=>({blending:f(t.blending),culling:p(t.culling),polygonOffset:g(t.polygonOffset),depthTest:v(t.depthTest),stencilTest:I(t.stencilTest),depthWrite:W(t.depthWrite),colorWrite:S(t.colorWrite),stencilWrite:b(t.stencilWrite),drawBuffers:T(t.drawBuffers)}));function J(t){return t?y([O(t.blending),R(t.culling),A(t.polygonOffset),k(t.depthTest),F(t.stencilTest),K(t.depthWrite),x(t.colorWrite),q(t.stencilWrite),G(t.drawBuffers)]):null}class L{constructor(t){this._pipelineInvalid=!0,this._blendingInvalid=!0,this._cullingInvalid=!0,this._polygonOffsetInvalid=!0,this._depthTestInvalid=!0,this._stencilTestInvalid=!0,this._depthWriteInvalid=!0,this._colorWriteInvalid=!0,this._stencilWriteInvalid=!0,this._drawBuffersInvalid=!0,this._stateSetters=t}setPipeline(t){(this._pipelineInvalid||t!==this._pipeline)&&(this._setBlending(t.blending),this._setCulling(t.culling),this._setPolygonOffset(t.polygonOffset),this._setDepthTest(t.depthTest),this._setStencilTest(t.stencilTest),this._setDepthWrite(t.depthWrite),this._setColorWrite(t.colorWrite),this._setStencilWrite(t.stencilWrite),this._setDrawBuffers(t.drawBuffers),this._pipeline=t),this._pipelineInvalid=!1}getPipelineState(){return t(this._pipeline)}invalidateBlending(){this._blendingInvalid=!0,this._pipelineInvalid=!0}invalidateCulling(){this._cullingInvalid=!0,this._pipelineInvalid=!0}invalidatePolygonOffset(){this._polygonOffsetInvalid=!0,this._pipelineInvalid=!0}invalidateDepthTest(){this._depthTestInvalid=!0,this._pipelineInvalid=!0}invalidateStencilTest(){this._stencilTestInvalid=!0,this._pipelineInvalid=!0}invalidateDepthWrite(){this._depthWriteInvalid=!0,this._pipelineInvalid=!0}invalidateColorWrite(){this._colorWriteInvalid=!0,this._pipelineInvalid=!0}invalidateStencilWrite(){this._stencilTestInvalid=!0,this._pipelineInvalid=!0}invalidateDrawBuffers(){this._drawBuffersInvalid=!0,this._pipelineInvalid=!0}_setBlending(t){this._blending=this._setSubState(t,this._blending,this._blendingInvalid,this._stateSetters.setBlending),this._blendingInvalid=!1}_setCulling(t){this._culling=this._setSubState(t,this._culling,this._cullingInvalid,this._stateSetters.setCulling),this._cullingInvalid=!1}_setPolygonOffset(t){this._polygonOffset=this._setSubState(t,this._polygonOffset,this._polygonOffsetInvalid,this._stateSetters.setPolygonOffset),this._polygonOffsetInvalid=!1}_setDepthTest(t){this._depthTest=this._setSubState(t,this._depthTest,this._depthTestInvalid,this._stateSetters.setDepthTest),this._depthTestInvalid=!1}_setStencilTest(t){this._stencilTest=this._setSubState(t,this._stencilTest,this._stencilTestInvalid,this._stateSetters.setStencilTest),this._stencilTestInvalid=!1}_setDepthWrite(t){this._depthWrite=this._setSubState(t,this._depthWrite,this._depthWriteInvalid,this._stateSetters.setDepthWrite),this._depthWriteInvalid=!1}_setColorWrite(t){this._colorWrite=this._setSubState(t,this._colorWrite,this._colorWriteInvalid,this._stateSetters.setColorWrite),this._colorWriteInvalid=!1}_setStencilWrite(t){this._stencilWrite=this._setSubState(t,this._stencilWrite,this._stencilWriteInvalid,this._stateSetters.setStencilWrite),this._stencilTestInvalid=!1}_setDrawBuffers(t){this._drawBuffers=this._setSubState(t,this._drawBuffers,this._drawBuffersInvalid,this._stateSetters.setDrawBuffers),this._drawBuffersInvalid=!1}_setSubState(t,e,i,n){return(i||t!==e)&&(n(t),this._pipelineInvalid=!0),t}}export{L as StateTracker,l as add,o as backFaceCullingParams,s as copySource,c as cullingParams,u as defaultColorWrite,d as defaultDepthWrite,n as destinationTimesOneMinusSourceAlpha,_ as frontFaceCullingParams,f as makeBlending,S as makeColorWrite,p as makeCulling,v as makeDepthTest,W as makeDepthWrite,T as makeDrawBuffers,w as makePipelineState,g as makePolygonOffset,I as makeStencilTest,b as makeStencilWrite,h as modulateDestination,r as premultipliedAlpha,i as separateBlendingParams,e as simpleBlendingParams,a as unpremultipliedAlphaToPremultipliedAlpha};