Custom Gis Application with Arcgis Javascript API with modern layouting
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

13 lines
5.0 KiB

// All material copyright Esri, All Rights Reserved, unless otherwise specified.
// See https://js.arcgis.com/4.30/esri/copyright.txt for details.
//>>built
define("../../../request ../../../core/asyncUtils ../../../core/Handles ../../../core/mathUtils ../../../core/maybe ../../../core/reactiveUtils ../../../core/urlUtils ../../../core/libs/gl-matrix-2/factories/mat3f32 ../../../core/support/UpdatingHandles ../engine/DisplayObject ../engine/webgl/DefaultVertexAttributeLayouts ../engine/webgl/enums ../engine/webgl/shaders/MagnifierPrograms ../../magnifier/resources ../../webgl/BufferObject ../../webgl/enums ../../webgl/Texture ../../webgl/TextureDescriptor ../../webgl/VertexArrayObject".split(" "),
function(t,x,y,u,k,n,z,A,B,C,D,E,v,F,G,h,q,H,I){class J extends C.DisplayObject{constructor(){super();this._handles=new y;this._resourcePixelRatio=1;this.updatingHandles=new B.UpdatingHandles;this.visible=!1}destroy(){this._handles=k.destroyMaybe(this._handles);this._disposeRenderResources();this._resourcesTask=k.abortMaybe(this._resourcesTask)}get backgroundColor(){return this._backgroundColor}set backgroundColor(a){this._backgroundColor=a;this.requestRender()}get magnifier(){return this._magnifier}set magnifier(a){this._magnifier=
a;this._handles.removeAll();this._handles.add([n.watch(()=>a.version,()=>{this.visible=a.visible&&null!=a.position&&0<a.size;this.requestRender()},n.initial),n.watch(()=>[a.maskUrl,a.overlayUrl],()=>this._reloadResources()),n.watch(()=>a.size,()=>{this._disposeRenderResources();this.requestRender()})])}_createTransforms(){return{displayViewScreenMat3:A.create()}}doRender(a){const c=a.context;if(!this._resourcesTask)this._reloadResources();else if(a.drawPhase===E.WGLDrawPhase.MAP&&this._canRender()){this._updateResources(a);
var d=this._magnifier;if(null!=d.position){var b=a.pixelRatio,l=d.size*b,e=Math.ceil(1/d.factor*l);this._readbackTexture.resize(e,e);var {size:f}=a.state;a=b*f[0];f=b*f[1];var g=.5*e,m=.5*e,p=u.clamp(b*d.position.x,g,a-g-1),w=u.clamp(f-b*d.position.y,m,f-m-1);c.setBlendingEnabled(!0);g=p-g;m=w-m;var r=this._readbackTexture;c.bindTexture(r,0);c.gl.copyTexImage2D(r.descriptor.target,0,r.descriptor.pixelFormat,g,m,e,e,0);e=(e=this.backgroundColor)?[e.a*e.r/255,e.a*e.g/255,e.a*e.b/255,e.a]:[1,1,1,1];
p=-1+(p+d.offset.x*b)/a*2;b=-1+(w-d.offset.y*b)/f*2;a=l/a*2;l=l/f*2;f=this._program;c.bindVAO(this._vertexArrayObject);c.bindTexture(this._overlayTexture,6);c.bindTexture(this._maskTexture,7);c.useProgram(f);f.setUniform4fv("u_background",e);f.setUniform1i("u_readbackTexture",0);f.setUniform1i("u_overlayTexture",6);f.setUniform1i("u_maskTexture",7);f.setUniform4f("u_drawPos",p,b,a,l);f.setUniform1i("u_maskEnabled",d.maskEnabled?1:0);f.setUniform1i("u_overlayEnabled",d.overlayEnabled?1:0);c.setStencilTestEnabled(!1);
c.setColorMask(!0,!0,!0,!0);c.drawArrays(h.PrimitiveType.TRIANGLE_STRIP,0,4);c.bindVAO()}}}_canRender(){return this._mask&&this._overlay&&null!=this._magnifier}_reloadResources(){this._resourcesTask&&this._resourcesTask.abort();const a=null!=this._magnifier?this._magnifier.maskUrl:null,c=null!=this._magnifier?this._magnifier.overlayUrl:null;this._resourcesTask=x.createTask(async d=>{const b=null==a||null==c?F.loadMagnifierResources(d):null,l=null!=a?t(a,{responseType:"image",signal:d}).then(g=>g.data):
b.then(g=>g.mask);d=null!=c?t(c,{responseType:"image",signal:d}).then(g=>g.data):b.then(g=>g.overlay);const [e,f]=await Promise.all([l,d]);this._mask=e;this._overlay=f;this._disposeRenderResources();this.requestRender()});this.updatingHandles.addPromise(this._resourcesTask.promise)}_disposeRenderResources(){this._readbackTexture=k.disposeMaybe(this._readbackTexture);this._overlayTexture=k.disposeMaybe(this._overlayTexture);this._maskTexture=k.disposeMaybe(this._maskTexture);this._vertexArrayObject=
k.disposeMaybe(this._vertexArrayObject);this._program=k.disposeMaybe(this._program)}_updateResources(a){a.pixelRatio!==this._resourcePixelRatio&&this._disposeRenderResources();if(!this._readbackTexture){var c=a.context;this._resourcePixelRatio=a.pixelRatio;var d=Math.ceil(this._magnifier.size*a.pixelRatio);this._program=v.createMagnifierProgram(c);var b=new Uint16Array([0,1,0,0,1,1,1,0]);this._vertexArrayObject=new I.VertexArrayObject(c,v.magnifierProgramTemplate.attributes,D.Pos2us,{geometry:G.BufferObject.createVertex(c,
h.Usage.STATIC_DRAW,b)});this._overlay.width=d;this._overlay.height=d;b=new H.TextureDescriptor;b.internalFormat=h.PixelFormat.RGBA;b.wrapMode=h.TextureWrapMode.CLAMP_TO_EDGE;b.samplingMode=h.TextureSamplingMode.NEAREST;b.flipped=!0;b.preMultiplyAlpha=!z.isSVG(this._overlay.src)||!a.context.driverTest.svgPremultipliesAlpha.result;this._overlayTexture=new q.Texture(c,b,this._overlay);this._mask.width=d;this._mask.height=d;b.pixelFormat=b.internalFormat=h.PixelFormat.ALPHA;this._maskTexture=new q.Texture(c,
b,this._mask);a=1/this._magnifier.factor;b.pixelFormat=b.internalFormat=h.PixelFormat.RGBA;b.width=b.height=Math.ceil(a*d);b.samplingMode=h.TextureSamplingMode.LINEAR;b.flipped=!1;this._readbackTexture=new q.Texture(c,b)}}}return J});