UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

3 lines (2 loc) 1.38 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.19/LICENSE.txt */ import{isImagePattern as t}from"./lineStippleUtils.js";import{ProceduralTextureRepository as e}from"./ProceduralTextureRepository.js";import{PixelType as r,SizedPixelFormat as o}from"../../../webgl/enums.js";import n from"../../../webgl/Texture.js";import{TextureDescriptor as i}from"../../../webgl/TextureDescriptor.js";function a(a,p){return new e(e=>{if(t(e))return s(a,e.image);const{data:p,textureSize:l}=u(e),m=new i(l,1);return m.dataType=r.FLOAT,m.pixelFormat=6403,m.internalFormat=o.R16F,m.wrapMode=10497,new n(a,m,p)},e=>t(e)?`image-${e.uuid}`:`${e.pattern.join(",")}-r${e.pixelRatio}`,p)}function u(t){const e=p(t),r=1/t.pixelRatio,o=l(t),n=[];let i=1;for(const u of e){for(let t=0;t<u;t++){const e=i*(Math.min(t,u-1-t)+.5)*r;n.push(e)}i=-i}const a=Math.round(e[0]/2);return{data:new Float32Array([...n.slice(a),...n.slice(0,a)]),textureSize:o}}function p(t){return t.pattern.map(e=>Math.round(e*t.pixelRatio))}function l(t){if(null==t)return 1;const e=p(t);return Math.floor(e.reduce((t,e)=>t+e))}function s(t,e){const{data:a,width:u,height:p}=e,l=new i(u,p);return l.dataType=r.UNSIGNED_BYTE,l.pixelFormat=6408,l.internalFormat=o.RGBA8,l.wrapMode={s:10497,t:33071},l.hasMipmap=!0,l.samplingMode=9987,new n(t,l,a)}export{l as computeTextureSize,a as createStippleTextureRepository,s as imageToTexture};