leaflet-city-mapper 0.1.0 → 0.1.1

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.
Files changed (515) hide show
  1. package/README.md +1 -1
  2. package/dist/leaflet-city-mapper-src.js.map +1 -1
  3. package/dist/leaflet-city-mapper-worker-src.js.map +1 -1
  4. package/dist/leaflet-city-mapper-worker.js.map +1 -1
  5. package/dist/leaflet-city-mapper.js.map +1 -1
  6. package/libs/leaflet-lens.js +151 -151
  7. package/libs/leaflet.js +3 -3
  8. package/libs/openlayers-bindings.js +1129 -1129
  9. package/libs/openlayers-bindings.min.js.map +1 -1
  10. package/package.json +2 -4
  11. package/src/animations/cancelCameraAnimation.js +19 -19
  12. package/src/animations/mapStopPitchBearingAnimation.js +10 -10
  13. package/src/animations/scheduleCameraAnimation.js +15 -15
  14. package/src/animations/scheduleMarkerPan.js +14 -14
  15. package/src/animations/updateZoomCamera.js +25 -25
  16. package/src/archives/findDirectoryEntry.js +17 -17
  17. package/src/archives/findTile.js +45 -45
  18. package/src/archives/getDirectoryEntries.js +30 -30
  19. package/src/archives/getTileData.js +26 -26
  20. package/src/archives/readArchiveRange.js +48 -48
  21. package/src/astronomy/solarTime.js +21 -21
  22. package/src/camera/cameraMapReady.js +9 -9
  23. package/src/camera/cleanupCameraMap.js +13 -13
  24. package/src/camera/constrainCameraToBounds.js +3 -3
  25. package/src/camera/createSceneCamera.js +25 -25
  26. package/src/camera/getBearing.js +10 -10
  27. package/src/camera/getPitch.js +10 -10
  28. package/src/camera/mapGetBoundsCenterZoom.js +14 -14
  29. package/src/camera/mapLimitOffset.js +17 -17
  30. package/src/camera/mapPanBy.js +14 -14
  31. package/src/camera/setBearing.js +13 -13
  32. package/src/camera/setPitch.js +13 -13
  33. package/src/cog/decodeCogTile.js +37 -37
  34. package/src/cog/finiteCogValues.js +12 -12
  35. package/src/cog/getCogAssetEntry.js +26 -26
  36. package/src/cog/getCogBase.js +22 -22
  37. package/src/cog/getCogHeader.js +10 -10
  38. package/src/cog/getCogProfile.js +25 -25
  39. package/src/cog/getCogTile.js +25 -25
  40. package/src/cog/getColorTile.js +38 -38
  41. package/src/cog/getElevationTile.js +29 -29
  42. package/src/cog/hasCogProjection.js +16 -16
  43. package/src/cog/initCog.js +13 -13
  44. package/src/cog/invalidCogFullResponse.js +10 -10
  45. package/src/cog/openCog.js +40 -40
  46. package/src/cog/openCogAsset.js +22 -22
  47. package/src/cog/readCog.js +39 -39
  48. package/src/cog/readCogBlock.js +19 -19
  49. package/src/cog/readCogBody.js +30 -30
  50. package/src/cog/readCogDirectories.js +32 -32
  51. package/src/cog/readCogDirectory.js +34 -34
  52. package/src/cog/readCogLevel.js +36 -36
  53. package/src/cog/readCogTag.js +28 -28
  54. package/src/cog/validCogDimensions.js +15 -15
  55. package/src/cog/validCogEncoding.js +18 -18
  56. package/src/cog/validCogGeoArrays.js +17 -17
  57. package/src/cog/validCogGrid.js +22 -22
  58. package/src/cog/validCogTileCoordinates.js +13 -13
  59. package/src/cog/validateCogContainer.js +17 -17
  60. package/src/cog/validateCogContentRange.js +18 -18
  61. package/src/cog/validateCogOffsets.js +19 -19
  62. package/src/cog/validateCogRange.js +16 -16
  63. package/src/cog/validateCogResponse.js +26 -26
  64. package/src/collision/collectIntersections.js +41 -41
  65. package/src/collision/hiddenLightHit.js +19 -19
  66. package/src/collision/indexTriangle.js +18 -18
  67. package/src/collision/insideMesh.js +47 -47
  68. package/src/collision/insideWalker.js +52 -52
  69. package/src/collision/intersectMeshes.js +40 -40
  70. package/src/collision/localRay.js +31 -31
  71. package/src/collision/mergeHits.js +19 -19
  72. package/src/collision/rayBounds.js +28 -28
  73. package/src/collision/readTriangle.js +32 -32
  74. package/src/collision/trafficCollision.js +23 -23
  75. package/src/collision/transformTriangle.js +18 -18
  76. package/src/collision/triangleDistance.js +34 -34
  77. package/src/collision/vertexCount.js +11 -11
  78. package/src/collision/worldHit.js +30 -30
  79. package/src/controls/acceptPitchDrag.js +10 -10
  80. package/src/controls/acceptRotateDrag.js +9 -9
  81. package/src/controls/addCameraHandler.js +18 -18
  82. package/src/controls/adjustCameraDrag.js +13 -13
  83. package/src/controls/cameraDragContextMenu.js +12 -12
  84. package/src/controls/cameraDragEnd.js +10 -10
  85. package/src/controls/cameraDragMove.js +31 -31
  86. package/src/controls/changeCameraTouch.js +17 -17
  87. package/src/controls/compassOrientation.js +12 -12
  88. package/src/controls/compassRemoveHooks.js +2 -2
  89. package/src/controls/containerResizeRemoveHooks.js +2 -2
  90. package/src/controls/endCameraTouch.js +18 -18
  91. package/src/controls/failCompassPermission.js +10 -10
  92. package/src/controls/finishCameraDrag.js +14 -14
  93. package/src/controls/finishCompassPermission.js +24 -24
  94. package/src/controls/isEditableTarget.js +9 -9
  95. package/src/controls/loadCameraControls.js +18 -18
  96. package/src/controls/moveCameraTouch.js +34 -34
  97. package/src/controls/refreshRotateFocus.js +5 -5
  98. package/src/controls/removeCameraDrag.js +28 -28
  99. package/src/controls/resizeMap.js +7 -7
  100. package/src/controls/rotateButtonClick.js +16 -16
  101. package/src/controls/rotateButtonKeydown.js +20 -20
  102. package/src/controls/rotateControl.js +12 -12
  103. package/src/controls/shiftRotateRemoveHooks.js +2 -2
  104. package/src/controls/shiftRotateWheel.js +15 -15
  105. package/src/core/cameraMarkerOnDrag.js +16 -16
  106. package/src/core/constructLayer.js +16 -16
  107. package/src/core/extendLeafletClass.js +12 -12
  108. package/src/core/extendTerrainPixelBounds.js +41 -41
  109. package/src/core/layerAddInitHook.js +12 -12
  110. package/src/core/layerMergeOptions.js +14 -14
  111. package/src/core/markerInitInteraction.js +10 -10
  112. package/src/core/markerSetIcon.js +14 -14
  113. package/src/core/markerSetRotation.js +19 -19
  114. package/src/core/projectNativePath.js +30 -30
  115. package/src/core/redrawPath.js +11 -11
  116. package/src/core/removeLayer.js +26 -26
  117. package/src/core/setRotation.js +12 -12
  118. package/src/core/whenReady.js +14 -14
  119. package/src/geometry/addBridges.js +36 -36
  120. package/src/geometry/addGeneratedTriangle.js +10 -10
  121. package/src/geometry/appendAreaTriangle.js +32 -32
  122. package/src/geometry/appendNativeTriangle.js +17 -17
  123. package/src/geometry/appendRouteDash.js +33 -33
  124. package/src/geometry/appendRouteSegment.js +28 -28
  125. package/src/geometry/assembleAreaGeometry.js +48 -48
  126. package/src/geometry/bridgeEdge.js +18 -18
  127. package/src/geometry/bridgeFaces.js +22 -22
  128. package/src/geometry/bridgePaths.js +19 -19
  129. package/src/geometry/bridgePolygon.js +37 -37
  130. package/src/geometry/bridgeSides.js +18 -18
  131. package/src/geometry/buildProjectedPoint.js +32 -32
  132. package/src/geometry/buildProjectedPolygon.js +34 -34
  133. package/src/geometry/circleAt.js +20 -20
  134. package/src/geometry/circleGeometry.js +41 -41
  135. package/src/geometry/createModelGeometry.js +44 -44
  136. package/src/geometry/crossVector.js +15 -15
  137. package/src/geometry/dashValues.js +23 -23
  138. package/src/geometry/dashedSegment.js +33 -33
  139. package/src/geometry/diskAt.js +18 -18
  140. package/src/geometry/emitter.js +18 -18
  141. package/src/geometry/fillNativePolygon.js +28 -28
  142. package/src/geometry/generateTreeGeometry.js +18 -18
  143. package/src/geometry/indexBridge.js +36 -36
  144. package/src/geometry/instanceAreaGeometry.js +37 -37
  145. package/src/geometry/line.js +28 -28
  146. package/src/geometry/lineJoin.js +35 -35
  147. package/src/geometry/markerImageBounds.js +20 -20
  148. package/src/geometry/meshShadowBounds.js +33 -33
  149. package/src/geometry/offsetBelowGround.js +10 -10
  150. package/src/geometry/quad.js +23 -23
  151. package/src/geometry/restoreGeometry.js +29 -29
  152. package/src/geometry/roofCoverage.js +33 -33
  153. package/src/geometry/roofFootprint.js +40 -40
  154. package/src/geometry/samePoint.js +11 -11
  155. package/src/geometry/segment.js +32 -32
  156. package/src/geometry/subtractRoofTile.js +28 -28
  157. package/src/geometry/terrainBuffers.js +36 -36
  158. package/src/geometry/terrainTileGeometry.js +28 -28
  159. package/src/geometry/validateTree.js +19 -19
  160. package/src/globals/L.js +6 -6
  161. package/src/globals/cameraFov.js +8 -8
  162. package/src/globals/cogTags.js +6 -6
  163. package/src/globals/colorTexture.js +11 -11
  164. package/src/globals/cosObliquity.js +8 -8
  165. package/src/globals/degrees.js +6 -6
  166. package/src/globals/earthCirc.js +6 -6
  167. package/src/globals/geometryWorkerUrl.js +8 -8
  168. package/src/globals/halfRadians.js +6 -6
  169. package/src/globals/lampDirections.js +13 -13
  170. package/src/globals/layerControlAddItem.js +8 -8
  171. package/src/globals/leafletLayer.js +8 -8
  172. package/src/globals/lightScale.js +6 -6
  173. package/src/globals/mvtTextDecoder.js +6 -6
  174. package/src/globals/nativeScalableStyleKeys.js +6 -6
  175. package/src/globals/sinObliquity.js +8 -8
  176. package/src/globals/tau.js +6 -6
  177. package/src/globals/vectorStyleNamedColors.js +13 -13
  178. package/src/globals/vectorTileEvents.js +6 -6
  179. package/src/globals/workerCogSource.js +6 -6
  180. package/src/gpu/initializeRendererResources.js +39 -39
  181. package/src/gpu/initializeSharedRenderer.js +59 -59
  182. package/src/gpu/mountRenderer.js +25 -25
  183. package/src/layer-controls/layerControlInputId.js +18 -18
  184. package/src/layer-controls/layerCountTitle.js +16 -16
  185. package/src/layer-controls/placeEntryElement.js +29 -29
  186. package/src/layer-controls/renderLayerCount.js +28 -28
  187. package/src/lighting/visitLightCells.js +26 -26
  188. package/src/lighting/writeLightCell.js +14 -14
  189. package/src/materials/createProgramLayout.js +44 -44
  190. package/src/materials/createProgramUniforms.js +25 -25
  191. package/src/materials/modelMaterialFor.js +29 -29
  192. package/src/materials/prepareMeshCutout.js +21 -21
  193. package/src/materials/terrainRasterProgram.js +65 -65
  194. package/src/materials/validateRoofMaterial.js +17 -17
  195. package/src/models/applyModelTransform.js +18 -18
  196. package/src/models/buildModelNodes.js +24 -24
  197. package/src/models/createModelContext.js +24 -24
  198. package/src/models/loadBuffer.js +16 -16
  199. package/src/models/loadModelResources.js +22 -22
  200. package/src/models/normalizeAccessor.js +21 -21
  201. package/src/models/prepareModel.js +29 -29
  202. package/src/models/prepareModelGeometry.js +35 -35
  203. package/src/models/prepareModelPrimitive.js +25 -25
  204. package/src/models/readAccessorValue.js +16 -16
  205. package/src/models/readModelAttributes.js +32 -32
  206. package/src/models/readModelIndices.js +28 -28
  207. package/src/models/readSparseAccessor.js +31 -31
  208. package/src/models/releaseModelResources.js +15 -15
  209. package/src/mvt/addMvtCrossings.js +23 -23
  210. package/src/mvt/appendMvtBandTriangles.js +42 -42
  211. package/src/mvt/appendMvtCoordinates.js +20 -20
  212. package/src/mvt/appendMvtPolygonTriangles.js +29 -29
  213. package/src/mvt/beginMvtPath.js +19 -19
  214. package/src/mvt/closeMvtPath.js +16 -16
  215. package/src/mvt/collectMvtEdges.js +29 -29
  216. package/src/mvt/createMvtReader.js +14 -14
  217. package/src/mvt/decodeVectorTile.js +39 -39
  218. package/src/mvt/expectMvtWire.js +11 -11
  219. package/src/mvt/finishMvtPath.js +14 -14
  220. package/src/mvt/finiteMvtCoordinate.js +14 -14
  221. package/src/mvt/groupMvtPolygons.js +35 -35
  222. package/src/mvt/isMvtFallbackError.js +13 -13
  223. package/src/mvt/mergeMvtActiveEdges.js +18 -18
  224. package/src/mvt/mvtEdgeX.js +12 -12
  225. package/src/mvt/mvtPathsVertices.js +15 -15
  226. package/src/mvt/mvtPolygonPaths.js +19 -19
  227. package/src/mvt/numericMvtValue.js +11 -11
  228. package/src/mvt/readMvtFeature.js +46 -46
  229. package/src/mvt/readMvtField.js +17 -17
  230. package/src/mvt/readMvtGeometry.js +42 -42
  231. package/src/mvt/readMvtInteger.js +22 -22
  232. package/src/mvt/readMvtKnownValue.js +30 -30
  233. package/src/mvt/readMvtLayer.js +40 -40
  234. package/src/mvt/readMvtMessage.js +18 -18
  235. package/src/mvt/readMvtNumber.js +18 -18
  236. package/src/mvt/readMvtNumbers.js +18 -18
  237. package/src/mvt/readMvtString.js +14 -14
  238. package/src/mvt/readMvtValue.js +29 -29
  239. package/src/mvt/skipMvtField.js +22 -22
  240. package/src/mvt/sortMvtActiveEdges.js +20 -20
  241. package/src/mvt/sortedMvtLevels.js +29 -29
  242. package/src/mvt/takeMvtBytes.js +18 -18
  243. package/src/mvt/tessellateVectorRings.js +26 -26
  244. package/src/mvt/triangulateVectorRings.js +23 -23
  245. package/src/native/beforeNativeRender.js +21 -21
  246. package/src/native/bypassNativeEvent.js +21 -21
  247. package/src/native/canScaleNativeStyle.js +26 -26
  248. package/src/native/compareNativeHits.js +10 -10
  249. package/src/native/createNativeMesh.js +46 -46
  250. package/src/native/forwardNativeError.js +8 -8
  251. package/src/native/getGridTerrainTile.js +47 -47
  252. package/src/native/gridTerrainElevation.js +34 -34
  253. package/src/native/isCurrentNativeLayer.js +11 -11
  254. package/src/native/loadGridTerrain.js +36 -36
  255. package/src/native/nativeEventSource.js +27 -27
  256. package/src/native/nativeProgram.js +28 -28
  257. package/src/native/nativeTerrainElevation.js +27 -27
  258. package/src/native/nativeVectorGeometry.js +30 -30
  259. package/src/native/orderNativeGridLayer.js +20 -20
  260. package/src/native/prepareGridTerrainRequests.js +23 -23
  261. package/src/native/pruneNativeResources.js +25 -25
  262. package/src/native/readyNativeGPU.js +13 -13
  263. package/src/native/rejectNativeReady.js +2 -2
  264. package/src/native/removeNativeEvents.js +20 -20
  265. package/src/native/resolveNativeReady.js +2 -2
  266. package/src/native/restoreNativeEvents.js +8 -8
  267. package/src/native/retainGridTerrain.js +15 -15
  268. package/src/native/styleNativeMesh.js +20 -20
  269. package/src/native/syncGridTile.js +28 -28
  270. package/src/native/syncImageOverlay.js +13 -13
  271. package/src/native/syncNativeStrokeAnchors.js +18 -18
  272. package/src/native/syncNativeStrokeZoom.js +34 -34
  273. package/src/native/syncTerrainGridTile.js +38 -38
  274. package/src/native/terrainGridMesh.js +47 -47
  275. package/src/native/updateNativeHover.js +15 -15
  276. package/src/native/updateNativeStrokeRadius.js +14 -14
  277. package/src/picking/hitColliderCell.js +29 -29
  278. package/src/picking/validateCameraInverse.js +15 -15
  279. package/src/projections/displayContainerPoint.js +32 -32
  280. package/src/projections/projectBridgePoint.js +17 -17
  281. package/src/projections/toPoint.js +13 -13
  282. package/src/projections/transformZoomAnimationPoint.js +8 -8
  283. package/src/projections/verticalGroundY.js +14 -14
  284. package/src/raster/rasterTileRange.js +32 -32
  285. package/src/raster/retainRasterTiles.js +21 -21
  286. package/src/rendering/collectVisibleMesh.js +48 -48
  287. package/src/rendering/compareMeshDepth.js +14 -14
  288. package/src/rendering/drawPipeline.js +44 -44
  289. package/src/rendering/nativeStrokeExpansion.js +11 -11
  290. package/src/rendering/prepareFrameBuffer.js +24 -24
  291. package/src/rendering/prepareMeshUniforms.js +36 -36
  292. package/src/rendering/revealRoofMesh.js +43 -43
  293. package/src/scene/addSceneLayer.js +24 -24
  294. package/src/scene/callLayer.js +34 -34
  295. package/src/scene/createLayer.js +13 -13
  296. package/src/scene/getLocation.js +12 -12
  297. package/src/scene/isNativeLayer.js +19 -19
  298. package/src/scene/removeSceneLayer.js +22 -22
  299. package/src/scene/reportLayerError.js +9 -9
  300. package/src/shaders/materialBaseShader.js +26 -26
  301. package/src/shaders/materialSurfaceShader.js +60 -60
  302. package/src/shaders/materialVertexShader.js +89 -89
  303. package/src/shaders/nativeStrokeShader.js +13 -13
  304. package/src/shaders/roofVertexShader.js +16 -16
  305. package/src/shadows/shadowMeshMatches.js +19 -19
  306. package/src/sources/buildAreaFeatures.js +23 -23
  307. package/src/sources/extrusionStyle.js +21 -21
  308. package/src/sources/featureAnchor.js +21 -21
  309. package/src/sources/groundOffset.js +9 -9
  310. package/src/sources/initVectorTiles.js +21 -21
  311. package/src/sources/isVectorTileSource.js +11 -11
  312. package/src/sources/matchesAreaTile.js +17 -17
  313. package/src/sources/pendingSourceAreas.js +28 -28
  314. package/src/sources/prepareAreaGeometryJob.js +34 -34
  315. package/src/sources/projectAreaPolygons.js +25 -25
  316. package/src/sources/readyVectorTiles.js +17 -17
  317. package/src/sunlight/addTimeControlToMap.js +18 -18
  318. package/src/sunlight/addTimeLayer.js +12 -12
  319. package/src/sunlight/initializeTimeControl.js +18 -18
  320. package/src/sunlight/onAddSun.js +37 -37
  321. package/src/sunlight/onAddTimeControl.js +12 -12
  322. package/src/sunlight/onRemoveSun.js +10 -10
  323. package/src/sunlight/removeSun.js +25 -25
  324. package/src/sunlight/removeTimeControl.js +14 -14
  325. package/src/sunlight/removeTimeLayer.js +11 -11
  326. package/src/sunlight/requestSunlightRender.js +12 -12
  327. package/src/sunlight/styleTimeControl.js +13 -13
  328. package/src/sunlight/tickSun.js +10 -10
  329. package/src/sunlight/updateCelestialDisc.js +23 -23
  330. package/src/sunlight/updateSun.js +44 -44
  331. package/src/sunlight/useLiveTime.js +11 -11
  332. package/src/sunlight/useSelectedTime.js +26 -26
  333. package/src/terrain/applyTerrain.js +30 -30
  334. package/src/terrain/copyTerrainTile.js +20 -20
  335. package/src/terrain/loadReadyTerrain.js +6 -6
  336. package/src/terrain/mapElevationOf.js +19 -19
  337. package/src/terrain/readBridges.js +13 -13
  338. package/src/terrain/readyTerrainOf.js +14 -14
  339. package/src/terrain/sampleTerrainTile.js +16 -16
  340. package/src/terrain/terrainTileQueue.js +34 -34
  341. package/src/textures/addImageState.js +13 -13
  342. package/src/textures/bindMeshTextures.js +57 -57
  343. package/src/textures/collectRoofTiles.js +23 -23
  344. package/src/textures/loadModelImage.js +29 -29
  345. package/src/textures/modelTextureFor.js +47 -47
  346. package/src/textures/prepareMeshTextures.js +31 -31
  347. package/src/textures/removeImageState.js +13 -13
  348. package/src/textures/resizeRoofTexture.js +32 -32
  349. package/src/textures/restoreMaterialTextures.js +22 -22
  350. package/src/textures/updateRoofAtlas.js +29 -29
  351. package/src/textures/uploadMeshTexture.js +32 -32
  352. package/src/textures/uploadNativeImage.js +26 -26
  353. package/src/textures/uploadRoofTile.js +29 -29
  354. package/src/traffic/createTrafficMesh.js +17 -17
  355. package/src/traffic/disposeTrafficObject.js +19 -19
  356. package/src/traffic/failTraffic.js +12 -12
  357. package/src/traffic/failedTrafficLoad.js +10 -10
  358. package/src/traffic/fetchTrafficLanes.js +21 -21
  359. package/src/traffic/loadedTrafficLanes.js +21 -21
  360. package/src/traffic/locateTraffic.js +20 -20
  361. package/src/traffic/moveTraffic.js +21 -21
  362. package/src/traffic/readyTraffic.js +10 -10
  363. package/src/traffic/refreshTrafficTrips.js +42 -42
  364. package/src/traffic/routeColor.js +13 -13
  365. package/src/traffic/startTraffic.js +12 -12
  366. package/src/traffic/trafficNow.js +15 -15
  367. package/src/traffic/trafficStatusText.js +13 -13
  368. package/src/traffic/trafficStorage.js +13 -13
  369. package/src/traffic/updateTraffic.js +13 -13
  370. package/src/traffic/updateTrafficLights.js +23 -23
  371. package/src/traffic/updateTrafficPose.js +15 -15
  372. package/src/traffic/updateTrafficTerrain.js +15 -15
  373. package/src/traffic/uploadTrafficLanes.js +27 -27
  374. package/src/transforms/composeLocalTransform.js +23 -23
  375. package/src/transforms/transformNativePoint.js +19 -19
  376. package/src/transforms/worldMatrixChanged.js +26 -26
  377. package/src/triangulation/clipEars.js +32 -32
  378. package/src/triangulation/connectHole.js +30 -30
  379. package/src/triangulation/cross.js +12 -12
  380. package/src/triangulation/equal.js +11 -11
  381. package/src/triangulation/intersects.js +21 -21
  382. package/src/triangulation/mergeHoles.js +19 -19
  383. package/src/triangulation/on.js +13 -13
  384. package/src/triangulation/polygonRings.js +22 -22
  385. package/src/triangulation/validateArea.js +19 -19
  386. package/src/utils/compareDistance.js +11 -11
  387. package/src/utils/yieldTask.js +12 -12
  388. package/src/vector-style/appendQuotedStyleCharacter.js +30 -30
  389. package/src/vector-style/arrayContainsRange.js +18 -18
  390. package/src/vector-style/evaluateBoolean.js +31 -31
  391. package/src/vector-style/evaluateCoalesceOrCase.js +34 -34
  392. package/src/vector-style/evaluateComparison.js +29 -29
  393. package/src/vector-style/evaluateIExpression.js +21 -21
  394. package/src/vector-style/evaluateInput.js +16 -16
  395. package/src/vector-style/evaluateInterpolate.js +36 -36
  396. package/src/vector-style/evaluateMatch.js +21 -21
  397. package/src/vector-style/evaluateMath.js +26 -26
  398. package/src/vector-style/evaluateMembership.js +29 -29
  399. package/src/vector-style/evaluateNegation.js +26 -26
  400. package/src/vector-style/evaluatePrimitive.js +21 -21
  401. package/src/vector-style/evaluateStep.js +20 -20
  402. package/src/vector-style/evaluateStyle.js +43 -43
  403. package/src/vector-style/evaluateToExpression.js +27 -27
  404. package/src/vector-style/fillVectorPaint.js +26 -26
  405. package/src/vector-style/lineVectorPaint.js +31 -31
  406. package/src/vector-style/parseFunctionalColor.js +23 -23
  407. package/src/vector-style/parseHexColor.js +20 -20
  408. package/src/vector-style/parseVectorStyle.js +20 -20
  409. package/src/vector-style/readPaintValue.js +17 -17
  410. package/src/vector-style/removeTrailingCommas.js +19 -19
  411. package/src/vector-style/scaleDashArray.js +25 -25
  412. package/src/vector-style/skipStyleComment.js +20 -20
  413. package/src/vector-style/stripStyleComments.js +28 -28
  414. package/src/vector-style/styleColor.js +18 -18
  415. package/src/vector-style/validateVectorLayers.js +18 -18
  416. package/src/vector-style/vectorPaint.js +17 -17
  417. package/src/vector-style/visibleStyle.js +16 -16
  418. package/src/vector-tiles/appendVectorBatch.js +34 -34
  419. package/src/vector-tiles/attachVectorTileBatch.js +25 -25
  420. package/src/vector-tiles/attachVectorTileBatches.js +26 -26
  421. package/src/vector-tiles/compareVectorLabelPriority.js +11 -11
  422. package/src/vector-tiles/compareVectorTileDistance.js +11 -11
  423. package/src/vector-tiles/createVectorLabel.js +37 -37
  424. package/src/vector-tiles/forwardVectorTileError.js +10 -10
  425. package/src/vector-tiles/loadVectorSprite.js +14 -14
  426. package/src/vector-tiles/loadVectorTile.js +45 -45
  427. package/src/vector-tiles/onVectorTileAdd.js +44 -44
  428. package/src/vector-tiles/onVectorTileMessage.js +15 -15
  429. package/src/vector-tiles/onVectorTileRemove.js +25 -25
  430. package/src/vector-tiles/onVectorTileWorkerError.js +16 -16
  431. package/src/vector-tiles/paintVectorTileBatch.js +18 -18
  432. package/src/vector-tiles/prepareVectorLabel.js +34 -34
  433. package/src/vector-tiles/prepareVectorStyleLayer.js +38 -38
  434. package/src/vector-tiles/prepareVectorTile.js +29 -29
  435. package/src/vector-tiles/projectVectorPaths.js +25 -25
  436. package/src/vector-tiles/projectVectorPoint.js +15 -15
  437. package/src/vector-tiles/projectVectorTriangles.js +28 -28
  438. package/src/vector-tiles/pruneVectorTiles.js +14 -14
  439. package/src/vector-tiles/pumpVectorTiles.js +21 -21
  440. package/src/vector-tiles/readTileJSON.js +27 -27
  441. package/src/vector-tiles/readVectorStyle.js +28 -28
  442. package/src/vector-tiles/refreshVectorTiles.js +8 -8
  443. package/src/vector-tiles/reserveVectorLabelCells.js +14 -14
  444. package/src/vector-tiles/retireVectorTileGroup.js +20 -20
  445. package/src/vector-tiles/revokeVectorWorkerUrl.js +14 -14
  446. package/src/vector-tiles/rotateVectorLabel.js +19 -19
  447. package/src/vector-tiles/rotateVectorLabels.js +9 -9
  448. package/src/vector-tiles/simplifyVectorPath.js +29 -29
  449. package/src/vector-tiles/updateVectorLabelMarker.js +36 -36
  450. package/src/vector-tiles/updateVectorLabelStyle.js +14 -14
  451. package/src/vector-tiles/updateVectorTileLabels.js +33 -33
  452. package/src/vector-tiles/updateVectorTilePaint.js +25 -25
  453. package/src/vector-tiles/updateVectorTiles.js +32 -32
  454. package/src/vector-tiles/validateVectorTileZooms.js +15 -15
  455. package/src/vector-tiles/vectorFeaturePaint.js +25 -25
  456. package/src/vector-tiles/vectorFeaturePaths.js +26 -26
  457. package/src/vector-tiles/vectorFeatureZoom.js +18 -18
  458. package/src/vector-tiles/vectorLabelAnchors.js +31 -31
  459. package/src/vector-tiles/vectorLabelCandidates.js +18 -18
  460. package/src/vector-tiles/vectorLabelCells.js +32 -32
  461. package/src/vector-tiles/vectorLabelIcon.js +38 -38
  462. package/src/vector-tiles/vectorLabelProperty.js +12 -12
  463. package/src/vector-tiles/vectorLabelText.js +19 -19
  464. package/src/vector-tiles/vectorSpriteIcon.js +19 -19
  465. package/src/vector-tiles/vectorStraightRun.js +23 -23
  466. package/src/vector-tiles/vectorStyleDependencies.js +22 -22
  467. package/src/vector-tiles/vectorStyleValue.js +16 -16
  468. package/src/vector-tiles/vectorStyleZoom.js +12 -12
  469. package/src/vector-tiles/vectorTileAwaited.js +17 -17
  470. package/src/vector-tiles/vectorTileOverlaps.js +12 -12
  471. package/src/vector-tiles/vectorTilePaint.js +18 -18
  472. package/src/vector-tiles/vectorTileSettings.js +27 -27
  473. package/src/vector-tiles/vectorTilesIdle.js +11 -11
  474. package/src/vector-tiles/vectorTolerance.js +11 -11
  475. package/src/vector-tiles/wrapVectorLabel.js +17 -17
  476. package/src/vehicles/boatModel.js +35 -35
  477. package/src/vehicles/busModel.js +13 -13
  478. package/src/vehicles/carModel.js +39 -39
  479. package/src/walk/initializeWalkControl.js +12 -12
  480. package/src/walk/isWalkBlocked.js +15 -15
  481. package/src/walk/landWalker.js +41 -41
  482. package/src/walk/moveWalker.js +37 -37
  483. package/src/walk/onAddWalkControl.js +40 -40
  484. package/src/walk/onRemoveWalkControl.js +17 -17
  485. package/src/walk/onWalkBlur.js +3 -3
  486. package/src/walk/onWalkTerrain.js +3 -3
  487. package/src/walk/resolveWalkerPosition.js +33 -33
  488. package/src/walk/stepWalkerHeight.js +18 -18
  489. package/src/walk/toggleWalking.js +4 -4
  490. package/src/walk/updateWalkerFrame.js +29 -29
  491. package/src/walk/updateWalkerView.js +31 -31
  492. package/src/weakmaps/cameraHandlersByMap.js +6 -6
  493. package/src/weakmaps/geometryWorkersByMap.js +6 -6
  494. package/src/weakmaps/nativeProgramsByRenderer.js +6 -6
  495. package/src/weakmaps/pathProjectionByMap.js +6 -6
  496. package/src/weakmaps/streamTerrainByLayer.js +6 -6
  497. package/src/weakmaps/streamTerrainByMap.js +6 -6
  498. package/src/weakmaps/sunByMap.js +6 -6
  499. package/src/weakmaps/vectorTileOptionsByLayer.js +6 -6
  500. package/src/weakmaps/vectorWorkerByLayer.js +6 -6
  501. package/src/weakmaps/walkByMap.js +6 -6
  502. package/src/weakmaps/workerMapByLayer.js +6 -6
  503. package/src/workers/acquireGeometryWorker.js +39 -39
  504. package/src/workers/buildAreaInWorker.js +24 -24
  505. package/src/workers/closeGeometryWorkers.js +16 -16
  506. package/src/workers/cogWorker.js +27 -27
  507. package/src/workers/createGeometryWorker.js +30 -30
  508. package/src/workers/geometryWorker.js +34 -34
  509. package/src/workers/getCogInWorker.js +18 -18
  510. package/src/workers/modelWorker.js +17 -17
  511. package/src/workers/openCogInWorker.js +22 -22
  512. package/src/workers/runSourceWorker.js +44 -44
  513. package/src/workers/settleGeometryWorker.js +16 -16
  514. package/src/workers/startGeometryWorker.js +23 -23
  515. package/src/workers/vectorTileWorker.js +15 -15
@@ -1,18 +1,18 @@
1
- import { tau } from '../globals/tau.js';
2
- import { L } from '../globals/L.js';
3
-
4
- /**
5
- * Compute a point on an elliptical disk perimeter.
6
- *
7
- * @param {L.Point} center Disk center.
8
- * @param {number} radius Horizontal radius.
9
- * @param {number} radiusY Vertical radius.
10
- * @param {number} count Perimeter subdivision count.
11
- * @param {number} index Perimeter point index.
12
- *
13
- * @returns {L.Point} Perimeter point.
14
- */
15
- export function diskAt(center, radius, radiusY, count, index) {
16
- return /* alloc */ new L.Point(center.x + radius * Math.cos(index * tau / count),
17
- center.y + radiusY * Math.sin(index * tau / count));
18
- }
1
+ import { tau } from '../globals/tau.js';
2
+ import { L } from '../globals/L.js';
3
+
4
+ /**
5
+ * Compute a point on an elliptical disk perimeter.
6
+ *
7
+ * @param {L.Point} center Disk center.
8
+ * @param {number} radius Horizontal radius.
9
+ * @param {number} radiusY Vertical radius.
10
+ * @param {number} count Perimeter subdivision count.
11
+ * @param {number} index Perimeter point index.
12
+ *
13
+ * @returns {L.Point} Perimeter point.
14
+ */
15
+ export function diskAt(center, radius, radiusY, count, index) {
16
+ return /* alloc */ new L.Point(center.x + radius * Math.cos(index * tau / count),
17
+ center.y + radiusY * Math.sin(index * tau / count));
18
+ }
@@ -1,18 +1,18 @@
1
- /**
2
- * Construct a point on one axis-aligned plane of a light emitter.
3
- *
4
- * @param {Object} point Projected center and ground height.
5
- * @param {number} u First local coordinate.
6
- * @param {number} v Second local coordinate.
7
- * @param {number} axis Plane axis index.
8
- *
9
- * @returns {Object} Projected point with ground height and UV coordinates.
10
- */
11
- export function emitter(point, u, v, axis) {
12
- const r = 0.65;
13
- return /* alloc */ {
14
- x: point.x + (axis === 2 ? 0 : u * r),
15
- y: point.y + (axis === 1 ? 0 : axis === 2 ? u * r : v * r),
16
- ground: point.ground + (axis === 0 ? 0 : v * r), uv: /* alloc */ [u, v],
17
- };
18
- }
1
+ /**
2
+ * Construct a point on one axis-aligned plane of a light emitter.
3
+ *
4
+ * @param {Object} point Projected center and ground height.
5
+ * @param {number} u First local coordinate.
6
+ * @param {number} v Second local coordinate.
7
+ * @param {number} axis Plane axis index.
8
+ *
9
+ * @returns {Object} Projected point with ground height and UV coordinates.
10
+ */
11
+ export function emitter(point, u, v, axis) {
12
+ const r = 0.65;
13
+ return /* alloc */ {
14
+ x: point.x + (axis === 2 ? 0 : u * r),
15
+ y: point.y + (axis === 1 ? 0 : axis === 2 ? u * r : v * r),
16
+ ground: point.ground + (axis === 0 ? 0 : v * r), uv: /* alloc */ [u, v],
17
+ };
18
+ }
@@ -1,28 +1,28 @@
1
- import { triangle } from './appendNativeTriangle.js';
2
- import { triangulate } from '../triangulation/triangulate.js';
3
-
4
- /**
5
- * Append fill triangles for a native polygon, respecting pre-triangulated input.
6
- *
7
- * @param {Object} context Projection, style and fill buffer.
8
- * @param {Array<Array<L.Point>>} projected Projected polygon rings.
9
- *
10
- * @throws {Error} If a pre-triangulated polygon does not have exactly three vertices and no holes.
11
- */
12
- export function fillNativePolygon(context, projected) {
13
- const { options, fill, point } = context;
14
- if (options.triangulated) {
15
- if (projected.length !== 1 || projected[0].length !== 3) {
16
- throw /* alloc */ new Error('triangulated polygons require three vertices per polygon and no holes');
17
- }
18
- triangle(point, fill, projected[0][0], projected[0][1], projected[0][2]);
19
- return;
20
- }
21
- const valid = /* alloc */ [];
22
- let ring, indices;
23
- for (ring of projected) if (ring.length >= 3) valid.push(ring);
24
- const vertices = valid.flat();
25
- for (indices of triangulate(valid[0], valid.slice(1))) {
26
- triangle(point, fill, vertices[indices[0]], vertices[indices[1]], vertices[indices[2]]);
27
- }
28
- }
1
+ import { triangle } from './appendNativeTriangle.js';
2
+ import { triangulate } from '../triangulation/triangulate.js';
3
+
4
+ /**
5
+ * Append fill triangles for a native polygon, respecting pre-triangulated input.
6
+ *
7
+ * @param {Object} context Projection, style and fill buffer.
8
+ * @param {Array<Array<L.Point>>} projected Projected polygon rings.
9
+ *
10
+ * @throws {Error} If a pre-triangulated polygon does not have exactly three vertices and no holes.
11
+ */
12
+ export function fillNativePolygon(context, projected) {
13
+ const { options, fill, point } = context;
14
+ if (options.triangulated) {
15
+ if (projected.length !== 1 || projected[0].length !== 3) {
16
+ throw /* alloc */ new Error('triangulated polygons require three vertices per polygon and no holes');
17
+ }
18
+ triangle(point, fill, projected[0][0], projected[0][1], projected[0][2]);
19
+ return;
20
+ }
21
+ const valid = /* alloc */ [];
22
+ let ring, indices;
23
+ for (ring of projected) if (ring.length >= 3) valid.push(ring);
24
+ const vertices = valid.flat();
25
+ for (indices of triangulate(valid[0], valid.slice(1))) {
26
+ triangle(point, fill, vertices[indices[0]], vertices[indices[1]], vertices[indices[2]]);
27
+ }
28
+ }
@@ -1,19 +1,19 @@
1
- import { triangleContexts } from '../globals/triangleContexts.js';
2
- import { addGeneratedTriangle } from './addGeneratedTriangle.js';
3
-
4
- /**
5
- * Run a point geometry generator with the current triangle destination context.
6
- *
7
- * @param {Object} context Destination area geometry.
8
- * @param {Function} generator Point geometry generator.
9
- * @param {Object} point Projected point.
10
- * @param {Object} style Geometry style.
11
- */
12
- export function generateTreeGeometry(context, generator, point, style) {
13
- triangleContexts.push(context);
14
- try {
15
- generator(point, style, addGeneratedTriangle);
16
- } finally {
17
- triangleContexts.pop();
18
- }
1
+ import { triangleContexts } from '../globals/triangleContexts.js';
2
+ import { addGeneratedTriangle } from './addGeneratedTriangle.js';
3
+
4
+ /**
5
+ * Run a point geometry generator with the current triangle destination context.
6
+ *
7
+ * @param {Object} context Destination area geometry.
8
+ * @param {Function} generator Point geometry generator.
9
+ * @param {Object} point Projected point.
10
+ * @param {Object} style Geometry style.
11
+ */
12
+ export function generateTreeGeometry(context, generator, point, style) {
13
+ triangleContexts.push(context);
14
+ try {
15
+ generator(point, style, addGeneratedTriangle);
16
+ } finally {
17
+ triangleContexts.pop();
18
+ }
19
19
  }
@@ -1,36 +1,36 @@
1
- import { bridgesByLayer } from '../weakmaps/bridgesByLayer.js';
2
-
3
- /**
4
- * Index bridge triangles in 64-pixel buckets for elevation lookup.
5
- *
6
- * @param {L.Layer} layer Terrain layer owning the bridge index.
7
- * @param {Array<Array<number>>} pixels Projected vertices including elevation.
8
- * @param {Array<Array<number>>} triangles Triangle vertex indices.
9
- */
10
- export function indexBridge(layer, pixels, triangles) {
11
- const bridgeTriangles = /* alloc */ [];
12
- let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
13
- let t, triangle, i, p, x, y, key, bucket;
14
- for (t of triangles) {
15
- triangle = /* alloc */ [];
16
- for (i of t) triangle.push(pixels[i]);
17
- bridgeTriangles.push(triangle);
18
- }
19
- for (p of pixels) {
20
- minX = Math.min(minX, p[0]); minY = Math.min(minY, p[1]);
21
- maxX = Math.max(maxX, p[0]); maxY = Math.max(maxY, p[1]);
22
- }
23
- const bridge = /* alloc */ {
24
- triangles: bridgeTriangles,
25
- min: /* alloc */ [minX, minY],
26
- max: /* alloc */ [maxX, maxY],
27
- };
28
- for (x = Math.floor(bridge.min[0] / 64); x <= Math.floor(bridge.max[0] / 64); x++) {
29
- for (y = Math.floor(bridge.min[1] / 64); y <= Math.floor(bridge.max[1] / 64); y++) {
30
- key = `${x}/${y}`;
31
- bucket = bridgesByLayer.get(layer).get(key);
32
- if (!bucket) bridgesByLayer.get(layer).set(key, bucket = /* alloc */ []);
33
- bucket.push(bridge);
34
- }
35
- }
36
- }
1
+ import { bridgesByLayer } from '../weakmaps/bridgesByLayer.js';
2
+
3
+ /**
4
+ * Index bridge triangles in 64-pixel buckets for elevation lookup.
5
+ *
6
+ * @param {L.Layer} layer Terrain layer owning the bridge index.
7
+ * @param {Array<Array<number>>} pixels Projected vertices including elevation.
8
+ * @param {Array<Array<number>>} triangles Triangle vertex indices.
9
+ */
10
+ export function indexBridge(layer, pixels, triangles) {
11
+ const bridgeTriangles = /* alloc */ [];
12
+ let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
13
+ let t, triangle, i, p, x, y, key, bucket;
14
+ for (t of triangles) {
15
+ triangle = /* alloc */ [];
16
+ for (i of t) triangle.push(pixels[i]);
17
+ bridgeTriangles.push(triangle);
18
+ }
19
+ for (p of pixels) {
20
+ minX = Math.min(minX, p[0]); minY = Math.min(minY, p[1]);
21
+ maxX = Math.max(maxX, p[0]); maxY = Math.max(maxY, p[1]);
22
+ }
23
+ const bridge = /* alloc */ {
24
+ triangles: bridgeTriangles,
25
+ min: /* alloc */ [minX, minY],
26
+ max: /* alloc */ [maxX, maxY],
27
+ };
28
+ for (x = Math.floor(bridge.min[0] / 64); x <= Math.floor(bridge.max[0] / 64); x++) {
29
+ for (y = Math.floor(bridge.min[1] / 64); y <= Math.floor(bridge.max[1] / 64); y++) {
30
+ key = `${x}/${y}`;
31
+ bucket = bridgesByLayer.get(layer).get(key);
32
+ if (!bucket) bridgesByLayer.get(layer).set(key, bucket = /* alloc */ []);
33
+ bucket.push(bridge);
34
+ }
35
+ }
36
+ }
@@ -1,37 +1,37 @@
1
- /**
2
- * Compact repeated features only when reconstructed float32 positions compare equal.
3
- *
4
- * @param {Object} context Area geometry buffers and feature ranges.
5
- *
6
- * @returns {Object} Instanced buffers, or the original context if compaction is unsuitable.
7
- */
8
- export function instanceAreaGeometry(context) {
9
- const { positions, normals, colors, featureFaces } = context;
10
- if (context.backend.options.nightLight || featureFaces.length < 2) return context;
11
- const vertices = featureFaces[0].vertexEnd;
12
- const length = vertices * 3;
13
- if (!vertices || positions.length !== length * featureFaces.length) return context;
14
- const originX = Math.trunc(positions[0]), originY = Math.trunc(positions[1]), originZ = Math.trunc(positions[2]);
15
- const template = /* alloc */ new Float32Array(length);
16
- let i, instance, face, start;
17
- for (i = 0; i < length; i++) template[i] = positions[i] - (i % 3 === 0 ? originX : i % 3 === 1 ? originY : originZ);
18
- const offsets = /* alloc */ new Float32Array(featureFaces.length * 4);
19
- for (instance = 0; instance < featureFaces.length; instance++) {
20
- face = featureFaces[instance];
21
- start = instance * length;
22
- if (face.vertexStart !== instance * vertices || face.vertexEnd !== (instance + 1) * vertices) return context;
23
- offsets[instance * 4] = originX + positions[start] - positions[0];
24
- offsets[instance * 4 + 1] = originY + positions[start + 1] - positions[1];
25
- offsets[instance * 4 + 2] = originZ + positions[start + 2] - positions[2];
26
- offsets[instance * 4 + 3] = instance * vertices;
27
- for (i = 0; i < length; i++) {
28
- if (Math.fround(template[i] + offsets[instance * 4 + i % 3]) !== Math.fround(positions[start + i]) ||
29
- Math.fround(normals[i]) !== Math.fround(normals[start + i]) ||
30
- Math.fround(colors[i]) !== Math.fround(colors[start + i])) return context;
31
- }
32
- }
33
- return /* alloc */ {
34
- positions: template, normals: normals.slice(0, length), colors: colors.slice(0, length),
35
- instanceOffsets: offsets,
36
- };
37
- }
1
+ /**
2
+ * Compact repeated features only when reconstructed float32 positions compare equal.
3
+ *
4
+ * @param {Object} context Area geometry buffers and feature ranges.
5
+ *
6
+ * @returns {Object} Instanced buffers, or the original context if compaction is unsuitable.
7
+ */
8
+ export function instanceAreaGeometry(context) {
9
+ const { positions, normals, colors, featureFaces } = context;
10
+ if (context.backend.options.nightLight || featureFaces.length < 2) return context;
11
+ const vertices = featureFaces[0].vertexEnd;
12
+ const length = vertices * 3;
13
+ if (!vertices || positions.length !== length * featureFaces.length) return context;
14
+ const originX = Math.trunc(positions[0]), originY = Math.trunc(positions[1]), originZ = Math.trunc(positions[2]);
15
+ const template = /* alloc */ new Float32Array(length);
16
+ let i, instance, face, start;
17
+ for (i = 0; i < length; i++) template[i] = positions[i] - (i % 3 === 0 ? originX : i % 3 === 1 ? originY : originZ);
18
+ const offsets = /* alloc */ new Float32Array(featureFaces.length * 4);
19
+ for (instance = 0; instance < featureFaces.length; instance++) {
20
+ face = featureFaces[instance];
21
+ start = instance * length;
22
+ if (face.vertexStart !== instance * vertices || face.vertexEnd !== (instance + 1) * vertices) return context;
23
+ offsets[instance * 4] = originX + positions[start] - positions[0];
24
+ offsets[instance * 4 + 1] = originY + positions[start + 1] - positions[1];
25
+ offsets[instance * 4 + 2] = originZ + positions[start + 2] - positions[2];
26
+ offsets[instance * 4 + 3] = instance * vertices;
27
+ for (i = 0; i < length; i++) {
28
+ if (Math.fround(template[i] + offsets[instance * 4 + i % 3]) !== Math.fround(positions[start + i]) ||
29
+ Math.fround(normals[i]) !== Math.fround(normals[start + i]) ||
30
+ Math.fround(colors[i]) !== Math.fround(colors[start + i])) return context;
31
+ }
32
+ }
33
+ return /* alloc */ {
34
+ positions: template, normals: normals.slice(0, length), colors: colors.slice(0, length),
35
+ instanceOffsets: offsets,
36
+ };
37
+ }
@@ -1,28 +1,28 @@
1
- import { segment } from './segment.js';
2
- import { lineJoin } from './lineJoin.js';
3
- import { dashedSegment } from './dashedSegment.js';
4
-
5
- /**
6
- * Generate solid or dashed stroke geometry for a projected line or ring.
7
- *
8
- * @param {Object} context Line style and geometry buffers.
9
- * @param {Array<L.Point>} points Projected line points.
10
- * @param {boolean} closed Whether to connect the last point to the first.
11
- */
12
- export function line(context, points, closed) {
13
- const { options, width, dash } = context;
14
- if (!options.stroke || width <= 0 || points.length < 2) return;
15
- let distance = Number(options.dashOffset) || 0;
16
- let period = 0, value, i, a, b, length;
17
- for (value of dash) period += value;
18
- for (i = 0; i < points.length - (closed ? 0 : 1); i++) {
19
- a = points[i], b = points[(i + 1) % points.length], length = a.distanceTo(b);
20
- if (!dash.length) {
21
- segment(context, a, b, !closed && i === 0, !closed && i === points.length - 2);
22
- if (closed || i > 0) lineJoin(context, points, i, b, length);
23
- } else {
24
- dashedSegment(context, a, b, length, distance, period);
25
- }
26
- distance += length;
27
- }
28
- }
1
+ import { segment } from './segment.js';
2
+ import { lineJoin } from './lineJoin.js';
3
+ import { dashedSegment } from './dashedSegment.js';
4
+
5
+ /**
6
+ * Generate solid or dashed stroke geometry for a projected line or ring.
7
+ *
8
+ * @param {Object} context Line style and geometry buffers.
9
+ * @param {Array<L.Point>} points Projected line points.
10
+ * @param {boolean} closed Whether to connect the last point to the first.
11
+ */
12
+ export function line(context, points, closed) {
13
+ const { options, width, dash } = context;
14
+ if (!options.stroke || width <= 0 || points.length < 2) return;
15
+ let distance = Number(options.dashOffset) || 0;
16
+ let period = 0, value, i, a, b, length;
17
+ for (value of dash) period += value;
18
+ for (i = 0; i < points.length - (closed ? 0 : 1); i++) {
19
+ a = points[i], b = points[(i + 1) % points.length], length = a.distanceTo(b);
20
+ if (!dash.length) {
21
+ segment(context, a, b, !closed && i === 0, !closed && i === points.length - 2);
22
+ if (closed || i > 0) lineJoin(context, points, i, b, length);
23
+ } else {
24
+ dashedSegment(context, a, b, length, distance, period);
25
+ }
26
+ distance += length;
27
+ }
28
+ }
@@ -1,35 +1,35 @@
1
- import { L } from '../globals/L.js';
2
- import { triangle } from './appendNativeTriangle.js';
3
- import { disk } from './disk.js';
4
-
5
- /**
6
- * Append a round, bevel or limited miter join between consecutive line segments.
7
- *
8
- * @param {Object} context Line style and geometry buffers.
9
- * @param {Array<L.Point>} points Projected line points.
10
- * @param {number} i Index of the join point.
11
- * @param {L.Point} b Next point.
12
- * @param {number} length Outgoing segment length.
13
- */
14
- export function lineJoin(context, points, i, b, length) {
15
- const { options, width, point, stroke } = context;
16
- const a = points[i], radius = width / 2;
17
- if (options.lineJoin === 'round') {
18
- disk(point, a, radius, stroke);
19
- return;
20
- }
21
- const previous = a.subtract(points[(i + points.length - 1) % points.length]);
22
- const previousLength = Math.hypot(previous.x, previous.y);
23
- if (!previousLength || !length) return;
24
- const incoming = previous.divideBy(previousLength), outgoing = b.subtract(a).divideBy(length);
25
- const side = incoming.x * outgoing.y - incoming.y * outgoing.x > 0 ? -1 : 1;
26
- const n1 = /* alloc */ new L.Point(-incoming.y * side, incoming.x * side);
27
- const n2 = /* alloc */ new L.Point(-outgoing.y * side, outgoing.x * side);
28
- const from = a.add(n1.multiplyBy(radius)), to = a.add(n2.multiplyBy(radius));
29
- const denominator = 1 + n1.x * n2.x + n1.y * n2.y;
30
- const miter = denominator > 0 ? n1.add(n2).multiplyBy(radius / denominator) : null;
31
- triangle(point, stroke, from, a, to, a, a, a);
32
- if (options.lineJoin === 'miter' && miter && Math.hypot(miter.x, miter.y) <= radius * 4) {
33
- triangle(point, stroke, from, a.add(miter), to, a, a, a);
34
- }
35
- }
1
+ import { L } from '../globals/L.js';
2
+ import { triangle } from './appendNativeTriangle.js';
3
+ import { disk } from './disk.js';
4
+
5
+ /**
6
+ * Append a round, bevel or limited miter join between consecutive line segments.
7
+ *
8
+ * @param {Object} context Line style and geometry buffers.
9
+ * @param {Array<L.Point>} points Projected line points.
10
+ * @param {number} i Index of the join point.
11
+ * @param {L.Point} b Next point.
12
+ * @param {number} length Outgoing segment length.
13
+ */
14
+ export function lineJoin(context, points, i, b, length) {
15
+ const { options, width, point, stroke } = context;
16
+ const a = points[i], radius = width / 2;
17
+ if (options.lineJoin === 'round') {
18
+ disk(point, a, radius, stroke);
19
+ return;
20
+ }
21
+ const previous = a.subtract(points[(i + points.length - 1) % points.length]);
22
+ const previousLength = Math.hypot(previous.x, previous.y);
23
+ if (!previousLength || !length) return;
24
+ const incoming = previous.divideBy(previousLength), outgoing = b.subtract(a).divideBy(length);
25
+ const side = incoming.x * outgoing.y - incoming.y * outgoing.x > 0 ? -1 : 1;
26
+ const n1 = /* alloc */ new L.Point(-incoming.y * side, incoming.x * side);
27
+ const n2 = /* alloc */ new L.Point(-outgoing.y * side, outgoing.x * side);
28
+ const from = a.add(n1.multiplyBy(radius)), to = a.add(n2.multiplyBy(radius));
29
+ const denominator = 1 + n1.x * n2.x + n1.y * n2.y;
30
+ const miter = denominator > 0 ? n1.add(n2).multiplyBy(radius / denominator) : null;
31
+ triangle(point, stroke, from, a, to, a, a, a);
32
+ if (options.lineJoin === 'miter' && miter && Math.hypot(miter.x, miter.y) <= radius * 4) {
33
+ triangle(point, stroke, from, a.add(miter), to, a, a, a);
34
+ }
35
+ }
@@ -1,20 +1,20 @@
1
- /**
2
- * Resolve and cache a marker icon or shadow's dimensions and anchor.
3
- *
4
- * @param {Object} state Native marker state.
5
- * @param {string} key Image kind, such as shadow.
6
- * @param {HTMLImageElement} image Image providing fallback dimensions.
7
- *
8
- * @returns {Array<number>} Width, height, anchor x and anchor y.
9
- */
10
- export function markerImageBounds(state, key, image) {
11
- const options = state.source.options.icon.options;
12
- const dimensions = options[key === 'shadow' ? 'shadowSize' : 'iconSize'];
13
- const bounds = state.markerImageBounds ||= /* alloc */ [0, 0, 0, 0];
14
- bounds[0] = dimensions ? dimensions.x ?? dimensions[0] : image.naturalWidth;
15
- bounds[1] = dimensions ? dimensions.y ?? dimensions[1] : image.naturalHeight;
16
- const anchor = (key === 'shadow' && options.shadowAnchor) || options.iconAnchor;
17
- bounds[2] = anchor ? anchor.x ?? anchor[0] : Math.floor(bounds[0] / 2);
18
- bounds[3] = anchor ? anchor.y ?? anchor[1] : Math.floor(bounds[1] / 2);
19
- return bounds;
20
- }
1
+ /**
2
+ * Resolve and cache a marker icon or shadow's dimensions and anchor.
3
+ *
4
+ * @param {Object} state Native marker state.
5
+ * @param {string} key Image kind, such as shadow.
6
+ * @param {HTMLImageElement} image Image providing fallback dimensions.
7
+ *
8
+ * @returns {Array<number>} Width, height, anchor x and anchor y.
9
+ */
10
+ export function markerImageBounds(state, key, image) {
11
+ const options = state.source.options.icon.options;
12
+ const dimensions = options[key === 'shadow' ? 'shadowSize' : 'iconSize'];
13
+ const bounds = state.markerImageBounds ||= /* alloc */ [0, 0, 0, 0];
14
+ bounds[0] = dimensions ? dimensions.x ?? dimensions[0] : image.naturalWidth;
15
+ bounds[1] = dimensions ? dimensions.y ?? dimensions[1] : image.naturalHeight;
16
+ const anchor = (key === 'shadow' && options.shadowAnchor) || options.iconAnchor;
17
+ bounds[2] = anchor ? anchor.x ?? anchor[0] : Math.floor(bounds[0] / 2);
18
+ bounds[3] = anchor ? anchor.y ?? anchor[1] : Math.floor(bounds[1] / 2);
19
+ return bounds;
20
+ }
@@ -1,33 +1,33 @@
1
- /**
2
- * Transform and cache a mesh's bounding box for shadow calculations.
3
- *
4
- * @param {Object} mesh Mesh containing the world-matrix version.
5
- * @param {Object} bounds Local bounding box.
6
- * @param {ArrayLike<number>} matrix World transformation matrix.
7
- *
8
- * @returns {Object} Cached transformed minimum and maximum bounds.
9
- */
10
- export function meshShadowBounds(mesh, bounds, matrix) {
11
- let cached = mesh._shadowBounds;
12
- if (!cached || cached.version !== mesh._worldMatrixVersion || cached.bounds !== bounds) {
13
- cached ||= mesh._shadowBounds = /* alloc */ {
14
- min: /* alloc */ [Infinity, Infinity, Infinity],
15
- max: /* alloc */ [-Infinity, -Infinity, -Infinity],
16
- };
17
- cached.version = mesh._worldMatrixVersion;
18
- cached.bounds = bounds;
19
- cached.min.fill(Infinity); cached.max.fill(-Infinity);
20
- let i, x, y, z, w, axis, value;
21
- for (i = 0; i < 8; i++) {
22
- x = i & 1 ? bounds.max[0] : bounds.min[0], y = i & 2 ? bounds.max[1] : bounds.min[1];
23
- z = i & 4 ? bounds.max[2] : bounds.min[2];
24
- w = matrix[3] * x + matrix[7] * y + matrix[11] * z + matrix[15];
25
- for (axis = 0; axis < 3; axis++) {
26
- value = (matrix[axis] * x + matrix[axis + 4] * y + matrix[axis + 8] * z + matrix[axis + 12]) / w;
27
- cached.min[axis] = Math.min(cached.min[axis], value);
28
- cached.max[axis] = Math.max(cached.max[axis], value);
29
- }
30
- }
31
- }
32
- return cached;
33
- }
1
+ /**
2
+ * Transform and cache a mesh's bounding box for shadow calculations.
3
+ *
4
+ * @param {Object} mesh Mesh containing the world-matrix version.
5
+ * @param {Object} bounds Local bounding box.
6
+ * @param {ArrayLike<number>} matrix World transformation matrix.
7
+ *
8
+ * @returns {Object} Cached transformed minimum and maximum bounds.
9
+ */
10
+ export function meshShadowBounds(mesh, bounds, matrix) {
11
+ let cached = mesh._shadowBounds;
12
+ if (!cached || cached.version !== mesh._worldMatrixVersion || cached.bounds !== bounds) {
13
+ cached ||= mesh._shadowBounds = /* alloc */ {
14
+ min: /* alloc */ [Infinity, Infinity, Infinity],
15
+ max: /* alloc */ [-Infinity, -Infinity, -Infinity],
16
+ };
17
+ cached.version = mesh._worldMatrixVersion;
18
+ cached.bounds = bounds;
19
+ cached.min.fill(Infinity); cached.max.fill(-Infinity);
20
+ let i, x, y, z, w, axis, value;
21
+ for (i = 0; i < 8; i++) {
22
+ x = i & 1 ? bounds.max[0] : bounds.min[0], y = i & 2 ? bounds.max[1] : bounds.min[1];
23
+ z = i & 4 ? bounds.max[2] : bounds.min[2];
24
+ w = matrix[3] * x + matrix[7] * y + matrix[11] * z + matrix[15];
25
+ for (axis = 0; axis < 3; axis++) {
26
+ value = (matrix[axis] * x + matrix[axis + 4] * y + matrix[axis + 8] * z + matrix[axis + 12]) / w;
27
+ cached.min[axis] = Math.min(cached.min[axis], value);
28
+ cached.max[axis] = Math.max(cached.max[axis], value);
29
+ }
30
+ }
31
+ }
32
+ return cached;
33
+ }
@@ -1,10 +1,10 @@
1
- /**
2
- * Offset a 3D point downward by the bridge deck thickness.
3
- *
4
- * @param {Array<number>} p Input point.
5
- *
6
- * @returns {Array<number>} Offset point.
7
- */
8
- export function below(p) {
9
- return /* alloc */ [p[0], p[1] - 1.2, p[2]];
10
- }
1
+ /**
2
+ * Offset a 3D point downward by the bridge deck thickness.
3
+ *
4
+ * @param {Array<number>} p Input point.
5
+ *
6
+ * @returns {Array<number>} Offset point.
7
+ */
8
+ export function below(p) {
9
+ return /* alloc */ [p[0], p[1] - 1.2, p[2]];
10
+ }
@@ -1,23 +1,23 @@
1
- /**
2
- * Append a quad as two triangles at a common height.
3
- *
4
- * @param {Function} addTriangle Triangle destination callback.
5
- * @param {Object} color Triangle color.
6
- * @param {Object} a First corner.
7
- * @param {Object} b Second corner.
8
- * @param {Object} c Third corner.
9
- * @param {Object} d Fourth corner.
10
- * @param {number} height Quad height.
11
- * @param {number|Array<number>} nx Normal x component or complete normal vector.
12
- * @param {number} ny Normal y component when nx is numeric.
13
- * @param {number} nz Normal z component when nx is numeric.
14
- */
15
- export function quad(addTriangle, color, a, b, c, d, height, nx, ny, nz) {
16
- if (typeof nx !== 'number') {
17
- addTriangle(a, height, b, height, c, height, ...nx, color);
18
- addTriangle(a, height, c, height, d, height, ...nx, color);
19
- } else {
20
- addTriangle(a, height, b, height, c, height, nx, ny, nz, color);
21
- addTriangle(a, height, c, height, d, height, nx, ny, nz, color);
22
- }
23
- }
1
+ /**
2
+ * Append a quad as two triangles at a common height.
3
+ *
4
+ * @param {Function} addTriangle Triangle destination callback.
5
+ * @param {Object} color Triangle color.
6
+ * @param {Object} a First corner.
7
+ * @param {Object} b Second corner.
8
+ * @param {Object} c Third corner.
9
+ * @param {Object} d Fourth corner.
10
+ * @param {number} height Quad height.
11
+ * @param {number|Array<number>} nx Normal x component or complete normal vector.
12
+ * @param {number} ny Normal y component when nx is numeric.
13
+ * @param {number} nz Normal z component when nx is numeric.
14
+ */
15
+ export function quad(addTriangle, color, a, b, c, d, height, nx, ny, nz) {
16
+ if (typeof nx !== 'number') {
17
+ addTriangle(a, height, b, height, c, height, ...nx, color);
18
+ addTriangle(a, height, c, height, d, height, ...nx, color);
19
+ } else {
20
+ addTriangle(a, height, b, height, c, height, nx, ny, nz, color);
21
+ addTriangle(a, height, c, height, d, height, nx, ny, nz, color);
22
+ }
23
+ }