UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 2.41 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.32/esri/copyright.txt for details. */ import"../../../../core/has.js";import{packFloatRGBA as t}from"../../../../core/floatRGBA.js";import{freeze as r}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{Texture as n}from"../../webgl-engine/lib/Texture.js";import{TextureWrapMode as e}from"../../../webgl/enums.js";const o=128,a=.5,c=r(a/2,a/2,1-a/2,1-a/2);function s(t){return"cross"===t||"x"===t}function u(t,r=o,c=r*a,s=0){const u=i(t,r,c,s);return new n(u,{mipmap:!1,wrap:{s:e.CLAMP_TO_EDGE,t:e.CLAMP_TO_EDGE},width:r,height:r,components:4,noUnpackFlip:!0,reloadable:!0})}function i(t,r=o,n=r*a,e=0){switch(t){case"circle":default:return f(r,n);case"square":return h(r,n);case"cross":return l(r,n,e);case"x":return m(r,n,e);case"kite":return M(r,n);case"triangle":return p(r,n);case"arrow":return b(r,n)}}function f(t,r){const n=t/2-.5;return g(t,x(n,n,r/2))}function h(t,r){return T(t,r,!1)}function M(t,r){return T(t,r,!0)}function l(t,r,n=0){return w(t,r,!1,n)}function m(t,r,n=0){return w(t,r,!0,n)}function p(t,r){return g(t,R(t/2,r,r/2))}function b(t,r){const n=r,e=r/2,o=t/2,a=.8*n,c=x(o,(t-r)/2-a,Math.sqrt(a*a+e*e)),s=R(o,n,e);return g(t,((t,r)=>Math.max(s(t,r),-c(t,r))))}function T(t,r,n){return n&&(r/=Math.SQRT2),g(t,((e,o)=>{let a=e-.5*t+.25,c=.5*t-o-.75;if(n){const t=(a+c)/Math.SQRT2;c=(c-a)/Math.SQRT2,a=t}return Math.max(Math.abs(a),Math.abs(c))-.5*r}))}function w(t,r,n,e=0){r-=e,n&&(r*=Math.SQRT2);const o=.5*r;return g(t,((r,a)=>{let c,s=r-.5*t,u=.5*t-a-1;if(n){const t=(s+u)/Math.SQRT2;u=(u-s)/Math.SQRT2,s=t}return s=Math.abs(s),u=Math.abs(u),c=s>u?s>o?Math.sqrt((s-o)*(s-o)+u*u):u:u>o?Math.sqrt(s*s+(u-o)*(u-o)):s,c-=e/2,c}))}function x(t,r,n){return(e,o)=>{const a=e-t,c=o-r;return Math.sqrt(a*a+c*c)-n}}function R(t,r,n){const e=Math.sqrt(r*r+n*n);return(o,a)=>{const c=Math.abs(o-t)-n,s=a-t+r/2+.75,u=(r*c+n*s)/e,i=-s;return Math.max(u,i)}}function g(r,n){const e=new Uint8Array(4*r*r);for(let o=0;o<r;o++)for(let a=0;a<r;a++){const c=a+r*o;let s=n(a,o);s=s/r+.5,t(s,e,4*c)}return e}export{b as createArrow,f as createCircle,l as createCross,M as createKite,i as createPrimitive,h as createSquare,u as createTexture,p as createTriangle,m as createX,c as defaultBoundingBox,a as defaultSymbolSizeRatio,o as defaultTexSize,s as requiresHalfTexelOffset};