UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 2.91 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import e from"../../../../core/Error.js";import t from"../../../../core/Logger.js";import{PixelType as r}from"../../../webgl/enums.js";import{getDataTypeBytes as n}from"../../../webgl/getDataTypeBytes.js";import{VertexElementDescriptor as s}from"../../../webgl/VertexElementDescriptor.js";const a=()=>t.getLogger("esri.views.2d.engine.webgl.Utils");function o(t){switch(t){case r.UNSIGNED_BYTE:return 1;case r.UNSIGNED_SHORT_4_4_4_4:return 2;case r.FLOAT:return 4;default:return void a().error(new e("webgl-utils",`Unable to handle type ${t}`))}}function i(t){switch(t){case r.UNSIGNED_BYTE:return Uint8Array;case r.UNSIGNED_SHORT_4_4_4_4:return Uint16Array;case r.FLOAT:return Float32Array;default:return void a().error(new e("webgl-utils",`Unable to handle type ${t}`))}}function c(e){const t=new Map;for(const r in e){const a=e[r];let o=0;t.set(r,a.map((e=>{const t=new s(e.name,e.count,e.type,o,0,e.normalized||!1);return o+=e.count*n(e.type),t}))),t.get(r).forEach((e=>e.stride=o))}return t}const l=e=>{const t=new Map;for(const r in e)for(const n of e[r])t.set(n.name,n.location);return t},u=e=>{const t={};return e.forEach(((e,r)=>t[r]=e?.length?e[0].stride:0)),t},m=new Map,$=(e,t)=>{if(!m.has(e)){const r=c(t),n={strides:u(r),bufferLayouts:r,attributes:l(t)};m.set(e,n)}return m.get(e)},f=e=>e.includes("data:image/svg+xml");function d(e){const t=[];for(let r=0;r<e.length;r++)t.push(e.charCodeAt(r));return t}const g=e=>!!e&&(e=e.trim(),!!(/^[mzlhvcsqta]\s*[-+.0-9][^mlhvzcsqta]+/i.test(e)&&/[\dz]$/i.test(e)&&e.length>4));function p(e){if(null==e)return"";const{type:t}=e;switch(t){case"CIMMarkerPlacementAlongLineRandomSize":return`${t}-${e.seed}-${e.randomization}`;case"CIMMarkerPlacementAlongLineVariableSize":return`${t}-${e.maxRandomOffset}-${e.numberOfSizes}-${e.seed}-${e.variationMethod}`;case"CIMMarkerPlacementAtExtremities":return`${t}-${e.extremityPlacement}-${e.offsetAlongLine}`;case"CIMMarkerPlacementAtRatioPositions":return`${t}-${e.beginPosition}-${e.endPosition}-${e.flipFirst}-${JSON.stringify(e.positionArray)}`;case"CIMMarkerPlacementAtMeasuredUnits":return`${t}-${e.interval}-${e.skipMarkerRate}-${e.placeAtExtremities}`;case"CIMMarkerPlacementInsidePolygon":return`${t}-${e.stepX}-${e.stepY}-${e.randomness}-${e.gridType}-${e.seed}-${e.shiftOddRows}`;case"CIMMarkerPlacementOnLine":return`${t}-${e.relativeTo}-${e.startPointOffset}`;case"CIMMarkerPlacementOnVertices":return`${t}-${e.placeOnControlPoints}-${e.placeOnEndPoints}-${e.placeOnRegularVertices}`;case"CIMMarkerPlacementPolygonCenter":return`${t}-${e.method}`;default:return`${t}`}}export{d as charCodes,c as createAttributeLayout,$ as createProgramDescriptor,p as getCIMMarkerPlacementHash,i as getPixelArrayCtor,o as getPixelBytes,f as isSVGImage,g as isValidSVG};