@arcgis/core 4.33.0-next.20250209 → 4.33.0-next.20250211
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AttributeBinsGraphic.js +1 -1
- package/Graphic.js +1 -1
- package/Ground.js +1 -1
- package/WebMap.js +1 -1
- package/WebScene.js +1 -1
- package/arcade/ArcadeModuleResolver.js +1 -1
- package/arcade/featureset/actions/Adapted.js +1 -1
- package/arcade/featureset/support/FeatureSet.js +1 -1
- package/arcade/featureset/support/Guid.js +1 -1
- package/arcade/featureset/support/cache.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{d31f7598629f7cc50233.js → 004853abf357f865b4fa.js} +1 -1
- package/assets/esri/core/workers/chunks/00e374e3b4781c4f9a3e.js +1 -0
- package/assets/esri/core/workers/chunks/{746c964cf07e4306f21f.js → 03f51ea011ffbcfb7c7d.js} +1 -1
- package/assets/esri/core/workers/chunks/{ad3e692681b50bd1acc2.js → 03fac4c79641603d8cba.js} +1 -1
- package/assets/esri/core/workers/chunks/{0167cf867d8e46c818b0.js → 09260bbe1fd6ce5a53e6.js} +1 -1
- package/assets/esri/core/workers/chunks/{d1718ad93e3271b0525e.js → 0e4350fda5328862f2fb.js} +1 -1
- package/assets/esri/core/workers/chunks/12199e8abf377ffc27cd.js +1 -0
- package/assets/esri/core/workers/chunks/1a286d43daa3b811c30d.js +1 -0
- package/assets/esri/core/workers/chunks/{e5e3b6d00d27b5bb354f.js → 1d282700e76285a1684c.js} +1 -1
- package/assets/esri/core/workers/chunks/2130e0c8d2410c87f880.js +1 -0
- package/assets/esri/core/workers/chunks/2530e5d1f438db8a7b5c.js +1 -0
- package/assets/esri/core/workers/chunks/{dfaf1da323906ee60549.js → 2876419a32537e24b7da.js} +1 -1
- package/assets/esri/core/workers/chunks/2b733e8043659466e194.js +1 -0
- package/assets/esri/core/workers/chunks/311c85bd94d5fb28e272.js +1 -0
- package/assets/esri/core/workers/chunks/33c6fd524711efd8ef13.js +1 -0
- package/assets/esri/core/workers/chunks/{594d923400fd74881833.js → 35392bf8f21005ad6170.js} +1 -1
- package/assets/esri/core/workers/chunks/{de1f3c4b8000c2d73013.js → 39dca492cc5f089e1609.js} +1 -1
- package/assets/esri/core/workers/chunks/{5b85f9da022742f602e2.js → 3c8e5b5fb52611e30ed6.js} +1 -1
- package/assets/esri/core/workers/chunks/491effb2c681493cc3a6.js +1 -0
- package/assets/esri/core/workers/chunks/{e93dea6b112ce8e2779b.js → 4b47549614d53ce1e384.js} +1 -1
- package/assets/esri/core/workers/chunks/{369a2b8484a8807bde38.js → 4be5e453fe54f5631659.js} +1 -1
- package/assets/esri/core/workers/chunks/{2971266a49226e769360.js → 5e5045add6567588b90a.js} +1 -1
- package/assets/esri/core/workers/chunks/{5721557a1d8eab23a55b.js → 5eceedac9b2b4d1ef133.js} +1 -1
- package/assets/esri/core/workers/chunks/6a9a1cd8134a903dd05a.js +1 -0
- package/assets/esri/core/workers/chunks/6c9bb00f33649ab59dab.js +314 -0
- package/assets/esri/core/workers/chunks/7485588bd24217669578.js +1 -0
- package/assets/esri/core/workers/chunks/74e0116ae84def626c87.js +1 -0
- package/assets/esri/core/workers/chunks/{c4374b6bc5c8dc6435c7.js → 7c81e08fc8a67dcd9dad.js} +1 -1
- package/assets/esri/core/workers/chunks/{433576983754f690bcc7.js → 7e3b374f906441cd7fb0.js} +1 -1
- package/assets/esri/core/workers/chunks/{8c32cee395da0a7b9a8e.js → 80d3aa3f27ad5b2b969b.js} +1 -1
- package/assets/esri/core/workers/chunks/{de4384b5833a60e88e31.js → 84c1c3336011a1b79669.js} +1 -1
- package/assets/esri/core/workers/chunks/{9d61590c4d21c7421925.js → 88a34690480d3658bad8.js} +1 -1
- package/assets/esri/core/workers/chunks/8939479cd433cc53f6c1.js +1 -0
- package/assets/esri/core/workers/chunks/{28dd172faa85080511c5.js → 8a2f3ce46eeac853b3a9.js} +1 -1
- package/assets/esri/core/workers/chunks/8b6580329e1e35ea4190.js +1 -0
- package/assets/esri/core/workers/chunks/8bfeef7cffe1e65c9dab.js +1 -0
- package/assets/esri/core/workers/chunks/{b44cf0e4c2f93408cabc.js → 9205115bdb5bc03d0c02.js} +1 -1
- package/assets/esri/core/workers/chunks/92d76d59113b4139befe.js +1 -0
- package/assets/esri/core/workers/chunks/9421ae38fdf986b9b107.js +1 -0
- package/assets/esri/core/workers/chunks/99c136b800e5fc7e04f4.js +1 -0
- package/assets/esri/core/workers/chunks/{d339dee99c4820b63f39.js → 9b74635d80d029498da1.js} +1 -1
- package/assets/esri/core/workers/chunks/{c2336d1f5b2b7bf6e7a7.js → 9bd6a4bf8150a6f618ea.js} +1 -1
- package/assets/esri/core/workers/chunks/9e7895e8201127ffe0a8.js +1 -0
- package/assets/esri/core/workers/chunks/{15e08e8a8a72b177d74c.js → a38cb1fff519bad8abe3.js} +1 -1
- package/assets/esri/core/workers/chunks/{7b367bb0ed9c218ca595.js → a52690a27f8732739c02.js} +1 -1
- package/assets/esri/core/workers/chunks/{cdd8983cf3a301805680.js → a52c282609a7e9c8ca9e.js} +1 -1
- package/assets/esri/core/workers/chunks/a56b3dffd9f38973f350.js +1 -0
- package/assets/esri/core/workers/chunks/a9274c9132e7a2691abb.js +1 -0
- package/assets/esri/core/workers/chunks/b253cf42e53f957b4b4e.js +1 -0
- package/assets/esri/core/workers/chunks/b50176897ffadc53573e.js +1 -0
- package/assets/esri/core/workers/chunks/{c26ffbff1115e76bcb0f.js → baee20c14763bef80b09.js} +1 -1
- package/assets/esri/core/workers/chunks/c3dc355d0f8d89b9b7b8.js +1 -0
- package/assets/esri/core/workers/chunks/c77ade444aa2f3f2b599.js +1 -0
- package/assets/esri/core/workers/chunks/c7927c2d5414f19defd5.js +1 -0
- package/assets/esri/core/workers/chunks/ca6180e572e69540c183.js +1 -0
- package/assets/esri/core/workers/chunks/{16f82e9d98371431b46d.js → cc085918c63da416e59d.js} +1 -1
- package/assets/esri/core/workers/chunks/{8e90c5fee4ad7c7275dc.js → cccd215b0a4890551957.js} +1 -1
- package/assets/esri/core/workers/chunks/ce88224af357957dd83a.js +1 -0
- package/assets/esri/core/workers/chunks/{07c5f3fc475c57f5a7a7.js → cf00df122df3db3b0c23.js} +1 -1
- package/assets/esri/core/workers/chunks/d074c916b414432a7b6a.js +1 -0
- package/assets/esri/core/workers/chunks/d342c56558f164e9e786.js +1 -0
- package/assets/esri/core/workers/chunks/{3c591f76e7d6204b7780.js → d3f7ff03ab5b40062d89.js} +1 -1
- package/assets/esri/core/workers/chunks/e03e237e7e6ffc8b7f0d.js +1 -0
- package/assets/esri/core/workers/chunks/{0b62871b89dcb4c70457.js → e21941260bae30061c2c.js} +1 -1
- package/assets/esri/core/workers/chunks/e6633f0326a44477f630.js +1 -0
- package/assets/esri/core/workers/chunks/e71b780d1e6a32f303b7.js +1 -0
- package/assets/esri/core/workers/chunks/eac28b0f6fccfabcc3ca.js +1 -0
- package/assets/esri/core/workers/chunks/{01c3507d78398baaf61b.js → eb0ce7937813d1be1284.js} +1 -1
- package/assets/esri/core/workers/chunks/{f198f4ba7d3d52882d98.js → efded84870064c3d8210.js} +1 -1
- package/assets/esri/core/workers/chunks/{c8a0089e080140db9076.js → f285ed5425b31123d2bc.js} +1 -1
- package/assets/esri/core/workers/chunks/f4ba823c8acd60c7c82d.js +1 -0
- package/core/Accessor.js +1 -1
- package/core/Collection.js +1 -1
- package/core/Logger.js +1 -1
- package/core/ObjectPool.js +1 -1
- package/core/RandomLCG.js +1 -1
- package/core/XHRAdapter.js +1 -1
- package/core/accessorSupport/watch.js +1 -1
- package/core/pbf.js +1 -1
- package/core/sql/UnknownTimeZone.js +1 -1
- package/core/workers/RemoteClient.js +1 -1
- package/geometry/SpatialReference.js +1 -1
- package/geometry/support/MeshGeoreferencedVertexSpace.js +1 -1
- package/geometry/support/MeshTexture.js +1 -1
- package/geometry/support/MeshTransform.js +1 -1
- package/geometry/support/buffer/BufferPool.js +1 -1
- package/geometry/support/buffer/BufferView.js +1 -1
- package/geometry/support/buffer/internals/Mat3.js +1 -1
- package/geometry/support/buffer/internals/Mat4.js +1 -1
- package/geometry/support/buffer/internals/Scalar.js +1 -1
- package/geometry/support/buffer/internals/Vec2.js +1 -1
- package/geometry/support/buffer/internals/Vec3.js +1 -1
- package/geometry/support/buffer/internals/Vec4.js +1 -1
- package/geometry/support/meshUtils/exporters/gltf/glb.js +1 -1
- package/identity/OAuthInfo.js +1 -1
- package/interfaces.d.ts +7 -1
- package/layers/mixins/EditBusLayer.js +1 -1
- package/layers/mixins/PublishableLayer.js +1 -1
- package/layers/support/AggregateField.js +1 -1
- package/layers/support/CodedValueDomain.js +1 -1
- package/layers/support/Field.js +1 -1
- package/layers/support/ImageElement.js +1 -1
- package/layers/support/InheritedDomain.js +1 -1
- package/layers/support/LOD.js +1 -1
- package/layers/support/LabelClass.js +1 -1
- package/layers/support/LabelExpressionInfo.js +1 -1
- package/layers/support/OrderByInfo.js +1 -1
- package/layers/support/PurgeOptions.js +1 -1
- package/layers/support/RangeDomain.js +1 -1
- package/layers/support/Sublayer.js +1 -1
- package/layers/support/TileInfo.js +1 -1
- package/layers/support/TilemapCache.js +1 -1
- package/layers/support/VideoElement.js +1 -1
- package/layers/support/source/DataLayerSource.js +1 -1
- package/package.json +1 -1
- package/portal/Portal.js +1 -1
- package/rest/support/AttachmentQuery.js +1 -1
- package/rest/support/ClosestFacilityParameters.js +1 -1
- package/rest/support/DirectionLine.js +1 -1
- package/rest/support/DirectionPoint.js +1 -1
- package/rest/support/JobInfo.js +1 -1
- package/rest/support/NetworkFeatureSet.js +1 -1
- package/rest/support/PointBarrier.js +1 -1
- package/rest/support/PolygonBarrier.js +1 -1
- package/rest/support/PolylineBarrier.js +1 -1
- package/rest/support/Query.js +1 -1
- package/rest/support/RelationshipQuery.js +1 -1
- package/rest/support/RouteInfo.js +1 -1
- package/rest/support/RouteParameters.js +1 -1
- package/rest/support/ServiceAreaParameters.js +1 -1
- package/rest/support/Stop.js +1 -1
- package/rest/support/TopFeaturesQuery.js +1 -1
- package/support/revision.js +1 -1
- package/symbols/ExtrudeSymbol3DLayer.js +1 -1
- package/symbols/FillSymbol3DLayer.js +1 -1
- package/symbols/IconSymbol3DLayer.js +1 -1
- package/symbols/LineSymbol3DLayer.js +1 -1
- package/symbols/ObjectSymbol3DLayer.js +1 -1
- package/symbols/PathSymbol3DLayer.js +1 -1
- package/symbols/TextSymbol3DLayer.js +1 -1
- package/symbols/WaterSymbol3DLayer.js +1 -1
- package/symbols/cim/OverrideHelper.js +1 -1
- package/symbols/cim/effects/EffectAddControlPoints.js +1 -1
- package/symbols/cim/effects/EffectArrow.js +1 -1
- package/symbols/cim/effects/EffectBuffer.js +1 -1
- package/symbols/cim/effects/EffectControlMeasureLine.js +1 -1
- package/symbols/cim/effects/EffectCut.js +1 -1
- package/symbols/cim/effects/EffectDashes.js +1 -1
- package/symbols/cim/effects/EffectDonut.js +1 -1
- package/symbols/cim/effects/EffectJog.js +1 -1
- package/symbols/cim/effects/EffectMove.js +1 -1
- package/symbols/cim/effects/EffectOffset.js +1 -1
- package/symbols/cim/effects/EffectReverse.js +1 -1
- package/symbols/cim/effects/EffectRotate.js +1 -1
- package/symbols/cim/effects/EffectScale.js +1 -1
- package/symbols/cim/effects/EffectWave.js +1 -1
- package/symbols/cim/placements/PlacementAlongLineSameSize.js +1 -1
- package/symbols/cim/placements/PlacementAtExtremities.js +1 -1
- package/symbols/cim/placements/PlacementAtRatioPositions.js +1 -1
- package/symbols/cim/placements/PlacementInsidePolygon.js +1 -1
- package/symbols/cim/placements/PlacementOnLine.js +1 -1
- package/symbols/cim/placements/PlacementOnVertices.js +1 -1
- package/symbols/cim/placements/PlacementPolygonCenter.js +1 -1
- package/symbols/support/ElevationInfo.js +1 -1
- package/time/TimeExtent.js +1 -1
- package/views/2d/engine/vectorTiles/buckets/SymbolBucket.js +1 -1
- package/views/2d/engine/vectorTiles/expression/expression.js +1 -1
- package/views/2d/engine/vectorTiles/shaders/VTLBackgroundMaterial.js +1 -1
- package/views/2d/engine/vectorTiles/shaders/VTLCircleMaterial.js +1 -1
- package/views/2d/engine/vectorTiles/shaders/VTLFillMaterial.js +1 -1
- package/views/2d/engine/vectorTiles/shaders/VTLLineMaterial.js +1 -1
- package/views/2d/engine/vectorTiles/shaders/VTLMaterial.js +1 -1
- package/views/2d/engine/vectorTiles/shaders/VTLSymbolMaterial.js +1 -1
- package/views/2d/engine/vectorTiles/style/StyleDefinition.js +1 -1
- package/views/2d/engine/webgl/DisplayEntity.js +1 -1
- package/views/2d/engine/webgl/DisplayRecord.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/GraphShaderModule.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/graph/ShaderGraphNode.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/graph/glsl.js +1 -1
- package/views/2d/layers/features/FeatureStoreQueryAdapter.js +1 -1
- package/views/2d/tiling/TileCoverage.js +1 -1
- package/views/2d/tiling/TileKey.js +1 -1
- package/views/3d/analysis/Slice/SliceTool.js +1 -1
- package/views/3d/environment/SceneViewEnvironment.js +1 -1
- package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
- package/views/3d/layers/graphics/Graphics3DIconSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLineCalloutSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DPolygonFillSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DWaterSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/pipeline/featureSet/TiledFeatureStore.js +1 -1
- package/views/3d/layers/graphics/pipeline/rendering/DirectRenderer.js +1 -1
- package/views/3d/layers/graphics/pipeline/rendering/FeaturePipelineRenderManager.js +1 -1
- package/views/3d/layers/graphics/pipeline/rendering/LodRenderer.js +1 -1
- package/views/3d/layers/graphics/pipeline/rendering/RenderCommandEncoder.js +1 -1
- package/views/3d/layers/graphics/pipeline/symbolization/TestObjectSymbol.js +1 -1
- package/views/3d/state/Frustum.js +1 -1
- package/views/3d/support/DisplayQualityProfile.js +1 -1
- package/views/3d/terrain/TerrainSurface.js +1 -1
- package/views/3d/terrain/TextureFader.js +1 -1
- package/views/3d/terrain/TilingScheme.js +1 -1
- package/views/3d/webgl-engine/collections/Component/ComponentIntersectionData.js +1 -1
- package/views/3d/webgl-engine/lib/DepthRange.js +1 -1
- package/views/3d/webgl-engine/lib/Octree.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/edgeBufferWriters.js +1 -1
- package/views/SceneView.js +1 -1
- package/views/View.js +1 -1
- package/views/View2D.js +1 -1
- package/views/draw/DrawAction.js +1 -1
- package/views/draw/drawSurfaces.js +1 -1
- package/views/input/BrowserEventSource.js +1 -1
- package/views/interactive/editGeometry/operations/UndoGroup.js +1 -1
- package/views/interactive/snapping/featureSources/sceneLayerSource/SceneLayerSnappingSourceWorker.js +1 -1
- package/views/support/imageReprojection.js +1 -1
- package/views/webgl/FramebufferObject.js +1 -1
- package/views/webgl/ShaderBuilder.js +1 -1
- package/views/webgl/Texture.js +1 -1
- package/webscene/Environment.js +1 -1
- package/webscene/SunLighting.js +1 -1
- package/webscene/VirtualLighting.js +1 -1
- package/widgets/BuildingExplorer/BuildingDisciplinesTree/BuildingDisciplinesNode.js +1 -1
- package/widgets/BuildingExplorer/BuildingDisciplinesTree/BuildingDisciplinesTree.js +1 -1
- package/widgets/Editor/UpdateRecordWorkflow.js +1 -1
- package/widgets/Feature/FeatureViewModel.js +1 -1
- package/widgets/LayerList/LayerListItem.js +1 -1
- package/widgets/OrientedImageryViewer/components/SketchTools.js +1 -1
- package/widgets/ScaleRangeSlider/ScaleRanges.js +1 -1
- package/widgets/Search/SearchViewModel.js +1 -1
- package/widgets/Sketch/support/ResponsiveToolbar/OverflowGroup.js +1 -1
- package/widgets/Sketch/support/ResponsiveToolbar/SplitButton.js +1 -1
- package/widgets/Widget.js +1 -1
- package/widgets/support/forms/expressions/FormExpressionArcadeExecutor.js +1 -1
- package/assets/esri/core/workers/chunks/00e0c53d89e074399f04.js +0 -1
- package/assets/esri/core/workers/chunks/12d6baeffd55a98a7c75.js +0 -1
- package/assets/esri/core/workers/chunks/207c040b0e42358a5389.js +0 -1
- package/assets/esri/core/workers/chunks/21c12edc0632eb911e73.js +0 -1
- package/assets/esri/core/workers/chunks/24c94f97a76646d415ae.js +0 -1
- package/assets/esri/core/workers/chunks/2611adb4f328f95ee508.js +0 -1
- package/assets/esri/core/workers/chunks/26a2bd432e7a1b3870c3.js +0 -1
- package/assets/esri/core/workers/chunks/2def7db73a776e759dae.js +0 -1
- package/assets/esri/core/workers/chunks/2ff63a71213f618377d6.js +0 -1
- package/assets/esri/core/workers/chunks/44abd2cd17aae3299ede.js +0 -1
- package/assets/esri/core/workers/chunks/4b56c0c109e10d7409b8.js +0 -1
- package/assets/esri/core/workers/chunks/5660f13d78e9e4240034.js +0 -1
- package/assets/esri/core/workers/chunks/568bcf809fcfd4d9c713.js +0 -1
- package/assets/esri/core/workers/chunks/5e889a675cbaff03ad5a.js +0 -1
- package/assets/esri/core/workers/chunks/61795bde00f2e16d04f1.js +0 -1
- package/assets/esri/core/workers/chunks/62a1d60ad4bf6469c4dd.js +0 -1
- package/assets/esri/core/workers/chunks/6ea02ff25f051c08e6c3.js +0 -1
- package/assets/esri/core/workers/chunks/7bf08823f861628144a1.js +0 -1
- package/assets/esri/core/workers/chunks/86149b4a5a148744c7d1.js +0 -1
- package/assets/esri/core/workers/chunks/9b2fab133786e5d47631.js +0 -1
- package/assets/esri/core/workers/chunks/9bfb091cec7eed6c8111.js +0 -1
- package/assets/esri/core/workers/chunks/a2409d4921c02614169a.js +0 -1
- package/assets/esri/core/workers/chunks/b1baf39daf5725404be5.js +0 -1
- package/assets/esri/core/workers/chunks/b43d88b6e7dc4ab13599.js +0 -1
- package/assets/esri/core/workers/chunks/b9d9a1dc3c5d799e2685.js +0 -1
- package/assets/esri/core/workers/chunks/c1970657a287ec96001e.js +0 -1
- package/assets/esri/core/workers/chunks/cc75bbfd779f409943a3.js +0 -1
- package/assets/esri/core/workers/chunks/d35efcbe439500bf18bc.js +0 -1
- package/assets/esri/core/workers/chunks/d599ba865da87b487b1b.js +0 -1
- package/assets/esri/core/workers/chunks/da1157e288dbc6ba842a.js +0 -1
- package/assets/esri/core/workers/chunks/ddc30044f61a2c2df3fe.js +0 -1
- package/assets/esri/core/workers/chunks/e37e5d2e233d7f6ccd52.js +0 -314
- package/assets/esri/core/workers/chunks/f14b318bab5efcf43419.js +0 -1
- package/assets/esri/core/workers/chunks/f29715459ecd46180829.js +0 -1
- package/assets/esri/core/workers/chunks/f4e48bbdbc9da10ec71a.js +0 -1
- package/assets/esri/core/workers/chunks/f62f657f9fef28f492e0.js +0 -1
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{GeometryCursor as t}from"../../../geometry/GeometryCursor.js";import{collectPath as e}from"../../../geometry/geometryCursorCollectUtils.js";import{PathEffectCursor as r}from"../CIMCursor.js";import{CurveHelper as n,pixelTolerance as o}from"../CurveHelper.js";import{GeometricEffectArrowType as s,GeometricEffectOffsetMethod as i}from"../enums.js";const c=1.7320508075688772,u=5,h=s.OpenEnded;class p{static local(){return null===p.instance&&(p.instance=new p),p.instance}execute(t,e,r,n,o){return new P(t,e,r)}}
|
|
5
|
+
import{GeometryCursor as t}from"../../../geometry/GeometryCursor.js";import{collectPath as e}from"../../../geometry/geometryCursorCollectUtils.js";import{PathEffectCursor as r}from"../CIMCursor.js";import{CurveHelper as n,pixelTolerance as o}from"../CurveHelper.js";import{GeometricEffectArrowType as s,GeometricEffectOffsetMethod as i}from"../enums.js";const c=1.7320508075688772,u=5,h=s.OpenEnded;class p{static{this.instance=null}static local(){return null===p.instance&&(p.instance=new p),p.instance}execute(t,e,r,n,o){return new P(t,e,r)}}class P extends r{constructor(t,e,r){super(t,!1,!0),this._curveHelper=new n,this._width=(void 0!==e.width?e.width:u)*r,this._arrowType=void 0!==e.geometricEffectArrowType?e.geometricEffectArrowType:void 0!==e.arrowType?e.arrowType:h,this._offsetFlattenError=o*r}processPath(e){const r=t.createEmptyOptimizedCIM(e.geometryType);switch(this._arrowType){case s.OpenEnded:default:this._constructSimpleArrow(r,e,!0);break;case s.Block:this._constructSimpleArrow(r,e,!1);break;case s.Crossed:this._constructCrossedArrow(r,e)}return r}_constructSimpleArrow(t,r,n){const o=r.pathLength();let s=this._width;o<2*s&&(s=o/2);const i=this._curveHelper.getSubCurve(r,0,o-s);if(!i||!i.nextPath())return;i.seekPathStart();const c=s/2;if(this._curveHelper.isEmpty(i))return;const u=e(i),h=this._constructOffset(u,-c);if(!h)return;const p=this._constructOffset(u,c);if(!p)return;const P=this._constructArrowBasePoint(h,-c/2);if(!P)return;const l=this._constructArrowBasePoint(p,c/2);if(!l)return;r.seekInPath(r.pathSize-1);const a=[r.x,r.y];t.pushPath(p),t.nextPath(),t.nextPoint(),t.setControlPoint(),t.pushPoint(l),t.nextPoint(),t.setControlPoint(),t.pushPoint(a),t.nextPoint(),t.setControlPoint(),t.pushPoint(P),t.nextPoint(),t.setControlPoint(),t.pushPoints(h.reverse()),t.setControlPoint(),n||(t.setControlPointAt(0),t.setControlPointAt(t.pathSize-1),t.pushPoint(p[0])),t.reset()}_constructCrossedArrow(t,r){const n=r.pathLength();let o=this._width;n<o*(1+c+1)&&(o=n/(1+c+1)),r.seekPathStart();const s=this._curveHelper.getSubCurve(r,0,n-o*(1+c));if(!s)return;s.nextPath();const i=o/2;if(this._curveHelper.isEmpty(s))return;const u=e(s),h=this._constructOffset(u,i);if(!h)return;const p=this._constructOffset(u,-i);if(!p)return;const P=this._curveHelper.getSubCurve(r,0,n-o);if(!P)return;if(P.nextPath(),this._curveHelper.isEmpty(P))return;const l=e(P),a=this._constructOffset(l,i);if(!a)return;const f=this._constructOffset(l,-i);if(!f)return;const _=a[a.length-1],m=this._constructArrowBasePoint(a,i/2);if(!m)return;const C=f[f.length-1],w=this._constructArrowBasePoint(f,-i/2);if(!w)return;r.seekInPath(r.pathSize-1);const x=[r.x,r.y];t.pushPath(h),t.nextPath(),t.nextPoint(),t.setControlPoint(),t.pushPoint(C),t.nextPoint(),t.setControlPoint(),t.pushPoint(w),t.nextPoint(),t.setControlPoint(),t.pushPoint(x),t.nextPoint(),t.setControlPoint(),t.pushPoint(m),t.nextPoint(),t.setControlPoint(),t.pushPoint(_),t.nextPoint(),t.setControlPoint(),t.pushPoints(p.reverse()),t.nextPoint(),t.setControlPoint(),t.reset()}_constructOffset(t,e){return this._curveHelper.offset(t,e,i.Rounded,4,this._offsetFlattenError)}_constructArrowBasePoint(t,e){if(!t||t.length<2)return null;const r=t[t.length-2],n=t[t.length-1],o=[n[0]-r[0],n[1]-r[1]];return this._curveHelper.normalize(o),[n[0]+o[1]*e,n[1]-o[0]*e]}}export{p as EffectArrow};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{GeometryCursor as e}from"../../../geometry/GeometryCursor.js";import{collectMultipath as t}from"../../../geometry/geometryCursorCollectUtils.js";import i from"../../../geometry/SpatialReference.js";import{clipCursorToTileExtent as s}from"../CIMEffects.js";import{CurveHelper as r,pixelTolerance as n}from"../CurveHelper.js";import{GeometricEffectOffsetMethod as o}from"../enums.js";class m{static local(){return null===m.instance&&(m.instance=new m),m.instance}execute(e,t,i,s,r,n,o){return new l(e,t,i,s,r,n,o)}}
|
|
5
|
+
import{GeometryCursor as e}from"../../../geometry/GeometryCursor.js";import{collectMultipath as t}from"../../../geometry/geometryCursorCollectUtils.js";import i from"../../../geometry/SpatialReference.js";import{clipCursorToTileExtent as s}from"../CIMEffects.js";import{CurveHelper as r,pixelTolerance as n}from"../CurveHelper.js";import{GeometricEffectOffsetMethod as o}from"../enums.js";class m{static{this.instance=null}static local(){return null===m.instance&&(m.instance=new m),m.instance}execute(e,t,i,s,r,n,o){return new l(e,t,i,s,r,n,o)}}class l{constructor(e,t,i,s,o,m,l){this._preventClipping=l,this._inputGeometries=e,this._tileKey=s,this._geometryEngine=o,this._curveHelper=new r,this._size=(void 0!==t.size?t.size:1)*i,this._maxInflateSize=m*i,this._offsetFlattenError=n*i}next(){let r;for(;r=this._inputGeometries.next();){if(0===this._size)return r;if("esriGeometryEnvelope"===r.geometryType)if(this._size>0){const i=e.createEmptyOptimizedCIM(r.geometryType),s=t(r)[0],n=this._curveHelper.offset(s,this._size,o.Rounded,4,this._offsetFlattenError);if(n)return i.pushPath(n),i}else if(this._size<0){const t=r.asJSON();if(Math.min(t.xmax-t.xmin,t.ymax-t.ymin)+2*this._size>0)return e.fromJSONCIM({xmin:t.xmin-this._size,xmax:t.xmax+this._size,ymin:t.ymin-this._size,ymax:t.ymax+this._size})}const n=this._geometryEngine;if(null==n)return null;const m=!this._preventClipping&&this._tileKey?s(r,this._maxInflateSize):r;if(!m)continue;const l=n.buffer(i.WebMercator,m.asJSON(),this._size,1);return l?e.fromJSONCIM(l):null}return null}}export{m as EffectBuffer};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{GeometryCursor as s}from"../../../geometry/GeometryCursor.js";import{collectMultipath as t}from"../../../geometry/geometryCursorCollectUtils.js";import{getPathLength as i}from"../../../geometry/support/coordsUtils.js";import{setId as h}from"../CIMCursor.js";import{GeometricEffectControlMeasureLineRule as e}from"../enums.js";class r{static local(){return null===r.instance&&(r.instance=new r),r.instance}execute(s,t,i,h,e){return new _(s,t,i)}}r.instance=null;class _{constructor(s,t,i){this._defaultPointSize=20,this._inputGeometries=s,this._geomUnitsPerPoint=i,this._rule=t.rule??e.FullGeometry,this._defaultSize=this._defaultPointSize*i}next(){let i;for(;i=this._inputGeometries.next();){const h=this._processGeom(t(i));if(h?.length)return s.fromJSONCIM({paths:h})}return null}_clone(s){return[s[0],s[1]]}_mid(s,t){return[(s[0]+t[0])/2,(s[1]+t[1])/2]}_mix(s,t,i,h){return[s[0]*t+i[0]*h,s[1]*t+i[1]*h]}_add(s,t){return[s[0]+t[0],s[1]+t[1]]}_add2(s,t,i){return[s[0]+t,s[1]+i]}_sub(s,t){return[s[0]-t[0],s[1]-t[1]]}_dist(s,t){return Math.sqrt((s[0]-t[0])*(s[0]-t[0])+(s[1]-t[1])*(s[1]-t[1]))}_norm(s){return Math.sqrt(s[0]*s[0]+s[1]*s[1])}_normalize(s,t=1){const i=t/this._norm(s);s[0]*=i,s[1]*=i}_leftPerpendicular(s){const t=-s[1],i=s[0];s[0]=t,s[1]=i}_leftPerp(s){return[-s[1],s[0]]}_rightPerpendicular(s){const t=s[1],i=-s[0];s[0]=t,s[1]=i}_rightPerp(s){return[s[1],-s[0]]}_dotProduct(s,t){return s[0]*t[0]+s[1]*t[1]}_crossProduct(s,t){return s[0]*t[1]-s[1]*t[0]}_rotateDirect(s,t,i){const h=s[0]*t-s[1]*i,e=s[0]*i+s[1]*t;s[0]=h,s[1]=e}_makeCtrlPt(s){const t=[s[0],s[1]];return h(t,1),t}_addAngledTicks(s,t,i,h){const e=this._sub(i,t);this._normalize(e);const r=this._crossProduct(e,this._sub(h,t));let _;_=r>0?this._rightPerp(e):this._leftPerp(e);const c=Math.abs(r)/2,u=[];u.push([t[0]+(_[0]-e[0])*c,t[1]+(_[1]-e[1])*c]),u.push(t),u.push(i),u.push([i[0]+(_[0]+e[0])*c,i[1]+(_[1]+e[1])*c]),s.push(u)}_addBezier2(s,t,i,h,e){if(0==e--)return void s.push(h);const r=this._mid(t,i),_=this._mid(i,h),c=this._mid(r,_);this._addBezier2(s,t,r,c,e),this._addBezier2(s,c,_,h,e)}_addBezier3(s,t,i,h,e,r){if(0==r--)return void s.push(e);const _=this._mid(t,i),c=this._mid(i,h),u=this._mid(h,e),o=this._mid(_,c),a=this._mid(c,u),n=this._mid(o,a);this._addBezier3(s,t,_,o,n,r),this._addBezier3(s,n,a,u,e,r)}_add90DegArc(s,t,i,h,e){const r=e??this._crossProduct(this._sub(i,t),this._sub(h,t))>0,_=this._mid(t,i),c=this._sub(_,t);r?this._leftPerpendicular(c):this._rightPerpendicular(c),_[0]+=c[0],_[1]+=c[1],this._addBezier3(s,t,this._mix(t,.33333,_,.66667),this._mix(i,.33333,_,.66667),i,4)}_addArrow(s,t,i){const h=t[0],e=t[1],r=t[t.length-1],_=this._sub(h,e),c=this._norm(_);this._normalize(_);const u=Math.abs(this._crossProduct(_,this._sub(r,e)));let o=this._dotProduct(_,this._sub(r,e));o<.05*c?o=.05*c:o>.95*c&&(o=.95*c);const a=.5*u,n=this._leftPerp(_),p=[e[0]+_[0]*o,e[1]+_[1]*o],d=t.length-1,l=[];l.push(i?[-n[0],-n[1]]:n);let b=[-_[0],-_[1]];for(let P=1;P<d-1;P++){const s=this._sub(t[P+1],t[P]);this._normalize(s);const i=this._dotProduct(s,b),h=this._crossProduct(s,b),e=Math.sqrt((1+i)/2),r=this._sub(s,b);this._normalize(r),r[0]/=e,r[1]/=e,l.push(h<0?[-r[0],-r[1]]:r),b=s}l.push(this._rightPerp(b));for(let P=l.length-1;P>0;P--)s.push([t[P][0]+l[P][0]*a,t[P][1]+l[P][1]*a]);s.push([p[0]+l[0][0]*a,p[1]+l[0][1]*a]),s.push([p[0]+l[0][0]*u,p[1]+l[0][1]*u]),s.push(h),s.push([p[0]-l[0][0]*u,p[1]-l[0][1]*u]),s.push([p[0]-l[0][0]*a,p[1]-l[0][1]*a]);for(let P=1;P<l.length;P++)s.push([t[P][0]-l[P][0]*a,t[P][1]-l[P][1]*a])}_addDash(s,t,i){const h=this._norm(i)/7;this._normalize(i);let e=[];for(let r=0;r<=7;r++)e.push([t[0]+i[0]*r*h,t[1]+i[1]*r*h]),1&r&&(s.push(e),e=[])}_cp2(s,t,i){return s.length>=2?s[1]:this._add2(s[0],t*this._defaultSize,i*this._defaultSize)}_cp3(s,t,i,h){if(s.length>=3)return s[2];const e=this._mix(s[0],1-i,t,i),r=this._sub(t,s[0]);return this._normalize(r),this._rightPerpendicular(r),[e[0]+r[0]*h*this._defaultSize,e[1]+r[1]*h*this._defaultSize]}_arrowPath(s){if(s.length>2)return s;const t=s[0],i=this._cp2(s,-4,0),h=this._sub(t,i);this._normalize(h);const e=this._rightPerp(h);return[t,i,[t[0]+(e[0]-h[0])*this._defaultSize,t[1]+(e[1]-h[1])*this._defaultSize]]}_arrowLastSeg(s){const t=s[0],i=this._cp2(s,-4,0);let h;if(s.length>=3)h=s[s.length-1];else{const s=this._sub(t,i);this._normalize(s);const e=this._rightPerp(s);h=[t[0]+(e[0]-s[0])*this._defaultSize,t[1]+(e[1]-s[1])*this._defaultSize]}return[i,h]}_processGeom(s){if(!s)return null;const t=[];for(const r of s){const s=r.length>1&&i(r)<this._defaultSize;if(!r||0===r.length||s)continue;const _=r.length;let c=r[0];switch(this._rule){case e.PerpendicularFromFirstSegment:{const s=this._cp2(r,0,-1),i=this._cp3(r,s,.5,4),h=[];h.push(i),h.push(this._mid(c,s)),t.push(h);break}case e.ReversedFirstSegment:{const s=this._cp2(r,0,-1);t.push([s,c]);break}case e.PerpendicularToSecondSegment:{if(r.length<3)return[];const s=this._cp2(r,-4,1),i=this._cp3(r,s,.882353,-1.94),h=[];h.push(this._mid(s,i)),h.push(c),t.push(h);break}case e.SecondSegmentWithTicks:{if(r.length<3)return[];const s=this._cp2(r,-4,1),i=this._cp3(r,s,.882353,-1.94),h=this._sub(i,s);let e;e=this._crossProduct(h,this._sub(c,s))>0?this._rightPerp(h):this._leftPerp(h);const _=[];_.push([s[0]+(e[0]-h[0])/3,s[1]+(e[1]-h[1])/3]),_.push(s),_.push(i),_.push([i[0]+(e[0]+h[0])/3,i[1]+(e[1]+h[1])/3]),t.push(_);break}case e.DoublePerpendicular:{const s=this._cp2(r,0,-1),i=this._cp3(r,s,.5,3),h=this._mid(c,s),e=this._sub(h,i);this._normalize(e);const _=this._crossProduct(e,this._sub(c,i));this._leftPerpendicular(e);const u=[];u.push(c),u.push([i[0]+e[0]*_,i[1]+e[1]*_]),t.push(u);const o=[];o.push([i[0]-e[0]*_,i[1]-e[1]*_]),o.push(s),t.push(o);break}case e.OppositeToFirstSegment:{const s=this._cp2(r,0,-1),i=this._cp3(r,s,.5,3),h=this._mid(c,s),e=this._sub(h,i);this._normalize(e);const _=this._crossProduct(e,this._sub(c,i));this._leftPerpendicular(e);const u=[];u.push([i[0]+e[0]*_,i[1]+e[1]*_]),u.push([i[0]-e[0]*_,i[1]-e[1]*_]),t.push(u);break}case e.TriplePerpendicular:{const s=this._cp2(r,0,-1),i=this._cp3(r,s,.5,4),h=this._mid(c,s),e=this._sub(h,i);this._normalize(e);const _=this._crossProduct(e,this._sub(c,i));this._leftPerpendicular(e);const u=[];u.push([i[0]+e[0]*_*.8,i[1]+e[1]*_*.8]),u.push([h[0]+.8*(c[0]-h[0]),h[1]+.8*(c[1]-h[1])]),t.push(u),t.push([i,h]);const o=[];o.push([i[0]-e[0]*_*.8,i[1]-e[1]*_*.8]),o.push([h[0]+.8*(s[0]-h[0]),h[1]+.8*(s[1]-h[1])]),t.push(o);break}case e.HalfCircleFirstSegment:{const s=this._cp2(r,0,-1),i=this._cp3(r,s,.5,4),h=this._mid(c,s);let e=this._sub(s,c);const _=Math.cos(Math.PI/18),u=Math.sin(Math.PI/18),o=Math.sqrt((1+_)/2),a=Math.sqrt((1-_)/2),n=[];let p;this._crossProduct(e,this._sub(i,c))>0?(n.push(c),e=this._sub(c,h),p=s):(n.push(s),e=this._sub(s,h),p=c),this._rotateDirect(e,o,a),e[0]/=o,e[1]/=o;for(let t=1;t<=18;t++)n.push(this._add(h,e)),this._rotateDirect(e,_,u);n.push(p),t.push(n);break}case e.HalfCircleSecondSegment:{const s=this._cp2(r,0,-1),i=this._cp3(r,s,1,-1);let h=this._sub(c,s);this._normalize(h);const e=this._crossProduct(h,this._sub(i,s))/2;this._leftPerpendicular(h);const _=[s[0]+h[0]*e,s[1]+h[1]*e];h=this._sub(s,_);const u=Math.cos(Math.PI/18);let o=Math.sin(Math.PI/18);e>0&&(o=-o);const a=[s];for(let t=1;t<=18;t++)this._rotateDirect(h,u,o),a.push(this._add(_,h));t.push(a);break}case e.HalfCircleExtended:{const s=this._cp2(r,0,-2),i=this._cp3(r,s,1,-1);let h;if(_>=4)h=r[3];else{const t=this._sub(c,s);h=this._add(i,t)}const e=this._dist(s,i)/2/.75,u=this._sub(s,c);this._normalize(u,e);const o=this._sub(i,h);this._normalize(o,e);const a=[h,i];t.push(a);const n=[this._clone(i)];this._addBezier3(n,i,this._add(i,o),this._add(s,u),s,4),n.push(c),t.push(n);break}case e.OpenCircle:{const s=this._cp2(r,-2,0),i=this._sub(s,c),h=Math.cos(Math.PI/18),e=-Math.sin(Math.PI/18),_=[s];for(let t=1;t<=33;t++)this._rotateDirect(i,h,e),_.push(this._add(c,i));t.push(_);break}case e.CoverageEdgesWithTicks:{const s=this._cp2(r,0,-1);let i,h;if(_>=3)i=r[2];else{const t=this._sub(s,c),h=this._leftPerp(t);i=[c[0]+h[0]-.25*t[0],c[1]+h[1]-.25*t[1]]}if(_>=4)h=r[3];else{const t=this._mid(c,s),e=this._sub(c,s);this._normalize(e),this._leftPerpendicular(e);const r=this._crossProduct(e,this._sub(i,t));this._rightPerpendicular(e),h=[i[0]+e[0]*r*2,i[1]+e[1]*r*2]}const e=this._sub(s,c);let u,o;u=this._crossProduct(e,this._sub(i,c))>0?this._rightPerp(e):this._leftPerp(e),o=[],o.push(i),o.push(c),o.push([c[0]+(u[0]-e[0])/3,c[1]+(u[1]-e[1])/3]),t.push(o),u=this._crossProduct(e,this._sub(h,s))>0?this._rightPerp(e):this._leftPerp(e),o=[],o.push([s[0]+(u[0]+e[0])/3,s[1]+(u[1]+e[1])/3]),o.push(s),o.push(h),t.push(o);break}case e.GapExtentWithDoubleTicks:{const s=this._cp2(r,0,2),i=this._cp3(r,s,0,1);let h;if(_>=4)h=r[3];else{const t=this._sub(s,c);h=this._add(i,t)}this._addAngledTicks(t,c,s,this._mid(i,h)),this._addAngledTicks(t,i,h,this._mid(c,s));break}case e.GapExtentMidline:{const s=this._cp2(r,2,0),i=this._cp3(r,s,0,1);let h;if(_>=4)h=r[3];else{const t=this._sub(s,c);h=this._add(i,t)}const e=[];e.push(this._mid(c,i)),e.push(this._mid(s,h)),t.push(e);break}case e.Chevron:{const s=this._cp2(r,-1,-1);let i;if(_>=3)i=r[2];else{const t=this._sub(s,c);this._leftPerpendicular(t),i=this._add(c,t)}t.push([s,this._makeCtrlPt(c),i]);break}case e.PerpendicularWithArc:{const s=this._cp2(r,0,-2),i=this._cp3(r,s,.5,-1),h=this._sub(s,c),e=this._norm(h);h[0]/=e,h[1]/=e;const u=this._crossProduct(h,this._sub(i,c));let o=this._dotProduct(h,this._sub(i,c));o<.05*e?o=.05*e:o>.95*e&&(o=.95*e);const a=[c[0]+h[0]*o,c[1]+h[1]*o];let n=this._leftPerp(h),p=[];if(p.push([a[0]-n[0]*u,a[1]-n[1]*u]),p.push([a[0]+n[0]*u,a[1]+n[1]*u]),t.push(p),_>=4){const s=r[3];let i=this._dotProduct(h,this._sub(s,c));i<.1*e?i=.1*e:i>.9*e&&(i=.9*e);const _=[c[0]+h[0]*i,c[1]+h[1]*i],u=this._crossProduct(h,this._sub(s,c)),o=[];o.push([_[0]-n[0]*u,_[1]-n[1]*u]),o.push([_[0]+n[0]*u,_[1]+n[1]*u]),t.push(o)}const d=[s[0]+n[0]*u,s[1]+n[1]*u];n=this._sub(s,d);const l=Math.cos(Math.PI/18);let b=Math.sin(Math.PI/18);u<0&&(b=-b),p=[c,s];for(let t=1;t<=9;t++)this._rotateDirect(n,l,b),p.push(this._add(d,n));t.push(p);break}case e.ClosedHalfCircle:{const s=this._cp2(r,2,0),i=this._mid(c,s),h=this._sub(s,i),e=Math.cos(Math.PI/18),_=Math.sin(Math.PI/18),u=[c,s];for(let t=1;t<=18;t++)this._rotateDirect(h,e,_),u.push(this._add(i,h));t.push(u);break}case e.TripleParallelExtended:{const s=this._cp2(r,0,-2),i=this._cp3(r,s,1,-2),e=this._mid(c,s),_=this._sub(i,s);this._normalize(_);const u=Math.abs(this._crossProduct(_,this._sub(e,s)))/2,o=this._dist(s,i),a=[s,c];a.push([c[0]+_[0]*o*.5,c[1]+_[1]*o*.5]),t.push(a);const n=[];n.push([e[0]-_[0]*u,e[1]-_[1]*u]),n.push([e[0]+_[0]*o*.375,e[1]+_[1]*o*.375]),h(n[n.length-1],1),n.push([e[0]+_[0]*o*.75,e[1]+_[1]*o*.75]),t.push(n);const p=[s,i];t.push(p);break}case e.ParallelWithTicks:{const s=this._cp2(r,3,0),i=this._cp3(r,s,.5,-1),h=this._sub(i,s);this._normalize(h);const e=this._crossProduct(h,this._sub(i,c));this._leftPerpendicular(h),this._addAngledTicks(t,c,s,i),this._addAngledTicks(t,this._mix(c,1,h,e),this._mix(s,1,h,e),this._mid(c,s));break}case e.Parallel:{const s=this._cp2(r,3,0),i=this._cp3(r,s,.5,-1),h=this._sub(s,c);this._normalize(h);const e=this._leftPerp(h),_=this._crossProduct(h,this._sub(i,c));let u=[c,s];t.push(u),u=[],u.push([c[0]+e[0]*_,c[1]+e[1]*_]),u.push([s[0]+e[0]*_,s[1]+e[1]*_]),t.push(u);break}case e.PerpendicularToFirstSegment:{const s=this._cp2(r,3,0),i=this._cp3(r,s,.5,-1),h=this._mid(c,s),e=this._sub(s,c);this._normalize(e);const _=this._crossProduct(e,this._sub(i,c));this._leftPerpendicular(e);const u=[];u.push([h[0]-e[0]*_*.25,h[1]-e[1]*_*.25]),u.push([h[0]+e[0]*_*1.25,h[1]+e[1]*_*1.25]),t.push(u);break}case e.ParallelOffset:{const s=this._cp2(r,3,0),i=this._cp3(r,s,.5,-1),h=this._sub(s,c);this._normalize(h);const e=this._crossProduct(h,this._sub(i,c));this._leftPerpendicular(h);const _=[];_.push([c[0]-h[0]*e,c[1]-h[1]*e]),_.push([s[0]-h[0]*e,s[1]-h[1]*e]),t.push(_);const u=[];u.push([c[0]+h[0]*e,c[1]+h[1]*e]),u.push([s[0]+h[0]*e,s[1]+h[1]*e]),t.push(u);break}case e.OffsetOpposite:{const s=this._cp2(r,3,0),i=this._cp3(r,s,.5,-1),h=this._sub(s,c);this._normalize(h);const e=this._crossProduct(h,this._sub(i,c));this._leftPerpendicular(h);const _=[];_.push([c[0]-h[0]*e,c[1]-h[1]*e]),_.push([s[0]-h[0]*e,s[1]-h[1]*e]),t.push(_);break}case e.OffsetSame:{const s=this._cp2(r,3,0),i=this._cp3(r,s,.5,-1),h=this._sub(s,c);this._normalize(h);const e=this._crossProduct(h,this._sub(i,c));this._leftPerpendicular(h);const _=[];_.push([c[0]+h[0]*e,c[1]+h[1]*e]),_.push([s[0]+h[0]*e,s[1]+h[1]*e]),t.push(_);break}case e.CircleWithArc:{let s=this._cp2(r,3,0);const i=this._cp3(r,s,.5,-1);let e,u;if(_>=4)e=r[3],u=this._crossProduct(this._sub(e,s),this._sub(i,s))>0;else{e=s,u=this._crossProduct(this._sub(e,c),this._sub(i,c))>0;const t=24*this._geomUnitsPerPoint,h=this._sub(e,c);this._normalize(h,t);const r=Math.sqrt(2)/2;this._rotateDirect(h,r,u?r:-r),s=this._add(c,h)}const o=this._sub(s,c),a=Math.cos(Math.PI/18),n=Math.sin(Math.PI/18),p=[s];for(let t=1;t<=36;t++)this._rotateDirect(o,a,n),p.push(this._add(c,o));this._add90DegArc(p,s,e,i,u),h(p[p.length-8],1),t.push(p);break}case e.DoubleJog:{let s,i=this._cp2(r,-3,1),h=this._cp3(r,i,-1,-.5);if(_>=4)s=r[3];else{const t=c;c=i,s=h;const e=this._dist(c,t),r=this._dist(s,t);let _=30*this._geomUnitsPerPoint;.5*e<_&&(_=.5*e),.5*r<_&&(_=.5*r),i=this._mix(c,_/e,t,(e-_)/e),h=this._mix(s,_/r,t,(r-_)/r)}const e=this._mid(c,i),u=this._mid(s,h),o=this._dist(c,i),a=this._dist(h,s);let n=Math.min(o,a)/8;n=Math.min(n,24*this._geomUnitsPerPoint);const p=Math.cos(Math.PI/4);let d=this._sub(c,i);this._normalize(d,n),this._crossProduct(d,this._sub(s,i))>0?this._rotateDirect(d,p,-p):this._rotateDirect(d,p,p);let l=[];l.push(i),l.push(this._add(e,d)),l.push(this._sub(e,d)),l.push(c),t.push(l),d=this._sub(s,h),this._normalize(d,n),this._crossProduct(d,this._sub(c,h))<0?this._rotateDirect(d,p,p):this._rotateDirect(d,p,-p),l=[],l.push(h),l.push(this._add(u,d)),l.push(this._sub(u,d)),l.push(s),t.push(l);break}case e.PerpendicularOffset:{const s=this._cp2(r,-4,1),i=this._cp3(r,s,.882353,-1.94),h=this._sub(i,s);this._crossProduct(h,this._sub(c,s))>0?this._rightPerpendicular(h):this._leftPerpendicular(h);const e=[h[0]/8,h[1]/8],_=this._sub(this._mid(s,i),e);t.push([_,c]);break}case e.LineExcludingLastSegment:{const s=this._arrowPath(r),i=[];let h=s.length-2;for(;h--;)i.push(s[h]);t.push(i);break}case e.MultivertexArrow:{const s=this._arrowPath(r),i=[];this._addArrow(i,s,!1),t.push(i);break}case e.CrossedArrow:{const s=this._arrowPath(r),i=[];this._addArrow(i,s,!0),t.push(i);break}case e.ChevronArrow:{const[s,i]=this._arrowLastSeg(r),h=10*this._geomUnitsPerPoint,e=this._sub(c,s),_=this._norm(e);this._normalize(e);const u=this._crossProduct(e,this._sub(i,s));let o=this._dotProduct(e,this._sub(i,s));o<.05*_?o=.05*_:o>.95*_-h&&(o=.95*_-h);const a=[s[0]+e[0]*o,s[1]+e[1]*o],n=this._leftPerp(e),p=[];p.push([a[0]+n[0]*u+e[0]*h,a[1]+n[1]*u+e[1]*h]),p.push(c),p.push([a[0]-n[0]*u+e[0]*h,a[1]-n[1]*u+e[1]*h]),t.push(p);break}case e.ChevronArrowOffset:{const[s,i]=this._arrowLastSeg(r),h=this._sub(c,s),e=this._norm(h);this._normalize(h);const _=this._crossProduct(h,this._sub(i,s));let u=this._dotProduct(h,this._sub(i,s));u<.05*e?u=.05*e:u>.95*e&&(u=.95*e);const o=[s[0]+h[0]*u,s[1]+h[1]*u];this._leftPerpendicular(h);const a=[];a.push([o[0]+h[0]*_*.5,o[1]+h[1]*_*.5]),a.push(this._mid(o,c)),a.push([o[0]-h[0]*_*.5,o[1]-h[1]*_*.5]),t.push(a);break}case e.PartialFirstSegment:{const[s,i]=this._arrowLastSeg(r),h=this._sub(c,s),e=this._norm(h);this._normalize(h);let _=this._dotProduct(h,this._sub(i,s));_<.05*e?_=.05*e:_>.95*e&&(_=.95*e);const u=[s[0]+h[0]*_,s[1]+h[1]*_];t.push([s,u]);break}case e.Arch:{const s=this._cp2(r,0,-1),i=this._cp3(r,s,.5,1),h=this._sub(c,s),e=this._mix(i,1,h,.55),_=this._mix(i,1,h,-.55),u=[c];this._addBezier2(u,c,e,i,4),this._addBezier2(u,i,_,s,4),t.push(u);break}case e.CurvedParallelTicks:{const s=this._cp2(r,-4,1),i=this._cp3(r,s,.882353,-1.94),h=this._sub(i,s);this._crossProduct(h,this._sub(c,s))>0?this._rightPerpendicular(h):this._leftPerpendicular(h);const e=[h[0]/8,h[1]/8],_=this._sub(this._mid(s,i),e),u=this._sub(this._mix(s,.75,i,.25),e),o=this._sub(this._mix(s,.25,i,.75),e),a=[s];this._addBezier2(a,s,u,_,3),this._addBezier2(a,_,o,i,3),t.push(a);for(let r=0;r<8;r++){const s=a[2*r+1],i=[this._clone(s)];i.push(this._add(s,[h[0]/4,h[1]/4])),t.push(i)}break}case e.Arc90Degrees:{const s=this._cp2(r,0,-1),i=this._cp3(r,s,.5,1),h=[s];this._add90DegArc(h,s,c,i),t.push(h);break}case e.TipWithPerpendicularAndTicks:{const[s,i]=this._arrowLastSeg(r),h=10*this._geomUnitsPerPoint,e=this._sub(c,s),_=this._norm(e);this._normalize(e);let u=this._crossProduct(e,this._sub(i,s)),o=this._dotProduct(e,this._sub(i,s));o<.05*_?o=.05*_:o>.95*_-h&&(o=.95*_-h);const a=this._leftPerp(e),n=[c[0]-e[0]*h,c[1]-e[1]*h],p=.5*Math.max(_-o-h,h);u=Math.abs(u);const d=[];d.push([n[0]+a[0]*(u+p)-e[0]*p,n[1]+a[1]*(u+p)-e[1]*p]),d.push([n[0]+a[0]*u,n[1]+a[1]*u]),d.push([n[0]-a[0]*u,n[1]-a[1]*u]),d.push([n[0]-a[0]*(u+p)-e[0]*p,n[1]-a[1]*(u+p)-e[1]*p]),t.push(d),t.push([n,c]);break}case e.ConcentricCircles:{const s=this._cp2(r,1,0),i=this._cp3(r,s,2,0),e=Math.cos(Math.PI/18),u=Math.sin(Math.PI/18);let o=this._dist(s,c),a=[o,0],n=[];for(let t=0;t<=36;t++)n.push(this._add(c,a)),this._rotateDirect(a,e,u);if(t.push(n),_>=4){n=[];const s=r[3];o=this._dist(s,c),a=[o,0];for(let t=0;t<=36;t++)n.push(this._add(c,a)),0===t&&(n.push(this._add(c,a)),h(n[1],1)),this._rotateDirect(a,e,u);t.push(n)}n=[],o=this._dist(i,c),a=[o,0];for(let t=0;t<=36;t++)n.push(this._add(c,a)),this._rotateDirect(a,e,u);t.push(n);break}case e.DoubleJogArrow:{c=this._arrowPath(r)[0];const[s,i]=this._arrowLastSeg(r),h=this._sub(c,s),e=this._norm(h);this._normalize(h);const _=Math.abs(this._crossProduct(h,this._sub(i,c)));let u=Math.abs(this._dotProduct(h,this._sub(i,c)));u<.05*e?u=.05*e:u>.95*e&&(u=.95*e);const o=Math.max(_,u),a=this._leftPerp(h);let n=[];const p=[c[0]-h[0]*u*.5+a[0]*_*.5,c[1]-h[1]*u*.5+a[1]*_*.5];n.push([p[0],p[1]]),p[0]+=h[0]*o*.5+a[0]*o*.4,p[1]+=h[1]*o*.5+a[1]*o*.4,n.push([p[0],p[1]]),p[0]-=a[0]*o*.25,p[1]-=a[1]*o*.25,n.push([p[0],p[1]]),p[0]+=h[0]*o*.5+a[0]*o*.4,p[1]+=h[1]*o*.5+a[1]*o*.4,n.push([p[0],p[1]]),t.push(n),n=[],p[0]=c[0]-h[0]*u*.5-a[0]*_*.5,p[1]=c[1]-h[1]*u*.5-a[1]*_*.5,n.push([p[0],p[1]]),p[0]+=h[0]*o*.5-a[0]*o*.4,p[1]+=h[1]*o*.5-a[1]*o*.4,n.push([p[0],p[1]]),p[0]+=a[0]*o*.25,p[1]+=a[1]*o*.25,n.push([p[0],p[1]]),p[0]+=h[0]*o*.5-a[0]*o*.4,p[1]+=h[1]*o*.5-a[1]*o*.4,n.push([p[0],p[1]]),t.push(n);break}case e.LinkedChevrons:{const s=this._cp2(r,-5,0),i=this._cp3(r,s,-.2,1),h=this._sub(c,s);this._normalize(h);const e=this._leftPerp(h),_=Math.abs(this._crossProduct(h,this._sub(i,s)));t.push([s,c]);const u=[];u.push([c[0]-h[0]*_+e[0]*_,c[1]-h[1]*_+e[1]*_]),u.push(c),u.push([c[0]-h[0]*_-e[0]*_,c[1]-h[1]*_-e[1]*_]),t.push(u),this._addDash(t,s,[-h[0]*_+e[0]*_,-h[1]*_+e[1]*_]),this._addDash(t,s,[-h[0]*_-e[0]*_,-h[1]*_-e[1]*_]);break}case e.SegmentThenHalfCircle:{const s=this._cp2(r,2,0),i=this._cp3(r,s,1.5,0);let h;h=_>=4?r[3]:this._cp3(r,s,1.25,-.5);const e=this._sub(s,c);this._normalize(e);const u=.5*this._dist(s,i),o=this._crossProduct(e,this._sub(h,c))>0,a=Math.cos(Math.PI/18);let n=Math.sin(Math.PI/18);o&&(n=-n);const p=[c,s];e[0]*=u,e[1]*=u;const d=this._add(s,e);e[0]=-e[0],e[1]=-e[1];for(let t=1;t<=18;t++)this._rotateDirect(e,a,n),p.push(this._add(d,e));t.push(p);break}case e.LineWithStraightTicks:{const s=this._cp2(r,-2,1),i=this._cp3(r,s,-1,-.5),h=this._sub(i,s);this._normalize(h);const e=this._dotProduct(h,this._sub(s,c)),_=this._dotProduct(h,this._sub(i,c));let u=[c];u.push([c[0]+h[0]*e,c[1]+h[1]*e]),u.push(s),t.push(u),u=[c],u.push([c[0]+h[0]*_,c[1]+h[1]*_]),u.push(i),t.push(u);break}case e.DoubleCurve:{const s=this._cp2(r,-5,-1),i=this._cp3(r,s,2,0),e=Math.atan2(1,5),_=Math.cos(e),u=Math.sin(e),o=this._sub(s,c),a=this._dist(c,s);this._normalize(o),this._rotateDirect(o,_,-u);const n=[c];n.push([c[0]+o[0]*a*.5,c[1]+o[1]*a*.5]),h(n[1],1),n.push([c[0]+o[0]*a*.8,c[1]+o[1]*a*.8]),this._addBezier2(n,n[2],[c[0]+o[0]*a,c[1]+o[1]*a],s,3);const p=this._sub(i,s),d=this._dist(s,i);this._normalize(p),this._rotateDirect(p,_,-u),this._addBezier2(n,s,[i[0]-p[0]*d,i[1]-p[1]*d],[i[0]-p[0]*d*.8,i[1]-p[1]*d*.8],3),n.push(i),t.push(n);break}case e.ParallelWithTicksByWidth:{const s=this._cp2(r,0,-1),i=this._cp3(r,s,.5,3),h=this._sub(s,c);this._normalize(h);const e=this._crossProduct(h,this._sub(i,c));this._leftPerpendicular(h),e>0?(this._addAngledTicks(t,c,[c[0]+h[0]*e,c[1]+h[1]*e],s),this._addAngledTicks(t,s,[s[0]+h[0]*e,s[1]+h[1]*e],c)):(this._addAngledTicks(t,[c[0]+h[0]*e,c[1]+h[1]*e],c,s),this._addAngledTicks(t,[s[0]+h[0]*e,s[1]+h[1]*e],c,s));break}case e.EnclosingRoundedRectangle:{const s=this._cp2(r,3,-2),t=[Math.min(c[0],s[0]),Math.max(c[1],s[1])],i=[Math.max(c[0],s[0]),Math.min(c[1],s[1])],h=i[0]-t[0],e=t[1]-i[1],_=Math.min(h,e)/10,u=[];u.push([t[0]+_+.75*(h-2*_),t[1]]),u.push([i[0]-_,t[1]]),this._add90DegArc(u,[i[0]-_,t[1]],[i[0],t[1]-_],[i[0],t[1]]),u.push([i[0],i[1]+_]),this._add90DegArc(u,[i[0],i[1]+_],[i[0]-_,i[1]],i),u.push([t[0]+_,i[1]]),this._add90DegArc(u,[t[0]+_,i[1]],[t[0],i[1]+_],[t[0],i[1]]),u.push([t[0],t[1]-_]),this._add90DegArc(u,[t[0],t[1]-_],[t[0]+_,t[1]],t),u.push([t[0]+_+.75*(h-2*_),t[1]]);break}case e.FullGeometry:default:t.push(r)}}return t}}export{r as EffectControlMeasureLine};
|
|
5
|
+
import{GeometryCursor as s}from"../../../geometry/GeometryCursor.js";import{collectMultipath as t}from"../../../geometry/geometryCursorCollectUtils.js";import{getPathLength as i}from"../../../geometry/support/coordsUtils.js";import{setId as h}from"../CIMCursor.js";import{GeometricEffectControlMeasureLineRule as e}from"../enums.js";class r{static{this.instance=null}static local(){return null===r.instance&&(r.instance=new r),r.instance}execute(s,t,i,h,e){return new _(s,t,i)}}class _{constructor(s,t,i){this._defaultPointSize=20,this._inputGeometries=s,this._geomUnitsPerPoint=i,this._rule=t.rule??e.FullGeometry,this._defaultSize=this._defaultPointSize*i}next(){let i;for(;i=this._inputGeometries.next();){const h=this._processGeom(t(i));if(h?.length)return s.fromJSONCIM({paths:h})}return null}_clone(s){return[s[0],s[1]]}_mid(s,t){return[(s[0]+t[0])/2,(s[1]+t[1])/2]}_mix(s,t,i,h){return[s[0]*t+i[0]*h,s[1]*t+i[1]*h]}_add(s,t){return[s[0]+t[0],s[1]+t[1]]}_add2(s,t,i){return[s[0]+t,s[1]+i]}_sub(s,t){return[s[0]-t[0],s[1]-t[1]]}_dist(s,t){return Math.sqrt((s[0]-t[0])*(s[0]-t[0])+(s[1]-t[1])*(s[1]-t[1]))}_norm(s){return Math.sqrt(s[0]*s[0]+s[1]*s[1])}_normalize(s,t=1){const i=t/this._norm(s);s[0]*=i,s[1]*=i}_leftPerpendicular(s){const t=-s[1],i=s[0];s[0]=t,s[1]=i}_leftPerp(s){return[-s[1],s[0]]}_rightPerpendicular(s){const t=s[1],i=-s[0];s[0]=t,s[1]=i}_rightPerp(s){return[s[1],-s[0]]}_dotProduct(s,t){return s[0]*t[0]+s[1]*t[1]}_crossProduct(s,t){return s[0]*t[1]-s[1]*t[0]}_rotateDirect(s,t,i){const h=s[0]*t-s[1]*i,e=s[0]*i+s[1]*t;s[0]=h,s[1]=e}_makeCtrlPt(s){const t=[s[0],s[1]];return h(t,1),t}_addAngledTicks(s,t,i,h){const e=this._sub(i,t);this._normalize(e);const r=this._crossProduct(e,this._sub(h,t));let _;_=r>0?this._rightPerp(e):this._leftPerp(e);const c=Math.abs(r)/2,u=[];u.push([t[0]+(_[0]-e[0])*c,t[1]+(_[1]-e[1])*c]),u.push(t),u.push(i),u.push([i[0]+(_[0]+e[0])*c,i[1]+(_[1]+e[1])*c]),s.push(u)}_addBezier2(s,t,i,h,e){if(0==e--)return void s.push(h);const r=this._mid(t,i),_=this._mid(i,h),c=this._mid(r,_);this._addBezier2(s,t,r,c,e),this._addBezier2(s,c,_,h,e)}_addBezier3(s,t,i,h,e,r){if(0==r--)return void s.push(e);const _=this._mid(t,i),c=this._mid(i,h),u=this._mid(h,e),o=this._mid(_,c),a=this._mid(c,u),n=this._mid(o,a);this._addBezier3(s,t,_,o,n,r),this._addBezier3(s,n,a,u,e,r)}_add90DegArc(s,t,i,h,e){const r=e??this._crossProduct(this._sub(i,t),this._sub(h,t))>0,_=this._mid(t,i),c=this._sub(_,t);r?this._leftPerpendicular(c):this._rightPerpendicular(c),_[0]+=c[0],_[1]+=c[1],this._addBezier3(s,t,this._mix(t,.33333,_,.66667),this._mix(i,.33333,_,.66667),i,4)}_addArrow(s,t,i){const h=t[0],e=t[1],r=t[t.length-1],_=this._sub(h,e),c=this._norm(_);this._normalize(_);const u=Math.abs(this._crossProduct(_,this._sub(r,e)));let o=this._dotProduct(_,this._sub(r,e));o<.05*c?o=.05*c:o>.95*c&&(o=.95*c);const a=.5*u,n=this._leftPerp(_),p=[e[0]+_[0]*o,e[1]+_[1]*o],d=t.length-1,l=[];l.push(i?[-n[0],-n[1]]:n);let b=[-_[0],-_[1]];for(let P=1;P<d-1;P++){const s=this._sub(t[P+1],t[P]);this._normalize(s);const i=this._dotProduct(s,b),h=this._crossProduct(s,b),e=Math.sqrt((1+i)/2),r=this._sub(s,b);this._normalize(r),r[0]/=e,r[1]/=e,l.push(h<0?[-r[0],-r[1]]:r),b=s}l.push(this._rightPerp(b));for(let P=l.length-1;P>0;P--)s.push([t[P][0]+l[P][0]*a,t[P][1]+l[P][1]*a]);s.push([p[0]+l[0][0]*a,p[1]+l[0][1]*a]),s.push([p[0]+l[0][0]*u,p[1]+l[0][1]*u]),s.push(h),s.push([p[0]-l[0][0]*u,p[1]-l[0][1]*u]),s.push([p[0]-l[0][0]*a,p[1]-l[0][1]*a]);for(let P=1;P<l.length;P++)s.push([t[P][0]-l[P][0]*a,t[P][1]-l[P][1]*a])}_addDash(s,t,i){const h=this._norm(i)/7;this._normalize(i);let e=[];for(let r=0;r<=7;r++)e.push([t[0]+i[0]*r*h,t[1]+i[1]*r*h]),1&r&&(s.push(e),e=[])}_cp2(s,t,i){return s.length>=2?s[1]:this._add2(s[0],t*this._defaultSize,i*this._defaultSize)}_cp3(s,t,i,h){if(s.length>=3)return s[2];const e=this._mix(s[0],1-i,t,i),r=this._sub(t,s[0]);return this._normalize(r),this._rightPerpendicular(r),[e[0]+r[0]*h*this._defaultSize,e[1]+r[1]*h*this._defaultSize]}_arrowPath(s){if(s.length>2)return s;const t=s[0],i=this._cp2(s,-4,0),h=this._sub(t,i);this._normalize(h);const e=this._rightPerp(h);return[t,i,[t[0]+(e[0]-h[0])*this._defaultSize,t[1]+(e[1]-h[1])*this._defaultSize]]}_arrowLastSeg(s){const t=s[0],i=this._cp2(s,-4,0);let h;if(s.length>=3)h=s[s.length-1];else{const s=this._sub(t,i);this._normalize(s);const e=this._rightPerp(s);h=[t[0]+(e[0]-s[0])*this._defaultSize,t[1]+(e[1]-s[1])*this._defaultSize]}return[i,h]}_processGeom(s){if(!s)return null;const t=[];for(const r of s){const s=r.length>1&&i(r)<this._defaultSize;if(!r||0===r.length||s)continue;const _=r.length;let c=r[0];switch(this._rule){case e.PerpendicularFromFirstSegment:{const s=this._cp2(r,0,-1),i=this._cp3(r,s,.5,4),h=[];h.push(i),h.push(this._mid(c,s)),t.push(h);break}case e.ReversedFirstSegment:{const s=this._cp2(r,0,-1);t.push([s,c]);break}case e.PerpendicularToSecondSegment:{if(r.length<3)return[];const s=this._cp2(r,-4,1),i=this._cp3(r,s,.882353,-1.94),h=[];h.push(this._mid(s,i)),h.push(c),t.push(h);break}case e.SecondSegmentWithTicks:{if(r.length<3)return[];const s=this._cp2(r,-4,1),i=this._cp3(r,s,.882353,-1.94),h=this._sub(i,s);let e;e=this._crossProduct(h,this._sub(c,s))>0?this._rightPerp(h):this._leftPerp(h);const _=[];_.push([s[0]+(e[0]-h[0])/3,s[1]+(e[1]-h[1])/3]),_.push(s),_.push(i),_.push([i[0]+(e[0]+h[0])/3,i[1]+(e[1]+h[1])/3]),t.push(_);break}case e.DoublePerpendicular:{const s=this._cp2(r,0,-1),i=this._cp3(r,s,.5,3),h=this._mid(c,s),e=this._sub(h,i);this._normalize(e);const _=this._crossProduct(e,this._sub(c,i));this._leftPerpendicular(e);const u=[];u.push(c),u.push([i[0]+e[0]*_,i[1]+e[1]*_]),t.push(u);const o=[];o.push([i[0]-e[0]*_,i[1]-e[1]*_]),o.push(s),t.push(o);break}case e.OppositeToFirstSegment:{const s=this._cp2(r,0,-1),i=this._cp3(r,s,.5,3),h=this._mid(c,s),e=this._sub(h,i);this._normalize(e);const _=this._crossProduct(e,this._sub(c,i));this._leftPerpendicular(e);const u=[];u.push([i[0]+e[0]*_,i[1]+e[1]*_]),u.push([i[0]-e[0]*_,i[1]-e[1]*_]),t.push(u);break}case e.TriplePerpendicular:{const s=this._cp2(r,0,-1),i=this._cp3(r,s,.5,4),h=this._mid(c,s),e=this._sub(h,i);this._normalize(e);const _=this._crossProduct(e,this._sub(c,i));this._leftPerpendicular(e);const u=[];u.push([i[0]+e[0]*_*.8,i[1]+e[1]*_*.8]),u.push([h[0]+.8*(c[0]-h[0]),h[1]+.8*(c[1]-h[1])]),t.push(u),t.push([i,h]);const o=[];o.push([i[0]-e[0]*_*.8,i[1]-e[1]*_*.8]),o.push([h[0]+.8*(s[0]-h[0]),h[1]+.8*(s[1]-h[1])]),t.push(o);break}case e.HalfCircleFirstSegment:{const s=this._cp2(r,0,-1),i=this._cp3(r,s,.5,4),h=this._mid(c,s);let e=this._sub(s,c);const _=Math.cos(Math.PI/18),u=Math.sin(Math.PI/18),o=Math.sqrt((1+_)/2),a=Math.sqrt((1-_)/2),n=[];let p;this._crossProduct(e,this._sub(i,c))>0?(n.push(c),e=this._sub(c,h),p=s):(n.push(s),e=this._sub(s,h),p=c),this._rotateDirect(e,o,a),e[0]/=o,e[1]/=o;for(let t=1;t<=18;t++)n.push(this._add(h,e)),this._rotateDirect(e,_,u);n.push(p),t.push(n);break}case e.HalfCircleSecondSegment:{const s=this._cp2(r,0,-1),i=this._cp3(r,s,1,-1);let h=this._sub(c,s);this._normalize(h);const e=this._crossProduct(h,this._sub(i,s))/2;this._leftPerpendicular(h);const _=[s[0]+h[0]*e,s[1]+h[1]*e];h=this._sub(s,_);const u=Math.cos(Math.PI/18);let o=Math.sin(Math.PI/18);e>0&&(o=-o);const a=[s];for(let t=1;t<=18;t++)this._rotateDirect(h,u,o),a.push(this._add(_,h));t.push(a);break}case e.HalfCircleExtended:{const s=this._cp2(r,0,-2),i=this._cp3(r,s,1,-1);let h;if(_>=4)h=r[3];else{const t=this._sub(c,s);h=this._add(i,t)}const e=this._dist(s,i)/2/.75,u=this._sub(s,c);this._normalize(u,e);const o=this._sub(i,h);this._normalize(o,e);const a=[h,i];t.push(a);const n=[this._clone(i)];this._addBezier3(n,i,this._add(i,o),this._add(s,u),s,4),n.push(c),t.push(n);break}case e.OpenCircle:{const s=this._cp2(r,-2,0),i=this._sub(s,c),h=Math.cos(Math.PI/18),e=-Math.sin(Math.PI/18),_=[s];for(let t=1;t<=33;t++)this._rotateDirect(i,h,e),_.push(this._add(c,i));t.push(_);break}case e.CoverageEdgesWithTicks:{const s=this._cp2(r,0,-1);let i,h;if(_>=3)i=r[2];else{const t=this._sub(s,c),h=this._leftPerp(t);i=[c[0]+h[0]-.25*t[0],c[1]+h[1]-.25*t[1]]}if(_>=4)h=r[3];else{const t=this._mid(c,s),e=this._sub(c,s);this._normalize(e),this._leftPerpendicular(e);const r=this._crossProduct(e,this._sub(i,t));this._rightPerpendicular(e),h=[i[0]+e[0]*r*2,i[1]+e[1]*r*2]}const e=this._sub(s,c);let u,o;u=this._crossProduct(e,this._sub(i,c))>0?this._rightPerp(e):this._leftPerp(e),o=[],o.push(i),o.push(c),o.push([c[0]+(u[0]-e[0])/3,c[1]+(u[1]-e[1])/3]),t.push(o),u=this._crossProduct(e,this._sub(h,s))>0?this._rightPerp(e):this._leftPerp(e),o=[],o.push([s[0]+(u[0]+e[0])/3,s[1]+(u[1]+e[1])/3]),o.push(s),o.push(h),t.push(o);break}case e.GapExtentWithDoubleTicks:{const s=this._cp2(r,0,2),i=this._cp3(r,s,0,1);let h;if(_>=4)h=r[3];else{const t=this._sub(s,c);h=this._add(i,t)}this._addAngledTicks(t,c,s,this._mid(i,h)),this._addAngledTicks(t,i,h,this._mid(c,s));break}case e.GapExtentMidline:{const s=this._cp2(r,2,0),i=this._cp3(r,s,0,1);let h;if(_>=4)h=r[3];else{const t=this._sub(s,c);h=this._add(i,t)}const e=[];e.push(this._mid(c,i)),e.push(this._mid(s,h)),t.push(e);break}case e.Chevron:{const s=this._cp2(r,-1,-1);let i;if(_>=3)i=r[2];else{const t=this._sub(s,c);this._leftPerpendicular(t),i=this._add(c,t)}t.push([s,this._makeCtrlPt(c),i]);break}case e.PerpendicularWithArc:{const s=this._cp2(r,0,-2),i=this._cp3(r,s,.5,-1),h=this._sub(s,c),e=this._norm(h);h[0]/=e,h[1]/=e;const u=this._crossProduct(h,this._sub(i,c));let o=this._dotProduct(h,this._sub(i,c));o<.05*e?o=.05*e:o>.95*e&&(o=.95*e);const a=[c[0]+h[0]*o,c[1]+h[1]*o];let n=this._leftPerp(h),p=[];if(p.push([a[0]-n[0]*u,a[1]-n[1]*u]),p.push([a[0]+n[0]*u,a[1]+n[1]*u]),t.push(p),_>=4){const s=r[3];let i=this._dotProduct(h,this._sub(s,c));i<.1*e?i=.1*e:i>.9*e&&(i=.9*e);const _=[c[0]+h[0]*i,c[1]+h[1]*i],u=this._crossProduct(h,this._sub(s,c)),o=[];o.push([_[0]-n[0]*u,_[1]-n[1]*u]),o.push([_[0]+n[0]*u,_[1]+n[1]*u]),t.push(o)}const d=[s[0]+n[0]*u,s[1]+n[1]*u];n=this._sub(s,d);const l=Math.cos(Math.PI/18);let b=Math.sin(Math.PI/18);u<0&&(b=-b),p=[c,s];for(let t=1;t<=9;t++)this._rotateDirect(n,l,b),p.push(this._add(d,n));t.push(p);break}case e.ClosedHalfCircle:{const s=this._cp2(r,2,0),i=this._mid(c,s),h=this._sub(s,i),e=Math.cos(Math.PI/18),_=Math.sin(Math.PI/18),u=[c,s];for(let t=1;t<=18;t++)this._rotateDirect(h,e,_),u.push(this._add(i,h));t.push(u);break}case e.TripleParallelExtended:{const s=this._cp2(r,0,-2),i=this._cp3(r,s,1,-2),e=this._mid(c,s),_=this._sub(i,s);this._normalize(_);const u=Math.abs(this._crossProduct(_,this._sub(e,s)))/2,o=this._dist(s,i),a=[s,c];a.push([c[0]+_[0]*o*.5,c[1]+_[1]*o*.5]),t.push(a);const n=[];n.push([e[0]-_[0]*u,e[1]-_[1]*u]),n.push([e[0]+_[0]*o*.375,e[1]+_[1]*o*.375]),h(n[n.length-1],1),n.push([e[0]+_[0]*o*.75,e[1]+_[1]*o*.75]),t.push(n);const p=[s,i];t.push(p);break}case e.ParallelWithTicks:{const s=this._cp2(r,3,0),i=this._cp3(r,s,.5,-1),h=this._sub(i,s);this._normalize(h);const e=this._crossProduct(h,this._sub(i,c));this._leftPerpendicular(h),this._addAngledTicks(t,c,s,i),this._addAngledTicks(t,this._mix(c,1,h,e),this._mix(s,1,h,e),this._mid(c,s));break}case e.Parallel:{const s=this._cp2(r,3,0),i=this._cp3(r,s,.5,-1),h=this._sub(s,c);this._normalize(h);const e=this._leftPerp(h),_=this._crossProduct(h,this._sub(i,c));let u=[c,s];t.push(u),u=[],u.push([c[0]+e[0]*_,c[1]+e[1]*_]),u.push([s[0]+e[0]*_,s[1]+e[1]*_]),t.push(u);break}case e.PerpendicularToFirstSegment:{const s=this._cp2(r,3,0),i=this._cp3(r,s,.5,-1),h=this._mid(c,s),e=this._sub(s,c);this._normalize(e);const _=this._crossProduct(e,this._sub(i,c));this._leftPerpendicular(e);const u=[];u.push([h[0]-e[0]*_*.25,h[1]-e[1]*_*.25]),u.push([h[0]+e[0]*_*1.25,h[1]+e[1]*_*1.25]),t.push(u);break}case e.ParallelOffset:{const s=this._cp2(r,3,0),i=this._cp3(r,s,.5,-1),h=this._sub(s,c);this._normalize(h);const e=this._crossProduct(h,this._sub(i,c));this._leftPerpendicular(h);const _=[];_.push([c[0]-h[0]*e,c[1]-h[1]*e]),_.push([s[0]-h[0]*e,s[1]-h[1]*e]),t.push(_);const u=[];u.push([c[0]+h[0]*e,c[1]+h[1]*e]),u.push([s[0]+h[0]*e,s[1]+h[1]*e]),t.push(u);break}case e.OffsetOpposite:{const s=this._cp2(r,3,0),i=this._cp3(r,s,.5,-1),h=this._sub(s,c);this._normalize(h);const e=this._crossProduct(h,this._sub(i,c));this._leftPerpendicular(h);const _=[];_.push([c[0]-h[0]*e,c[1]-h[1]*e]),_.push([s[0]-h[0]*e,s[1]-h[1]*e]),t.push(_);break}case e.OffsetSame:{const s=this._cp2(r,3,0),i=this._cp3(r,s,.5,-1),h=this._sub(s,c);this._normalize(h);const e=this._crossProduct(h,this._sub(i,c));this._leftPerpendicular(h);const _=[];_.push([c[0]+h[0]*e,c[1]+h[1]*e]),_.push([s[0]+h[0]*e,s[1]+h[1]*e]),t.push(_);break}case e.CircleWithArc:{let s=this._cp2(r,3,0);const i=this._cp3(r,s,.5,-1);let e,u;if(_>=4)e=r[3],u=this._crossProduct(this._sub(e,s),this._sub(i,s))>0;else{e=s,u=this._crossProduct(this._sub(e,c),this._sub(i,c))>0;const t=24*this._geomUnitsPerPoint,h=this._sub(e,c);this._normalize(h,t);const r=Math.sqrt(2)/2;this._rotateDirect(h,r,u?r:-r),s=this._add(c,h)}const o=this._sub(s,c),a=Math.cos(Math.PI/18),n=Math.sin(Math.PI/18),p=[s];for(let t=1;t<=36;t++)this._rotateDirect(o,a,n),p.push(this._add(c,o));this._add90DegArc(p,s,e,i,u),h(p[p.length-8],1),t.push(p);break}case e.DoubleJog:{let s,i=this._cp2(r,-3,1),h=this._cp3(r,i,-1,-.5);if(_>=4)s=r[3];else{const t=c;c=i,s=h;const e=this._dist(c,t),r=this._dist(s,t);let _=30*this._geomUnitsPerPoint;.5*e<_&&(_=.5*e),.5*r<_&&(_=.5*r),i=this._mix(c,_/e,t,(e-_)/e),h=this._mix(s,_/r,t,(r-_)/r)}const e=this._mid(c,i),u=this._mid(s,h),o=this._dist(c,i),a=this._dist(h,s);let n=Math.min(o,a)/8;n=Math.min(n,24*this._geomUnitsPerPoint);const p=Math.cos(Math.PI/4);let d=this._sub(c,i);this._normalize(d,n),this._crossProduct(d,this._sub(s,i))>0?this._rotateDirect(d,p,-p):this._rotateDirect(d,p,p);let l=[];l.push(i),l.push(this._add(e,d)),l.push(this._sub(e,d)),l.push(c),t.push(l),d=this._sub(s,h),this._normalize(d,n),this._crossProduct(d,this._sub(c,h))<0?this._rotateDirect(d,p,p):this._rotateDirect(d,p,-p),l=[],l.push(h),l.push(this._add(u,d)),l.push(this._sub(u,d)),l.push(s),t.push(l);break}case e.PerpendicularOffset:{const s=this._cp2(r,-4,1),i=this._cp3(r,s,.882353,-1.94),h=this._sub(i,s);this._crossProduct(h,this._sub(c,s))>0?this._rightPerpendicular(h):this._leftPerpendicular(h);const e=[h[0]/8,h[1]/8],_=this._sub(this._mid(s,i),e);t.push([_,c]);break}case e.LineExcludingLastSegment:{const s=this._arrowPath(r),i=[];let h=s.length-2;for(;h--;)i.push(s[h]);t.push(i);break}case e.MultivertexArrow:{const s=this._arrowPath(r),i=[];this._addArrow(i,s,!1),t.push(i);break}case e.CrossedArrow:{const s=this._arrowPath(r),i=[];this._addArrow(i,s,!0),t.push(i);break}case e.ChevronArrow:{const[s,i]=this._arrowLastSeg(r),h=10*this._geomUnitsPerPoint,e=this._sub(c,s),_=this._norm(e);this._normalize(e);const u=this._crossProduct(e,this._sub(i,s));let o=this._dotProduct(e,this._sub(i,s));o<.05*_?o=.05*_:o>.95*_-h&&(o=.95*_-h);const a=[s[0]+e[0]*o,s[1]+e[1]*o],n=this._leftPerp(e),p=[];p.push([a[0]+n[0]*u+e[0]*h,a[1]+n[1]*u+e[1]*h]),p.push(c),p.push([a[0]-n[0]*u+e[0]*h,a[1]-n[1]*u+e[1]*h]),t.push(p);break}case e.ChevronArrowOffset:{const[s,i]=this._arrowLastSeg(r),h=this._sub(c,s),e=this._norm(h);this._normalize(h);const _=this._crossProduct(h,this._sub(i,s));let u=this._dotProduct(h,this._sub(i,s));u<.05*e?u=.05*e:u>.95*e&&(u=.95*e);const o=[s[0]+h[0]*u,s[1]+h[1]*u];this._leftPerpendicular(h);const a=[];a.push([o[0]+h[0]*_*.5,o[1]+h[1]*_*.5]),a.push(this._mid(o,c)),a.push([o[0]-h[0]*_*.5,o[1]-h[1]*_*.5]),t.push(a);break}case e.PartialFirstSegment:{const[s,i]=this._arrowLastSeg(r),h=this._sub(c,s),e=this._norm(h);this._normalize(h);let _=this._dotProduct(h,this._sub(i,s));_<.05*e?_=.05*e:_>.95*e&&(_=.95*e);const u=[s[0]+h[0]*_,s[1]+h[1]*_];t.push([s,u]);break}case e.Arch:{const s=this._cp2(r,0,-1),i=this._cp3(r,s,.5,1),h=this._sub(c,s),e=this._mix(i,1,h,.55),_=this._mix(i,1,h,-.55),u=[c];this._addBezier2(u,c,e,i,4),this._addBezier2(u,i,_,s,4),t.push(u);break}case e.CurvedParallelTicks:{const s=this._cp2(r,-4,1),i=this._cp3(r,s,.882353,-1.94),h=this._sub(i,s);this._crossProduct(h,this._sub(c,s))>0?this._rightPerpendicular(h):this._leftPerpendicular(h);const e=[h[0]/8,h[1]/8],_=this._sub(this._mid(s,i),e),u=this._sub(this._mix(s,.75,i,.25),e),o=this._sub(this._mix(s,.25,i,.75),e),a=[s];this._addBezier2(a,s,u,_,3),this._addBezier2(a,_,o,i,3),t.push(a);for(let r=0;r<8;r++){const s=a[2*r+1],i=[this._clone(s)];i.push(this._add(s,[h[0]/4,h[1]/4])),t.push(i)}break}case e.Arc90Degrees:{const s=this._cp2(r,0,-1),i=this._cp3(r,s,.5,1),h=[s];this._add90DegArc(h,s,c,i),t.push(h);break}case e.TipWithPerpendicularAndTicks:{const[s,i]=this._arrowLastSeg(r),h=10*this._geomUnitsPerPoint,e=this._sub(c,s),_=this._norm(e);this._normalize(e);let u=this._crossProduct(e,this._sub(i,s)),o=this._dotProduct(e,this._sub(i,s));o<.05*_?o=.05*_:o>.95*_-h&&(o=.95*_-h);const a=this._leftPerp(e),n=[c[0]-e[0]*h,c[1]-e[1]*h],p=.5*Math.max(_-o-h,h);u=Math.abs(u);const d=[];d.push([n[0]+a[0]*(u+p)-e[0]*p,n[1]+a[1]*(u+p)-e[1]*p]),d.push([n[0]+a[0]*u,n[1]+a[1]*u]),d.push([n[0]-a[0]*u,n[1]-a[1]*u]),d.push([n[0]-a[0]*(u+p)-e[0]*p,n[1]-a[1]*(u+p)-e[1]*p]),t.push(d),t.push([n,c]);break}case e.ConcentricCircles:{const s=this._cp2(r,1,0),i=this._cp3(r,s,2,0),e=Math.cos(Math.PI/18),u=Math.sin(Math.PI/18);let o=this._dist(s,c),a=[o,0],n=[];for(let t=0;t<=36;t++)n.push(this._add(c,a)),this._rotateDirect(a,e,u);if(t.push(n),_>=4){n=[];const s=r[3];o=this._dist(s,c),a=[o,0];for(let t=0;t<=36;t++)n.push(this._add(c,a)),0===t&&(n.push(this._add(c,a)),h(n[1],1)),this._rotateDirect(a,e,u);t.push(n)}n=[],o=this._dist(i,c),a=[o,0];for(let t=0;t<=36;t++)n.push(this._add(c,a)),this._rotateDirect(a,e,u);t.push(n);break}case e.DoubleJogArrow:{c=this._arrowPath(r)[0];const[s,i]=this._arrowLastSeg(r),h=this._sub(c,s),e=this._norm(h);this._normalize(h);const _=Math.abs(this._crossProduct(h,this._sub(i,c)));let u=Math.abs(this._dotProduct(h,this._sub(i,c)));u<.05*e?u=.05*e:u>.95*e&&(u=.95*e);const o=Math.max(_,u),a=this._leftPerp(h);let n=[];const p=[c[0]-h[0]*u*.5+a[0]*_*.5,c[1]-h[1]*u*.5+a[1]*_*.5];n.push([p[0],p[1]]),p[0]+=h[0]*o*.5+a[0]*o*.4,p[1]+=h[1]*o*.5+a[1]*o*.4,n.push([p[0],p[1]]),p[0]-=a[0]*o*.25,p[1]-=a[1]*o*.25,n.push([p[0],p[1]]),p[0]+=h[0]*o*.5+a[0]*o*.4,p[1]+=h[1]*o*.5+a[1]*o*.4,n.push([p[0],p[1]]),t.push(n),n=[],p[0]=c[0]-h[0]*u*.5-a[0]*_*.5,p[1]=c[1]-h[1]*u*.5-a[1]*_*.5,n.push([p[0],p[1]]),p[0]+=h[0]*o*.5-a[0]*o*.4,p[1]+=h[1]*o*.5-a[1]*o*.4,n.push([p[0],p[1]]),p[0]+=a[0]*o*.25,p[1]+=a[1]*o*.25,n.push([p[0],p[1]]),p[0]+=h[0]*o*.5-a[0]*o*.4,p[1]+=h[1]*o*.5-a[1]*o*.4,n.push([p[0],p[1]]),t.push(n);break}case e.LinkedChevrons:{const s=this._cp2(r,-5,0),i=this._cp3(r,s,-.2,1),h=this._sub(c,s);this._normalize(h);const e=this._leftPerp(h),_=Math.abs(this._crossProduct(h,this._sub(i,s)));t.push([s,c]);const u=[];u.push([c[0]-h[0]*_+e[0]*_,c[1]-h[1]*_+e[1]*_]),u.push(c),u.push([c[0]-h[0]*_-e[0]*_,c[1]-h[1]*_-e[1]*_]),t.push(u),this._addDash(t,s,[-h[0]*_+e[0]*_,-h[1]*_+e[1]*_]),this._addDash(t,s,[-h[0]*_-e[0]*_,-h[1]*_-e[1]*_]);break}case e.SegmentThenHalfCircle:{const s=this._cp2(r,2,0),i=this._cp3(r,s,1.5,0);let h;h=_>=4?r[3]:this._cp3(r,s,1.25,-.5);const e=this._sub(s,c);this._normalize(e);const u=.5*this._dist(s,i),o=this._crossProduct(e,this._sub(h,c))>0,a=Math.cos(Math.PI/18);let n=Math.sin(Math.PI/18);o&&(n=-n);const p=[c,s];e[0]*=u,e[1]*=u;const d=this._add(s,e);e[0]=-e[0],e[1]=-e[1];for(let t=1;t<=18;t++)this._rotateDirect(e,a,n),p.push(this._add(d,e));t.push(p);break}case e.LineWithStraightTicks:{const s=this._cp2(r,-2,1),i=this._cp3(r,s,-1,-.5),h=this._sub(i,s);this._normalize(h);const e=this._dotProduct(h,this._sub(s,c)),_=this._dotProduct(h,this._sub(i,c));let u=[c];u.push([c[0]+h[0]*e,c[1]+h[1]*e]),u.push(s),t.push(u),u=[c],u.push([c[0]+h[0]*_,c[1]+h[1]*_]),u.push(i),t.push(u);break}case e.DoubleCurve:{const s=this._cp2(r,-5,-1),i=this._cp3(r,s,2,0),e=Math.atan2(1,5),_=Math.cos(e),u=Math.sin(e),o=this._sub(s,c),a=this._dist(c,s);this._normalize(o),this._rotateDirect(o,_,-u);const n=[c];n.push([c[0]+o[0]*a*.5,c[1]+o[1]*a*.5]),h(n[1],1),n.push([c[0]+o[0]*a*.8,c[1]+o[1]*a*.8]),this._addBezier2(n,n[2],[c[0]+o[0]*a,c[1]+o[1]*a],s,3);const p=this._sub(i,s),d=this._dist(s,i);this._normalize(p),this._rotateDirect(p,_,-u),this._addBezier2(n,s,[i[0]-p[0]*d,i[1]-p[1]*d],[i[0]-p[0]*d*.8,i[1]-p[1]*d*.8],3),n.push(i),t.push(n);break}case e.ParallelWithTicksByWidth:{const s=this._cp2(r,0,-1),i=this._cp3(r,s,.5,3),h=this._sub(s,c);this._normalize(h);const e=this._crossProduct(h,this._sub(i,c));this._leftPerpendicular(h),e>0?(this._addAngledTicks(t,c,[c[0]+h[0]*e,c[1]+h[1]*e],s),this._addAngledTicks(t,s,[s[0]+h[0]*e,s[1]+h[1]*e],c)):(this._addAngledTicks(t,[c[0]+h[0]*e,c[1]+h[1]*e],c,s),this._addAngledTicks(t,[s[0]+h[0]*e,s[1]+h[1]*e],c,s));break}case e.EnclosingRoundedRectangle:{const s=this._cp2(r,3,-2),t=[Math.min(c[0],s[0]),Math.max(c[1],s[1])],i=[Math.max(c[0],s[0]),Math.min(c[1],s[1])],h=i[0]-t[0],e=t[1]-i[1],_=Math.min(h,e)/10,u=[];u.push([t[0]+_+.75*(h-2*_),t[1]]),u.push([i[0]-_,t[1]]),this._add90DegArc(u,[i[0]-_,t[1]],[i[0],t[1]-_],[i[0],t[1]]),u.push([i[0],i[1]+_]),this._add90DegArc(u,[i[0],i[1]+_],[i[0]-_,i[1]],i),u.push([t[0]+_,i[1]]),this._add90DegArc(u,[t[0]+_,i[1]],[t[0],i[1]+_],[t[0],i[1]]),u.push([t[0],t[1]-_]),this._add90DegArc(u,[t[0],t[1]-_],[t[0]+_,t[1]],t),u.push([t[0]+_+.75*(h-2*_),t[1]]);break}case e.FullGeometry:default:t.push(r)}}return t}}export{r as EffectControlMeasureLine};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{GeometryCursor as e}from"../../../geometry/GeometryCursor.js";import{PathEffectCursor as t}from"../CIMCursor.js";import{CurveHelper as i}from"../CurveHelper.js";class r{static local(){return null===r.instance&&(r.instance=new r),r.instance}execute(e,t,i,r,
|
|
5
|
+
import{GeometryCursor as e}from"../../../geometry/GeometryCursor.js";import{PathEffectCursor as t}from"../CIMCursor.js";import{CurveHelper as i}from"../CurveHelper.js";class r{static{this.instance=null}static local(){return null===r.instance&&(r.instance=new r),r.instance}execute(e,t,i,r,s){return new u(e,t,i)}}class u extends t{constructor(e,t,r){super(e,!0,!0),this._curveHelper=new i,this._beginCut=(void 0!==t.beginCut?t.beginCut:1)*r,this._endCut=(void 0!==t.endCut?t.endCut:1)*r,this._middleCut=(void 0!==t.middleCut?t.middleCut:0)*r,this._invert=void 0!==t.invert&&t.invert,this._beginCut<0&&(this._beginCut=0),this._endCut<0&&(this._endCut=0),this._middleCut<0&&(this._middleCut=0)}processPath(t){const{_beginCut:i,_endCut:r,_middleCut:u}=this,s=t.pathLength(),n=e.createEmptyOptimizedCIM("esriGeometryPolyline");if(this._invert){if(0!==i||0!==r||0!==u)if(i+r+u>=s)for(n.startPath();t.nextPoint();)n.pushXY(t.x,t.y);else this._curveHelper.appendSubCurve(n,t,0,i),this._curveHelper.appendSubCurve(n,t,.5*(s-u),.5*(s+u)),this._curveHelper.appendSubCurve(n,t,s-r,r)}else if(0===i&&0===r&&0===u)for(n.startPath();t.nextPoint();)n.pushXY(t.x,t.y);else i+r+u<s&&(0===u?this._curveHelper.appendSubCurve(n,t,i,s-r):(this._curveHelper.appendSubCurve(n,t,i,.5*(s-u)),this._curveHelper.appendSubCurve(n,t,.5*(s+u),s-r)));return 0===n.totalSize?null:n}}export{r as EffectCut};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{GeometryCursor as t}from"../../../geometry/GeometryCursor.js";import{collectPath as e}from"../../../geometry/geometryCursorCollectUtils.js";import{PathEffectCursor as s}from"../CIMCursor.js";import{LineDashEnding as i}from"../enums.js";import{GeometryWalker as r,DashPattern as a}from"../GeometryWalker.js";import{normalizeDashEffectTemplate as n}from"../utils.js";class h{static local(){return null===h.instance&&(h.instance=new h),h.instance}execute(t,e,s,i,r){return new l(t,e,s)}}
|
|
5
|
+
import{GeometryCursor as t}from"../../../geometry/GeometryCursor.js";import{collectPath as e}from"../../../geometry/geometryCursorCollectUtils.js";import{PathEffectCursor as s}from"../CIMCursor.js";import{LineDashEnding as i}from"../enums.js";import{GeometryWalker as r,DashPattern as a}from"../GeometryWalker.js";import{normalizeDashEffectTemplate as n}from"../utils.js";class h{static{this.instance=null}static local(){return null===h.instance&&(h.instance=new h),h.instance}execute(t,e,s,i,r){return new l(t,e,s)}}class l extends s{constructor(t,e,s){super(t,!0,!0),this._firstCurve=null,this._walker=new r,this._walker.updateTolerance(s),this._endings=e.lineDashEnding,this._customDashPos=-(e.offsetAlongLine??0)*s,this._offsetAtEnd=(e.customEndingOffset??0)*s;let i=n(e).dashTemplate;null==i&&(i=[]),i.length%2&&(i=[...i,...i]),this._pattern=new a,this._pattern.init(i,!0),this._pattern.scale(s)}processPath(s){if(0===this._pattern.length()){this.iteratePath=!1;const i=e(s);return t.fromJSONCIM({paths:[i]})}if(!this.iteratePath){let r=!0;switch(this._endings){case i.HalfPattern:case i.HalfGap:default:this._pattern.extPtGap=0;break;case i.FullPattern:this.isClosed||(this._pattern.extPtGap=.5*this._pattern.firstValue());break;case i.FullGap:this.isClosed||(this._pattern.extPtGap=.5*this._pattern.lastValue());break;case i.NoConstraint:this.isClosed||(r=!1);break;case i.Custom:this.isClosed||(this._pattern.extPtGap=.5*this._offsetAtEnd)}const a=s.pathLength();if(this._pattern.isEmpty()||a<.1*this._pattern.length()){const i=e(s);return t.fromJSONCIM({paths:[i]})}if(!this._walker.init(s,this._pattern,r)){const i=e(s);return t.fromJSONCIM({paths:[i]})}}let r;if(this.iteratePath)r=this._pattern.nextValue();else{let t;switch(this._endings){case i.HalfPattern:default:t=.5*this._pattern.firstValue();break;case i.HalfGap:t=.5*-this._pattern.lastValue();break;case i.FullGap:t=-this._pattern.lastValue();break;case i.FullPattern:t=0;break;case i.NoConstraint:case i.Custom:t=-this._customDashPos}let e=t/this._pattern.length();e-=Math.floor(e),t=e*this._pattern.length(),this._pattern.reset(),r=this._pattern.nextValue();let s=!1;for(;t>=r;)t-=r,r=this._pattern.nextValue(),s=!s;r-=t,s?(this._walker.nextPosition(r),r=this._pattern.nextValue()):this.isClosed&&(this._firstCurve=this._walker.nextCurve(r),r=this._pattern.nextValue(),this._walker.nextPosition(r),r=this._pattern.nextValue())}let a=this._walker.nextCurve(r);if(a)if(this._walker.isPathEnd()){if(this.iteratePath=!1,this._firstCurve){for(this._firstCurve.nextPath();this._firstCurve.nextPoint();)a.pushXY(this._firstCurve.x,this._firstCurve.y);this._firstCurve=null}}else r=this._pattern.nextValue(),!this._walker.nextPosition(r)||this._walker.isPathEnd()?(this.iteratePath=!1,this._firstCurve&&(a.pushCursor(this._firstCurve),this._firstCurve=null)):this.iteratePath=!0;else this.iteratePath=!1,a=this._firstCurve,this._firstCurve=null;return a?.reset(),a}}export{h as EffectDashes};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{GeometryCursor as t}from"../../../geometry/GeometryCursor.js";import i from"../../../geometry/SpatialReference.js";import{clipCursorToTileExtent as e}from"../CIMEffects.js";import{GeometricEffectDonutMethod as n}from"../enums.js";class s{static local(){return null===s.instance&&(s.instance=new s),s.instance}execute(t,i,e,n,s,o,h){return new r(t,i,e,n,s,o,h)}}
|
|
5
|
+
import{GeometryCursor as t}from"../../../geometry/GeometryCursor.js";import i from"../../../geometry/SpatialReference.js";import{clipCursorToTileExtent as e}from"../CIMEffects.js";import{GeometricEffectDonutMethod as n}from"../enums.js";class s{static{this.instance=null}static local(){return null===s.instance&&(s.instance=new s),s.instance}execute(t,i,e,n,s,o,h){return new r(t,i,e,n,s,o,h)}}class r{constructor(t,i,e,s,r,o,h){switch(this._preventClipping=h,this._inputGeometries=t,this._tileKey=s,this._geometryEngine=r,this._maxInflateSize=o*e,this._width=(void 0!==i.width?i.width:2)*e,i.method){case n.Mitered:case n.Bevelled:case n.Rounded:case n.TrueBuffer:case n.Square:}this._option=i.option}next(){let n;for(;n=this._inputGeometries.next();){if("esriGeometryEnvelope"===n.geometryType&&this._width>0){const i=n.asJSON();return Math.min(i.xmax-i.xmin,i.ymax-i.ymin)-2*this._width<0?n:t.fromJSONCIM({paths:[[[i.xmin+this._width,i.ymin+this._width],[i.xmax-this._width,i.ymin+this._width],[i.xmax-this._width,i.ymax-this._width],[i.xmin+this._width,i.ymax-this._width],[i.xmin+this._width,i.ymin+this._width]],[[i.xmin,i.ymin],[i.xmin,i.ymax],[i.xmax,i.ymax],[i.xmax,i.ymin],[i.xmin,i.ymin]]]})}if("esriGeometryPolygon"===n.geometryType){if(0===this._width)return n.clone();const t=this._geometryEngine;if(null==t)return null;const s=!this._preventClipping&&this._tileKey?e(n,this._maxInflateSize):n.clone();if(!s)continue;const r=t.buffer(i.WebMercator,s.asJSON(),-this._width,1);if(r)for(const i of r.rings)if(i){s.startPath();for(const t of i.reverse())s.pushXY(t[0],s.yFactor*t[1])}return s}}return null}}export{s as EffectDonut};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{GeometryCursor as t}from"../../../geometry/GeometryCursor.js";import{PathEffectCursor as i}from"../CIMCursor.js";import{CurveHelper as s}from"../CurveHelper.js";class e{static local(){return null===e.instance&&(e.instance=new e),e.instance}execute(t,i,s,e,o){return new n(t,i,s)}}
|
|
5
|
+
import{GeometryCursor as t}from"../../../geometry/GeometryCursor.js";import{PathEffectCursor as i}from"../CIMCursor.js";import{CurveHelper as s}from"../CurveHelper.js";class e{static{this.instance=null}static local(){return null===e.instance&&(e.instance=new e),e.instance}execute(t,i,s,e,o){return new n(t,i,s)}}class n extends i{constructor(t,i,e){super(t,!1,!0),this._curveHelper=new s,this._length=(void 0!==i.length?i.length:20)*e,this._angle=void 0!==i.angle?i.angle:225,this._position=void 0!==i.position?i.position:50,this._length<0&&(this._length=-this._length),this._position<20&&(this._position=20),this._position>80&&(this._position=80),this._mirror=!1}processPath(i){const s=t.createEmptyOptimizedCIM("esriGeometryPolyline");if(this._curveHelper.isEmpty(i))return null;i.seekInPath(0);const e=i.x,n=i.y;i.seekInPath(i.pathSize-1);const o=i.x,r=i.y,h=[o-e,r-n];this._curveHelper.normalize(h);const l=e+(o-e)*this._position/100,a=n+(r-n)*this._position/100,_=Math.cos((90-this._angle)/180*Math.PI);let p=Math.sin((90-this._angle)/180*Math.PI);this._mirror&&(p=-p),this._mirror=!this._mirror;const c=[l-this._length/2*_,a-this._length/2*p],m=[l+this._length/2*_,a+this._length/2*p];return s.pushPath([[e,n],c,m,[o,r]]),s}}export{e as EffectJog};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
class t{static local(){return null===t.instance&&(t.instance=new t),t.instance}execute(t,s,n,o
|
|
5
|
+
class t{static{this.instance=null}static local(){return null===t.instance&&(t.instance=new t),t.instance}execute(t,s,n,i,o){return new e(t,s,n)}}class e{constructor(t,e,s){this._inputGeometries=t,this._offsetX=void 0!==e.offsetX?e.offsetX*s:0,this._offsetY=void 0!==e.offsetY?e.offsetY*s:0}next(){let t=this._inputGeometries.next();for(;t;){if(t.totalSize>0)return this._move(t.clone(),this._offsetX,this._offsetY);t=this._inputGeometries.next()}return null}_move(t,e,s){for(;t.nextPath();)for(;t.nextPoint();)t.x=t.x+e,t.y=t.y+s;return t.reset(),t}}export{t as EffectMove};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{GeometryCursor as t}from"../../../geometry/GeometryCursor.js";import{collectPath as e}from"../../../geometry/geometryCursorCollectUtils.js";import s from"../../../geometry/SpatialReference.js";import{isExtent as
|
|
5
|
+
import{GeometryCursor as t}from"../../../geometry/GeometryCursor.js";import{collectPath as e}from"../../../geometry/geometryCursorCollectUtils.js";import s from"../../../geometry/SpatialReference.js";import{isExtent as i}from"../../../geometry/support/jsonUtils.js";import{clipCursorToTileExtent as o}from"../CIMEffects.js";import{CurveHelper as r,pixelTolerance as n}from"../CurveHelper.js";import{GeometricEffectOffsetMethod as f}from"../enums.js";const m=10;class h{static{this.instance=null}static local(){return null===h.instance&&(h.instance=new h),h.instance}execute(t,e,s,i,o,r,n){return new l(t,e,s,i,o,r,n)}}class l{constructor(t,e,s,i,o,f,h){this._preventClipping=h,this._inputGeometries=t,this._tileKey=i,this._geometryEngine=o,this._curveHelper=new r,this._offset=(e.offset??1)*s,this._method=e.method,this._maxInflateSize=Math.max(Math.abs(f*s),m),this._option=e.option,this._offsetFlattenError=n*s}next(){let r;for(;r=this._inputGeometries.next();){if(0===this._offset)return r.clone();if("esriGeometryEnvelope"===r.geometryType){if(this._method===f.Rounded&&this._offset>0){const s=e(r),i=this._curveHelper.offset(s,-this._offset,this._method,4,this._offsetFlattenError);if(i){const e=t.createEmptyOptimizedCIM(r.geometryType);return e.pushPath(i),e}return null}const s=r.asJSON();if(i(s)&&Math.min(s.xmax-s.xmin,s.ymax-s.ymin)+2*this._offset>0)return t.fromJSONCIM({xmin:s.xmin-this._offset,xmax:s.xmax+this._offset,ymin:s.ymin-this._offset,ymax:s.ymax+this._offset})}const n=this._geometryEngine;if(null==n)continue;const m=!this._preventClipping&&this._tileKey?o(r,this._maxInflateSize):r.clone();if(!m)continue;const h=n.offset(s.WebMercator,m.asJSON(),-this._offset,1,this._method,4,this._offsetFlattenError);return h?t.fromJSONCIM(h):null}return null}}export{h as EffectOffset};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
class e{static local(){return null===e.instance&&(e.instance=new e),e.instance}execute(e,n,r,s,i){return new t(e,n,r)}}
|
|
5
|
+
class e{static{this.instance=null}static local(){return null===e.instance&&(e.instance=new e),e.instance}execute(e,n,r,s,i){return new t(e,n,r)}}class t{constructor(e,t,n){this._inputGeometries=e,this._reverse=void 0===t.reverse||t.reverse}next(){let e=this._inputGeometries.next();for(;e;){if(!this._reverse)return e;if("esriGeometryPolyline"===e.geometryType)return n(e.clone());e=this._inputGeometries.next()}return null}}function n(e){for(;e.nextPath();)for(let t=0;t<e.pathSize/2;t++){e.seekInPath(t);const n=e.x,r=e.y;e.seekInPath(e.pathSize-t-1);const s=e.x,i=e.y;e.x=n,e.y=r,e.seekInPath(t),e.x=s,e.y=i}return e.reset(),e}export{e as EffectReverse};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{getCursorBoundsXY as t}from"../../../geometry/support/boundsUtils.js";class e{static local(){return null===e.instance&&(e.instance=new e),e.instance}execute(t,e,r,s,o){return new n(t,e,r)}}
|
|
5
|
+
import{getCursorBoundsXY as t}from"../../../geometry/support/boundsUtils.js";class e{static{this.instance=null}static local(){return null===e.instance&&(e.instance=new e),e.instance}execute(t,e,r,s,o){return new n(t,e,r)}}class n{constructor(t,e,n){this._inputGeometries=t,this._rotateAngle=void 0!==e.angle?e.angle*Math.PI/180:0}next(){let e=this._inputGeometries.next();for(;e;){if(0===this._rotateAngle||"esriGeometryPoint"===e.geometryType)return e;if(e.totalSize>0){const n=t(e),r=(n[2]+n[0])/2,s=(n[3]+n[1])/2;return e.reset(),this._rotate(e.clone(),r,s)}e=this._inputGeometries.next()}return null}_rotate(t,e,n){const r=Math.cos(this._rotateAngle),s=Math.sin(this._rotateAngle);for(;t.nextPath();)for(;t.nextPoint();){const o=t.x-e,i=t.y-n;t.x=e+o*r-i*s,t.y=n+o*s+i*r}return t.reset(),t}}export{e as EffectRotate};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{getCursorBoundsXY as t}from"../../../geometry/support/boundsUtils.js";class e{static local(){return null===e.instance&&(e.instance=new e),e.instance}execute(t,e,o,
|
|
5
|
+
import{getCursorBoundsXY as t}from"../../../geometry/support/boundsUtils.js";class e{static{this.instance=null}static local(){return null===e.instance&&(e.instance=new e),e.instance}execute(t,e,s,o,n){return new r(t,e,s)}}class r{constructor(t,e,r){this._inputGeometries=t,this._xFactor=void 0!==e.xScaleFactor?e.xScaleFactor:1.15,this._yFactor=void 0!==e.yScaleFactor?e.yScaleFactor:1.15}next(){const e=this._inputGeometries.next();if(e){if(1===this._xFactor&&1===this._yFactor)return e;if("esriGeometryPoint"===e.geometryType)return e;if(e.totalSize>0){const r=t(e),s=(r[2]+r[0])/2,o=(r[3]+r[1])/2;return e.reset(),this._scaleCursor(e.clone(),s,o)}}return null}_scaleCursor(t,e,r){for(;t.nextPath();)for(;t.nextPoint();)t.x=e+(t.x-e)*this._xFactor,t.y=r+(t.y-r)*this._yFactor;return t.reset(),t}}export{e as EffectScale};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{GeometryCursor as t}from"../../../geometry/GeometryCursor.js";import{GeometricEffectWaveform as e}from"../enums.js";import{DashPattern as i,GeometryWalker as s,Pos as h}from"../GeometryWalker.js";class n{static local(){return null===n.instance&&(n.instance=new n),n.instance}execute(t,e,i,s,h){return new r(t,e,i)}}
|
|
5
|
+
import{GeometryCursor as t}from"../../../geometry/GeometryCursor.js";import{GeometricEffectWaveform as e}from"../enums.js";import{DashPattern as i,GeometryWalker as s,Pos as h}from"../GeometryWalker.js";class n{static{this.instance=null}static local(){return null===n.instance&&(n.instance=new n),n.instance}execute(t,e,i,s,h){return new r(t,e,i)}}class r{constructor(t,e,h){this._inputGeometries=t,this._height=(void 0!==e.amplitude?e.amplitude:2)*h,this._period=(void 0!==e.period?e.period:3)*h,this._style=e.waveform,this._height<=0&&(this._height=Math.abs(this._height)),this._period<=0&&(this._period=Math.abs(this._period)),this._pattern=new i,this._pattern.addValue(this._period),this._pattern.addValue(this._period),this._walker=new s,this._walker.updateTolerance(h)}next(){let t=this._inputGeometries.next();for(;t;){if(0===this._height||0===this._period)return t;const e=this._processGeom(t);if(e)return e;t=this._inputGeometries.next()}return null}_processGeom(i){const s=t.createEmptyOptimizedCIM(i.geometryType);for(;i.nextPath();){s.startPath();const t=i.pathLength();if(this._walker.init(i,this._pattern))switch(this._style){case e.Sinus:default:this._constructCurve(s,t,!1);break;case e.Square:this._constructSquare(s,t);break;case e.Triangle:this._constructTriangle(s,t);break;case e.Random:this._constructCurve(s,t,!0)}else for(;i.nextPoint();)s.pushXY(i.x,i.y)}return s}_constructCurve(t,e,i){let s=Math.round(e/this._period);0===s&&(s=1);const n=s*16+1,r=e/s,a=this._period/16,o=1/n,p=2*Math.PI*e/r,_=2*Math.PI*Math.random(),u=2*Math.PI*Math.random(),c=2*Math.PI*Math.random(),l=.75-Math.random()/2,d=.75-Math.random()/2,g=new h;this._walker.curPointAndAngle(g),t.pushPoint(g.pt);let w=0;for(;;){if(!this._walker.nextPointAndAngle(a,g)){t.pushPoint(this._walker.getPathEnd());break}{const e=w;let s;if(w+=o,i){const t=this._height/2*(1+.3*Math.sin(l*p*e+_));s=t*Math.sin(p*e+u),s+=t*Math.sin(d*p*e+c),s/=2}else s=.5*this._height*Math.sin(.5*p*e);t.pushXY(g.pt[0]-s*g.sa,g.pt[1]+s*g.ca)}}}_constructSquare(t,e){Math.round(e/this._period);let i=!0;for(;;){let e=!1;if(this._walker.curPositionIsValid()){const s=new h;this._walker.curPointAndAngle(s);const n=new h;if(this._walker.nextPointAndAngle(this._period,n)){const r=new h;this._walker.nextPointAndAngle(this._period,r)&&(i?(t.pushPoint(s.pt),i=!1):t.pushPoint(s.pt),t.pushXY(s.pt[0]-this._height/2*s.sa,s.pt[1]+this._height/2*s.ca),t.pushXY(n.pt[0]-this._height/2*n.sa,n.pt[1]+this._height/2*n.ca),t.pushXY(n.pt[0]+this._height/2*n.sa,n.pt[1]-this._height/2*n.ca),t.pushXY(r.pt[0]+this._height/2*r.sa,r.pt[1]-this._height/2*r.ca),e=!0)}}if(!e){t.pushPoint(this._walker.getPathEnd());break}}}_constructTriangle(t,e){Math.round(e/this._period);let i=!0;for(;;){let e=!1;if(this._walker.curPositionIsValid()){const s=new h;this._walker.curPointAndAngle(s);const n=new h;if(this._walker.nextPointAndAngle(this._period/2,n)){const r=new h;this._walker.nextPointAndAngle(this._period,r)&&(this._walker.nextPosition(this._period/2)&&(i?(t.pushPoint(s.pt),i=!1):t.pushPoint(s.pt),t.pushXY(n.pt[0]-this._height/2*n.sa,n.pt[1]+this._height/2*n.ca),t.pushXY(r.pt[0]+this._height/2*r.sa,r.pt[1]-this._height/2*r.ca)),e=!0)}}if(!e){t.pushPoint(this._walker.getPathEnd());break}}}}export{n as EffectWave};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{PathTransformationCursor as t}from"../CIMCursor.js";import{PlacementEndings as e}from"../enums.js";import{GeometryWalker as s,DashPattern as i,Pos as n}from"../GeometryWalker.js";class a{static local(){return null===a.instance&&(a.instance=new a),a.instance}execute(t,e,s,i,n){return new r(t,e,s)}}
|
|
5
|
+
import{PathTransformationCursor as t}from"../CIMCursor.js";import{PlacementEndings as e}from"../enums.js";import{GeometryWalker as s,DashPattern as i,Pos as n}from"../GeometryWalker.js";class a{static{this.instance=null}static local(){return null===a.instance&&(a.instance=new a),a.instance}execute(t,e,s,i,n){return new r(t,e,s)}}class r extends t{constructor(t,e,n){super(t),this._geometryWalker=new s,this._geometryWalker.updateTolerance(n),this._angleToLine=e.angleToLine??!0,this._offset=(e.offset?e.offset:0)*n,this._originalEndings=e.endings,this._offsetAtEnd=(e.customEndingOffset?e.customEndingOffset:0)*n,this._position=-(e.offsetAlongLine?e.offsetAlongLine:0)*n,this._pattern=new i,this._pattern.init(e.placementTemplate,!1),this._pattern.scale(n),this._endings=this._originalEndings}processPath(t){if(this._pattern.isEmpty())return null;let s;if(this.iteratePath)s=this._pattern.nextValue();else{this._originalEndings===e.WithFullGap&&this.isClosed?this._endings=e.WithMarkers:this._endings=this._originalEndings,this._pattern.extPtGap=0;let i,n=!0;switch(this._endings){case e.NoConstraint:i=-this._position,i=this._adjustPosition(i),n=!1;break;case e.WithHalfGap:default:i=-this._pattern.lastValue()/2;break;case e.WithFullGap:i=-this._pattern.lastValue(),this._pattern.extPtGap=this._pattern.lastValue();break;case e.WithMarkers:i=0;break;case e.Custom:i=-this._position,i=this._adjustPosition(i),this._pattern.extPtGap=.5*this._offsetAtEnd}if(!this._geometryWalker.init(t,this._pattern,n))return null;this._pattern.reset();let a=0;for(;i>a;)i-=a,a=this._pattern.nextValue();a-=i,s=a,this.iteratePath=!0}const i=new n;return this._geometryWalker.nextPointAndAngle(s,i)?this._endings===e.WithFullGap&&this._geometryWalker.isPathEnd()?(this.iteratePath=!1,null):this._endings===e.WithMarkers&&this._geometryWalker.isPathEnd()&&(this.iteratePath=!1,this.isClosed)?null:(this.internalPlacement.setTranslate(i.pt[0]-this._offset*i.sa,i.pt[1]+this._offset*i.ca),this._angleToLine&&this.internalPlacement.setRotateCS(i.ca,i.sa),this.internalPlacement):(this.iteratePath=!1,null)}_adjustPosition(t){let e=t/this._pattern.length();return e-=Math.floor(e),e*this._pattern.length()}}export{a as PlacementAlongLineSameSize};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{PathTransformationCursor as t}from"../CIMCursor.js";import{CurveHelper as e}from"../CurveHelper.js";import{ExtremityPlacement as s}from"../enums.js";class i{static local(){return null===i.instance&&(i.instance=new i),i.instance}execute(t,e,s,i,n){return new r(t,e,s)}}
|
|
5
|
+
import{PathTransformationCursor as t}from"../CIMCursor.js";import{CurveHelper as e}from"../CurveHelper.js";import{ExtremityPlacement as s}from"../enums.js";class i{static{this.instance=null}static local(){return null===i.instance&&(i.instance=new i),i.instance}execute(t,e,s,i,n){return new r(t,e,s)}}class r extends t{constructor(t,s,i){super(t,!1,!0),this._curveHelper=new e,this._placePerPart=s.placePerPart??!1,this._angleToLine=void 0===s.angleToLine||s.angleToLine,this._offset=void 0!==s.offset?s.offset*i:0,this._type=s.extremityPlacement,this._position=void 0!==s.offsetAlongLine?s.offsetAlongLine*i:0,this._beginProcessed=!1}processMultiPath(t){return this._placePerPart?super.processMultiPath(t):this.processPath(t)}processPath(t){let e;switch(this._type){case s.Both:default:this._beginProcessed?(e=this._atExtremities(t,this._position,!1),this._beginProcessed=!1,this.iterateMultiPath=!1,this.iteratePath=!1):(e=this._atExtremities(t,this._position,!0),this._beginProcessed=!0,this.iterateMultiPath=!0,this.iteratePath=!0);break;case s.JustBegin:e=this._atExtremities(t,this._position,!0);break;case s.JustEnd:e=this._atExtremities(t,this._position,!1);case s.None:}return e}_atExtremities(t,e,s){if(this._placePerPart||(s?t.seekPath(0):t.seekPath(t.totalSize-1)),s||t.seekPathEnd(),s?t.nextPoint():t.prevPoint()){let i=0,[r,n]=[0,0],[a,o]=[t.x,t.y];for(;s?t.nextPoint():t.prevPoint();){r=a,n=o,a=t.x,o=t.y;const s=this._curveHelper.getLength(r,n,a,o);if(i+s>e){const t=(e-i)/s,[h,l]=this._curveHelper.getAngleCS(r,n,a,o,t),c=this._curveHelper.getCoord2D(r,n,a,o,t);return this.internalPlacement.setTranslate(c[0]-this._offset*l,c[1]+this._offset*h),this._angleToLine&&this.internalPlacement.setRotateCS(-h,-l),this.internalPlacement}i+=s}}return null}}export{i as PlacementAtExtremities};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{PathTransformationCursor as t}from"../CIMCursor.js";import{GeometryWalker as i,DashPattern as s,EndType as e,Pos as n}from"../GeometryWalker.js";class a{static local(){return null===a.instance&&(a.instance=new a),a.instance}execute(t,i,s,e,n){return new
|
|
5
|
+
import{PathTransformationCursor as t}from"../CIMCursor.js";import{GeometryWalker as i,DashPattern as s,EndType as e,Pos as n}from"../GeometryWalker.js";class a{static{this.instance=null}static local(){return null===a.instance&&(a.instance=new a),a.instance}execute(t,i,s,e,n){return new h(t,i,s)}}class h extends t{constructor(t,e,n){super(t),this._walker=new i,this._walker.updateTolerance(n),this._angleToLine=void 0===e.angleToLine||e.angleToLine,this._offset=void 0!==e.offset?e.offset*n:0,this._beginGap=void 0!==e.beginPosition?e.beginPosition*n:0,this._endGap=void 0!==e.endPosition?e.endPosition*n:0,this._flipFirst=void 0===e.flipFirst||e.flipFirst,this._pattern=new s,this._pattern.init(e.positionArray,!1,!1),this._subPathLen=0,this._posCount=this._pattern.size(),this._isFirst=!0,this._prevPos=0}processPath(t){if(this._pattern.isEmpty())return null;let i;if(this.iteratePath){const t=this._pattern.nextValue()*this._subPathLen,s=this._beginGap+t;i=s-this._prevPos,this._prevPos=s}else{if(this._posCount=this._pattern.size(),this._isFirst=!0,this._prevPos=0,this._subPathLen=t.pathLength()-this._beginGap-this._endGap,this._subPathLen<0)return this.iteratePath=!1,null;if(!this._walker.init(t,this._pattern,!1))return null;this._pattern.reset();const s=this._pattern.nextValue()*this._subPathLen,e=this._beginGap+s;i=e-this._prevPos,this._prevPos=e,this.iteratePath=!0}const s=new n;if(!this._walker.nextPointAndAngle(i,s,e.END))return this.iteratePath=!1,null;this.internalPlacement.setTranslate(s.pt[0]-this._offset*s.sa,s.pt[1]+this._offset*s.ca);const a=this._isFirst&&this._flipFirst;let h,r;return this._angleToLine?(h=s.ca,r=s.sa):(h=1,r=0),a&&(h=-h,r=-r),this.internalPlacement.setRotateCS(h,r),this._isFirst=!1,this._posCount--,0===this._posCount&&(this.iteratePath=!1),this.internalPlacement}}export{a as PlacementAtRatioPositions};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import t from"../../../core/RandomLCG.js";import{Placement as s}from"../CIMPlacements.js";import{PlacementGridType as i}from"../enums.js";const e=512,h=10,n=24,_=1e-6;class r{static local(){return null===r.instance&&(r.instance=new r),r.instance}execute(t,s,i,e,h){return new a(t,s,i,e,h)}}
|
|
5
|
+
import t from"../../../core/RandomLCG.js";import{Placement as s}from"../CIMPlacements.js";import{PlacementGridType as i}from"../enums.js";const e=512,h=10,n=24,_=1e-6;class r{static{this.instance=null}static local(){return null===r.instance&&(r.instance=new r),r.instance}execute(t,s,i,e,h){return new a(t,s,i,e,h)}}class a{constructor(h,n,_,r,a){if(this._xMin=0,this._xMax=0,this._yMin=0,this._yMax=0,this._currentX=0,this._currentY=0,this._accelerationMap=null,this._testInsidePolygon=!1,this._verticalSubdivision=!0,this._stepX=Math.abs(n.stepX??16)*_,this._stepY=Math.abs(n.stepY??16)*_,this._stepX=Math.round(128*this._stepX)/128,this._stepY=Math.round(128*this._stepY)/128,0!==this._stepX&&0!==this._stepY){if(this._gridType=n.gridType??i.Fixed,this._gridType===i.Random){const s=n.seed??13,i=1;this._randomLCG=new t(s*i),this._randomness=(n.randomness??100)/100,this._gridAngle=0,this._shiftOddRows=!1,this._cosAngle=1,this._sinAngle=0,this._offsetX=0,this._offsetY=0,this._buildRandomValues()}else{if(this._randomness=0,this._gridAngle=n.gridAngle??0,this._shiftOddRows=n.shiftOddRows??!1,this._offsetX=(n.offsetX??0)*_,this._offsetY=(n.offsetY??0)*_,this._cosAngle=Math.cos(this._gridAngle/180*Math.PI),this._sinAngle=-Math.sin(this._gridAngle/180*Math.PI),this._stepX)if(this._offsetX<0)for(;this._offsetX<-.5*this._stepX;)this._offsetX+=this._stepX;else for(;this._offsetX>=.5*this._stepX;)this._offsetX-=this._stepX;if(this._stepY)if(this._offsetY<0)for(;this._offsetY<-.5*this._stepY;)this._offsetY+=this._stepY;else for(;this._offsetY>=.5*this._stepY;)this._offsetY-=this._stepY}if(this._graphicOriginX=0,this._graphicOriginY=0,null!=r){const[t,s,i,h]=r.split("/"),n=parseFloat(t),_=parseFloat(s),a=parseFloat(i),o=parseFloat(h);this._graphicOriginX=-(o*2**n+a)*e,this._graphicOriginY=_*e,this._testInsidePolygon=!0}this._internalPlacement=new s,this._calculateMinMax(h),this._geometryCursor=h}}next(){return this._geometryCursor?this._nextInside():null}_buildRandomValues(){if(!a._randValues){a._randValues=[];for(let t=0;t<n;t++)for(let s=0;s<n;s++)a._randValues.push(this._randomLCG.getFloat()),a._randValues.push(this._randomLCG.getFloat())}}_calculateMinMax(t){let s,i,h,n,_,r,a,o,l,f,c,u,p,M;this._xMin=0,this._xMax=0,this._yMin=0,this._yMax=0,a=o=p=c=Number.MAX_VALUE,l=f=M=u=-Number.MAX_VALUE;const g=1!==this._cosAngle;for(t.reset();t.nextPath();)for(;t.nextPoint();)r=t.x,_=t.y,s=r-this._graphicOriginX-this._offsetX,i=_-this._graphicOriginY-this._offsetY,g?(h=this._cosAngle*s-this._sinAngle*i,n=this._sinAngle*s+this._cosAngle*i):(h=s,n=i),a=Math.min(a,h),l=Math.max(l,h),o=Math.min(o,n),f=Math.max(f,n),c=Math.min(c,_),u=Math.max(u,_),p=Math.min(p,r),M=Math.max(M,r);c=c!==Number.MAX_VALUE?c:-512-this._stepY,u=u!==-Number.MAX_VALUE?u:this._stepY,p=p!==Number.MAX_VALUE?p:-this._stepX,M=M!==-Number.MAX_VALUE?M:e+this._stepX;const d=u-c,X=M-p;if(this._verticalSubdivision=d>=X,this._polygonMin=this._verticalSubdivision?c:p,this._testInsidePolygon){let t=0-this._graphicOriginX-this._offsetX-this._stepX,s=e-this._graphicOriginX-this._offsetX+this._stepX,i=-512-this._graphicOriginY-this._offsetY-this._stepY,h=0-this._graphicOriginY-this._offsetY+this._stepY;if(g){const e=[[t,i],[t,h],[s,i],[s,h]];t=i=Number.MAX_VALUE,s=h=-Number.MAX_VALUE;for(const n of e){const e=this._cosAngle*n[0]-this._sinAngle*n[1],_=this._sinAngle*n[0]+this._cosAngle*n[1];t=Math.min(t,e),s=Math.max(s,e),i=Math.min(i,_),h=Math.max(h,_)}}a=a!==Number.MAX_VALUE?Math.max(a,t):t,o=o!==Number.MAX_VALUE?Math.max(o,i):i,l=l!==-Number.MAX_VALUE?Math.min(l,s):s,f=f!==-Number.MAX_VALUE?Math.min(f,h):h}this._xMin=Math.round(a/this._stepX),this._xMax=Math.round(l/this._stepX),this._yMin=Math.round(o/this._stepY),this._yMax=Math.round(f/this._stepY),this._currentX=this._xMax+1,this._currentY=this._yMin-1,this._buildAccelerationMap(t,p,M,c,u)}_buildAccelerationMap(t,s,i,n,_){t.reset();const r=new Map,a=this._verticalSubdivision,o=a?_-n:i-s;let f=Math.ceil(o/h);if(f<=1)return;const c=Math.floor(o/f);let u,p,M,g,d,X,m,x,A,Y,y;for(f++,this._delta=c,a?(A=-512-2*this._stepY,Y=2*this._stepY,y=n):(A=-2*this._stepX,Y=e+2*this._stepX,y=s);t.nextPath();)if(!(t.pathSize<2)&&t.nextPoint())for(u=t.x,p=t.y;t.nextPoint();u=M,p=g){if(M=t.x,g=t.y,a){if(p===g||p<A&&g<A||p>Y&&g>Y)continue;d=Math.min(p,g),X=Math.max(p,g)}else{if(u===M||u<A&&M<A||u>Y&&M>Y)continue;d=Math.min(u,M),X=Math.max(u,M)}for(;d<X;)m=Math.floor((d-y)/c),l(m,u,p,M,g,r),d+=c;x=Math.floor((X-y)/c),x>m&&l(x,u,p,M,g,r)}this._accelerationMap=r}_nextInside(){for(;;){if(this._currentX>this._xMax){if(this._currentY++,this._currentY>this._yMax)return null;this._currentX=this._xMin,this._shiftOddRows&&this._currentY%2&&this._currentX--}let t=this._currentX*this._stepX+this._offsetX;this._shiftOddRows&&this._currentY%2&&(t+=.5*this._stepX);const s=this._currentY*this._stepY+this._offsetY;let e,h;if(this._currentX++,this._gridType===i.Random){const i=(this._currentX%n+n)%n,_=(this._currentY%n+n)%n;e=this._graphicOriginX+t+this._stepX*this._randomness*(.5-a._randValues[_*n+i])*2/3,h=this._graphicOriginY+s+this._stepY*this._randomness*(.5-a._randValues[_*n+i+1])*2/3}else e=this._graphicOriginX+this._cosAngle*t+this._sinAngle*s,h=this._graphicOriginY-this._sinAngle*t+this._cosAngle*s;if(!this._testInsidePolygon||this._isInsidePolygon(e,h,this._geometryCursor))return this._internalPlacement.setTranslate(e,h),this._internalPlacement}}_isInsidePolygon(t,s,i){if(null==this._accelerationMap)return o(t,s,i);t+=_,s+=_;const e=this._verticalSubdivision,h=e?s:t,n=Math.floor((h-this._polygonMin)/this._delta),r=this._accelerationMap.get(n);if(!r)return!1;let a,l,f,c=0;for(const _ of r){if(a=_[0],l=_[1],e){if(a[1]>s==l[1]>s)continue;f=(l[0]-a[0])*(s-a[1])-(l[1]-a[1])*(t-a[0])}else{if(a[0]>t==l[0]>t)continue;f=(l[1]-a[1])*(t-a[0])-(l[0]-a[0])*(s-a[1])}f>0?c++:c--}return 0!==c}}function o(t,s,i){let e,h,n,r,a=0;for(t+=_,s+=_,i.reset();i.nextPath();)if(i.nextPoint())for(e=i.x,h=i.y;i.nextPoint();e=n,h=r){if(n=i.x,r=i.y,h>s==r>s)continue;(n-e)*(s-h)-(r-h)*(t-e)>0?a++:a--}return 0!==a}function l(t,s,i,e,h,n){let _=n.get(t);_||(_=[],n.set(t,_)),_.push([[s,i],[e,h]])}export{r as PlacementInsidePolygon};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{PathTransformationCursor as
|
|
5
|
+
import{PathTransformationCursor as t}from"../CIMCursor.js";import{CurveHelper as e}from"../CurveHelper.js";import{PlacementOnLineRelativeTo as n}from"../enums.js";const i=.001;class s{static{this.instance=null}static local(){return null===s.instance&&(s.instance=new s),s.instance}execute(t,e,n,i,s){return new r(t,e,n)}}class r extends t{constructor(t,n,s){super(t),this._curveHelper=new e,this._angleToLine=void 0===n.angleToLine||n.angleToLine,this._offset=void 0!==n.offset?n.offset*s:0,this._relativeTo=n.relativeTo,this._position=void 0!==n.startPointOffset?n.startPointOffset*s:0,this._epsilon=i*s}processPath(t){const e=this._position;if(this._relativeTo===n.SegmentMidpoint){if(this.iteratePath||(this.iteratePath=!0),t.nextPoint()){let[e,n]=[t.x,t.y],[i,s]=[0,0];for(;t.nextPoint();){i=t.x,s=t.y;const r=this._curveHelper.getLength(e,n,i,s);if(r<this._epsilon){e=i,n=s;continue}const o=.5+this._position/r,[a,l]=this._curveHelper.getAngleCS(e,n,i,s,o),h=this._curveHelper.getCoord2D(e,n,i,s,o);return this.internalPlacement.setTranslate(h[0]-this._offset*l,h[1]+this._offset*a),this._angleToLine&&this.internalPlacement.setRotateCS(a,l),this.internalPlacement}}return this.iteratePath=!1,null}const i=this._relativeTo===n.LineEnd;return this.onLine(t,e,i)}onLine(t,e,i){let s,r=!1;switch(this._relativeTo){case n.LineMiddle:default:t.seekPathStart(),s=t.pathLength()/2+e;break;case n.LineBeginning:s=e;break;case n.LineEnd:s=e,r=!0}i?t.seekPathEnd():t.seekPathStart();let o=0;if(i?t.prevPoint():t.nextPoint()){let[e,n]=[t.x,t.y],[a,l]=[0,0];for(;i?t.prevPoint():t.nextPoint();){a=t.x,l=t.y;const i=this._curveHelper.getLength(e,n,a,l);if(o+i>s){const t=(s-o)/i,[h,c]=this._curveHelper.getAngleCS(e,n,a,l,t),f=this._curveHelper.getCoord2D(e,n,a,l,t),u=r?-this._offset:this._offset;return this.internalPlacement.setTranslate(f[0]-u*c,f[1]+u*h),this._angleToLine&&(r?this.internalPlacement.setRotateCS(-h,-c):this.internalPlacement.setRotateCS(h,c)),this.internalPlacement}e=a,n=l,o+=i}}return null}}export{s as PlacementOnLine};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{PathTransformationCursor as t}from"../CIMCursor.js";import{CurveHelper as e}from"../CurveHelper.js";const s=1e-15;class i{static local(){return null===i.instance&&(i.instance=new i),i.instance}execute(t,e,s,i,o){return new n(t,e,s)}}
|
|
5
|
+
import{PathTransformationCursor as t}from"../CIMCursor.js";import{CurveHelper as e}from"../CurveHelper.js";const s=1e-15;class i{static{this.instance=null}static local(){return null===i.instance&&(i.instance=new i),i.instance}execute(t,e,s,i,o){return new n(t,e,s)}}class n extends t{constructor(t,s,i){super(t),this._curveHelper=new e,this._angleToLine=void 0===s.angleToLine||s.angleToLine,this._offset=void 0!==s.offset?s.offset*i:0,this._endPoints=void 0===s.placeOnEndPoints||s.placeOnEndPoints,this._controlPoints=void 0===s.placeOnControlPoints||s.placeOnControlPoints,this._regularVertices=void 0===s.placeOnRegularVertices||s.placeOnRegularVertices,this._tags=[],this._tagIterator=0}processPath(t){if(this.iteratePath||(this._preparePath(t),this.iteratePath=!0),this._tagIterator>=this._tags.length)return this._tags.length=0,this._tagIterator=0,this.iteratePath=!1,null;const e=this._tags[this._tagIterator];this._angleToLine&&this.internalPlacement.setRotate(e[2]);let s=e[0],i=e[1];if(0!==this._offset){const t=Math.cos(e[2]),n=Math.sin(e[2]);s-=this._offset*n,i+=this._offset*t}return this.internalPlacement.setTranslate(s,i),this._tagIterator++,this.internalPlacement}_preparePath(t){this._tags.length=0,this._tagIterator=0,t.seekPathStart();const e=t.isClosed();let s=0,i=!1,n=0,a=0;if(t.seekPathStart(),t.nextPoint()){let r=t.x,h=t.y,l=t.getControlPoint(),_=!0,c=t.nextPoint();for(;c;){const g=t.x,P=t.y,u=t.getControlPoint();(this._angleToLine||0!==this._offset)&&(n=this._curveHelper.getAngle(r,h,g,P,0)),_?(_=!1,e?(s=n,i=l):(this._endPoints||this._controlPoints&&l)&&this._tags.push([r,h,n])):l?this._controlPoints&&this._tags.push([r,h,o(a,n)]):this._regularVertices&&this._tags.push([r,h,o(a,n)]),(this._angleToLine||0!==this._offset)&&(a=this._curveHelper.getAngle(r,h,g,P,1)),c=t.nextPoint(),c||(e?u||i?this._controlPoints&&this._tags.push([g,P,o(a,s)]):this._regularVertices&&this._tags.push([g,P,o(a,s)]):(this._endPoints||this._controlPoints&&u)&&this._tags.push([g,P,a])),r=g,h=P,l=u}}this._tagIterator=0}}function o(t,e){const i=Math.PI;for(;Math.abs(e-t)>i+2*s;)e-t>i?e-=2*i:e+=2*i;return(t+e)/2}export{i as PlacementOnVertices};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{getCursorBoundsXY as t}from"../../../geometry/support/boundsUtils.js";import{weightedAreaCentroid as e}from"../../../geometry/support/centroid.js";import{getLabelPoint as s}from"../../../geometry/support/labelPoint.js";import{Placement as n}from"../CIMPlacements.js";import{PlacementPolygonCenterMethod as r}from"../enums.js";class o{static local(){return null===o.instance&&(o.instance=new o),o.instance}execute(t,e,s,n,r){return new i(t,e,s)}}
|
|
5
|
+
import{getCursorBoundsXY as t}from"../../../geometry/support/boundsUtils.js";import{weightedAreaCentroid as e}from"../../../geometry/support/centroid.js";import{getLabelPoint as s}from"../../../geometry/support/labelPoint.js";import{Placement as n}from"../CIMPlacements.js";import{PlacementPolygonCenterMethod as r}from"../enums.js";class o{static{this.instance=null}static local(){return null===o.instance&&(o.instance=new o),o.instance}execute(t,e,s,n,r){return new i(t,e,s)}}class i{constructor(t,e,s){this._geometryCursor=t,this._offsetX=void 0!==e.offsetX?e.offsetX*s:0,this._offsetY=void 0!==e.offsetY?e.offsetY*s:0,this._method=void 0!==e.method?e.method:r.OnPolygon,this._placementPerPart=void 0!==e.placePerPart&&e.placePerPart,this._internalPlacement=new n}next(){const t=this._geometryCursor;if(!t)return null;if(!this._placementPerPart)return this._geometryCursor=null,this._polygonCenter(t);for(;t.nextPath();)if(!(t.getCurrentRingArea()<0))return this._polygonCenter(t.getCurrentPath());return this._geometryCursor=null,null}_polygonCenter(n){let o=!1;switch(this._method){case r.CenterOfMass:{const t=e(n);t&&(this._internalPlacement.setTranslate(t[0]+this._offsetX,t[1]+this._offsetY),o=!0)}break;case r.BoundingBoxCenter:{const e=t(n);e&&(this._internalPlacement.setTranslate((e[2]+e[0])/2+this._offsetX,(e[3]+e[1])/2+this._offsetY),o=!0)}break;case r.OnPolygon:default:{const t=s(n);null!==t&&(this._internalPlacement.setTranslate(t[0]+this._offsetX,t[1]+this._offsetY),o=!0)}}return o?this._internalPlacement:null}}export{o as PlacementPolygonCenter};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../chunks/tslib.es6.js";import{strict as o,JSONMap as r}from"../../core/jsonMap.js";import t from"../../core/JSONSupport.js";import{equalsMaybe as s}from"../../core/maybe.js";import{property as i}from"../../core/accessorSupport/decorators/property.js";import"../../core/has.js";import"../../core/Logger.js";import"../../core/RandomLCG.js";import{reader as n}from"../../core/accessorSupport/decorators/reader.js";import{subclass as p}from"../../core/accessorSupport/decorators/subclass.js";import{writer as u}from"../../core/accessorSupport/decorators/writer.js";import f from"./FeatureExpressionInfo.js";import{supportedUnits as a}from"./unitConversionUtils.js";var l;const m=o()({onTheGround:"on-the-ground",relativeToGround:"relative-to-ground",relativeToScene:"relative-to-scene",absoluteHeight:"absolute-height"}),d=new r({foot:"feet",kilometer:"kilometers",meter:"meters",mile:"miles","us-foot":"us-feet",yard:"yards"});let c=
|
|
5
|
+
import{_ as e}from"../../chunks/tslib.es6.js";import{strict as o,JSONMap as r}from"../../core/jsonMap.js";import t from"../../core/JSONSupport.js";import{equalsMaybe as s}from"../../core/maybe.js";import{property as i}from"../../core/accessorSupport/decorators/property.js";import"../../core/has.js";import"../../core/Logger.js";import"../../core/RandomLCG.js";import{reader as n}from"../../core/accessorSupport/decorators/reader.js";import{subclass as p}from"../../core/accessorSupport/decorators/subclass.js";import{writer as u}from"../../core/accessorSupport/decorators/writer.js";import f from"./FeatureExpressionInfo.js";import{supportedUnits as a}from"./unitConversionUtils.js";var l;const m=o()({onTheGround:"on-the-ground",relativeToGround:"relative-to-ground",relativeToScene:"relative-to-scene",absoluteHeight:"absolute-height"}),d=new r({foot:"feet",kilometer:"kilometers",meter:"meters",mile:"miles","us-foot":"us-feet",yard:"yards"});let c=class extends t{static{l=this}constructor(e){super(e),this.featureExpressionInfo=void 0,this.offset=null}readFeatureExpressionInfo(e,o){return null!=e?e:o.featureExpression&&0===o.featureExpression.value?{expression:"0"}:void 0}writeFeatureExpressionInfo(e,o,r,t){o[r]=e.write({},t),"0"===e.expression&&(o.featureExpression={value:0})}get mode(){const{offset:e,featureExpressionInfo:o}=this;return this._isOverridden("mode")?this._get("mode"):null!=e||o?"relative-to-ground":"on-the-ground"}set mode(e){this._override("mode",e)}set unit(e){this._set("unit",e)}write(e,o){return this.offset||this.mode||this.featureExpressionInfo||this.unit?super.write(e,o):null}clone(){return new l({mode:this.mode,offset:this.offset,featureExpressionInfo:this.featureExpressionInfo?this.featureExpressionInfo.clone():void 0,unit:this.unit})}equals(e){return this.mode===e.mode&&this.offset===e.offset&&this.unit===e.unit&&s(this.featureExpressionInfo,e.featureExpressionInfo)}};e([i({type:f,json:{write:!0}})],c.prototype,"featureExpressionInfo",void 0),e([n("featureExpressionInfo",["featureExpressionInfo","featureExpression"])],c.prototype,"readFeatureExpressionInfo",null),e([u("featureExpressionInfo",{featureExpressionInfo:{type:f},"featureExpression.value":{type:[0]}})],c.prototype,"writeFeatureExpressionInfo",null),e([i({type:m.apiValues,nonNullable:!0,json:{type:m.jsonValues,read:m.read,write:{writer:m.write,isRequired:!0}}})],c.prototype,"mode",null),e([i({type:Number,json:{write:!0}})],c.prototype,"offset",void 0),e([i({type:a,json:{type:String,read:d.read,write:d.write}})],c.prototype,"unit",null),c=l=e([p("esri.symbols.support.ElevationInfo")],c);const h=c;export{h as default};
|
package/time/TimeExtent.js
CHANGED
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as t}from"../chunks/tslib.es6.js";import e from"../core/JSONSupport.js";import{truncateDate as r,offsetDate as s}from"../core/timeUtils.js";import{property as n}from"../core/accessorSupport/decorators/property.js";import"../core/has.js";import"../core/Logger.js";import"../core/RandomLCG.js";import{reader as i}from"../core/accessorSupport/decorators/reader.js";import{subclass as l}from"../core/accessorSupport/decorators/subclass.js";import{writer as o}from"../core/accessorSupport/decorators/writer.js";import{system as a}from"./timeZoneUtils.js";var u;let m=
|
|
5
|
+
import{_ as t}from"../chunks/tslib.es6.js";import e from"../core/JSONSupport.js";import{truncateDate as r,offsetDate as s}from"../core/timeUtils.js";import{property as n}from"../core/accessorSupport/decorators/property.js";import"../core/has.js";import"../core/Logger.js";import"../core/RandomLCG.js";import{reader as i}from"../core/accessorSupport/decorators/reader.js";import{subclass as l}from"../core/accessorSupport/decorators/subclass.js";import{writer as o}from"../core/accessorSupport/decorators/writer.js";import{system as a}from"./timeZoneUtils.js";var u;let m=class extends e{static{u=this}static get allTime(){return d}static get empty(){return c}static fromArray(t){return new u({start:null!=t[0]?new Date(t[0]):t[0],end:null!=t[1]?new Date(t[1]):t[1]})}constructor(t){super(t),this.end=null,this.start=null}readEnd(t,e){return null!=e.end?new Date(e.end):null}writeEnd(t,e){e.end=t?.getTime()??null}get isAllTime(){return this.equals(u.allTime)}get isEmpty(){return this.equals(u.empty)}readStart(t,e){return null!=e.start?new Date(e.start):null}writeStart(t,e){e.start=t?.getTime()??null}clone(){return new u({end:this.end,start:this.start})}equals(t){if(!t)return!1;const e=this.start?.getTime()??this.start,r=this.end?.getTime()??this.end,s=t.start?.getTime()??t.start,n=t.end?.getTime()??t.end;return e===s&&r===n}expandTo(t,e=a){if(this.isEmpty||this.isAllTime)return this.clone();let n=this.start;n&&(n=r(n,t,e));let i=this.end;if(i){const n=r(i,t,e);i=i.getTime()===n.getTime()?n:s(n,1,t,e)}return new u({start:n,end:i})}intersection(t){if(!t)return this.clone();if(this.isEmpty||t.isEmpty)return u.empty;if(this.isAllTime)return t.clone();if(t.isAllTime)return this.clone();const e=this.start?.getTime()??-1/0,r=this.end?.getTime()??1/0,s=t.start?.getTime()??-1/0,n=t.end?.getTime()??1/0;let i,l;return s>=e&&s<=r?i=s:e>=s&&e<=n&&(i=e),r>=s&&r<=n?l=r:n>=e&&n<=r&&(l=n),null==i||null==l||isNaN(i)||isNaN(l)?u.empty:new u({start:i===-1/0?null:new Date(i),end:l===1/0?null:new Date(l)})}offset(t,e,r=a){if(this.isEmpty||this.isAllTime)return this.clone();const n=new u,{start:i,end:l}=this;return null!=i&&(n.start=s(i,t,e,r)),null!=l&&(n.end=s(l,t,e,r)),n}toArray(){return this.isEmpty?[void 0,void 0]:[this.start?.getTime()??null,this.end?.getTime()??null]}union(t){if(!t||t.isEmpty)return this.clone();if(this.isEmpty)return t.clone();if(this.isAllTime||t.isAllTime)return d.clone();const e=null!=this.start&&null!=t.start?new Date(Math.min(this.start.getTime(),t.start.getTime())):null,r=null!=this.end&&null!=t.end?new Date(Math.max(this.end.getTime(),t.end.getTime())):null;return new u({start:e,end:r})}};t([n({type:Date,json:{write:{allowNull:!0}}})],m.prototype,"end",void 0),t([i("end")],m.prototype,"readEnd",null),t([o("end")],m.prototype,"writeEnd",null),t([n({readOnly:!0,json:{read:!1}})],m.prototype,"isAllTime",null),t([n({readOnly:!0,json:{read:!1}})],m.prototype,"isEmpty",null),t([n({type:Date,json:{write:{allowNull:!0}}})],m.prototype,"start",void 0),t([i("start")],m.prototype,"readStart",null),t([o("start")],m.prototype,"writeStart",null),m=u=t([l("esri.time.TimeExtent")],m);const p=m,d=new m,c=new m({start:void 0,end:void 0});export{p as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../../../../../core/BidiEngine.js";import{assertIsSome as t}from"../../../../../core/maybe.js";import{numericHash as n}from"../../../../../core/string.js";import{GeometryType as i,Point as s}from"../../../../../geometry/support/TileClipper.js";import{BucketType as a}from"../enums.js";import{cDegToRad as o,log2 as r,interpolate as l}from"../GeometryUtils.js";import{tilePixelRatio as h,Anchor as x,tileCoordSize as c}from"../Placement.js";import{sdfGlyphSize as d,TextShaping as f}from"../TextShaping.js";import g from"./BaseBucket.js";import{TextTransform as y,SymbolPlacement as m,RotationAlignment as u,TextWritingMode as p,SymbolAnchor as _,TextJustification as M}from"../style/StyleDefinition.js";import{IconLayout as P,TextLayout as I}from"../style/StyleLayer.js";const b=10;function A(e,t){return e.iconMosaicItem&&t.iconMosaicItem?e.iconMosaicItem.page===t.iconMosaicItem.page?0:e.iconMosaicItem.page-t.iconMosaicItem.page:e.iconMosaicItem&&!t.iconMosaicItem?1:!e.iconMosaicItem&&t.iconMosaicItem?-1:0}class L extends g{constructor(e,t,n,i,s,o,r,l,h){super(t,n,h.getSpriteItems()),this.type=a.SYMBOL,this._markerMap=new Map,this._glyphMap=new Map,this._glyphBufferDataStorage=new Map,this._isIconSDF=!1,this._sourceTileKey=e,this._iconVertexBuffer=i,this._iconIndexBuffer=s,this._textVertexBuffer=o,this._textIndexBuffer=r,this._placementEngine=l,this._workerTileHandler=h}get markerPageMap(){return this._markerMap}get glyphsPageMap(){return this._glyphMap}get symbolInstances(){return this._symbolInstances}getResources(e,t,i){const s=this.layer,a=this.zoom;e&&e.setExtent(this.layerExtent);const o=s.getLayoutProperty("icon-image"),r=s.getLayoutProperty("text-field");let l=s.getLayoutProperty("text-transform"),h=s.getLayoutProperty("text-font");const x=[];let c,d,f,g;o&&!o.isDataDriven&&(c=o.getValue(a)),r&&!r.isDataDriven&&(d=r.getValue(a)),l&&l.isDataDriven||(f=s.getLayoutValue("text-transform",a),l=null),h&&h.isDataDriven||(g=s.getLayoutValue("text-font",a),h=null);for(const m of this._features){const u=m.getGeometry(e);if(!u||0===u.length)continue;let p,_;o&&(p=o.isDataDriven?o.getValue(a,m):this._replaceKeys(c,m.values),p&&t(p));let M=!1;if(r&&(_=r.isDataDriven?r.getValue(a,m):this._replaceKeys(d,m.values),_)){switch(_=_.replaceAll("\\n","\n"),l&&(f=l.getValue(a,m)),f){case y.LOWERCASE:_=_.toLowerCase();break;case y.UPPERCASE:_=_.toUpperCase()}if(L._bidiEngine.hasBidiChar(_)){let e;e="rtl"===L._bidiEngine.checkContextual(_)?"IDNNN":"ICNNN",_=L._bidiEngine.bidiTransform(_,e,"VLYSN"),M=!0}if(_.length>0){h&&(g=h.getValue(a,m));for(const e of g){let t=i[e];t||(t=i[e]=new Set);for(const e of _){const n=e.codePointAt(0);null!=n&&t.add(n)}}}}if(!p&&!_)continue;const P=s.getLayoutValue("symbol-sort-key",a,m),I={feature:m,sprite:p,label:_,rtl:M,geometry:u,hash:(_?n(_):0)^(p?n(p):0),priority:P,textFont:g};x.push(I)}this._symbolFeatures=x}processFeatures(e){e&&e.setExtent(this.layerExtent);const n=this.layer,s=this.zoom,a=n.getLayoutValue("symbol-placement",s),r=a!==m.POINT,l=n.getLayoutValue("symbol-spacing",s)*h,g=n.getLayoutProperty("icon-image"),y=n.getLayoutProperty("text-field"),b=g?new P(n,s,r):null,T=y?new I(n,s,r):null,V=this._workerTileHandler;let w;g&&(w=V.getSpriteItems()),this._iconIndexStart=3*this._iconIndexBuffer.index,this._textIndexStart=3*this._textIndexBuffer.index,this._iconIndexCount=0,this._textIndexCount=0,this._markerMap.clear(),this._glyphMap.clear();const B=[];let C=1;T?.size&&(C=T.size/d);const R=T?T.maxAngle*o:0,D=T?T.size*h:0;for(const o of this._symbolFeatures){let e;b&&w&&o.sprite&&(e=w[o.sprite],e&&e.sdf&&(this._isIconSDF=!0));let n;!!e&&b.update(s,o.feature);let g=0;const y=o.label;if(y){t(T),T.update(s,o.feature);const e=r&&T.rotationAlignment===u.MAP?T.keepUpright:T.writingMode&&T.writingMode.includes(p.VERTICAL);let i=.5;switch(T.anchor){case _.TOP_LEFT:case _.LEFT:case _.BOTTOM_LEFT:i=0;break;case _.TOP_RIGHT:case _.RIGHT:case _.BOTTOM_RIGHT:i=1}let a=.5;switch(T.anchor){case _.TOP_LEFT:case _.TOP:case _.TOP_RIGHT:a=0;break;case _.BOTTOM_LEFT:case _.BOTTOM:case _.BOTTOM_RIGHT:a=1}let l=.5;switch(T.justify){case M.AUTO:l=i;break;case M.LEFT:l=0;break;case M.RIGHT:l=1}const x=T.letterSpacing*d,c=r?0:T.maxWidth*d,m=T.lineHeight*d,P=o.textFont.map((e=>V.getGlyphItems(e)));if(n=new f(P,c,m,x,i,a,l).getShaping(y,o.rtl,e),n&&n.length>0){let e=1e30,t=-1e30;for(const i of n)e=Math.min(e,i.x),t=Math.max(t,i.x);g=(t-e+2*d)*C*h}}for(let t of o.geometry){const s=[];if(a===m.LINE){if(n?.length&&T?.size){const e=T.size*h*(2+Math.min(2,4*Math.abs(T.offset[1])));t=L._smoothVertices(t,e)}L._pushAnchors(s,t,l,g)}else a===m.LINE_CENTER?L._pushCenterAnchor(s,t):o.feature.type===i.Polygon?L._pushCentroid(s,t):s.push(new x(t[0].x,t[0].y));for(const i of s){if(i.x<0||i.x>c||i.y<0||i.y>c)continue;if(r&&g>0&&T?.rotationAlignment===u.MAP&&!L._honorsTextMaxAngle(t,i,g,R,D))continue;const s={shaping:n,line:t,iconMosaicItem:e,anchor:i,symbolFeature:o,textColliders:[],iconColliders:[],textVertexRanges:[],iconVertexRanges:[]};B.push(s),this._processFeature(s,b,T)}}}B.sort(A),this._addPlacedGlyphs(),this._symbolInstances=B}serialize(){let e=14;e+=this.layerUIDs.length,e+=3*this.markerPageMap.size,e+=3*this.glyphsPageMap.size,e+=L._symbolsSerializationLength(this._symbolInstances),e+=this._iconVertexBuffer.array.length,e+=this._iconIndexBuffer.array.length,e+=this._textVertexBuffer.array.length,e+=this._textIndexBuffer.array.length;const t=new Uint32Array(e),n=new Int32Array(t.buffer),i=new Float32Array(t.buffer),[s,a,o]=this._sourceTileKey.split("/");let r=0;t[r++]=this.type,t[r++]=this.layerUIDs.length;for(let l=0;l<this.layerUIDs.length;l++)t[r++]=this.layerUIDs[l];t[r++]=this._isIconSDF?1:0,t[r++]=parseFloat(s),t[r++]=parseFloat(a),t[r++]=parseFloat(o),t[r++]=this.markerPageMap.size;for(const[l,[h,x]]of this.markerPageMap)t[r++]=l,t[r++]=h,t[r++]=x;t[r++]=this.glyphsPageMap.size;for(const[l,[h,x]]of this.glyphsPageMap)t[r++]=l,t[r++]=h,t[r++]=x;t[r++]=this._iconVertexBuffer.index/4,t[r++]=this._textVertexBuffer.index/4,r=L.serializeSymbols(t,n,i,r,this._symbolInstances),t[r++]=this._iconVertexBuffer.array.length;for(let l=0;l<this._iconVertexBuffer.array.length;l++)n[r++]=this._iconVertexBuffer.array[l];t[r++]=this._iconIndexBuffer.array.length;for(let l=0;l<this._iconIndexBuffer.array.length;l++)t[r++]=this._iconIndexBuffer.array[l];t[r++]=this._textVertexBuffer.array.length;for(let l=0;l<this._textVertexBuffer.array.length;l++)n[r++]=this._textVertexBuffer.array[l];t[r++]=this._textIndexBuffer.array.length;for(let l=0;l<this._textIndexBuffer.array.length;l++)t[r++]=this._textIndexBuffer.array[l];return t.buffer}static _symbolsSerializationLength(e){let t=0;t+=1;for(const n of e||[]){t+=5,t+=1;for(const e of n.textColliders)t+=b;for(const e of n.iconColliders)t+=b;t+=1,t+=2*n.textVertexRanges.length,t+=1,t+=2*n.iconVertexRanges.length}return t}static serializeSymbols(e,t,n,i,s){s=s||[],t[i++]=s.length;for(const a of s){t[i++]=a.anchor.x,t[i++]=a.anchor.y,t[i++]=a.symbolFeature.hash,t[i++]=a.symbolFeature.priority,t[i++]=a.symbolFeature.feature.featureIndex,t[i++]=a.textColliders.length+a.iconColliders.length;for(const e of a.textColliders)t[i++]=e.xTile,t[i++]=e.yTile,t[i++]=e.dxPixels,t[i++]=e.dyPixels,t[i++]=e.hard?1:0,t[i++]=e.partIndex,n[i++]=e.minLod,n[i++]=e.maxLod,t[i++]=e.width,t[i++]=e.height;for(const e of a.iconColliders)t[i++]=e.xTile,t[i++]=e.yTile,t[i++]=e.dxPixels,t[i++]=e.dyPixels,t[i++]=e.hard?1:0,t[i++]=e.partIndex,n[i++]=e.minLod,n[i++]=e.maxLod,t[i++]=e.width,t[i++]=e.height;t[i++]=a.textVertexRanges.length;for(const[e,n]of a.textVertexRanges)t[i++]=e,t[i++]=n;t[i++]=a.iconVertexRanges.length;for(const[e,n]of a.iconVertexRanges)t[i++]=e,t[i++]=n}return i}_replaceKeys(e,t){return e.replaceAll(/{([^{}]+)}/g,((e,n)=>n in t?t[n]:""))}_processFeature(e,t,n){const{line:i,iconMosaicItem:s,shaping:a,anchor:o}=e,l=this.zoom,h=this.layer,x=!!s;let c=!0;x&&(c=t?.optional||!s);const d=a&&a.length>0,f=!d||n?.optional;let g,y;if(x&&(g=this._placementEngine.getIconPlacement(o,s,t)),(g||c)&&(d&&(y=this._placementEngine.getTextPlacement(o,a,i,n)),y||f)){if(g&&y||(f||c?f||y?c||g||(y=null):g=null:(g=null,y=null)),y){const t=h.hasDataDrivenText?h.textMaterial.encodeAttributes(e.symbolFeature.feature,l,h):null;if(this._storePlacedGlyphs(e,y.shapes,l,n.rotationAlignment,t),y.textColliders){e.textColliders=y.textColliders;for(const e of y.textColliders){e.minLod=Math.max(l+r(e.minLod),0),e.maxLod=Math.min(l+r(e.maxLod),25);const t=e.angle;if(t){const n=Math.cos(t),i=Math.sin(t),s=e.dxPixels*n-e.dyPixels*i,a=e.dxPixels*i+e.dyPixels*n,o=(e.dxPixels+e.width)*n-e.dyPixels*i,r=(e.dxPixels+e.width)*i+e.dyPixels*n,l=e.dxPixels*n-(e.dyPixels+e.height)*i,h=e.dxPixels*i+(e.dyPixels+e.height)*n,x=(e.dxPixels+e.width)*n-(e.dyPixels+e.height)*i,c=(e.dxPixels+e.width)*i+(e.dyPixels+e.height)*n,d=Math.min(s,o,l,x),f=Math.max(s,o,l,x),g=Math.min(a,r,h,c),y=Math.max(a,r,h,c);e.dxPixels=d,e.dyPixels=g,e.width=f-d,e.height=y-g}}}}if(g){const n=h.hasDataDrivenIcon?h.iconMaterial.encodeAttributes(e.symbolFeature.feature,l,h):null;if(this._addPlacedIcons(e,g.shapes,l,s.page,t.rotationAlignment===u.VIEWPORT,n),g.iconColliders){e.iconColliders=g.iconColliders;for(const e of g.iconColliders){e.minLod=Math.max(l+r(e.minLod),0),e.maxLod=Math.min(l+r(e.maxLod),25);const t=e.angle;if(t){const n=Math.cos(t),i=Math.sin(t),s=e.dxPixels*n-e.dyPixels*i,a=e.dxPixels*i+e.dyPixels*n,o=(e.dxPixels+e.width)*n-e.dyPixels*i,r=(e.dxPixels+e.width)*i+e.dyPixels*n,l=e.dxPixels*n-(e.dyPixels+e.height)*i,h=e.dxPixels*i+(e.dyPixels+e.height)*n,x=(e.dxPixels+e.width)*n-(e.dyPixels+e.height)*i,c=(e.dxPixels+e.width)*i+(e.dyPixels+e.height)*n,d=Math.min(s,o,l,x),f=Math.max(s,o,l,x),g=Math.min(a,r,h,c),y=Math.max(a,r,h,c);e.dxPixels=d,e.dyPixels=g,e.width=f-d,e.height=y-g}}}}}}_addPlacedIcons(e,t,n,i,s,a){const o=Math.max(n-1,0),l=this._iconVertexBuffer,h=this._iconIndexBuffer,x=this._markerMap;for(const c of t){const t=s?0:Math.max(n+r(c.minzoom),o),d=s?25:Math.min(n+r(c.maxzoom),25);if(d<=t)continue;const f=c.tl,g=c.tr,y=c.bl,m=c.br,u=c.mosaicRect,p=c.labelAngle,_=c.minAngle,M=c.maxAngle,P=c.anchor,I=l.index,b=u.x,A=u.y,L=b+u.width,T=A+u.height,V=l.index;l.add(P.x,P.y,f.x,f.y,b,A,p,_,M,t,d,a),l.add(P.x,P.y,g.x,g.y,L,A,p,_,M,t,d,a),l.add(P.x,P.y,y.x,y.y,b,T,p,_,M,t,d,a),l.add(P.x,P.y,m.x,m.y,L,T,p,_,M,t,d,a),e.iconVertexRanges.length>0&&e.iconVertexRanges[0][0]+e.iconVertexRanges[0][1]===V?e.iconVertexRanges[0][1]+=4:e.iconVertexRanges.push([V,4]),h.add(I,I+1,I+2),h.add(I+1,I+2,I+3),x.has(i)?x.get(i)[1]+=6:x.set(i,[this._iconIndexStart+this._iconIndexCount,6]),this._iconIndexCount+=6}}_addPlacedGlyphs(){const e=this._textVertexBuffer,t=this._textIndexBuffer,n=this._glyphMap;for(const[i,s]of this._glyphBufferDataStorage)for(const a of s){const s=e.index,o=a.symbolInstance,r=a.ddAttributes,l=e.index;e.add(a.glyphAnchor[0],a.glyphAnchor[1],a.tl[0],a.tl[1],a.xmin,a.ymin,a.labelAngle,a.minAngle,a.maxAngle,a.minLod,a.maxLod,r),e.add(a.glyphAnchor[0],a.glyphAnchor[1],a.tr[0],a.tr[1],a.xmax,a.ymin,a.labelAngle,a.minAngle,a.maxAngle,a.minLod,a.maxLod,r),e.add(a.glyphAnchor[0],a.glyphAnchor[1],a.bl[0],a.bl[1],a.xmin,a.ymax,a.labelAngle,a.minAngle,a.maxAngle,a.minLod,a.maxLod,r),e.add(a.glyphAnchor[0],a.glyphAnchor[1],a.br[0],a.br[1],a.xmax,a.ymax,a.labelAngle,a.minAngle,a.maxAngle,a.minLod,a.maxLod,r),o.textVertexRanges.length>0&&o.textVertexRanges[0][0]+o.textVertexRanges[0][1]===l?o.textVertexRanges[0][1]+=4:o.textVertexRanges.push([l,4]),t.add(s,s+1,s+2),t.add(s+1,s+2,s+3),n.has(i)?n.get(i)[1]+=6:n.set(i,[this._textIndexStart+this._textIndexCount,6]),this._textIndexCount+=6}this._glyphBufferDataStorage.clear()}_storePlacedGlyphs(e,t,n,i,s){const a=Math.max(n-1,0),o=i===u.VIEWPORT;let l,h,x,c,d,f,g,y,m,p,_;for(const u of t){if(l=o?0:Math.max(n+r(u.minzoom),a),h=o?25:Math.min(n+r(u.maxzoom),25),h<=l)continue;x=u.tl,c=u.tr,d=u.bl,f=u.br,g=u.labelAngle,y=u.minAngle,m=u.maxAngle,p=u.anchor,_=u.mosaicRect,this._glyphBufferDataStorage.has(u.page)||this._glyphBufferDataStorage.set(u.page,[]);this._glyphBufferDataStorage.get(u.page).push({glyphAnchor:[p.x,p.y],tl:[x.x,x.y],tr:[c.x,c.y],bl:[d.x,d.y],br:[f.x,f.y],xmin:_.x,ymin:_.y,xmax:_.x+_.width,ymax:_.y+_.height,labelAngle:g,minAngle:y,maxAngle:m,minLod:l,maxLod:h,placementLod:a,symbolInstance:e,ddAttributes:s})}}static _pushAnchors(e,t,n,i){n+=i;let a=0;const o=t.length-1;for(let l=0;l<o;l++)a+=s.distance(t[l],t[l+1]);let r=i||n;if(r*=.5,a<=r)return;const h=r/a;let c=0,d=-(n=a/Math.max(Math.round(a/n),1))/2;const f=t.length-1;for(let s=0;s<f;s++){const i=t[s],a=t[s+1],o=a.x-i.x,r=a.y-i.y,f=Math.sqrt(o*o+r*r);let g;for(;d+n<c+f;){d+=n;const t=(d-c)/f,y=l(i.x,a.x,t),m=l(i.y,a.y,t);void 0===g&&(g=Math.atan2(r,o)),e.push(new x(y,m,g,s,h))}c+=f}}static _pushCenterAnchor(e,t){let n=0;const i=t.length-1;for(let l=0;l<i;l++)n+=s.distance(t[l],t[l+1]);const a=n/2;let o=0;const r=t.length-1;for(let s=0;s<r;s++){const n=t[s],i=t[s+1],r=i.x-n.x,h=i.y-n.y,c=Math.sqrt(r*r+h*h);if(a<o+c){const t=(a-o)/c,d=l(n.x,i.x,t),f=l(n.y,i.y,t),g=Math.atan2(h,r);return void e.push(new x(d,f,g,s,0))}o+=c}}static _deviation(e,t,n){const i=(t.x-e.x)*(n.x-t.x)+(t.y-e.y)*(n.y-t.y),s=(t.x-e.x)*(n.y-t.y)-(t.y-e.y)*(n.x-t.x);return Math.atan2(s,i)}static _honorsTextMaxAngle(e,t,n,i,a){let o=0;const r=n/2;let l=new s(t.x,t.y),h=t.segment+1;for(;o>-r;){if(--h,h<0)return!1;o-=s.distance(e[h],l),l=e[h]}o+=s.distance(e[h],e[h+1]);const x=[];let c=0;const d=e.length;for(;o<r;){const t=e[h];let n,r=h;do{if(++r,r===d)return!1;n=e[r]}while(n.isEqual(t));let l,f=r;do{if(++f,f===d)return!1;l=e[f]}while(l.isEqual(n));const g=this._deviation(t,n,l);for(x.push({deviation:g,distToAnchor:o}),c+=g;o-x[0].distToAnchor>a;)c-=x.shift().deviation;if(Math.abs(c)>i)return!1;o+=s.distance(n,l),h=r}return!0}static _smoothVertices(e,t){if(t<=0)return e;let n=e.length;if(n<3)return e;const i=[];let a=0,o=0;i.push(0);for(let y=1;y<n;y++){const t=s.distance(e[y],e[y-1]);t>0&&(a+=t,i.push(a),o++,o!==y&&(e[o]=e[y]))}if(n=o+1,n<3)return e;t=Math.min(t,.2*a);const r=e[0].x,l=e[0].y,h=e[n-1].x,x=e[n-1].y,c=s.sub(e[0],e[1]);c.normalize(),e[0].x+=t*c.x,e[0].y+=t*c.y,c.assignSub(e[n-1],e[n-2]),c.normalize(),e[n-1].x+=t*c.x,e[n-1].y+=t*c.y,i[0]-=t,i[n-1]+=t;const d=[];d.push(new s(r,l));const f=1e-6,g=.5*t;for(let y=1;y<n-1;y++){let a=0,o=0,r=0;for(let n=y-1;n>=0;n--){const s=g+i[n+1]-i[y];if(s<0)break;const l=i[n+1]-i[n],h=i[y]-i[n]<g?1:s/l;if(h<f)break;const x=h*h,c=h*s-.5*x*l,d=h*l/t,m=e[n+1],u=e[n].x-m.x,p=e[n].y-m.y;a+=d/c*(m.x*h*s+.5*x*(s*u-l*m.x)-x*h*l*u/3),o+=d/c*(m.y*h*s+.5*x*(s*p-l*m.y)-x*h*l*p/3),r+=d}for(let s=y+1;s<n;s++){const n=g-i[s-1]+i[y];if(n<0)break;const l=i[s]-i[s-1],h=i[s]-i[y]<g?1:n/l;if(h<f)break;const x=h*h,c=h*n-.5*x*l,d=h*l/t,m=e[s-1],u=e[s].x-m.x,p=e[s].y-m.y;a+=d/c*(m.x*h*n+.5*x*(n*u-l*m.x)-x*h*l*u/3),o+=d/c*(m.y*h*n+.5*x*(n*p-l*m.y)-x*h*l*p/3),r+=d}d.push(new s(a/r,o/r))}return d.push(new s(h,x)),e[0].x=r,e[0].y=l,e[n-1].x=h,e[n-1].y=x,d}static _pushCentroid(e,t){const n=0,i=0,s=4096,a=4096,o=t.length-1;let r=0,l=0,h=0,c=t[0].x,d=t[0].y;c>s&&(c=s),c<n&&(c=n),d>a&&(d=a),d<i&&(d=i);for(let x=1;x<o;x++){let e=t[x].x,o=t[x].y,f=t[x+1].x,g=t[x+1].y;e>s&&(e=s),e<n&&(e=n),o>a&&(o=a),o<i&&(o=i),f>s&&(f=s),f<n&&(f=n),g>a&&(g=a),g<i&&(g=i);const y=(e-c)*(g-d)-(f-c)*(o-d);r+=y*(c+e+f),l+=y*(d+o+g),h+=y}r/=3*h,l/=3*h,isNaN(r)||isNaN(l)||e.push(new x(r,l))}}L._bidiEngine=new e;export{L as default};
|
|
5
|
+
import e from"../../../../../core/BidiEngine.js";import{assertIsSome as t}from"../../../../../core/maybe.js";import{numericHash as n}from"../../../../../core/string.js";import{GeometryType as i,Point as s}from"../../../../../geometry/support/TileClipper.js";import{BucketType as a}from"../enums.js";import{cDegToRad as o,log2 as r,interpolate as l}from"../GeometryUtils.js";import{tilePixelRatio as h,Anchor as x,tileCoordSize as c}from"../Placement.js";import{sdfGlyphSize as d,TextShaping as f}from"../TextShaping.js";import g from"./BaseBucket.js";import{TextTransform as y,SymbolPlacement as m,RotationAlignment as u,TextWritingMode as p,SymbolAnchor as _,TextJustification as M}from"../style/StyleDefinition.js";import{IconLayout as P,TextLayout as I}from"../style/StyleLayer.js";const b=10;function A(e,t){return e.iconMosaicItem&&t.iconMosaicItem?e.iconMosaicItem.page===t.iconMosaicItem.page?0:e.iconMosaicItem.page-t.iconMosaicItem.page:e.iconMosaicItem&&!t.iconMosaicItem?1:!e.iconMosaicItem&&t.iconMosaicItem?-1:0}class L extends g{constructor(e,t,n,i,s,o,r,l,h){super(t,n,h.getSpriteItems()),this.type=a.SYMBOL,this._markerMap=new Map,this._glyphMap=new Map,this._glyphBufferDataStorage=new Map,this._isIconSDF=!1,this._sourceTileKey=e,this._iconVertexBuffer=i,this._iconIndexBuffer=s,this._textVertexBuffer=o,this._textIndexBuffer=r,this._placementEngine=l,this._workerTileHandler=h}get markerPageMap(){return this._markerMap}get glyphsPageMap(){return this._glyphMap}get symbolInstances(){return this._symbolInstances}static{this._bidiEngine=new e}getResources(e,t,i){const s=this.layer,a=this.zoom;e&&e.setExtent(this.layerExtent);const o=s.getLayoutProperty("icon-image"),r=s.getLayoutProperty("text-field");let l=s.getLayoutProperty("text-transform"),h=s.getLayoutProperty("text-font");const x=[];let c,d,f,g;o&&!o.isDataDriven&&(c=o.getValue(a)),r&&!r.isDataDriven&&(d=r.getValue(a)),l&&l.isDataDriven||(f=s.getLayoutValue("text-transform",a),l=null),h&&h.isDataDriven||(g=s.getLayoutValue("text-font",a),h=null);for(const m of this._features){const u=m.getGeometry(e);if(!u||0===u.length)continue;let p,_;o&&(p=o.isDataDriven?o.getValue(a,m):this._replaceKeys(c,m.values),p&&t(p));let M=!1;if(r&&(_=r.isDataDriven?r.getValue(a,m):this._replaceKeys(d,m.values),_)){switch(_=_.replaceAll("\\n","\n"),l&&(f=l.getValue(a,m)),f){case y.LOWERCASE:_=_.toLowerCase();break;case y.UPPERCASE:_=_.toUpperCase()}if(L._bidiEngine.hasBidiChar(_)){let e;e="rtl"===L._bidiEngine.checkContextual(_)?"IDNNN":"ICNNN",_=L._bidiEngine.bidiTransform(_,e,"VLYSN"),M=!0}if(_.length>0){h&&(g=h.getValue(a,m));for(const e of g){let t=i[e];t||(t=i[e]=new Set);for(const e of _){const n=e.codePointAt(0);null!=n&&t.add(n)}}}}if(!p&&!_)continue;const P=s.getLayoutValue("symbol-sort-key",a,m),I={feature:m,sprite:p,label:_,rtl:M,geometry:u,hash:(_?n(_):0)^(p?n(p):0),priority:P,textFont:g};x.push(I)}this._symbolFeatures=x}processFeatures(e){e&&e.setExtent(this.layerExtent);const n=this.layer,s=this.zoom,a=n.getLayoutValue("symbol-placement",s),r=a!==m.POINT,l=n.getLayoutValue("symbol-spacing",s)*h,g=n.getLayoutProperty("icon-image"),y=n.getLayoutProperty("text-field"),b=g?new P(n,s,r):null,T=y?new I(n,s,r):null,V=this._workerTileHandler;let w;g&&(w=V.getSpriteItems()),this._iconIndexStart=3*this._iconIndexBuffer.index,this._textIndexStart=3*this._textIndexBuffer.index,this._iconIndexCount=0,this._textIndexCount=0,this._markerMap.clear(),this._glyphMap.clear();const B=[];let C=1;T?.size&&(C=T.size/d);const R=T?T.maxAngle*o:0,D=T?T.size*h:0;for(const o of this._symbolFeatures){let e;b&&w&&o.sprite&&(e=w[o.sprite],e&&e.sdf&&(this._isIconSDF=!0));let n;!!e&&b.update(s,o.feature);let g=0;const y=o.label;if(y){t(T),T.update(s,o.feature);const e=r&&T.rotationAlignment===u.MAP?T.keepUpright:T.writingMode&&T.writingMode.includes(p.VERTICAL);let i=.5;switch(T.anchor){case _.TOP_LEFT:case _.LEFT:case _.BOTTOM_LEFT:i=0;break;case _.TOP_RIGHT:case _.RIGHT:case _.BOTTOM_RIGHT:i=1}let a=.5;switch(T.anchor){case _.TOP_LEFT:case _.TOP:case _.TOP_RIGHT:a=0;break;case _.BOTTOM_LEFT:case _.BOTTOM:case _.BOTTOM_RIGHT:a=1}let l=.5;switch(T.justify){case M.AUTO:l=i;break;case M.LEFT:l=0;break;case M.RIGHT:l=1}const x=T.letterSpacing*d,c=r?0:T.maxWidth*d,m=T.lineHeight*d,P=o.textFont.map((e=>V.getGlyphItems(e)));if(n=new f(P,c,m,x,i,a,l).getShaping(y,o.rtl,e),n&&n.length>0){let e=1e30,t=-1e30;for(const i of n)e=Math.min(e,i.x),t=Math.max(t,i.x);g=(t-e+2*d)*C*h}}for(let t of o.geometry){const s=[];if(a===m.LINE){if(n?.length&&T?.size){const e=T.size*h*(2+Math.min(2,4*Math.abs(T.offset[1])));t=L._smoothVertices(t,e)}L._pushAnchors(s,t,l,g)}else a===m.LINE_CENTER?L._pushCenterAnchor(s,t):o.feature.type===i.Polygon?L._pushCentroid(s,t):s.push(new x(t[0].x,t[0].y));for(const i of s){if(i.x<0||i.x>c||i.y<0||i.y>c)continue;if(r&&g>0&&T?.rotationAlignment===u.MAP&&!L._honorsTextMaxAngle(t,i,g,R,D))continue;const s={shaping:n,line:t,iconMosaicItem:e,anchor:i,symbolFeature:o,textColliders:[],iconColliders:[],textVertexRanges:[],iconVertexRanges:[]};B.push(s),this._processFeature(s,b,T)}}}B.sort(A),this._addPlacedGlyphs(),this._symbolInstances=B}serialize(){let e=14;e+=this.layerUIDs.length,e+=3*this.markerPageMap.size,e+=3*this.glyphsPageMap.size,e+=L._symbolsSerializationLength(this._symbolInstances),e+=this._iconVertexBuffer.array.length,e+=this._iconIndexBuffer.array.length,e+=this._textVertexBuffer.array.length,e+=this._textIndexBuffer.array.length;const t=new Uint32Array(e),n=new Int32Array(t.buffer),i=new Float32Array(t.buffer),[s,a,o]=this._sourceTileKey.split("/");let r=0;t[r++]=this.type,t[r++]=this.layerUIDs.length;for(let l=0;l<this.layerUIDs.length;l++)t[r++]=this.layerUIDs[l];t[r++]=this._isIconSDF?1:0,t[r++]=parseFloat(s),t[r++]=parseFloat(a),t[r++]=parseFloat(o),t[r++]=this.markerPageMap.size;for(const[l,[h,x]]of this.markerPageMap)t[r++]=l,t[r++]=h,t[r++]=x;t[r++]=this.glyphsPageMap.size;for(const[l,[h,x]]of this.glyphsPageMap)t[r++]=l,t[r++]=h,t[r++]=x;t[r++]=this._iconVertexBuffer.index/4,t[r++]=this._textVertexBuffer.index/4,r=L.serializeSymbols(t,n,i,r,this._symbolInstances),t[r++]=this._iconVertexBuffer.array.length;for(let l=0;l<this._iconVertexBuffer.array.length;l++)n[r++]=this._iconVertexBuffer.array[l];t[r++]=this._iconIndexBuffer.array.length;for(let l=0;l<this._iconIndexBuffer.array.length;l++)t[r++]=this._iconIndexBuffer.array[l];t[r++]=this._textVertexBuffer.array.length;for(let l=0;l<this._textVertexBuffer.array.length;l++)n[r++]=this._textVertexBuffer.array[l];t[r++]=this._textIndexBuffer.array.length;for(let l=0;l<this._textIndexBuffer.array.length;l++)t[r++]=this._textIndexBuffer.array[l];return t.buffer}static _symbolsSerializationLength(e){let t=0;t+=1;for(const n of e||[]){t+=5,t+=1;for(const e of n.textColliders)t+=b;for(const e of n.iconColliders)t+=b;t+=1,t+=2*n.textVertexRanges.length,t+=1,t+=2*n.iconVertexRanges.length}return t}static serializeSymbols(e,t,n,i,s){s=s||[],t[i++]=s.length;for(const a of s){t[i++]=a.anchor.x,t[i++]=a.anchor.y,t[i++]=a.symbolFeature.hash,t[i++]=a.symbolFeature.priority,t[i++]=a.symbolFeature.feature.featureIndex,t[i++]=a.textColliders.length+a.iconColliders.length;for(const e of a.textColliders)t[i++]=e.xTile,t[i++]=e.yTile,t[i++]=e.dxPixels,t[i++]=e.dyPixels,t[i++]=e.hard?1:0,t[i++]=e.partIndex,n[i++]=e.minLod,n[i++]=e.maxLod,t[i++]=e.width,t[i++]=e.height;for(const e of a.iconColliders)t[i++]=e.xTile,t[i++]=e.yTile,t[i++]=e.dxPixels,t[i++]=e.dyPixels,t[i++]=e.hard?1:0,t[i++]=e.partIndex,n[i++]=e.minLod,n[i++]=e.maxLod,t[i++]=e.width,t[i++]=e.height;t[i++]=a.textVertexRanges.length;for(const[e,n]of a.textVertexRanges)t[i++]=e,t[i++]=n;t[i++]=a.iconVertexRanges.length;for(const[e,n]of a.iconVertexRanges)t[i++]=e,t[i++]=n}return i}_replaceKeys(e,t){return e.replaceAll(/{([^{}]+)}/g,((e,n)=>n in t?t[n]:""))}_processFeature(e,t,n){const{line:i,iconMosaicItem:s,shaping:a,anchor:o}=e,l=this.zoom,h=this.layer,x=!!s;let c=!0;x&&(c=t?.optional||!s);const d=a&&a.length>0,f=!d||n?.optional;let g,y;if(x&&(g=this._placementEngine.getIconPlacement(o,s,t)),(g||c)&&(d&&(y=this._placementEngine.getTextPlacement(o,a,i,n)),y||f)){if(g&&y||(f||c?f||y?c||g||(y=null):g=null:(g=null,y=null)),y){const t=h.hasDataDrivenText?h.textMaterial.encodeAttributes(e.symbolFeature.feature,l,h):null;if(this._storePlacedGlyphs(e,y.shapes,l,n.rotationAlignment,t),y.textColliders){e.textColliders=y.textColliders;for(const e of y.textColliders){e.minLod=Math.max(l+r(e.minLod),0),e.maxLod=Math.min(l+r(e.maxLod),25);const t=e.angle;if(t){const n=Math.cos(t),i=Math.sin(t),s=e.dxPixels*n-e.dyPixels*i,a=e.dxPixels*i+e.dyPixels*n,o=(e.dxPixels+e.width)*n-e.dyPixels*i,r=(e.dxPixels+e.width)*i+e.dyPixels*n,l=e.dxPixels*n-(e.dyPixels+e.height)*i,h=e.dxPixels*i+(e.dyPixels+e.height)*n,x=(e.dxPixels+e.width)*n-(e.dyPixels+e.height)*i,c=(e.dxPixels+e.width)*i+(e.dyPixels+e.height)*n,d=Math.min(s,o,l,x),f=Math.max(s,o,l,x),g=Math.min(a,r,h,c),y=Math.max(a,r,h,c);e.dxPixels=d,e.dyPixels=g,e.width=f-d,e.height=y-g}}}}if(g){const n=h.hasDataDrivenIcon?h.iconMaterial.encodeAttributes(e.symbolFeature.feature,l,h):null;if(this._addPlacedIcons(e,g.shapes,l,s.page,t.rotationAlignment===u.VIEWPORT,n),g.iconColliders){e.iconColliders=g.iconColliders;for(const e of g.iconColliders){e.minLod=Math.max(l+r(e.minLod),0),e.maxLod=Math.min(l+r(e.maxLod),25);const t=e.angle;if(t){const n=Math.cos(t),i=Math.sin(t),s=e.dxPixels*n-e.dyPixels*i,a=e.dxPixels*i+e.dyPixels*n,o=(e.dxPixels+e.width)*n-e.dyPixels*i,r=(e.dxPixels+e.width)*i+e.dyPixels*n,l=e.dxPixels*n-(e.dyPixels+e.height)*i,h=e.dxPixels*i+(e.dyPixels+e.height)*n,x=(e.dxPixels+e.width)*n-(e.dyPixels+e.height)*i,c=(e.dxPixels+e.width)*i+(e.dyPixels+e.height)*n,d=Math.min(s,o,l,x),f=Math.max(s,o,l,x),g=Math.min(a,r,h,c),y=Math.max(a,r,h,c);e.dxPixels=d,e.dyPixels=g,e.width=f-d,e.height=y-g}}}}}}_addPlacedIcons(e,t,n,i,s,a){const o=Math.max(n-1,0),l=this._iconVertexBuffer,h=this._iconIndexBuffer,x=this._markerMap;for(const c of t){const t=s?0:Math.max(n+r(c.minzoom),o),d=s?25:Math.min(n+r(c.maxzoom),25);if(d<=t)continue;const f=c.tl,g=c.tr,y=c.bl,m=c.br,u=c.mosaicRect,p=c.labelAngle,_=c.minAngle,M=c.maxAngle,P=c.anchor,I=l.index,b=u.x,A=u.y,L=b+u.width,T=A+u.height,V=l.index;l.add(P.x,P.y,f.x,f.y,b,A,p,_,M,t,d,a),l.add(P.x,P.y,g.x,g.y,L,A,p,_,M,t,d,a),l.add(P.x,P.y,y.x,y.y,b,T,p,_,M,t,d,a),l.add(P.x,P.y,m.x,m.y,L,T,p,_,M,t,d,a),e.iconVertexRanges.length>0&&e.iconVertexRanges[0][0]+e.iconVertexRanges[0][1]===V?e.iconVertexRanges[0][1]+=4:e.iconVertexRanges.push([V,4]),h.add(I,I+1,I+2),h.add(I+1,I+2,I+3),x.has(i)?x.get(i)[1]+=6:x.set(i,[this._iconIndexStart+this._iconIndexCount,6]),this._iconIndexCount+=6}}_addPlacedGlyphs(){const e=this._textVertexBuffer,t=this._textIndexBuffer,n=this._glyphMap;for(const[i,s]of this._glyphBufferDataStorage)for(const a of s){const s=e.index,o=a.symbolInstance,r=a.ddAttributes,l=e.index;e.add(a.glyphAnchor[0],a.glyphAnchor[1],a.tl[0],a.tl[1],a.xmin,a.ymin,a.labelAngle,a.minAngle,a.maxAngle,a.minLod,a.maxLod,r),e.add(a.glyphAnchor[0],a.glyphAnchor[1],a.tr[0],a.tr[1],a.xmax,a.ymin,a.labelAngle,a.minAngle,a.maxAngle,a.minLod,a.maxLod,r),e.add(a.glyphAnchor[0],a.glyphAnchor[1],a.bl[0],a.bl[1],a.xmin,a.ymax,a.labelAngle,a.minAngle,a.maxAngle,a.minLod,a.maxLod,r),e.add(a.glyphAnchor[0],a.glyphAnchor[1],a.br[0],a.br[1],a.xmax,a.ymax,a.labelAngle,a.minAngle,a.maxAngle,a.minLod,a.maxLod,r),o.textVertexRanges.length>0&&o.textVertexRanges[0][0]+o.textVertexRanges[0][1]===l?o.textVertexRanges[0][1]+=4:o.textVertexRanges.push([l,4]),t.add(s,s+1,s+2),t.add(s+1,s+2,s+3),n.has(i)?n.get(i)[1]+=6:n.set(i,[this._textIndexStart+this._textIndexCount,6]),this._textIndexCount+=6}this._glyphBufferDataStorage.clear()}_storePlacedGlyphs(e,t,n,i,s){const a=Math.max(n-1,0),o=i===u.VIEWPORT;let l,h,x,c,d,f,g,y,m,p,_;for(const u of t){if(l=o?0:Math.max(n+r(u.minzoom),a),h=o?25:Math.min(n+r(u.maxzoom),25),h<=l)continue;x=u.tl,c=u.tr,d=u.bl,f=u.br,g=u.labelAngle,y=u.minAngle,m=u.maxAngle,p=u.anchor,_=u.mosaicRect,this._glyphBufferDataStorage.has(u.page)||this._glyphBufferDataStorage.set(u.page,[]);this._glyphBufferDataStorage.get(u.page).push({glyphAnchor:[p.x,p.y],tl:[x.x,x.y],tr:[c.x,c.y],bl:[d.x,d.y],br:[f.x,f.y],xmin:_.x,ymin:_.y,xmax:_.x+_.width,ymax:_.y+_.height,labelAngle:g,minAngle:y,maxAngle:m,minLod:l,maxLod:h,placementLod:a,symbolInstance:e,ddAttributes:s})}}static _pushAnchors(e,t,n,i){n+=i;let a=0;const o=t.length-1;for(let l=0;l<o;l++)a+=s.distance(t[l],t[l+1]);let r=i||n;if(r*=.5,a<=r)return;const h=r/a;let c=0,d=-(n=a/Math.max(Math.round(a/n),1))/2;const f=t.length-1;for(let s=0;s<f;s++){const i=t[s],a=t[s+1],o=a.x-i.x,r=a.y-i.y,f=Math.sqrt(o*o+r*r);let g;for(;d+n<c+f;){d+=n;const t=(d-c)/f,y=l(i.x,a.x,t),m=l(i.y,a.y,t);void 0===g&&(g=Math.atan2(r,o)),e.push(new x(y,m,g,s,h))}c+=f}}static _pushCenterAnchor(e,t){let n=0;const i=t.length-1;for(let l=0;l<i;l++)n+=s.distance(t[l],t[l+1]);const a=n/2;let o=0;const r=t.length-1;for(let s=0;s<r;s++){const n=t[s],i=t[s+1],r=i.x-n.x,h=i.y-n.y,c=Math.sqrt(r*r+h*h);if(a<o+c){const t=(a-o)/c,d=l(n.x,i.x,t),f=l(n.y,i.y,t),g=Math.atan2(h,r);return void e.push(new x(d,f,g,s,0))}o+=c}}static _deviation(e,t,n){const i=(t.x-e.x)*(n.x-t.x)+(t.y-e.y)*(n.y-t.y),s=(t.x-e.x)*(n.y-t.y)-(t.y-e.y)*(n.x-t.x);return Math.atan2(s,i)}static _honorsTextMaxAngle(e,t,n,i,a){let o=0;const r=n/2;let l=new s(t.x,t.y),h=t.segment+1;for(;o>-r;){if(--h,h<0)return!1;o-=s.distance(e[h],l),l=e[h]}o+=s.distance(e[h],e[h+1]);const x=[];let c=0;const d=e.length;for(;o<r;){const t=e[h];let n,r=h;do{if(++r,r===d)return!1;n=e[r]}while(n.isEqual(t));let l,f=r;do{if(++f,f===d)return!1;l=e[f]}while(l.isEqual(n));const g=this._deviation(t,n,l);for(x.push({deviation:g,distToAnchor:o}),c+=g;o-x[0].distToAnchor>a;)c-=x.shift().deviation;if(Math.abs(c)>i)return!1;o+=s.distance(n,l),h=r}return!0}static _smoothVertices(e,t){if(t<=0)return e;let n=e.length;if(n<3)return e;const i=[];let a=0,o=0;i.push(0);for(let y=1;y<n;y++){const t=s.distance(e[y],e[y-1]);t>0&&(a+=t,i.push(a),o++,o!==y&&(e[o]=e[y]))}if(n=o+1,n<3)return e;t=Math.min(t,.2*a);const r=e[0].x,l=e[0].y,h=e[n-1].x,x=e[n-1].y,c=s.sub(e[0],e[1]);c.normalize(),e[0].x+=t*c.x,e[0].y+=t*c.y,c.assignSub(e[n-1],e[n-2]),c.normalize(),e[n-1].x+=t*c.x,e[n-1].y+=t*c.y,i[0]-=t,i[n-1]+=t;const d=[];d.push(new s(r,l));const f=1e-6,g=.5*t;for(let y=1;y<n-1;y++){let a=0,o=0,r=0;for(let n=y-1;n>=0;n--){const s=g+i[n+1]-i[y];if(s<0)break;const l=i[n+1]-i[n],h=i[y]-i[n]<g?1:s/l;if(h<f)break;const x=h*h,c=h*s-.5*x*l,d=h*l/t,m=e[n+1],u=e[n].x-m.x,p=e[n].y-m.y;a+=d/c*(m.x*h*s+.5*x*(s*u-l*m.x)-x*h*l*u/3),o+=d/c*(m.y*h*s+.5*x*(s*p-l*m.y)-x*h*l*p/3),r+=d}for(let s=y+1;s<n;s++){const n=g-i[s-1]+i[y];if(n<0)break;const l=i[s]-i[s-1],h=i[s]-i[y]<g?1:n/l;if(h<f)break;const x=h*h,c=h*n-.5*x*l,d=h*l/t,m=e[s-1],u=e[s].x-m.x,p=e[s].y-m.y;a+=d/c*(m.x*h*n+.5*x*(n*u-l*m.x)-x*h*l*u/3),o+=d/c*(m.y*h*n+.5*x*(n*p-l*m.y)-x*h*l*p/3),r+=d}d.push(new s(a/r,o/r))}return d.push(new s(h,x)),e[0].x=r,e[0].y=l,e[n-1].x=h,e[n-1].y=x,d}static _pushCentroid(e,t){const n=0,i=0,s=4096,a=4096,o=t.length-1;let r=0,l=0,h=0,c=t[0].x,d=t[0].y;c>s&&(c=s),c<n&&(c=n),d>a&&(d=a),d<i&&(d=i);for(let x=1;x<o;x++){let e=t[x].x,o=t[x].y,f=t[x+1].x,g=t[x+1].y;e>s&&(e=s),e<n&&(e=n),o>a&&(o=a),o<i&&(o=i),f>s&&(f=s),f<n&&(f=n),g>a&&(g=a),g<i&&(g=i);const y=(e-c)*(g-d)-(f-c)*(o-d);r+=y*(c+e+f),l+=y*(d+o+g),h+=y}r/=3*h,l/=3*h,isNaN(r)||isNaN(l)||e.push(new x(r,l))}}export{L as default};
|