@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 2.16 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.32/esri/copyright.txt for details.
*/
import{GeometryCursor as e}from"../../../../../../../geometry/GeometryCursor.js";import{clipMarshall as t}from"../../../mesh/templates/templateUtils.js";import{FillMeshWriter as r}from"./FillMeshWriter.js";import{processColorInput as s,packBitset as i}from"./meshWriterUtils.js";import{LineVertexSpec as o,LineMeshWriter as n}from"../line/LineMeshWriter.js";import{getLineClippingMargin as a}from"../mesh/utils.js";import{bitsetTypeFillOutline as u}from"../shaders/constants.js";import{DataType as l}from"../../../../../../webgl/enums.js";const p={createComputedParams:e=>e,optionalAttributes:o.optionalAttributes,attributes:{...o.attributes,bitset:{type:l.UNSIGNED_BYTE,count:1,pack:e=>0},color:{type:l.UNSIGNED_BYTE,count:4,normalized:!0,pack:({color:e})=>s(e)}}},c={createComputedParams:e=>e,optionalAttributes:o.optionalAttributes,attributes:{...o.attributes,bitset:{type:l.UNSIGNED_BYTE,count:1,pack:e=>i([[u,!0]])},color:{type:l.UNSIGNED_BYTE,count:4,normalized:!0,pack:({outlineColor:e})=>s(e)}}};class m extends n{constructor(){super(...arguments),this.vertexSpec=c}}class h extends r{constructor(e,t,r,s){super(e,t,r,s),this.vertexSpec=p,this._lineMeshWriter=this._createOutlineWriter(e,t,r,s)}_createOutlineWriter(e,t,r,s){return new m(e,t,r,s)}_write(t,r,s){const i=s?.asOptimized()??r.readGeometryForDisplay(),o=this._clip(i);o&&(t.recordStart(this.instanceId,this.attributeLayout),this._writeGeometry(t,r,o),this._lineMeshWriter.writeLineVertices(t,e.fromOptimizedCIM(o,"esriGeometryPolyline"),r),t.recordEnd())}_clip(e){return e?t(e,a(this.evaluatedMeshParams)):null}ensurePacked(e,t,r){super.ensurePacked(e,t,r),this._lineMeshWriter.ensurePacked(e,t,r)}enqueueRequest(e,t,r){super.enqueueRequest(e,t,r),this._lineMeshWriter.enqueueRequest(e,t,r)}async loadDependencies(){await Promise.all([super.loadDependencies(),this._lineMeshWriter.loadDependencies()])}}export{h as OutlineFillMeshWriter,m as OutlineFillOutlineMeshWriter,p as outlineFillVertexSpec_Fill,c as outlineFillVertexSpec_Outline};