@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 7.09 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
*/
import{neverReached as e}from"../../../../core/compilerUtils.js";import{defaultPrimitive as r}from"../../../../symbols/support/ObjectSymbol3DLayerResource.js";import{pathNumCircleProfileSubdivisions as t,pathNumRoundJoinSubdivisions as a,pathNumRoundCapExtrusionSubdivisions as s}from"./Graphics3DPathSymbolLayerConstants.js";import{primitiveLodResources as u}from"./primitiveObjectSymbolUtils.js";import{EstimatedSymbolComplexity as o,SymbolComplexity as b,SymbolComplexityMemory as y,EstimatedAggregateSymbolComplexity as i,AggregateSymbolComplexity as c}from"./SymbolComplexity.js";import{hasEdges as n}from"../support/edgeUtils.js";import{DefaultMaterial as l}from"../../webgl-engine/materials/DefaultMaterial.js";const P=new o({});function m(e){if("web-style"===e.type)return P;return F(e.symbolLayers.toArray().map((r=>L(e,r))))}function F(e){let r=0,t=0,a=0,s=!1,u=0;const o=new y;for(const b of e)null!=b&&(r+=b.verticesPerFeature,t+=b.verticesPerCoordinate,a+=b.drawCallsPerFeature,o.bytesPerFeature+=b.memory.bytesPerFeature,o.bytesPerFeatureLabel+=b.memory.bytesPerFeatureLabel,o.resourceBytes+=b.memory.resourceBytes,o.draped.bytesPerFeature+=b.memory.bytesPerFeature,o.draped.bytesPerFeatureLabel+=b.memory.bytesPerFeatureLabel,s=s||b.estimated,++u);return s?new i(u,{verticesPerFeature:r,verticesPerCoordinate:t,drawCallsPerFeature:a,memory:o}):new c(u,{verticesPerFeature:r,verticesPerCoordinate:t,drawCallsPerFeature:a,memory:o})}function d(e){const r=F(e);return r.numComplexities>0&&(r.verticesPerFeature/=r.numComplexities,r.verticesPerCoordinate/=r.numComplexities,r.drawCallsPerFeature/=r.numComplexities,r.memory.bytesPerFeature/=r.numComplexities,r.memory.bytesPerFeatureLabel/=r.numComplexities,r.memory.resourceBytes/=r.numComplexities,r.memory.draped.bytesPerFeature/=r.numComplexities,r.memory.draped.bytesPerFeatureLabel/=r.numComplexities),r}const p={};function L(u,y){const i=C(u,y),c=n(y)?2:0;switch(y.type){case"extrude":return new b({verticesPerFeature:-12,verticesPerCoordinate:12,drawCallsPerFeature:c,memory:i});case"fill":if("mesh-3d"===u.type)return new b({drawCallsPerFeature:c,memory:i});if(null!=y.outline&&y.outline.size>0)return new b({verticesPerFeature:-12,verticesPerCoordinate:9,memory:i});case"water":return new b({verticesPerFeature:-6,verticesPerCoordinate:3,memory:i});case"line":return new b({verticesPerFeature:-6,verticesPerCoordinate:6,memory:i});case"object":return y.resource?.href?new o({verticesPerFeature:100,memory:i}):{...f(y.resource?.primitive??r),memory:i};case"path":{let r=0,u=0;switch(y.profile){case"circle":r=t;break;case"quad":r=4;break;default:return void e(y.profile)}switch(y.join){case"round":u=a;break;case"miter":case"bevel":u=1;break;default:return}const o=2*r,c=r*u*2,n=c+o;let l=-2*c-o;switch(y.cap){case"none":break;case"butt":case"square":l+=2*(r-1);break;case"round":l+=2*(r*(s-1)*2+r);break;default:return}return new b({verticesPerFeature:l,verticesPerCoordinate:n,memory:i})}case"text":{const e="label-3d"===u.type?0:2;return new b({verticesPerFeature:6,memory:i,drawCallsPerFeature:e})}case"icon":return new b({verticesPerFeature:6,memory:i});default:return}}function C(r,t){const a="point-3d"===r.type;switch(t.type){case"extrude":return t.edges&&t.edges.size>0?E.EXTRUDE_EDGES:E.EXTRUDE;case"fill":return null!=t.outline&&t.outline.size>0?E.FILL_OUTLINE:E.FILL;case"water":return E.FILL;case"line":return"round"===t.join?E.LINE_ROUND:E.LINE_MITER;case"path":switch(t.join){case"round":switch(t.profile){case"circle":return E.PATH_ROUND_CIRCLE;case"quad":return E.PATH_ROUND_QUAD;default:return void e(t.profile)}case"miter":case"bevel":switch(t.profile){case"circle":return E.PATH_MITER_CIRCLE;case"quad":return E.PATH_MITER_QUAD;default:return void e(t.profile)}default:return}case"object":return a?E.OBJECT_POINT:E.OBJECT_POLYGON;case"icon":case"text":return a?E.ICON_POINT:E.ICON_POLYGON;default:return}}function f(e){const r=p[e];if(r)return r;const t=w(u(e,new l({},{spherical:!0})).levels);return p[e]=new b({verticesPerFeature:t}),p[e]}function w(e){return e.reduce(((e,r,t)=>e+r.numVertices*(1/10**t)),0)/e.reduce(((e,r,t)=>e+1/10**t),0)}const E={ICON_POINT:{bytesPerFeature:3062.2534325974652,bytesPerFeatureLabel:3605.891255,resourceBytes:0,draped:{bytesPerFeature:2029.6324697040875,bytesPerFeatureLabel:3844.951315}},ICON_POLYGON:{bytesPerFeature:3379.2552364427283,bytesPerFeatureLabel:3144.1341316666667,resourceBytes:0,draped:{bytesPerFeature:2594.5439970589305,bytesPerFeatureLabel:3391.0192816666668}},OBJECT_POINT:{bytesPerFeature:755.5754513856272,bytesPerFeatureLabel:3229.7766,resourceBytes:0,draped:{bytesPerFeature:755.5754513856272,bytesPerFeatureLabel:3229.7766}},OBJECT_POLYGON:{bytesPerFeature:1235.9612556276838,bytesPerFeatureLabel:2710.5796950000004,resourceBytes:0,draped:{bytesPerFeature:1235.9612556276838,bytesPerFeatureLabel:2710.5796950000004}},LINE_MITER:{bytesPerFeature:2343.0098144295366,bytesPerFeatureLabel:2863.2415183333333,resourceBytes:0,draped:{bytesPerFeature:2118.062960542706,bytesPerFeatureLabel:2993.8707950000003}},LINE_ROUND:{bytesPerFeature:3180.281669156425,bytesPerFeatureLabel:2884.062711666667,resourceBytes:0,draped:{bytesPerFeature:2687.1048133674676,bytesPerFeatureLabel:2965.844025}},PATH_MITER_CIRCLE:{bytesPerFeature:26642.015762630304,bytesPerFeatureLabel:3147.8341749999995,resourceBytes:0,draped:{bytesPerFeature:26642.015762630304,bytesPerFeatureLabel:3147.8341749999995}},PATH_ROUND_CIRCLE:{bytesPerFeature:21137.659435445064,bytesPerFeatureLabel:2827.1294000000003,resourceBytes:0,draped:{bytesPerFeature:21137.659435445064,bytesPerFeatureLabel:2827.1294000000003}},PATH_MITER_QUAD:{bytesPerFeature:25592.283303929427,bytesPerFeatureLabel:3354.641775,resourceBytes:0,draped:{bytesPerFeature:25592.283303929427,bytesPerFeatureLabel:3354.641775}},PATH_ROUND_QUAD:{bytesPerFeature:23212.92773696872,bytesPerFeatureLabel:3173.6644499999998,resourceBytes:0,draped:{bytesPerFeature:23212.92773696872,bytesPerFeatureLabel:3173.6644499999998}},FILL:{bytesPerFeature:3069.6014181747005,bytesPerFeatureLabel:3050.617135,resourceBytes:0,draped:{bytesPerFeature:2547.9765396831167,bytesPerFeatureLabel:3166.2821483333337}},FILL_OUTLINE:{bytesPerFeature:3653.779598313774,bytesPerFeatureLabel:2787.5897050000003,resourceBytes:0,draped:{bytesPerFeature:2884.528596112384,bytesPerFeatureLabel:2907.420548333333}},EXTRUDE:{bytesPerFeature:5785.658350054202,bytesPerFeatureLabel:2787.498365,resourceBytes:0,draped:{bytesPerFeature:5785.658350054202,bytesPerFeatureLabel:2787.498365}},EXTRUDE_EDGES:{bytesPerFeature:3380.451670091342,bytesPerFeatureLabel:2245.881308333333,resourceBytes:0,draped:{bytesPerFeature:3380.451670091342,bytesPerFeatureLabel:2245.881308333333}}};export{d as averageSymbolComplexities,m as defaultSymbolComplexity,L as defaultSymbolLayerComplexity,C as defaultSymbolLayerMemoryComplexity,P as emptySymbolComplexity,w as estimateNumVerticesForLods,F as totalSymbolComplexities};