@maplibre/mlt 1.1.6 → 1.1.8

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 (221) hide show
  1. package/dist/decoding/bigEndianDecode.d.ts +13 -0
  2. package/dist/decoding/bigEndianDecode.js +50 -0
  3. package/dist/decoding/bigEndianDecode.js.map +1 -0
  4. package/dist/decoding/decodingTestUtils.d.ts +2 -2
  5. package/dist/decoding/decodingTestUtils.js +20 -21
  6. package/dist/decoding/decodingTestUtils.js.map +1 -1
  7. package/dist/decoding/decodingUtils.js +4 -2
  8. package/dist/decoding/decodingUtils.js.map +1 -1
  9. package/dist/decoding/fastPforDecoder.d.ts +47 -0
  10. package/dist/decoding/fastPforDecoder.js +482 -0
  11. package/dist/decoding/fastPforDecoder.js.map +1 -0
  12. package/dist/decoding/fastPforShared.d.ts +7 -0
  13. package/dist/decoding/fastPforShared.js +29 -0
  14. package/dist/decoding/fastPforShared.js.map +1 -0
  15. package/dist/decoding/fastPforUnpack.d.ts +23 -0
  16. package/dist/decoding/fastPforUnpack.js +910 -0
  17. package/dist/decoding/fastPforUnpack.js.map +1 -0
  18. package/dist/decoding/geometryDecoder.d.ts +2 -2
  19. package/dist/decoding/geometryDecoder.js +52 -49
  20. package/dist/decoding/geometryDecoder.js.map +1 -1
  21. package/dist/decoding/intWrapper.js +0 -1
  22. package/dist/decoding/intWrapper.js.map +1 -1
  23. package/dist/decoding/integerDecodingUtils.d.ts +33 -25
  24. package/dist/decoding/integerDecodingUtils.js +115 -52
  25. package/dist/decoding/integerDecodingUtils.js.map +1 -1
  26. package/dist/decoding/integerStreamDecoder.d.ts +15 -11
  27. package/dist/decoding/integerStreamDecoder.js +159 -65
  28. package/dist/decoding/integerStreamDecoder.js.map +1 -1
  29. package/dist/decoding/propertyDecoder.js +38 -36
  30. package/dist/decoding/propertyDecoder.js.map +1 -1
  31. package/dist/decoding/stringDecoder.js +19 -23
  32. package/dist/decoding/stringDecoder.js.map +1 -1
  33. package/dist/decoding/unpackNullableUtils.d.ts +2 -2
  34. package/dist/decoding/unpackNullableUtils.js.map +1 -1
  35. package/dist/encoding/bigEndianEncode.d.ts +7 -0
  36. package/dist/encoding/bigEndianEncode.js +16 -0
  37. package/dist/encoding/bigEndianEncode.js.map +1 -0
  38. package/dist/encoding/constGeometryVectorEncoder.d.ts +19 -0
  39. package/dist/encoding/constGeometryVectorEncoder.js +248 -0
  40. package/dist/encoding/constGeometryVectorEncoder.js.map +1 -0
  41. package/dist/encoding/encodingUtils.d.ts +2 -2
  42. package/dist/encoding/encodingUtils.js +3 -3
  43. package/dist/encoding/encodingUtils.js.map +1 -1
  44. package/dist/encoding/fastPforEncoder.d.ts +18 -0
  45. package/dist/encoding/fastPforEncoder.js +310 -0
  46. package/dist/encoding/fastPforEncoder.js.map +1 -0
  47. package/dist/encoding/integerEncodingUtils.d.ts +20 -20
  48. package/dist/encoding/integerEncodingUtils.js +64 -48
  49. package/dist/encoding/integerEncodingUtils.js.map +1 -1
  50. package/dist/encoding/integerStreamEncoder.d.ts +3 -2
  51. package/dist/encoding/integerStreamEncoder.js +57 -23
  52. package/dist/encoding/integerStreamEncoder.js.map +1 -1
  53. package/dist/encoding/packNullableUtils.d.ts +1 -1
  54. package/dist/encoding/packNullableUtils.js.map +1 -1
  55. package/dist/encoding/propertyEncoder.d.ts +1 -1
  56. package/dist/encoding/propertyEncoder.js +17 -24
  57. package/dist/encoding/propertyEncoder.js.map +1 -1
  58. package/dist/encoding/stringEncoder.js +9 -42
  59. package/dist/encoding/stringEncoder.js.map +1 -1
  60. package/dist/encoding/zOrderCurveEncoder.js +1 -1
  61. package/dist/encoding/zOrderCurveEncoder.js.map +1 -1
  62. package/dist/metadata/tile/logicalStreamType.d.ts +8 -12
  63. package/dist/metadata/tile/logicalStreamType.js +1 -19
  64. package/dist/metadata/tile/logicalStreamType.js.map +1 -1
  65. package/dist/metadata/tile/streamMetadataDecoder.d.ts +1 -1
  66. package/dist/metadata/tile/streamMetadataDecoder.js +9 -4
  67. package/dist/metadata/tile/streamMetadataDecoder.js.map +1 -1
  68. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.d.ts +1 -1
  69. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.js.map +1 -1
  70. package/dist/metadata/tileset/typeMap.d.ts +10 -2
  71. package/dist/metadata/tileset/typeMap.js +25 -15
  72. package/dist/metadata/tileset/typeMap.js.map +1 -1
  73. package/dist/mltDecoder.js +46 -47
  74. package/dist/mltDecoder.js.map +1 -1
  75. package/dist/mltMetadata.js.map +1 -1
  76. package/dist/vector/constant/int32ConstVector.d.ts +6 -0
  77. package/dist/vector/constant/int32ConstVector.js +10 -0
  78. package/dist/vector/constant/int32ConstVector.js.map +1 -0
  79. package/dist/vector/constant/int64ConstVector.d.ts +6 -0
  80. package/dist/vector/constant/int64ConstVector.js +10 -0
  81. package/dist/vector/constant/int64ConstVector.js.map +1 -0
  82. package/dist/vector/dictionary/stringDictionaryVector.d.ts +1 -2
  83. package/dist/vector/dictionary/stringDictionaryVector.js +0 -3
  84. package/dist/vector/dictionary/stringDictionaryVector.js.map +1 -1
  85. package/dist/vector/featureTable.d.ts +7 -8
  86. package/dist/vector/featureTable.js +10 -42
  87. package/dist/vector/featureTable.js.map +1 -1
  88. package/dist/vector/filter/flatSelectionVector.d.ts +1 -1
  89. package/dist/vector/filter/flatSelectionVector.js +0 -2
  90. package/dist/vector/filter/flatSelectionVector.js.map +1 -1
  91. package/dist/vector/filter/selectionVectorUtils.d.ts +1 -1
  92. package/dist/vector/filter/selectionVectorUtils.js.map +1 -1
  93. package/dist/vector/filter/sequenceSelectionVector.d.ts +1 -1
  94. package/dist/vector/filter/sequenceSelectionVector.js +1 -5
  95. package/dist/vector/filter/sequenceSelectionVector.js.map +1 -1
  96. package/dist/vector/flat/bitVector.js +0 -2
  97. package/dist/vector/flat/bitVector.js.map +1 -1
  98. package/dist/vector/flat/booleanFlatVector.js +0 -1
  99. package/dist/vector/flat/booleanFlatVector.js.map +1 -1
  100. package/dist/vector/flat/{intFlatVector.d.ts → int32FlatVector.d.ts} +1 -1
  101. package/dist/vector/flat/{intFlatVector.js → int32FlatVector.js} +2 -2
  102. package/dist/vector/flat/int32FlatVector.js.map +1 -0
  103. package/dist/vector/flat/{longFlatVector.d.ts → int64FlatVector.d.ts} +1 -1
  104. package/dist/vector/flat/{longFlatVector.js → int64FlatVector.js} +2 -2
  105. package/dist/vector/flat/int64FlatVector.js.map +1 -0
  106. package/dist/vector/flat/stringFlatVector.d.ts +0 -1
  107. package/dist/vector/flat/stringFlatVector.js +0 -2
  108. package/dist/vector/flat/stringFlatVector.js.map +1 -1
  109. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.d.ts +1 -3
  110. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js +0 -42
  111. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js.map +1 -1
  112. package/dist/vector/geometry/constGeometryVector.d.ts +5 -5
  113. package/dist/vector/geometry/constGeometryVector.js +1 -3
  114. package/dist/vector/geometry/constGeometryVector.js.map +1 -1
  115. package/dist/vector/geometry/constGpuVector.d.ts +4 -4
  116. package/dist/vector/geometry/constGpuVector.js +1 -3
  117. package/dist/vector/geometry/constGpuVector.js.map +1 -1
  118. package/dist/vector/geometry/flatGeometryVector.d.ts +4 -4
  119. package/dist/vector/geometry/flatGeometryVector.js +1 -5
  120. package/dist/vector/geometry/flatGeometryVector.js.map +1 -1
  121. package/dist/vector/geometry/flatGpuVector.d.ts +3 -3
  122. package/dist/vector/geometry/flatGpuVector.js +0 -1
  123. package/dist/vector/geometry/flatGpuVector.js.map +1 -1
  124. package/dist/vector/geometry/geometryType.js.map +1 -1
  125. package/dist/vector/geometry/geometryVector.d.ts +7 -8
  126. package/dist/vector/geometry/geometryVector.js +0 -13
  127. package/dist/vector/geometry/geometryVector.js.map +1 -1
  128. package/dist/vector/geometry/geometryVectorConverter.d.ts +1 -1
  129. package/dist/vector/geometry/geometryVectorConverter.js +167 -211
  130. package/dist/vector/geometry/geometryVectorConverter.js.map +1 -1
  131. package/dist/vector/geometry/gpuVector.d.ts +6 -6
  132. package/dist/vector/geometry/gpuVector.js +0 -4
  133. package/dist/vector/geometry/gpuVector.js.map +1 -1
  134. package/dist/vector/geometry/topologyVector.d.ts +5 -9
  135. package/dist/vector/geometry/topologyVector.js +1 -19
  136. package/dist/vector/geometry/topologyVector.js.map +1 -1
  137. package/dist/vector/geometry/vertexBufferType.js.map +1 -1
  138. package/dist/vector/idVector.d.ts +8 -0
  139. package/dist/vector/idVector.js +2 -0
  140. package/dist/vector/idVector.js.map +1 -0
  141. package/dist/vector/sequence/{intSequenceVector.d.ts → int32SequenceVector.d.ts} +1 -1
  142. package/dist/vector/sequence/{intSequenceVector.js → int32SequenceVector.js} +2 -2
  143. package/dist/vector/sequence/int32SequenceVector.js.map +1 -0
  144. package/dist/vector/sequence/{longSequenceVector.d.ts → int64SequenceVector.d.ts} +1 -1
  145. package/dist/vector/sequence/{longSequenceVector.js → int64SequenceVector.js} +2 -2
  146. package/dist/vector/sequence/int64SequenceVector.js.map +1 -0
  147. package/dist/vector/sequence/sequenceVector.js +0 -1
  148. package/dist/vector/sequence/sequenceVector.js.map +1 -1
  149. package/dist/vector/variableSizeVector.js +0 -1
  150. package/dist/vector/variableSizeVector.js.map +1 -1
  151. package/dist/vector/vector.js +1 -5
  152. package/dist/vector/vector.js.map +1 -1
  153. package/dist/vector/vectorType.js.map +1 -1
  154. package/package.json +9 -10
  155. package/dist/decoding/decodingUtils.spec.d.ts +0 -1
  156. package/dist/decoding/decodingUtils.spec.js +0 -141
  157. package/dist/decoding/decodingUtils.spec.js.map +0 -1
  158. package/dist/decoding/fsstDecoder.spec.d.ts +0 -1
  159. package/dist/decoding/fsstDecoder.spec.js +0 -57
  160. package/dist/decoding/fsstDecoder.spec.js.map +0 -1
  161. package/dist/decoding/integerDecodingUtils.spec.d.ts +0 -1
  162. package/dist/decoding/integerDecodingUtils.spec.js +0 -300
  163. package/dist/decoding/integerDecodingUtils.spec.js.map +0 -1
  164. package/dist/decoding/integerStreamDecoder.spec.d.ts +0 -1
  165. package/dist/decoding/integerStreamDecoder.spec.js +0 -402
  166. package/dist/decoding/integerStreamDecoder.spec.js.map +0 -1
  167. package/dist/decoding/propertyDecoder.spec.d.ts +0 -1
  168. package/dist/decoding/propertyDecoder.spec.js +0 -448
  169. package/dist/decoding/propertyDecoder.spec.js.map +0 -1
  170. package/dist/decoding/stringDecoder.spec.d.ts +0 -1
  171. package/dist/decoding/stringDecoder.spec.js +0 -387
  172. package/dist/decoding/stringDecoder.spec.js.map +0 -1
  173. package/dist/decoding/unpackNullableUtils.spec.d.ts +0 -1
  174. package/dist/decoding/unpackNullableUtils.spec.js +0 -71
  175. package/dist/decoding/unpackNullableUtils.spec.js.map +0 -1
  176. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.d.ts +0 -1
  177. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.js +0 -142
  178. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.js.map +0 -1
  179. package/dist/mltDecoder.spec.d.ts +0 -1
  180. package/dist/mltDecoder.spec.js +0 -152
  181. package/dist/mltDecoder.spec.js.map +0 -1
  182. package/dist/vector/constant/intConstVector.d.ts +0 -6
  183. package/dist/vector/constant/intConstVector.js +0 -10
  184. package/dist/vector/constant/intConstVector.js.map +0 -1
  185. package/dist/vector/constant/longConstVector.d.ts +0 -6
  186. package/dist/vector/constant/longConstVector.js +0 -10
  187. package/dist/vector/constant/longConstVector.js.map +0 -1
  188. package/dist/vector/filter/flatSelectionVector.spec.d.ts +0 -1
  189. package/dist/vector/filter/flatSelectionVector.spec.js +0 -51
  190. package/dist/vector/filter/flatSelectionVector.spec.js.map +0 -1
  191. package/dist/vector/filter/selectionVectorUtil.spec.d.ts +0 -1
  192. package/dist/vector/filter/selectionVectorUtil.spec.js +0 -154
  193. package/dist/vector/filter/selectionVectorUtil.spec.js.map +0 -1
  194. package/dist/vector/filter/sequenceSelectionVector.spec.d.ts +0 -1
  195. package/dist/vector/filter/sequenceSelectionVector.spec.js +0 -115
  196. package/dist/vector/filter/sequenceSelectionVector.spec.js.map +0 -1
  197. package/dist/vector/flat/floatFlatVector.spec.d.ts +0 -1
  198. package/dist/vector/flat/floatFlatVector.spec.js +0 -14
  199. package/dist/vector/flat/floatFlatVector.spec.js.map +0 -1
  200. package/dist/vector/flat/intFlatVector.js.map +0 -1
  201. package/dist/vector/flat/intFlatVector.spec.d.ts +0 -1
  202. package/dist/vector/flat/intFlatVector.spec.js +0 -15
  203. package/dist/vector/flat/intFlatVector.spec.js.map +0 -1
  204. package/dist/vector/flat/longFlatVector.js.map +0 -1
  205. package/dist/vector/flat/longFlatVector.spec.d.ts +0 -1
  206. package/dist/vector/flat/longFlatVector.spec.js +0 -14
  207. package/dist/vector/flat/longFlatVector.spec.js.map +0 -1
  208. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.d.ts +0 -1
  209. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.js +0 -28
  210. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.js.map +0 -1
  211. package/dist/vector/geometry/zOrderCurve.spec.d.ts +0 -1
  212. package/dist/vector/geometry/zOrderCurve.spec.js +0 -25
  213. package/dist/vector/geometry/zOrderCurve.spec.js.map +0 -1
  214. package/dist/vector/intVector.d.ts +0 -8
  215. package/dist/vector/intVector.js +0 -2
  216. package/dist/vector/intVector.js.map +0 -1
  217. package/dist/vector/sequence/intSequenceVector.js.map +0 -1
  218. package/dist/vector/sequence/longSequenceVector.js.map +0 -1
  219. package/dist/vector/sequence/longSequenceVektor.spec.d.ts +0 -1
  220. package/dist/vector/sequence/longSequenceVektor.spec.js +0 -11
  221. package/dist/vector/sequence/longSequenceVektor.spec.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"geometryDecoder.js","sourceRoot":"","sources":["../../src/decoding/geometryDecoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { type GeometryVector, type MortonSettings } from \"../vector/geometry/geometryVector\";\nimport { decodeStreamMetadata, type MortonEncodedStreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport type IntWrapper from \"./intWrapper\";\nimport {\n decodeConstIntStream,\n decodeIntStream,\n decodeLengthStreamToOffsetBuffer,\n getVectorType,\n} from \"./integerStreamDecoder\";\nimport { VectorType } from \"../vector/vectorType\";\nimport { PhysicalStreamType } from \"../metadata/tile/physicalStreamType\";\nimport { LengthType } from \"../metadata/tile/lengthType\";\nimport { DictionaryType } from \"../metadata/tile/dictionaryType\";\nimport TopologyVector from \"../vector/geometry/topologyVector\";\nimport {\n ConstGeometryVector,\n createConstGeometryVector,\n createMortonEncodedConstGeometryVector,\n} from \"../vector/geometry/constGeometryVector\";\nimport {\n createFlatGeometryVector,\n createFlatGeometryVectorMortonEncoded,\n FlatGeometryVector,\n} from \"../vector/geometry/flatGeometryVector\";\nimport { OffsetType } from \"../metadata/tile/offsetType\";\nimport { ConstGpuVector, createConstGpuVector } from \"../vector/geometry/constGpuVector\";\nimport { type GpuVector } from \"../vector/geometry/gpuVector\";\nimport { createFlatGpuVector, FlatGpuVector } from \"../vector/geometry/flatGpuVector\";\nimport type GeometryScaling from \"./geometryScaling\";\n\n// TODO: get rid of numFeatures parameter\nexport function decodeGeometryColumn(\n tile: Uint8Array,\n numStreams: number,\n offset: IntWrapper,\n numFeatures: number,\n scalingData?: GeometryScaling,\n): GeometryVector | GpuVector {\n const geometryTypeMetadata = decodeStreamMetadata(tile, offset);\n const geometryTypesVectorType = getVectorType(geometryTypeMetadata, numFeatures, tile, offset);\n\n let vertexOffsets: Int32Array = null;\n let vertexBuffer: Int32Array = null;\n let mortonSettings: MortonSettings = null;\n let indexBuffer: Int32Array = null;\n\n if (geometryTypesVectorType === VectorType.CONST) {\n /* All geometries in the colum have the same geometry type */\n const geometryType = decodeConstIntStream(tile, offset, geometryTypeMetadata, false);\n\n // Variables for const geometry path (directly decoded as offsets)\n let geometryOffsets: Uint32Array = null;\n let partOffsets: Uint32Array = null;\n let ringOffsets: Uint32Array = null;\n //TODO: use geometryOffsets for that? -> but then tessellated polygons can't be used with normal polygons\n // in one FeatureTable?\n let triangleOffsets: Uint32Array = null;\n\n for (let i = 0; i < numStreams - 1; i++) {\n const geometryStreamMetadata = decodeStreamMetadata(tile, offset);\n switch (geometryStreamMetadata.physicalStreamType) {\n case PhysicalStreamType.LENGTH:\n switch (geometryStreamMetadata.logicalStreamType.lengthType) {\n case LengthType.GEOMETRIES:\n geometryOffsets = decodeLengthStreamToOffsetBuffer(tile, offset, geometryStreamMetadata);\n break;\n case LengthType.PARTS:\n partOffsets = decodeLengthStreamToOffsetBuffer(tile, offset, geometryStreamMetadata);\n break;\n case LengthType.RINGS:\n ringOffsets = decodeLengthStreamToOffsetBuffer(tile, offset, geometryStreamMetadata);\n break;\n case LengthType.TRIANGLES:\n triangleOffsets = decodeLengthStreamToOffsetBuffer(tile, offset, geometryStreamMetadata);\n }\n break;\n case PhysicalStreamType.OFFSET: {\n switch (geometryStreamMetadata.logicalStreamType.offsetType) {\n case OffsetType.VERTEX:\n vertexOffsets = decodeIntStream(tile, offset, geometryStreamMetadata, false);\n break;\n case OffsetType.INDEX:\n indexBuffer = decodeIntStream(tile, offset, geometryStreamMetadata, false);\n break;\n }\n break;\n }\n case PhysicalStreamType.DATA: {\n if (DictionaryType.VERTEX === geometryStreamMetadata.logicalStreamType.dictionaryType) {\n vertexBuffer = decodeIntStream(tile, offset, geometryStreamMetadata, true, scalingData);\n } else {\n const mortonMetadata = geometryStreamMetadata as MortonEncodedStreamMetadata;\n mortonSettings = {\n numBits: mortonMetadata.numBits,\n coordinateShift: mortonMetadata.coordinateShift,\n };\n vertexBuffer = decodeIntStream(tile, offset, geometryStreamMetadata, false, scalingData);\n }\n break;\n }\n }\n }\n\n if (indexBuffer !== null) {\n if (geometryOffsets != null || partOffsets != null) {\n /* Case when the indices of a Polygon outline are encoded in the tile */\n const topologyVector = new TopologyVector(geometryOffsets, partOffsets, ringOffsets);\n return createConstGpuVector(\n numFeatures,\n geometryType,\n triangleOffsets,\n indexBuffer,\n vertexBuffer,\n topologyVector,\n );\n }\n\n /* Case when the no Polygon outlines are encoded in the tile */\n return createConstGpuVector(numFeatures, geometryType, triangleOffsets, indexBuffer, vertexBuffer);\n }\n\n return mortonSettings === null\n ? /* Currently only 2D coordinates (Vec2) are implemented in the encoder */\n createConstGeometryVector(\n numFeatures,\n geometryType,\n new TopologyVector(geometryOffsets, partOffsets, ringOffsets),\n vertexOffsets,\n vertexBuffer,\n )\n : createMortonEncodedConstGeometryVector(\n numFeatures,\n geometryType,\n new TopologyVector(geometryOffsets, partOffsets, ringOffsets),\n vertexOffsets,\n vertexBuffer,\n mortonSettings,\n );\n }\n\n /* Different geometry types are mixed in the geometry column */\n const geometryTypeVector = decodeIntStream(tile, offset, geometryTypeMetadata, false);\n\n // Variables for flat geometry path (decoded as lengths, then converted to offsets)\n let geometryLengths: Int32Array = null;\n let partLengths: Int32Array = null;\n let ringLengths: Int32Array = null;\n //TODO: use geometryOffsets for that? -> but then tessellated polygons can't be used with normal polygons\n // in one FeatureTable?\n let triangleOffsets: Uint32Array = null;\n\n for (let i = 0; i < numStreams - 1; i++) {\n const geometryStreamMetadata = decodeStreamMetadata(tile, offset);\n switch (geometryStreamMetadata.physicalStreamType) {\n case PhysicalStreamType.LENGTH:\n switch (geometryStreamMetadata.logicalStreamType.lengthType) {\n case LengthType.GEOMETRIES:\n geometryLengths = decodeIntStream(tile, offset, geometryStreamMetadata, false);\n break;\n case LengthType.PARTS:\n partLengths = decodeIntStream(tile, offset, geometryStreamMetadata, false);\n break;\n case LengthType.RINGS:\n ringLengths = decodeIntStream(tile, offset, geometryStreamMetadata, false);\n break;\n case LengthType.TRIANGLES:\n triangleOffsets = decodeLengthStreamToOffsetBuffer(tile, offset, geometryStreamMetadata);\n }\n break;\n case PhysicalStreamType.OFFSET:\n switch (geometryStreamMetadata.logicalStreamType.offsetType) {\n case OffsetType.VERTEX:\n vertexOffsets = decodeIntStream(tile, offset, geometryStreamMetadata, false);\n break;\n case OffsetType.INDEX:\n indexBuffer = decodeIntStream(tile, offset, geometryStreamMetadata, false);\n break;\n }\n break;\n case PhysicalStreamType.DATA:\n if (DictionaryType.VERTEX === geometryStreamMetadata.logicalStreamType.dictionaryType) {\n vertexBuffer = decodeIntStream(tile, offset, geometryStreamMetadata, true, scalingData);\n } else {\n const mortonMetadata = geometryStreamMetadata as MortonEncodedStreamMetadata;\n mortonSettings = {\n numBits: mortonMetadata.numBits,\n coordinateShift: mortonMetadata.coordinateShift,\n };\n vertexBuffer = decodeIntStream(tile, offset, geometryStreamMetadata, false, scalingData);\n }\n break;\n }\n }\n\n // TODO: refactor the following instructions -> decode in one pass for performance reasons\n /* Calculate the offsets from the length buffer for util access */\n let geometryOffsets: Uint32Array = null;\n let partOffsets: Uint32Array = null;\n let ringOffsets: Uint32Array = null;\n\n if (geometryLengths !== null) {\n geometryOffsets = decodeRootLengthStream(geometryTypeVector, geometryLengths, 2);\n if (partLengths !== null && ringLengths !== null) {\n partOffsets = decodeLevel1LengthStream(geometryTypeVector, geometryOffsets, partLengths, false);\n ringOffsets = decodeLevel2LengthStream(geometryTypeVector, geometryOffsets, partOffsets, ringLengths);\n } else if (partLengths !== null) {\n partOffsets = decodeLevel1WithoutRingBufferLengthStream(geometryTypeVector, geometryOffsets, partLengths);\n }\n } else if (partLengths !== null && ringLengths !== null) {\n partOffsets = decodeRootLengthStream(geometryTypeVector, partLengths, 1);\n ringOffsets = decodeLevel1LengthStream(geometryTypeVector, partOffsets, ringLengths, true);\n } else if (partLengths !== null) {\n partOffsets = decodeRootLengthStream(geometryTypeVector, partLengths, 0);\n }\n\n if (indexBuffer !== null && partOffsets === null) {\n /* Case when the indices of a Polygon outline are not encoded in the data so no\n * topology data are present in the tile */\n return createFlatGpuVector(geometryTypeVector, triangleOffsets, indexBuffer, vertexBuffer);\n }\n\n if (indexBuffer !== null) {\n /* Case when the indices of a Polygon outline are encoded in the tile */\n return createFlatGpuVector(\n geometryTypeVector,\n triangleOffsets,\n indexBuffer,\n vertexBuffer,\n new TopologyVector(geometryOffsets, partOffsets, ringOffsets),\n );\n }\n\n return mortonSettings === null /* Currently only 2D coordinates (Vec2) are implemented in the encoder */\n ? createFlatGeometryVector(\n geometryTypeVector,\n new TopologyVector(geometryOffsets, partOffsets, ringOffsets),\n vertexOffsets,\n vertexBuffer,\n )\n : createFlatGeometryVectorMortonEncoded(\n geometryTypeVector,\n new TopologyVector(geometryOffsets, partOffsets, ringOffsets),\n vertexOffsets,\n vertexBuffer,\n mortonSettings,\n );\n}\n\n/*\n * Handle the parsing of the different topology length buffers separate not generic to reduce the\n * branching and improve the performance\n */\nfunction decodeRootLengthStream(\n geometryTypes: Int32Array,\n rootLengthStream: Int32Array | Uint32Array,\n bufferId: number,\n): Uint32Array {\n const rootBufferOffsets = new Uint32Array(geometryTypes.length + 1);\n let previousOffset = 0;\n rootBufferOffsets[0] = previousOffset;\n let rootLengthCounter = 0;\n for (let i = 0; i < geometryTypes.length; i++) {\n /* Test if the geometry has and entry in the root buffer\n * BufferId: 2 GeometryOffsets -> MultiPolygon, MultiLineString, MultiPoint\n * BufferId: 1 PartOffsets -> Polygon\n * BufferId: 0 PartOffsets, RingOffsets -> LineString\n * */\n previousOffset = rootBufferOffsets[i + 1] =\n previousOffset + (geometryTypes[i] > bufferId ? rootLengthStream[rootLengthCounter++] : 1);\n }\n\n return rootBufferOffsets;\n}\n\nfunction decodeLevel1LengthStream(\n geometryTypes: Int32Array,\n rootOffsetBuffer: Uint32Array,\n level1LengthBuffer: Int32Array,\n isLineStringPresent: boolean,\n): Uint32Array {\n const level1BufferOffsets = new Uint32Array(rootOffsetBuffer[rootOffsetBuffer.length - 1] + 1);\n let previousOffset = 0;\n level1BufferOffsets[0] = previousOffset;\n let level1BufferCounter = 1;\n let level1LengthBufferCounter = 0;\n for (let i = 0; i < geometryTypes.length; i++) {\n const geometryType = geometryTypes[i];\n const numGeometries = rootOffsetBuffer[i + 1] - rootOffsetBuffer[i];\n if (\n geometryType === 5 ||\n geometryType === 2 ||\n (isLineStringPresent && (geometryType === 4 || geometryType === 1))\n ) {\n /* For MultiPolygon, Polygon and in some cases for MultiLineString and LineString\n * a value in the level1LengthBuffer exists */\n for (let j = 0; j < numGeometries; j++) {\n previousOffset = level1BufferOffsets[level1BufferCounter++] =\n previousOffset + level1LengthBuffer[level1LengthBufferCounter++];\n }\n } else {\n /* For MultiPoint and Point and in some cases for MultiLineString and LineString no value in the\n * level1LengthBuffer exists */\n for (let j = 0; j < numGeometries; j++) {\n level1BufferOffsets[level1BufferCounter++] = ++previousOffset;\n }\n }\n }\n\n return level1BufferOffsets;\n}\n\n/*\n * Case where no ring buffer exists so no MultiPolygon or Polygon geometry is part of the buffer\n */\nfunction decodeLevel1WithoutRingBufferLengthStream(\n geometryTypes: Int32Array,\n rootOffsetBuffer: Uint32Array,\n level1LengthBuffer: Int32Array,\n): Uint32Array {\n const level1BufferOffsets = new Uint32Array(rootOffsetBuffer[rootOffsetBuffer.length - 1] + 1);\n let previousOffset = 0;\n level1BufferOffsets[0] = previousOffset;\n let level1OffsetBufferCounter = 1;\n let level1LengthCounter = 0;\n for (let i = 0; i < geometryTypes.length; i++) {\n const geometryType = geometryTypes[i];\n const numGeometries = rootOffsetBuffer[i + 1] - rootOffsetBuffer[i];\n if (geometryType === 4 || geometryType === 1) {\n /* For MultiLineString and LineString a value in the level1LengthBuffer exists */\n for (let j = 0; j < numGeometries; j++) {\n previousOffset = level1BufferOffsets[level1OffsetBufferCounter++] =\n previousOffset + level1LengthBuffer[level1LengthCounter++];\n }\n } else {\n /* For MultiPoint and Point no value in level1LengthBuffer exists */\n for (let j = 0; j < numGeometries; j++) {\n level1BufferOffsets[level1OffsetBufferCounter++] = ++previousOffset;\n }\n }\n }\n\n return level1BufferOffsets;\n}\n\nfunction decodeLevel2LengthStream(\n geometryTypes: Int32Array,\n rootOffsetBuffer: Uint32Array,\n level1OffsetBuffer: Uint32Array,\n level2LengthBuffer: Int32Array,\n): Uint32Array {\n const level2BufferOffsets = new Uint32Array(level1OffsetBuffer[level1OffsetBuffer.length - 1] + 1);\n let previousOffset = 0;\n level2BufferOffsets[0] = previousOffset;\n let level1OffsetBufferCounter = 1;\n let level2OffsetBufferCounter = 1;\n let level2LengthBufferCounter = 0;\n for (let i = 0; i < geometryTypes.length; i++) {\n const geometryType = geometryTypes[i];\n const numGeometries = rootOffsetBuffer[i + 1] - rootOffsetBuffer[i];\n if (geometryType !== 0 && geometryType !== 3) {\n /* For MultiPolygon, MultiLineString, Polygon and LineString a value in level2LengthBuffer\n * exists */\n for (let j = 0; j < numGeometries; j++) {\n const numParts =\n level1OffsetBuffer[level1OffsetBufferCounter] - level1OffsetBuffer[level1OffsetBufferCounter - 1];\n level1OffsetBufferCounter++;\n for (let k = 0; k < numParts; k++) {\n previousOffset = level2BufferOffsets[level2OffsetBufferCounter++] =\n previousOffset + level2LengthBuffer[level2LengthBufferCounter++];\n }\n }\n } else {\n /* For MultiPoint and Point no value in level2LengthBuffer exists */\n for (let j = 0; j < numGeometries; j++) {\n level2BufferOffsets[level2OffsetBufferCounter++] = ++previousOffset;\n level1OffsetBufferCounter++;\n }\n }\n }\n\n return level2BufferOffsets;\n}\n"]}
1
+ {"version":3,"file":"geometryDecoder.js","sourceRoot":"","sources":["../../src/decoding/geometryDecoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { decodeStreamMetadata, type MortonEncodedStreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport type IntWrapper from \"./intWrapper\";\nimport {\n decodeSignedInt32Stream,\n decodeLengthStreamToOffsetBuffer,\n decodeUnsignedConstInt32Stream,\n decodeUnsignedInt32Stream,\n getVectorType,\n} from \"./integerStreamDecoder\";\nimport { VectorType } from \"../vector/vectorType\";\nimport { PhysicalStreamType } from \"../metadata/tile/physicalStreamType\";\nimport { LengthType } from \"../metadata/tile/lengthType\";\nimport { DictionaryType } from \"../metadata/tile/dictionaryType\";\nimport {\n createConstGeometryVector,\n createMortonEncodedConstGeometryVector,\n} from \"../vector/geometry/constGeometryVector\";\nimport { createFlatGeometryVector, createFlatGeometryVectorMortonEncoded } from \"../vector/geometry/flatGeometryVector\";\nimport { OffsetType } from \"../metadata/tile/offsetType\";\nimport { createConstGpuVector } from \"../vector/geometry/constGpuVector\";\nimport { createFlatGpuVector } from \"../vector/geometry/flatGpuVector\";\nimport type { GeometryVector, MortonSettings } from \"../vector/geometry/geometryVector\";\nimport type { GpuVector } from \"../vector/geometry/gpuVector\";\nimport type GeometryScaling from \"./geometryScaling\";\n\n// TODO: get rid of numFeatures parameter\nexport function decodeGeometryColumn(\n tile: Uint8Array,\n numStreams: number,\n offset: IntWrapper,\n numFeatures: number,\n scalingData?: GeometryScaling,\n): GeometryVector | GpuVector {\n const geometryTypeMetadata = decodeStreamMetadata(tile, offset);\n const geometryTypesVectorType = getVectorType(geometryTypeMetadata, numFeatures, tile, offset);\n\n let vertexOffsets: Uint32Array | undefined;\n let vertexBuffer: Int32Array | Uint32Array | undefined;\n let mortonSettings: MortonSettings | undefined;\n let indexBuffer: Uint32Array | undefined;\n\n if (geometryTypesVectorType === VectorType.CONST) {\n /* All geometries in the column have the same geometry type */\n const geometryType = decodeUnsignedConstInt32Stream(tile, offset, geometryTypeMetadata);\n\n // Variables for const geometry path (directly decoded as offsets)\n let geometryOffsets: Uint32Array | undefined;\n let partOffsets: Uint32Array | undefined;\n let ringOffsets: Uint32Array | undefined;\n //TODO: use geometryOffsets for that? -> but then tessellated polygons can't be used with normal polygons\n // in one FeatureTable?\n let triangleOffsets: Uint32Array | undefined;\n\n for (let i = 0; i < numStreams - 1; i++) {\n const geometryStreamMetadata = decodeStreamMetadata(tile, offset);\n switch (geometryStreamMetadata.physicalStreamType) {\n case PhysicalStreamType.LENGTH:\n switch (geometryStreamMetadata.logicalStreamType.lengthType) {\n case LengthType.GEOMETRIES:\n geometryOffsets = decodeLengthStreamToOffsetBuffer(tile, offset, geometryStreamMetadata);\n break;\n case LengthType.PARTS:\n partOffsets = decodeLengthStreamToOffsetBuffer(tile, offset, geometryStreamMetadata);\n break;\n case LengthType.RINGS:\n ringOffsets = decodeLengthStreamToOffsetBuffer(tile, offset, geometryStreamMetadata);\n break;\n case LengthType.TRIANGLES:\n triangleOffsets = decodeLengthStreamToOffsetBuffer(tile, offset, geometryStreamMetadata);\n }\n break;\n case PhysicalStreamType.OFFSET: {\n switch (geometryStreamMetadata.logicalStreamType.offsetType) {\n case OffsetType.VERTEX:\n vertexOffsets = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata);\n break;\n case OffsetType.INDEX:\n indexBuffer = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata);\n break;\n }\n break;\n }\n case PhysicalStreamType.DATA: {\n if (DictionaryType.VERTEX === geometryStreamMetadata.logicalStreamType.dictionaryType) {\n vertexBuffer = decodeSignedInt32Stream(tile, offset, geometryStreamMetadata, scalingData);\n } else {\n const mortonMetadata = geometryStreamMetadata as MortonEncodedStreamMetadata;\n mortonSettings = {\n numBits: mortonMetadata.numBits,\n coordinateShift: mortonMetadata.coordinateShift,\n };\n vertexBuffer = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata, scalingData);\n }\n break;\n }\n }\n }\n\n if (indexBuffer) {\n if (geometryOffsets !== undefined || partOffsets !== undefined) {\n /* Case when the indices of a Polygon outline are encoded in the tile */\n const topologyVector = { geometryOffsets, partOffsets, ringOffsets };\n return createConstGpuVector(\n numFeatures,\n geometryType,\n triangleOffsets,\n indexBuffer,\n vertexBuffer,\n topologyVector,\n );\n }\n\n /* Case when the no Polygon outlines are encoded in the tile */\n return createConstGpuVector(numFeatures, geometryType, triangleOffsets, indexBuffer, vertexBuffer);\n }\n\n return mortonSettings === undefined\n ? /* Currently only 2D coordinates (Vec2) are implemented in the encoder */\n createConstGeometryVector(\n numFeatures,\n geometryType,\n { geometryOffsets, partOffsets, ringOffsets },\n vertexOffsets,\n vertexBuffer,\n )\n : createMortonEncodedConstGeometryVector(\n numFeatures,\n geometryType,\n { geometryOffsets, partOffsets, ringOffsets },\n vertexOffsets,\n vertexBuffer,\n mortonSettings,\n );\n }\n\n /* Different geometry types are mixed in the geometry column */\n const geometryTypeVector = decodeUnsignedInt32Stream(tile, offset, geometryTypeMetadata);\n\n // Variables for flat geometry path (decoded as lengths, then converted to offsets)\n let geometryLengths: Uint32Array | undefined;\n let partLengths: Uint32Array | undefined;\n let ringLengths: Uint32Array | undefined;\n //TODO: use geometryOffsets for that? -> but then tessellated polygons can't be used with normal polygons\n // in one FeatureTable?\n let triangleOffsets: Uint32Array | undefined;\n\n for (let i = 0; i < numStreams - 1; i++) {\n const geometryStreamMetadata = decodeStreamMetadata(tile, offset);\n switch (geometryStreamMetadata.physicalStreamType) {\n case PhysicalStreamType.LENGTH:\n switch (geometryStreamMetadata.logicalStreamType.lengthType) {\n case LengthType.GEOMETRIES:\n geometryLengths = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata);\n break;\n case LengthType.PARTS:\n partLengths = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata);\n break;\n case LengthType.RINGS:\n ringLengths = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata);\n break;\n case LengthType.TRIANGLES:\n triangleOffsets = decodeLengthStreamToOffsetBuffer(tile, offset, geometryStreamMetadata);\n }\n break;\n case PhysicalStreamType.OFFSET:\n switch (geometryStreamMetadata.logicalStreamType.offsetType) {\n case OffsetType.VERTEX:\n vertexOffsets = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata);\n break;\n case OffsetType.INDEX:\n indexBuffer = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata);\n break;\n }\n break;\n case PhysicalStreamType.DATA:\n if (DictionaryType.VERTEX === geometryStreamMetadata.logicalStreamType.dictionaryType) {\n vertexBuffer = decodeSignedInt32Stream(tile, offset, geometryStreamMetadata, scalingData);\n } else {\n const mortonMetadata = geometryStreamMetadata as MortonEncodedStreamMetadata;\n mortonSettings = {\n numBits: mortonMetadata.numBits,\n coordinateShift: mortonMetadata.coordinateShift,\n };\n vertexBuffer = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata, scalingData);\n }\n break;\n }\n }\n\n // TODO: refactor the following instructions -> decode in one pass for performance reasons\n /* Calculate the offsets from the length buffer for util access */\n let geometryOffsets: Uint32Array | undefined;\n let partOffsets: Uint32Array | undefined;\n let ringOffsets: Uint32Array | undefined;\n\n if (geometryLengths) {\n geometryOffsets = decodeRootLengthStream(geometryTypeVector, geometryLengths, 2);\n if (partLengths && ringLengths) {\n partOffsets = decodeLevel1LengthStream(geometryTypeVector, geometryOffsets, partLengths, false);\n ringOffsets = decodeLevel2LengthStream(geometryTypeVector, geometryOffsets, partOffsets, ringLengths);\n } else if (partLengths) {\n partOffsets = decodeLevel1WithoutRingBufferLengthStream(geometryTypeVector, geometryOffsets, partLengths);\n }\n } else if (partLengths && ringLengths) {\n partOffsets = decodeRootLengthStream(geometryTypeVector, partLengths, 1);\n ringOffsets = decodeLevel1LengthStream(geometryTypeVector, partOffsets, ringLengths, true);\n } else if (partLengths) {\n partOffsets = decodeRootLengthStream(geometryTypeVector, partLengths, 0);\n }\n\n if (indexBuffer && !partOffsets) {\n /* Case when the indices of a Polygon outline are not encoded in the data so no\n * topology data are present in the tile */\n return createFlatGpuVector(geometryTypeVector, triangleOffsets, indexBuffer, vertexBuffer);\n }\n\n if (indexBuffer) {\n /* Case when the indices of a Polygon outline are encoded in the tile */\n return createFlatGpuVector(geometryTypeVector, triangleOffsets, indexBuffer, vertexBuffer, {\n geometryOffsets,\n partOffsets,\n ringOffsets,\n });\n }\n\n return mortonSettings === undefined /* Currently only 2D coordinates (Vec2) are implemented in the encoder */\n ? createFlatGeometryVector(\n geometryTypeVector,\n { geometryOffsets, partOffsets, ringOffsets },\n vertexOffsets,\n vertexBuffer,\n )\n : createFlatGeometryVectorMortonEncoded(\n geometryTypeVector,\n { geometryOffsets, partOffsets, ringOffsets },\n vertexOffsets,\n vertexBuffer,\n mortonSettings,\n );\n}\n\n/*\n * Handle the parsing of the different topology length buffers separate not generic to reduce the\n * branching and improve the performance\n */\nfunction decodeRootLengthStream(\n geometryTypes: Uint32Array,\n rootLengthStream: Uint32Array,\n bufferId: number,\n): Uint32Array {\n const rootBufferOffsets = new Uint32Array(geometryTypes.length + 1);\n let previousOffset = 0;\n rootBufferOffsets[0] = previousOffset;\n let rootLengthCounter = 0;\n for (let i = 0; i < geometryTypes.length; i++) {\n /* Test if the geometry has and entry in the root buffer\n * BufferId: 2 GeometryOffsets -> MultiPolygon, MultiLineString, MultiPoint\n * BufferId: 1 PartOffsets -> Polygon\n * BufferId: 0 PartOffsets, RingOffsets -> LineString\n * */\n previousOffset = rootBufferOffsets[i + 1] =\n previousOffset + (geometryTypes[i] > bufferId ? rootLengthStream[rootLengthCounter++] : 1);\n }\n\n return rootBufferOffsets;\n}\n\nfunction decodeLevel1LengthStream(\n geometryTypes: Uint32Array,\n rootOffsetBuffer: Uint32Array,\n level1LengthBuffer: Uint32Array,\n isLineStringPresent: boolean,\n): Uint32Array {\n const level1BufferOffsets = new Uint32Array(rootOffsetBuffer[rootOffsetBuffer.length - 1] + 1);\n let previousOffset = 0;\n level1BufferOffsets[0] = previousOffset;\n let level1BufferCounter = 1;\n let level1LengthBufferCounter = 0;\n for (let i = 0; i < geometryTypes.length; i++) {\n const geometryType = geometryTypes[i];\n const numGeometries = rootOffsetBuffer[i + 1] - rootOffsetBuffer[i];\n if (\n geometryType === 5 ||\n geometryType === 2 ||\n (isLineStringPresent && (geometryType === 4 || geometryType === 1))\n ) {\n /* For MultiPolygon, Polygon and in some cases for MultiLineString and LineString\n * a value in the level1LengthBuffer exists */\n for (let j = 0; j < numGeometries; j++) {\n previousOffset = level1BufferOffsets[level1BufferCounter++] =\n previousOffset + level1LengthBuffer[level1LengthBufferCounter++];\n }\n } else {\n /* For MultiPoint and Point and in some cases for MultiLineString and LineString no value in the\n * level1LengthBuffer exists */\n for (let j = 0; j < numGeometries; j++) {\n level1BufferOffsets[level1BufferCounter++] = ++previousOffset;\n }\n }\n }\n\n return level1BufferOffsets;\n}\n\n/*\n * Case where no ring buffer exists so no MultiPolygon or Polygon geometry is part of the buffer\n */\nfunction decodeLevel1WithoutRingBufferLengthStream(\n geometryTypes: Uint32Array,\n rootOffsetBuffer: Uint32Array,\n level1LengthBuffer: Uint32Array,\n): Uint32Array {\n const level1BufferOffsets = new Uint32Array(rootOffsetBuffer[rootOffsetBuffer.length - 1] + 1);\n let previousOffset = 0;\n level1BufferOffsets[0] = previousOffset;\n let level1OffsetBufferCounter = 1;\n let level1LengthCounter = 0;\n for (let i = 0; i < geometryTypes.length; i++) {\n const geometryType = geometryTypes[i];\n const numGeometries = rootOffsetBuffer[i + 1] - rootOffsetBuffer[i];\n if (geometryType === 4 || geometryType === 1) {\n /* For MultiLineString and LineString a value in the level1LengthBuffer exists */\n for (let j = 0; j < numGeometries; j++) {\n previousOffset = level1BufferOffsets[level1OffsetBufferCounter++] =\n previousOffset + level1LengthBuffer[level1LengthCounter++];\n }\n } else {\n /* For MultiPoint and Point no value in level1LengthBuffer exists */\n for (let j = 0; j < numGeometries; j++) {\n level1BufferOffsets[level1OffsetBufferCounter++] = ++previousOffset;\n }\n }\n }\n\n return level1BufferOffsets;\n}\n\nfunction decodeLevel2LengthStream(\n geometryTypes: Uint32Array,\n rootOffsetBuffer: Uint32Array,\n level1OffsetBuffer: Uint32Array,\n level2LengthBuffer: Uint32Array,\n): Uint32Array {\n const level2BufferOffsets = new Uint32Array(level1OffsetBuffer[level1OffsetBuffer.length - 1] + 1);\n let previousOffset = 0;\n level2BufferOffsets[0] = previousOffset;\n let level1OffsetBufferCounter = 1;\n let level2OffsetBufferCounter = 1;\n let level2LengthBufferCounter = 0;\n for (let i = 0; i < geometryTypes.length; i++) {\n const geometryType = geometryTypes[i];\n const numGeometries = rootOffsetBuffer[i + 1] - rootOffsetBuffer[i];\n if (geometryType !== 0 && geometryType !== 3) {\n /* For MultiPolygon, MultiLineString, Polygon and LineString a value in level2LengthBuffer\n * exists */\n for (let j = 0; j < numGeometries; j++) {\n const numParts =\n level1OffsetBuffer[level1OffsetBufferCounter] - level1OffsetBuffer[level1OffsetBufferCounter - 1];\n level1OffsetBufferCounter++;\n for (let k = 0; k < numParts; k++) {\n previousOffset = level2BufferOffsets[level2OffsetBufferCounter++] =\n previousOffset + level2LengthBuffer[level2LengthBufferCounter++];\n }\n }\n } else {\n /* For MultiPoint and Point no value in level2LengthBuffer exists */\n for (let j = 0; j < numGeometries; j++) {\n level2BufferOffsets[level2OffsetBufferCounter++] = ++previousOffset;\n level1OffsetBufferCounter++;\n }\n }\n }\n\n return level2BufferOffsets;\n}\n"]}
@@ -1,6 +1,5 @@
1
1
  // Ported from https://github.com/lemire/JavaFastPFOR/blob/master/src/main/java/me/lemire/integercompression/IntWrapper.java
2
2
  export default class IntWrapper {
3
- value;
4
3
  constructor(value) {
5
4
  this.value = value;
6
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"intWrapper.js","sourceRoot":"","sources":["../../src/decoding/intWrapper.ts"],"names":[],"mappings":"AAAA,4HAA4H;AAE5H,MAAM,CAAC,OAAO,OAAO,UAAU;IACP;IAApB,YAAoB,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;IAE9B,GAAG;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAEM,GAAG,CAAC,CAAS;QAChB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACnB,CAAC;IAEM,SAAS;QACZ,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAEM,GAAG,CAAC,CAAS;QAChB,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IACpB,CAAC;CACJ","sourcesContent":["// Ported from https://github.com/lemire/JavaFastPFOR/blob/master/src/main/java/me/lemire/integercompression/IntWrapper.java\n\nexport default class IntWrapper {\n constructor(private value: number) {}\n\n public get(): number {\n return this.value;\n }\n\n public set(v: number): void {\n this.value = v;\n }\n\n public increment(): number {\n return this.value++;\n }\n\n public add(v: number): void {\n this.value += v;\n }\n}\n"]}
1
+ {"version":3,"file":"intWrapper.js","sourceRoot":"","sources":["../../src/decoding/intWrapper.ts"],"names":[],"mappings":"AAAA,4HAA4H;AAE5H,MAAM,CAAC,OAAO,OAAO,UAAU;IAC3B,YAAoB,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;IAE9B,GAAG;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAEM,GAAG,CAAC,CAAS;QAChB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACnB,CAAC;IAEM,SAAS;QACZ,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAEM,GAAG,CAAC,CAAS;QAChB,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IACpB,CAAC;CACJ","sourcesContent":["// Ported from https://github.com/lemire/JavaFastPFOR/blob/master/src/main/java/me/lemire/integercompression/IntWrapper.java\n\nexport default class IntWrapper {\n constructor(private value: number) {}\n\n public get(): number {\n return this.value;\n }\n\n public set(v: number): void {\n this.value = v;\n }\n\n public increment(): number {\n return this.value++;\n }\n\n public add(v: number): void {\n this.value += v;\n }\n}\n"]}
@@ -1,30 +1,34 @@
1
1
  import type IntWrapper from "./intWrapper";
2
- export declare function decodeVarintInt32(buf: Uint8Array, bufferOffset: IntWrapper, numValues: number): Int32Array;
3
- export declare function decodeVarintInt64(src: Uint8Array, offset: IntWrapper, numValues: number): BigInt64Array;
2
+ import { type FastPforWireDecodeWorkspace } from "./fastPforDecoder";
3
+ export type { FastPforWireDecodeWorkspace } from "./fastPforDecoder";
4
+ export { createFastPforWireDecodeWorkspace } from "./fastPforDecoder";
5
+ export declare function decodeVarintInt32(buf: Uint8Array, bufferOffset: IntWrapper, numValues: number): Uint32Array;
6
+ export declare function decodeVarintInt64(src: Uint8Array, offset: IntWrapper, numValues: number): BigUint64Array;
4
7
  export declare function decodeVarintFloat64(src: Uint8Array, offset: IntWrapper, numValues: number): Float64Array;
5
- export declare function decodeFastPfor(data: Uint8Array, numValues: number, byteLength: number, offset: IntWrapper): Int32Array;
8
+ export declare function decodeFastPfor(encodedBytes: Uint8Array, expectedValueCount: number, encodedByteLength: number, offset: IntWrapper): Uint32Array;
9
+ export declare function decodeFastPforWithWorkspace(encodedBytes: Uint8Array, expectedValueCount: number, encodedByteLength: number, offset: IntWrapper, workspace: FastPforWireDecodeWorkspace): Uint32Array;
6
10
  export declare function decodeZigZagInt32Value(encoded: number): number;
7
11
  export declare function decodeZigZagInt64Value(encoded: bigint): bigint;
8
12
  export declare function decodeZigZagFloat64Value(encoded: number): number;
9
- export declare function decodeZigZagInt32(encodedData: Int32Array): void;
10
- export declare function decodeZigZagInt64(encodedData: BigInt64Array): void;
13
+ export declare function decodeZigZagInt32(encodedData: Uint32Array): Int32Array;
14
+ export declare function decodeZigZagInt64(encodedData: BigUint64Array): BigInt64Array;
11
15
  export declare function decodeZigZagFloat64(encodedData: Float64Array): void;
12
- export declare function decodeUnsignedRleInt32(encodedData: Int32Array, numRuns: number, numTotalValues?: number): Int32Array;
13
- export declare function decodeUnsignedRleInt64(encodedData: BigInt64Array, numRuns: number, numTotalValues?: number): BigInt64Array;
16
+ export declare function decodeUnsignedRleInt32(encodedData: Uint32Array, numRuns: number, numTotalValues?: number): Uint32Array;
17
+ export declare function decodeUnsignedRleInt64(encodedData: BigUint64Array, numRuns: number, numTotalValues?: number): BigUint64Array;
14
18
  export declare function decodeUnsignedRleFloat64(encodedData: Float64Array, numRuns: number, numTotalValues: number): Float64Array;
15
- export declare function decodeZigZagDeltaInt32(data: Int32Array): void;
16
- export declare function decodeZigZagDeltaInt64(data: BigInt64Array): void;
19
+ export declare function decodeZigZagDeltaInt32(data: Uint32Array): Int32Array;
20
+ export declare function decodeZigZagDeltaInt64(data: BigInt64Array | BigUint64Array): BigInt64Array;
17
21
  export declare function decodeZigZagDeltaFloat64(data: Float64Array): void;
18
- export declare function decodeZigZagRleInt32(data: Int32Array, numRuns: number, numTotalValues?: number): Int32Array;
19
- export declare function decodeZigZagRleInt64(data: BigInt64Array, numRuns: number, numTotalValues?: number): BigInt64Array;
22
+ export declare function decodeZigZagRleInt32(data: Uint32Array, numRuns: number, numTotalValues?: number): Int32Array;
23
+ export declare function decodeZigZagRleInt64(data: BigUint64Array, numRuns: number, numTotalValues?: number): BigInt64Array;
20
24
  export declare function decodeZigZagRleFloat64(data: Float64Array, numRuns: number, numTotalValues: number): Float64Array;
21
25
  export declare function fastInverseDelta(data: Uint32Array | Int32Array): void;
22
- export declare function inverseDelta(data: Int32Array): void;
23
- export declare function decodeComponentwiseDeltaVec2(data: Int32Array): void;
24
- export declare function decodeComponentwiseDeltaVec2Scaled(data: Int32Array, scale: number, min: number, max: number): void;
25
- export declare function decodeZigZagDeltaOfDeltaInt32(data: Int32Array): Uint32Array;
26
- export declare function decodeZigZagRleDeltaInt32(data: Int32Array, numRuns: number, numTotalValues: number): Uint32Array;
27
- export declare function decodeRleDeltaInt32(data: Int32Array, numRuns: number, numTotalValues: number): Uint32Array;
26
+ export declare function inverseDelta(data: Uint32Array): void;
27
+ export declare function decodeComponentwiseDeltaVec2(data: Uint32Array): Int32Array;
28
+ export declare function decodeComponentwiseDeltaVec2Scaled(data: Uint32Array, scale: number, min: number, max: number): Int32Array;
29
+ export declare function decodeZigZagDeltaOfDeltaInt32(data: Uint32Array): Uint32Array;
30
+ export declare function decodeZigZagRleDeltaInt32(data: Uint32Array, numRuns: number, numTotalValues: number): Int32Array;
31
+ export declare function decodeRleDeltaInt32(data: Uint32Array, numRuns: number, numTotalValues: number): Uint32Array;
28
32
  /**
29
33
  * Decode Delta-RLE with multiple runs by fully reconstructing values.
30
34
  *
@@ -33,14 +37,18 @@ export declare function decodeRleDeltaInt32(data: Int32Array, numRuns: number, n
33
37
  * @param numValues Total number of values to reconstruct
34
38
  * @returns Reconstructed values with deltas applied
35
39
  */
36
- export declare function decodeDeltaRleInt32(data: Int32Array, numRuns: number, numValues: number): Int32Array;
40
+ export declare function decodeDeltaRleInt32(data: Uint32Array, numRuns: number, numValues: number): Int32Array;
37
41
  /**
38
42
  * Decode Delta-RLE with multiple runs for 64-bit integers.
39
43
  */
40
- export declare function decodeDeltaRleInt64(data: BigInt64Array, numRuns: number, numValues: number): BigInt64Array;
41
- export declare function decodeUnsignedConstRleInt32(data: Int32Array): number;
42
- export declare function decodeZigZagConstRleInt32(data: Int32Array): number;
43
- export declare function decodeZigZagSequenceRleInt32(data: Int32Array): [baseValue: number, delta: number];
44
- export declare function decodeUnsignedConstRleInt64(data: BigInt64Array): bigint;
45
- export declare function decodeZigZagConstRleInt64(data: BigInt64Array): bigint;
46
- export declare function decodeZigZagSequenceRleInt64(data: BigInt64Array): [baseValue: bigint, delta: bigint];
44
+ export declare function decodeDeltaRleInt64(data: BigUint64Array, numRuns: number, numValues: number): BigInt64Array;
45
+ export declare function decodeUnsignedZigZagDeltaInt32(data: Uint32Array): Uint32Array;
46
+ export declare function decodeUnsignedZigZagDeltaInt64(data: BigUint64Array): BigUint64Array;
47
+ export declare function decodeUnsignedComponentwiseDeltaVec2(data: Uint32Array): Uint32Array;
48
+ export declare function decodeUnsignedComponentwiseDeltaVec2Scaled(data: Uint32Array, scale: number, min: number, max: number): Uint32Array;
49
+ export declare function decodeUnsignedConstRleInt32(data: Int32Array | Uint32Array): number;
50
+ export declare function decodeZigZagConstRleInt32(data: Int32Array | Uint32Array): number;
51
+ export declare function decodeZigZagSequenceRleInt32(data: Int32Array | Uint32Array): [baseValue: number, delta: number];
52
+ export declare function decodeUnsignedConstRleInt64(data: BigInt64Array | BigUint64Array): bigint;
53
+ export declare function decodeZigZagConstRleInt64(data: BigInt64Array | BigUint64Array): bigint;
54
+ export declare function decodeZigZagSequenceRleInt64(data: BigInt64Array | BigUint64Array): [baseValue: bigint, delta: bigint];
@@ -1,6 +1,9 @@
1
+ import { createFastPforWireDecodeWorkspace, decodeFastPforInt32, ensureFastPforWireEncodedWordsCapacity, } from "./fastPforDecoder";
2
+ import { decodeBigEndianInt32sInto } from "./bigEndianDecode";
3
+ export { createFastPforWireDecodeWorkspace } from "./fastPforDecoder";
1
4
  //based on https://github.com/mapbox/pbf/blob/main/index.js
2
5
  export function decodeVarintInt32(buf, bufferOffset, numValues) {
3
- const dst = new Int32Array(numValues);
6
+ const dst = new Uint32Array(numValues);
4
7
  let dstOffset = 0;
5
8
  let offset = bufferOffset.get();
6
9
  for (let i = 0; i < dst.length; i++) {
@@ -36,7 +39,7 @@ export function decodeVarintInt32(buf, bufferOffset, numValues) {
36
39
  return dst;
37
40
  }
38
41
  export function decodeVarintInt64(src, offset, numValues) {
39
- const dst = new BigInt64Array(numValues);
42
+ const dst = new BigUint64Array(numValues);
40
43
  for (let i = 0; i < dst.length; i++) {
41
44
  dst[i] = decodeVarintInt64Value(src, offset);
42
45
  }
@@ -74,7 +77,8 @@ export function decodeVarintFloat64(src, offset, numValues) {
74
77
  }
75
78
  //based on https://github.com/mapbox/pbf/blob/main/index.js
76
79
  function decodeVarintFloat64Value(buf, offset) {
77
- let val, b;
80
+ let val;
81
+ let b;
78
82
  b = buf[offset.get()];
79
83
  offset.increment();
80
84
  val = b & 0x7f;
@@ -100,7 +104,8 @@ function decodeVarintFloat64Value(buf, offset) {
100
104
  return decodeVarintRemainder(val, buf, offset);
101
105
  }
102
106
  function decodeVarintRemainder(l, buf, offset) {
103
- let h, b;
107
+ let h;
108
+ let b;
104
109
  b = buf[offset.get()];
105
110
  offset.increment();
106
111
  h = (b & 0x70) >> 4;
@@ -133,8 +138,21 @@ function decodeVarintRemainder(l, buf, offset) {
133
138
  return h * 0x100000000 + (l >>> 0);
134
139
  throw new Error("Expected varint not more than 10 bytes");
135
140
  }
136
- export function decodeFastPfor(data, numValues, byteLength, offset) {
137
- throw new Error("FastPFor is not implemented yet.");
141
+ export function decodeFastPfor(encodedBytes, expectedValueCount, encodedByteLength, offset) {
142
+ const workspace = createFastPforWireDecodeWorkspace(encodedByteLength >>> 2);
143
+ return decodeFastPforWithWorkspace(encodedBytes, expectedValueCount, encodedByteLength, offset, workspace);
144
+ }
145
+ export function decodeFastPforWithWorkspace(encodedBytes, expectedValueCount, encodedByteLength, offset, workspace) {
146
+ const inputByteOffset = offset.get();
147
+ if ((encodedByteLength & 3) !== 0) {
148
+ throw new Error(`FastPFOR: invalid encodedByteLength=${encodedByteLength} at offset=${inputByteOffset} (encodedBytes.length=${encodedBytes.length}; expected a multiple of 4 bytes for an int32 big-endian word stream)`);
149
+ }
150
+ const encodedWordCount = encodedByteLength >>> 2;
151
+ const encodedWordBuffer = ensureFastPforWireEncodedWordsCapacity(workspace, encodedWordCount);
152
+ decodeBigEndianInt32sInto(encodedBytes, inputByteOffset, encodedByteLength, encodedWordBuffer);
153
+ const decodedValues = decodeFastPforInt32(encodedWordBuffer.subarray(0, encodedWordCount), expectedValueCount, workspace.decoderWorkspace);
154
+ offset.add(encodedByteLength);
155
+ return decodedValues;
138
156
  }
139
157
  export function decodeZigZagInt32Value(encoded) {
140
158
  return (encoded >>> 1) ^ -(encoded & 1);
@@ -146,14 +164,18 @@ export function decodeZigZagFloat64Value(encoded) {
146
164
  return encoded % 2 === 1 ? (encoded + 1) / -2 : encoded / 2;
147
165
  }
148
166
  export function decodeZigZagInt32(encodedData) {
167
+ const decodedValues = new Int32Array(encodedData.length);
149
168
  for (let i = 0; i < encodedData.length; i++) {
150
- encodedData[i] = decodeZigZagInt32Value(encodedData[i]);
169
+ decodedValues[i] = decodeZigZagInt32Value(encodedData[i]);
151
170
  }
171
+ return decodedValues;
152
172
  }
153
173
  export function decodeZigZagInt64(encodedData) {
174
+ const decodedValues = new BigInt64Array(encodedData.length);
154
175
  for (let i = 0; i < encodedData.length; i++) {
155
- encodedData[i] = decodeZigZagInt64Value(encodedData[i]);
176
+ decodedValues[i] = decodeZigZagInt64Value(encodedData[i]);
156
177
  }
178
+ return decodedValues;
157
179
  }
158
180
  export function decodeZigZagFloat64(encodedData) {
159
181
  for (let i = 0; i < encodedData.length; i++) {
@@ -168,7 +190,7 @@ export function decodeUnsignedRleInt32(encodedData, numRuns, numTotalValues) {
168
190
  numTotalValues += encodedData[i];
169
191
  }
170
192
  }
171
- const decodedValues = new Int32Array(numTotalValues);
193
+ const decodedValues = new Uint32Array(numTotalValues);
172
194
  let offset = 0;
173
195
  for (let i = 0; i < numRuns; i++) {
174
196
  const runLength = encodedData[i];
@@ -186,7 +208,7 @@ export function decodeUnsignedRleInt64(encodedData, numRuns, numTotalValues) {
186
208
  numTotalValues += Number(encodedData[i]);
187
209
  }
188
210
  }
189
- const decodedValues = new BigInt64Array(numTotalValues);
211
+ const decodedValues = new BigUint64Array(numTotalValues);
190
212
  let offset = 0;
191
213
  for (let i = 0; i < numRuns; i++) {
192
214
  const runLength = Number(encodedData[i]);
@@ -212,7 +234,8 @@ export function decodeUnsignedRleFloat64(encodedData, numRuns, numTotalValues) {
212
234
  * Inspired by https://github.com/lemire/JavaFastPFOR/blob/master/src/main/java/me/lemire/integercompression/differential/Delta.java
213
235
  */
214
236
  export function decodeZigZagDeltaInt32(data) {
215
- data[0] = decodeZigZagInt32Value(data[0]);
237
+ const decodedValues = new Int32Array(data.length);
238
+ decodedValues[0] = decodeZigZagInt32Value(data[0]);
216
239
  const sz0 = (data.length / 4) * 4;
217
240
  let i = 1;
218
241
  if (sz0 >= 4) {
@@ -221,18 +244,20 @@ export function decodeZigZagDeltaInt32(data) {
221
244
  const data2 = data[i + 1];
222
245
  const data3 = data[i + 2];
223
246
  const data4 = data[i + 3];
224
- data[i] = decodeZigZagInt32Value(data1) + data[i - 1];
225
- data[i + 1] = decodeZigZagInt32Value(data2) + data[i];
226
- data[i + 2] = decodeZigZagInt32Value(data3) + data[i + 1];
227
- data[i + 3] = decodeZigZagInt32Value(data4) + data[i + 2];
247
+ decodedValues[i] = decodeZigZagInt32Value(data1) + decodedValues[i - 1];
248
+ decodedValues[i + 1] = decodeZigZagInt32Value(data2) + decodedValues[i];
249
+ decodedValues[i + 2] = decodeZigZagInt32Value(data3) + decodedValues[i + 1];
250
+ decodedValues[i + 3] = decodeZigZagInt32Value(data4) + decodedValues[i + 2];
228
251
  }
229
252
  }
230
- for (; i != data.length; ++i) {
231
- data[i] = decodeZigZagInt32Value(data[i]) + data[i - 1];
253
+ for (; i !== data.length; ++i) {
254
+ decodedValues[i] = decodeZigZagInt32Value(data[i]) + decodedValues[i - 1];
232
255
  }
256
+ return decodedValues;
233
257
  }
234
258
  export function decodeZigZagDeltaInt64(data) {
235
- data[0] = decodeZigZagInt64Value(data[0]);
259
+ const decodedValues = new BigInt64Array(data.length);
260
+ decodedValues[0] = decodeZigZagInt64Value(data[0]);
236
261
  const sz0 = (data.length / 4) * 4;
237
262
  let i = 1;
238
263
  if (sz0 >= 4) {
@@ -241,15 +266,16 @@ export function decodeZigZagDeltaInt64(data) {
241
266
  const data2 = data[i + 1];
242
267
  const data3 = data[i + 2];
243
268
  const data4 = data[i + 3];
244
- data[i] = decodeZigZagInt64Value(data1) + data[i - 1];
245
- data[i + 1] = decodeZigZagInt64Value(data2) + data[i];
246
- data[i + 2] = decodeZigZagInt64Value(data3) + data[i + 1];
247
- data[i + 3] = decodeZigZagInt64Value(data4) + data[i + 2];
269
+ decodedValues[i] = decodeZigZagInt64Value(data1) + decodedValues[i - 1];
270
+ decodedValues[i + 1] = decodeZigZagInt64Value(data2) + decodedValues[i];
271
+ decodedValues[i + 2] = decodeZigZagInt64Value(data3) + decodedValues[i + 1];
272
+ decodedValues[i + 3] = decodeZigZagInt64Value(data4) + decodedValues[i + 2];
248
273
  }
249
274
  }
250
- for (; i != data.length; ++i) {
251
- data[i] = decodeZigZagInt64Value(data[i]) + data[i - 1];
275
+ for (; i !== decodedValues.length; ++i) {
276
+ decodedValues[i] = decodeZigZagInt64Value(data[i]) + decodedValues[i - 1];
252
277
  }
278
+ return decodedValues;
253
279
  }
254
280
  export function decodeZigZagDeltaFloat64(data) {
255
281
  data[0] = decodeZigZagFloat64Value(data[0]);
@@ -267,7 +293,7 @@ export function decodeZigZagDeltaFloat64(data) {
267
293
  data[i + 3] = decodeZigZagFloat64Value(data4) + data[i + 2];
268
294
  }
269
295
  }
270
- for (; i != data.length; ++i) {
296
+ for (; i !== data.length; ++i) {
271
297
  data[i] = decodeZigZagFloat64Value(data[i]) + data[i - 1];
272
298
  }
273
299
  }
@@ -335,7 +361,7 @@ export function fastInverseDelta(data) {
335
361
  a = data[i + 3] += a;
336
362
  }
337
363
  }
338
- while (i != data.length) {
364
+ while (i !== data.length) {
339
365
  data[i] += data[i - 1];
340
366
  ++i;
341
367
  }
@@ -353,9 +379,10 @@ export function inverseDelta(data) {
353
379
  */
354
380
  export function decodeComponentwiseDeltaVec2(data) {
355
381
  if (data.length < 2)
356
- return;
357
- data[0] = decodeZigZagInt32Value(data[0]);
358
- data[1] = decodeZigZagInt32Value(data[1]);
382
+ return new Int32Array(data);
383
+ const decodedData = new Int32Array(data.length);
384
+ decodedData[0] = decodeZigZagInt32Value(data[0]);
385
+ decodedData[1] = decodeZigZagInt32Value(data[1]);
359
386
  const sz0 = (data.length / 4) * 4;
360
387
  let i = 2;
361
388
  if (sz0 >= 4) {
@@ -364,24 +391,26 @@ export function decodeComponentwiseDeltaVec2(data) {
364
391
  const y1 = data[i + 1];
365
392
  const x2 = data[i + 2];
366
393
  const y2 = data[i + 3];
367
- data[i] = decodeZigZagInt32Value(x1) + data[i - 2];
368
- data[i + 1] = decodeZigZagInt32Value(y1) + data[i - 1];
369
- data[i + 2] = decodeZigZagInt32Value(x2) + data[i];
370
- data[i + 3] = decodeZigZagInt32Value(y2) + data[i + 1];
394
+ decodedData[i] = decodeZigZagInt32Value(x1) + decodedData[i - 2];
395
+ decodedData[i + 1] = decodeZigZagInt32Value(y1) + decodedData[i - 1];
396
+ decodedData[i + 2] = decodeZigZagInt32Value(x2) + decodedData[i];
397
+ decodedData[i + 3] = decodeZigZagInt32Value(y2) + decodedData[i + 1];
371
398
  }
372
399
  }
373
- for (; i != data.length; i += 2) {
374
- data[i] = decodeZigZagInt32Value(data[i]) + data[i - 2];
375
- data[i + 1] = decodeZigZagInt32Value(data[i + 1]) + data[i - 1];
400
+ for (; i !== data.length; i += 2) {
401
+ decodedData[i] = decodeZigZagInt32Value(data[i]) + decodedData[i - 2];
402
+ decodedData[i + 1] = decodeZigZagInt32Value(data[i + 1]) + decodedData[i - 1];
376
403
  }
404
+ return decodedData;
377
405
  }
378
406
  export function decodeComponentwiseDeltaVec2Scaled(data, scale, min, max) {
379
407
  if (data.length < 2)
380
- return;
408
+ return new Int32Array(data);
409
+ const decodedData = new Int32Array(data.length);
381
410
  let previousVertexX = decodeZigZagInt32Value(data[0]);
382
411
  let previousVertexY = decodeZigZagInt32Value(data[1]);
383
- data[0] = clamp(Math.round(previousVertexX * scale), min, max);
384
- data[1] = clamp(Math.round(previousVertexY * scale), min, max);
412
+ decodedData[0] = clamp(Math.round(previousVertexX * scale), min, max);
413
+ decodedData[1] = clamp(Math.round(previousVertexY * scale), min, max);
385
414
  const sz0 = data.length / 16;
386
415
  let i = 2;
387
416
  if (sz0 >= 4) {
@@ -390,22 +419,23 @@ export function decodeComponentwiseDeltaVec2Scaled(data, scale, min, max) {
390
419
  const y1 = data[i + 1];
391
420
  const currentVertexX = decodeZigZagInt32Value(x1) + previousVertexX;
392
421
  const currentVertexY = decodeZigZagInt32Value(y1) + previousVertexY;
393
- data[i] = clamp(Math.round(currentVertexX * scale), min, max);
394
- data[i + 1] = clamp(Math.round(currentVertexY * scale), min, max);
422
+ decodedData[i] = clamp(Math.round(currentVertexX * scale), min, max);
423
+ decodedData[i + 1] = clamp(Math.round(currentVertexY * scale), min, max);
395
424
  const x2 = data[i + 2];
396
425
  const y2 = data[i + 3];
397
426
  previousVertexX = decodeZigZagInt32Value(x2) + currentVertexX;
398
427
  previousVertexY = decodeZigZagInt32Value(y2) + currentVertexY;
399
- data[i + 2] = clamp(Math.round(previousVertexX * scale), min, max);
400
- data[i + 3] = clamp(Math.round(previousVertexY * scale), min, max);
428
+ decodedData[i + 2] = clamp(Math.round(previousVertexX * scale), min, max);
429
+ decodedData[i + 3] = clamp(Math.round(previousVertexY * scale), min, max);
401
430
  }
402
431
  }
403
- for (; i != data.length; i += 2) {
432
+ for (; i !== data.length; i += 2) {
404
433
  previousVertexX += decodeZigZagInt32Value(data[i]);
405
434
  previousVertexY += decodeZigZagInt32Value(data[i + 1]);
406
- data[i] = clamp(Math.round(previousVertexX * scale), min, max);
407
- data[i + 1] = clamp(Math.round(previousVertexY * scale), min, max);
435
+ decodedData[i] = clamp(Math.round(previousVertexX * scale), min, max);
436
+ decodedData[i + 1] = clamp(Math.round(previousVertexY * scale), min, max);
408
437
  }
438
+ return decodedData;
409
439
  }
410
440
  function clamp(n, min, max) {
411
441
  return Math.min(max, Math.max(min, n));
@@ -416,7 +446,7 @@ export function decodeZigZagDeltaOfDeltaInt32(data) {
416
446
  decodedData[0] = 0;
417
447
  decodedData[1] = decodeZigZagInt32Value(data[0]);
418
448
  let deltaSum = decodedData[1];
419
- for (let i = 2; i != decodedData.length; ++i) {
449
+ for (let i = 2; i !== decodedData.length; ++i) {
420
450
  const zigZagValue = data[i - 1];
421
451
  const delta = decodeZigZagInt32Value(zigZagValue);
422
452
  deltaSum += delta;
@@ -439,10 +469,10 @@ export function decodeZigZagRleDeltaInt32(data, numRuns, numTotalValues) {
439
469
  }
440
470
  offset += runLength;
441
471
  }
442
- return new Uint32Array(decodedValues);
472
+ return decodedValues;
443
473
  }
444
474
  export function decodeRleDeltaInt32(data, numRuns, numTotalValues) {
445
- const decodedValues = new Int32Array(numTotalValues + 1);
475
+ const decodedValues = new Uint32Array(numTotalValues + 1);
446
476
  decodedValues[0] = 0;
447
477
  let offset = 1;
448
478
  let previousValue = decodedValues[0];
@@ -455,7 +485,7 @@ export function decodeRleDeltaInt32(data, numRuns, numTotalValues) {
455
485
  }
456
486
  offset += runLength;
457
487
  }
458
- return new Uint32Array(decodedValues);
488
+ return decodedValues;
459
489
  }
460
490
  /**
461
491
  * Decode Delta-RLE with multiple runs by fully reconstructing values.
@@ -498,6 +528,39 @@ export function decodeDeltaRleInt64(data, numRuns, numValues) {
498
528
  }
499
529
  return result;
500
530
  }
531
+ export function decodeUnsignedZigZagDeltaInt32(data) {
532
+ const decodedValues = new Uint32Array(data.length);
533
+ decodedValues[0] = decodeZigZagInt32Value(data[0]) >>> 0;
534
+ for (let i = 1; i < data.length; i++) {
535
+ decodedValues[i] = (decodedValues[i - 1] + decodeZigZagInt32Value(data[i])) >>> 0;
536
+ }
537
+ return decodedValues;
538
+ }
539
+ export function decodeUnsignedZigZagDeltaInt64(data) {
540
+ const decodedValues = new BigUint64Array(data.length);
541
+ decodedValues[0] = BigInt.asUintN(64, decodeZigZagInt64Value(data[0]));
542
+ for (let i = 1; i < data.length; i++) {
543
+ decodedValues[i] = BigInt.asUintN(64, decodedValues[i - 1] + decodeZigZagInt64Value(data[i]));
544
+ }
545
+ return decodedValues;
546
+ }
547
+ export function decodeUnsignedComponentwiseDeltaVec2(data) {
548
+ if (data.length < 2) {
549
+ return new Uint32Array(data);
550
+ }
551
+ const decodedData = new Uint32Array(data.length);
552
+ decodedData[0] = decodeZigZagInt32Value(data[0]) >>> 0;
553
+ decodedData[1] = decodeZigZagInt32Value(data[1]) >>> 0;
554
+ for (let i = 2; i < data.length; i += 2) {
555
+ decodedData[i] = (decodedData[i - 2] + decodeZigZagInt32Value(data[i])) >>> 0;
556
+ decodedData[i + 1] = (decodedData[i - 1] + decodeZigZagInt32Value(data[i + 1])) >>> 0;
557
+ }
558
+ return decodedData;
559
+ }
560
+ export function decodeUnsignedComponentwiseDeltaVec2Scaled(data, scale, min, max) {
561
+ const scaledValues = decodeComponentwiseDeltaVec2Scaled(data, scale, min, max);
562
+ return new Uint32Array(scaledValues);
563
+ }
501
564
  export function decodeUnsignedConstRleInt32(data) {
502
565
  return data[1];
503
566
  }
@@ -506,7 +569,7 @@ export function decodeZigZagConstRleInt32(data) {
506
569
  }
507
570
  export function decodeZigZagSequenceRleInt32(data) {
508
571
  /* base value and delta value are equal */
509
- if (data.length == 2) {
572
+ if (data.length === 2) {
510
573
  const value = decodeZigZagInt32Value(data[1]);
511
574
  return [value, value];
512
575
  }
@@ -523,7 +586,7 @@ export function decodeZigZagConstRleInt64(data) {
523
586
  }
524
587
  export function decodeZigZagSequenceRleInt64(data) {
525
588
  /* base value and delta value are equal */
526
- if (data.length == 2) {
589
+ if (data.length === 2) {
527
590
  const value = decodeZigZagInt64Value(data[1]);
528
591
  return [value, value];
529
592
  }