@loaders.gl/tiles 5.0.0-alpha.12 → 5.0.0-alpha.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +18 -72
- package/dist/dist.dev.js +6979 -42928
- package/dist/dist.min.js +3 -22
- package/dist/image-set.d.ts +1 -1
- package/dist/image-set.d.ts.map +1 -1
- package/dist/index.cjs +2847 -8781
- package/dist/index.cjs.map +3 -4
- package/dist/index.d.ts +4 -45
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -27
- package/dist/index.js.map +1 -1
- package/dist/mlt/bundled.d.ts +3 -0
- package/dist/mlt/bundled.d.ts.map +1 -0
- package/dist/mlt/bundled.js +5 -0
- package/dist/mlt/bundled.js.map +1 -0
- package/dist/mlt/index.cjs +3701 -0
- package/dist/mlt/index.cjs.map +6 -0
- package/dist/mlt/index.d.ts +10 -0
- package/dist/mlt/index.d.ts.map +1 -0
- package/dist/mlt/index.js +12 -0
- package/dist/mlt/index.js.map +1 -0
- package/dist/mlt/lib/encode-mlt-geometry.d.ts +6 -0
- package/dist/mlt/lib/encode-mlt-geometry.d.ts.map +1 -0
- package/dist/mlt/lib/encode-mlt-geometry.js +150 -0
- package/dist/mlt/lib/encode-mlt-geometry.js.map +1 -0
- package/dist/mlt/lib/encode-mlt-streams.d.ts +13 -0
- package/dist/mlt/lib/encode-mlt-streams.d.ts.map +1 -0
- package/dist/mlt/lib/encode-mlt-streams.js +57 -0
- package/dist/mlt/lib/encode-mlt-streams.js.map +1 -0
- package/dist/mlt/lib/encode-mlt.d.ts +6 -0
- package/dist/mlt/lib/encode-mlt.d.ts.map +1 -0
- package/dist/mlt/lib/encode-mlt.js +174 -0
- package/dist/mlt/lib/encode-mlt.js.map +1 -0
- package/dist/mlt/lib/parse-mlt.d.ts +11 -0
- package/dist/mlt/lib/parse-mlt.d.ts.map +1 -0
- package/dist/mlt/lib/parse-mlt.js +675 -0
- package/dist/mlt/lib/parse-mlt.js.map +1 -0
- package/dist/mlt/mlt-format.d.ts +14 -0
- package/dist/mlt/mlt-format.d.ts.map +1 -0
- package/dist/mlt/mlt-format.js +17 -0
- package/dist/mlt/mlt-format.js.map +1 -0
- package/dist/mlt/mlt-loader-with-parser.d.ts +91 -0
- package/dist/mlt/mlt-loader-with-parser.d.ts.map +1 -0
- package/dist/mlt/mlt-loader-with-parser.js +29 -0
- package/dist/mlt/mlt-loader-with-parser.js.map +1 -0
- package/dist/mlt/mlt-loader.d.ts +115 -0
- package/dist/mlt/mlt-loader.d.ts.map +1 -0
- package/dist/mlt/mlt-loader.js +38 -0
- package/dist/mlt/mlt-loader.js.map +1 -0
- package/dist/mlt/mlt-source-loader.d.ts +82 -0
- package/dist/mlt/mlt-source-loader.d.ts.map +1 -0
- package/dist/mlt/mlt-source-loader.js +179 -0
- package/dist/mlt/mlt-source-loader.js.map +1 -0
- package/dist/mlt/mlt-writer.d.ts +45 -0
- package/dist/mlt/mlt-writer.d.ts.map +1 -0
- package/dist/mlt/mlt-writer.js +21 -0
- package/dist/mlt/mlt-writer.js.map +1 -0
- package/dist/mlt/unbundled.d.ts +3 -0
- package/dist/mlt/unbundled.d.ts.map +1 -0
- package/dist/mlt/unbundled.js +5 -0
- package/dist/mlt/unbundled.js.map +1 -0
- package/dist/mvt/arrow-table-tile-source-loader-types.d.ts +36 -0
- package/dist/mvt/arrow-table-tile-source-loader-types.d.ts.map +1 -0
- package/dist/mvt/arrow-table-tile-source-loader-types.js +36 -0
- package/dist/mvt/arrow-table-tile-source-loader-types.js.map +1 -0
- package/dist/mvt/arrow-table-tile-source-loader.cjs +6343 -0
- package/dist/mvt/arrow-table-tile-source-loader.cjs.map +6 -0
- package/dist/mvt/arrow-table-tile-source-loader.d.ts +69 -0
- package/dist/mvt/arrow-table-tile-source-loader.d.ts.map +1 -0
- package/dist/mvt/arrow-table-tile-source-loader.js +216 -0
- package/dist/mvt/arrow-table-tile-source-loader.js.map +1 -0
- package/dist/mvt/arrow-table-tile-source-types.d.ts +21 -0
- package/dist/mvt/arrow-table-tile-source-types.d.ts.map +1 -0
- package/dist/mvt/arrow-table-tile-source-types.js +6 -0
- package/dist/mvt/arrow-table-tile-source-types.js.map +1 -0
- package/dist/mvt/bundled.d.ts +6 -0
- package/dist/mvt/bundled.d.ts.map +1 -0
- package/dist/mvt/bundled.js +7 -0
- package/dist/mvt/bundled.js.map +1 -0
- package/dist/mvt/dist.dev.js +46689 -0
- package/dist/mvt/dist.min.js +94 -0
- package/dist/mvt/index.cjs +10095 -0
- package/dist/mvt/index.cjs.map +6 -0
- package/dist/mvt/index.d.ts +28 -0
- package/dist/mvt/index.d.ts.map +1 -0
- package/dist/mvt/index.js +27 -0
- package/dist/mvt/index.js.map +1 -0
- package/dist/mvt/lib/encode-mvt-arrow.d.ts +6 -0
- package/dist/mvt/lib/encode-mvt-arrow.d.ts.map +1 -0
- package/dist/mvt/lib/encode-mvt-arrow.js +225 -0
- package/dist/mvt/lib/encode-mvt-arrow.js.map +1 -0
- package/dist/mvt/lib/encode-mvt.d.ts +30 -0
- package/dist/mvt/lib/encode-mvt.d.ts.map +1 -0
- package/dist/mvt/lib/encode-mvt.js +20 -0
- package/dist/mvt/lib/encode-mvt.js.map +1 -0
- package/dist/mvt/lib/get-schemas-from-tilejson.d.ts +4 -0
- package/dist/mvt/lib/get-schemas-from-tilejson.d.ts.map +1 -0
- package/dist/mvt/lib/get-schemas-from-tilejson.js +56 -0
- package/dist/mvt/lib/get-schemas-from-tilejson.js.map +1 -0
- package/dist/mvt/lib/is-longitude-latitude-crs.d.ts +3 -0
- package/dist/mvt/lib/is-longitude-latitude-crs.d.ts.map +1 -0
- package/dist/mvt/lib/is-longitude-latitude-crs.js +13 -0
- package/dist/mvt/lib/is-longitude-latitude-crs.js.map +1 -0
- package/dist/mvt/lib/mapbox-vt-pbf/geojson-wrapper.d.ts +25 -0
- package/dist/mvt/lib/mapbox-vt-pbf/geojson-wrapper.d.ts.map +1 -0
- package/dist/mvt/lib/mapbox-vt-pbf/geojson-wrapper.js +73 -0
- package/dist/mvt/lib/mapbox-vt-pbf/geojson-wrapper.js.map +1 -0
- package/dist/mvt/lib/mapbox-vt-pbf/to-vector-tile.d.ts +52 -0
- package/dist/mvt/lib/mapbox-vt-pbf/to-vector-tile.d.ts.map +1 -0
- package/dist/mvt/lib/mapbox-vt-pbf/to-vector-tile.js +165 -0
- package/dist/mvt/lib/mapbox-vt-pbf/to-vector-tile.js.map +1 -0
- package/dist/mvt/lib/mvt-pbf/mvt-constants.d.ts +116 -0
- package/dist/mvt/lib/mvt-pbf/mvt-constants.d.ts.map +1 -0
- package/dist/mvt/lib/mvt-pbf/mvt-constants.js +127 -0
- package/dist/mvt/lib/mvt-pbf/mvt-constants.js.map +1 -0
- package/dist/mvt/lib/mvt-pbf/mvt-types.d.ts +17 -0
- package/dist/mvt/lib/mvt-pbf/mvt-types.d.ts.map +1 -0
- package/dist/mvt/lib/mvt-pbf/mvt-types.js +5 -0
- package/dist/mvt/lib/mvt-pbf/mvt-types.js.map +1 -0
- package/dist/mvt/lib/mvt-pbf/parse-geometry-from-pbf.d.ts +77 -0
- package/dist/mvt/lib/mvt-pbf/parse-geometry-from-pbf.d.ts.map +1 -0
- package/dist/mvt/lib/mvt-pbf/parse-geometry-from-pbf.js +235 -0
- package/dist/mvt/lib/mvt-pbf/parse-geometry-from-pbf.js.map +1 -0
- package/dist/mvt/lib/mvt-pbf/parse-mvt-from-pbf.d.ts +25 -0
- package/dist/mvt/lib/mvt-pbf/parse-mvt-from-pbf.d.ts.map +1 -0
- package/dist/mvt/lib/mvt-pbf/parse-mvt-from-pbf.js +263 -0
- package/dist/mvt/lib/mvt-pbf/parse-mvt-from-pbf.js.map +1 -0
- package/dist/mvt/lib/mvt-pbf/write-mvt-to-pbf.d.ts +4 -0
- package/dist/mvt/lib/mvt-pbf/write-mvt-to-pbf.d.ts.map +1 -0
- package/dist/mvt/lib/mvt-pbf/write-mvt-to-pbf.js +134 -0
- package/dist/mvt/lib/mvt-pbf/write-mvt-to-pbf.js.map +1 -0
- package/dist/mvt/lib/mvt-worker-transport.d.ts +15 -0
- package/dist/mvt/lib/mvt-worker-transport.d.ts.map +1 -0
- package/dist/mvt/lib/mvt-worker-transport.js +54 -0
- package/dist/mvt/lib/mvt-worker-transport.js.map +1 -0
- package/dist/mvt/lib/parse-mvt-geojson.d.ts +6 -0
- package/dist/mvt/lib/parse-mvt-geojson.d.ts.map +1 -0
- package/dist/mvt/lib/parse-mvt-geojson.js +48 -0
- package/dist/mvt/lib/parse-mvt-geojson.js.map +1 -0
- package/dist/mvt/lib/parse-mvt.d.ts +14 -0
- package/dist/mvt/lib/parse-mvt.d.ts.map +1 -0
- package/dist/mvt/lib/parse-mvt.js +105 -0
- package/dist/mvt/lib/parse-mvt.js.map +1 -0
- package/dist/mvt/lib/parse-tilejson.d.ts +74 -0
- package/dist/mvt/lib/parse-tilejson.d.ts.map +1 -0
- package/dist/mvt/lib/parse-tilejson.js +267 -0
- package/dist/mvt/lib/parse-tilejson.js.map +1 -0
- package/dist/mvt/lib/resolve-table-tile-parameters.d.ts +4 -0
- package/dist/mvt/lib/resolve-table-tile-parameters.d.ts.map +1 -0
- package/dist/mvt/lib/resolve-table-tile-parameters.js +16 -0
- package/dist/mvt/lib/resolve-table-tile-parameters.js.map +1 -0
- package/dist/mvt/lib/types.d.ts +88 -0
- package/dist/mvt/lib/types.d.ts.map +1 -0
- package/dist/mvt/lib/types.js.map +1 -0
- package/dist/mvt/lib/utils/geometry-utils.d.ts +83 -0
- package/dist/mvt/lib/utils/geometry-utils.d.ts.map +1 -0
- package/dist/mvt/lib/utils/geometry-utils.js +211 -0
- package/dist/mvt/lib/utils/geometry-utils.js.map +1 -0
- package/dist/mvt/lib/vector-tile/vector-tile-feature.d.ts +72 -0
- package/dist/mvt/lib/vector-tile/vector-tile-feature.d.ts.map +1 -0
- package/dist/mvt/lib/vector-tile/vector-tile-feature.js +350 -0
- package/dist/mvt/lib/vector-tile/vector-tile-feature.js.map +1 -0
- package/dist/mvt/lib/vector-tile/vector-tile-layer.d.ts +29 -0
- package/dist/mvt/lib/vector-tile/vector-tile-layer.d.ts.map +1 -0
- package/dist/mvt/lib/vector-tile/vector-tile-layer.js +108 -0
- package/dist/mvt/lib/vector-tile/vector-tile-layer.js.map +1 -0
- package/dist/mvt/lib/vector-tile/vector-tile.d.ts +9 -0
- package/dist/mvt/lib/vector-tile/vector-tile.d.ts.map +1 -0
- package/dist/mvt/lib/vector-tile/vector-tile.js +28 -0
- package/dist/mvt/lib/vector-tile/vector-tile.js.map +1 -0
- package/dist/mvt/lib/vector-tiler/arrow-tile.d.ts +6 -0
- package/dist/mvt/lib/vector-tiler/arrow-tile.d.ts.map +1 -0
- package/dist/mvt/lib/vector-tiler/arrow-tile.js +84 -0
- package/dist/mvt/lib/vector-tiler/arrow-tile.js.map +1 -0
- package/dist/mvt/lib/vector-tiler/features/clip-features.d.ts +16 -0
- package/dist/mvt/lib/vector-tiler/features/clip-features.d.ts.map +1 -0
- package/dist/mvt/lib/vector-tiler/features/clip-features.js +211 -0
- package/dist/mvt/lib/vector-tiler/features/clip-features.js.map +1 -0
- package/dist/mvt/lib/vector-tiler/features/convert-feature.d.ts +18 -0
- package/dist/mvt/lib/vector-tiler/features/convert-feature.d.ts.map +1 -0
- package/dist/mvt/lib/vector-tiler/features/convert-feature.js +161 -0
- package/dist/mvt/lib/vector-tiler/features/convert-feature.js.map +1 -0
- package/dist/mvt/lib/vector-tiler/features/proto-feature.d.ts +30 -0
- package/dist/mvt/lib/vector-tiler/features/proto-feature.d.ts.map +1 -0
- package/dist/mvt/lib/vector-tiler/features/proto-feature.js +53 -0
- package/dist/mvt/lib/vector-tiler/features/proto-feature.js.map +1 -0
- package/dist/mvt/lib/vector-tiler/features/simplify-path.d.ts +10 -0
- package/dist/mvt/lib/vector-tiler/features/simplify-path.d.ts.map +1 -0
- package/dist/mvt/lib/vector-tiler/features/simplify-path.js +67 -0
- package/dist/mvt/lib/vector-tiler/features/simplify-path.js.map +1 -0
- package/dist/mvt/lib/vector-tiler/features/wrap-features.d.ts +17 -0
- package/dist/mvt/lib/vector-tiler/features/wrap-features.d.ts.map +1 -0
- package/dist/mvt/lib/vector-tiler/features/wrap-features.js +95 -0
- package/dist/mvt/lib/vector-tiler/features/wrap-features.js.map +1 -0
- package/dist/mvt/lib/vector-tiler/proto-tile.d.ts +40 -0
- package/dist/mvt/lib/vector-tiler/proto-tile.d.ts.map +1 -0
- package/dist/mvt/lib/vector-tiler/proto-tile.js +139 -0
- package/dist/mvt/lib/vector-tiler/proto-tile.js.map +1 -0
- package/dist/mvt/lib/vector-tiler/tile-to-geojson.d.ts +12 -0
- package/dist/mvt/lib/vector-tiler/tile-to-geojson.d.ts.map +1 -0
- package/dist/mvt/lib/vector-tiler/tile-to-geojson.js +81 -0
- package/dist/mvt/lib/vector-tiler/tile-to-geojson.js.map +1 -0
- package/dist/mvt/lib/vector-tiler/transform-tile.d.ts +7 -0
- package/dist/mvt/lib/vector-tiler/transform-tile.d.ts.map +1 -0
- package/dist/mvt/lib/vector-tiler/transform-tile.js +42 -0
- package/dist/mvt/lib/vector-tiler/transform-tile.js.map +1 -0
- package/dist/mvt/map-style-format.d.ts +13 -0
- package/dist/mvt/map-style-format.d.ts.map +1 -0
- package/dist/mvt/map-style-format.js +16 -0
- package/dist/mvt/map-style-format.js.map +1 -0
- package/dist/mvt/map-style-loader-with-parser.d.ts +26 -0
- package/dist/mvt/map-style-loader-with-parser.d.ts.map +1 -0
- package/dist/mvt/map-style-loader-with-parser.js +38 -0
- package/dist/mvt/map-style-loader-with-parser.js.map +1 -0
- package/dist/mvt/map-style-loader.d.ts +44 -0
- package/dist/mvt/map-style-loader.d.ts.map +1 -0
- package/dist/mvt/map-style-loader.js +25 -0
- package/dist/mvt/map-style-loader.js.map +1 -0
- package/dist/mvt/map-style-schema.d.ts +58 -0
- package/dist/mvt/map-style-schema.d.ts.map +1 -0
- package/dist/mvt/map-style-schema.js +47 -0
- package/dist/mvt/map-style-schema.js.map +1 -0
- package/dist/mvt/map-style.d.ts +110 -0
- package/dist/mvt/map-style.d.ts.map +1 -0
- package/dist/mvt/map-style.js +90 -0
- package/dist/mvt/map-style.js.map +1 -0
- package/dist/mvt/mvt-format.d.ts +14 -0
- package/dist/mvt/mvt-format.d.ts.map +1 -0
- package/dist/mvt/mvt-format.js +23 -0
- package/dist/mvt/mvt-format.js.map +1 -0
- package/dist/mvt/mvt-geojson-loader-types.d.ts +82 -0
- package/dist/mvt/mvt-geojson-loader-types.d.ts.map +1 -0
- package/dist/mvt/mvt-geojson-loader-types.js +34 -0
- package/dist/mvt/mvt-geojson-loader-types.js.map +1 -0
- package/dist/mvt/mvt-geojson-loader.cjs +1366 -0
- package/dist/mvt/mvt-geojson-loader.cjs.map +6 -0
- package/dist/mvt/mvt-geojson-loader.d.ts +32 -0
- package/dist/mvt/mvt-geojson-loader.d.ts.map +1 -0
- package/dist/mvt/mvt-geojson-loader.js +13 -0
- package/dist/mvt/mvt-geojson-loader.js.map +1 -0
- package/dist/mvt/mvt-loader-with-parser.d.ts +105 -0
- package/dist/mvt/mvt-loader-with-parser.d.ts.map +1 -0
- package/dist/mvt/mvt-loader-with-parser.js +21 -0
- package/dist/mvt/mvt-loader-with-parser.js.map +1 -0
- package/dist/mvt/mvt-loader.d.ts +129 -0
- package/dist/mvt/mvt-loader.d.ts.map +1 -0
- package/dist/mvt/mvt-loader.js +40 -0
- package/dist/mvt/mvt-loader.js.map +1 -0
- package/dist/mvt/mvt-source-loader.d.ts +102 -0
- package/dist/mvt/mvt-source-loader.d.ts.map +1 -0
- package/dist/mvt/mvt-source-loader.js +275 -0
- package/dist/mvt/mvt-source-loader.js.map +1 -0
- package/dist/mvt/mvt-writer.d.ts +28 -0
- package/dist/mvt/mvt-writer.d.ts.map +1 -0
- package/dist/mvt/mvt-writer.js +32 -0
- package/dist/mvt/mvt-writer.js.map +1 -0
- package/dist/mvt/table-tile-source-loader.d.ts +169 -0
- package/dist/mvt/table-tile-source-loader.d.ts.map +1 -0
- package/dist/mvt/table-tile-source-loader.js +478 -0
- package/dist/mvt/table-tile-source-loader.js.map +1 -0
- package/dist/mvt/tilejson-format.d.ts +13 -0
- package/dist/mvt/tilejson-format.d.ts.map +1 -0
- package/dist/mvt/tilejson-format.js +16 -0
- package/dist/mvt/tilejson-format.js.map +1 -0
- package/dist/mvt/tilejson-loader-with-parser.d.ts +13 -0
- package/dist/mvt/tilejson-loader-with-parser.d.ts.map +1 -0
- package/dist/mvt/tilejson-loader-with-parser.js +25 -0
- package/dist/mvt/tilejson-loader-with-parser.js.map +1 -0
- package/dist/mvt/tilejson-loader.d.ts +56 -0
- package/dist/mvt/tilejson-loader.d.ts.map +1 -0
- package/dist/mvt/tilejson-loader.js +28 -0
- package/dist/mvt/tilejson-loader.js.map +1 -0
- package/dist/mvt/tilejson-zod-schema.cjs +79 -0
- package/dist/mvt/tilejson-zod-schema.cjs.map +6 -0
- package/dist/mvt/tilejson-zod-schema.d.ts +218 -0
- package/dist/mvt/tilejson-zod-schema.d.ts.map +1 -0
- package/dist/mvt/tilejson-zod-schema.js +68 -0
- package/dist/mvt/tilejson-zod-schema.js.map +1 -0
- package/dist/mvt/tilejson.schema.json +197 -0
- package/dist/mvt/unbundled.d.ts +8 -0
- package/dist/mvt/unbundled.d.ts.map +1 -0
- package/dist/mvt/unbundled.js +8 -0
- package/dist/mvt/unbundled.js.map +1 -0
- package/dist/mvt/workers/mvt-worker-node.d.ts +2 -0
- package/dist/mvt/workers/mvt-worker-node.d.ts.map +1 -0
- package/dist/mvt/workers/mvt-worker-node.js +8 -0
- package/dist/mvt/workers/mvt-worker-node.js.map +1 -0
- package/dist/mvt/workers/mvt-worker.d.ts +2 -0
- package/dist/mvt/workers/mvt-worker.d.ts.map +1 -0
- package/dist/mvt/workers/mvt-worker.js +7 -0
- package/dist/mvt/workers/mvt-worker.js.map +1 -0
- package/dist/mvt-worker-node.js +72460 -0
- package/dist/mvt-worker-node.js.map +7 -0
- package/dist/mvt-worker.js +21239 -0
- package/dist/pmtiles/bundled.d.ts +3 -0
- package/dist/pmtiles/bundled.d.ts.map +1 -0
- package/dist/pmtiles/bundled.js +5 -0
- package/dist/pmtiles/bundled.js.map +1 -0
- package/dist/pmtiles/dist.dev.js +50530 -0
- package/dist/pmtiles/dist.min.js +94 -0
- package/dist/pmtiles/geoarrow.cjs +6718 -0
- package/dist/pmtiles/geoarrow.cjs.map +6 -0
- package/dist/pmtiles/geoarrow.d.ts +30 -0
- package/dist/pmtiles/geoarrow.d.ts.map +1 -0
- package/dist/pmtiles/geoarrow.js +143 -0
- package/dist/pmtiles/geoarrow.js.map +1 -0
- package/dist/pmtiles/index.cjs +8011 -0
- package/dist/pmtiles/index.cjs.map +6 -0
- package/dist/pmtiles/index.d.ts +14 -0
- package/dist/pmtiles/index.d.ts.map +1 -0
- package/dist/pmtiles/index.js +10 -0
- package/dist/pmtiles/index.js.map +1 -0
- package/dist/pmtiles/lib/blob-source.d.ts +14 -0
- package/dist/pmtiles/lib/blob-source.d.ts.map +1 -0
- package/dist/pmtiles/lib/blob-source.js +32 -0
- package/dist/pmtiles/lib/blob-source.js.map +1 -0
- package/dist/pmtiles/lib/encode-pmtiles.d.ts +8 -0
- package/dist/pmtiles/lib/encode-pmtiles.d.ts.map +1 -0
- package/dist/pmtiles/lib/encode-pmtiles.js +268 -0
- package/dist/pmtiles/lib/encode-pmtiles.js.map +1 -0
- package/dist/pmtiles/lib/parse-pmtiles.d.ts +52 -0
- package/dist/pmtiles/lib/parse-pmtiles.d.ts.map +1 -0
- package/dist/pmtiles/lib/parse-pmtiles.js +95 -0
- package/dist/pmtiles/lib/parse-pmtiles.js.map +1 -0
- package/dist/pmtiles/lib/range-request-source.d.ts +24 -0
- package/dist/pmtiles/lib/range-request-source.d.ts.map +1 -0
- package/dist/pmtiles/lib/range-request-source.js +45 -0
- package/dist/pmtiles/lib/range-request-source.js.map +1 -0
- package/dist/pmtiles/lib/version.d.ts +2 -0
- package/dist/pmtiles/lib/version.d.ts.map +1 -0
- package/dist/pmtiles/lib/version.js +8 -0
- package/dist/pmtiles/lib/version.js.map +1 -0
- package/dist/pmtiles/pmtiles-format.d.ts +14 -0
- package/dist/pmtiles/pmtiles-format.d.ts.map +1 -0
- package/dist/pmtiles/pmtiles-format.js +17 -0
- package/dist/pmtiles/pmtiles-format.js.map +1 -0
- package/dist/pmtiles/pmtiles-loader-with-parser.d.ts +30 -0
- package/dist/pmtiles/pmtiles-loader-with-parser.d.ts.map +1 -0
- package/dist/pmtiles/pmtiles-loader-with-parser.js +41 -0
- package/dist/pmtiles/pmtiles-loader-with-parser.js.map +1 -0
- package/dist/pmtiles/pmtiles-loader.d.ts +41 -0
- package/dist/pmtiles/pmtiles-loader.d.ts.map +1 -0
- package/dist/pmtiles/pmtiles-loader.js +20 -0
- package/dist/pmtiles/pmtiles-loader.js.map +1 -0
- package/dist/pmtiles/pmtiles-source-loader.d.ts +85 -0
- package/dist/pmtiles/pmtiles-source-loader.d.ts.map +1 -0
- package/dist/pmtiles/pmtiles-source-loader.js +239 -0
- package/dist/pmtiles/pmtiles-source-loader.js.map +1 -0
- package/dist/pmtiles/pmtiles-writer-types.d.ts +39 -0
- package/dist/pmtiles/pmtiles-writer-types.d.ts.map +1 -0
- package/dist/{point-cloud-tile-source-types.js → pmtiles/pmtiles-writer-types.js} +1 -1
- package/dist/pmtiles/pmtiles-writer-types.js.map +1 -0
- package/dist/pmtiles/pmtiles-writer.d.ts +22 -0
- package/dist/pmtiles/pmtiles-writer.d.ts.map +1 -0
- package/dist/pmtiles/pmtiles-writer.js +15 -0
- package/dist/pmtiles/pmtiles-writer.js.map +1 -0
- package/dist/pmtiles/raster.cjs +1183 -0
- package/dist/pmtiles/raster.cjs.map +6 -0
- package/dist/pmtiles/raster.d.ts +30 -0
- package/dist/pmtiles/raster.d.ts.map +1 -0
- package/dist/pmtiles/raster.js +212 -0
- package/dist/pmtiles/raster.js.map +1 -0
- package/dist/pmtiles/source-info.d.ts +25 -0
- package/dist/pmtiles/source-info.d.ts.map +1 -0
- package/dist/{types.js → pmtiles/source-info.js} +1 -1
- package/dist/pmtiles/source-info.js.map +1 -0
- package/dist/pmtiles/unbundled.d.ts +3 -0
- package/dist/pmtiles/unbundled.d.ts.map +1 -0
- package/dist/pmtiles/unbundled.js +5 -0
- package/dist/pmtiles/unbundled.js.map +1 -0
- package/dist/raster-set.d.ts +1 -1
- package/dist/raster-set.d.ts.map +1 -1
- package/dist/raster-set.js +1 -1
- package/dist/raster-set.js.map +1 -1
- package/dist/tile-matrix.cjs +81 -0
- package/dist/tile-matrix.cjs.map +6 -0
- package/dist/tile-matrix.d.ts +52 -0
- package/dist/tile-matrix.d.ts.map +1 -0
- package/dist/tile-matrix.js +75 -0
- package/dist/tile-matrix.js.map +1 -0
- package/dist/tileset-2d/tile-2d-header.d.ts +2 -2
- package/dist/tileset-2d/tile-2d-header.d.ts.map +1 -1
- package/dist/tileset-2d/tile-2d-header.js +11 -11
- package/dist/tileset-2d/tile-2d-header.js.map +1 -1
- package/dist/tileset-2d/tileset-2d.d.ts +19 -10
- package/dist/tileset-2d/tileset-2d.d.ts.map +1 -1
- package/dist/tileset-2d/tileset-2d.js +69 -15
- package/dist/tileset-2d/tileset-2d.js.map +1 -1
- package/package.json +101 -25
- package/src/image-set.ts +1 -1
- package/src/index.ts +8 -128
- package/src/mlt/bundled.ts +9 -0
- package/src/mlt/index.ts +18 -0
- package/src/mlt/lib/encode-mlt-geometry.ts +162 -0
- package/src/mlt/lib/encode-mlt-streams.ts +66 -0
- package/src/mlt/lib/encode-mlt.ts +215 -0
- package/src/mlt/lib/parse-mlt.ts +906 -0
- package/src/mlt/libs/mlt-decoder.cjs +4552 -0
- package/src/mlt/mlt-format.ts +19 -0
- package/src/mlt/mlt-loader-with-parser.ts +57 -0
- package/src/mlt/mlt-loader.ts +64 -0
- package/src/mlt/mlt-source-loader.ts +266 -0
- package/src/mlt/mlt-writer.ts +47 -0
- package/src/mlt/unbundled.ts +6 -0
- package/src/mvt/arrow-table-tile-source-loader-types.ts +55 -0
- package/src/mvt/arrow-table-tile-source-loader.ts +307 -0
- package/src/mvt/arrow-table-tile-source-types.ts +32 -0
- package/src/mvt/bundled.ts +14 -0
- package/src/mvt/index.ts +67 -0
- package/src/mvt/lib/encode-mvt-arrow.ts +273 -0
- package/src/mvt/lib/encode-mvt.ts +46 -0
- package/src/mvt/lib/get-schemas-from-tilejson.ts +64 -0
- package/src/mvt/lib/is-longitude-latitude-crs.ts +15 -0
- package/src/mvt/lib/mapbox-vt-pbf/geojson-to-vt.ts.disabled +76 -0
- package/src/mvt/lib/mapbox-vt-pbf/geojson-wrapper.ts +89 -0
- package/src/mvt/lib/mapbox-vt-pbf/to-vector-tile.ts +230 -0
- package/src/mvt/lib/mvt-pbf/mvt-constants.ts +135 -0
- package/src/mvt/lib/mvt-pbf/mvt-types.ts +22 -0
- package/src/mvt/lib/mvt-pbf/parse-geometry-from-pbf.ts +285 -0
- package/src/mvt/lib/mvt-pbf/parse-mvt-from-pbf.ts +310 -0
- package/src/mvt/lib/mvt-pbf/write-mvt-to-pbf.ts +162 -0
- package/src/mvt/lib/mvt-worker-transport.ts +74 -0
- package/src/mvt/lib/parse-mvt-geojson.ts +65 -0
- package/src/mvt/lib/parse-mvt.ts +145 -0
- package/src/mvt/lib/parse-tilejson.ts +397 -0
- package/src/mvt/lib/resolve-table-tile-parameters.ts +23 -0
- package/src/mvt/lib/types.ts +90 -0
- package/src/mvt/lib/utils/geometry-utils.ts +238 -0
- package/src/mvt/lib/vector-tile/LICENSE.txt +31 -0
- package/src/mvt/lib/vector-tile/vector-tile-feature.ts +430 -0
- package/src/mvt/lib/vector-tile/vector-tile-layer.ts +130 -0
- package/src/mvt/lib/vector-tile/vector-tile.ts +32 -0
- package/src/mvt/lib/vector-tiler/LICENSE +19 -0
- package/src/mvt/lib/vector-tiler/arrow-tile.ts +93 -0
- package/src/mvt/lib/vector-tiler/features/clip-features.ts +250 -0
- package/src/mvt/lib/vector-tiler/features/convert-feature.ts +213 -0
- package/src/mvt/lib/vector-tiler/features/proto-feature.ts +104 -0
- package/src/mvt/lib/vector-tiler/features/simplify-path.ts +84 -0
- package/src/mvt/lib/vector-tiler/features/wrap-features.ts +125 -0
- package/src/mvt/lib/vector-tiler/proto-tile.ts +217 -0
- package/src/mvt/lib/vector-tiler/tile-to-geojson.ts +104 -0
- package/src/mvt/lib/vector-tiler/transform-tile.ts +57 -0
- package/src/mvt/map-style-format.ts +18 -0
- package/src/mvt/map-style-loader-with-parser.ts +62 -0
- package/src/mvt/map-style-loader.ts +31 -0
- package/src/mvt/map-style-schema.ts +53 -0
- package/src/mvt/map-style.ts +218 -0
- package/src/mvt/mvt-format.ts +25 -0
- package/src/mvt/mvt-geojson-loader-types.ts +60 -0
- package/src/mvt/mvt-geojson-loader.ts +20 -0
- package/src/mvt/mvt-loader-with-parser.ts +53 -0
- package/src/mvt/mvt-loader.ts +73 -0
- package/src/mvt/mvt-source-loader.ts +410 -0
- package/src/mvt/mvt-writer.ts +35 -0
- package/src/mvt/table-tile-source-loader.ts +672 -0
- package/src/mvt/tilejson-format.ts +18 -0
- package/src/mvt/tilejson-loader-with-parser.ts +38 -0
- package/src/mvt/tilejson-loader.ts +42 -0
- package/src/mvt/tilejson-zod-schema.ts +199 -0
- package/src/mvt/unbundled.ts +13 -0
- package/src/mvt/workers/mvt-worker-node.ts +9 -0
- package/src/mvt/workers/mvt-worker.ts +8 -0
- package/src/pmtiles/bundled.ts +6 -0
- package/src/pmtiles/geoarrow.ts +188 -0
- package/src/pmtiles/index.ts +27 -0
- package/src/pmtiles/lib/blob-source.ts +41 -0
- package/src/pmtiles/lib/encode-pmtiles.ts +322 -0
- package/src/pmtiles/lib/parse-pmtiles.ts +180 -0
- package/src/pmtiles/lib/range-request-source.ts +60 -0
- package/src/pmtiles/lib/version.ts +8 -0
- package/src/pmtiles/pmtiles-format.ts +19 -0
- package/src/pmtiles/pmtiles-loader-with-parser.ts +60 -0
- package/src/pmtiles/pmtiles-loader.ts +30 -0
- package/src/pmtiles/pmtiles-source-loader.ts +346 -0
- package/src/pmtiles/pmtiles-writer-types.ts +45 -0
- package/src/pmtiles/pmtiles-writer.ts +26 -0
- package/src/pmtiles/raster.ts +289 -0
- package/src/pmtiles/source-info.ts +25 -0
- package/src/pmtiles/unbundled.ts +6 -0
- package/src/raster-set.ts +2 -2
- package/src/tile-matrix.ts +138 -0
- package/src/tileset-2d/tile-2d-header.ts +14 -13
- package/src/tileset-2d/tileset-2d.ts +81 -19
- package/dist/constants.d.ts +0 -38
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -39
- package/dist/constants.js.map +0 -1
- package/dist/point-cloud/point-cloud-tile.d.ts +0 -47
- package/dist/point-cloud/point-cloud-tile.d.ts.map +0 -1
- package/dist/point-cloud/point-cloud-tile.js +0 -70
- package/dist/point-cloud/point-cloud-tile.js.map +0 -1
- package/dist/point-cloud/point-cloud-tileset.d.ts +0 -135
- package/dist/point-cloud/point-cloud-tileset.d.ts.map +0 -1
- package/dist/point-cloud/point-cloud-tileset.js +0 -549
- package/dist/point-cloud/point-cloud-tileset.js.map +0 -1
- package/dist/point-cloud/types.d.ts +0 -81
- package/dist/point-cloud/types.d.ts.map +0 -1
- package/dist/point-cloud/types.js.map +0 -1
- package/dist/point-cloud-tile-source-loader-types.d.ts +0 -31
- package/dist/point-cloud-tile-source-loader-types.d.ts.map +0 -1
- package/dist/point-cloud-tile-source-loader-types.js +0 -34
- package/dist/point-cloud-tile-source-loader-types.js.map +0 -1
- package/dist/point-cloud-tile-source-loader.cjs +0 -81
- package/dist/point-cloud-tile-source-loader.cjs.map +0 -7
- package/dist/point-cloud-tile-source-loader.d.ts +0 -27
- package/dist/point-cloud-tile-source-loader.d.ts.map +0 -1
- package/dist/point-cloud-tile-source-loader.js +0 -17
- package/dist/point-cloud-tile-source-loader.js.map +0 -1
- package/dist/point-cloud-tile-source-types.d.ts +0 -15
- package/dist/point-cloud-tile-source-types.d.ts.map +0 -1
- package/dist/point-cloud-tile-source-types.js.map +0 -1
- package/dist/point-cloud-tile-source.cjs +0 -105
- package/dist/point-cloud-tile-source.cjs.map +0 -7
- package/dist/point-cloud-tile-source.d.ts +0 -36
- package/dist/point-cloud-tile-source.d.ts.map +0 -1
- package/dist/point-cloud-tile-source.js +0 -84
- package/dist/point-cloud-tile-source.js.map +0 -1
- package/dist/spatial/format-spatial-reference.d.ts +0 -68
- package/dist/spatial/format-spatial-reference.d.ts.map +0 -1
- package/dist/spatial/format-spatial-reference.js +0 -291
- package/dist/spatial/format-spatial-reference.js.map +0 -1
- package/dist/spatial/get-spatial-coordinate-frame.d.ts +0 -20
- package/dist/spatial/get-spatial-coordinate-frame.d.ts.map +0 -1
- package/dist/spatial/get-spatial-coordinate-frame.js +0 -139
- package/dist/spatial/get-spatial-coordinate-frame.js.map +0 -1
- package/dist/spatial/i3s-elevation.d.ts +0 -20
- package/dist/spatial/i3s-elevation.d.ts.map +0 -1
- package/dist/spatial/i3s-elevation.js +0 -90
- package/dist/spatial/i3s-elevation.js.map +0 -1
- package/dist/spatial/i3s-spatial-transformer.d.ts +0 -205
- package/dist/spatial/i3s-spatial-transformer.d.ts.map +0 -1
- package/dist/spatial/i3s-spatial-transformer.js +0 -731
- package/dist/spatial/i3s-spatial-transformer.js.map +0 -1
- package/dist/spatial/normalize-crs-identifier.d.ts +0 -15
- package/dist/spatial/normalize-crs-identifier.d.ts.map +0 -1
- package/dist/spatial/normalize-crs-identifier.js +0 -22
- package/dist/spatial/normalize-crs-identifier.js.map +0 -1
- package/dist/spatial/spatial-coordinate-transformer.d.ts +0 -54
- package/dist/spatial/spatial-coordinate-transformer.d.ts.map +0 -1
- package/dist/spatial/spatial-coordinate-transformer.js +0 -311
- package/dist/spatial/spatial-coordinate-transformer.js.map +0 -1
- package/dist/spatial/spatial-resource-registry.d.ts +0 -47
- package/dist/spatial/spatial-resource-registry.d.ts.map +0 -1
- package/dist/spatial/spatial-resource-registry.js +0 -76
- package/dist/spatial/spatial-resource-registry.js.map +0 -1
- package/dist/spatial/spatial-types.d.ts +0 -190
- package/dist/spatial/spatial-types.d.ts.map +0 -1
- package/dist/spatial/spatial-types.js +0 -192
- package/dist/spatial/spatial-types.js.map +0 -1
- package/dist/spatial/tiles-3d-spatial-transformer.d.ts +0 -32
- package/dist/spatial/tiles-3d-spatial-transformer.d.ts.map +0 -1
- package/dist/spatial/tiles-3d-spatial-transformer.js +0 -163
- package/dist/spatial/tiles-3d-spatial-transformer.js.map +0 -1
- package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts +0 -60
- package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts.map +0 -1
- package/dist/tileset-3d/common/indexed-archive-tileset-source.js +0 -130
- package/dist/tileset-3d/common/indexed-archive-tileset-source.js.map +0 -1
- package/dist/tileset-3d/common/tile-3d-contracts.d.ts +0 -63
- package/dist/tileset-3d/common/tile-3d-contracts.d.ts.map +0 -1
- package/dist/tileset-3d/common/tile-3d-contracts.js +0 -51
- package/dist/tileset-3d/common/tile-3d-contracts.js.map +0 -1
- package/dist/tileset-3d/common/tile-3d.d.ts +0 -410
- package/dist/tileset-3d/common/tile-3d.d.ts.map +0 -1
- package/dist/tileset-3d/common/tile-3d.js +0 -1056
- package/dist/tileset-3d/common/tile-3d.js.map +0 -1
- package/dist/tileset-3d/common/tileset-3d.d.ts +0 -369
- package/dist/tileset-3d/common/tileset-3d.d.ts.map +0 -1
- package/dist/tileset-3d/common/tileset-3d.js +0 -879
- package/dist/tileset-3d/common/tileset-3d.js.map +0 -1
- package/dist/tileset-3d/common/tileset-cache.d.ts +0 -29
- package/dist/tileset-3d/common/tileset-cache.d.ts.map +0 -1
- package/dist/tileset-3d/common/tileset-cache.js +0 -82
- package/dist/tileset-3d/common/tileset-cache.js.map +0 -1
- package/dist/tileset-3d/common/tileset-content-traversal.d.ts +0 -37
- package/dist/tileset-3d/common/tileset-content-traversal.d.ts.map +0 -1
- package/dist/tileset-3d/common/tileset-content-traversal.js +0 -80
- package/dist/tileset-3d/common/tileset-content-traversal.js.map +0 -1
- package/dist/tileset-3d/common/tileset-observability.d.ts +0 -60
- package/dist/tileset-3d/common/tileset-observability.d.ts.map +0 -1
- package/dist/tileset-3d/common/tileset-observability.js +0 -39
- package/dist/tileset-3d/common/tileset-observability.js.map +0 -1
- package/dist/tileset-3d/common/tileset-source.d.ts +0 -228
- package/dist/tileset-3d/common/tileset-source.d.ts.map +0 -1
- package/dist/tileset-3d/common/tileset-source.js +0 -17
- package/dist/tileset-3d/common/tileset-source.js.map +0 -1
- package/dist/tileset-3d/common/tileset-traverser.d.ts +0 -88
- package/dist/tileset-3d/common/tileset-traverser.d.ts.map +0 -1
- package/dist/tileset-3d/common/tileset-traverser.js +0 -341
- package/dist/tileset-3d/common/tileset-traverser.js.map +0 -1
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts +0 -182
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts.map +0 -1
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js +0 -678
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js.map +0 -1
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts +0 -221
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts.map +0 -1
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js +0 -770
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js.map +0 -1
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts +0 -111
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts.map +0 -1
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js +0 -339
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js.map +0 -1
- package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.d.ts +0 -27
- package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.d.ts.map +0 -1
- package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js +0 -45
- package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js.map +0 -1
- package/dist/tileset-3d/format-i3s/i3s-source.d.ts +0 -116
- package/dist/tileset-3d/format-i3s/i3s-source.d.ts.map +0 -1
- package/dist/tileset-3d/format-i3s/i3s-source.js +0 -450
- package/dist/tileset-3d/format-i3s/i3s-source.js.map +0 -1
- package/dist/tileset-3d/format-i3s/i3s-tile-manager.d.ts +0 -34
- package/dist/tileset-3d/format-i3s/i3s-tile-manager.d.ts.map +0 -1
- package/dist/tileset-3d/format-i3s/i3s-tile-manager.js +0 -81
- package/dist/tileset-3d/format-i3s/i3s-tile-manager.js.map +0 -1
- package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.d.ts +0 -25
- package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.d.ts.map +0 -1
- package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js +0 -84
- package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js.map +0 -1
- package/dist/tileset-3d/helpers/3d-tiles-options.d.ts +0 -5
- package/dist/tileset-3d/helpers/3d-tiles-options.d.ts.map +0 -1
- package/dist/tileset-3d/helpers/3d-tiles-options.js +0 -9
- package/dist/tileset-3d/helpers/3d-tiles-options.js.map +0 -1
- package/dist/tileset-3d/helpers/bounding-volume.d.ts +0 -23
- package/dist/tileset-3d/helpers/bounding-volume.d.ts.map +0 -1
- package/dist/tileset-3d/helpers/bounding-volume.js +0 -236
- package/dist/tileset-3d/helpers/bounding-volume.js.map +0 -1
- package/dist/tileset-3d/helpers/frame-state.d.ts +0 -93
- package/dist/tileset-3d/helpers/frame-state.d.ts.map +0 -1
- package/dist/tileset-3d/helpers/frame-state.js +0 -211
- package/dist/tileset-3d/helpers/frame-state.js.map +0 -1
- package/dist/tileset-3d/helpers/i3s-lod.d.ts +0 -20
- package/dist/tileset-3d/helpers/i3s-lod.d.ts.map +0 -1
- package/dist/tileset-3d/helpers/i3s-lod.js +0 -95
- package/dist/tileset-3d/helpers/i3s-lod.js.map +0 -1
- package/dist/tileset-3d/helpers/s2-bounding-volume.d.ts +0 -17
- package/dist/tileset-3d/helpers/s2-bounding-volume.d.ts.map +0 -1
- package/dist/tileset-3d/helpers/s2-bounding-volume.js +0 -17
- package/dist/tileset-3d/helpers/s2-bounding-volume.js.map +0 -1
- package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts +0 -72
- package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts.map +0 -1
- package/dist/tileset-3d/helpers/tiles-3d-lod.js +0 -257
- package/dist/tileset-3d/helpers/tiles-3d-lod.js.map +0 -1
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts +0 -134
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts.map +0 -1
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.js +0 -179
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.js.map +0 -1
- package/dist/tileset-3d/helpers/transform-utils.d.ts +0 -3
- package/dist/tileset-3d/helpers/transform-utils.d.ts.map +0 -1
- package/dist/tileset-3d/helpers/transform-utils.js +0 -86
- package/dist/tileset-3d/helpers/transform-utils.js.map +0 -1
- package/dist/tileset-3d/helpers/zoom.d.ts +0 -46
- package/dist/tileset-3d/helpers/zoom.d.ts.map +0 -1
- package/dist/tileset-3d/helpers/zoom.js +0 -86
- package/dist/tileset-3d/helpers/zoom.js.map +0 -1
- package/dist/types.d.ts +0 -48
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utils/doubly-linked-list-node.d.ts +0 -11
- package/dist/utils/doubly-linked-list-node.d.ts.map +0 -1
- package/dist/utils/doubly-linked-list-node.js +0 -20
- package/dist/utils/doubly-linked-list-node.js.map +0 -1
- package/dist/utils/doubly-linked-list.d.ts +0 -30
- package/dist/utils/doubly-linked-list.d.ts.map +0 -1
- package/dist/utils/doubly-linked-list.js +0 -93
- package/dist/utils/doubly-linked-list.js.map +0 -1
- package/dist/utils/managed-array.d.ts +0 -85
- package/dist/utils/managed-array.d.ts.map +0 -1
- package/dist/utils/managed-array.js +0 -152
- package/dist/utils/managed-array.js.map +0 -1
- package/src/constants.ts +0 -59
- package/src/point-cloud/point-cloud-tile.ts +0 -80
- package/src/point-cloud/point-cloud-tileset.ts +0 -767
- package/src/point-cloud/types.ts +0 -99
- package/src/point-cloud-tile-source-loader-types.ts +0 -53
- package/src/point-cloud-tile-source-loader.ts +0 -32
- package/src/point-cloud-tile-source-types.ts +0 -20
- package/src/point-cloud-tile-source.ts +0 -112
- package/src/spatial/format-spatial-reference.ts +0 -385
- package/src/spatial/get-spatial-coordinate-frame.ts +0 -169
- package/src/spatial/i3s-elevation.ts +0 -96
- package/src/spatial/i3s-spatial-transformer.ts +0 -1021
- package/src/spatial/normalize-crs-identifier.ts +0 -26
- package/src/spatial/spatial-coordinate-transformer.ts +0 -397
- package/src/spatial/spatial-resource-registry.ts +0 -90
- package/src/spatial/spatial-types.ts +0 -422
- package/src/spatial/tiles-3d-spatial-transformer.ts +0 -194
- package/src/tileset-3d/common/indexed-archive-tileset-source.ts +0 -205
- package/src/tileset-3d/common/tile-3d-contracts.ts +0 -115
- package/src/tileset-3d/common/tile-3d.ts +0 -1310
- package/src/tileset-3d/common/tileset-3d.ts +0 -1210
- package/src/tileset-3d/common/tileset-cache.ts +0 -111
- package/src/tileset-3d/common/tileset-content-traversal.ts +0 -114
- package/src/tileset-3d/common/tileset-observability.ts +0 -100
- package/src/tileset-3d/common/tileset-source.ts +0 -284
- package/src/tileset-3d/common/tileset-traverser.ts +0 -416
- package/src/tileset-3d/format-3d-tiles/implicit-tiling.ts +0 -1056
- package/src/tileset-3d/format-3d-tiles/tiles-3d-source.ts +0 -1025
- package/src/tileset-3d/format-3d-tiles/tileset-3d-traverser.ts +0 -391
- package/src/tileset-3d/format-i3s/i3s-pending-tiles-register.ts +0 -48
- package/src/tileset-3d/format-i3s/i3s-source.ts +0 -557
- package/src/tileset-3d/format-i3s/i3s-tile-manager.ts +0 -105
- package/src/tileset-3d/format-i3s/i3s-tileset-traverser.ts +0 -102
- package/src/tileset-3d/helpers/3d-tiles-options.ts +0 -11
- package/src/tileset-3d/helpers/bounding-volume.ts +0 -281
- package/src/tileset-3d/helpers/frame-state.ts +0 -322
- package/src/tileset-3d/helpers/i3s-lod.ts +0 -109
- package/src/tileset-3d/helpers/s2-bounding-volume.ts +0 -32
- package/src/tileset-3d/helpers/tiles-3d-lod.ts +0 -370
- package/src/tileset-3d/helpers/tiles-3d-request-priority.ts +0 -301
- package/src/tileset-3d/helpers/transform-utils.ts +0 -109
- package/src/tileset-3d/helpers/zoom.ts +0 -120
- package/src/types.ts +0 -54
- package/src/utils/doubly-linked-list-node.ts +0 -22
- package/src/utils/doubly-linked-list.ts +0 -105
- package/src/utils/managed-array.ts +0 -174
- /package/dist/{point-cloud → mvt/lib}/types.js +0 -0
|
@@ -0,0 +1,4552 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Generated from @maplibre/mlt (MIT) for loaders.gl browser bundling.
|
|
3
|
+
// Source: https://github.com/maplibre/mlt
|
|
4
|
+
|
|
5
|
+
var __defProp = Object.defineProperty;
|
|
6
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all)
|
|
11
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from))
|
|
16
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
17
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
18
|
+
}
|
|
19
|
+
return to;
|
|
20
|
+
};
|
|
21
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
22
|
+
|
|
23
|
+
// ../../node_modules/@maplibre/mlt/dist/index.js
|
|
24
|
+
var index_exports = {};
|
|
25
|
+
__export(index_exports, {
|
|
26
|
+
FeatureTable: () => FeatureTable,
|
|
27
|
+
GEOMETRY_TYPE: () => GEOMETRY_TYPE,
|
|
28
|
+
GeometryVector: () => GeometryVector,
|
|
29
|
+
GpuVector: () => GpuVector,
|
|
30
|
+
decodeTile: () => decodeTile
|
|
31
|
+
});
|
|
32
|
+
module.exports = __toCommonJS(index_exports);
|
|
33
|
+
|
|
34
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/vector.js
|
|
35
|
+
var Vector = class {
|
|
36
|
+
constructor(_name, dataBuffer, sizeOrNullabilityBuffer) {
|
|
37
|
+
this._name = _name;
|
|
38
|
+
this.dataBuffer = dataBuffer;
|
|
39
|
+
if (typeof sizeOrNullabilityBuffer === "number") {
|
|
40
|
+
this._size = sizeOrNullabilityBuffer;
|
|
41
|
+
} else {
|
|
42
|
+
this.nullabilityBuffer = sizeOrNullabilityBuffer;
|
|
43
|
+
this._size = sizeOrNullabilityBuffer.size();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
getValue(index) {
|
|
47
|
+
return this.nullabilityBuffer && !this.nullabilityBuffer.get(index) ? null : this.getValueFromBuffer(index);
|
|
48
|
+
}
|
|
49
|
+
has(index) {
|
|
50
|
+
return this.nullabilityBuffer?.get(index) || !this.nullabilityBuffer;
|
|
51
|
+
}
|
|
52
|
+
get name() {
|
|
53
|
+
return this._name;
|
|
54
|
+
}
|
|
55
|
+
get size() {
|
|
56
|
+
return this._size;
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/fixedSizeVector.js
|
|
61
|
+
var FixedSizeVector = class extends Vector {
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/flat/int32FlatVector.js
|
|
65
|
+
var Int32FlatVector = class extends FixedSizeVector {
|
|
66
|
+
getValueFromBuffer(index) {
|
|
67
|
+
return this.dataBuffer[index];
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/flat/doubleFlatVector.js
|
|
72
|
+
var DoubleFlatVector = class extends FixedSizeVector {
|
|
73
|
+
getValueFromBuffer(index) {
|
|
74
|
+
return this.dataBuffer[index];
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/sequence/sequenceVector.js
|
|
79
|
+
var SequenceVector = class extends Vector {
|
|
80
|
+
constructor(name, baseValueBuffer, delta, size) {
|
|
81
|
+
super(name, baseValueBuffer, size);
|
|
82
|
+
this.delta = delta;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/sequence/int32SequenceVector.js
|
|
87
|
+
var Int32SequenceVector = class extends SequenceVector {
|
|
88
|
+
constructor(name, baseValue, delta, size) {
|
|
89
|
+
super(name, Int32Array.of(baseValue), delta, size);
|
|
90
|
+
}
|
|
91
|
+
getValueFromBuffer(index) {
|
|
92
|
+
return this.dataBuffer[0] + index * this.delta;
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/constant/int32ConstVector.js
|
|
97
|
+
var Int32ConstVector = class extends Vector {
|
|
98
|
+
constructor(name, value, sizeOrNullabilityBuffer, isSigned) {
|
|
99
|
+
super(name, isSigned ? Int32Array.of(value) : Uint32Array.of(value), sizeOrNullabilityBuffer);
|
|
100
|
+
}
|
|
101
|
+
getValueFromBuffer(_index) {
|
|
102
|
+
return this.dataBuffer[0];
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/featureTable.js
|
|
107
|
+
var FeatureTable = class {
|
|
108
|
+
constructor(_name, _geometryVector, _idVector, _propertyVectors, _extent = 4096) {
|
|
109
|
+
this._name = _name;
|
|
110
|
+
this._geometryVector = _geometryVector;
|
|
111
|
+
this._idVector = _idVector;
|
|
112
|
+
this._propertyVectors = _propertyVectors;
|
|
113
|
+
this._extent = _extent;
|
|
114
|
+
}
|
|
115
|
+
get name() {
|
|
116
|
+
return this._name;
|
|
117
|
+
}
|
|
118
|
+
get idVector() {
|
|
119
|
+
return this._idVector;
|
|
120
|
+
}
|
|
121
|
+
get geometryVector() {
|
|
122
|
+
return this._geometryVector;
|
|
123
|
+
}
|
|
124
|
+
get propertyVectors() {
|
|
125
|
+
return this._propertyVectors;
|
|
126
|
+
}
|
|
127
|
+
getPropertyVector(name) {
|
|
128
|
+
if (!this.propertyVectorsMap) {
|
|
129
|
+
this.propertyVectorsMap = new Map(this._propertyVectors.map((vector) => [vector.name, vector]));
|
|
130
|
+
}
|
|
131
|
+
return this.propertyVectorsMap.get(name);
|
|
132
|
+
}
|
|
133
|
+
get numFeatures() {
|
|
134
|
+
return this.geometryVector.numGeometries;
|
|
135
|
+
}
|
|
136
|
+
get extent() {
|
|
137
|
+
return this._extent;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Returns all features as an array
|
|
141
|
+
*/
|
|
142
|
+
getFeatures() {
|
|
143
|
+
const features = [];
|
|
144
|
+
const geometries = this.geometryVector.getGeometries();
|
|
145
|
+
for (let i = 0; i < this.numFeatures; i++) {
|
|
146
|
+
let id;
|
|
147
|
+
if (this.idVector) {
|
|
148
|
+
const idValue = this.idVector.getValue(i);
|
|
149
|
+
id = this.containsMaxSafeIntegerValues(this.idVector) && idValue !== null ? Number(idValue) : idValue;
|
|
150
|
+
}
|
|
151
|
+
const geometry = {
|
|
152
|
+
coordinates: geometries[i],
|
|
153
|
+
type: this.geometryVector.geometryType(i)
|
|
154
|
+
};
|
|
155
|
+
const properties = {};
|
|
156
|
+
for (const propertyColumn of this.propertyVectors) {
|
|
157
|
+
if (!propertyColumn)
|
|
158
|
+
continue;
|
|
159
|
+
const columnName = propertyColumn.name;
|
|
160
|
+
const propertyValue = propertyColumn.getValue(i);
|
|
161
|
+
if (propertyValue !== null) {
|
|
162
|
+
properties[columnName] = propertyValue;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
features.push({ id, geometry, properties });
|
|
166
|
+
}
|
|
167
|
+
return features;
|
|
168
|
+
}
|
|
169
|
+
containsMaxSafeIntegerValues(idVector) {
|
|
170
|
+
return idVector instanceof Int32FlatVector || idVector instanceof Int32ConstVector || idVector instanceof Int32SequenceVector || idVector instanceof DoubleFlatVector;
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
// ../../node_modules/@maplibre/mlt/dist/metadata/tileset/tilesetMetadata.js
|
|
175
|
+
var ColumnScope = {
|
|
176
|
+
FEATURE: 0,
|
|
177
|
+
VERTEX: 1
|
|
178
|
+
};
|
|
179
|
+
var ScalarType = {
|
|
180
|
+
BOOLEAN: 0,
|
|
181
|
+
INT_8: 1,
|
|
182
|
+
UINT_8: 2,
|
|
183
|
+
INT_32: 3,
|
|
184
|
+
UINT_32: 4,
|
|
185
|
+
INT_64: 5,
|
|
186
|
+
UINT_64: 6,
|
|
187
|
+
FLOAT: 7,
|
|
188
|
+
DOUBLE: 8,
|
|
189
|
+
STRING: 9
|
|
190
|
+
};
|
|
191
|
+
var ComplexType = {
|
|
192
|
+
GEOMETRY: 0,
|
|
193
|
+
STRUCT: 1
|
|
194
|
+
};
|
|
195
|
+
var LogicalScalarType = {
|
|
196
|
+
ID: 0
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
// ../../node_modules/@maplibre/mlt/dist/decoding/intWrapper.js
|
|
200
|
+
var IntWrapper = class {
|
|
201
|
+
constructor(value) {
|
|
202
|
+
this.value = value;
|
|
203
|
+
}
|
|
204
|
+
get() {
|
|
205
|
+
return this.value;
|
|
206
|
+
}
|
|
207
|
+
set(v) {
|
|
208
|
+
this.value = v;
|
|
209
|
+
}
|
|
210
|
+
increment() {
|
|
211
|
+
return this.value++;
|
|
212
|
+
}
|
|
213
|
+
add(v) {
|
|
214
|
+
this.value += v;
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
// ../../node_modules/@maplibre/mlt/dist/metadata/tile/logicalLevelTechnique.js
|
|
219
|
+
var LogicalLevelTechnique;
|
|
220
|
+
(function(LogicalLevelTechnique2) {
|
|
221
|
+
LogicalLevelTechnique2["NONE"] = "NONE";
|
|
222
|
+
LogicalLevelTechnique2["DELTA"] = "DELTA";
|
|
223
|
+
LogicalLevelTechnique2["COMPONENTWISE_DELTA"] = "COMPONENTWISE_DELTA";
|
|
224
|
+
LogicalLevelTechnique2["RLE"] = "RLE";
|
|
225
|
+
LogicalLevelTechnique2["MORTON"] = "MORTON";
|
|
226
|
+
LogicalLevelTechnique2["PDE"] = "PDE";
|
|
227
|
+
})(LogicalLevelTechnique || (LogicalLevelTechnique = {}));
|
|
228
|
+
|
|
229
|
+
// ../../node_modules/@maplibre/mlt/dist/metadata/tile/physicalLevelTechnique.js
|
|
230
|
+
var PhysicalLevelTechnique;
|
|
231
|
+
(function(PhysicalLevelTechnique2) {
|
|
232
|
+
PhysicalLevelTechnique2["NONE"] = "NONE";
|
|
233
|
+
PhysicalLevelTechnique2["FAST_PFOR"] = "FAST_PFOR";
|
|
234
|
+
PhysicalLevelTechnique2["VARINT"] = "VARINT";
|
|
235
|
+
PhysicalLevelTechnique2["ALP"] = "ALP";
|
|
236
|
+
})(PhysicalLevelTechnique || (PhysicalLevelTechnique = {}));
|
|
237
|
+
|
|
238
|
+
// ../../node_modules/@maplibre/mlt/dist/decoding/fastPforShared.js
|
|
239
|
+
var masks = new Uint32Array(33);
|
|
240
|
+
masks[0] = 0;
|
|
241
|
+
for (let bitWidth = 1; bitWidth <= 32; bitWidth++) {
|
|
242
|
+
masks[bitWidth] = bitWidth === 32 ? 4294967295 : 4294967295 >>> 32 - bitWidth;
|
|
243
|
+
}
|
|
244
|
+
var MASKS = masks;
|
|
245
|
+
var DEFAULT_PAGE_SIZE = 65536;
|
|
246
|
+
var BLOCK_SIZE = 256;
|
|
247
|
+
function greatestMultiple(value, factor) {
|
|
248
|
+
return value - value % factor;
|
|
249
|
+
}
|
|
250
|
+
function roundUpToMultipleOf32(value) {
|
|
251
|
+
return greatestMultiple(value + 31, 32);
|
|
252
|
+
}
|
|
253
|
+
function normalizePageSize(pageSize) {
|
|
254
|
+
if (!Number.isFinite(pageSize) || pageSize <= 0)
|
|
255
|
+
return DEFAULT_PAGE_SIZE;
|
|
256
|
+
const aligned = greatestMultiple(Math.floor(pageSize), BLOCK_SIZE);
|
|
257
|
+
return aligned === 0 ? BLOCK_SIZE : aligned;
|
|
258
|
+
}
|
|
259
|
+
function bswap32(value) {
|
|
260
|
+
const x = value >>> 0;
|
|
261
|
+
return ((x & 255) << 24 | (x & 65280) << 8 | x >>> 8 & 65280 | x >>> 24 & 255) >>> 0;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
// ../../node_modules/@maplibre/mlt/dist/decoding/fastPforUnpack.js
|
|
265
|
+
function fastUnpack32_2(inValues, inPos, out, outPos) {
|
|
266
|
+
let op = outPos;
|
|
267
|
+
const in0 = inValues[inPos] >>> 0;
|
|
268
|
+
const in1 = inValues[inPos + 1] >>> 0;
|
|
269
|
+
out[op++] = in0 >>> 0 & 3;
|
|
270
|
+
out[op++] = in0 >>> 2 & 3;
|
|
271
|
+
out[op++] = in0 >>> 4 & 3;
|
|
272
|
+
out[op++] = in0 >>> 6 & 3;
|
|
273
|
+
out[op++] = in0 >>> 8 & 3;
|
|
274
|
+
out[op++] = in0 >>> 10 & 3;
|
|
275
|
+
out[op++] = in0 >>> 12 & 3;
|
|
276
|
+
out[op++] = in0 >>> 14 & 3;
|
|
277
|
+
out[op++] = in0 >>> 16 & 3;
|
|
278
|
+
out[op++] = in0 >>> 18 & 3;
|
|
279
|
+
out[op++] = in0 >>> 20 & 3;
|
|
280
|
+
out[op++] = in0 >>> 22 & 3;
|
|
281
|
+
out[op++] = in0 >>> 24 & 3;
|
|
282
|
+
out[op++] = in0 >>> 26 & 3;
|
|
283
|
+
out[op++] = in0 >>> 28 & 3;
|
|
284
|
+
out[op++] = in0 >>> 30 & 3;
|
|
285
|
+
out[op++] = in1 >>> 0 & 3;
|
|
286
|
+
out[op++] = in1 >>> 2 & 3;
|
|
287
|
+
out[op++] = in1 >>> 4 & 3;
|
|
288
|
+
out[op++] = in1 >>> 6 & 3;
|
|
289
|
+
out[op++] = in1 >>> 8 & 3;
|
|
290
|
+
out[op++] = in1 >>> 10 & 3;
|
|
291
|
+
out[op++] = in1 >>> 12 & 3;
|
|
292
|
+
out[op++] = in1 >>> 14 & 3;
|
|
293
|
+
out[op++] = in1 >>> 16 & 3;
|
|
294
|
+
out[op++] = in1 >>> 18 & 3;
|
|
295
|
+
out[op++] = in1 >>> 20 & 3;
|
|
296
|
+
out[op++] = in1 >>> 22 & 3;
|
|
297
|
+
out[op++] = in1 >>> 24 & 3;
|
|
298
|
+
out[op++] = in1 >>> 26 & 3;
|
|
299
|
+
out[op++] = in1 >>> 28 & 3;
|
|
300
|
+
out[op] = in1 >>> 30 & 3;
|
|
301
|
+
}
|
|
302
|
+
function fastUnpack32_3(inValues, inPos, out, outPos) {
|
|
303
|
+
let op = outPos;
|
|
304
|
+
const in0 = inValues[inPos] >>> 0;
|
|
305
|
+
const in1 = inValues[inPos + 1] >>> 0;
|
|
306
|
+
const in2 = inValues[inPos + 2] >>> 0;
|
|
307
|
+
out[op++] = in0 >>> 0 & 7;
|
|
308
|
+
out[op++] = in0 >>> 3 & 7;
|
|
309
|
+
out[op++] = in0 >>> 6 & 7;
|
|
310
|
+
out[op++] = in0 >>> 9 & 7;
|
|
311
|
+
out[op++] = in0 >>> 12 & 7;
|
|
312
|
+
out[op++] = in0 >>> 15 & 7;
|
|
313
|
+
out[op++] = in0 >>> 18 & 7;
|
|
314
|
+
out[op++] = in0 >>> 21 & 7;
|
|
315
|
+
out[op++] = in0 >>> 24 & 7;
|
|
316
|
+
out[op++] = in0 >>> 27 & 7;
|
|
317
|
+
out[op++] = (in0 >>> 30 | (in1 & 1) << 2) & 7;
|
|
318
|
+
out[op++] = in1 >>> 1 & 7;
|
|
319
|
+
out[op++] = in1 >>> 4 & 7;
|
|
320
|
+
out[op++] = in1 >>> 7 & 7;
|
|
321
|
+
out[op++] = in1 >>> 10 & 7;
|
|
322
|
+
out[op++] = in1 >>> 13 & 7;
|
|
323
|
+
out[op++] = in1 >>> 16 & 7;
|
|
324
|
+
out[op++] = in1 >>> 19 & 7;
|
|
325
|
+
out[op++] = in1 >>> 22 & 7;
|
|
326
|
+
out[op++] = in1 >>> 25 & 7;
|
|
327
|
+
out[op++] = in1 >>> 28 & 7;
|
|
328
|
+
out[op++] = (in1 >>> 31 | (in2 & 3) << 1) & 7;
|
|
329
|
+
out[op++] = in2 >>> 2 & 7;
|
|
330
|
+
out[op++] = in2 >>> 5 & 7;
|
|
331
|
+
out[op++] = in2 >>> 8 & 7;
|
|
332
|
+
out[op++] = in2 >>> 11 & 7;
|
|
333
|
+
out[op++] = in2 >>> 14 & 7;
|
|
334
|
+
out[op++] = in2 >>> 17 & 7;
|
|
335
|
+
out[op++] = in2 >>> 20 & 7;
|
|
336
|
+
out[op++] = in2 >>> 23 & 7;
|
|
337
|
+
out[op++] = in2 >>> 26 & 7;
|
|
338
|
+
out[op] = in2 >>> 29 & 7;
|
|
339
|
+
}
|
|
340
|
+
function fastUnpack32_4(inValues, inPos, out, outPos) {
|
|
341
|
+
let op = outPos;
|
|
342
|
+
const in0 = inValues[inPos] >>> 0;
|
|
343
|
+
const in1 = inValues[inPos + 1] >>> 0;
|
|
344
|
+
const in2 = inValues[inPos + 2] >>> 0;
|
|
345
|
+
const in3 = inValues[inPos + 3] >>> 0;
|
|
346
|
+
out[op++] = in0 >>> 0 & 15;
|
|
347
|
+
out[op++] = in0 >>> 4 & 15;
|
|
348
|
+
out[op++] = in0 >>> 8 & 15;
|
|
349
|
+
out[op++] = in0 >>> 12 & 15;
|
|
350
|
+
out[op++] = in0 >>> 16 & 15;
|
|
351
|
+
out[op++] = in0 >>> 20 & 15;
|
|
352
|
+
out[op++] = in0 >>> 24 & 15;
|
|
353
|
+
out[op++] = in0 >>> 28 & 15;
|
|
354
|
+
out[op++] = in1 >>> 0 & 15;
|
|
355
|
+
out[op++] = in1 >>> 4 & 15;
|
|
356
|
+
out[op++] = in1 >>> 8 & 15;
|
|
357
|
+
out[op++] = in1 >>> 12 & 15;
|
|
358
|
+
out[op++] = in1 >>> 16 & 15;
|
|
359
|
+
out[op++] = in1 >>> 20 & 15;
|
|
360
|
+
out[op++] = in1 >>> 24 & 15;
|
|
361
|
+
out[op++] = in1 >>> 28 & 15;
|
|
362
|
+
out[op++] = in2 >>> 0 & 15;
|
|
363
|
+
out[op++] = in2 >>> 4 & 15;
|
|
364
|
+
out[op++] = in2 >>> 8 & 15;
|
|
365
|
+
out[op++] = in2 >>> 12 & 15;
|
|
366
|
+
out[op++] = in2 >>> 16 & 15;
|
|
367
|
+
out[op++] = in2 >>> 20 & 15;
|
|
368
|
+
out[op++] = in2 >>> 24 & 15;
|
|
369
|
+
out[op++] = in2 >>> 28 & 15;
|
|
370
|
+
out[op++] = in3 >>> 0 & 15;
|
|
371
|
+
out[op++] = in3 >>> 4 & 15;
|
|
372
|
+
out[op++] = in3 >>> 8 & 15;
|
|
373
|
+
out[op++] = in3 >>> 12 & 15;
|
|
374
|
+
out[op++] = in3 >>> 16 & 15;
|
|
375
|
+
out[op++] = in3 >>> 20 & 15;
|
|
376
|
+
out[op++] = in3 >>> 24 & 15;
|
|
377
|
+
out[op] = in3 >>> 28 & 15;
|
|
378
|
+
}
|
|
379
|
+
function fastUnpack32_5(inValues, inPos, out, outPos) {
|
|
380
|
+
let op = outPos;
|
|
381
|
+
const in0 = inValues[inPos] >>> 0;
|
|
382
|
+
const in1 = inValues[inPos + 1] >>> 0;
|
|
383
|
+
const in2 = inValues[inPos + 2] >>> 0;
|
|
384
|
+
const in3 = inValues[inPos + 3] >>> 0;
|
|
385
|
+
const in4 = inValues[inPos + 4] >>> 0;
|
|
386
|
+
out[op++] = in0 >>> 0 & 31;
|
|
387
|
+
out[op++] = in0 >>> 5 & 31;
|
|
388
|
+
out[op++] = in0 >>> 10 & 31;
|
|
389
|
+
out[op++] = in0 >>> 15 & 31;
|
|
390
|
+
out[op++] = in0 >>> 20 & 31;
|
|
391
|
+
out[op++] = in0 >>> 25 & 31;
|
|
392
|
+
out[op++] = (in0 >>> 30 | (in1 & 7) << 2) & 31;
|
|
393
|
+
out[op++] = in1 >>> 3 & 31;
|
|
394
|
+
out[op++] = in1 >>> 8 & 31;
|
|
395
|
+
out[op++] = in1 >>> 13 & 31;
|
|
396
|
+
out[op++] = in1 >>> 18 & 31;
|
|
397
|
+
out[op++] = in1 >>> 23 & 31;
|
|
398
|
+
out[op++] = (in1 >>> 28 | (in2 & 1) << 4) & 31;
|
|
399
|
+
out[op++] = in2 >>> 1 & 31;
|
|
400
|
+
out[op++] = in2 >>> 6 & 31;
|
|
401
|
+
out[op++] = in2 >>> 11 & 31;
|
|
402
|
+
out[op++] = in2 >>> 16 & 31;
|
|
403
|
+
out[op++] = in2 >>> 21 & 31;
|
|
404
|
+
out[op++] = in2 >>> 26 & 31;
|
|
405
|
+
out[op++] = (in2 >>> 31 | (in3 & 15) << 1) & 31;
|
|
406
|
+
out[op++] = in3 >>> 4 & 31;
|
|
407
|
+
out[op++] = in3 >>> 9 & 31;
|
|
408
|
+
out[op++] = in3 >>> 14 & 31;
|
|
409
|
+
out[op++] = in3 >>> 19 & 31;
|
|
410
|
+
out[op++] = in3 >>> 24 & 31;
|
|
411
|
+
out[op++] = (in3 >>> 29 | (in4 & 3) << 3) & 31;
|
|
412
|
+
out[op++] = in4 >>> 2 & 31;
|
|
413
|
+
out[op++] = in4 >>> 7 & 31;
|
|
414
|
+
out[op++] = in4 >>> 12 & 31;
|
|
415
|
+
out[op++] = in4 >>> 17 & 31;
|
|
416
|
+
out[op++] = in4 >>> 22 & 31;
|
|
417
|
+
out[op] = in4 >>> 27 & 31;
|
|
418
|
+
}
|
|
419
|
+
function fastUnpack32_6(inValues, inPos, out, outPos) {
|
|
420
|
+
let op = outPos;
|
|
421
|
+
const in0 = inValues[inPos] >>> 0;
|
|
422
|
+
const in1 = inValues[inPos + 1] >>> 0;
|
|
423
|
+
const in2 = inValues[inPos + 2] >>> 0;
|
|
424
|
+
const in3 = inValues[inPos + 3] >>> 0;
|
|
425
|
+
const in4 = inValues[inPos + 4] >>> 0;
|
|
426
|
+
const in5 = inValues[inPos + 5] >>> 0;
|
|
427
|
+
out[op++] = in0 >>> 0 & 63;
|
|
428
|
+
out[op++] = in0 >>> 6 & 63;
|
|
429
|
+
out[op++] = in0 >>> 12 & 63;
|
|
430
|
+
out[op++] = in0 >>> 18 & 63;
|
|
431
|
+
out[op++] = in0 >>> 24 & 63;
|
|
432
|
+
out[op++] = (in0 >>> 30 | (in1 & 15) << 2) & 63;
|
|
433
|
+
out[op++] = in1 >>> 4 & 63;
|
|
434
|
+
out[op++] = in1 >>> 10 & 63;
|
|
435
|
+
out[op++] = in1 >>> 16 & 63;
|
|
436
|
+
out[op++] = in1 >>> 22 & 63;
|
|
437
|
+
out[op++] = (in1 >>> 28 | (in2 & 3) << 4) & 63;
|
|
438
|
+
out[op++] = in2 >>> 2 & 63;
|
|
439
|
+
out[op++] = in2 >>> 8 & 63;
|
|
440
|
+
out[op++] = in2 >>> 14 & 63;
|
|
441
|
+
out[op++] = in2 >>> 20 & 63;
|
|
442
|
+
out[op++] = in2 >>> 26 & 63;
|
|
443
|
+
out[op++] = in3 >>> 0 & 63;
|
|
444
|
+
out[op++] = in3 >>> 6 & 63;
|
|
445
|
+
out[op++] = in3 >>> 12 & 63;
|
|
446
|
+
out[op++] = in3 >>> 18 & 63;
|
|
447
|
+
out[op++] = in3 >>> 24 & 63;
|
|
448
|
+
out[op++] = (in3 >>> 30 | (in4 & 15) << 2) & 63;
|
|
449
|
+
out[op++] = in4 >>> 4 & 63;
|
|
450
|
+
out[op++] = in4 >>> 10 & 63;
|
|
451
|
+
out[op++] = in4 >>> 16 & 63;
|
|
452
|
+
out[op++] = in4 >>> 22 & 63;
|
|
453
|
+
out[op++] = (in4 >>> 28 | (in5 & 3) << 4) & 63;
|
|
454
|
+
out[op++] = in5 >>> 2 & 63;
|
|
455
|
+
out[op++] = in5 >>> 8 & 63;
|
|
456
|
+
out[op++] = in5 >>> 14 & 63;
|
|
457
|
+
out[op++] = in5 >>> 20 & 63;
|
|
458
|
+
out[op] = in5 >>> 26 & 63;
|
|
459
|
+
}
|
|
460
|
+
function fastUnpack32_7(inValues, inPos, out, outPos) {
|
|
461
|
+
let op = outPos;
|
|
462
|
+
const in0 = inValues[inPos] >>> 0;
|
|
463
|
+
const in1 = inValues[inPos + 1] >>> 0;
|
|
464
|
+
const in2 = inValues[inPos + 2] >>> 0;
|
|
465
|
+
const in3 = inValues[inPos + 3] >>> 0;
|
|
466
|
+
const in4 = inValues[inPos + 4] >>> 0;
|
|
467
|
+
const in5 = inValues[inPos + 5] >>> 0;
|
|
468
|
+
const in6 = inValues[inPos + 6] >>> 0;
|
|
469
|
+
out[op++] = in0 >>> 0 & 127;
|
|
470
|
+
out[op++] = in0 >>> 7 & 127;
|
|
471
|
+
out[op++] = in0 >>> 14 & 127;
|
|
472
|
+
out[op++] = in0 >>> 21 & 127;
|
|
473
|
+
out[op++] = (in0 >>> 28 | (in1 & 7) << 4) & 127;
|
|
474
|
+
out[op++] = in1 >>> 3 & 127;
|
|
475
|
+
out[op++] = in1 >>> 10 & 127;
|
|
476
|
+
out[op++] = in1 >>> 17 & 127;
|
|
477
|
+
out[op++] = in1 >>> 24 & 127;
|
|
478
|
+
out[op++] = (in1 >>> 31 | (in2 & 63) << 1) & 127;
|
|
479
|
+
out[op++] = in2 >>> 6 & 127;
|
|
480
|
+
out[op++] = in2 >>> 13 & 127;
|
|
481
|
+
out[op++] = in2 >>> 20 & 127;
|
|
482
|
+
out[op++] = (in2 >>> 27 | (in3 & 3) << 5) & 127;
|
|
483
|
+
out[op++] = in3 >>> 2 & 127;
|
|
484
|
+
out[op++] = in3 >>> 9 & 127;
|
|
485
|
+
out[op++] = in3 >>> 16 & 127;
|
|
486
|
+
out[op++] = in3 >>> 23 & 127;
|
|
487
|
+
out[op++] = (in3 >>> 30 | (in4 & 31) << 2) & 127;
|
|
488
|
+
out[op++] = in4 >>> 5 & 127;
|
|
489
|
+
out[op++] = in4 >>> 12 & 127;
|
|
490
|
+
out[op++] = in4 >>> 19 & 127;
|
|
491
|
+
out[op++] = (in4 >>> 26 | (in5 & 1) << 6) & 127;
|
|
492
|
+
out[op++] = in5 >>> 1 & 127;
|
|
493
|
+
out[op++] = in5 >>> 8 & 127;
|
|
494
|
+
out[op++] = in5 >>> 15 & 127;
|
|
495
|
+
out[op++] = in5 >>> 22 & 127;
|
|
496
|
+
out[op++] = (in5 >>> 29 | (in6 & 15) << 3) & 127;
|
|
497
|
+
out[op++] = in6 >>> 4 & 127;
|
|
498
|
+
out[op++] = in6 >>> 11 & 127;
|
|
499
|
+
out[op++] = in6 >>> 18 & 127;
|
|
500
|
+
out[op] = in6 >>> 25 & 127;
|
|
501
|
+
}
|
|
502
|
+
function fastUnpack32_8(inValues, inPos, out, outPos) {
|
|
503
|
+
let op = outPos;
|
|
504
|
+
const in0 = inValues[inPos] >>> 0;
|
|
505
|
+
const in1 = inValues[inPos + 1] >>> 0;
|
|
506
|
+
const in2 = inValues[inPos + 2] >>> 0;
|
|
507
|
+
const in3 = inValues[inPos + 3] >>> 0;
|
|
508
|
+
const in4 = inValues[inPos + 4] >>> 0;
|
|
509
|
+
const in5 = inValues[inPos + 5] >>> 0;
|
|
510
|
+
const in6 = inValues[inPos + 6] >>> 0;
|
|
511
|
+
const in7 = inValues[inPos + 7] >>> 0;
|
|
512
|
+
out[op++] = in0 >>> 0 & 255;
|
|
513
|
+
out[op++] = in0 >>> 8 & 255;
|
|
514
|
+
out[op++] = in0 >>> 16 & 255;
|
|
515
|
+
out[op++] = in0 >>> 24 & 255;
|
|
516
|
+
out[op++] = in1 >>> 0 & 255;
|
|
517
|
+
out[op++] = in1 >>> 8 & 255;
|
|
518
|
+
out[op++] = in1 >>> 16 & 255;
|
|
519
|
+
out[op++] = in1 >>> 24 & 255;
|
|
520
|
+
out[op++] = in2 >>> 0 & 255;
|
|
521
|
+
out[op++] = in2 >>> 8 & 255;
|
|
522
|
+
out[op++] = in2 >>> 16 & 255;
|
|
523
|
+
out[op++] = in2 >>> 24 & 255;
|
|
524
|
+
out[op++] = in3 >>> 0 & 255;
|
|
525
|
+
out[op++] = in3 >>> 8 & 255;
|
|
526
|
+
out[op++] = in3 >>> 16 & 255;
|
|
527
|
+
out[op++] = in3 >>> 24 & 255;
|
|
528
|
+
out[op++] = in4 >>> 0 & 255;
|
|
529
|
+
out[op++] = in4 >>> 8 & 255;
|
|
530
|
+
out[op++] = in4 >>> 16 & 255;
|
|
531
|
+
out[op++] = in4 >>> 24 & 255;
|
|
532
|
+
out[op++] = in5 >>> 0 & 255;
|
|
533
|
+
out[op++] = in5 >>> 8 & 255;
|
|
534
|
+
out[op++] = in5 >>> 16 & 255;
|
|
535
|
+
out[op++] = in5 >>> 24 & 255;
|
|
536
|
+
out[op++] = in6 >>> 0 & 255;
|
|
537
|
+
out[op++] = in6 >>> 8 & 255;
|
|
538
|
+
out[op++] = in6 >>> 16 & 255;
|
|
539
|
+
out[op++] = in6 >>> 24 & 255;
|
|
540
|
+
out[op++] = in7 >>> 0 & 255;
|
|
541
|
+
out[op++] = in7 >>> 8 & 255;
|
|
542
|
+
out[op++] = in7 >>> 16 & 255;
|
|
543
|
+
out[op] = in7 >>> 24 & 255;
|
|
544
|
+
}
|
|
545
|
+
function fastUnpack32_9(inValues, inPos, out, outPos) {
|
|
546
|
+
let op = outPos;
|
|
547
|
+
const in0 = inValues[inPos] >>> 0;
|
|
548
|
+
const in1 = inValues[inPos + 1] >>> 0;
|
|
549
|
+
const in2 = inValues[inPos + 2] >>> 0;
|
|
550
|
+
const in3 = inValues[inPos + 3] >>> 0;
|
|
551
|
+
const in4 = inValues[inPos + 4] >>> 0;
|
|
552
|
+
const in5 = inValues[inPos + 5] >>> 0;
|
|
553
|
+
const in6 = inValues[inPos + 6] >>> 0;
|
|
554
|
+
const in7 = inValues[inPos + 7] >>> 0;
|
|
555
|
+
const in8 = inValues[inPos + 8] >>> 0;
|
|
556
|
+
out[op++] = in0 >>> 0 & 511;
|
|
557
|
+
out[op++] = in0 >>> 9 & 511;
|
|
558
|
+
out[op++] = in0 >>> 18 & 511;
|
|
559
|
+
out[op++] = (in0 >>> 27 | (in1 & 15) << 5) & 511;
|
|
560
|
+
out[op++] = in1 >>> 4 & 511;
|
|
561
|
+
out[op++] = in1 >>> 13 & 511;
|
|
562
|
+
out[op++] = in1 >>> 22 & 511;
|
|
563
|
+
out[op++] = (in1 >>> 31 | (in2 & 255) << 1) & 511;
|
|
564
|
+
out[op++] = in2 >>> 8 & 511;
|
|
565
|
+
out[op++] = in2 >>> 17 & 511;
|
|
566
|
+
out[op++] = (in2 >>> 26 | (in3 & 7) << 6) & 511;
|
|
567
|
+
out[op++] = in3 >>> 3 & 511;
|
|
568
|
+
out[op++] = in3 >>> 12 & 511;
|
|
569
|
+
out[op++] = in3 >>> 21 & 511;
|
|
570
|
+
out[op++] = (in3 >>> 30 | (in4 & 127) << 2) & 511;
|
|
571
|
+
out[op++] = in4 >>> 7 & 511;
|
|
572
|
+
out[op++] = in4 >>> 16 & 511;
|
|
573
|
+
out[op++] = (in4 >>> 25 | (in5 & 3) << 7) & 511;
|
|
574
|
+
out[op++] = in5 >>> 2 & 511;
|
|
575
|
+
out[op++] = in5 >>> 11 & 511;
|
|
576
|
+
out[op++] = in5 >>> 20 & 511;
|
|
577
|
+
out[op++] = (in5 >>> 29 | (in6 & 63) << 3) & 511;
|
|
578
|
+
out[op++] = in6 >>> 6 & 511;
|
|
579
|
+
out[op++] = in6 >>> 15 & 511;
|
|
580
|
+
out[op++] = (in6 >>> 24 | (in7 & 1) << 8) & 511;
|
|
581
|
+
out[op++] = in7 >>> 1 & 511;
|
|
582
|
+
out[op++] = in7 >>> 10 & 511;
|
|
583
|
+
out[op++] = in7 >>> 19 & 511;
|
|
584
|
+
out[op++] = (in7 >>> 28 | (in8 & 31) << 4) & 511;
|
|
585
|
+
out[op++] = in8 >>> 5 & 511;
|
|
586
|
+
out[op++] = in8 >>> 14 & 511;
|
|
587
|
+
out[op] = in8 >>> 23 & 511;
|
|
588
|
+
}
|
|
589
|
+
function fastUnpack32_10(inValues, inPos, out, outPos) {
|
|
590
|
+
let op = outPos;
|
|
591
|
+
const in0 = inValues[inPos] >>> 0;
|
|
592
|
+
const in1 = inValues[inPos + 1] >>> 0;
|
|
593
|
+
const in2 = inValues[inPos + 2] >>> 0;
|
|
594
|
+
const in3 = inValues[inPos + 3] >>> 0;
|
|
595
|
+
const in4 = inValues[inPos + 4] >>> 0;
|
|
596
|
+
const in5 = inValues[inPos + 5] >>> 0;
|
|
597
|
+
const in6 = inValues[inPos + 6] >>> 0;
|
|
598
|
+
const in7 = inValues[inPos + 7] >>> 0;
|
|
599
|
+
const in8 = inValues[inPos + 8] >>> 0;
|
|
600
|
+
const in9 = inValues[inPos + 9] >>> 0;
|
|
601
|
+
out[op++] = in0 >>> 0 & 1023;
|
|
602
|
+
out[op++] = in0 >>> 10 & 1023;
|
|
603
|
+
out[op++] = in0 >>> 20 & 1023;
|
|
604
|
+
out[op++] = (in0 >>> 30 | (in1 & 255) << 2) & 1023;
|
|
605
|
+
out[op++] = in1 >>> 8 & 1023;
|
|
606
|
+
out[op++] = in1 >>> 18 & 1023;
|
|
607
|
+
out[op++] = (in1 >>> 28 | (in2 & 63) << 4) & 1023;
|
|
608
|
+
out[op++] = in2 >>> 6 & 1023;
|
|
609
|
+
out[op++] = in2 >>> 16 & 1023;
|
|
610
|
+
out[op++] = (in2 >>> 26 | (in3 & 15) << 6) & 1023;
|
|
611
|
+
out[op++] = in3 >>> 4 & 1023;
|
|
612
|
+
out[op++] = in3 >>> 14 & 1023;
|
|
613
|
+
out[op++] = (in3 >>> 24 | (in4 & 3) << 8) & 1023;
|
|
614
|
+
out[op++] = in4 >>> 2 & 1023;
|
|
615
|
+
out[op++] = in4 >>> 12 & 1023;
|
|
616
|
+
out[op++] = in4 >>> 22 & 1023;
|
|
617
|
+
out[op++] = in5 >>> 0 & 1023;
|
|
618
|
+
out[op++] = in5 >>> 10 & 1023;
|
|
619
|
+
out[op++] = in5 >>> 20 & 1023;
|
|
620
|
+
out[op++] = (in5 >>> 30 | (in6 & 255) << 2) & 1023;
|
|
621
|
+
out[op++] = in6 >>> 8 & 1023;
|
|
622
|
+
out[op++] = in6 >>> 18 & 1023;
|
|
623
|
+
out[op++] = (in6 >>> 28 | (in7 & 63) << 4) & 1023;
|
|
624
|
+
out[op++] = in7 >>> 6 & 1023;
|
|
625
|
+
out[op++] = in7 >>> 16 & 1023;
|
|
626
|
+
out[op++] = (in7 >>> 26 | (in8 & 15) << 6) & 1023;
|
|
627
|
+
out[op++] = in8 >>> 4 & 1023;
|
|
628
|
+
out[op++] = in8 >>> 14 & 1023;
|
|
629
|
+
out[op++] = (in8 >>> 24 | (in9 & 3) << 8) & 1023;
|
|
630
|
+
out[op++] = in9 >>> 2 & 1023;
|
|
631
|
+
out[op++] = in9 >>> 12 & 1023;
|
|
632
|
+
out[op] = in9 >>> 22 & 1023;
|
|
633
|
+
}
|
|
634
|
+
function fastUnpack32_11(inValues, inPos, out, outPos) {
|
|
635
|
+
let op = outPos;
|
|
636
|
+
const in0 = inValues[inPos] >>> 0;
|
|
637
|
+
const in1 = inValues[inPos + 1] >>> 0;
|
|
638
|
+
const in2 = inValues[inPos + 2] >>> 0;
|
|
639
|
+
const in3 = inValues[inPos + 3] >>> 0;
|
|
640
|
+
const in4 = inValues[inPos + 4] >>> 0;
|
|
641
|
+
const in5 = inValues[inPos + 5] >>> 0;
|
|
642
|
+
const in6 = inValues[inPos + 6] >>> 0;
|
|
643
|
+
const in7 = inValues[inPos + 7] >>> 0;
|
|
644
|
+
const in8 = inValues[inPos + 8] >>> 0;
|
|
645
|
+
const in9 = inValues[inPos + 9] >>> 0;
|
|
646
|
+
const in10 = inValues[inPos + 10] >>> 0;
|
|
647
|
+
out[op++] = in0 >>> 0 & 2047;
|
|
648
|
+
out[op++] = in0 >>> 11 & 2047;
|
|
649
|
+
out[op++] = (in0 >>> 22 | (in1 & 1) << 10) & 2047;
|
|
650
|
+
out[op++] = in1 >>> 1 & 2047;
|
|
651
|
+
out[op++] = in1 >>> 12 & 2047;
|
|
652
|
+
out[op++] = (in1 >>> 23 | (in2 & 3) << 9) & 2047;
|
|
653
|
+
out[op++] = in2 >>> 2 & 2047;
|
|
654
|
+
out[op++] = in2 >>> 13 & 2047;
|
|
655
|
+
out[op++] = (in2 >>> 24 | (in3 & 7) << 8) & 2047;
|
|
656
|
+
out[op++] = in3 >>> 3 & 2047;
|
|
657
|
+
out[op++] = in3 >>> 14 & 2047;
|
|
658
|
+
out[op++] = (in3 >>> 25 | (in4 & 15) << 7) & 2047;
|
|
659
|
+
out[op++] = in4 >>> 4 & 2047;
|
|
660
|
+
out[op++] = in4 >>> 15 & 2047;
|
|
661
|
+
out[op++] = (in4 >>> 26 | (in5 & 31) << 6) & 2047;
|
|
662
|
+
out[op++] = in5 >>> 5 & 2047;
|
|
663
|
+
out[op++] = in5 >>> 16 & 2047;
|
|
664
|
+
out[op++] = (in5 >>> 27 | (in6 & 63) << 5) & 2047;
|
|
665
|
+
out[op++] = in6 >>> 6 & 2047;
|
|
666
|
+
out[op++] = in6 >>> 17 & 2047;
|
|
667
|
+
out[op++] = (in6 >>> 28 | (in7 & 127) << 4) & 2047;
|
|
668
|
+
out[op++] = in7 >>> 7 & 2047;
|
|
669
|
+
out[op++] = in7 >>> 18 & 2047;
|
|
670
|
+
out[op++] = (in7 >>> 29 | (in8 & 255) << 3) & 2047;
|
|
671
|
+
out[op++] = in8 >>> 8 & 2047;
|
|
672
|
+
out[op++] = in8 >>> 19 & 2047;
|
|
673
|
+
out[op++] = (in8 >>> 30 | (in9 & 511) << 2) & 2047;
|
|
674
|
+
out[op++] = in9 >>> 9 & 2047;
|
|
675
|
+
out[op++] = in9 >>> 20 & 2047;
|
|
676
|
+
out[op++] = (in9 >>> 31 | (in10 & 1023) << 1) & 2047;
|
|
677
|
+
out[op++] = in10 >>> 10 & 2047;
|
|
678
|
+
out[op] = in10 >>> 21 & 2047;
|
|
679
|
+
}
|
|
680
|
+
function fastUnpack32_12(inValues, inPos, out, outPos) {
|
|
681
|
+
let op = outPos;
|
|
682
|
+
const in0 = inValues[inPos] >>> 0;
|
|
683
|
+
const in1 = inValues[inPos + 1] >>> 0;
|
|
684
|
+
const in2 = inValues[inPos + 2] >>> 0;
|
|
685
|
+
const in3 = inValues[inPos + 3] >>> 0;
|
|
686
|
+
const in4 = inValues[inPos + 4] >>> 0;
|
|
687
|
+
const in5 = inValues[inPos + 5] >>> 0;
|
|
688
|
+
const in6 = inValues[inPos + 6] >>> 0;
|
|
689
|
+
const in7 = inValues[inPos + 7] >>> 0;
|
|
690
|
+
const in8 = inValues[inPos + 8] >>> 0;
|
|
691
|
+
const in9 = inValues[inPos + 9] >>> 0;
|
|
692
|
+
const in10 = inValues[inPos + 10] >>> 0;
|
|
693
|
+
const in11 = inValues[inPos + 11] >>> 0;
|
|
694
|
+
out[op++] = in0 >>> 0 & 4095;
|
|
695
|
+
out[op++] = in0 >>> 12 & 4095;
|
|
696
|
+
out[op++] = (in0 >>> 24 | (in1 & 15) << 8) & 4095;
|
|
697
|
+
out[op++] = in1 >>> 4 & 4095;
|
|
698
|
+
out[op++] = in1 >>> 16 & 4095;
|
|
699
|
+
out[op++] = (in1 >>> 28 | (in2 & 255) << 4) & 4095;
|
|
700
|
+
out[op++] = in2 >>> 8 & 4095;
|
|
701
|
+
out[op++] = in2 >>> 20 & 4095;
|
|
702
|
+
out[op++] = in3 >>> 0 & 4095;
|
|
703
|
+
out[op++] = in3 >>> 12 & 4095;
|
|
704
|
+
out[op++] = (in3 >>> 24 | (in4 & 15) << 8) & 4095;
|
|
705
|
+
out[op++] = in4 >>> 4 & 4095;
|
|
706
|
+
out[op++] = in4 >>> 16 & 4095;
|
|
707
|
+
out[op++] = (in4 >>> 28 | (in5 & 255) << 4) & 4095;
|
|
708
|
+
out[op++] = in5 >>> 8 & 4095;
|
|
709
|
+
out[op++] = in5 >>> 20 & 4095;
|
|
710
|
+
out[op++] = in6 >>> 0 & 4095;
|
|
711
|
+
out[op++] = in6 >>> 12 & 4095;
|
|
712
|
+
out[op++] = (in6 >>> 24 | (in7 & 15) << 8) & 4095;
|
|
713
|
+
out[op++] = in7 >>> 4 & 4095;
|
|
714
|
+
out[op++] = in7 >>> 16 & 4095;
|
|
715
|
+
out[op++] = (in7 >>> 28 | (in8 & 255) << 4) & 4095;
|
|
716
|
+
out[op++] = in8 >>> 8 & 4095;
|
|
717
|
+
out[op++] = in8 >>> 20 & 4095;
|
|
718
|
+
out[op++] = in9 >>> 0 & 4095;
|
|
719
|
+
out[op++] = in9 >>> 12 & 4095;
|
|
720
|
+
out[op++] = (in9 >>> 24 | (in10 & 15) << 8) & 4095;
|
|
721
|
+
out[op++] = in10 >>> 4 & 4095;
|
|
722
|
+
out[op++] = in10 >>> 16 & 4095;
|
|
723
|
+
out[op++] = (in10 >>> 28 | (in11 & 255) << 4) & 4095;
|
|
724
|
+
out[op++] = in11 >>> 8 & 4095;
|
|
725
|
+
out[op] = in11 >>> 20 & 4095;
|
|
726
|
+
}
|
|
727
|
+
function fastUnpack32_16(inValues, inPos, out, outPos) {
|
|
728
|
+
let op = outPos;
|
|
729
|
+
const in0 = inValues[inPos] >>> 0;
|
|
730
|
+
const in1 = inValues[inPos + 1] >>> 0;
|
|
731
|
+
const in2 = inValues[inPos + 2] >>> 0;
|
|
732
|
+
const in3 = inValues[inPos + 3] >>> 0;
|
|
733
|
+
const in4 = inValues[inPos + 4] >>> 0;
|
|
734
|
+
const in5 = inValues[inPos + 5] >>> 0;
|
|
735
|
+
const in6 = inValues[inPos + 6] >>> 0;
|
|
736
|
+
const in7 = inValues[inPos + 7] >>> 0;
|
|
737
|
+
const in8 = inValues[inPos + 8] >>> 0;
|
|
738
|
+
const in9 = inValues[inPos + 9] >>> 0;
|
|
739
|
+
const in10 = inValues[inPos + 10] >>> 0;
|
|
740
|
+
const in11 = inValues[inPos + 11] >>> 0;
|
|
741
|
+
const in12 = inValues[inPos + 12] >>> 0;
|
|
742
|
+
const in13 = inValues[inPos + 13] >>> 0;
|
|
743
|
+
const in14 = inValues[inPos + 14] >>> 0;
|
|
744
|
+
const in15 = inValues[inPos + 15] >>> 0;
|
|
745
|
+
out[op++] = in0 >>> 0 & 65535;
|
|
746
|
+
out[op++] = in0 >>> 16 & 65535;
|
|
747
|
+
out[op++] = in1 >>> 0 & 65535;
|
|
748
|
+
out[op++] = in1 >>> 16 & 65535;
|
|
749
|
+
out[op++] = in2 >>> 0 & 65535;
|
|
750
|
+
out[op++] = in2 >>> 16 & 65535;
|
|
751
|
+
out[op++] = in3 >>> 0 & 65535;
|
|
752
|
+
out[op++] = in3 >>> 16 & 65535;
|
|
753
|
+
out[op++] = in4 >>> 0 & 65535;
|
|
754
|
+
out[op++] = in4 >>> 16 & 65535;
|
|
755
|
+
out[op++] = in5 >>> 0 & 65535;
|
|
756
|
+
out[op++] = in5 >>> 16 & 65535;
|
|
757
|
+
out[op++] = in6 >>> 0 & 65535;
|
|
758
|
+
out[op++] = in6 >>> 16 & 65535;
|
|
759
|
+
out[op++] = in7 >>> 0 & 65535;
|
|
760
|
+
out[op++] = in7 >>> 16 & 65535;
|
|
761
|
+
out[op++] = in8 >>> 0 & 65535;
|
|
762
|
+
out[op++] = in8 >>> 16 & 65535;
|
|
763
|
+
out[op++] = in9 >>> 0 & 65535;
|
|
764
|
+
out[op++] = in9 >>> 16 & 65535;
|
|
765
|
+
out[op++] = in10 >>> 0 & 65535;
|
|
766
|
+
out[op++] = in10 >>> 16 & 65535;
|
|
767
|
+
out[op++] = in11 >>> 0 & 65535;
|
|
768
|
+
out[op++] = in11 >>> 16 & 65535;
|
|
769
|
+
out[op++] = in12 >>> 0 & 65535;
|
|
770
|
+
out[op++] = in12 >>> 16 & 65535;
|
|
771
|
+
out[op++] = in13 >>> 0 & 65535;
|
|
772
|
+
out[op++] = in13 >>> 16 & 65535;
|
|
773
|
+
out[op++] = in14 >>> 0 & 65535;
|
|
774
|
+
out[op++] = in14 >>> 16 & 65535;
|
|
775
|
+
out[op++] = in15 >>> 0 & 65535;
|
|
776
|
+
out[op] = in15 >>> 16 & 65535;
|
|
777
|
+
}
|
|
778
|
+
function fastUnpack256_1(inValues, inPos, out, outPos) {
|
|
779
|
+
let op = outPos;
|
|
780
|
+
let ip = inPos;
|
|
781
|
+
for (let c = 0; c < 8; c++) {
|
|
782
|
+
const in0 = inValues[ip++] >>> 0;
|
|
783
|
+
out[op++] = in0 >>> 0 & 1;
|
|
784
|
+
out[op++] = in0 >>> 1 & 1;
|
|
785
|
+
out[op++] = in0 >>> 2 & 1;
|
|
786
|
+
out[op++] = in0 >>> 3 & 1;
|
|
787
|
+
out[op++] = in0 >>> 4 & 1;
|
|
788
|
+
out[op++] = in0 >>> 5 & 1;
|
|
789
|
+
out[op++] = in0 >>> 6 & 1;
|
|
790
|
+
out[op++] = in0 >>> 7 & 1;
|
|
791
|
+
out[op++] = in0 >>> 8 & 1;
|
|
792
|
+
out[op++] = in0 >>> 9 & 1;
|
|
793
|
+
out[op++] = in0 >>> 10 & 1;
|
|
794
|
+
out[op++] = in0 >>> 11 & 1;
|
|
795
|
+
out[op++] = in0 >>> 12 & 1;
|
|
796
|
+
out[op++] = in0 >>> 13 & 1;
|
|
797
|
+
out[op++] = in0 >>> 14 & 1;
|
|
798
|
+
out[op++] = in0 >>> 15 & 1;
|
|
799
|
+
out[op++] = in0 >>> 16 & 1;
|
|
800
|
+
out[op++] = in0 >>> 17 & 1;
|
|
801
|
+
out[op++] = in0 >>> 18 & 1;
|
|
802
|
+
out[op++] = in0 >>> 19 & 1;
|
|
803
|
+
out[op++] = in0 >>> 20 & 1;
|
|
804
|
+
out[op++] = in0 >>> 21 & 1;
|
|
805
|
+
out[op++] = in0 >>> 22 & 1;
|
|
806
|
+
out[op++] = in0 >>> 23 & 1;
|
|
807
|
+
out[op++] = in0 >>> 24 & 1;
|
|
808
|
+
out[op++] = in0 >>> 25 & 1;
|
|
809
|
+
out[op++] = in0 >>> 26 & 1;
|
|
810
|
+
out[op++] = in0 >>> 27 & 1;
|
|
811
|
+
out[op++] = in0 >>> 28 & 1;
|
|
812
|
+
out[op++] = in0 >>> 29 & 1;
|
|
813
|
+
out[op++] = in0 >>> 30 & 1;
|
|
814
|
+
out[op++] = in0 >>> 31 & 1;
|
|
815
|
+
}
|
|
816
|
+
}
|
|
817
|
+
function fastUnpack256_2(inValues, inPos, out, outPos) {
|
|
818
|
+
let op = outPos;
|
|
819
|
+
let ip = inPos;
|
|
820
|
+
for (let c = 0; c < 8; c++) {
|
|
821
|
+
const in0 = inValues[ip++] >>> 0;
|
|
822
|
+
const in1 = inValues[ip++] >>> 0;
|
|
823
|
+
out[op++] = in0 >>> 0 & 3;
|
|
824
|
+
out[op++] = in0 >>> 2 & 3;
|
|
825
|
+
out[op++] = in0 >>> 4 & 3;
|
|
826
|
+
out[op++] = in0 >>> 6 & 3;
|
|
827
|
+
out[op++] = in0 >>> 8 & 3;
|
|
828
|
+
out[op++] = in0 >>> 10 & 3;
|
|
829
|
+
out[op++] = in0 >>> 12 & 3;
|
|
830
|
+
out[op++] = in0 >>> 14 & 3;
|
|
831
|
+
out[op++] = in0 >>> 16 & 3;
|
|
832
|
+
out[op++] = in0 >>> 18 & 3;
|
|
833
|
+
out[op++] = in0 >>> 20 & 3;
|
|
834
|
+
out[op++] = in0 >>> 22 & 3;
|
|
835
|
+
out[op++] = in0 >>> 24 & 3;
|
|
836
|
+
out[op++] = in0 >>> 26 & 3;
|
|
837
|
+
out[op++] = in0 >>> 28 & 3;
|
|
838
|
+
out[op++] = in0 >>> 30 & 3;
|
|
839
|
+
out[op++] = in1 >>> 0 & 3;
|
|
840
|
+
out[op++] = in1 >>> 2 & 3;
|
|
841
|
+
out[op++] = in1 >>> 4 & 3;
|
|
842
|
+
out[op++] = in1 >>> 6 & 3;
|
|
843
|
+
out[op++] = in1 >>> 8 & 3;
|
|
844
|
+
out[op++] = in1 >>> 10 & 3;
|
|
845
|
+
out[op++] = in1 >>> 12 & 3;
|
|
846
|
+
out[op++] = in1 >>> 14 & 3;
|
|
847
|
+
out[op++] = in1 >>> 16 & 3;
|
|
848
|
+
out[op++] = in1 >>> 18 & 3;
|
|
849
|
+
out[op++] = in1 >>> 20 & 3;
|
|
850
|
+
out[op++] = in1 >>> 22 & 3;
|
|
851
|
+
out[op++] = in1 >>> 24 & 3;
|
|
852
|
+
out[op++] = in1 >>> 26 & 3;
|
|
853
|
+
out[op++] = in1 >>> 28 & 3;
|
|
854
|
+
out[op++] = in1 >>> 30 & 3;
|
|
855
|
+
}
|
|
856
|
+
}
|
|
857
|
+
function fastUnpack256_3(inValues, inPos, out, outPos) {
|
|
858
|
+
let op = outPos;
|
|
859
|
+
let ip = inPos;
|
|
860
|
+
for (let c = 0; c < 8; c++) {
|
|
861
|
+
const in0 = inValues[ip++] >>> 0;
|
|
862
|
+
const in1 = inValues[ip++] >>> 0;
|
|
863
|
+
const in2 = inValues[ip++] >>> 0;
|
|
864
|
+
out[op++] = in0 >>> 0 & 7;
|
|
865
|
+
out[op++] = in0 >>> 3 & 7;
|
|
866
|
+
out[op++] = in0 >>> 6 & 7;
|
|
867
|
+
out[op++] = in0 >>> 9 & 7;
|
|
868
|
+
out[op++] = in0 >>> 12 & 7;
|
|
869
|
+
out[op++] = in0 >>> 15 & 7;
|
|
870
|
+
out[op++] = in0 >>> 18 & 7;
|
|
871
|
+
out[op++] = in0 >>> 21 & 7;
|
|
872
|
+
out[op++] = in0 >>> 24 & 7;
|
|
873
|
+
out[op++] = in0 >>> 27 & 7;
|
|
874
|
+
out[op++] = (in0 >>> 30 | (in1 & 1) << 2) & 7;
|
|
875
|
+
out[op++] = in1 >>> 1 & 7;
|
|
876
|
+
out[op++] = in1 >>> 4 & 7;
|
|
877
|
+
out[op++] = in1 >>> 7 & 7;
|
|
878
|
+
out[op++] = in1 >>> 10 & 7;
|
|
879
|
+
out[op++] = in1 >>> 13 & 7;
|
|
880
|
+
out[op++] = in1 >>> 16 & 7;
|
|
881
|
+
out[op++] = in1 >>> 19 & 7;
|
|
882
|
+
out[op++] = in1 >>> 22 & 7;
|
|
883
|
+
out[op++] = in1 >>> 25 & 7;
|
|
884
|
+
out[op++] = in1 >>> 28 & 7;
|
|
885
|
+
out[op++] = (in1 >>> 31 | (in2 & 3) << 1) & 7;
|
|
886
|
+
out[op++] = in2 >>> 2 & 7;
|
|
887
|
+
out[op++] = in2 >>> 5 & 7;
|
|
888
|
+
out[op++] = in2 >>> 8 & 7;
|
|
889
|
+
out[op++] = in2 >>> 11 & 7;
|
|
890
|
+
out[op++] = in2 >>> 14 & 7;
|
|
891
|
+
out[op++] = in2 >>> 17 & 7;
|
|
892
|
+
out[op++] = in2 >>> 20 & 7;
|
|
893
|
+
out[op++] = in2 >>> 23 & 7;
|
|
894
|
+
out[op++] = in2 >>> 26 & 7;
|
|
895
|
+
out[op++] = in2 >>> 29 & 7;
|
|
896
|
+
}
|
|
897
|
+
}
|
|
898
|
+
function fastUnpack256_4(inValues, inPos, out, outPos) {
|
|
899
|
+
let op = outPos;
|
|
900
|
+
let ip = inPos;
|
|
901
|
+
for (let c = 0; c < 8; c++) {
|
|
902
|
+
const in0 = inValues[ip++] >>> 0;
|
|
903
|
+
const in1 = inValues[ip++] >>> 0;
|
|
904
|
+
const in2 = inValues[ip++] >>> 0;
|
|
905
|
+
const in3 = inValues[ip++] >>> 0;
|
|
906
|
+
out[op++] = in0 >>> 0 & 15;
|
|
907
|
+
out[op++] = in0 >>> 4 & 15;
|
|
908
|
+
out[op++] = in0 >>> 8 & 15;
|
|
909
|
+
out[op++] = in0 >>> 12 & 15;
|
|
910
|
+
out[op++] = in0 >>> 16 & 15;
|
|
911
|
+
out[op++] = in0 >>> 20 & 15;
|
|
912
|
+
out[op++] = in0 >>> 24 & 15;
|
|
913
|
+
out[op++] = in0 >>> 28 & 15;
|
|
914
|
+
out[op++] = in1 >>> 0 & 15;
|
|
915
|
+
out[op++] = in1 >>> 4 & 15;
|
|
916
|
+
out[op++] = in1 >>> 8 & 15;
|
|
917
|
+
out[op++] = in1 >>> 12 & 15;
|
|
918
|
+
out[op++] = in1 >>> 16 & 15;
|
|
919
|
+
out[op++] = in1 >>> 20 & 15;
|
|
920
|
+
out[op++] = in1 >>> 24 & 15;
|
|
921
|
+
out[op++] = in1 >>> 28 & 15;
|
|
922
|
+
out[op++] = in2 >>> 0 & 15;
|
|
923
|
+
out[op++] = in2 >>> 4 & 15;
|
|
924
|
+
out[op++] = in2 >>> 8 & 15;
|
|
925
|
+
out[op++] = in2 >>> 12 & 15;
|
|
926
|
+
out[op++] = in2 >>> 16 & 15;
|
|
927
|
+
out[op++] = in2 >>> 20 & 15;
|
|
928
|
+
out[op++] = in2 >>> 24 & 15;
|
|
929
|
+
out[op++] = in2 >>> 28 & 15;
|
|
930
|
+
out[op++] = in3 >>> 0 & 15;
|
|
931
|
+
out[op++] = in3 >>> 4 & 15;
|
|
932
|
+
out[op++] = in3 >>> 8 & 15;
|
|
933
|
+
out[op++] = in3 >>> 12 & 15;
|
|
934
|
+
out[op++] = in3 >>> 16 & 15;
|
|
935
|
+
out[op++] = in3 >>> 20 & 15;
|
|
936
|
+
out[op++] = in3 >>> 24 & 15;
|
|
937
|
+
out[op++] = in3 >>> 28 & 15;
|
|
938
|
+
}
|
|
939
|
+
}
|
|
940
|
+
function fastUnpack256_5(inValues, inPos, out, outPos) {
|
|
941
|
+
let op = outPos;
|
|
942
|
+
let ip = inPos;
|
|
943
|
+
for (let c = 0; c < 8; c++) {
|
|
944
|
+
const in0 = inValues[ip++] >>> 0;
|
|
945
|
+
const in1 = inValues[ip++] >>> 0;
|
|
946
|
+
const in2 = inValues[ip++] >>> 0;
|
|
947
|
+
const in3 = inValues[ip++] >>> 0;
|
|
948
|
+
const in4 = inValues[ip++] >>> 0;
|
|
949
|
+
out[op++] = in0 >>> 0 & 31;
|
|
950
|
+
out[op++] = in0 >>> 5 & 31;
|
|
951
|
+
out[op++] = in0 >>> 10 & 31;
|
|
952
|
+
out[op++] = in0 >>> 15 & 31;
|
|
953
|
+
out[op++] = in0 >>> 20 & 31;
|
|
954
|
+
out[op++] = in0 >>> 25 & 31;
|
|
955
|
+
out[op++] = (in0 >>> 30 | (in1 & 7) << 2) & 31;
|
|
956
|
+
out[op++] = in1 >>> 3 & 31;
|
|
957
|
+
out[op++] = in1 >>> 8 & 31;
|
|
958
|
+
out[op++] = in1 >>> 13 & 31;
|
|
959
|
+
out[op++] = in1 >>> 18 & 31;
|
|
960
|
+
out[op++] = in1 >>> 23 & 31;
|
|
961
|
+
out[op++] = (in1 >>> 28 | (in2 & 1) << 4) & 31;
|
|
962
|
+
out[op++] = in2 >>> 1 & 31;
|
|
963
|
+
out[op++] = in2 >>> 6 & 31;
|
|
964
|
+
out[op++] = in2 >>> 11 & 31;
|
|
965
|
+
out[op++] = in2 >>> 16 & 31;
|
|
966
|
+
out[op++] = in2 >>> 21 & 31;
|
|
967
|
+
out[op++] = in2 >>> 26 & 31;
|
|
968
|
+
out[op++] = (in2 >>> 31 | (in3 & 15) << 1) & 31;
|
|
969
|
+
out[op++] = in3 >>> 4 & 31;
|
|
970
|
+
out[op++] = in3 >>> 9 & 31;
|
|
971
|
+
out[op++] = in3 >>> 14 & 31;
|
|
972
|
+
out[op++] = in3 >>> 19 & 31;
|
|
973
|
+
out[op++] = in3 >>> 24 & 31;
|
|
974
|
+
out[op++] = (in3 >>> 29 | (in4 & 3) << 3) & 31;
|
|
975
|
+
out[op++] = in4 >>> 2 & 31;
|
|
976
|
+
out[op++] = in4 >>> 7 & 31;
|
|
977
|
+
out[op++] = in4 >>> 12 & 31;
|
|
978
|
+
out[op++] = in4 >>> 17 & 31;
|
|
979
|
+
out[op++] = in4 >>> 22 & 31;
|
|
980
|
+
out[op++] = in4 >>> 27 & 31;
|
|
981
|
+
}
|
|
982
|
+
}
|
|
983
|
+
function fastUnpack256_6(inValues, inPos, out, outPos) {
|
|
984
|
+
let op = outPos;
|
|
985
|
+
let ip = inPos;
|
|
986
|
+
for (let c = 0; c < 8; c++) {
|
|
987
|
+
const in0 = inValues[ip++] >>> 0;
|
|
988
|
+
const in1 = inValues[ip++] >>> 0;
|
|
989
|
+
const in2 = inValues[ip++] >>> 0;
|
|
990
|
+
const in3 = inValues[ip++] >>> 0;
|
|
991
|
+
const in4 = inValues[ip++] >>> 0;
|
|
992
|
+
const in5 = inValues[ip++] >>> 0;
|
|
993
|
+
out[op++] = in0 >>> 0 & 63;
|
|
994
|
+
out[op++] = in0 >>> 6 & 63;
|
|
995
|
+
out[op++] = in0 >>> 12 & 63;
|
|
996
|
+
out[op++] = in0 >>> 18 & 63;
|
|
997
|
+
out[op++] = in0 >>> 24 & 63;
|
|
998
|
+
out[op++] = (in0 >>> 30 | (in1 & 15) << 2) & 63;
|
|
999
|
+
out[op++] = in1 >>> 4 & 63;
|
|
1000
|
+
out[op++] = in1 >>> 10 & 63;
|
|
1001
|
+
out[op++] = in1 >>> 16 & 63;
|
|
1002
|
+
out[op++] = in1 >>> 22 & 63;
|
|
1003
|
+
out[op++] = (in1 >>> 28 | (in2 & 3) << 4) & 63;
|
|
1004
|
+
out[op++] = in2 >>> 2 & 63;
|
|
1005
|
+
out[op++] = in2 >>> 8 & 63;
|
|
1006
|
+
out[op++] = in2 >>> 14 & 63;
|
|
1007
|
+
out[op++] = in2 >>> 20 & 63;
|
|
1008
|
+
out[op++] = in2 >>> 26 & 63;
|
|
1009
|
+
out[op++] = in3 >>> 0 & 63;
|
|
1010
|
+
out[op++] = in3 >>> 6 & 63;
|
|
1011
|
+
out[op++] = in3 >>> 12 & 63;
|
|
1012
|
+
out[op++] = in3 >>> 18 & 63;
|
|
1013
|
+
out[op++] = in3 >>> 24 & 63;
|
|
1014
|
+
out[op++] = (in3 >>> 30 | (in4 & 15) << 2) & 63;
|
|
1015
|
+
out[op++] = in4 >>> 4 & 63;
|
|
1016
|
+
out[op++] = in4 >>> 10 & 63;
|
|
1017
|
+
out[op++] = in4 >>> 16 & 63;
|
|
1018
|
+
out[op++] = in4 >>> 22 & 63;
|
|
1019
|
+
out[op++] = (in4 >>> 28 | (in5 & 3) << 4) & 63;
|
|
1020
|
+
out[op++] = in5 >>> 2 & 63;
|
|
1021
|
+
out[op++] = in5 >>> 8 & 63;
|
|
1022
|
+
out[op++] = in5 >>> 14 & 63;
|
|
1023
|
+
out[op++] = in5 >>> 20 & 63;
|
|
1024
|
+
out[op++] = in5 >>> 26 & 63;
|
|
1025
|
+
}
|
|
1026
|
+
}
|
|
1027
|
+
function fastUnpack256_7(inValues, inPos, out, outPos) {
|
|
1028
|
+
let op = outPos;
|
|
1029
|
+
let ip = inPos;
|
|
1030
|
+
for (let c = 0; c < 8; c++) {
|
|
1031
|
+
const in0 = inValues[ip++] >>> 0;
|
|
1032
|
+
const in1 = inValues[ip++] >>> 0;
|
|
1033
|
+
const in2 = inValues[ip++] >>> 0;
|
|
1034
|
+
const in3 = inValues[ip++] >>> 0;
|
|
1035
|
+
const in4 = inValues[ip++] >>> 0;
|
|
1036
|
+
const in5 = inValues[ip++] >>> 0;
|
|
1037
|
+
const in6 = inValues[ip++] >>> 0;
|
|
1038
|
+
out[op++] = in0 >>> 0 & 127;
|
|
1039
|
+
out[op++] = in0 >>> 7 & 127;
|
|
1040
|
+
out[op++] = in0 >>> 14 & 127;
|
|
1041
|
+
out[op++] = in0 >>> 21 & 127;
|
|
1042
|
+
out[op++] = (in0 >>> 28 | (in1 & 7) << 4) & 127;
|
|
1043
|
+
out[op++] = in1 >>> 3 & 127;
|
|
1044
|
+
out[op++] = in1 >>> 10 & 127;
|
|
1045
|
+
out[op++] = in1 >>> 17 & 127;
|
|
1046
|
+
out[op++] = in1 >>> 24 & 127;
|
|
1047
|
+
out[op++] = (in1 >>> 31 | (in2 & 63) << 1) & 127;
|
|
1048
|
+
out[op++] = in2 >>> 6 & 127;
|
|
1049
|
+
out[op++] = in2 >>> 13 & 127;
|
|
1050
|
+
out[op++] = in2 >>> 20 & 127;
|
|
1051
|
+
out[op++] = (in2 >>> 27 | (in3 & 3) << 5) & 127;
|
|
1052
|
+
out[op++] = in3 >>> 2 & 127;
|
|
1053
|
+
out[op++] = in3 >>> 9 & 127;
|
|
1054
|
+
out[op++] = in3 >>> 16 & 127;
|
|
1055
|
+
out[op++] = in3 >>> 23 & 127;
|
|
1056
|
+
out[op++] = (in3 >>> 30 | (in4 & 31) << 2) & 127;
|
|
1057
|
+
out[op++] = in4 >>> 5 & 127;
|
|
1058
|
+
out[op++] = in4 >>> 12 & 127;
|
|
1059
|
+
out[op++] = in4 >>> 19 & 127;
|
|
1060
|
+
out[op++] = (in4 >>> 26 | (in5 & 1) << 6) & 127;
|
|
1061
|
+
out[op++] = in5 >>> 1 & 127;
|
|
1062
|
+
out[op++] = in5 >>> 8 & 127;
|
|
1063
|
+
out[op++] = in5 >>> 15 & 127;
|
|
1064
|
+
out[op++] = in5 >>> 22 & 127;
|
|
1065
|
+
out[op++] = (in5 >>> 29 | (in6 & 15) << 3) & 127;
|
|
1066
|
+
out[op++] = in6 >>> 4 & 127;
|
|
1067
|
+
out[op++] = in6 >>> 11 & 127;
|
|
1068
|
+
out[op++] = in6 >>> 18 & 127;
|
|
1069
|
+
out[op++] = in6 >>> 25 & 127;
|
|
1070
|
+
}
|
|
1071
|
+
}
|
|
1072
|
+
function fastUnpack256_8(inValues, inPos, out, outPos) {
|
|
1073
|
+
let op = outPos;
|
|
1074
|
+
let ip = inPos;
|
|
1075
|
+
for (let c = 0; c < 8; c++) {
|
|
1076
|
+
const in0 = inValues[ip++] >>> 0;
|
|
1077
|
+
const in1 = inValues[ip++] >>> 0;
|
|
1078
|
+
const in2 = inValues[ip++] >>> 0;
|
|
1079
|
+
const in3 = inValues[ip++] >>> 0;
|
|
1080
|
+
const in4 = inValues[ip++] >>> 0;
|
|
1081
|
+
const in5 = inValues[ip++] >>> 0;
|
|
1082
|
+
const in6 = inValues[ip++] >>> 0;
|
|
1083
|
+
const in7 = inValues[ip++] >>> 0;
|
|
1084
|
+
out[op++] = in0 >>> 0 & 255;
|
|
1085
|
+
out[op++] = in0 >>> 8 & 255;
|
|
1086
|
+
out[op++] = in0 >>> 16 & 255;
|
|
1087
|
+
out[op++] = in0 >>> 24 & 255;
|
|
1088
|
+
out[op++] = in1 >>> 0 & 255;
|
|
1089
|
+
out[op++] = in1 >>> 8 & 255;
|
|
1090
|
+
out[op++] = in1 >>> 16 & 255;
|
|
1091
|
+
out[op++] = in1 >>> 24 & 255;
|
|
1092
|
+
out[op++] = in2 >>> 0 & 255;
|
|
1093
|
+
out[op++] = in2 >>> 8 & 255;
|
|
1094
|
+
out[op++] = in2 >>> 16 & 255;
|
|
1095
|
+
out[op++] = in2 >>> 24 & 255;
|
|
1096
|
+
out[op++] = in3 >>> 0 & 255;
|
|
1097
|
+
out[op++] = in3 >>> 8 & 255;
|
|
1098
|
+
out[op++] = in3 >>> 16 & 255;
|
|
1099
|
+
out[op++] = in3 >>> 24 & 255;
|
|
1100
|
+
out[op++] = in4 >>> 0 & 255;
|
|
1101
|
+
out[op++] = in4 >>> 8 & 255;
|
|
1102
|
+
out[op++] = in4 >>> 16 & 255;
|
|
1103
|
+
out[op++] = in4 >>> 24 & 255;
|
|
1104
|
+
out[op++] = in5 >>> 0 & 255;
|
|
1105
|
+
out[op++] = in5 >>> 8 & 255;
|
|
1106
|
+
out[op++] = in5 >>> 16 & 255;
|
|
1107
|
+
out[op++] = in5 >>> 24 & 255;
|
|
1108
|
+
out[op++] = in6 >>> 0 & 255;
|
|
1109
|
+
out[op++] = in6 >>> 8 & 255;
|
|
1110
|
+
out[op++] = in6 >>> 16 & 255;
|
|
1111
|
+
out[op++] = in6 >>> 24 & 255;
|
|
1112
|
+
out[op++] = in7 >>> 0 & 255;
|
|
1113
|
+
out[op++] = in7 >>> 8 & 255;
|
|
1114
|
+
out[op++] = in7 >>> 16 & 255;
|
|
1115
|
+
out[op++] = in7 >>> 24 & 255;
|
|
1116
|
+
}
|
|
1117
|
+
}
|
|
1118
|
+
function fastUnpack256_16(inValues, inPos, out, outPos) {
|
|
1119
|
+
let op = outPos;
|
|
1120
|
+
let ip = inPos;
|
|
1121
|
+
for (let i = 0; i < 128; i++) {
|
|
1122
|
+
const in0 = inValues[ip++] >>> 0;
|
|
1123
|
+
out[op++] = in0 & 65535;
|
|
1124
|
+
out[op++] = in0 >>> 16 & 65535;
|
|
1125
|
+
}
|
|
1126
|
+
}
|
|
1127
|
+
function fastUnpack256_Generic(inValues, inPos, out, outPos, bitWidth) {
|
|
1128
|
+
const mask = MASKS[bitWidth] >>> 0;
|
|
1129
|
+
let inputWordIndex = inPos;
|
|
1130
|
+
let bitOffset = 0;
|
|
1131
|
+
let currentWord = inValues[inputWordIndex] >>> 0;
|
|
1132
|
+
let op = outPos;
|
|
1133
|
+
for (let c = 0; c < 8; c++) {
|
|
1134
|
+
for (let i = 0; i < 32; i++) {
|
|
1135
|
+
if (bitOffset + bitWidth <= 32) {
|
|
1136
|
+
const value = currentWord >>> bitOffset & mask;
|
|
1137
|
+
out[op + i] = value | 0;
|
|
1138
|
+
bitOffset += bitWidth;
|
|
1139
|
+
if (bitOffset === 32) {
|
|
1140
|
+
bitOffset = 0;
|
|
1141
|
+
inputWordIndex++;
|
|
1142
|
+
if (i !== 31) {
|
|
1143
|
+
currentWord = inValues[inputWordIndex] >>> 0;
|
|
1144
|
+
}
|
|
1145
|
+
}
|
|
1146
|
+
} else {
|
|
1147
|
+
const lowBits = 32 - bitOffset;
|
|
1148
|
+
const low = currentWord >>> bitOffset;
|
|
1149
|
+
inputWordIndex++;
|
|
1150
|
+
currentWord = inValues[inputWordIndex] >>> 0;
|
|
1151
|
+
const highBits = bitWidth - lowBits;
|
|
1152
|
+
const highMask = -1 >>> 32 - highBits >>> 0;
|
|
1153
|
+
const high = currentWord & highMask;
|
|
1154
|
+
const value = (low | high << lowBits) & mask;
|
|
1155
|
+
out[op + i] = value | 0;
|
|
1156
|
+
bitOffset = highBits;
|
|
1157
|
+
}
|
|
1158
|
+
}
|
|
1159
|
+
op += 32;
|
|
1160
|
+
bitOffset = 0;
|
|
1161
|
+
if (c < 7) {
|
|
1162
|
+
currentWord = inValues[inputWordIndex] >>> 0;
|
|
1163
|
+
}
|
|
1164
|
+
}
|
|
1165
|
+
}
|
|
1166
|
+
|
|
1167
|
+
// ../../node_modules/@maplibre/mlt/dist/decoding/fastPforDecoder.js
|
|
1168
|
+
var MAX_BIT_WIDTH = 32;
|
|
1169
|
+
var BIT_WIDTH_SLOTS = MAX_BIT_WIDTH + 1;
|
|
1170
|
+
var PAGE_SIZE = normalizePageSize(DEFAULT_PAGE_SIZE);
|
|
1171
|
+
var BYTE_CONTAINER_SIZE = 3 * PAGE_SIZE / BLOCK_SIZE + PAGE_SIZE | 0;
|
|
1172
|
+
function createDecoderWorkspace() {
|
|
1173
|
+
const byteContainer = new Uint8Array(BYTE_CONTAINER_SIZE);
|
|
1174
|
+
return {
|
|
1175
|
+
dataToBePacked: new Array(BIT_WIDTH_SLOTS),
|
|
1176
|
+
dataPointers: new Int32Array(BIT_WIDTH_SLOTS),
|
|
1177
|
+
byteContainer,
|
|
1178
|
+
byteContainerI32: new Int32Array(byteContainer.buffer, byteContainer.byteOffset, byteContainer.byteLength >>> 2),
|
|
1179
|
+
exceptionSizes: new Int32Array(BIT_WIDTH_SLOTS)
|
|
1180
|
+
};
|
|
1181
|
+
}
|
|
1182
|
+
function createFastPforWireDecodeWorkspace(initialEncodedWordCapacity = 16) {
|
|
1183
|
+
if (initialEncodedWordCapacity < 0) {
|
|
1184
|
+
throw new RangeError(`initialEncodedWordCapacity must be >= 0, got ${initialEncodedWordCapacity}`);
|
|
1185
|
+
}
|
|
1186
|
+
const capacity = Math.max(16, initialEncodedWordCapacity | 0);
|
|
1187
|
+
return {
|
|
1188
|
+
encodedWords: new Uint32Array(capacity),
|
|
1189
|
+
decoderWorkspace: createDecoderWorkspace()
|
|
1190
|
+
};
|
|
1191
|
+
}
|
|
1192
|
+
function ensureFastPforWireEncodedWordsCapacity(workspace, requiredWordCount) {
|
|
1193
|
+
if (requiredWordCount <= workspace.encodedWords.length)
|
|
1194
|
+
return workspace.encodedWords;
|
|
1195
|
+
const next = new Uint32Array(Math.max(16, requiredWordCount * 2));
|
|
1196
|
+
workspace.encodedWords = next;
|
|
1197
|
+
return next;
|
|
1198
|
+
}
|
|
1199
|
+
function materializeByteContainer(inValues, byteContainerStart, byteSize, workspace) {
|
|
1200
|
+
if (workspace.byteContainer.length < byteSize) {
|
|
1201
|
+
workspace.byteContainer = new Uint8Array(byteSize * 2);
|
|
1202
|
+
workspace.byteContainerI32 = void 0;
|
|
1203
|
+
}
|
|
1204
|
+
const byteContainer = workspace.byteContainer;
|
|
1205
|
+
const numFullInts = byteSize >>> 2;
|
|
1206
|
+
if ((byteContainer.byteOffset & 3) === 0) {
|
|
1207
|
+
let intView = workspace.byteContainerI32;
|
|
1208
|
+
if (!intView || intView.buffer !== byteContainer.buffer || intView.byteOffset !== byteContainer.byteOffset || intView.length < numFullInts) {
|
|
1209
|
+
intView = workspace.byteContainerI32 = new Int32Array(byteContainer.buffer, byteContainer.byteOffset, byteContainer.byteLength >>> 2);
|
|
1210
|
+
}
|
|
1211
|
+
intView.set(inValues.subarray(byteContainerStart, byteContainerStart + numFullInts));
|
|
1212
|
+
} else {
|
|
1213
|
+
for (let i = 0; i < numFullInts; i = i + 1 | 0) {
|
|
1214
|
+
const val = inValues[byteContainerStart + i | 0] | 0;
|
|
1215
|
+
const base = i << 2;
|
|
1216
|
+
byteContainer[base] = val & 255;
|
|
1217
|
+
byteContainer[base + 1 | 0] = val >>> 8 & 255;
|
|
1218
|
+
byteContainer[base + 2 | 0] = val >>> 16 & 255;
|
|
1219
|
+
byteContainer[base + 3 | 0] = val >>> 24 & 255;
|
|
1220
|
+
}
|
|
1221
|
+
}
|
|
1222
|
+
const remainder = byteSize & 3;
|
|
1223
|
+
if (remainder > 0) {
|
|
1224
|
+
const lastIntIdx = byteContainerStart + numFullInts | 0;
|
|
1225
|
+
const lastVal = inValues[lastIntIdx] | 0;
|
|
1226
|
+
const base = numFullInts << 2;
|
|
1227
|
+
for (let r = 0; r < remainder; r = r + 1 | 0) {
|
|
1228
|
+
byteContainer[base + r | 0] = lastVal >>> (r << 3) & 255;
|
|
1229
|
+
}
|
|
1230
|
+
}
|
|
1231
|
+
return byteContainer;
|
|
1232
|
+
}
|
|
1233
|
+
function unpackExceptionStreams(inValues, inExcept, workspace) {
|
|
1234
|
+
const bitmap = inValues[inExcept++] | 0;
|
|
1235
|
+
const dataToBePacked = workspace.dataToBePacked;
|
|
1236
|
+
for (let bitWidth = 2; bitWidth <= MAX_BIT_WIDTH; bitWidth = bitWidth + 1 | 0) {
|
|
1237
|
+
if ((bitmap >>> bitWidth - 1 & 1) === 0)
|
|
1238
|
+
continue;
|
|
1239
|
+
if (inExcept >= inValues.length) {
|
|
1240
|
+
throw new Error(`FastPFOR decode: truncated exception stream header (bitWidth=${bitWidth}, streamWordIndex=${inExcept}, needWords=1, availableWords=${inValues.length - inExcept}, encodedWords=${inValues.length})`);
|
|
1241
|
+
}
|
|
1242
|
+
const size = inValues[inExcept++] >>> 0;
|
|
1243
|
+
const roundedUp = roundUpToMultipleOf32(size);
|
|
1244
|
+
const wordsNeeded = size * bitWidth + 31 >>> 5;
|
|
1245
|
+
if (inExcept + wordsNeeded > inValues.length) {
|
|
1246
|
+
throw new Error(`FastPFOR decode: truncated exception stream (bitWidth=${bitWidth}, size=${size}, streamWordIndex=${inExcept}, needWords=${wordsNeeded}, availableWords=${inValues.length - inExcept}, encodedWords=${inValues.length})`);
|
|
1247
|
+
}
|
|
1248
|
+
let exceptionStream = dataToBePacked[bitWidth];
|
|
1249
|
+
if (!exceptionStream || exceptionStream.length < roundedUp) {
|
|
1250
|
+
exceptionStream = dataToBePacked[bitWidth] = new Uint32Array(roundedUp);
|
|
1251
|
+
}
|
|
1252
|
+
let j = 0;
|
|
1253
|
+
for (; j < size; j = j + 32 | 0) {
|
|
1254
|
+
fastUnpack32(inValues, inExcept, exceptionStream, j, bitWidth);
|
|
1255
|
+
inExcept = inExcept + bitWidth | 0;
|
|
1256
|
+
}
|
|
1257
|
+
const overflow = j - size | 0;
|
|
1258
|
+
inExcept = inExcept - (overflow * bitWidth >>> 5) | 0;
|
|
1259
|
+
workspace.exceptionSizes[bitWidth] = size;
|
|
1260
|
+
}
|
|
1261
|
+
return inExcept;
|
|
1262
|
+
}
|
|
1263
|
+
function unpackBlock256(inValues, inPos, out, outPos, bitWidth) {
|
|
1264
|
+
switch (bitWidth) {
|
|
1265
|
+
case 1:
|
|
1266
|
+
fastUnpack256_1(inValues, inPos, out, outPos);
|
|
1267
|
+
break;
|
|
1268
|
+
case 2:
|
|
1269
|
+
fastUnpack256_2(inValues, inPos, out, outPos);
|
|
1270
|
+
break;
|
|
1271
|
+
case 3:
|
|
1272
|
+
fastUnpack256_3(inValues, inPos, out, outPos);
|
|
1273
|
+
break;
|
|
1274
|
+
case 4:
|
|
1275
|
+
fastUnpack256_4(inValues, inPos, out, outPos);
|
|
1276
|
+
break;
|
|
1277
|
+
case 5:
|
|
1278
|
+
fastUnpack256_5(inValues, inPos, out, outPos);
|
|
1279
|
+
break;
|
|
1280
|
+
case 6:
|
|
1281
|
+
fastUnpack256_6(inValues, inPos, out, outPos);
|
|
1282
|
+
break;
|
|
1283
|
+
case 7:
|
|
1284
|
+
fastUnpack256_7(inValues, inPos, out, outPos);
|
|
1285
|
+
break;
|
|
1286
|
+
case 8:
|
|
1287
|
+
fastUnpack256_8(inValues, inPos, out, outPos);
|
|
1288
|
+
break;
|
|
1289
|
+
case 16:
|
|
1290
|
+
fastUnpack256_16(inValues, inPos, out, outPos);
|
|
1291
|
+
break;
|
|
1292
|
+
default:
|
|
1293
|
+
fastUnpack256_Generic(inValues, inPos, out, outPos, bitWidth);
|
|
1294
|
+
break;
|
|
1295
|
+
}
|
|
1296
|
+
return inPos + (bitWidth << 3) | 0;
|
|
1297
|
+
}
|
|
1298
|
+
function readBlockHeader(byteContainer, byteContainerLen, bytePosIn, block) {
|
|
1299
|
+
if (bytePosIn + 2 > byteContainerLen) {
|
|
1300
|
+
throw new Error(`FastPFOR decode: byteContainer underflow at block=${block} (need 2 bytes for [bitWidth, exceptionCount], bytePos=${bytePosIn}, byteSize=${byteContainerLen})`);
|
|
1301
|
+
}
|
|
1302
|
+
const bitWidth = byteContainer[bytePosIn++];
|
|
1303
|
+
const exceptionCount = byteContainer[bytePosIn++];
|
|
1304
|
+
if (bitWidth > MAX_BIT_WIDTH) {
|
|
1305
|
+
throw new Error(`FastPFOR decode: invalid bitWidth=${bitWidth} at block=${block} (expected 0..${MAX_BIT_WIDTH}). This likely indicates corrupted or truncated input.`);
|
|
1306
|
+
}
|
|
1307
|
+
return { bitWidth, exceptionCount, bytePosIn };
|
|
1308
|
+
}
|
|
1309
|
+
function readBlockExceptionHeader(byteContainer, byteContainerLen, bytePosIn, bitWidth, exceptionCount, block) {
|
|
1310
|
+
if (bytePosIn + 1 > byteContainerLen) {
|
|
1311
|
+
throw new Error(`FastPFOR decode: exception header underflow at block=${block} (need 1 byte for maxBits, bytePos=${bytePosIn}, byteSize=${byteContainerLen})`);
|
|
1312
|
+
}
|
|
1313
|
+
const maxBits = byteContainer[bytePosIn++];
|
|
1314
|
+
if (maxBits < bitWidth || maxBits > MAX_BIT_WIDTH) {
|
|
1315
|
+
throw new Error(`FastPFOR decode: invalid maxBits=${maxBits} at block=${block} (bitWidth=${bitWidth}, expected ${bitWidth}..${MAX_BIT_WIDTH})`);
|
|
1316
|
+
}
|
|
1317
|
+
const exceptionBitWidth = maxBits - bitWidth | 0;
|
|
1318
|
+
if (exceptionBitWidth < 1 || exceptionBitWidth > MAX_BIT_WIDTH) {
|
|
1319
|
+
throw new Error(`FastPFOR decode: invalid exceptionBitWidth=${exceptionBitWidth} at block=${block} (bitWidth=${bitWidth}, maxBits=${maxBits})`);
|
|
1320
|
+
}
|
|
1321
|
+
if (bytePosIn + exceptionCount > byteContainerLen) {
|
|
1322
|
+
throw new Error(`FastPFOR decode: exception positions underflow at block=${block} (need=${exceptionCount}, have=${byteContainerLen - bytePosIn})`);
|
|
1323
|
+
}
|
|
1324
|
+
return { maxBits, exceptionBitWidth, bytePosIn };
|
|
1325
|
+
}
|
|
1326
|
+
function applyBlockExceptions(out, blockOutPos, bitWidth, exceptionCount, byteContainer, byteContainerLen, bytePosIn, workspace, block) {
|
|
1327
|
+
const { maxBits, exceptionBitWidth, bytePosIn: afterHeaderPos } = readBlockExceptionHeader(byteContainer, byteContainerLen, bytePosIn, bitWidth, exceptionCount, block);
|
|
1328
|
+
bytePosIn = afterHeaderPos;
|
|
1329
|
+
if (exceptionBitWidth === 1) {
|
|
1330
|
+
const shift = 1 << bitWidth;
|
|
1331
|
+
for (let k = 0; k < exceptionCount; k = k + 1 | 0) {
|
|
1332
|
+
const pos = byteContainer[bytePosIn++];
|
|
1333
|
+
out[pos + blockOutPos | 0] |= shift;
|
|
1334
|
+
}
|
|
1335
|
+
return bytePosIn;
|
|
1336
|
+
}
|
|
1337
|
+
const exceptionValues = workspace.dataToBePacked[exceptionBitWidth];
|
|
1338
|
+
if (!exceptionValues) {
|
|
1339
|
+
throw new Error(`FastPFOR decode: missing exception stream for exceptionBitWidth=${exceptionBitWidth} (bitWidth=${bitWidth}, maxBits=${maxBits}) at block ${block}`);
|
|
1340
|
+
}
|
|
1341
|
+
const exceptionPointers = workspace.dataPointers;
|
|
1342
|
+
let exPtr = exceptionPointers[exceptionBitWidth] | 0;
|
|
1343
|
+
const exSize = workspace.exceptionSizes[exceptionBitWidth] | 0;
|
|
1344
|
+
if (exPtr + exceptionCount > exSize) {
|
|
1345
|
+
throw new Error(`FastPFOR decode: exception stream overflow for exceptionBitWidth=${exceptionBitWidth} (ptr=${exPtr}, need ${exceptionCount}, size=${exSize}) at block ${block}`);
|
|
1346
|
+
}
|
|
1347
|
+
for (let k = 0; k < exceptionCount; k = k + 1 | 0) {
|
|
1348
|
+
const pos = byteContainer[bytePosIn++];
|
|
1349
|
+
const val = exceptionValues[exPtr++] | 0;
|
|
1350
|
+
out[pos + blockOutPos | 0] |= val << bitWidth;
|
|
1351
|
+
}
|
|
1352
|
+
exceptionPointers[exceptionBitWidth] = exPtr;
|
|
1353
|
+
return bytePosIn;
|
|
1354
|
+
}
|
|
1355
|
+
function decodePageBlocks(inValues, pageStart, inPos, packedEnd, out, outPos, blocks, byteContainer, byteContainerLen, workspace) {
|
|
1356
|
+
let tmpInPos = inPos | 0;
|
|
1357
|
+
let bytePosIn = 0;
|
|
1358
|
+
for (let run = 0; run < blocks; run = run + 1 | 0) {
|
|
1359
|
+
const header = readBlockHeader(byteContainer, byteContainerLen, bytePosIn, run);
|
|
1360
|
+
bytePosIn = header.bytePosIn;
|
|
1361
|
+
const bitWidth = header.bitWidth;
|
|
1362
|
+
const exceptionCount = header.exceptionCount;
|
|
1363
|
+
const blockOutPos = outPos + run * BLOCK_SIZE | 0;
|
|
1364
|
+
switch (bitWidth) {
|
|
1365
|
+
case 0:
|
|
1366
|
+
out.fill(0, blockOutPos, blockOutPos + BLOCK_SIZE);
|
|
1367
|
+
break;
|
|
1368
|
+
case 32:
|
|
1369
|
+
for (let i = 0; i < BLOCK_SIZE; i = i + 1 | 0) {
|
|
1370
|
+
out[blockOutPos + i | 0] = inValues[tmpInPos + i | 0] | 0;
|
|
1371
|
+
}
|
|
1372
|
+
tmpInPos = tmpInPos + BLOCK_SIZE | 0;
|
|
1373
|
+
break;
|
|
1374
|
+
default:
|
|
1375
|
+
tmpInPos = unpackBlock256(inValues, tmpInPos, out, blockOutPos, bitWidth);
|
|
1376
|
+
break;
|
|
1377
|
+
}
|
|
1378
|
+
if (exceptionCount > 0) {
|
|
1379
|
+
bytePosIn = applyBlockExceptions(out, blockOutPos, bitWidth, exceptionCount, byteContainer, byteContainerLen, bytePosIn, workspace, run);
|
|
1380
|
+
}
|
|
1381
|
+
}
|
|
1382
|
+
if (tmpInPos !== packedEnd) {
|
|
1383
|
+
throw new Error(`FastPFOR decode: packed region mismatch (pageStart=${pageStart}, packedStart=${inPos}, consumedPackedEnd=${tmpInPos}, expectedPackedEnd=${packedEnd}, packedWords=${packedEnd - inPos}, encoded.length=${inValues.length})`);
|
|
1384
|
+
}
|
|
1385
|
+
return;
|
|
1386
|
+
}
|
|
1387
|
+
function decodePage(inValues, out, inPos, outPos, thisSize, workspace) {
|
|
1388
|
+
const pageStart = inPos | 0;
|
|
1389
|
+
const whereMeta = inValues[pageStart] | 0;
|
|
1390
|
+
if (whereMeta <= 0 || pageStart + whereMeta > inValues.length - 1) {
|
|
1391
|
+
throw new Error(`FastPFOR decode: invalid whereMeta=${whereMeta} at pageStart=${pageStart} (expected > 0 and pageStart+whereMeta < encoded.length=${inValues.length})`);
|
|
1392
|
+
}
|
|
1393
|
+
const packedStart = pageStart + 1 | 0;
|
|
1394
|
+
const packedEnd = pageStart + whereMeta | 0;
|
|
1395
|
+
const byteSize = inValues[packedEnd] >>> 0;
|
|
1396
|
+
const metaInts = byteSize + 3 >>> 2;
|
|
1397
|
+
const byteContainerStart = packedEnd + 1;
|
|
1398
|
+
const bitmapPos = byteContainerStart + metaInts;
|
|
1399
|
+
if (bitmapPos >= inValues.length) {
|
|
1400
|
+
throw new Error(`FastPFOR decode: invalid byteSize=${byteSize} (metaInts=${metaInts}, pageStart=${pageStart}, packedEnd=${packedEnd}, byteContainerStart=${byteContainerStart}) causes bitmapPos=${bitmapPos} out of bounds (encoded.length=${inValues.length})`);
|
|
1401
|
+
}
|
|
1402
|
+
const byteContainer = materializeByteContainer(inValues, byteContainerStart, byteSize, workspace);
|
|
1403
|
+
const byteContainerLen = byteSize;
|
|
1404
|
+
const inExcept = unpackExceptionStreams(inValues, bitmapPos, workspace);
|
|
1405
|
+
const exceptionPointers = workspace.dataPointers;
|
|
1406
|
+
exceptionPointers.fill(0);
|
|
1407
|
+
const startOutPos = outPos | 0;
|
|
1408
|
+
const blocks = thisSize / BLOCK_SIZE | 0;
|
|
1409
|
+
decodePageBlocks(inValues, pageStart, packedStart, packedEnd, out, startOutPos, blocks, byteContainer, byteContainerLen, workspace);
|
|
1410
|
+
return inExcept;
|
|
1411
|
+
}
|
|
1412
|
+
function decodeAlignedPages(inValues, out, inPos, outPos, outLength, workspace) {
|
|
1413
|
+
const alignedOutLength = greatestMultiple(outLength, BLOCK_SIZE);
|
|
1414
|
+
const finalOut = outPos + alignedOutLength;
|
|
1415
|
+
let tmpOutPos = outPos;
|
|
1416
|
+
let tmpInPos = inPos;
|
|
1417
|
+
while (tmpOutPos !== finalOut) {
|
|
1418
|
+
const thisSize = Math.min(PAGE_SIZE, finalOut - tmpOutPos);
|
|
1419
|
+
tmpInPos = decodePage(inValues, out, tmpInPos, tmpOutPos, thisSize, workspace);
|
|
1420
|
+
tmpOutPos = tmpOutPos + thisSize | 0;
|
|
1421
|
+
}
|
|
1422
|
+
return tmpInPos;
|
|
1423
|
+
}
|
|
1424
|
+
function decodeVByte(inValues, inPos, inLength, out, outPos, expectedCount) {
|
|
1425
|
+
if (expectedCount === 0)
|
|
1426
|
+
return inPos;
|
|
1427
|
+
let bitOffset = 0;
|
|
1428
|
+
let wordIndex = inPos;
|
|
1429
|
+
const finalWordIndex = inPos + inLength;
|
|
1430
|
+
const outPos0 = outPos;
|
|
1431
|
+
let tmpOutPos = outPos;
|
|
1432
|
+
const targetOut = outPos + expectedCount;
|
|
1433
|
+
let accumulator = 0;
|
|
1434
|
+
let accumulatorShift = 0;
|
|
1435
|
+
while (wordIndex < finalWordIndex && tmpOutPos < targetOut) {
|
|
1436
|
+
const word = inValues[wordIndex];
|
|
1437
|
+
const byte = word >>> bitOffset & 255;
|
|
1438
|
+
bitOffset += 8;
|
|
1439
|
+
wordIndex += bitOffset >>> 5;
|
|
1440
|
+
bitOffset &= 31;
|
|
1441
|
+
accumulator |= (byte & 127) << accumulatorShift;
|
|
1442
|
+
if ((byte & 128) !== 0) {
|
|
1443
|
+
out[tmpOutPos++] = accumulator | 0;
|
|
1444
|
+
accumulator = 0;
|
|
1445
|
+
accumulatorShift = 0;
|
|
1446
|
+
} else {
|
|
1447
|
+
accumulatorShift += 7;
|
|
1448
|
+
if (accumulatorShift > 28) {
|
|
1449
|
+
throw new Error(`FastPFOR VByte: unterminated value (expected MSB=1 terminator within 5 bytes; shift=${accumulatorShift}, partial=${accumulator}, decoded=${tmpOutPos - outPos0}/${expectedCount}, inPos=${wordIndex}, inEnd=${finalWordIndex})`);
|
|
1450
|
+
}
|
|
1451
|
+
}
|
|
1452
|
+
}
|
|
1453
|
+
if (tmpOutPos !== targetOut) {
|
|
1454
|
+
throw new Error(`FastPFOR VByte: truncated stream (decoded=${tmpOutPos - outPos0}, expected=${expectedCount}, consumedWords=${wordIndex - inPos}/${inLength}, vbyteStart=${inPos}, vbyteEnd=${finalWordIndex})`);
|
|
1455
|
+
}
|
|
1456
|
+
return wordIndex;
|
|
1457
|
+
}
|
|
1458
|
+
function decodeFastPforInt32(encoded, numValues, workspace) {
|
|
1459
|
+
let inPos = 0;
|
|
1460
|
+
let outPos = 0;
|
|
1461
|
+
const decoded = new Uint32Array(numValues);
|
|
1462
|
+
const decoderWorkspace = workspace ?? createDecoderWorkspace();
|
|
1463
|
+
if (encoded.length > 0) {
|
|
1464
|
+
const alignedLength = encoded[inPos] | 0;
|
|
1465
|
+
inPos = inPos + 1 | 0;
|
|
1466
|
+
if ((alignedLength & BLOCK_SIZE - 1) !== 0) {
|
|
1467
|
+
throw new Error(`FastPFOR decode: invalid alignedLength=${alignedLength} (expected multiple of ${BLOCK_SIZE})`);
|
|
1468
|
+
}
|
|
1469
|
+
if (outPos + alignedLength > decoded.length) {
|
|
1470
|
+
throw new Error(`FastPFOR decode: output buffer too small (outPos=${outPos}, alignedLength=${alignedLength}, out.length=${decoded.length})`);
|
|
1471
|
+
}
|
|
1472
|
+
inPos = decodeAlignedPages(encoded, decoded, inPos, outPos, alignedLength, decoderWorkspace);
|
|
1473
|
+
outPos = outPos + alignedLength | 0;
|
|
1474
|
+
}
|
|
1475
|
+
const remainingLength = encoded.length - inPos | 0;
|
|
1476
|
+
const expectedTail = numValues - outPos | 0;
|
|
1477
|
+
decodeVByte(encoded, inPos, remainingLength, decoded, outPos, expectedTail);
|
|
1478
|
+
return decoded;
|
|
1479
|
+
}
|
|
1480
|
+
function fastUnpack32(inValues, inPos, out, outPos, bitWidth) {
|
|
1481
|
+
switch (bitWidth) {
|
|
1482
|
+
case 2:
|
|
1483
|
+
fastUnpack32_2(inValues, inPos, out, outPos);
|
|
1484
|
+
return;
|
|
1485
|
+
case 3:
|
|
1486
|
+
fastUnpack32_3(inValues, inPos, out, outPos);
|
|
1487
|
+
return;
|
|
1488
|
+
case 4:
|
|
1489
|
+
fastUnpack32_4(inValues, inPos, out, outPos);
|
|
1490
|
+
return;
|
|
1491
|
+
case 5:
|
|
1492
|
+
fastUnpack32_5(inValues, inPos, out, outPos);
|
|
1493
|
+
return;
|
|
1494
|
+
case 6:
|
|
1495
|
+
fastUnpack32_6(inValues, inPos, out, outPos);
|
|
1496
|
+
return;
|
|
1497
|
+
case 7:
|
|
1498
|
+
fastUnpack32_7(inValues, inPos, out, outPos);
|
|
1499
|
+
return;
|
|
1500
|
+
case 8:
|
|
1501
|
+
fastUnpack32_8(inValues, inPos, out, outPos);
|
|
1502
|
+
return;
|
|
1503
|
+
case 9:
|
|
1504
|
+
fastUnpack32_9(inValues, inPos, out, outPos);
|
|
1505
|
+
return;
|
|
1506
|
+
case 10:
|
|
1507
|
+
fastUnpack32_10(inValues, inPos, out, outPos);
|
|
1508
|
+
return;
|
|
1509
|
+
case 11:
|
|
1510
|
+
fastUnpack32_11(inValues, inPos, out, outPos);
|
|
1511
|
+
return;
|
|
1512
|
+
case 12:
|
|
1513
|
+
fastUnpack32_12(inValues, inPos, out, outPos);
|
|
1514
|
+
return;
|
|
1515
|
+
case 16:
|
|
1516
|
+
fastUnpack32_16(inValues, inPos, out, outPos);
|
|
1517
|
+
return;
|
|
1518
|
+
case 32:
|
|
1519
|
+
for (let i = 0; i < 32; i = i + 1 | 0) {
|
|
1520
|
+
out[outPos + i | 0] = inValues[inPos + i | 0] | 0;
|
|
1521
|
+
}
|
|
1522
|
+
return;
|
|
1523
|
+
default:
|
|
1524
|
+
break;
|
|
1525
|
+
}
|
|
1526
|
+
const valueMask = MASKS[bitWidth] >>> 0;
|
|
1527
|
+
let inputWordIndex = inPos;
|
|
1528
|
+
let bitOffset = 0;
|
|
1529
|
+
let currentWord = inValues[inputWordIndex] >>> 0;
|
|
1530
|
+
for (let i = 0; i < 32; i++) {
|
|
1531
|
+
if (bitOffset + bitWidth <= 32) {
|
|
1532
|
+
const value = currentWord >>> bitOffset & valueMask;
|
|
1533
|
+
out[outPos + i] = value | 0;
|
|
1534
|
+
bitOffset += bitWidth;
|
|
1535
|
+
if (bitOffset === 32) {
|
|
1536
|
+
bitOffset = 0;
|
|
1537
|
+
inputWordIndex++;
|
|
1538
|
+
if (i !== 31)
|
|
1539
|
+
currentWord = inValues[inputWordIndex] >>> 0;
|
|
1540
|
+
}
|
|
1541
|
+
} else {
|
|
1542
|
+
const lowBits = 32 - bitOffset;
|
|
1543
|
+
const low = currentWord >>> bitOffset;
|
|
1544
|
+
inputWordIndex++;
|
|
1545
|
+
currentWord = inValues[inputWordIndex] >>> 0;
|
|
1546
|
+
const highMask = MASKS[bitWidth - lowBits] >>> 0;
|
|
1547
|
+
const high = currentWord & highMask;
|
|
1548
|
+
const value = (low | high << lowBits) & valueMask;
|
|
1549
|
+
out[outPos + i] = value | 0;
|
|
1550
|
+
bitOffset = bitWidth - lowBits;
|
|
1551
|
+
}
|
|
1552
|
+
}
|
|
1553
|
+
}
|
|
1554
|
+
|
|
1555
|
+
// ../../node_modules/@maplibre/mlt/dist/decoding/bigEndianDecode.js
|
|
1556
|
+
function decodeBigEndianInt32sInto(bytes, offset, byteLength, out) {
|
|
1557
|
+
if (offset < 0 || byteLength < 0 || offset + byteLength > bytes.length) {
|
|
1558
|
+
throw new RangeError(`decodeBigEndianInt32sInto: out of bounds (offset=${offset}, byteLength=${byteLength}, bytes.length=${bytes.length})`);
|
|
1559
|
+
}
|
|
1560
|
+
const numCompleteInts = Math.floor(byteLength / 4);
|
|
1561
|
+
const hasTrailingBytes = byteLength % 4 !== 0;
|
|
1562
|
+
const numInts = hasTrailingBytes ? numCompleteInts + 1 : numCompleteInts;
|
|
1563
|
+
if (out.length < numInts) {
|
|
1564
|
+
throw new RangeError(`decodeBigEndianInt32sInto: out.length=${out.length} < ${numInts}`);
|
|
1565
|
+
}
|
|
1566
|
+
if (numCompleteInts > 0) {
|
|
1567
|
+
const absoluteOffset = bytes.byteOffset + offset;
|
|
1568
|
+
if ((absoluteOffset & 3) === 0) {
|
|
1569
|
+
const u32 = new Uint32Array(bytes.buffer, absoluteOffset, numCompleteInts);
|
|
1570
|
+
for (let i = 0; i < numCompleteInts; i++) {
|
|
1571
|
+
out[i] = bswap32(u32[i]) | 0;
|
|
1572
|
+
}
|
|
1573
|
+
} else {
|
|
1574
|
+
for (let i = 0; i < numCompleteInts; i++) {
|
|
1575
|
+
const base = offset + i * 4;
|
|
1576
|
+
out[i] = bytes[base] << 24 | bytes[base + 1] << 16 | bytes[base + 2] << 8 | bytes[base + 3] | 0;
|
|
1577
|
+
}
|
|
1578
|
+
}
|
|
1579
|
+
}
|
|
1580
|
+
if (hasTrailingBytes) {
|
|
1581
|
+
const base = offset + numCompleteInts * 4;
|
|
1582
|
+
const remaining = byteLength - numCompleteInts * 4;
|
|
1583
|
+
let v = 0;
|
|
1584
|
+
for (let i = 0; i < remaining; i++) {
|
|
1585
|
+
v |= bytes[base + i] << 24 - i * 8;
|
|
1586
|
+
}
|
|
1587
|
+
out[numCompleteInts] = v | 0;
|
|
1588
|
+
}
|
|
1589
|
+
return numInts;
|
|
1590
|
+
}
|
|
1591
|
+
|
|
1592
|
+
// ../../node_modules/@maplibre/mlt/dist/decoding/integerDecodingUtils.js
|
|
1593
|
+
function decodeVarintInt32(buf, bufferOffset, numValues) {
|
|
1594
|
+
const dst = new Uint32Array(numValues);
|
|
1595
|
+
let dstOffset = 0;
|
|
1596
|
+
let offset = bufferOffset.get();
|
|
1597
|
+
for (let i = 0; i < dst.length; i++) {
|
|
1598
|
+
let b = buf[offset++];
|
|
1599
|
+
let val = b & 127;
|
|
1600
|
+
if (b < 128) {
|
|
1601
|
+
dst[dstOffset++] = val;
|
|
1602
|
+
continue;
|
|
1603
|
+
}
|
|
1604
|
+
b = buf[offset++];
|
|
1605
|
+
val |= (b & 127) << 7;
|
|
1606
|
+
if (b < 128) {
|
|
1607
|
+
dst[dstOffset++] = val;
|
|
1608
|
+
continue;
|
|
1609
|
+
}
|
|
1610
|
+
b = buf[offset++];
|
|
1611
|
+
val |= (b & 127) << 14;
|
|
1612
|
+
if (b < 128) {
|
|
1613
|
+
dst[dstOffset++] = val;
|
|
1614
|
+
continue;
|
|
1615
|
+
}
|
|
1616
|
+
b = buf[offset++];
|
|
1617
|
+
val |= (b & 127) << 21;
|
|
1618
|
+
if (b < 128) {
|
|
1619
|
+
dst[dstOffset++] = val;
|
|
1620
|
+
continue;
|
|
1621
|
+
}
|
|
1622
|
+
b = buf[offset++];
|
|
1623
|
+
val |= (b & 15) << 28;
|
|
1624
|
+
dst[dstOffset++] = val;
|
|
1625
|
+
}
|
|
1626
|
+
bufferOffset.set(offset);
|
|
1627
|
+
return dst;
|
|
1628
|
+
}
|
|
1629
|
+
function decodeVarintInt64(src, offset, numValues) {
|
|
1630
|
+
const dst = new BigUint64Array(numValues);
|
|
1631
|
+
for (let i = 0; i < dst.length; i++) {
|
|
1632
|
+
dst[i] = decodeVarintInt64Value(src, offset);
|
|
1633
|
+
}
|
|
1634
|
+
return dst;
|
|
1635
|
+
}
|
|
1636
|
+
function decodeVarintInt64Value(bytes, pos) {
|
|
1637
|
+
let value = 0n;
|
|
1638
|
+
let shift = 0;
|
|
1639
|
+
let index = pos.get();
|
|
1640
|
+
while (index < bytes.length) {
|
|
1641
|
+
const b = bytes[index++];
|
|
1642
|
+
value |= BigInt(b & 127) << BigInt(shift);
|
|
1643
|
+
if ((b & 128) === 0) {
|
|
1644
|
+
break;
|
|
1645
|
+
}
|
|
1646
|
+
shift += 7;
|
|
1647
|
+
if (shift >= 64) {
|
|
1648
|
+
throw new Error("Varint too long");
|
|
1649
|
+
}
|
|
1650
|
+
}
|
|
1651
|
+
pos.set(index);
|
|
1652
|
+
return value;
|
|
1653
|
+
}
|
|
1654
|
+
function decodeVarintFloat64(src, offset, numValues) {
|
|
1655
|
+
const dst = new Float64Array(numValues);
|
|
1656
|
+
for (let i = 0; i < numValues; i++) {
|
|
1657
|
+
dst[i] = decodeVarintFloat64Value(src, offset);
|
|
1658
|
+
}
|
|
1659
|
+
return dst;
|
|
1660
|
+
}
|
|
1661
|
+
function decodeVarintFloat64Value(buf, offset) {
|
|
1662
|
+
let val;
|
|
1663
|
+
let b;
|
|
1664
|
+
b = buf[offset.get()];
|
|
1665
|
+
offset.increment();
|
|
1666
|
+
val = b & 127;
|
|
1667
|
+
if (b < 128)
|
|
1668
|
+
return val;
|
|
1669
|
+
b = buf[offset.get()];
|
|
1670
|
+
offset.increment();
|
|
1671
|
+
val |= (b & 127) << 7;
|
|
1672
|
+
if (b < 128)
|
|
1673
|
+
return val;
|
|
1674
|
+
b = buf[offset.get()];
|
|
1675
|
+
offset.increment();
|
|
1676
|
+
val |= (b & 127) << 14;
|
|
1677
|
+
if (b < 128)
|
|
1678
|
+
return val;
|
|
1679
|
+
b = buf[offset.get()];
|
|
1680
|
+
offset.increment();
|
|
1681
|
+
val |= (b & 127) << 21;
|
|
1682
|
+
if (b < 128)
|
|
1683
|
+
return val;
|
|
1684
|
+
b = buf[offset.get()];
|
|
1685
|
+
val |= (b & 15) << 28;
|
|
1686
|
+
return decodeVarintRemainder(val, buf, offset);
|
|
1687
|
+
}
|
|
1688
|
+
function decodeVarintRemainder(l, buf, offset) {
|
|
1689
|
+
let h;
|
|
1690
|
+
let b;
|
|
1691
|
+
b = buf[offset.get()];
|
|
1692
|
+
offset.increment();
|
|
1693
|
+
h = (b & 112) >> 4;
|
|
1694
|
+
if (b < 128)
|
|
1695
|
+
return h * 4294967296 + (l >>> 0);
|
|
1696
|
+
b = buf[offset.get()];
|
|
1697
|
+
offset.increment();
|
|
1698
|
+
h |= (b & 127) << 3;
|
|
1699
|
+
if (b < 128)
|
|
1700
|
+
return h * 4294967296 + (l >>> 0);
|
|
1701
|
+
b = buf[offset.get()];
|
|
1702
|
+
offset.increment();
|
|
1703
|
+
h |= (b & 127) << 10;
|
|
1704
|
+
if (b < 128)
|
|
1705
|
+
return h * 4294967296 + (l >>> 0);
|
|
1706
|
+
b = buf[offset.get()];
|
|
1707
|
+
offset.increment();
|
|
1708
|
+
h |= (b & 127) << 17;
|
|
1709
|
+
if (b < 128)
|
|
1710
|
+
return h * 4294967296 + (l >>> 0);
|
|
1711
|
+
b = buf[offset.get()];
|
|
1712
|
+
offset.increment();
|
|
1713
|
+
h |= (b & 127) << 24;
|
|
1714
|
+
if (b < 128)
|
|
1715
|
+
return h * 4294967296 + (l >>> 0);
|
|
1716
|
+
b = buf[offset.get()];
|
|
1717
|
+
offset.increment();
|
|
1718
|
+
h |= (b & 1) << 31;
|
|
1719
|
+
if (b < 128)
|
|
1720
|
+
return h * 4294967296 + (l >>> 0);
|
|
1721
|
+
throw new Error("Expected varint not more than 10 bytes");
|
|
1722
|
+
}
|
|
1723
|
+
function decodeFastPfor(encodedBytes, expectedValueCount, encodedByteLength, offset) {
|
|
1724
|
+
const workspace = createFastPforWireDecodeWorkspace(encodedByteLength >>> 2);
|
|
1725
|
+
return decodeFastPforWithWorkspace(encodedBytes, expectedValueCount, encodedByteLength, offset, workspace);
|
|
1726
|
+
}
|
|
1727
|
+
function decodeFastPforWithWorkspace(encodedBytes, expectedValueCount, encodedByteLength, offset, workspace) {
|
|
1728
|
+
const inputByteOffset = offset.get();
|
|
1729
|
+
if ((encodedByteLength & 3) !== 0) {
|
|
1730
|
+
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)`);
|
|
1731
|
+
}
|
|
1732
|
+
const encodedWordCount = encodedByteLength >>> 2;
|
|
1733
|
+
const encodedWordBuffer = ensureFastPforWireEncodedWordsCapacity(workspace, encodedWordCount);
|
|
1734
|
+
decodeBigEndianInt32sInto(encodedBytes, inputByteOffset, encodedByteLength, encodedWordBuffer);
|
|
1735
|
+
const decodedValues = decodeFastPforInt32(encodedWordBuffer.subarray(0, encodedWordCount), expectedValueCount, workspace.decoderWorkspace);
|
|
1736
|
+
offset.add(encodedByteLength);
|
|
1737
|
+
return decodedValues;
|
|
1738
|
+
}
|
|
1739
|
+
function decodeZigZagInt32Value(encoded) {
|
|
1740
|
+
return encoded >>> 1 ^ -(encoded & 1);
|
|
1741
|
+
}
|
|
1742
|
+
function decodeZigZagInt64Value(encoded) {
|
|
1743
|
+
return encoded >> 1n ^ -(encoded & 1n);
|
|
1744
|
+
}
|
|
1745
|
+
function decodeZigZagFloat64Value(encoded) {
|
|
1746
|
+
return encoded % 2 === 1 ? (encoded + 1) / -2 : encoded / 2;
|
|
1747
|
+
}
|
|
1748
|
+
function decodeZigZagInt32(encodedData) {
|
|
1749
|
+
const decodedValues = new Int32Array(encodedData.length);
|
|
1750
|
+
for (let i = 0; i < encodedData.length; i++) {
|
|
1751
|
+
decodedValues[i] = decodeZigZagInt32Value(encodedData[i]);
|
|
1752
|
+
}
|
|
1753
|
+
return decodedValues;
|
|
1754
|
+
}
|
|
1755
|
+
function decodeZigZagInt64(encodedData) {
|
|
1756
|
+
const decodedValues = new BigInt64Array(encodedData.length);
|
|
1757
|
+
for (let i = 0; i < encodedData.length; i++) {
|
|
1758
|
+
decodedValues[i] = decodeZigZagInt64Value(encodedData[i]);
|
|
1759
|
+
}
|
|
1760
|
+
return decodedValues;
|
|
1761
|
+
}
|
|
1762
|
+
function decodeZigZagFloat64(encodedData) {
|
|
1763
|
+
for (let i = 0; i < encodedData.length; i++) {
|
|
1764
|
+
encodedData[i] = decodeZigZagFloat64Value(encodedData[i]);
|
|
1765
|
+
}
|
|
1766
|
+
}
|
|
1767
|
+
function decodeUnsignedRleInt32(encodedData, numRuns, numTotalValues) {
|
|
1768
|
+
if (numTotalValues === void 0) {
|
|
1769
|
+
numTotalValues = 0;
|
|
1770
|
+
for (let i = 0; i < numRuns; i++) {
|
|
1771
|
+
numTotalValues += encodedData[i];
|
|
1772
|
+
}
|
|
1773
|
+
}
|
|
1774
|
+
const decodedValues = new Uint32Array(numTotalValues);
|
|
1775
|
+
let offset = 0;
|
|
1776
|
+
for (let i = 0; i < numRuns; i++) {
|
|
1777
|
+
const runLength = encodedData[i];
|
|
1778
|
+
const value = encodedData[i + numRuns];
|
|
1779
|
+
decodedValues.fill(value, offset, offset + runLength);
|
|
1780
|
+
offset += runLength;
|
|
1781
|
+
}
|
|
1782
|
+
return decodedValues;
|
|
1783
|
+
}
|
|
1784
|
+
function decodeUnsignedRleInt64(encodedData, numRuns, numTotalValues) {
|
|
1785
|
+
if (numTotalValues === void 0) {
|
|
1786
|
+
numTotalValues = 0;
|
|
1787
|
+
for (let i = 0; i < numRuns; i++) {
|
|
1788
|
+
numTotalValues += Number(encodedData[i]);
|
|
1789
|
+
}
|
|
1790
|
+
}
|
|
1791
|
+
const decodedValues = new BigUint64Array(numTotalValues);
|
|
1792
|
+
let offset = 0;
|
|
1793
|
+
for (let i = 0; i < numRuns; i++) {
|
|
1794
|
+
const runLength = Number(encodedData[i]);
|
|
1795
|
+
const value = encodedData[i + numRuns];
|
|
1796
|
+
decodedValues.fill(value, offset, offset + runLength);
|
|
1797
|
+
offset += runLength;
|
|
1798
|
+
}
|
|
1799
|
+
return decodedValues;
|
|
1800
|
+
}
|
|
1801
|
+
function decodeUnsignedRleFloat64(encodedData, numRuns, numTotalValues) {
|
|
1802
|
+
const decodedValues = new Float64Array(numTotalValues);
|
|
1803
|
+
let offset = 0;
|
|
1804
|
+
for (let i = 0; i < numRuns; i++) {
|
|
1805
|
+
const runLength = encodedData[i];
|
|
1806
|
+
const value = encodedData[i + numRuns];
|
|
1807
|
+
decodedValues.fill(value, offset, offset + runLength);
|
|
1808
|
+
offset += runLength;
|
|
1809
|
+
}
|
|
1810
|
+
return decodedValues;
|
|
1811
|
+
}
|
|
1812
|
+
function decodeZigZagDeltaInt32(data) {
|
|
1813
|
+
const decodedValues = new Int32Array(data.length);
|
|
1814
|
+
decodedValues[0] = decodeZigZagInt32Value(data[0]);
|
|
1815
|
+
const sz0 = data.length / 4 * 4;
|
|
1816
|
+
let i = 1;
|
|
1817
|
+
if (sz0 >= 4) {
|
|
1818
|
+
for (; i < sz0 - 4; i += 4) {
|
|
1819
|
+
const data1 = data[i];
|
|
1820
|
+
const data2 = data[i + 1];
|
|
1821
|
+
const data3 = data[i + 2];
|
|
1822
|
+
const data4 = data[i + 3];
|
|
1823
|
+
decodedValues[i] = decodeZigZagInt32Value(data1) + decodedValues[i - 1];
|
|
1824
|
+
decodedValues[i + 1] = decodeZigZagInt32Value(data2) + decodedValues[i];
|
|
1825
|
+
decodedValues[i + 2] = decodeZigZagInt32Value(data3) + decodedValues[i + 1];
|
|
1826
|
+
decodedValues[i + 3] = decodeZigZagInt32Value(data4) + decodedValues[i + 2];
|
|
1827
|
+
}
|
|
1828
|
+
}
|
|
1829
|
+
for (; i !== data.length; ++i) {
|
|
1830
|
+
decodedValues[i] = decodeZigZagInt32Value(data[i]) + decodedValues[i - 1];
|
|
1831
|
+
}
|
|
1832
|
+
return decodedValues;
|
|
1833
|
+
}
|
|
1834
|
+
function decodeZigZagDeltaInt64(data) {
|
|
1835
|
+
const decodedValues = new BigInt64Array(data.length);
|
|
1836
|
+
decodedValues[0] = decodeZigZagInt64Value(data[0]);
|
|
1837
|
+
const sz0 = data.length / 4 * 4;
|
|
1838
|
+
let i = 1;
|
|
1839
|
+
if (sz0 >= 4) {
|
|
1840
|
+
for (; i < sz0 - 4; i += 4) {
|
|
1841
|
+
const data1 = data[i];
|
|
1842
|
+
const data2 = data[i + 1];
|
|
1843
|
+
const data3 = data[i + 2];
|
|
1844
|
+
const data4 = data[i + 3];
|
|
1845
|
+
decodedValues[i] = decodeZigZagInt64Value(data1) + decodedValues[i - 1];
|
|
1846
|
+
decodedValues[i + 1] = decodeZigZagInt64Value(data2) + decodedValues[i];
|
|
1847
|
+
decodedValues[i + 2] = decodeZigZagInt64Value(data3) + decodedValues[i + 1];
|
|
1848
|
+
decodedValues[i + 3] = decodeZigZagInt64Value(data4) + decodedValues[i + 2];
|
|
1849
|
+
}
|
|
1850
|
+
}
|
|
1851
|
+
for (; i !== decodedValues.length; ++i) {
|
|
1852
|
+
decodedValues[i] = decodeZigZagInt64Value(data[i]) + decodedValues[i - 1];
|
|
1853
|
+
}
|
|
1854
|
+
return decodedValues;
|
|
1855
|
+
}
|
|
1856
|
+
function decodeZigZagDeltaFloat64(data) {
|
|
1857
|
+
data[0] = decodeZigZagFloat64Value(data[0]);
|
|
1858
|
+
const sz0 = data.length / 4 * 4;
|
|
1859
|
+
let i = 1;
|
|
1860
|
+
if (sz0 >= 4) {
|
|
1861
|
+
for (; i < sz0 - 4; i += 4) {
|
|
1862
|
+
const data1 = data[i];
|
|
1863
|
+
const data2 = data[i + 1];
|
|
1864
|
+
const data3 = data[i + 2];
|
|
1865
|
+
const data4 = data[i + 3];
|
|
1866
|
+
data[i] = decodeZigZagFloat64Value(data1) + data[i - 1];
|
|
1867
|
+
data[i + 1] = decodeZigZagFloat64Value(data2) + data[i];
|
|
1868
|
+
data[i + 2] = decodeZigZagFloat64Value(data3) + data[i + 1];
|
|
1869
|
+
data[i + 3] = decodeZigZagFloat64Value(data4) + data[i + 2];
|
|
1870
|
+
}
|
|
1871
|
+
}
|
|
1872
|
+
for (; i !== data.length; ++i) {
|
|
1873
|
+
data[i] = decodeZigZagFloat64Value(data[i]) + data[i - 1];
|
|
1874
|
+
}
|
|
1875
|
+
}
|
|
1876
|
+
function decodeZigZagRleInt32(data, numRuns, numTotalValues) {
|
|
1877
|
+
if (numTotalValues === void 0) {
|
|
1878
|
+
numTotalValues = 0;
|
|
1879
|
+
for (let i = 0; i < numRuns; i++) {
|
|
1880
|
+
numTotalValues += data[i];
|
|
1881
|
+
}
|
|
1882
|
+
}
|
|
1883
|
+
const decodedValues = new Int32Array(numTotalValues);
|
|
1884
|
+
let offset = 0;
|
|
1885
|
+
for (let i = 0; i < numRuns; i++) {
|
|
1886
|
+
const runLength = data[i];
|
|
1887
|
+
let value = data[i + numRuns];
|
|
1888
|
+
value = decodeZigZagInt32Value(value);
|
|
1889
|
+
decodedValues.fill(value, offset, offset + runLength);
|
|
1890
|
+
offset += runLength;
|
|
1891
|
+
}
|
|
1892
|
+
return decodedValues;
|
|
1893
|
+
}
|
|
1894
|
+
function decodeZigZagRleInt64(data, numRuns, numTotalValues) {
|
|
1895
|
+
if (numTotalValues === void 0) {
|
|
1896
|
+
numTotalValues = 0;
|
|
1897
|
+
for (let i = 0; i < numRuns; i++) {
|
|
1898
|
+
numTotalValues += Number(data[i]);
|
|
1899
|
+
}
|
|
1900
|
+
}
|
|
1901
|
+
const decodedValues = new BigInt64Array(numTotalValues);
|
|
1902
|
+
let offset = 0;
|
|
1903
|
+
for (let i = 0; i < numRuns; i++) {
|
|
1904
|
+
const runLength = Number(data[i]);
|
|
1905
|
+
let value = data[i + numRuns];
|
|
1906
|
+
value = decodeZigZagInt64Value(value);
|
|
1907
|
+
decodedValues.fill(value, offset, offset + runLength);
|
|
1908
|
+
offset += runLength;
|
|
1909
|
+
}
|
|
1910
|
+
return decodedValues;
|
|
1911
|
+
}
|
|
1912
|
+
function decodeZigZagRleFloat64(data, numRuns, numTotalValues) {
|
|
1913
|
+
const decodedValues = new Float64Array(numTotalValues);
|
|
1914
|
+
let offset = 0;
|
|
1915
|
+
for (let i = 0; i < numRuns; i++) {
|
|
1916
|
+
const runLength = data[i];
|
|
1917
|
+
let value = data[i + numRuns];
|
|
1918
|
+
value = decodeZigZagFloat64Value(value);
|
|
1919
|
+
decodedValues.fill(value, offset, offset + runLength);
|
|
1920
|
+
offset += runLength;
|
|
1921
|
+
}
|
|
1922
|
+
return decodedValues;
|
|
1923
|
+
}
|
|
1924
|
+
function fastInverseDelta(data) {
|
|
1925
|
+
const sz0 = data.length / 4 * 4;
|
|
1926
|
+
let i = 1;
|
|
1927
|
+
if (sz0 >= 4) {
|
|
1928
|
+
for (let a = data[0]; i < sz0 - 4; i += 4) {
|
|
1929
|
+
a = data[i] += a;
|
|
1930
|
+
a = data[i + 1] += a;
|
|
1931
|
+
a = data[i + 2] += a;
|
|
1932
|
+
a = data[i + 3] += a;
|
|
1933
|
+
}
|
|
1934
|
+
}
|
|
1935
|
+
while (i !== data.length) {
|
|
1936
|
+
data[i] += data[i - 1];
|
|
1937
|
+
++i;
|
|
1938
|
+
}
|
|
1939
|
+
}
|
|
1940
|
+
function inverseDelta(data) {
|
|
1941
|
+
let prevValue = 0;
|
|
1942
|
+
for (let i = 0; i < data.length; i++) {
|
|
1943
|
+
data[i] += prevValue;
|
|
1944
|
+
prevValue = data[i];
|
|
1945
|
+
}
|
|
1946
|
+
}
|
|
1947
|
+
function decodeComponentwiseDeltaVec2(data) {
|
|
1948
|
+
if (data.length < 2)
|
|
1949
|
+
return new Int32Array(data);
|
|
1950
|
+
const decodedData = new Int32Array(data.length);
|
|
1951
|
+
decodedData[0] = decodeZigZagInt32Value(data[0]);
|
|
1952
|
+
decodedData[1] = decodeZigZagInt32Value(data[1]);
|
|
1953
|
+
const sz0 = data.length / 4 * 4;
|
|
1954
|
+
let i = 2;
|
|
1955
|
+
if (sz0 >= 4) {
|
|
1956
|
+
for (; i < sz0 - 4; i += 4) {
|
|
1957
|
+
const x1 = data[i];
|
|
1958
|
+
const y1 = data[i + 1];
|
|
1959
|
+
const x2 = data[i + 2];
|
|
1960
|
+
const y2 = data[i + 3];
|
|
1961
|
+
decodedData[i] = decodeZigZagInt32Value(x1) + decodedData[i - 2];
|
|
1962
|
+
decodedData[i + 1] = decodeZigZagInt32Value(y1) + decodedData[i - 1];
|
|
1963
|
+
decodedData[i + 2] = decodeZigZagInt32Value(x2) + decodedData[i];
|
|
1964
|
+
decodedData[i + 3] = decodeZigZagInt32Value(y2) + decodedData[i + 1];
|
|
1965
|
+
}
|
|
1966
|
+
}
|
|
1967
|
+
for (; i !== data.length; i += 2) {
|
|
1968
|
+
decodedData[i] = decodeZigZagInt32Value(data[i]) + decodedData[i - 2];
|
|
1969
|
+
decodedData[i + 1] = decodeZigZagInt32Value(data[i + 1]) + decodedData[i - 1];
|
|
1970
|
+
}
|
|
1971
|
+
return decodedData;
|
|
1972
|
+
}
|
|
1973
|
+
function decodeComponentwiseDeltaVec2Scaled(data, scale, min, max) {
|
|
1974
|
+
if (data.length < 2)
|
|
1975
|
+
return new Int32Array(data);
|
|
1976
|
+
const decodedData = new Int32Array(data.length);
|
|
1977
|
+
let previousVertexX = decodeZigZagInt32Value(data[0]);
|
|
1978
|
+
let previousVertexY = decodeZigZagInt32Value(data[1]);
|
|
1979
|
+
decodedData[0] = clamp(Math.round(previousVertexX * scale), min, max);
|
|
1980
|
+
decodedData[1] = clamp(Math.round(previousVertexY * scale), min, max);
|
|
1981
|
+
const sz0 = data.length / 16;
|
|
1982
|
+
let i = 2;
|
|
1983
|
+
if (sz0 >= 4) {
|
|
1984
|
+
for (; i < sz0 - 4; i += 4) {
|
|
1985
|
+
const x1 = data[i];
|
|
1986
|
+
const y1 = data[i + 1];
|
|
1987
|
+
const currentVertexX = decodeZigZagInt32Value(x1) + previousVertexX;
|
|
1988
|
+
const currentVertexY = decodeZigZagInt32Value(y1) + previousVertexY;
|
|
1989
|
+
decodedData[i] = clamp(Math.round(currentVertexX * scale), min, max);
|
|
1990
|
+
decodedData[i + 1] = clamp(Math.round(currentVertexY * scale), min, max);
|
|
1991
|
+
const x2 = data[i + 2];
|
|
1992
|
+
const y2 = data[i + 3];
|
|
1993
|
+
previousVertexX = decodeZigZagInt32Value(x2) + currentVertexX;
|
|
1994
|
+
previousVertexY = decodeZigZagInt32Value(y2) + currentVertexY;
|
|
1995
|
+
decodedData[i + 2] = clamp(Math.round(previousVertexX * scale), min, max);
|
|
1996
|
+
decodedData[i + 3] = clamp(Math.round(previousVertexY * scale), min, max);
|
|
1997
|
+
}
|
|
1998
|
+
}
|
|
1999
|
+
for (; i !== data.length; i += 2) {
|
|
2000
|
+
previousVertexX += decodeZigZagInt32Value(data[i]);
|
|
2001
|
+
previousVertexY += decodeZigZagInt32Value(data[i + 1]);
|
|
2002
|
+
decodedData[i] = clamp(Math.round(previousVertexX * scale), min, max);
|
|
2003
|
+
decodedData[i + 1] = clamp(Math.round(previousVertexY * scale), min, max);
|
|
2004
|
+
}
|
|
2005
|
+
return decodedData;
|
|
2006
|
+
}
|
|
2007
|
+
function clamp(n, min, max) {
|
|
2008
|
+
return Math.min(max, Math.max(min, n));
|
|
2009
|
+
}
|
|
2010
|
+
function decodeZigZagDeltaOfDeltaInt32(data) {
|
|
2011
|
+
const decodedData = new Int32Array(data.length + 1);
|
|
2012
|
+
decodedData[0] = 0;
|
|
2013
|
+
decodedData[1] = decodeZigZagInt32Value(data[0]);
|
|
2014
|
+
let deltaSum = decodedData[1];
|
|
2015
|
+
for (let i = 2; i !== decodedData.length; ++i) {
|
|
2016
|
+
const zigZagValue = data[i - 1];
|
|
2017
|
+
const delta = decodeZigZagInt32Value(zigZagValue);
|
|
2018
|
+
deltaSum += delta;
|
|
2019
|
+
decodedData[i] = decodedData[i - 1] + deltaSum;
|
|
2020
|
+
}
|
|
2021
|
+
return new Uint32Array(decodedData);
|
|
2022
|
+
}
|
|
2023
|
+
function decodeZigZagRleDeltaInt32(data, numRuns, numTotalValues) {
|
|
2024
|
+
const decodedValues = new Int32Array(numTotalValues + 1);
|
|
2025
|
+
decodedValues[0] = 0;
|
|
2026
|
+
let offset = 1;
|
|
2027
|
+
let previousValue = decodedValues[0];
|
|
2028
|
+
for (let i = 0; i < numRuns; i++) {
|
|
2029
|
+
const runLength = data[i];
|
|
2030
|
+
let value = data[i + numRuns];
|
|
2031
|
+
value = decodeZigZagInt32Value(value);
|
|
2032
|
+
for (let j = offset; j < offset + runLength; j++) {
|
|
2033
|
+
decodedValues[j] = value + previousValue;
|
|
2034
|
+
previousValue = decodedValues[j];
|
|
2035
|
+
}
|
|
2036
|
+
offset += runLength;
|
|
2037
|
+
}
|
|
2038
|
+
return decodedValues;
|
|
2039
|
+
}
|
|
2040
|
+
function decodeRleDeltaInt32(data, numRuns, numTotalValues) {
|
|
2041
|
+
const decodedValues = new Uint32Array(numTotalValues + 1);
|
|
2042
|
+
decodedValues[0] = 0;
|
|
2043
|
+
let offset = 1;
|
|
2044
|
+
let previousValue = decodedValues[0];
|
|
2045
|
+
for (let i = 0; i < numRuns; i++) {
|
|
2046
|
+
const runLength = data[i];
|
|
2047
|
+
const value = data[i + numRuns];
|
|
2048
|
+
for (let j = offset; j < offset + runLength; j++) {
|
|
2049
|
+
decodedValues[j] = value + previousValue;
|
|
2050
|
+
previousValue = decodedValues[j];
|
|
2051
|
+
}
|
|
2052
|
+
offset += runLength;
|
|
2053
|
+
}
|
|
2054
|
+
return decodedValues;
|
|
2055
|
+
}
|
|
2056
|
+
function decodeDeltaRleInt32(data, numRuns, numValues) {
|
|
2057
|
+
const result = new Int32Array(numValues);
|
|
2058
|
+
let outPos = 0;
|
|
2059
|
+
let previousValue = 0;
|
|
2060
|
+
for (let i = 0; i < numRuns; i++) {
|
|
2061
|
+
const runLength = data[i];
|
|
2062
|
+
const zigZagDelta = data[i + numRuns];
|
|
2063
|
+
const delta = decodeZigZagInt32Value(zigZagDelta);
|
|
2064
|
+
for (let j = 0; j < runLength; j++) {
|
|
2065
|
+
previousValue += delta;
|
|
2066
|
+
result[outPos++] = previousValue;
|
|
2067
|
+
}
|
|
2068
|
+
}
|
|
2069
|
+
return result;
|
|
2070
|
+
}
|
|
2071
|
+
function decodeDeltaRleInt64(data, numRuns, numValues) {
|
|
2072
|
+
const result = new BigInt64Array(numValues);
|
|
2073
|
+
let outPos = 0;
|
|
2074
|
+
let previousValue = 0n;
|
|
2075
|
+
for (let i = 0; i < numRuns; i++) {
|
|
2076
|
+
const runLength = Number(data[i]);
|
|
2077
|
+
const zigZagDelta = data[i + numRuns];
|
|
2078
|
+
const delta = decodeZigZagInt64Value(zigZagDelta);
|
|
2079
|
+
for (let j = 0; j < runLength; j++) {
|
|
2080
|
+
previousValue += delta;
|
|
2081
|
+
result[outPos++] = previousValue;
|
|
2082
|
+
}
|
|
2083
|
+
}
|
|
2084
|
+
return result;
|
|
2085
|
+
}
|
|
2086
|
+
function decodeUnsignedZigZagDeltaInt32(data) {
|
|
2087
|
+
const decodedValues = new Uint32Array(data.length);
|
|
2088
|
+
decodedValues[0] = decodeZigZagInt32Value(data[0]) >>> 0;
|
|
2089
|
+
for (let i = 1; i < data.length; i++) {
|
|
2090
|
+
decodedValues[i] = decodedValues[i - 1] + decodeZigZagInt32Value(data[i]) >>> 0;
|
|
2091
|
+
}
|
|
2092
|
+
return decodedValues;
|
|
2093
|
+
}
|
|
2094
|
+
function decodeUnsignedZigZagDeltaInt64(data) {
|
|
2095
|
+
const decodedValues = new BigUint64Array(data.length);
|
|
2096
|
+
decodedValues[0] = BigInt.asUintN(64, decodeZigZagInt64Value(data[0]));
|
|
2097
|
+
for (let i = 1; i < data.length; i++) {
|
|
2098
|
+
decodedValues[i] = BigInt.asUintN(64, decodedValues[i - 1] + decodeZigZagInt64Value(data[i]));
|
|
2099
|
+
}
|
|
2100
|
+
return decodedValues;
|
|
2101
|
+
}
|
|
2102
|
+
function decodeUnsignedComponentwiseDeltaVec2(data) {
|
|
2103
|
+
if (data.length < 2) {
|
|
2104
|
+
return new Uint32Array(data);
|
|
2105
|
+
}
|
|
2106
|
+
const decodedData = new Uint32Array(data.length);
|
|
2107
|
+
decodedData[0] = decodeZigZagInt32Value(data[0]) >>> 0;
|
|
2108
|
+
decodedData[1] = decodeZigZagInt32Value(data[1]) >>> 0;
|
|
2109
|
+
for (let i = 2; i < data.length; i += 2) {
|
|
2110
|
+
decodedData[i] = decodedData[i - 2] + decodeZigZagInt32Value(data[i]) >>> 0;
|
|
2111
|
+
decodedData[i + 1] = decodedData[i - 1] + decodeZigZagInt32Value(data[i + 1]) >>> 0;
|
|
2112
|
+
}
|
|
2113
|
+
return decodedData;
|
|
2114
|
+
}
|
|
2115
|
+
function decodeUnsignedComponentwiseDeltaVec2Scaled(data, scale, min, max) {
|
|
2116
|
+
const scaledValues = decodeComponentwiseDeltaVec2Scaled(data, scale, min, max);
|
|
2117
|
+
return new Uint32Array(scaledValues);
|
|
2118
|
+
}
|
|
2119
|
+
function decodeUnsignedConstRleInt32(data) {
|
|
2120
|
+
return data[1];
|
|
2121
|
+
}
|
|
2122
|
+
function decodeZigZagConstRleInt32(data) {
|
|
2123
|
+
return decodeZigZagInt32Value(data[1]);
|
|
2124
|
+
}
|
|
2125
|
+
function decodeZigZagSequenceRleInt32(data) {
|
|
2126
|
+
if (data.length === 2) {
|
|
2127
|
+
const value = decodeZigZagInt32Value(data[1]);
|
|
2128
|
+
return [value, value];
|
|
2129
|
+
}
|
|
2130
|
+
const base = decodeZigZagInt32Value(data[2]);
|
|
2131
|
+
const delta = decodeZigZagInt32Value(data[3]);
|
|
2132
|
+
return [base, delta];
|
|
2133
|
+
}
|
|
2134
|
+
function decodeUnsignedConstRleInt64(data) {
|
|
2135
|
+
return data[1];
|
|
2136
|
+
}
|
|
2137
|
+
function decodeZigZagConstRleInt64(data) {
|
|
2138
|
+
return decodeZigZagInt64Value(data[1]);
|
|
2139
|
+
}
|
|
2140
|
+
function decodeZigZagSequenceRleInt64(data) {
|
|
2141
|
+
if (data.length === 2) {
|
|
2142
|
+
const value = decodeZigZagInt64Value(data[1]);
|
|
2143
|
+
return [value, value];
|
|
2144
|
+
}
|
|
2145
|
+
const base = decodeZigZagInt64Value(data[2]);
|
|
2146
|
+
const delta = decodeZigZagInt64Value(data[3]);
|
|
2147
|
+
return [base, delta];
|
|
2148
|
+
}
|
|
2149
|
+
|
|
2150
|
+
// ../../node_modules/@maplibre/mlt/dist/metadata/tile/physicalStreamType.js
|
|
2151
|
+
var PhysicalStreamType;
|
|
2152
|
+
(function(PhysicalStreamType2) {
|
|
2153
|
+
PhysicalStreamType2["PRESENT"] = "PRESENT";
|
|
2154
|
+
PhysicalStreamType2["DATA"] = "DATA";
|
|
2155
|
+
PhysicalStreamType2["OFFSET"] = "OFFSET";
|
|
2156
|
+
PhysicalStreamType2["LENGTH"] = "LENGTH";
|
|
2157
|
+
})(PhysicalStreamType || (PhysicalStreamType = {}));
|
|
2158
|
+
|
|
2159
|
+
// ../../node_modules/@maplibre/mlt/dist/metadata/tile/dictionaryType.js
|
|
2160
|
+
var DictionaryType;
|
|
2161
|
+
(function(DictionaryType2) {
|
|
2162
|
+
DictionaryType2["NONE"] = "NONE";
|
|
2163
|
+
DictionaryType2["SINGLE"] = "SINGLE";
|
|
2164
|
+
DictionaryType2["SHARED"] = "SHARED";
|
|
2165
|
+
DictionaryType2["VERTEX"] = "VERTEX";
|
|
2166
|
+
DictionaryType2["MORTON"] = "MORTON";
|
|
2167
|
+
DictionaryType2["FSST"] = "FSST";
|
|
2168
|
+
})(DictionaryType || (DictionaryType = {}));
|
|
2169
|
+
|
|
2170
|
+
// ../../node_modules/@maplibre/mlt/dist/metadata/tile/offsetType.js
|
|
2171
|
+
var OffsetType;
|
|
2172
|
+
(function(OffsetType2) {
|
|
2173
|
+
OffsetType2["VERTEX"] = "VERTEX";
|
|
2174
|
+
OffsetType2["INDEX"] = "INDEX";
|
|
2175
|
+
OffsetType2["STRING"] = "STRING";
|
|
2176
|
+
OffsetType2["KEY"] = "KEY";
|
|
2177
|
+
})(OffsetType || (OffsetType = {}));
|
|
2178
|
+
|
|
2179
|
+
// ../../node_modules/@maplibre/mlt/dist/metadata/tile/lengthType.js
|
|
2180
|
+
var LengthType;
|
|
2181
|
+
(function(LengthType2) {
|
|
2182
|
+
LengthType2["VAR_BINARY"] = "VAR_BINARY";
|
|
2183
|
+
LengthType2["GEOMETRIES"] = "GEOMETRIES";
|
|
2184
|
+
LengthType2["PARTS"] = "PARTS";
|
|
2185
|
+
LengthType2["RINGS"] = "RINGS";
|
|
2186
|
+
LengthType2["TRIANGLES"] = "TRIANGLES";
|
|
2187
|
+
LengthType2["SYMBOL"] = "SYMBOL";
|
|
2188
|
+
LengthType2["DICTIONARY"] = "DICTIONARY";
|
|
2189
|
+
})(LengthType || (LengthType = {}));
|
|
2190
|
+
|
|
2191
|
+
// ../../node_modules/@maplibre/mlt/dist/metadata/tile/streamMetadataDecoder.js
|
|
2192
|
+
function decodeStreamMetadata(tile, offset) {
|
|
2193
|
+
const streamMetadata = decodeStreamMetadataInternal(tile, offset);
|
|
2194
|
+
if (streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.MORTON) {
|
|
2195
|
+
return decodePartialMortonEncodedStreamMetadata(streamMetadata, tile, offset);
|
|
2196
|
+
}
|
|
2197
|
+
if ((LogicalLevelTechnique.RLE === streamMetadata.logicalLevelTechnique1 || LogicalLevelTechnique.RLE === streamMetadata.logicalLevelTechnique2) && PhysicalLevelTechnique.NONE !== streamMetadata.physicalLevelTechnique) {
|
|
2198
|
+
return decodePartialRleEncodedStreamMetadata(streamMetadata, tile, offset);
|
|
2199
|
+
}
|
|
2200
|
+
return streamMetadata;
|
|
2201
|
+
}
|
|
2202
|
+
function decodePartialMortonEncodedStreamMetadata(streamMetadata, tile, offset) {
|
|
2203
|
+
const mortonInfo = decodeVarintInt32(tile, offset, 2);
|
|
2204
|
+
return {
|
|
2205
|
+
physicalStreamType: streamMetadata.physicalStreamType,
|
|
2206
|
+
logicalStreamType: streamMetadata.logicalStreamType,
|
|
2207
|
+
logicalLevelTechnique1: streamMetadata.logicalLevelTechnique1,
|
|
2208
|
+
logicalLevelTechnique2: streamMetadata.logicalLevelTechnique2,
|
|
2209
|
+
physicalLevelTechnique: streamMetadata.physicalLevelTechnique,
|
|
2210
|
+
numValues: streamMetadata.numValues,
|
|
2211
|
+
byteLength: streamMetadata.byteLength,
|
|
2212
|
+
decompressedCount: streamMetadata.decompressedCount,
|
|
2213
|
+
numBits: mortonInfo[0],
|
|
2214
|
+
coordinateShift: mortonInfo[1]
|
|
2215
|
+
};
|
|
2216
|
+
}
|
|
2217
|
+
function decodePartialRleEncodedStreamMetadata(streamMetadata, tile, offset) {
|
|
2218
|
+
const rleInfo = decodeVarintInt32(tile, offset, 2);
|
|
2219
|
+
return {
|
|
2220
|
+
physicalStreamType: streamMetadata.physicalStreamType,
|
|
2221
|
+
logicalStreamType: streamMetadata.logicalStreamType,
|
|
2222
|
+
logicalLevelTechnique1: streamMetadata.logicalLevelTechnique1,
|
|
2223
|
+
logicalLevelTechnique2: streamMetadata.logicalLevelTechnique2,
|
|
2224
|
+
physicalLevelTechnique: streamMetadata.physicalLevelTechnique,
|
|
2225
|
+
numValues: streamMetadata.numValues,
|
|
2226
|
+
byteLength: streamMetadata.byteLength,
|
|
2227
|
+
decompressedCount: rleInfo[1],
|
|
2228
|
+
runs: rleInfo[0],
|
|
2229
|
+
numRleValues: rleInfo[1]
|
|
2230
|
+
};
|
|
2231
|
+
}
|
|
2232
|
+
function decodeStreamMetadataInternal(tile, offset) {
|
|
2233
|
+
const stream_type = tile[offset.get()];
|
|
2234
|
+
const physicalStreamType = Object.values(PhysicalStreamType)[stream_type >> 4];
|
|
2235
|
+
let logicalStreamType = null;
|
|
2236
|
+
switch (physicalStreamType) {
|
|
2237
|
+
case PhysicalStreamType.DATA:
|
|
2238
|
+
logicalStreamType = {
|
|
2239
|
+
dictionaryType: Object.values(DictionaryType)[stream_type & 15]
|
|
2240
|
+
};
|
|
2241
|
+
break;
|
|
2242
|
+
case PhysicalStreamType.OFFSET:
|
|
2243
|
+
logicalStreamType = {
|
|
2244
|
+
offsetType: Object.values(OffsetType)[stream_type & 15]
|
|
2245
|
+
};
|
|
2246
|
+
break;
|
|
2247
|
+
case PhysicalStreamType.LENGTH:
|
|
2248
|
+
logicalStreamType = {
|
|
2249
|
+
lengthType: Object.values(LengthType)[stream_type & 15]
|
|
2250
|
+
};
|
|
2251
|
+
break;
|
|
2252
|
+
}
|
|
2253
|
+
offset.increment();
|
|
2254
|
+
const encodings_header = tile[offset.get()];
|
|
2255
|
+
const llt1 = Object.values(LogicalLevelTechnique)[encodings_header >> 5];
|
|
2256
|
+
const llt2 = Object.values(LogicalLevelTechnique)[encodings_header >> 2 & 7];
|
|
2257
|
+
const plt = Object.values(PhysicalLevelTechnique)[encodings_header & 3];
|
|
2258
|
+
offset.increment();
|
|
2259
|
+
const sizeInfo = decodeVarintInt32(tile, offset, 2);
|
|
2260
|
+
const numValues = sizeInfo[0];
|
|
2261
|
+
const byteLength = sizeInfo[1];
|
|
2262
|
+
return {
|
|
2263
|
+
physicalStreamType,
|
|
2264
|
+
logicalStreamType,
|
|
2265
|
+
logicalLevelTechnique1: llt1,
|
|
2266
|
+
logicalLevelTechnique2: llt2,
|
|
2267
|
+
physicalLevelTechnique: plt,
|
|
2268
|
+
numValues,
|
|
2269
|
+
byteLength,
|
|
2270
|
+
decompressedCount: numValues
|
|
2271
|
+
};
|
|
2272
|
+
}
|
|
2273
|
+
|
|
2274
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/vectorType.js
|
|
2275
|
+
var VectorType;
|
|
2276
|
+
(function(VectorType2) {
|
|
2277
|
+
VectorType2[VectorType2["FLAT"] = 0] = "FLAT";
|
|
2278
|
+
VectorType2[VectorType2["CONST"] = 1] = "CONST";
|
|
2279
|
+
VectorType2[VectorType2["SEQUENCE"] = 2] = "SEQUENCE";
|
|
2280
|
+
VectorType2[VectorType2["DICTIONARY"] = 3] = "DICTIONARY";
|
|
2281
|
+
VectorType2[VectorType2["FSST_DICTIONARY"] = 4] = "FSST_DICTIONARY";
|
|
2282
|
+
})(VectorType || (VectorType = {}));
|
|
2283
|
+
|
|
2284
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/flat/bitVector.js
|
|
2285
|
+
var BitVector = class {
|
|
2286
|
+
/**
|
|
2287
|
+
* @param values The byte buffer containing the bit values in least-significant bit (LSB)
|
|
2288
|
+
* numbering
|
|
2289
|
+
*/
|
|
2290
|
+
constructor(values, size) {
|
|
2291
|
+
this.values = values;
|
|
2292
|
+
this._size = size;
|
|
2293
|
+
}
|
|
2294
|
+
get(index) {
|
|
2295
|
+
const byteIndex = Math.floor(index / 8);
|
|
2296
|
+
const bitIndex = index % 8;
|
|
2297
|
+
const b = this.values[byteIndex];
|
|
2298
|
+
return (b >> bitIndex & 1) === 1;
|
|
2299
|
+
}
|
|
2300
|
+
set(index, value) {
|
|
2301
|
+
const byteIndex = Math.floor(index / 8);
|
|
2302
|
+
const bitIndex = index % 8;
|
|
2303
|
+
this.values[byteIndex] = this.values[byteIndex] | (value ? 1 : 0) << bitIndex;
|
|
2304
|
+
}
|
|
2305
|
+
getInt(index) {
|
|
2306
|
+
const byteIndex = Math.floor(index / 8);
|
|
2307
|
+
const bitIndex = index % 8;
|
|
2308
|
+
const b = this.values[byteIndex];
|
|
2309
|
+
return b >> bitIndex & 1;
|
|
2310
|
+
}
|
|
2311
|
+
size() {
|
|
2312
|
+
return this._size;
|
|
2313
|
+
}
|
|
2314
|
+
getBuffer() {
|
|
2315
|
+
return this.values;
|
|
2316
|
+
}
|
|
2317
|
+
};
|
|
2318
|
+
|
|
2319
|
+
// ../../node_modules/@maplibre/mlt/dist/decoding/unpackNullableUtils.js
|
|
2320
|
+
function unpackNullable(dataStream, presentBits, defaultValue) {
|
|
2321
|
+
if (!presentBits) {
|
|
2322
|
+
return dataStream;
|
|
2323
|
+
}
|
|
2324
|
+
const size = presentBits.size();
|
|
2325
|
+
const constructor = dataStream.constructor;
|
|
2326
|
+
const result = new constructor(size);
|
|
2327
|
+
let counter = 0;
|
|
2328
|
+
for (let i = 0; i < size; i++) {
|
|
2329
|
+
result[i] = presentBits.get(i) ? dataStream[counter++] : defaultValue;
|
|
2330
|
+
}
|
|
2331
|
+
return result;
|
|
2332
|
+
}
|
|
2333
|
+
function unpackNullableBoolean(dataStream, dataStreamSize, presentBits) {
|
|
2334
|
+
if (!presentBits) {
|
|
2335
|
+
return dataStream;
|
|
2336
|
+
}
|
|
2337
|
+
const numFeatures = presentBits.size();
|
|
2338
|
+
const bitVector = new BitVector(dataStream, dataStreamSize);
|
|
2339
|
+
const result = new BitVector(new Uint8Array(Math.ceil(numFeatures / 8)), numFeatures);
|
|
2340
|
+
let counter = 0;
|
|
2341
|
+
for (let i = 0; i < numFeatures; i++) {
|
|
2342
|
+
const value = presentBits.get(i) ? bitVector.get(counter++) : false;
|
|
2343
|
+
result.set(i, value);
|
|
2344
|
+
}
|
|
2345
|
+
return result.getBuffer();
|
|
2346
|
+
}
|
|
2347
|
+
|
|
2348
|
+
// ../../node_modules/@maplibre/mlt/dist/decoding/integerStreamDecoder.js
|
|
2349
|
+
function decodeSignedInt32Stream(data, offset, streamMetadata, scalingData, nullabilityBuffer) {
|
|
2350
|
+
const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);
|
|
2351
|
+
return decodeSignedInt32(values, streamMetadata, scalingData, nullabilityBuffer);
|
|
2352
|
+
}
|
|
2353
|
+
function decodeUnsignedInt32Stream(data, offset, streamMetadata, scalingData, nullabilityBuffer) {
|
|
2354
|
+
const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);
|
|
2355
|
+
return decodeUnsignedInt32(values, streamMetadata, scalingData, nullabilityBuffer);
|
|
2356
|
+
}
|
|
2357
|
+
function decodeLengthStreamToOffsetBuffer(data, offset, streamMetadata) {
|
|
2358
|
+
const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);
|
|
2359
|
+
return decodeLengthToOffsetBuffer(values, streamMetadata);
|
|
2360
|
+
}
|
|
2361
|
+
function decodePhysicalLevelTechnique(data, offset, streamMetadata) {
|
|
2362
|
+
const physicalLevelTechnique = streamMetadata.physicalLevelTechnique;
|
|
2363
|
+
switch (physicalLevelTechnique) {
|
|
2364
|
+
case PhysicalLevelTechnique.FAST_PFOR:
|
|
2365
|
+
return decodeFastPfor(data, streamMetadata.numValues, streamMetadata.byteLength, offset);
|
|
2366
|
+
case PhysicalLevelTechnique.VARINT:
|
|
2367
|
+
return decodeVarintInt32(data, offset, streamMetadata.numValues);
|
|
2368
|
+
case PhysicalLevelTechnique.NONE: {
|
|
2369
|
+
const dataOffset = offset.get();
|
|
2370
|
+
const byteLength = streamMetadata.byteLength;
|
|
2371
|
+
offset.add(byteLength);
|
|
2372
|
+
const slice = data.subarray(dataOffset, offset.get());
|
|
2373
|
+
return new Uint32Array(slice);
|
|
2374
|
+
}
|
|
2375
|
+
default:
|
|
2376
|
+
throw new Error(`Specified physicalLevelTechnique ${physicalLevelTechnique} is not supported (yet).`);
|
|
2377
|
+
}
|
|
2378
|
+
}
|
|
2379
|
+
function decodeSignedConstInt32Stream(data, offset, streamMetadata) {
|
|
2380
|
+
const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);
|
|
2381
|
+
if (values.length === 1) {
|
|
2382
|
+
return decodeZigZagInt32Value(values[0]);
|
|
2383
|
+
}
|
|
2384
|
+
return decodeZigZagConstRleInt32(values);
|
|
2385
|
+
}
|
|
2386
|
+
function decodeUnsignedConstInt32Stream(data, offset, streamMetadata) {
|
|
2387
|
+
const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);
|
|
2388
|
+
if (values.length === 1) {
|
|
2389
|
+
return values[0];
|
|
2390
|
+
}
|
|
2391
|
+
return decodeUnsignedConstRleInt32(values);
|
|
2392
|
+
}
|
|
2393
|
+
function decodeSequenceInt32Stream(data, offset, streamMetadata) {
|
|
2394
|
+
const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);
|
|
2395
|
+
return decodeZigZagSequenceRleInt32(values);
|
|
2396
|
+
}
|
|
2397
|
+
function decodeSequenceInt64Stream(data, offset, streamMetadata) {
|
|
2398
|
+
const values = decodeVarintInt64(data, offset, streamMetadata.numValues);
|
|
2399
|
+
return decodeZigZagSequenceRleInt64(values);
|
|
2400
|
+
}
|
|
2401
|
+
function decodeSignedInt64Stream(data, offset, streamMetadata, nullabilityBuffer) {
|
|
2402
|
+
const values = decodeVarintInt64(data, offset, streamMetadata.numValues);
|
|
2403
|
+
return decodeSignedInt64(values, streamMetadata, nullabilityBuffer);
|
|
2404
|
+
}
|
|
2405
|
+
function decodeUnsignedInt64Stream(data, offset, streamMetadata, nullabilityBuffer) {
|
|
2406
|
+
const values = decodeVarintInt64(data, offset, streamMetadata.numValues);
|
|
2407
|
+
return decodeUnsignedInt64(values, streamMetadata, nullabilityBuffer);
|
|
2408
|
+
}
|
|
2409
|
+
function decodeUnsignedInt64AsFloat64Stream(data, offset, streamMetadata) {
|
|
2410
|
+
const values = decodeVarintFloat64(data, offset, streamMetadata.numValues);
|
|
2411
|
+
return decodeFloat64Values(values, streamMetadata, false);
|
|
2412
|
+
}
|
|
2413
|
+
function decodeSignedConstInt64Stream(data, offset, streamMetadata) {
|
|
2414
|
+
const values = decodeVarintInt64(data, offset, streamMetadata.numValues);
|
|
2415
|
+
if (values.length === 1) {
|
|
2416
|
+
return decodeZigZagInt64Value(values[0]);
|
|
2417
|
+
}
|
|
2418
|
+
return decodeZigZagConstRleInt64(values);
|
|
2419
|
+
}
|
|
2420
|
+
function decodeUnsignedConstInt64Stream(data, offset, streamMetadata) {
|
|
2421
|
+
const values = decodeVarintInt64(data, offset, streamMetadata.numValues);
|
|
2422
|
+
if (values.length === 1) {
|
|
2423
|
+
return values[0];
|
|
2424
|
+
}
|
|
2425
|
+
return decodeUnsignedConstRleInt64(values);
|
|
2426
|
+
}
|
|
2427
|
+
function decodeSignedInt32(values, streamMetadata, scalingData, nullabilityBuffer) {
|
|
2428
|
+
let decodedValues;
|
|
2429
|
+
switch (streamMetadata.logicalLevelTechnique1) {
|
|
2430
|
+
case LogicalLevelTechnique.DELTA:
|
|
2431
|
+
if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {
|
|
2432
|
+
const rleMetadata = streamMetadata;
|
|
2433
|
+
if (!nullabilityBuffer) {
|
|
2434
|
+
return decodeDeltaRleInt32(values, rleMetadata.runs, rleMetadata.numRleValues);
|
|
2435
|
+
}
|
|
2436
|
+
values = decodeUnsignedRleInt32(values, rleMetadata.runs, rleMetadata.numRleValues);
|
|
2437
|
+
decodedValues = decodeZigZagDeltaInt32(values);
|
|
2438
|
+
} else {
|
|
2439
|
+
decodedValues = decodeZigZagDeltaInt32(values);
|
|
2440
|
+
}
|
|
2441
|
+
break;
|
|
2442
|
+
case LogicalLevelTechnique.RLE:
|
|
2443
|
+
decodedValues = decodeZigZagRleInt32(values, streamMetadata.runs, streamMetadata.numRleValues);
|
|
2444
|
+
break;
|
|
2445
|
+
case LogicalLevelTechnique.MORTON:
|
|
2446
|
+
fastInverseDelta(values);
|
|
2447
|
+
decodedValues = new Int32Array(values);
|
|
2448
|
+
break;
|
|
2449
|
+
case LogicalLevelTechnique.COMPONENTWISE_DELTA:
|
|
2450
|
+
if (scalingData && !nullabilityBuffer) {
|
|
2451
|
+
return decodeComponentwiseDeltaVec2Scaled(values, scalingData.scale, scalingData.min, scalingData.max);
|
|
2452
|
+
}
|
|
2453
|
+
decodedValues = decodeComponentwiseDeltaVec2(values);
|
|
2454
|
+
break;
|
|
2455
|
+
case LogicalLevelTechnique.NONE:
|
|
2456
|
+
decodedValues = decodeZigZagInt32(values);
|
|
2457
|
+
break;
|
|
2458
|
+
default:
|
|
2459
|
+
throw new Error(`The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`);
|
|
2460
|
+
}
|
|
2461
|
+
if (nullabilityBuffer) {
|
|
2462
|
+
return unpackNullable(decodedValues, nullabilityBuffer, 0);
|
|
2463
|
+
}
|
|
2464
|
+
return decodedValues;
|
|
2465
|
+
}
|
|
2466
|
+
function decodeUnsignedInt32(values, streamMetadata, scalingData, nullabilityBuffer) {
|
|
2467
|
+
let decodedValues;
|
|
2468
|
+
switch (streamMetadata.logicalLevelTechnique1) {
|
|
2469
|
+
case LogicalLevelTechnique.DELTA:
|
|
2470
|
+
if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {
|
|
2471
|
+
const rleMetadata = streamMetadata;
|
|
2472
|
+
const deltaValues = decodeUnsignedRleInt32(values, rleMetadata.runs, rleMetadata.numRleValues);
|
|
2473
|
+
decodedValues = decodeUnsignedZigZagDeltaInt32(deltaValues);
|
|
2474
|
+
} else {
|
|
2475
|
+
decodedValues = decodeUnsignedZigZagDeltaInt32(values);
|
|
2476
|
+
}
|
|
2477
|
+
break;
|
|
2478
|
+
case LogicalLevelTechnique.RLE:
|
|
2479
|
+
decodedValues = decodeUnsignedRleInt32(values, streamMetadata.runs, streamMetadata.numRleValues);
|
|
2480
|
+
break;
|
|
2481
|
+
case LogicalLevelTechnique.MORTON:
|
|
2482
|
+
fastInverseDelta(values);
|
|
2483
|
+
decodedValues = values;
|
|
2484
|
+
break;
|
|
2485
|
+
case LogicalLevelTechnique.COMPONENTWISE_DELTA:
|
|
2486
|
+
if (scalingData && !nullabilityBuffer) {
|
|
2487
|
+
decodedValues = decodeUnsignedComponentwiseDeltaVec2Scaled(values, scalingData.scale, scalingData.min, scalingData.max);
|
|
2488
|
+
} else {
|
|
2489
|
+
decodedValues = decodeUnsignedComponentwiseDeltaVec2(values);
|
|
2490
|
+
}
|
|
2491
|
+
break;
|
|
2492
|
+
case LogicalLevelTechnique.NONE:
|
|
2493
|
+
decodedValues = values;
|
|
2494
|
+
break;
|
|
2495
|
+
default:
|
|
2496
|
+
throw new Error(`The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`);
|
|
2497
|
+
}
|
|
2498
|
+
if (nullabilityBuffer) {
|
|
2499
|
+
return unpackNullable(decodedValues, nullabilityBuffer, 0);
|
|
2500
|
+
}
|
|
2501
|
+
return decodedValues;
|
|
2502
|
+
}
|
|
2503
|
+
function decodeSignedInt64(values, streamMetadata, nullabilityBuffer) {
|
|
2504
|
+
let decodedValues;
|
|
2505
|
+
switch (streamMetadata.logicalLevelTechnique1) {
|
|
2506
|
+
case LogicalLevelTechnique.DELTA:
|
|
2507
|
+
if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {
|
|
2508
|
+
const rleMetadata = streamMetadata;
|
|
2509
|
+
if (!nullabilityBuffer) {
|
|
2510
|
+
return decodeDeltaRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);
|
|
2511
|
+
}
|
|
2512
|
+
values = decodeUnsignedRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);
|
|
2513
|
+
decodedValues = decodeZigZagDeltaInt64(values);
|
|
2514
|
+
} else {
|
|
2515
|
+
decodedValues = decodeZigZagDeltaInt64(values);
|
|
2516
|
+
}
|
|
2517
|
+
break;
|
|
2518
|
+
case LogicalLevelTechnique.RLE:
|
|
2519
|
+
decodedValues = decodeZigZagRleInt64(values, streamMetadata.runs, streamMetadata.numRleValues);
|
|
2520
|
+
break;
|
|
2521
|
+
case LogicalLevelTechnique.NONE:
|
|
2522
|
+
decodedValues = decodeZigZagInt64(values);
|
|
2523
|
+
break;
|
|
2524
|
+
default:
|
|
2525
|
+
throw new Error(`The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`);
|
|
2526
|
+
}
|
|
2527
|
+
if (nullabilityBuffer) {
|
|
2528
|
+
return unpackNullable(decodedValues, nullabilityBuffer, 0n);
|
|
2529
|
+
}
|
|
2530
|
+
return decodedValues;
|
|
2531
|
+
}
|
|
2532
|
+
function decodeUnsignedInt64(values, streamMetadata, nullabilityBuffer) {
|
|
2533
|
+
let decodedValues;
|
|
2534
|
+
switch (streamMetadata.logicalLevelTechnique1) {
|
|
2535
|
+
case LogicalLevelTechnique.DELTA:
|
|
2536
|
+
if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {
|
|
2537
|
+
const rleMetadata = streamMetadata;
|
|
2538
|
+
const deltaValues = decodeUnsignedRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);
|
|
2539
|
+
decodedValues = decodeUnsignedZigZagDeltaInt64(deltaValues);
|
|
2540
|
+
} else {
|
|
2541
|
+
decodedValues = decodeUnsignedZigZagDeltaInt64(values);
|
|
2542
|
+
}
|
|
2543
|
+
break;
|
|
2544
|
+
case LogicalLevelTechnique.RLE:
|
|
2545
|
+
decodedValues = decodeUnsignedRleInt64(values, streamMetadata.runs, streamMetadata.numRleValues);
|
|
2546
|
+
break;
|
|
2547
|
+
case LogicalLevelTechnique.NONE:
|
|
2548
|
+
decodedValues = values;
|
|
2549
|
+
break;
|
|
2550
|
+
default:
|
|
2551
|
+
throw new Error(`The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`);
|
|
2552
|
+
}
|
|
2553
|
+
if (nullabilityBuffer) {
|
|
2554
|
+
return unpackNullable(decodedValues, nullabilityBuffer, 0n);
|
|
2555
|
+
}
|
|
2556
|
+
return decodedValues;
|
|
2557
|
+
}
|
|
2558
|
+
function decodeFloat64Values(values, streamMetadata, isSigned) {
|
|
2559
|
+
switch (streamMetadata.logicalLevelTechnique1) {
|
|
2560
|
+
case LogicalLevelTechnique.DELTA:
|
|
2561
|
+
if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {
|
|
2562
|
+
const rleMetadata = streamMetadata;
|
|
2563
|
+
values = decodeUnsignedRleFloat64(values, rleMetadata.runs, rleMetadata.numRleValues);
|
|
2564
|
+
}
|
|
2565
|
+
decodeZigZagDeltaFloat64(values);
|
|
2566
|
+
return values;
|
|
2567
|
+
case LogicalLevelTechnique.RLE:
|
|
2568
|
+
return decodeRleFloat64(values, streamMetadata, isSigned);
|
|
2569
|
+
case LogicalLevelTechnique.NONE:
|
|
2570
|
+
if (isSigned) {
|
|
2571
|
+
decodeZigZagFloat64(values);
|
|
2572
|
+
}
|
|
2573
|
+
return values;
|
|
2574
|
+
default:
|
|
2575
|
+
throw new Error(`The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`);
|
|
2576
|
+
}
|
|
2577
|
+
}
|
|
2578
|
+
function decodeLengthToOffsetBuffer(values, streamMetadata) {
|
|
2579
|
+
if (streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.DELTA && streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE) {
|
|
2580
|
+
return decodeZigZagDeltaOfDeltaInt32(values);
|
|
2581
|
+
}
|
|
2582
|
+
if (streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.RLE && streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE) {
|
|
2583
|
+
const rleMetadata = streamMetadata;
|
|
2584
|
+
return decodeRleDeltaInt32(values, rleMetadata.runs, rleMetadata.numRleValues);
|
|
2585
|
+
}
|
|
2586
|
+
if (streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.NONE && streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE) {
|
|
2587
|
+
inverseDelta(values);
|
|
2588
|
+
const offsets = new Uint32Array(streamMetadata.numValues + 1);
|
|
2589
|
+
offsets[0] = 0;
|
|
2590
|
+
offsets.set(values, 1);
|
|
2591
|
+
return offsets;
|
|
2592
|
+
}
|
|
2593
|
+
if (streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.DELTA && streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {
|
|
2594
|
+
const rleMetadata = streamMetadata;
|
|
2595
|
+
const decodedValues = decodeZigZagRleDeltaInt32(values, rleMetadata.runs, rleMetadata.numRleValues);
|
|
2596
|
+
fastInverseDelta(decodedValues);
|
|
2597
|
+
return new Uint32Array(decodedValues);
|
|
2598
|
+
}
|
|
2599
|
+
throw new Error("Only delta encoding is supported for transforming length to offset streams yet.");
|
|
2600
|
+
}
|
|
2601
|
+
function getVectorType(streamMetadata, sizeOrNullabilityBuffer, data, offset, varintWidth = "int32") {
|
|
2602
|
+
const logicalLevelTechnique1 = streamMetadata.logicalLevelTechnique1;
|
|
2603
|
+
if (logicalLevelTechnique1 === LogicalLevelTechnique.RLE) {
|
|
2604
|
+
return streamMetadata.runs === 1 ? VectorType.CONST : VectorType.FLAT;
|
|
2605
|
+
}
|
|
2606
|
+
if (logicalLevelTechnique1 !== LogicalLevelTechnique.DELTA || streamMetadata.logicalLevelTechnique2 !== LogicalLevelTechnique.RLE) {
|
|
2607
|
+
return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;
|
|
2608
|
+
}
|
|
2609
|
+
const numFeatures = sizeOrNullabilityBuffer instanceof BitVector ? sizeOrNullabilityBuffer.size() : sizeOrNullabilityBuffer;
|
|
2610
|
+
const rleMetadata = streamMetadata;
|
|
2611
|
+
if (rleMetadata.numRleValues !== numFeatures) {
|
|
2612
|
+
return VectorType.FLAT;
|
|
2613
|
+
}
|
|
2614
|
+
if (rleMetadata.runs === 1) {
|
|
2615
|
+
return VectorType.SEQUENCE;
|
|
2616
|
+
}
|
|
2617
|
+
if (rleMetadata.runs !== 2) {
|
|
2618
|
+
return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;
|
|
2619
|
+
}
|
|
2620
|
+
const savedOffset = offset.get();
|
|
2621
|
+
if (streamMetadata.physicalLevelTechnique === PhysicalLevelTechnique.VARINT) {
|
|
2622
|
+
if (isDeltaRleSequenceVarintWidth(data, offset, varintWidth)) {
|
|
2623
|
+
return VectorType.SEQUENCE;
|
|
2624
|
+
}
|
|
2625
|
+
return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;
|
|
2626
|
+
}
|
|
2627
|
+
const byteOffset = offset.get();
|
|
2628
|
+
const values = new Int32Array(data.buffer, data.byteOffset + byteOffset, 4);
|
|
2629
|
+
offset.set(savedOffset);
|
|
2630
|
+
const zigZagOne = 2;
|
|
2631
|
+
if (values[2] === zigZagOne && values[3] === zigZagOne) {
|
|
2632
|
+
return VectorType.SEQUENCE;
|
|
2633
|
+
}
|
|
2634
|
+
return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;
|
|
2635
|
+
}
|
|
2636
|
+
function isDeltaRleSequenceVarintWidth(data, offset, varintWidth) {
|
|
2637
|
+
const peekOffset = new IntWrapper(offset.get());
|
|
2638
|
+
if (varintWidth === "int64") {
|
|
2639
|
+
const values2 = decodeVarintInt64(data, peekOffset, 4);
|
|
2640
|
+
return values2[2] === 2n && values2[3] === 2n;
|
|
2641
|
+
}
|
|
2642
|
+
const values = decodeVarintInt32(data, peekOffset, 4);
|
|
2643
|
+
return values[2] === 2 && values[3] === 2;
|
|
2644
|
+
}
|
|
2645
|
+
function decodeRleFloat64(data, streamMetadata, isSigned) {
|
|
2646
|
+
return isSigned ? decodeZigZagRleFloat64(data, streamMetadata.runs, streamMetadata.numRleValues) : decodeUnsignedRleFloat64(data, streamMetadata.runs, streamMetadata.numRleValues);
|
|
2647
|
+
}
|
|
2648
|
+
|
|
2649
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/flat/int64FlatVector.js
|
|
2650
|
+
var Int64FlatVector = class extends FixedSizeVector {
|
|
2651
|
+
getValueFromBuffer(index) {
|
|
2652
|
+
return this.dataBuffer[index];
|
|
2653
|
+
}
|
|
2654
|
+
};
|
|
2655
|
+
|
|
2656
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/sequence/int64SequenceVector.js
|
|
2657
|
+
var Int64SequenceVector = class extends SequenceVector {
|
|
2658
|
+
constructor(name, baseValue, delta, size) {
|
|
2659
|
+
super(name, BigInt64Array.of(baseValue), delta, size);
|
|
2660
|
+
}
|
|
2661
|
+
getValueFromBuffer(index) {
|
|
2662
|
+
return this.dataBuffer[0] + BigInt(index) * this.delta;
|
|
2663
|
+
}
|
|
2664
|
+
};
|
|
2665
|
+
|
|
2666
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/geometry/zOrderCurve.js
|
|
2667
|
+
function decodeZOrderCurve(mortonCode, numBits, coordinateShift) {
|
|
2668
|
+
const x = decodeMorton(mortonCode, numBits) - coordinateShift;
|
|
2669
|
+
const y = decodeMorton(mortonCode >> 1, numBits) - coordinateShift;
|
|
2670
|
+
return { x, y };
|
|
2671
|
+
}
|
|
2672
|
+
function decodeMorton(code, numBits) {
|
|
2673
|
+
let coordinate = 0;
|
|
2674
|
+
for (let i = 0; i < numBits; i++) {
|
|
2675
|
+
coordinate |= (code & 1 << 2 * i) >> i;
|
|
2676
|
+
}
|
|
2677
|
+
return coordinate;
|
|
2678
|
+
}
|
|
2679
|
+
|
|
2680
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/geometry/geometryType.js
|
|
2681
|
+
var GEOMETRY_TYPE;
|
|
2682
|
+
(function(GEOMETRY_TYPE2) {
|
|
2683
|
+
GEOMETRY_TYPE2[GEOMETRY_TYPE2["POINT"] = 0] = "POINT";
|
|
2684
|
+
GEOMETRY_TYPE2[GEOMETRY_TYPE2["LINESTRING"] = 1] = "LINESTRING";
|
|
2685
|
+
GEOMETRY_TYPE2[GEOMETRY_TYPE2["POLYGON"] = 2] = "POLYGON";
|
|
2686
|
+
GEOMETRY_TYPE2[GEOMETRY_TYPE2["MULTIPOINT"] = 3] = "MULTIPOINT";
|
|
2687
|
+
GEOMETRY_TYPE2[GEOMETRY_TYPE2["MULTILINESTRING"] = 4] = "MULTILINESTRING";
|
|
2688
|
+
GEOMETRY_TYPE2[GEOMETRY_TYPE2["MULTIPOLYGON"] = 5] = "MULTIPOLYGON";
|
|
2689
|
+
})(GEOMETRY_TYPE || (GEOMETRY_TYPE = {}));
|
|
2690
|
+
var SINGLE_PART_GEOMETRY_TYPE;
|
|
2691
|
+
(function(SINGLE_PART_GEOMETRY_TYPE2) {
|
|
2692
|
+
SINGLE_PART_GEOMETRY_TYPE2[SINGLE_PART_GEOMETRY_TYPE2["POINT"] = 0] = "POINT";
|
|
2693
|
+
SINGLE_PART_GEOMETRY_TYPE2[SINGLE_PART_GEOMETRY_TYPE2["LINESTRING"] = 1] = "LINESTRING";
|
|
2694
|
+
SINGLE_PART_GEOMETRY_TYPE2[SINGLE_PART_GEOMETRY_TYPE2["POLYGON"] = 2] = "POLYGON";
|
|
2695
|
+
})(SINGLE_PART_GEOMETRY_TYPE || (SINGLE_PART_GEOMETRY_TYPE = {}));
|
|
2696
|
+
|
|
2697
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/geometry/vertexBufferType.js
|
|
2698
|
+
var VertexBufferType;
|
|
2699
|
+
(function(VertexBufferType2) {
|
|
2700
|
+
VertexBufferType2[VertexBufferType2["MORTON"] = 0] = "MORTON";
|
|
2701
|
+
VertexBufferType2[VertexBufferType2["VEC_2"] = 1] = "VEC_2";
|
|
2702
|
+
VertexBufferType2[VertexBufferType2["VEC_3"] = 2] = "VEC_3";
|
|
2703
|
+
})(VertexBufferType || (VertexBufferType = {}));
|
|
2704
|
+
|
|
2705
|
+
// ../../node_modules/@maplibre/mlt/node_modules/@mapbox/point-geometry/index.js
|
|
2706
|
+
function Point(x, y) {
|
|
2707
|
+
this.x = x;
|
|
2708
|
+
this.y = y;
|
|
2709
|
+
}
|
|
2710
|
+
Point.prototype = {
|
|
2711
|
+
/**
|
|
2712
|
+
* Clone this point, returning a new point that can be modified
|
|
2713
|
+
* without affecting the old one.
|
|
2714
|
+
* @return {Point} the clone
|
|
2715
|
+
*/
|
|
2716
|
+
clone() {
|
|
2717
|
+
return new Point(this.x, this.y);
|
|
2718
|
+
},
|
|
2719
|
+
/**
|
|
2720
|
+
* Add this point's x & y coordinates to another point,
|
|
2721
|
+
* yielding a new point.
|
|
2722
|
+
* @param {Point} p the other point
|
|
2723
|
+
* @return {Point} output point
|
|
2724
|
+
*/
|
|
2725
|
+
add(p) {
|
|
2726
|
+
return this.clone()._add(p);
|
|
2727
|
+
},
|
|
2728
|
+
/**
|
|
2729
|
+
* Subtract this point's x & y coordinates to from point,
|
|
2730
|
+
* yielding a new point.
|
|
2731
|
+
* @param {Point} p the other point
|
|
2732
|
+
* @return {Point} output point
|
|
2733
|
+
*/
|
|
2734
|
+
sub(p) {
|
|
2735
|
+
return this.clone()._sub(p);
|
|
2736
|
+
},
|
|
2737
|
+
/**
|
|
2738
|
+
* Multiply this point's x & y coordinates by point,
|
|
2739
|
+
* yielding a new point.
|
|
2740
|
+
* @param {Point} p the other point
|
|
2741
|
+
* @return {Point} output point
|
|
2742
|
+
*/
|
|
2743
|
+
multByPoint(p) {
|
|
2744
|
+
return this.clone()._multByPoint(p);
|
|
2745
|
+
},
|
|
2746
|
+
/**
|
|
2747
|
+
* Divide this point's x & y coordinates by point,
|
|
2748
|
+
* yielding a new point.
|
|
2749
|
+
* @param {Point} p the other point
|
|
2750
|
+
* @return {Point} output point
|
|
2751
|
+
*/
|
|
2752
|
+
divByPoint(p) {
|
|
2753
|
+
return this.clone()._divByPoint(p);
|
|
2754
|
+
},
|
|
2755
|
+
/**
|
|
2756
|
+
* Multiply this point's x & y coordinates by a factor,
|
|
2757
|
+
* yielding a new point.
|
|
2758
|
+
* @param {number} k factor
|
|
2759
|
+
* @return {Point} output point
|
|
2760
|
+
*/
|
|
2761
|
+
mult(k) {
|
|
2762
|
+
return this.clone()._mult(k);
|
|
2763
|
+
},
|
|
2764
|
+
/**
|
|
2765
|
+
* Divide this point's x & y coordinates by a factor,
|
|
2766
|
+
* yielding a new point.
|
|
2767
|
+
* @param {number} k factor
|
|
2768
|
+
* @return {Point} output point
|
|
2769
|
+
*/
|
|
2770
|
+
div(k) {
|
|
2771
|
+
return this.clone()._div(k);
|
|
2772
|
+
},
|
|
2773
|
+
/**
|
|
2774
|
+
* Rotate this point around the 0, 0 origin by an angle a,
|
|
2775
|
+
* given in radians
|
|
2776
|
+
* @param {number} a angle to rotate around, in radians
|
|
2777
|
+
* @return {Point} output point
|
|
2778
|
+
*/
|
|
2779
|
+
rotate(a) {
|
|
2780
|
+
return this.clone()._rotate(a);
|
|
2781
|
+
},
|
|
2782
|
+
/**
|
|
2783
|
+
* Rotate this point around p point by an angle a,
|
|
2784
|
+
* given in radians
|
|
2785
|
+
* @param {number} a angle to rotate around, in radians
|
|
2786
|
+
* @param {Point} p Point to rotate around
|
|
2787
|
+
* @return {Point} output point
|
|
2788
|
+
*/
|
|
2789
|
+
rotateAround(a, p) {
|
|
2790
|
+
return this.clone()._rotateAround(a, p);
|
|
2791
|
+
},
|
|
2792
|
+
/**
|
|
2793
|
+
* Multiply this point by a 4x1 transformation matrix
|
|
2794
|
+
* @param {[number, number, number, number]} m transformation matrix
|
|
2795
|
+
* @return {Point} output point
|
|
2796
|
+
*/
|
|
2797
|
+
matMult(m) {
|
|
2798
|
+
return this.clone()._matMult(m);
|
|
2799
|
+
},
|
|
2800
|
+
/**
|
|
2801
|
+
* Calculate this point but as a unit vector from 0, 0, meaning
|
|
2802
|
+
* that the distance from the resulting point to the 0, 0
|
|
2803
|
+
* coordinate will be equal to 1 and the angle from the resulting
|
|
2804
|
+
* point to the 0, 0 coordinate will be the same as before.
|
|
2805
|
+
* @return {Point} unit vector point
|
|
2806
|
+
*/
|
|
2807
|
+
unit() {
|
|
2808
|
+
return this.clone()._unit();
|
|
2809
|
+
},
|
|
2810
|
+
/**
|
|
2811
|
+
* Compute a perpendicular point, where the new y coordinate
|
|
2812
|
+
* is the old x coordinate and the new x coordinate is the old y
|
|
2813
|
+
* coordinate multiplied by -1
|
|
2814
|
+
* @return {Point} perpendicular point
|
|
2815
|
+
*/
|
|
2816
|
+
perp() {
|
|
2817
|
+
return this.clone()._perp();
|
|
2818
|
+
},
|
|
2819
|
+
/**
|
|
2820
|
+
* Return a version of this point with the x & y coordinates
|
|
2821
|
+
* rounded to integers.
|
|
2822
|
+
* @return {Point} rounded point
|
|
2823
|
+
*/
|
|
2824
|
+
round() {
|
|
2825
|
+
return this.clone()._round();
|
|
2826
|
+
},
|
|
2827
|
+
/**
|
|
2828
|
+
* Return the magnitude of this point: this is the Euclidean
|
|
2829
|
+
* distance from the 0, 0 coordinate to this point's x and y
|
|
2830
|
+
* coordinates.
|
|
2831
|
+
* @return {number} magnitude
|
|
2832
|
+
*/
|
|
2833
|
+
mag() {
|
|
2834
|
+
return Math.sqrt(this.x * this.x + this.y * this.y);
|
|
2835
|
+
},
|
|
2836
|
+
/**
|
|
2837
|
+
* Judge whether this point is equal to another point, returning
|
|
2838
|
+
* true or false.
|
|
2839
|
+
* @param {Point} other the other point
|
|
2840
|
+
* @return {boolean} whether the points are equal
|
|
2841
|
+
*/
|
|
2842
|
+
equals(other) {
|
|
2843
|
+
return this.x === other.x && this.y === other.y;
|
|
2844
|
+
},
|
|
2845
|
+
/**
|
|
2846
|
+
* Calculate the distance from this point to another point
|
|
2847
|
+
* @param {Point} p the other point
|
|
2848
|
+
* @return {number} distance
|
|
2849
|
+
*/
|
|
2850
|
+
dist(p) {
|
|
2851
|
+
return Math.sqrt(this.distSqr(p));
|
|
2852
|
+
},
|
|
2853
|
+
/**
|
|
2854
|
+
* Calculate the distance from this point to another point,
|
|
2855
|
+
* without the square root step. Useful if you're comparing
|
|
2856
|
+
* relative distances.
|
|
2857
|
+
* @param {Point} p the other point
|
|
2858
|
+
* @return {number} distance
|
|
2859
|
+
*/
|
|
2860
|
+
distSqr(p) {
|
|
2861
|
+
const dx = p.x - this.x, dy = p.y - this.y;
|
|
2862
|
+
return dx * dx + dy * dy;
|
|
2863
|
+
},
|
|
2864
|
+
/**
|
|
2865
|
+
* Get the angle from the 0, 0 coordinate to this point, in radians
|
|
2866
|
+
* coordinates.
|
|
2867
|
+
* @return {number} angle
|
|
2868
|
+
*/
|
|
2869
|
+
angle() {
|
|
2870
|
+
return Math.atan2(this.y, this.x);
|
|
2871
|
+
},
|
|
2872
|
+
/**
|
|
2873
|
+
* Get the angle from this point to another point, in radians
|
|
2874
|
+
* @param {Point} b the other point
|
|
2875
|
+
* @return {number} angle
|
|
2876
|
+
*/
|
|
2877
|
+
angleTo(b) {
|
|
2878
|
+
return Math.atan2(this.y - b.y, this.x - b.x);
|
|
2879
|
+
},
|
|
2880
|
+
/**
|
|
2881
|
+
* Get the angle between this point and another point, in radians
|
|
2882
|
+
* @param {Point} b the other point
|
|
2883
|
+
* @return {number} angle
|
|
2884
|
+
*/
|
|
2885
|
+
angleWith(b) {
|
|
2886
|
+
return this.angleWithSep(b.x, b.y);
|
|
2887
|
+
},
|
|
2888
|
+
/**
|
|
2889
|
+
* Find the angle of the two vectors, solving the formula for
|
|
2890
|
+
* the cross product a x b = |a||b|sin(θ) for θ.
|
|
2891
|
+
* @param {number} x the x-coordinate
|
|
2892
|
+
* @param {number} y the y-coordinate
|
|
2893
|
+
* @return {number} the angle in radians
|
|
2894
|
+
*/
|
|
2895
|
+
angleWithSep(x, y) {
|
|
2896
|
+
return Math.atan2(
|
|
2897
|
+
this.x * y - this.y * x,
|
|
2898
|
+
this.x * x + this.y * y
|
|
2899
|
+
);
|
|
2900
|
+
},
|
|
2901
|
+
/** @param {[number, number, number, number]} m */
|
|
2902
|
+
_matMult(m) {
|
|
2903
|
+
const x = m[0] * this.x + m[1] * this.y, y = m[2] * this.x + m[3] * this.y;
|
|
2904
|
+
this.x = x;
|
|
2905
|
+
this.y = y;
|
|
2906
|
+
return this;
|
|
2907
|
+
},
|
|
2908
|
+
/** @param {Point} p */
|
|
2909
|
+
_add(p) {
|
|
2910
|
+
this.x += p.x;
|
|
2911
|
+
this.y += p.y;
|
|
2912
|
+
return this;
|
|
2913
|
+
},
|
|
2914
|
+
/** @param {Point} p */
|
|
2915
|
+
_sub(p) {
|
|
2916
|
+
this.x -= p.x;
|
|
2917
|
+
this.y -= p.y;
|
|
2918
|
+
return this;
|
|
2919
|
+
},
|
|
2920
|
+
/** @param {number} k */
|
|
2921
|
+
_mult(k) {
|
|
2922
|
+
this.x *= k;
|
|
2923
|
+
this.y *= k;
|
|
2924
|
+
return this;
|
|
2925
|
+
},
|
|
2926
|
+
/** @param {number} k */
|
|
2927
|
+
_div(k) {
|
|
2928
|
+
this.x /= k;
|
|
2929
|
+
this.y /= k;
|
|
2930
|
+
return this;
|
|
2931
|
+
},
|
|
2932
|
+
/** @param {Point} p */
|
|
2933
|
+
_multByPoint(p) {
|
|
2934
|
+
this.x *= p.x;
|
|
2935
|
+
this.y *= p.y;
|
|
2936
|
+
return this;
|
|
2937
|
+
},
|
|
2938
|
+
/** @param {Point} p */
|
|
2939
|
+
_divByPoint(p) {
|
|
2940
|
+
this.x /= p.x;
|
|
2941
|
+
this.y /= p.y;
|
|
2942
|
+
return this;
|
|
2943
|
+
},
|
|
2944
|
+
_unit() {
|
|
2945
|
+
this._div(this.mag());
|
|
2946
|
+
return this;
|
|
2947
|
+
},
|
|
2948
|
+
_perp() {
|
|
2949
|
+
const y = this.y;
|
|
2950
|
+
this.y = this.x;
|
|
2951
|
+
this.x = -y;
|
|
2952
|
+
return this;
|
|
2953
|
+
},
|
|
2954
|
+
/** @param {number} angle */
|
|
2955
|
+
_rotate(angle) {
|
|
2956
|
+
const cos = Math.cos(angle), sin = Math.sin(angle), x = cos * this.x - sin * this.y, y = sin * this.x + cos * this.y;
|
|
2957
|
+
this.x = x;
|
|
2958
|
+
this.y = y;
|
|
2959
|
+
return this;
|
|
2960
|
+
},
|
|
2961
|
+
/**
|
|
2962
|
+
* @param {number} angle
|
|
2963
|
+
* @param {Point} p
|
|
2964
|
+
*/
|
|
2965
|
+
_rotateAround(angle, p) {
|
|
2966
|
+
const cos = Math.cos(angle), sin = Math.sin(angle), x = p.x + cos * (this.x - p.x) - sin * (this.y - p.y), y = p.y + sin * (this.x - p.x) + cos * (this.y - p.y);
|
|
2967
|
+
this.x = x;
|
|
2968
|
+
this.y = y;
|
|
2969
|
+
return this;
|
|
2970
|
+
},
|
|
2971
|
+
_round() {
|
|
2972
|
+
this.x = Math.round(this.x);
|
|
2973
|
+
this.y = Math.round(this.y);
|
|
2974
|
+
return this;
|
|
2975
|
+
},
|
|
2976
|
+
constructor: Point
|
|
2977
|
+
};
|
|
2978
|
+
Point.convert = function(p) {
|
|
2979
|
+
if (p instanceof Point) {
|
|
2980
|
+
return (
|
|
2981
|
+
/** @type {Point} */
|
|
2982
|
+
p
|
|
2983
|
+
);
|
|
2984
|
+
}
|
|
2985
|
+
if (Array.isArray(p)) {
|
|
2986
|
+
return new Point(+p[0], +p[1]);
|
|
2987
|
+
}
|
|
2988
|
+
if (p.x !== void 0 && p.y !== void 0) {
|
|
2989
|
+
return new Point(+p.x, +p.y);
|
|
2990
|
+
}
|
|
2991
|
+
throw new Error("Expected [x, y] or {x, y} point format");
|
|
2992
|
+
};
|
|
2993
|
+
|
|
2994
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/geometry/geometryVectorConverter.js
|
|
2995
|
+
function convertGeometryVector(geometryVector) {
|
|
2996
|
+
const geometries = new Array(geometryVector.numGeometries);
|
|
2997
|
+
let partOffsetCounter = 1;
|
|
2998
|
+
let ringOffsetsCounter = 1;
|
|
2999
|
+
let geometryOffsetsCounter = 1;
|
|
3000
|
+
let geometryCounter = 0;
|
|
3001
|
+
let vertexBufferOffset = 0;
|
|
3002
|
+
let vertexOffsetsOffset = 0;
|
|
3003
|
+
const mortonSettings = geometryVector.mortonSettings;
|
|
3004
|
+
const topologyVector = geometryVector.topologyVector;
|
|
3005
|
+
const geometryOffsets = topologyVector.geometryOffsets;
|
|
3006
|
+
const partOffsets = topologyVector.partOffsets;
|
|
3007
|
+
const ringOffsets = topologyVector.ringOffsets;
|
|
3008
|
+
const vertexOffsets = geometryVector.vertexOffsets;
|
|
3009
|
+
const nonOffset = !vertexOffsets || vertexOffsets.length === 0;
|
|
3010
|
+
const containsPolygon = geometryVector.containsPolygonGeometry();
|
|
3011
|
+
const vertexBuffer = geometryVector.vertexBuffer;
|
|
3012
|
+
for (let i = 0; i < geometryVector.numGeometries; i++) {
|
|
3013
|
+
const geometryType = geometryVector.geometryType(i);
|
|
3014
|
+
switch (geometryType) {
|
|
3015
|
+
case GEOMETRY_TYPE.POINT:
|
|
3016
|
+
{
|
|
3017
|
+
let x;
|
|
3018
|
+
let y;
|
|
3019
|
+
if (nonOffset) {
|
|
3020
|
+
x = vertexBuffer[vertexBufferOffset++];
|
|
3021
|
+
y = vertexBuffer[vertexBufferOffset++];
|
|
3022
|
+
} else if (geometryVector.vertexBufferType === VertexBufferType.MORTON) {
|
|
3023
|
+
const offset = vertexOffsets[vertexOffsetsOffset++];
|
|
3024
|
+
const mortonCode = vertexBuffer[offset];
|
|
3025
|
+
const vertex = decodeZOrderCurve(mortonCode, mortonSettings.numBits, mortonSettings.coordinateShift);
|
|
3026
|
+
x = vertex.x;
|
|
3027
|
+
y = vertex.y;
|
|
3028
|
+
} else {
|
|
3029
|
+
const offset = vertexOffsets[vertexOffsetsOffset++] * 2;
|
|
3030
|
+
x = vertexBuffer[offset];
|
|
3031
|
+
y = vertexBuffer[offset + 1];
|
|
3032
|
+
}
|
|
3033
|
+
geometries[geometryCounter++] = [[new Point(x, y)]];
|
|
3034
|
+
if (geometryOffsets)
|
|
3035
|
+
geometryOffsetsCounter++;
|
|
3036
|
+
if (partOffsets)
|
|
3037
|
+
partOffsetCounter++;
|
|
3038
|
+
if (ringOffsets)
|
|
3039
|
+
ringOffsetsCounter++;
|
|
3040
|
+
}
|
|
3041
|
+
break;
|
|
3042
|
+
case GEOMETRY_TYPE.MULTIPOINT:
|
|
3043
|
+
{
|
|
3044
|
+
const numPoints = geometryOffsets[geometryOffsetsCounter] - geometryOffsets[geometryOffsetsCounter - 1];
|
|
3045
|
+
geometryOffsetsCounter++;
|
|
3046
|
+
const points = new Array(numPoints);
|
|
3047
|
+
if (nonOffset) {
|
|
3048
|
+
for (let j = 0; j < numPoints; j++) {
|
|
3049
|
+
const x = vertexBuffer[vertexBufferOffset++];
|
|
3050
|
+
const y = vertexBuffer[vertexBufferOffset++];
|
|
3051
|
+
points[j] = new Point(x, y);
|
|
3052
|
+
}
|
|
3053
|
+
} else {
|
|
3054
|
+
for (let j = 0; j < numPoints; j++) {
|
|
3055
|
+
const offset = vertexOffsets[vertexOffsetsOffset++] * 2;
|
|
3056
|
+
const x = vertexBuffer[offset];
|
|
3057
|
+
const y = vertexBuffer[offset + 1];
|
|
3058
|
+
points[j] = new Point(x, y);
|
|
3059
|
+
}
|
|
3060
|
+
}
|
|
3061
|
+
geometries[geometryCounter++] = points.map((point) => [point]);
|
|
3062
|
+
partOffsetCounter += numPoints;
|
|
3063
|
+
ringOffsetsCounter += numPoints;
|
|
3064
|
+
}
|
|
3065
|
+
break;
|
|
3066
|
+
case GEOMETRY_TYPE.LINESTRING:
|
|
3067
|
+
{
|
|
3068
|
+
let numVertices;
|
|
3069
|
+
if (containsPolygon) {
|
|
3070
|
+
numVertices = ringOffsets[ringOffsetsCounter] - ringOffsets[ringOffsetsCounter - 1];
|
|
3071
|
+
ringOffsetsCounter++;
|
|
3072
|
+
} else {
|
|
3073
|
+
numVertices = partOffsets[partOffsetCounter] - partOffsets[partOffsetCounter - 1];
|
|
3074
|
+
}
|
|
3075
|
+
partOffsetCounter++;
|
|
3076
|
+
let vertices;
|
|
3077
|
+
if (nonOffset) {
|
|
3078
|
+
vertices = getLineStringOrRing(vertexBuffer, vertexBufferOffset, numVertices, false);
|
|
3079
|
+
vertexBufferOffset += numVertices * 2;
|
|
3080
|
+
} else {
|
|
3081
|
+
vertices = decodeDictionaryEncodedLineStringOrRing(geometryVector.vertexBufferType, vertexBuffer, vertexOffsets, vertexOffsetsOffset, numVertices, false, mortonSettings);
|
|
3082
|
+
vertexOffsetsOffset += numVertices;
|
|
3083
|
+
}
|
|
3084
|
+
geometries[geometryCounter++] = [vertices];
|
|
3085
|
+
if (geometryOffsets)
|
|
3086
|
+
geometryOffsetsCounter++;
|
|
3087
|
+
}
|
|
3088
|
+
break;
|
|
3089
|
+
case GEOMETRY_TYPE.POLYGON:
|
|
3090
|
+
{
|
|
3091
|
+
const numRings = partOffsets[partOffsetCounter] - partOffsets[partOffsetCounter - 1];
|
|
3092
|
+
partOffsetCounter++;
|
|
3093
|
+
const rings = new Array(numRings - 1);
|
|
3094
|
+
let shell;
|
|
3095
|
+
let numVertices = ringOffsets[ringOffsetsCounter] - ringOffsets[ringOffsetsCounter - 1];
|
|
3096
|
+
ringOffsetsCounter++;
|
|
3097
|
+
if (nonOffset) {
|
|
3098
|
+
shell = getLineStringOrRing(vertexBuffer, vertexBufferOffset, numVertices, true);
|
|
3099
|
+
vertexBufferOffset += numVertices * 2;
|
|
3100
|
+
for (let j = 0; j < rings.length; j++) {
|
|
3101
|
+
numVertices = ringOffsets[ringOffsetsCounter] - ringOffsets[ringOffsetsCounter - 1];
|
|
3102
|
+
ringOffsetsCounter++;
|
|
3103
|
+
rings[j] = getLineStringOrRing(vertexBuffer, vertexBufferOffset, numVertices, true);
|
|
3104
|
+
vertexBufferOffset += numVertices * 2;
|
|
3105
|
+
}
|
|
3106
|
+
} else {
|
|
3107
|
+
shell = decodeDictionaryEncodedLineStringOrRing(geometryVector.vertexBufferType, vertexBuffer, vertexOffsets, vertexOffsetsOffset, numVertices, true, mortonSettings);
|
|
3108
|
+
vertexOffsetsOffset += numVertices;
|
|
3109
|
+
for (let j = 0; j < rings.length; j++) {
|
|
3110
|
+
numVertices = ringOffsets[ringOffsetsCounter] - ringOffsets[ringOffsetsCounter - 1];
|
|
3111
|
+
ringOffsetsCounter++;
|
|
3112
|
+
rings[j] = decodeDictionaryEncodedLineStringOrRing(geometryVector.vertexBufferType, vertexBuffer, vertexOffsets, vertexOffsetsOffset, numVertices, true, mortonSettings);
|
|
3113
|
+
vertexOffsetsOffset += numVertices;
|
|
3114
|
+
}
|
|
3115
|
+
}
|
|
3116
|
+
geometries[geometryCounter++] = [shell].concat(rings);
|
|
3117
|
+
if (geometryOffsets)
|
|
3118
|
+
geometryOffsetsCounter++;
|
|
3119
|
+
}
|
|
3120
|
+
break;
|
|
3121
|
+
case GEOMETRY_TYPE.MULTILINESTRING:
|
|
3122
|
+
{
|
|
3123
|
+
const numLineStrings = geometryOffsets[geometryOffsetsCounter] - geometryOffsets[geometryOffsetsCounter - 1];
|
|
3124
|
+
geometryOffsetsCounter++;
|
|
3125
|
+
const lineStrings = new Array(numLineStrings);
|
|
3126
|
+
for (let j = 0; j < numLineStrings; j++) {
|
|
3127
|
+
let numVertices;
|
|
3128
|
+
if (containsPolygon) {
|
|
3129
|
+
numVertices = ringOffsets[ringOffsetsCounter] - ringOffsets[ringOffsetsCounter - 1];
|
|
3130
|
+
ringOffsetsCounter++;
|
|
3131
|
+
} else {
|
|
3132
|
+
numVertices = partOffsets[partOffsetCounter] - partOffsets[partOffsetCounter - 1];
|
|
3133
|
+
}
|
|
3134
|
+
partOffsetCounter++;
|
|
3135
|
+
if (nonOffset) {
|
|
3136
|
+
lineStrings[j] = getLineStringOrRing(vertexBuffer, vertexBufferOffset, numVertices, false);
|
|
3137
|
+
vertexBufferOffset += numVertices * 2;
|
|
3138
|
+
} else {
|
|
3139
|
+
const vertices = decodeDictionaryEncodedLineStringOrRing(geometryVector.vertexBufferType, vertexBuffer, vertexOffsets, vertexOffsetsOffset, numVertices, false, mortonSettings);
|
|
3140
|
+
lineStrings[j] = vertices;
|
|
3141
|
+
vertexOffsetsOffset += numVertices;
|
|
3142
|
+
}
|
|
3143
|
+
}
|
|
3144
|
+
geometries[geometryCounter++] = lineStrings;
|
|
3145
|
+
}
|
|
3146
|
+
break;
|
|
3147
|
+
case GEOMETRY_TYPE.MULTIPOLYGON:
|
|
3148
|
+
{
|
|
3149
|
+
const numPolygons = geometryOffsets[geometryOffsetsCounter] - geometryOffsets[geometryOffsetsCounter - 1];
|
|
3150
|
+
geometryOffsetsCounter++;
|
|
3151
|
+
const polygons = new Array(numPolygons);
|
|
3152
|
+
for (let j = 0; j < numPolygons; j++) {
|
|
3153
|
+
const numRings = partOffsets[partOffsetCounter] - partOffsets[partOffsetCounter - 1];
|
|
3154
|
+
partOffsetCounter++;
|
|
3155
|
+
let shell;
|
|
3156
|
+
const rings = new Array(numRings - 1);
|
|
3157
|
+
const numVertices = ringOffsets[ringOffsetsCounter] - ringOffsets[ringOffsetsCounter - 1];
|
|
3158
|
+
ringOffsetsCounter++;
|
|
3159
|
+
if (nonOffset) {
|
|
3160
|
+
shell = getLineStringOrRing(vertexBuffer, vertexBufferOffset, numVertices, true);
|
|
3161
|
+
vertexBufferOffset += numVertices * 2;
|
|
3162
|
+
} else {
|
|
3163
|
+
shell = decodeDictionaryEncodedLineStringOrRing(geometryVector.vertexBufferType, vertexBuffer, vertexOffsets, vertexOffsetsOffset, numVertices, true, mortonSettings);
|
|
3164
|
+
vertexOffsetsOffset += numVertices;
|
|
3165
|
+
}
|
|
3166
|
+
for (let k = 0; k < rings.length; k++) {
|
|
3167
|
+
const numRingVertices = ringOffsets[ringOffsetsCounter] - ringOffsets[ringOffsetsCounter - 1];
|
|
3168
|
+
ringOffsetsCounter++;
|
|
3169
|
+
if (nonOffset) {
|
|
3170
|
+
rings[k] = getLineStringOrRing(vertexBuffer, vertexBufferOffset, numRingVertices, true);
|
|
3171
|
+
vertexBufferOffset += numRingVertices * 2;
|
|
3172
|
+
} else {
|
|
3173
|
+
rings[k] = decodeDictionaryEncodedLineStringOrRing(geometryVector.vertexBufferType, vertexBuffer, vertexOffsets, vertexOffsetsOffset, numRingVertices, true, mortonSettings);
|
|
3174
|
+
vertexOffsetsOffset += numRingVertices;
|
|
3175
|
+
}
|
|
3176
|
+
}
|
|
3177
|
+
polygons[j] = [shell].concat(rings);
|
|
3178
|
+
}
|
|
3179
|
+
geometries[geometryCounter++] = polygons.flat();
|
|
3180
|
+
}
|
|
3181
|
+
break;
|
|
3182
|
+
default:
|
|
3183
|
+
throw new Error("The specified geometry type is currently not supported.");
|
|
3184
|
+
}
|
|
3185
|
+
}
|
|
3186
|
+
return geometries;
|
|
3187
|
+
}
|
|
3188
|
+
function decodeDictionaryEncodedLineStringOrRing(vertexBufferType, vertexBuffer, vertexOffsets, vertexOffset, numVertices, closeLineString, mortonSettings) {
|
|
3189
|
+
if (vertexBufferType === VertexBufferType.MORTON) {
|
|
3190
|
+
return decodeMortonDictionaryEncodedLineString(vertexBuffer, vertexOffsets, vertexOffset, numVertices, closeLineString, mortonSettings);
|
|
3191
|
+
} else {
|
|
3192
|
+
return decodeDictionaryEncodedLineString(vertexBuffer, vertexOffsets, vertexOffset, numVertices, closeLineString);
|
|
3193
|
+
}
|
|
3194
|
+
}
|
|
3195
|
+
function getLineStringOrRing(vertexBuffer, startIndex, numVertices, closeLineString) {
|
|
3196
|
+
const vertices = new Array(closeLineString ? numVertices + 1 : numVertices);
|
|
3197
|
+
for (let i = 0; i < numVertices * 2; i += 2) {
|
|
3198
|
+
const x = vertexBuffer[startIndex + i];
|
|
3199
|
+
const y = vertexBuffer[startIndex + i + 1];
|
|
3200
|
+
vertices[i / 2] = new Point(x, y);
|
|
3201
|
+
}
|
|
3202
|
+
if (closeLineString) {
|
|
3203
|
+
vertices[vertices.length - 1] = vertices[0];
|
|
3204
|
+
}
|
|
3205
|
+
return vertices;
|
|
3206
|
+
}
|
|
3207
|
+
function decodeDictionaryEncodedLineString(vertexBuffer, vertexOffsets, vertexOffset, numVertices, closeLineString) {
|
|
3208
|
+
const vertices = new Array(closeLineString ? numVertices + 1 : numVertices);
|
|
3209
|
+
for (let i = 0; i < numVertices * 2; i += 2) {
|
|
3210
|
+
const offset = vertexOffsets[vertexOffset + i / 2] * 2;
|
|
3211
|
+
const x = vertexBuffer[offset];
|
|
3212
|
+
const y = vertexBuffer[offset + 1];
|
|
3213
|
+
vertices[i / 2] = new Point(x, y);
|
|
3214
|
+
}
|
|
3215
|
+
if (closeLineString) {
|
|
3216
|
+
vertices[vertices.length - 1] = vertices[0];
|
|
3217
|
+
}
|
|
3218
|
+
return vertices;
|
|
3219
|
+
}
|
|
3220
|
+
function decodeMortonDictionaryEncodedLineString(vertexBuffer, vertexOffsets, vertexOffset, numVertices, closeLineString, mortonSettings) {
|
|
3221
|
+
const vertices = new Array(closeLineString ? numVertices + 1 : numVertices);
|
|
3222
|
+
for (let i = 0; i < numVertices; i++) {
|
|
3223
|
+
const offset = vertexOffsets[vertexOffset + i];
|
|
3224
|
+
const mortonEncodedVertex = vertexBuffer[offset];
|
|
3225
|
+
const vertex = decodeZOrderCurve(mortonEncodedVertex, mortonSettings.numBits, mortonSettings.coordinateShift);
|
|
3226
|
+
vertices[i] = new Point(vertex.x, vertex.y);
|
|
3227
|
+
}
|
|
3228
|
+
if (closeLineString) {
|
|
3229
|
+
vertices[vertices.length - 1] = vertices[0];
|
|
3230
|
+
}
|
|
3231
|
+
return vertices;
|
|
3232
|
+
}
|
|
3233
|
+
|
|
3234
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/geometry/geometryVector.js
|
|
3235
|
+
var GeometryVector = class {
|
|
3236
|
+
constructor(_vertexBufferType, _topologyVector, _vertexOffsets, _vertexBuffer, _mortonSettings) {
|
|
3237
|
+
this._vertexBufferType = _vertexBufferType;
|
|
3238
|
+
this._topologyVector = _topologyVector;
|
|
3239
|
+
this._vertexOffsets = _vertexOffsets;
|
|
3240
|
+
this._vertexBuffer = _vertexBuffer;
|
|
3241
|
+
this._mortonSettings = _mortonSettings;
|
|
3242
|
+
}
|
|
3243
|
+
get vertexBufferType() {
|
|
3244
|
+
return this._vertexBufferType;
|
|
3245
|
+
}
|
|
3246
|
+
get topologyVector() {
|
|
3247
|
+
return this._topologyVector;
|
|
3248
|
+
}
|
|
3249
|
+
get vertexOffsets() {
|
|
3250
|
+
return this._vertexOffsets;
|
|
3251
|
+
}
|
|
3252
|
+
get vertexBuffer() {
|
|
3253
|
+
return this._vertexBuffer;
|
|
3254
|
+
}
|
|
3255
|
+
/* Allows faster access to the vertices since morton encoding is currently not used in the POC. Morton encoding
|
|
3256
|
+
will be used after adapting the shader to decode the morton codes on the GPU. */
|
|
3257
|
+
getSimpleEncodedVertex(index) {
|
|
3258
|
+
const offset = this.vertexOffsets ? this.vertexOffsets[index] * 2 : index * 2;
|
|
3259
|
+
const x = this.vertexBuffer[offset];
|
|
3260
|
+
const y = this.vertexBuffer[offset + 1];
|
|
3261
|
+
return [x, y];
|
|
3262
|
+
}
|
|
3263
|
+
//TODO: add scaling information to the constructor
|
|
3264
|
+
getVertex(index) {
|
|
3265
|
+
if (this.vertexOffsets && this.mortonSettings) {
|
|
3266
|
+
const vertexOffset = this.vertexOffsets[index];
|
|
3267
|
+
const mortonEncodedVertex = this.vertexBuffer[vertexOffset];
|
|
3268
|
+
const vertex = decodeZOrderCurve(mortonEncodedVertex, this.mortonSettings.numBits, this.mortonSettings.coordinateShift);
|
|
3269
|
+
return [vertex.x, vertex.y];
|
|
3270
|
+
}
|
|
3271
|
+
const offset = this.vertexOffsets ? this.vertexOffsets[index] * 2 : index * 2;
|
|
3272
|
+
const x = this.vertexBuffer[offset];
|
|
3273
|
+
const y = this.vertexBuffer[offset + 1];
|
|
3274
|
+
return [x, y];
|
|
3275
|
+
}
|
|
3276
|
+
getGeometries() {
|
|
3277
|
+
return convertGeometryVector(this);
|
|
3278
|
+
}
|
|
3279
|
+
get mortonSettings() {
|
|
3280
|
+
return this._mortonSettings;
|
|
3281
|
+
}
|
|
3282
|
+
};
|
|
3283
|
+
|
|
3284
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/geometry/constGeometryVector.js
|
|
3285
|
+
function createConstGeometryVector(numGeometries, geometryType, topologyVector, vertexOffsets, vertexBuffer) {
|
|
3286
|
+
return new ConstGeometryVector(numGeometries, geometryType, VertexBufferType.VEC_2, topologyVector, vertexOffsets, vertexBuffer);
|
|
3287
|
+
}
|
|
3288
|
+
function createMortonEncodedConstGeometryVector(numGeometries, geometryType, topologyVector, vertexOffsets, vertexBuffer, mortonInfo) {
|
|
3289
|
+
return new ConstGeometryVector(numGeometries, geometryType, VertexBufferType.MORTON, topologyVector, vertexOffsets, vertexBuffer, mortonInfo);
|
|
3290
|
+
}
|
|
3291
|
+
var ConstGeometryVector = class extends GeometryVector {
|
|
3292
|
+
constructor(_numGeometries, _geometryType, vertexBufferType, topologyVector, vertexOffsets, vertexBuffer, mortonSettings) {
|
|
3293
|
+
super(vertexBufferType, topologyVector, vertexOffsets, vertexBuffer, mortonSettings);
|
|
3294
|
+
this._numGeometries = _numGeometries;
|
|
3295
|
+
this._geometryType = _geometryType;
|
|
3296
|
+
}
|
|
3297
|
+
geometryType(_index) {
|
|
3298
|
+
return this._geometryType;
|
|
3299
|
+
}
|
|
3300
|
+
get numGeometries() {
|
|
3301
|
+
return this._numGeometries;
|
|
3302
|
+
}
|
|
3303
|
+
containsPolygonGeometry() {
|
|
3304
|
+
return this._geometryType === GEOMETRY_TYPE.POLYGON || this._geometryType === GEOMETRY_TYPE.MULTIPOLYGON;
|
|
3305
|
+
}
|
|
3306
|
+
containsSingleGeometryType() {
|
|
3307
|
+
return true;
|
|
3308
|
+
}
|
|
3309
|
+
};
|
|
3310
|
+
|
|
3311
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/geometry/flatGeometryVector.js
|
|
3312
|
+
function createFlatGeometryVector(geometryTypes, topologyVector, vertexOffsets, vertexBuffer) {
|
|
3313
|
+
return new FlatGeometryVector(VertexBufferType.VEC_2, geometryTypes, topologyVector, vertexOffsets, vertexBuffer);
|
|
3314
|
+
}
|
|
3315
|
+
function createFlatGeometryVectorMortonEncoded(geometryTypes, topologyVector, vertexOffsets, vertexBuffer, mortonInfo) {
|
|
3316
|
+
return new FlatGeometryVector(VertexBufferType.MORTON, geometryTypes, topologyVector, vertexOffsets, vertexBuffer, mortonInfo);
|
|
3317
|
+
}
|
|
3318
|
+
var FlatGeometryVector = class extends GeometryVector {
|
|
3319
|
+
constructor(vertexBufferType, _geometryTypes, topologyVector, vertexOffsets, vertexBuffer, mortonSettings) {
|
|
3320
|
+
super(vertexBufferType, topologyVector, vertexOffsets, vertexBuffer, mortonSettings);
|
|
3321
|
+
this._geometryTypes = _geometryTypes;
|
|
3322
|
+
}
|
|
3323
|
+
geometryType(index) {
|
|
3324
|
+
return this._geometryTypes[index];
|
|
3325
|
+
}
|
|
3326
|
+
get numGeometries() {
|
|
3327
|
+
return this._geometryTypes.length;
|
|
3328
|
+
}
|
|
3329
|
+
containsPolygonGeometry() {
|
|
3330
|
+
for (let i = 0; i < this.numGeometries; i++) {
|
|
3331
|
+
if (this.geometryType(i) === GEOMETRY_TYPE.POLYGON || this.geometryType(i) === GEOMETRY_TYPE.MULTIPOLYGON) {
|
|
3332
|
+
return true;
|
|
3333
|
+
}
|
|
3334
|
+
}
|
|
3335
|
+
return false;
|
|
3336
|
+
}
|
|
3337
|
+
containsSingleGeometryType() {
|
|
3338
|
+
return false;
|
|
3339
|
+
}
|
|
3340
|
+
};
|
|
3341
|
+
|
|
3342
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/geometry/gpuVector.js
|
|
3343
|
+
var GpuVector = class {
|
|
3344
|
+
constructor(_triangleOffsets, _indexBuffer, _vertexBuffer, _topologyVector) {
|
|
3345
|
+
this._triangleOffsets = _triangleOffsets;
|
|
3346
|
+
this._indexBuffer = _indexBuffer;
|
|
3347
|
+
this._vertexBuffer = _vertexBuffer;
|
|
3348
|
+
this._topologyVector = _topologyVector;
|
|
3349
|
+
}
|
|
3350
|
+
get triangleOffsets() {
|
|
3351
|
+
return this._triangleOffsets;
|
|
3352
|
+
}
|
|
3353
|
+
get indexBuffer() {
|
|
3354
|
+
return this._indexBuffer;
|
|
3355
|
+
}
|
|
3356
|
+
get vertexBuffer() {
|
|
3357
|
+
return this._vertexBuffer;
|
|
3358
|
+
}
|
|
3359
|
+
get topologyVector() {
|
|
3360
|
+
return this._topologyVector;
|
|
3361
|
+
}
|
|
3362
|
+
/**
|
|
3363
|
+
* Returns geometries as coordinate arrays by extracting polygon outlines from topology.
|
|
3364
|
+
* The vertexBuffer contains the outline vertices, separate from the tessellated triangles.
|
|
3365
|
+
*/
|
|
3366
|
+
getGeometries() {
|
|
3367
|
+
if (!this._topologyVector) {
|
|
3368
|
+
throw new Error("Cannot convert GpuVector to coordinates without topology information");
|
|
3369
|
+
}
|
|
3370
|
+
const geometries = new Array(this.numGeometries);
|
|
3371
|
+
const topology = this._topologyVector;
|
|
3372
|
+
const partOffsets = topology.partOffsets;
|
|
3373
|
+
const ringOffsets = topology.ringOffsets;
|
|
3374
|
+
const geometryOffsets = topology.geometryOffsets;
|
|
3375
|
+
let vertexBufferOffset = 0;
|
|
3376
|
+
let partOffsetCounter = 1;
|
|
3377
|
+
let ringOffsetsCounter = 1;
|
|
3378
|
+
let geometryOffsetsCounter = 1;
|
|
3379
|
+
for (let i = 0; i < this.numGeometries; i++) {
|
|
3380
|
+
const geometryType = this.geometryType(i);
|
|
3381
|
+
switch (geometryType) {
|
|
3382
|
+
case GEOMETRY_TYPE.POLYGON:
|
|
3383
|
+
{
|
|
3384
|
+
const numRings = partOffsets[partOffsetCounter] - partOffsets[partOffsetCounter - 1];
|
|
3385
|
+
partOffsetCounter++;
|
|
3386
|
+
const rings = [];
|
|
3387
|
+
for (let j = 0; j < numRings; j++) {
|
|
3388
|
+
const numVertices = ringOffsets[ringOffsetsCounter] - ringOffsets[ringOffsetsCounter - 1];
|
|
3389
|
+
ringOffsetsCounter++;
|
|
3390
|
+
const ring = [];
|
|
3391
|
+
for (let k = 0; k < numVertices; k++) {
|
|
3392
|
+
const x = this._vertexBuffer[vertexBufferOffset++];
|
|
3393
|
+
const y = this._vertexBuffer[vertexBufferOffset++];
|
|
3394
|
+
ring.push(new Point(x, y));
|
|
3395
|
+
}
|
|
3396
|
+
if (ring.length > 0) {
|
|
3397
|
+
ring.push(ring[0]);
|
|
3398
|
+
}
|
|
3399
|
+
rings.push(ring);
|
|
3400
|
+
}
|
|
3401
|
+
geometries[i] = rings;
|
|
3402
|
+
if (geometryOffsets)
|
|
3403
|
+
geometryOffsetsCounter++;
|
|
3404
|
+
}
|
|
3405
|
+
break;
|
|
3406
|
+
case GEOMETRY_TYPE.MULTIPOLYGON:
|
|
3407
|
+
{
|
|
3408
|
+
const numPolygons = geometryOffsets[geometryOffsetsCounter] - geometryOffsets[geometryOffsetsCounter - 1];
|
|
3409
|
+
geometryOffsetsCounter++;
|
|
3410
|
+
const allRings = [];
|
|
3411
|
+
for (let p = 0; p < numPolygons; p++) {
|
|
3412
|
+
const numRings = partOffsets[partOffsetCounter] - partOffsets[partOffsetCounter - 1];
|
|
3413
|
+
partOffsetCounter++;
|
|
3414
|
+
for (let j = 0; j < numRings; j++) {
|
|
3415
|
+
const numVertices = ringOffsets[ringOffsetsCounter] - ringOffsets[ringOffsetsCounter - 1];
|
|
3416
|
+
ringOffsetsCounter++;
|
|
3417
|
+
const ring = [];
|
|
3418
|
+
for (let k = 0; k < numVertices; k++) {
|
|
3419
|
+
const x = this._vertexBuffer[vertexBufferOffset++];
|
|
3420
|
+
const y = this._vertexBuffer[vertexBufferOffset++];
|
|
3421
|
+
ring.push(new Point(x, y));
|
|
3422
|
+
}
|
|
3423
|
+
if (ring.length > 0) {
|
|
3424
|
+
ring.push(ring[0]);
|
|
3425
|
+
}
|
|
3426
|
+
allRings.push(ring);
|
|
3427
|
+
}
|
|
3428
|
+
}
|
|
3429
|
+
geometries[i] = allRings;
|
|
3430
|
+
}
|
|
3431
|
+
break;
|
|
3432
|
+
}
|
|
3433
|
+
}
|
|
3434
|
+
return geometries;
|
|
3435
|
+
}
|
|
3436
|
+
[Symbol.iterator]() {
|
|
3437
|
+
return null;
|
|
3438
|
+
}
|
|
3439
|
+
};
|
|
3440
|
+
|
|
3441
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/geometry/constGpuVector.js
|
|
3442
|
+
function createConstGpuVector(numGeometries, geometryType, triangleOffsets, indexBuffer, vertexBuffer, topologyVector) {
|
|
3443
|
+
return new ConstGpuVector(numGeometries, geometryType, triangleOffsets, indexBuffer, vertexBuffer, topologyVector);
|
|
3444
|
+
}
|
|
3445
|
+
var ConstGpuVector = class extends GpuVector {
|
|
3446
|
+
constructor(_numGeometries, _geometryType, triangleOffsets, indexBuffer, vertexBuffer, topologyVector) {
|
|
3447
|
+
super(triangleOffsets, indexBuffer, vertexBuffer, topologyVector);
|
|
3448
|
+
this._numGeometries = _numGeometries;
|
|
3449
|
+
this._geometryType = _geometryType;
|
|
3450
|
+
}
|
|
3451
|
+
geometryType(_index) {
|
|
3452
|
+
return this._geometryType;
|
|
3453
|
+
}
|
|
3454
|
+
get numGeometries() {
|
|
3455
|
+
return this._numGeometries;
|
|
3456
|
+
}
|
|
3457
|
+
containsSingleGeometryType() {
|
|
3458
|
+
return true;
|
|
3459
|
+
}
|
|
3460
|
+
};
|
|
3461
|
+
|
|
3462
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/geometry/flatGpuVector.js
|
|
3463
|
+
function createFlatGpuVector(geometryTypes, triangleOffsets, indexBuffer, vertexBuffer, topologyVector) {
|
|
3464
|
+
return new FlatGpuVector(geometryTypes, triangleOffsets, indexBuffer, vertexBuffer, topologyVector);
|
|
3465
|
+
}
|
|
3466
|
+
var FlatGpuVector = class extends GpuVector {
|
|
3467
|
+
constructor(_geometryTypes, triangleOffsets, indexBuffer, vertexBuffer, topologyVector) {
|
|
3468
|
+
super(triangleOffsets, indexBuffer, vertexBuffer, topologyVector);
|
|
3469
|
+
this._geometryTypes = _geometryTypes;
|
|
3470
|
+
}
|
|
3471
|
+
geometryType(index) {
|
|
3472
|
+
return this._geometryTypes[index];
|
|
3473
|
+
}
|
|
3474
|
+
get numGeometries() {
|
|
3475
|
+
return this._geometryTypes.length;
|
|
3476
|
+
}
|
|
3477
|
+
containsSingleGeometryType() {
|
|
3478
|
+
return false;
|
|
3479
|
+
}
|
|
3480
|
+
};
|
|
3481
|
+
|
|
3482
|
+
// ../../node_modules/@maplibre/mlt/dist/decoding/geometryDecoder.js
|
|
3483
|
+
function decodeGeometryColumn(tile, numStreams, offset, numFeatures, scalingData) {
|
|
3484
|
+
const geometryTypeMetadata = decodeStreamMetadata(tile, offset);
|
|
3485
|
+
const geometryTypesVectorType = getVectorType(geometryTypeMetadata, numFeatures, tile, offset);
|
|
3486
|
+
let vertexOffsets;
|
|
3487
|
+
let vertexBuffer;
|
|
3488
|
+
let mortonSettings;
|
|
3489
|
+
let indexBuffer;
|
|
3490
|
+
if (geometryTypesVectorType === VectorType.CONST) {
|
|
3491
|
+
const geometryType = decodeUnsignedConstInt32Stream(tile, offset, geometryTypeMetadata);
|
|
3492
|
+
let geometryOffsets2;
|
|
3493
|
+
let partOffsets2;
|
|
3494
|
+
let ringOffsets2;
|
|
3495
|
+
let triangleOffsets2;
|
|
3496
|
+
for (let i = 0; i < numStreams - 1; i++) {
|
|
3497
|
+
const geometryStreamMetadata = decodeStreamMetadata(tile, offset);
|
|
3498
|
+
switch (geometryStreamMetadata.physicalStreamType) {
|
|
3499
|
+
case PhysicalStreamType.LENGTH:
|
|
3500
|
+
switch (geometryStreamMetadata.logicalStreamType.lengthType) {
|
|
3501
|
+
case LengthType.GEOMETRIES:
|
|
3502
|
+
geometryOffsets2 = decodeLengthStreamToOffsetBuffer(tile, offset, geometryStreamMetadata);
|
|
3503
|
+
break;
|
|
3504
|
+
case LengthType.PARTS:
|
|
3505
|
+
partOffsets2 = decodeLengthStreamToOffsetBuffer(tile, offset, geometryStreamMetadata);
|
|
3506
|
+
break;
|
|
3507
|
+
case LengthType.RINGS:
|
|
3508
|
+
ringOffsets2 = decodeLengthStreamToOffsetBuffer(tile, offset, geometryStreamMetadata);
|
|
3509
|
+
break;
|
|
3510
|
+
case LengthType.TRIANGLES:
|
|
3511
|
+
triangleOffsets2 = decodeLengthStreamToOffsetBuffer(tile, offset, geometryStreamMetadata);
|
|
3512
|
+
}
|
|
3513
|
+
break;
|
|
3514
|
+
case PhysicalStreamType.OFFSET: {
|
|
3515
|
+
switch (geometryStreamMetadata.logicalStreamType.offsetType) {
|
|
3516
|
+
case OffsetType.VERTEX:
|
|
3517
|
+
vertexOffsets = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata);
|
|
3518
|
+
break;
|
|
3519
|
+
case OffsetType.INDEX:
|
|
3520
|
+
indexBuffer = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata);
|
|
3521
|
+
break;
|
|
3522
|
+
}
|
|
3523
|
+
break;
|
|
3524
|
+
}
|
|
3525
|
+
case PhysicalStreamType.DATA: {
|
|
3526
|
+
if (DictionaryType.VERTEX === geometryStreamMetadata.logicalStreamType.dictionaryType) {
|
|
3527
|
+
vertexBuffer = decodeSignedInt32Stream(tile, offset, geometryStreamMetadata, scalingData);
|
|
3528
|
+
} else {
|
|
3529
|
+
const mortonMetadata = geometryStreamMetadata;
|
|
3530
|
+
mortonSettings = {
|
|
3531
|
+
numBits: mortonMetadata.numBits,
|
|
3532
|
+
coordinateShift: mortonMetadata.coordinateShift
|
|
3533
|
+
};
|
|
3534
|
+
vertexBuffer = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata, scalingData);
|
|
3535
|
+
}
|
|
3536
|
+
break;
|
|
3537
|
+
}
|
|
3538
|
+
}
|
|
3539
|
+
}
|
|
3540
|
+
if (indexBuffer) {
|
|
3541
|
+
if (geometryOffsets2 !== void 0 || partOffsets2 !== void 0) {
|
|
3542
|
+
const topologyVector = { geometryOffsets: geometryOffsets2, partOffsets: partOffsets2, ringOffsets: ringOffsets2 };
|
|
3543
|
+
return createConstGpuVector(numFeatures, geometryType, triangleOffsets2, indexBuffer, vertexBuffer, topologyVector);
|
|
3544
|
+
}
|
|
3545
|
+
return createConstGpuVector(numFeatures, geometryType, triangleOffsets2, indexBuffer, vertexBuffer);
|
|
3546
|
+
}
|
|
3547
|
+
return mortonSettings === void 0 ? (
|
|
3548
|
+
/* Currently only 2D coordinates (Vec2) are implemented in the encoder */
|
|
3549
|
+
createConstGeometryVector(numFeatures, geometryType, { geometryOffsets: geometryOffsets2, partOffsets: partOffsets2, ringOffsets: ringOffsets2 }, vertexOffsets, vertexBuffer)
|
|
3550
|
+
) : createMortonEncodedConstGeometryVector(numFeatures, geometryType, { geometryOffsets: geometryOffsets2, partOffsets: partOffsets2, ringOffsets: ringOffsets2 }, vertexOffsets, vertexBuffer, mortonSettings);
|
|
3551
|
+
}
|
|
3552
|
+
const geometryTypeVector = decodeUnsignedInt32Stream(tile, offset, geometryTypeMetadata);
|
|
3553
|
+
let geometryLengths;
|
|
3554
|
+
let partLengths;
|
|
3555
|
+
let ringLengths;
|
|
3556
|
+
let triangleOffsets;
|
|
3557
|
+
for (let i = 0; i < numStreams - 1; i++) {
|
|
3558
|
+
const geometryStreamMetadata = decodeStreamMetadata(tile, offset);
|
|
3559
|
+
switch (geometryStreamMetadata.physicalStreamType) {
|
|
3560
|
+
case PhysicalStreamType.LENGTH:
|
|
3561
|
+
switch (geometryStreamMetadata.logicalStreamType.lengthType) {
|
|
3562
|
+
case LengthType.GEOMETRIES:
|
|
3563
|
+
geometryLengths = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata);
|
|
3564
|
+
break;
|
|
3565
|
+
case LengthType.PARTS:
|
|
3566
|
+
partLengths = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata);
|
|
3567
|
+
break;
|
|
3568
|
+
case LengthType.RINGS:
|
|
3569
|
+
ringLengths = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata);
|
|
3570
|
+
break;
|
|
3571
|
+
case LengthType.TRIANGLES:
|
|
3572
|
+
triangleOffsets = decodeLengthStreamToOffsetBuffer(tile, offset, geometryStreamMetadata);
|
|
3573
|
+
}
|
|
3574
|
+
break;
|
|
3575
|
+
case PhysicalStreamType.OFFSET:
|
|
3576
|
+
switch (geometryStreamMetadata.logicalStreamType.offsetType) {
|
|
3577
|
+
case OffsetType.VERTEX:
|
|
3578
|
+
vertexOffsets = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata);
|
|
3579
|
+
break;
|
|
3580
|
+
case OffsetType.INDEX:
|
|
3581
|
+
indexBuffer = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata);
|
|
3582
|
+
break;
|
|
3583
|
+
}
|
|
3584
|
+
break;
|
|
3585
|
+
case PhysicalStreamType.DATA:
|
|
3586
|
+
if (DictionaryType.VERTEX === geometryStreamMetadata.logicalStreamType.dictionaryType) {
|
|
3587
|
+
vertexBuffer = decodeSignedInt32Stream(tile, offset, geometryStreamMetadata, scalingData);
|
|
3588
|
+
} else {
|
|
3589
|
+
const mortonMetadata = geometryStreamMetadata;
|
|
3590
|
+
mortonSettings = {
|
|
3591
|
+
numBits: mortonMetadata.numBits,
|
|
3592
|
+
coordinateShift: mortonMetadata.coordinateShift
|
|
3593
|
+
};
|
|
3594
|
+
vertexBuffer = decodeUnsignedInt32Stream(tile, offset, geometryStreamMetadata, scalingData);
|
|
3595
|
+
}
|
|
3596
|
+
break;
|
|
3597
|
+
}
|
|
3598
|
+
}
|
|
3599
|
+
let geometryOffsets;
|
|
3600
|
+
let partOffsets;
|
|
3601
|
+
let ringOffsets;
|
|
3602
|
+
if (geometryLengths) {
|
|
3603
|
+
geometryOffsets = decodeRootLengthStream(geometryTypeVector, geometryLengths, 2);
|
|
3604
|
+
if (partLengths && ringLengths) {
|
|
3605
|
+
partOffsets = decodeLevel1LengthStream(geometryTypeVector, geometryOffsets, partLengths, false);
|
|
3606
|
+
ringOffsets = decodeLevel2LengthStream(geometryTypeVector, geometryOffsets, partOffsets, ringLengths);
|
|
3607
|
+
} else if (partLengths) {
|
|
3608
|
+
partOffsets = decodeLevel1WithoutRingBufferLengthStream(geometryTypeVector, geometryOffsets, partLengths);
|
|
3609
|
+
}
|
|
3610
|
+
} else if (partLengths && ringLengths) {
|
|
3611
|
+
partOffsets = decodeRootLengthStream(geometryTypeVector, partLengths, 1);
|
|
3612
|
+
ringOffsets = decodeLevel1LengthStream(geometryTypeVector, partOffsets, ringLengths, true);
|
|
3613
|
+
} else if (partLengths) {
|
|
3614
|
+
partOffsets = decodeRootLengthStream(geometryTypeVector, partLengths, 0);
|
|
3615
|
+
}
|
|
3616
|
+
if (indexBuffer && !partOffsets) {
|
|
3617
|
+
return createFlatGpuVector(geometryTypeVector, triangleOffsets, indexBuffer, vertexBuffer);
|
|
3618
|
+
}
|
|
3619
|
+
if (indexBuffer) {
|
|
3620
|
+
return createFlatGpuVector(geometryTypeVector, triangleOffsets, indexBuffer, vertexBuffer, {
|
|
3621
|
+
geometryOffsets,
|
|
3622
|
+
partOffsets,
|
|
3623
|
+
ringOffsets
|
|
3624
|
+
});
|
|
3625
|
+
}
|
|
3626
|
+
return mortonSettings === void 0 ? createFlatGeometryVector(geometryTypeVector, { geometryOffsets, partOffsets, ringOffsets }, vertexOffsets, vertexBuffer) : createFlatGeometryVectorMortonEncoded(geometryTypeVector, { geometryOffsets, partOffsets, ringOffsets }, vertexOffsets, vertexBuffer, mortonSettings);
|
|
3627
|
+
}
|
|
3628
|
+
function decodeRootLengthStream(geometryTypes, rootLengthStream, bufferId) {
|
|
3629
|
+
const rootBufferOffsets = new Uint32Array(geometryTypes.length + 1);
|
|
3630
|
+
let previousOffset = 0;
|
|
3631
|
+
rootBufferOffsets[0] = previousOffset;
|
|
3632
|
+
let rootLengthCounter = 0;
|
|
3633
|
+
for (let i = 0; i < geometryTypes.length; i++) {
|
|
3634
|
+
previousOffset = rootBufferOffsets[i + 1] = previousOffset + (geometryTypes[i] > bufferId ? rootLengthStream[rootLengthCounter++] : 1);
|
|
3635
|
+
}
|
|
3636
|
+
return rootBufferOffsets;
|
|
3637
|
+
}
|
|
3638
|
+
function decodeLevel1LengthStream(geometryTypes, rootOffsetBuffer, level1LengthBuffer, isLineStringPresent) {
|
|
3639
|
+
const level1BufferOffsets = new Uint32Array(rootOffsetBuffer[rootOffsetBuffer.length - 1] + 1);
|
|
3640
|
+
let previousOffset = 0;
|
|
3641
|
+
level1BufferOffsets[0] = previousOffset;
|
|
3642
|
+
let level1BufferCounter = 1;
|
|
3643
|
+
let level1LengthBufferCounter = 0;
|
|
3644
|
+
for (let i = 0; i < geometryTypes.length; i++) {
|
|
3645
|
+
const geometryType = geometryTypes[i];
|
|
3646
|
+
const numGeometries = rootOffsetBuffer[i + 1] - rootOffsetBuffer[i];
|
|
3647
|
+
if (geometryType === 5 || geometryType === 2 || isLineStringPresent && (geometryType === 4 || geometryType === 1)) {
|
|
3648
|
+
for (let j = 0; j < numGeometries; j++) {
|
|
3649
|
+
previousOffset = level1BufferOffsets[level1BufferCounter++] = previousOffset + level1LengthBuffer[level1LengthBufferCounter++];
|
|
3650
|
+
}
|
|
3651
|
+
} else {
|
|
3652
|
+
for (let j = 0; j < numGeometries; j++) {
|
|
3653
|
+
level1BufferOffsets[level1BufferCounter++] = ++previousOffset;
|
|
3654
|
+
}
|
|
3655
|
+
}
|
|
3656
|
+
}
|
|
3657
|
+
return level1BufferOffsets;
|
|
3658
|
+
}
|
|
3659
|
+
function decodeLevel1WithoutRingBufferLengthStream(geometryTypes, rootOffsetBuffer, level1LengthBuffer) {
|
|
3660
|
+
const level1BufferOffsets = new Uint32Array(rootOffsetBuffer[rootOffsetBuffer.length - 1] + 1);
|
|
3661
|
+
let previousOffset = 0;
|
|
3662
|
+
level1BufferOffsets[0] = previousOffset;
|
|
3663
|
+
let level1OffsetBufferCounter = 1;
|
|
3664
|
+
let level1LengthCounter = 0;
|
|
3665
|
+
for (let i = 0; i < geometryTypes.length; i++) {
|
|
3666
|
+
const geometryType = geometryTypes[i];
|
|
3667
|
+
const numGeometries = rootOffsetBuffer[i + 1] - rootOffsetBuffer[i];
|
|
3668
|
+
if (geometryType === 4 || geometryType === 1) {
|
|
3669
|
+
for (let j = 0; j < numGeometries; j++) {
|
|
3670
|
+
previousOffset = level1BufferOffsets[level1OffsetBufferCounter++] = previousOffset + level1LengthBuffer[level1LengthCounter++];
|
|
3671
|
+
}
|
|
3672
|
+
} else {
|
|
3673
|
+
for (let j = 0; j < numGeometries; j++) {
|
|
3674
|
+
level1BufferOffsets[level1OffsetBufferCounter++] = ++previousOffset;
|
|
3675
|
+
}
|
|
3676
|
+
}
|
|
3677
|
+
}
|
|
3678
|
+
return level1BufferOffsets;
|
|
3679
|
+
}
|
|
3680
|
+
function decodeLevel2LengthStream(geometryTypes, rootOffsetBuffer, level1OffsetBuffer, level2LengthBuffer) {
|
|
3681
|
+
const level2BufferOffsets = new Uint32Array(level1OffsetBuffer[level1OffsetBuffer.length - 1] + 1);
|
|
3682
|
+
let previousOffset = 0;
|
|
3683
|
+
level2BufferOffsets[0] = previousOffset;
|
|
3684
|
+
let level1OffsetBufferCounter = 1;
|
|
3685
|
+
let level2OffsetBufferCounter = 1;
|
|
3686
|
+
let level2LengthBufferCounter = 0;
|
|
3687
|
+
for (let i = 0; i < geometryTypes.length; i++) {
|
|
3688
|
+
const geometryType = geometryTypes[i];
|
|
3689
|
+
const numGeometries = rootOffsetBuffer[i + 1] - rootOffsetBuffer[i];
|
|
3690
|
+
if (geometryType !== 0 && geometryType !== 3) {
|
|
3691
|
+
for (let j = 0; j < numGeometries; j++) {
|
|
3692
|
+
const numParts = level1OffsetBuffer[level1OffsetBufferCounter] - level1OffsetBuffer[level1OffsetBufferCounter - 1];
|
|
3693
|
+
level1OffsetBufferCounter++;
|
|
3694
|
+
for (let k = 0; k < numParts; k++) {
|
|
3695
|
+
previousOffset = level2BufferOffsets[level2OffsetBufferCounter++] = previousOffset + level2LengthBuffer[level2LengthBufferCounter++];
|
|
3696
|
+
}
|
|
3697
|
+
}
|
|
3698
|
+
} else {
|
|
3699
|
+
for (let j = 0; j < numGeometries; j++) {
|
|
3700
|
+
level2BufferOffsets[level2OffsetBufferCounter++] = ++previousOffset;
|
|
3701
|
+
level1OffsetBufferCounter++;
|
|
3702
|
+
}
|
|
3703
|
+
}
|
|
3704
|
+
}
|
|
3705
|
+
return level2BufferOffsets;
|
|
3706
|
+
}
|
|
3707
|
+
|
|
3708
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/flat/booleanFlatVector.js
|
|
3709
|
+
var BooleanFlatVector = class extends Vector {
|
|
3710
|
+
constructor(name, dataVector, sizeOrNullabilityBuffer) {
|
|
3711
|
+
super(name, dataVector.getBuffer(), sizeOrNullabilityBuffer);
|
|
3712
|
+
this.dataVector = dataVector;
|
|
3713
|
+
}
|
|
3714
|
+
getValueFromBuffer(index) {
|
|
3715
|
+
return this.dataVector.get(index);
|
|
3716
|
+
}
|
|
3717
|
+
};
|
|
3718
|
+
|
|
3719
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/flat/floatFlatVector.js
|
|
3720
|
+
var FloatFlatVector = class extends FixedSizeVector {
|
|
3721
|
+
getValueFromBuffer(index) {
|
|
3722
|
+
return this.dataBuffer[index];
|
|
3723
|
+
}
|
|
3724
|
+
};
|
|
3725
|
+
|
|
3726
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/constant/int64ConstVector.js
|
|
3727
|
+
var Int64ConstVector = class extends Vector {
|
|
3728
|
+
constructor(name, value, sizeOrNullabilityBuffer, isSigned) {
|
|
3729
|
+
super(name, isSigned ? BigInt64Array.of(value) : BigUint64Array.of(value), sizeOrNullabilityBuffer);
|
|
3730
|
+
}
|
|
3731
|
+
getValueFromBuffer(_index) {
|
|
3732
|
+
return this.dataBuffer[0];
|
|
3733
|
+
}
|
|
3734
|
+
};
|
|
3735
|
+
|
|
3736
|
+
// ../../node_modules/@maplibre/mlt/dist/decoding/decodingUtils.js
|
|
3737
|
+
function skipColumn(numStreams, tile, offset) {
|
|
3738
|
+
for (let i = 0; i < numStreams; i++) {
|
|
3739
|
+
const streamMetadata = decodeStreamMetadata(tile, offset);
|
|
3740
|
+
offset.add(streamMetadata.byteLength);
|
|
3741
|
+
}
|
|
3742
|
+
}
|
|
3743
|
+
function decodeBooleanRle(buffer, numBooleans, byteLength, pos, nullabilityBuffer) {
|
|
3744
|
+
const numBytes = Math.ceil(numBooleans / 8);
|
|
3745
|
+
const values = decodeByteRle(buffer, numBytes, byteLength, pos);
|
|
3746
|
+
if (nullabilityBuffer) {
|
|
3747
|
+
return unpackNullableBoolean(values, numBooleans, nullabilityBuffer);
|
|
3748
|
+
}
|
|
3749
|
+
return values;
|
|
3750
|
+
}
|
|
3751
|
+
function decodeByteRle(buffer, numBytes, byteLength, pos) {
|
|
3752
|
+
const values = new Uint8Array(numBytes);
|
|
3753
|
+
let valueOffset = 0;
|
|
3754
|
+
const streamEndPos = pos.get() + byteLength;
|
|
3755
|
+
while (valueOffset < numBytes) {
|
|
3756
|
+
if (pos.get() >= streamEndPos) {
|
|
3757
|
+
break;
|
|
3758
|
+
}
|
|
3759
|
+
const header = buffer[pos.increment()];
|
|
3760
|
+
if (header <= 127) {
|
|
3761
|
+
const numRuns = header + 3;
|
|
3762
|
+
const value = buffer[pos.increment()];
|
|
3763
|
+
const endValueOffset = Math.min(valueOffset + numRuns, numBytes);
|
|
3764
|
+
values.fill(value, valueOffset, endValueOffset);
|
|
3765
|
+
valueOffset = endValueOffset;
|
|
3766
|
+
} else {
|
|
3767
|
+
const numLiterals = 256 - header;
|
|
3768
|
+
for (let i = 0; i < numLiterals && valueOffset < numBytes; i++) {
|
|
3769
|
+
values[valueOffset++] = buffer[pos.increment()];
|
|
3770
|
+
}
|
|
3771
|
+
}
|
|
3772
|
+
}
|
|
3773
|
+
pos.set(streamEndPos);
|
|
3774
|
+
return values;
|
|
3775
|
+
}
|
|
3776
|
+
function decodeFloatsLE(encodedValues, pos, numValues, nullabilityBuffer) {
|
|
3777
|
+
const currentPos = pos.get();
|
|
3778
|
+
const newOffset = currentPos + numValues * Float32Array.BYTES_PER_ELEMENT;
|
|
3779
|
+
const newBuf = new Uint8Array(encodedValues.subarray(currentPos, newOffset)).buffer;
|
|
3780
|
+
const fb = new Float32Array(newBuf);
|
|
3781
|
+
pos.set(newOffset);
|
|
3782
|
+
if (nullabilityBuffer) {
|
|
3783
|
+
return unpackNullable(fb, nullabilityBuffer, 0);
|
|
3784
|
+
}
|
|
3785
|
+
return fb;
|
|
3786
|
+
}
|
|
3787
|
+
function decodeDoublesLE(encodedValues, pos, numValues, nullabilityBuffer) {
|
|
3788
|
+
const currentPos = pos.get();
|
|
3789
|
+
const newOffset = currentPos + numValues * Float64Array.BYTES_PER_ELEMENT;
|
|
3790
|
+
const newBuf = new Uint8Array(encodedValues.subarray(currentPos, newOffset)).buffer;
|
|
3791
|
+
const fb = new Float64Array(newBuf);
|
|
3792
|
+
pos.set(newOffset);
|
|
3793
|
+
if (nullabilityBuffer) {
|
|
3794
|
+
return unpackNullable(fb, nullabilityBuffer, 0);
|
|
3795
|
+
}
|
|
3796
|
+
return fb;
|
|
3797
|
+
}
|
|
3798
|
+
var TEXT_DECODER_MIN_LENGTH = 12;
|
|
3799
|
+
var utf8TextDecoder = new TextDecoder();
|
|
3800
|
+
function decodeString(buf, pos, end) {
|
|
3801
|
+
if (end - pos >= TEXT_DECODER_MIN_LENGTH) {
|
|
3802
|
+
return utf8TextDecoder.decode(buf.subarray(pos, end));
|
|
3803
|
+
}
|
|
3804
|
+
return readUtf8(buf, pos, end);
|
|
3805
|
+
}
|
|
3806
|
+
function readUtf8(buf, pos, end) {
|
|
3807
|
+
let str = "";
|
|
3808
|
+
let i = pos;
|
|
3809
|
+
while (i < end) {
|
|
3810
|
+
const b0 = buf[i];
|
|
3811
|
+
let c = null;
|
|
3812
|
+
let bytesPerSequence = b0 > 239 ? 4 : b0 > 223 ? 3 : b0 > 191 ? 2 : 1;
|
|
3813
|
+
if (i + bytesPerSequence > end)
|
|
3814
|
+
break;
|
|
3815
|
+
let b1;
|
|
3816
|
+
let b2;
|
|
3817
|
+
let b3;
|
|
3818
|
+
if (bytesPerSequence === 1) {
|
|
3819
|
+
if (b0 < 128) {
|
|
3820
|
+
c = b0;
|
|
3821
|
+
}
|
|
3822
|
+
} else if (bytesPerSequence === 2) {
|
|
3823
|
+
b1 = buf[i + 1];
|
|
3824
|
+
if ((b1 & 192) === 128) {
|
|
3825
|
+
c = (b0 & 31) << 6 | b1 & 63;
|
|
3826
|
+
if (c <= 127) {
|
|
3827
|
+
c = null;
|
|
3828
|
+
}
|
|
3829
|
+
}
|
|
3830
|
+
} else if (bytesPerSequence === 3) {
|
|
3831
|
+
b1 = buf[i + 1];
|
|
3832
|
+
b2 = buf[i + 2];
|
|
3833
|
+
if ((b1 & 192) === 128 && (b2 & 192) === 128) {
|
|
3834
|
+
c = (b0 & 15) << 12 | (b1 & 63) << 6 | b2 & 63;
|
|
3835
|
+
if (c <= 2047 || c >= 55296 && c <= 57343) {
|
|
3836
|
+
c = null;
|
|
3837
|
+
}
|
|
3838
|
+
}
|
|
3839
|
+
} else if (bytesPerSequence === 4) {
|
|
3840
|
+
b1 = buf[i + 1];
|
|
3841
|
+
b2 = buf[i + 2];
|
|
3842
|
+
b3 = buf[i + 3];
|
|
3843
|
+
if ((b1 & 192) === 128 && (b2 & 192) === 128 && (b3 & 192) === 128) {
|
|
3844
|
+
c = (b0 & 15) << 18 | (b1 & 63) << 12 | (b2 & 63) << 6 | b3 & 63;
|
|
3845
|
+
if (c <= 65535 || c >= 1114112) {
|
|
3846
|
+
c = null;
|
|
3847
|
+
}
|
|
3848
|
+
}
|
|
3849
|
+
}
|
|
3850
|
+
if (c === null) {
|
|
3851
|
+
c = 65533;
|
|
3852
|
+
bytesPerSequence = 1;
|
|
3853
|
+
} else if (c > 65535) {
|
|
3854
|
+
c -= 65536;
|
|
3855
|
+
str += String.fromCharCode(c >>> 10 & 1023 | 55296);
|
|
3856
|
+
c = 56320 | c & 1023;
|
|
3857
|
+
}
|
|
3858
|
+
str += String.fromCharCode(c);
|
|
3859
|
+
i += bytesPerSequence;
|
|
3860
|
+
}
|
|
3861
|
+
return str;
|
|
3862
|
+
}
|
|
3863
|
+
|
|
3864
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/variableSizeVector.js
|
|
3865
|
+
var VariableSizeVector = class extends Vector {
|
|
3866
|
+
constructor(name, offsetBuffer, dataBuffer, sizeOrNullabilityBuffer) {
|
|
3867
|
+
super(name, dataBuffer, sizeOrNullabilityBuffer);
|
|
3868
|
+
this.offsetBuffer = offsetBuffer;
|
|
3869
|
+
}
|
|
3870
|
+
};
|
|
3871
|
+
|
|
3872
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/flat/stringFlatVector.js
|
|
3873
|
+
var StringFlatVector = class extends VariableSizeVector {
|
|
3874
|
+
constructor(name, offsetBuffer, dataBuffer, nullabilityBuffer) {
|
|
3875
|
+
super(name, offsetBuffer, dataBuffer, nullabilityBuffer ?? offsetBuffer.length - 1);
|
|
3876
|
+
}
|
|
3877
|
+
getValueFromBuffer(index) {
|
|
3878
|
+
const start = this.offsetBuffer[index];
|
|
3879
|
+
const end = this.offsetBuffer[index + 1];
|
|
3880
|
+
return decodeString(this.dataBuffer, start, end);
|
|
3881
|
+
}
|
|
3882
|
+
};
|
|
3883
|
+
|
|
3884
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/dictionary/stringDictionaryVector.js
|
|
3885
|
+
var StringDictionaryVector = class extends VariableSizeVector {
|
|
3886
|
+
constructor(name, indexBuffer, offsetBuffer, dictionaryBuffer, nullabilityBuffer) {
|
|
3887
|
+
super(name, offsetBuffer, dictionaryBuffer, nullabilityBuffer ?? indexBuffer.length);
|
|
3888
|
+
this.indexBuffer = indexBuffer;
|
|
3889
|
+
this.indexBuffer = indexBuffer;
|
|
3890
|
+
}
|
|
3891
|
+
getValueFromBuffer(index) {
|
|
3892
|
+
const offset = this.indexBuffer[index];
|
|
3893
|
+
const start = this.offsetBuffer[offset];
|
|
3894
|
+
const end = this.offsetBuffer[offset + 1];
|
|
3895
|
+
return decodeString(this.dataBuffer, start, end);
|
|
3896
|
+
}
|
|
3897
|
+
};
|
|
3898
|
+
|
|
3899
|
+
// ../../node_modules/@maplibre/mlt/dist/decoding/fsstDecoder.js
|
|
3900
|
+
function decodeFsst(symbols, symbolLengths, compressedData) {
|
|
3901
|
+
const decodedData = [];
|
|
3902
|
+
const symbolOffsets = new Array(symbolLengths.length).fill(0);
|
|
3903
|
+
for (let i = 1; i < symbolLengths.length; i++) {
|
|
3904
|
+
symbolOffsets[i] = symbolOffsets[i - 1] + symbolLengths[i - 1];
|
|
3905
|
+
}
|
|
3906
|
+
for (let i = 0; i < compressedData.length; i++) {
|
|
3907
|
+
if (compressedData[i] === 255) {
|
|
3908
|
+
decodedData.push(compressedData[++i]);
|
|
3909
|
+
} else {
|
|
3910
|
+
const symbolLength = symbolLengths[compressedData[i]];
|
|
3911
|
+
const symbolOffset = symbolOffsets[compressedData[i]];
|
|
3912
|
+
for (let j = 0; j < symbolLength; j++) {
|
|
3913
|
+
decodedData.push(symbols[symbolOffset + j]);
|
|
3914
|
+
}
|
|
3915
|
+
}
|
|
3916
|
+
}
|
|
3917
|
+
return new Uint8Array(decodedData);
|
|
3918
|
+
}
|
|
3919
|
+
|
|
3920
|
+
// ../../node_modules/@maplibre/mlt/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js
|
|
3921
|
+
var StringFsstDictionaryVector = class extends VariableSizeVector {
|
|
3922
|
+
constructor(name, indexBuffer, offsetBuffer, dictionaryBuffer, symbolOffsetBuffer, symbolTableBuffer, nullabilityBuffer) {
|
|
3923
|
+
super(name, offsetBuffer, dictionaryBuffer, nullabilityBuffer);
|
|
3924
|
+
this.indexBuffer = indexBuffer;
|
|
3925
|
+
this.symbolOffsetBuffer = symbolOffsetBuffer;
|
|
3926
|
+
this.symbolTableBuffer = symbolTableBuffer;
|
|
3927
|
+
}
|
|
3928
|
+
getValueFromBuffer(index) {
|
|
3929
|
+
if (this.decodedDictionary == null) {
|
|
3930
|
+
if (this.symbolLengthBuffer == null) {
|
|
3931
|
+
this.symbolLengthBuffer = this.offsetToLengthBuffer(this.symbolOffsetBuffer);
|
|
3932
|
+
}
|
|
3933
|
+
this.decodedDictionary = decodeFsst(this.symbolTableBuffer, this.symbolLengthBuffer, this.dataBuffer);
|
|
3934
|
+
}
|
|
3935
|
+
const offset = this.indexBuffer[index];
|
|
3936
|
+
const start = this.offsetBuffer[offset];
|
|
3937
|
+
const end = this.offsetBuffer[offset + 1];
|
|
3938
|
+
return decodeString(this.decodedDictionary, start, end);
|
|
3939
|
+
}
|
|
3940
|
+
// TODO: get rid of that conversion
|
|
3941
|
+
offsetToLengthBuffer(offsetBuffer) {
|
|
3942
|
+
const lengthBuffer = new Uint32Array(offsetBuffer.length - 1);
|
|
3943
|
+
let previousOffset = offsetBuffer[0];
|
|
3944
|
+
for (let i = 1; i < offsetBuffer.length; i++) {
|
|
3945
|
+
const offset = offsetBuffer[i];
|
|
3946
|
+
lengthBuffer[i - 1] = offset - previousOffset;
|
|
3947
|
+
previousOffset = offset;
|
|
3948
|
+
}
|
|
3949
|
+
return lengthBuffer;
|
|
3950
|
+
}
|
|
3951
|
+
};
|
|
3952
|
+
|
|
3953
|
+
// ../../node_modules/@maplibre/mlt/dist/decoding/stringDecoder.js
|
|
3954
|
+
function decodeString2(name, data, offset, numStreams, bitVector) {
|
|
3955
|
+
let dictionaryLengthStream = null;
|
|
3956
|
+
let offsetStream = null;
|
|
3957
|
+
let dictionaryStream = null;
|
|
3958
|
+
let symbolLengthStream = null;
|
|
3959
|
+
let symbolTableStream = null;
|
|
3960
|
+
let nullabilityBuffer = bitVector ?? null;
|
|
3961
|
+
let plainLengthStream = null;
|
|
3962
|
+
let plainDataStream = null;
|
|
3963
|
+
for (let i = 0; i < numStreams; i++) {
|
|
3964
|
+
const streamMetadata = decodeStreamMetadata(data, offset);
|
|
3965
|
+
switch (streamMetadata.physicalStreamType) {
|
|
3966
|
+
case PhysicalStreamType.PRESENT: {
|
|
3967
|
+
const presentData = decodeBooleanRle(data, streamMetadata.numValues, streamMetadata.byteLength, offset);
|
|
3968
|
+
const presentStream = new BitVector(presentData, streamMetadata.numValues);
|
|
3969
|
+
nullabilityBuffer = bitVector ?? presentStream;
|
|
3970
|
+
break;
|
|
3971
|
+
}
|
|
3972
|
+
case PhysicalStreamType.OFFSET: {
|
|
3973
|
+
offsetStream = decodeUnsignedInt32Stream(data, offset, streamMetadata, void 0, nullabilityBuffer);
|
|
3974
|
+
break;
|
|
3975
|
+
}
|
|
3976
|
+
case PhysicalStreamType.LENGTH: {
|
|
3977
|
+
const lengthStream = decodeLengthStreamToOffsetBuffer(data, offset, streamMetadata);
|
|
3978
|
+
if (LengthType.DICTIONARY === streamMetadata.logicalStreamType.lengthType) {
|
|
3979
|
+
dictionaryLengthStream = lengthStream;
|
|
3980
|
+
} else if (LengthType.SYMBOL === streamMetadata.logicalStreamType.lengthType) {
|
|
3981
|
+
symbolLengthStream = lengthStream;
|
|
3982
|
+
} else {
|
|
3983
|
+
plainLengthStream = lengthStream;
|
|
3984
|
+
}
|
|
3985
|
+
break;
|
|
3986
|
+
}
|
|
3987
|
+
case PhysicalStreamType.DATA: {
|
|
3988
|
+
const dataStream = data.subarray(offset.get(), offset.get() + streamMetadata.byteLength);
|
|
3989
|
+
offset.add(streamMetadata.byteLength);
|
|
3990
|
+
const dictType = streamMetadata.logicalStreamType.dictionaryType;
|
|
3991
|
+
if (DictionaryType.FSST === dictType) {
|
|
3992
|
+
symbolTableStream = dataStream;
|
|
3993
|
+
} else if (DictionaryType.SINGLE === dictType || DictionaryType.SHARED === dictType) {
|
|
3994
|
+
dictionaryStream = dataStream;
|
|
3995
|
+
} else if (DictionaryType.NONE === dictType) {
|
|
3996
|
+
plainDataStream = dataStream;
|
|
3997
|
+
}
|
|
3998
|
+
break;
|
|
3999
|
+
}
|
|
4000
|
+
}
|
|
4001
|
+
}
|
|
4002
|
+
return decodeFsstDictionaryVector(name, symbolTableStream, offsetStream, dictionaryLengthStream, dictionaryStream, symbolLengthStream, nullabilityBuffer) ?? decodeDictionaryVector(name, dictionaryStream, offsetStream, dictionaryLengthStream, nullabilityBuffer) ?? decodePlainStringVector(name, plainLengthStream, plainDataStream, offsetStream, nullabilityBuffer);
|
|
4003
|
+
}
|
|
4004
|
+
function decodeFsstDictionaryVector(name, symbolTableStream, offsetStream, dictionaryLengthStream, dictionaryStream, symbolLengthStream, nullabilityBuffer) {
|
|
4005
|
+
if (!symbolTableStream) {
|
|
4006
|
+
return null;
|
|
4007
|
+
}
|
|
4008
|
+
return new StringFsstDictionaryVector(name, offsetStream, dictionaryLengthStream, dictionaryStream, symbolLengthStream, symbolTableStream, nullabilityBuffer);
|
|
4009
|
+
}
|
|
4010
|
+
function decodeDictionaryVector(name, dictionaryStream, offsetStream, dictionaryLengthStream, nullabilityBuffer) {
|
|
4011
|
+
if (!dictionaryStream) {
|
|
4012
|
+
return null;
|
|
4013
|
+
}
|
|
4014
|
+
return nullabilityBuffer ? new StringDictionaryVector(name, offsetStream, dictionaryLengthStream, dictionaryStream, nullabilityBuffer) : new StringDictionaryVector(name, offsetStream, dictionaryLengthStream, dictionaryStream);
|
|
4015
|
+
}
|
|
4016
|
+
function decodePlainStringVector(name, plainLengthStream, plainDataStream, offsetStream, nullabilityBuffer) {
|
|
4017
|
+
if (!plainLengthStream || !plainDataStream) {
|
|
4018
|
+
return null;
|
|
4019
|
+
}
|
|
4020
|
+
if (offsetStream) {
|
|
4021
|
+
return nullabilityBuffer ? new StringDictionaryVector(name, offsetStream, plainLengthStream, plainDataStream, nullabilityBuffer) : new StringDictionaryVector(name, offsetStream, plainLengthStream, plainDataStream);
|
|
4022
|
+
}
|
|
4023
|
+
if (nullabilityBuffer && nullabilityBuffer.size() !== plainLengthStream.length - 1) {
|
|
4024
|
+
const sparseOffsetStream = new Uint32Array(nullabilityBuffer.size());
|
|
4025
|
+
let valueIndex = 0;
|
|
4026
|
+
for (let i = 0; i < nullabilityBuffer.size(); i++) {
|
|
4027
|
+
if (nullabilityBuffer.get(i)) {
|
|
4028
|
+
sparseOffsetStream[i] = valueIndex++;
|
|
4029
|
+
} else {
|
|
4030
|
+
sparseOffsetStream[i] = 0;
|
|
4031
|
+
}
|
|
4032
|
+
}
|
|
4033
|
+
return new StringDictionaryVector(name, sparseOffsetStream, plainLengthStream, plainDataStream, nullabilityBuffer);
|
|
4034
|
+
}
|
|
4035
|
+
return nullabilityBuffer ? new StringFlatVector(name, plainLengthStream, plainDataStream, nullabilityBuffer) : new StringFlatVector(name, plainLengthStream, plainDataStream);
|
|
4036
|
+
}
|
|
4037
|
+
function decodeSharedDictionary(data, offset, column, numFeatures, propertyColumnNames) {
|
|
4038
|
+
let dictionaryOffsetBuffer = null;
|
|
4039
|
+
let dictionaryBuffer = null;
|
|
4040
|
+
let symbolOffsetBuffer = null;
|
|
4041
|
+
let symbolTableBuffer = null;
|
|
4042
|
+
let dictionaryStreamDecoded = false;
|
|
4043
|
+
while (!dictionaryStreamDecoded) {
|
|
4044
|
+
const streamMetadata = decodeStreamMetadata(data, offset);
|
|
4045
|
+
switch (streamMetadata.physicalStreamType) {
|
|
4046
|
+
case PhysicalStreamType.LENGTH:
|
|
4047
|
+
if (LengthType.DICTIONARY === streamMetadata.logicalStreamType.lengthType) {
|
|
4048
|
+
dictionaryOffsetBuffer = decodeLengthStreamToOffsetBuffer(data, offset, streamMetadata);
|
|
4049
|
+
} else {
|
|
4050
|
+
symbolOffsetBuffer = decodeLengthStreamToOffsetBuffer(data, offset, streamMetadata);
|
|
4051
|
+
}
|
|
4052
|
+
break;
|
|
4053
|
+
case PhysicalStreamType.DATA:
|
|
4054
|
+
if (DictionaryType.SINGLE === streamMetadata.logicalStreamType.dictionaryType || DictionaryType.SHARED === streamMetadata.logicalStreamType.dictionaryType) {
|
|
4055
|
+
dictionaryBuffer = data.subarray(offset.get(), offset.get() + streamMetadata.byteLength);
|
|
4056
|
+
dictionaryStreamDecoded = true;
|
|
4057
|
+
} else {
|
|
4058
|
+
symbolTableBuffer = data.subarray(offset.get(), offset.get() + streamMetadata.byteLength);
|
|
4059
|
+
}
|
|
4060
|
+
offset.add(streamMetadata.byteLength);
|
|
4061
|
+
break;
|
|
4062
|
+
}
|
|
4063
|
+
}
|
|
4064
|
+
const childFields = column.complexType.children;
|
|
4065
|
+
const stringDictionaryVectors = [];
|
|
4066
|
+
let i = 0;
|
|
4067
|
+
for (const childField of childFields) {
|
|
4068
|
+
const numStreams = decodeVarintInt32(data, offset, 1)[0];
|
|
4069
|
+
if (numStreams === 0) {
|
|
4070
|
+
continue;
|
|
4071
|
+
}
|
|
4072
|
+
const columnName = childField.name ? `${column.name}${childField.name}` : column.name;
|
|
4073
|
+
if (propertyColumnNames) {
|
|
4074
|
+
if (!propertyColumnNames.has(columnName)) {
|
|
4075
|
+
skipColumn(numStreams, data, offset);
|
|
4076
|
+
continue;
|
|
4077
|
+
}
|
|
4078
|
+
}
|
|
4079
|
+
if (numStreams !== 2 || childField.type !== "scalarField" || childField.scalarField.physicalType !== ScalarType.STRING) {
|
|
4080
|
+
throw new Error("Currently only optional string fields are implemented for a struct.");
|
|
4081
|
+
}
|
|
4082
|
+
const presentStreamMetadata = decodeStreamMetadata(data, offset);
|
|
4083
|
+
const presentStream = decodeBooleanRle(data, presentStreamMetadata.numValues, presentStreamMetadata.byteLength, offset);
|
|
4084
|
+
const offsetStreamMetadata = decodeStreamMetadata(data, offset);
|
|
4085
|
+
const offsetCount = offsetStreamMetadata.decompressedCount;
|
|
4086
|
+
const isNullable = offsetCount !== numFeatures;
|
|
4087
|
+
const offsetStream = decodeUnsignedInt32Stream(data, offset, offsetStreamMetadata, void 0, isNullable ? new BitVector(presentStream, presentStreamMetadata.numValues) : void 0);
|
|
4088
|
+
stringDictionaryVectors[i++] = symbolTableBuffer ? new StringFsstDictionaryVector(columnName, offsetStream, dictionaryOffsetBuffer, dictionaryBuffer, symbolOffsetBuffer, symbolTableBuffer, new BitVector(presentStream, presentStreamMetadata.numValues)) : new StringDictionaryVector(columnName, offsetStream, dictionaryOffsetBuffer, dictionaryBuffer, new BitVector(presentStream, presentStreamMetadata.numValues));
|
|
4089
|
+
}
|
|
4090
|
+
return stringDictionaryVectors;
|
|
4091
|
+
}
|
|
4092
|
+
|
|
4093
|
+
// ../../node_modules/@maplibre/mlt/dist/decoding/propertyDecoder.js
|
|
4094
|
+
function decodePropertyColumn(data, offset, columnMetadata, numStreams, numFeatures, propertyColumnNames) {
|
|
4095
|
+
if (columnMetadata.type === "scalarType") {
|
|
4096
|
+
if (propertyColumnNames && !propertyColumnNames.has(columnMetadata.name)) {
|
|
4097
|
+
skipColumn(numStreams, data, offset);
|
|
4098
|
+
return null;
|
|
4099
|
+
}
|
|
4100
|
+
return decodeScalarPropertyColumn(numStreams, data, offset, numFeatures, columnMetadata.scalarType, columnMetadata);
|
|
4101
|
+
}
|
|
4102
|
+
if (numStreams === 0) {
|
|
4103
|
+
return null;
|
|
4104
|
+
}
|
|
4105
|
+
return decodeSharedDictionary(data, offset, columnMetadata, numFeatures, propertyColumnNames);
|
|
4106
|
+
}
|
|
4107
|
+
function decodeScalarPropertyColumn(numStreams, data, offset, numFeatures, column, columnMetadata) {
|
|
4108
|
+
let nullabilityBuffer = null;
|
|
4109
|
+
if (numStreams === 0) {
|
|
4110
|
+
return null;
|
|
4111
|
+
}
|
|
4112
|
+
if (columnMetadata.nullable) {
|
|
4113
|
+
const presentStreamMetadata = decodeStreamMetadata(data, offset);
|
|
4114
|
+
const numValues = presentStreamMetadata.numValues;
|
|
4115
|
+
const streamDataStart = offset.get();
|
|
4116
|
+
const presentVector = decodeBooleanRle(data, numValues, presentStreamMetadata.byteLength, offset);
|
|
4117
|
+
offset.set(streamDataStart + presentStreamMetadata.byteLength);
|
|
4118
|
+
nullabilityBuffer = new BitVector(presentVector, presentStreamMetadata.numValues);
|
|
4119
|
+
}
|
|
4120
|
+
const sizeOrNullabilityBuffer = nullabilityBuffer ?? numFeatures;
|
|
4121
|
+
const scalarType = column.physicalType;
|
|
4122
|
+
switch (scalarType) {
|
|
4123
|
+
case ScalarType.UINT_32:
|
|
4124
|
+
case ScalarType.INT_32:
|
|
4125
|
+
return decodeInt32Column(data, offset, columnMetadata, column, sizeOrNullabilityBuffer);
|
|
4126
|
+
case ScalarType.STRING: {
|
|
4127
|
+
const stringDataStreams = columnMetadata.nullable ? numStreams - 1 : numStreams;
|
|
4128
|
+
return decodeString2(columnMetadata.name, data, offset, stringDataStreams, nullabilityBuffer);
|
|
4129
|
+
}
|
|
4130
|
+
case ScalarType.BOOLEAN:
|
|
4131
|
+
return decodeBooleanColumn(data, offset, columnMetadata, numFeatures, sizeOrNullabilityBuffer);
|
|
4132
|
+
case ScalarType.UINT_64:
|
|
4133
|
+
case ScalarType.INT_64:
|
|
4134
|
+
return decodeInt64Column(data, offset, columnMetadata, sizeOrNullabilityBuffer, column);
|
|
4135
|
+
case ScalarType.FLOAT:
|
|
4136
|
+
return decodeFloatColumn(data, offset, columnMetadata, sizeOrNullabilityBuffer);
|
|
4137
|
+
case ScalarType.DOUBLE:
|
|
4138
|
+
return decodeDoubleColumn(data, offset, columnMetadata, sizeOrNullabilityBuffer);
|
|
4139
|
+
default:
|
|
4140
|
+
throw new Error(`The specified data type for the field is currently not supported: ${column}`);
|
|
4141
|
+
}
|
|
4142
|
+
}
|
|
4143
|
+
function decodeBooleanColumn(data, offset, column, _numFeatures, sizeOrNullabilityBuffer) {
|
|
4144
|
+
const dataStreamMetadata = decodeStreamMetadata(data, offset);
|
|
4145
|
+
const numValues = dataStreamMetadata.numValues;
|
|
4146
|
+
const streamDataStart = offset.get();
|
|
4147
|
+
const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : void 0;
|
|
4148
|
+
const dataStream = decodeBooleanRle(data, numValues, dataStreamMetadata.byteLength, offset, nullabilityBuffer);
|
|
4149
|
+
offset.set(streamDataStart + dataStreamMetadata.byteLength);
|
|
4150
|
+
const dataVector = new BitVector(dataStream, numValues);
|
|
4151
|
+
return new BooleanFlatVector(column.name, dataVector, sizeOrNullabilityBuffer);
|
|
4152
|
+
}
|
|
4153
|
+
function decodeFloatColumn(data, offset, column, sizeOrNullabilityBuffer) {
|
|
4154
|
+
const dataStreamMetadata = decodeStreamMetadata(data, offset);
|
|
4155
|
+
const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : void 0;
|
|
4156
|
+
const dataStream = decodeFloatsLE(data, offset, dataStreamMetadata.numValues, nullabilityBuffer);
|
|
4157
|
+
return new FloatFlatVector(column.name, dataStream, sizeOrNullabilityBuffer);
|
|
4158
|
+
}
|
|
4159
|
+
function decodeDoubleColumn(data, offset, column, sizeOrNullabilityBuffer) {
|
|
4160
|
+
const dataStreamMetadata = decodeStreamMetadata(data, offset);
|
|
4161
|
+
const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : void 0;
|
|
4162
|
+
const dataStream = decodeDoublesLE(data, offset, dataStreamMetadata.numValues, nullabilityBuffer);
|
|
4163
|
+
return new DoubleFlatVector(column.name, dataStream, sizeOrNullabilityBuffer);
|
|
4164
|
+
}
|
|
4165
|
+
function decodeInt64Column(data, offset, column, sizeOrNullabilityBuffer, scalarColumn) {
|
|
4166
|
+
const dataStreamMetadata = decodeStreamMetadata(data, offset);
|
|
4167
|
+
const vectorType = getVectorType(dataStreamMetadata, sizeOrNullabilityBuffer, data, offset, "int64");
|
|
4168
|
+
const isSigned = scalarColumn.physicalType === ScalarType.INT_64;
|
|
4169
|
+
if (vectorType === VectorType.FLAT) {
|
|
4170
|
+
const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : void 0;
|
|
4171
|
+
const dataStream = isSigned ? decodeSignedInt64Stream(data, offset, dataStreamMetadata, nullabilityBuffer) : decodeUnsignedInt64Stream(data, offset, dataStreamMetadata, nullabilityBuffer);
|
|
4172
|
+
return new Int64FlatVector(column.name, dataStream, sizeOrNullabilityBuffer);
|
|
4173
|
+
}
|
|
4174
|
+
if (vectorType === VectorType.SEQUENCE) {
|
|
4175
|
+
const id = decodeSequenceInt64Stream(data, offset, dataStreamMetadata);
|
|
4176
|
+
return new Int64SequenceVector(column.name, id[0], id[1], dataStreamMetadata.numRleValues);
|
|
4177
|
+
}
|
|
4178
|
+
const constValue = isSigned ? decodeSignedConstInt64Stream(data, offset, dataStreamMetadata) : decodeUnsignedConstInt64Stream(data, offset, dataStreamMetadata);
|
|
4179
|
+
return new Int64ConstVector(column.name, constValue, sizeOrNullabilityBuffer, isSigned);
|
|
4180
|
+
}
|
|
4181
|
+
function decodeInt32Column(data, offset, column, scalarColumn, sizeOrNullabilityBuffer) {
|
|
4182
|
+
const dataStreamMetadata = decodeStreamMetadata(data, offset);
|
|
4183
|
+
const vectorType = getVectorType(dataStreamMetadata, sizeOrNullabilityBuffer, data, offset);
|
|
4184
|
+
const isSigned = scalarColumn.physicalType === ScalarType.INT_32;
|
|
4185
|
+
if (vectorType === VectorType.FLAT) {
|
|
4186
|
+
const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : void 0;
|
|
4187
|
+
const dataStream = isSigned ? decodeSignedInt32Stream(data, offset, dataStreamMetadata, void 0, nullabilityBuffer) : decodeUnsignedInt32Stream(data, offset, dataStreamMetadata, void 0, nullabilityBuffer);
|
|
4188
|
+
return new Int32FlatVector(column.name, dataStream, sizeOrNullabilityBuffer);
|
|
4189
|
+
}
|
|
4190
|
+
if (vectorType === VectorType.SEQUENCE) {
|
|
4191
|
+
const id = decodeSequenceInt32Stream(data, offset, dataStreamMetadata);
|
|
4192
|
+
return new Int32SequenceVector(column.name, id[0], id[1], dataStreamMetadata.numRleValues);
|
|
4193
|
+
}
|
|
4194
|
+
const constValue = isSigned ? decodeSignedConstInt32Stream(data, offset, dataStreamMetadata) : decodeUnsignedConstInt32Stream(data, offset, dataStreamMetadata);
|
|
4195
|
+
return new Int32ConstVector(column.name, constValue, sizeOrNullabilityBuffer, isSigned);
|
|
4196
|
+
}
|
|
4197
|
+
function isNullabilityBuffer(sizeOrNullabilityBuffer) {
|
|
4198
|
+
return sizeOrNullabilityBuffer instanceof BitVector;
|
|
4199
|
+
}
|
|
4200
|
+
|
|
4201
|
+
// ../../node_modules/@maplibre/mlt/dist/metadata/tileset/typeMap.js
|
|
4202
|
+
function decodeColumnType(typeCode) {
|
|
4203
|
+
switch (typeCode) {
|
|
4204
|
+
case 0:
|
|
4205
|
+
case 1:
|
|
4206
|
+
case 2:
|
|
4207
|
+
case 3: {
|
|
4208
|
+
const column = {};
|
|
4209
|
+
column.nullable = (typeCode & 1) !== 0;
|
|
4210
|
+
column.columnScope = ColumnScope.FEATURE;
|
|
4211
|
+
const scalarCol = {};
|
|
4212
|
+
scalarCol.type = "logicalType";
|
|
4213
|
+
scalarCol.logicalType = LogicalScalarType.ID;
|
|
4214
|
+
scalarCol.longID = (typeCode & 2) !== 0;
|
|
4215
|
+
column.scalarType = scalarCol;
|
|
4216
|
+
column.type = "scalarType";
|
|
4217
|
+
return column;
|
|
4218
|
+
}
|
|
4219
|
+
case 4: {
|
|
4220
|
+
const column = {};
|
|
4221
|
+
column.nullable = false;
|
|
4222
|
+
column.columnScope = ColumnScope.FEATURE;
|
|
4223
|
+
const complexCol = {};
|
|
4224
|
+
complexCol.type = "physicalType";
|
|
4225
|
+
complexCol.physicalType = ComplexType.GEOMETRY;
|
|
4226
|
+
column.type = "complexType";
|
|
4227
|
+
column.complexType = complexCol;
|
|
4228
|
+
return column;
|
|
4229
|
+
}
|
|
4230
|
+
case 30: {
|
|
4231
|
+
const column = {};
|
|
4232
|
+
column.nullable = false;
|
|
4233
|
+
column.columnScope = ColumnScope.FEATURE;
|
|
4234
|
+
const complexCol = {};
|
|
4235
|
+
complexCol.type = "physicalType";
|
|
4236
|
+
complexCol.physicalType = ComplexType.STRUCT;
|
|
4237
|
+
column.type = "complexType";
|
|
4238
|
+
column.complexType = complexCol;
|
|
4239
|
+
return column;
|
|
4240
|
+
}
|
|
4241
|
+
default:
|
|
4242
|
+
return mapScalarType(typeCode);
|
|
4243
|
+
}
|
|
4244
|
+
}
|
|
4245
|
+
function columnTypeHasName(typeCode) {
|
|
4246
|
+
return typeCode >= 10;
|
|
4247
|
+
}
|
|
4248
|
+
function columnTypeHasChildren(typeCode) {
|
|
4249
|
+
return typeCode === 30;
|
|
4250
|
+
}
|
|
4251
|
+
function hasStreamCount(column) {
|
|
4252
|
+
if (column.type === "scalarType") {
|
|
4253
|
+
const scalarCol = column.scalarType;
|
|
4254
|
+
if (scalarCol.type === "physicalType") {
|
|
4255
|
+
const physicalType = scalarCol.physicalType;
|
|
4256
|
+
switch (physicalType) {
|
|
4257
|
+
case ScalarType.BOOLEAN:
|
|
4258
|
+
case ScalarType.INT_8:
|
|
4259
|
+
case ScalarType.UINT_8:
|
|
4260
|
+
case ScalarType.INT_32:
|
|
4261
|
+
case ScalarType.UINT_32:
|
|
4262
|
+
case ScalarType.INT_64:
|
|
4263
|
+
case ScalarType.UINT_64:
|
|
4264
|
+
case ScalarType.FLOAT:
|
|
4265
|
+
case ScalarType.DOUBLE:
|
|
4266
|
+
return false;
|
|
4267
|
+
case ScalarType.STRING:
|
|
4268
|
+
return true;
|
|
4269
|
+
default:
|
|
4270
|
+
return false;
|
|
4271
|
+
}
|
|
4272
|
+
}
|
|
4273
|
+
if (scalarCol.type === "logicalType") {
|
|
4274
|
+
return false;
|
|
4275
|
+
}
|
|
4276
|
+
} else if (column.type === "complexType") {
|
|
4277
|
+
const complexCol = column.complexType;
|
|
4278
|
+
if (complexCol.type === "physicalType") {
|
|
4279
|
+
const physicalType = complexCol.physicalType;
|
|
4280
|
+
switch (physicalType) {
|
|
4281
|
+
case ComplexType.GEOMETRY:
|
|
4282
|
+
case ComplexType.STRUCT:
|
|
4283
|
+
return true;
|
|
4284
|
+
default:
|
|
4285
|
+
return false;
|
|
4286
|
+
}
|
|
4287
|
+
}
|
|
4288
|
+
}
|
|
4289
|
+
console.warn("Unexpected column type in hasStreamCount", column);
|
|
4290
|
+
return false;
|
|
4291
|
+
}
|
|
4292
|
+
function isLogicalIdColumn(column) {
|
|
4293
|
+
return column.type === "scalarType" && column.scalarType?.type === "logicalType" && column.scalarType.logicalType === LogicalScalarType.ID;
|
|
4294
|
+
}
|
|
4295
|
+
function isGeometryColumn(column) {
|
|
4296
|
+
return column.type === "complexType" && column.complexType?.type === "physicalType" && column.complexType.physicalType === ComplexType.GEOMETRY;
|
|
4297
|
+
}
|
|
4298
|
+
function mapScalarType(typeCode) {
|
|
4299
|
+
let scalarType;
|
|
4300
|
+
switch (typeCode) {
|
|
4301
|
+
case 10:
|
|
4302
|
+
case 11:
|
|
4303
|
+
scalarType = ScalarType.BOOLEAN;
|
|
4304
|
+
break;
|
|
4305
|
+
case 12:
|
|
4306
|
+
case 13:
|
|
4307
|
+
scalarType = ScalarType.INT_8;
|
|
4308
|
+
break;
|
|
4309
|
+
case 14:
|
|
4310
|
+
case 15:
|
|
4311
|
+
scalarType = ScalarType.UINT_8;
|
|
4312
|
+
break;
|
|
4313
|
+
case 16:
|
|
4314
|
+
case 17:
|
|
4315
|
+
scalarType = ScalarType.INT_32;
|
|
4316
|
+
break;
|
|
4317
|
+
case 18:
|
|
4318
|
+
case 19:
|
|
4319
|
+
scalarType = ScalarType.UINT_32;
|
|
4320
|
+
break;
|
|
4321
|
+
case 20:
|
|
4322
|
+
case 21:
|
|
4323
|
+
scalarType = ScalarType.INT_64;
|
|
4324
|
+
break;
|
|
4325
|
+
case 22:
|
|
4326
|
+
case 23:
|
|
4327
|
+
scalarType = ScalarType.UINT_64;
|
|
4328
|
+
break;
|
|
4329
|
+
case 24:
|
|
4330
|
+
case 25:
|
|
4331
|
+
scalarType = ScalarType.FLOAT;
|
|
4332
|
+
break;
|
|
4333
|
+
case 26:
|
|
4334
|
+
case 27:
|
|
4335
|
+
scalarType = ScalarType.DOUBLE;
|
|
4336
|
+
break;
|
|
4337
|
+
case 28:
|
|
4338
|
+
case 29:
|
|
4339
|
+
scalarType = ScalarType.STRING;
|
|
4340
|
+
break;
|
|
4341
|
+
default:
|
|
4342
|
+
return null;
|
|
4343
|
+
}
|
|
4344
|
+
const column = {};
|
|
4345
|
+
column.nullable = (typeCode & 1) !== 0;
|
|
4346
|
+
column.columnScope = ColumnScope.FEATURE;
|
|
4347
|
+
const scalarCol = {};
|
|
4348
|
+
scalarCol.type = "physicalType";
|
|
4349
|
+
scalarCol.physicalType = scalarType;
|
|
4350
|
+
column.type = "scalarType";
|
|
4351
|
+
column.scalarType = scalarCol;
|
|
4352
|
+
return column;
|
|
4353
|
+
}
|
|
4354
|
+
|
|
4355
|
+
// ../../node_modules/@maplibre/mlt/dist/metadata/tileset/embeddedTilesetMetadataDecoder.js
|
|
4356
|
+
var textDecoder = new TextDecoder();
|
|
4357
|
+
var SUPPORTED_COLUMN_TYPES = "0-3(ID), 4(GEOMETRY), 10-29(scalars), 30(STRUCT)";
|
|
4358
|
+
var SUPPORTED_FIELD_TYPES = "10-29(scalars), 30(STRUCT)";
|
|
4359
|
+
function decodeString3(src, offset) {
|
|
4360
|
+
const length = decodeVarintInt32(src, offset, 1)[0];
|
|
4361
|
+
if (length === 0) {
|
|
4362
|
+
return "";
|
|
4363
|
+
}
|
|
4364
|
+
const start = offset.get();
|
|
4365
|
+
const end = start + length;
|
|
4366
|
+
const view = src.subarray(start, end);
|
|
4367
|
+
offset.add(length);
|
|
4368
|
+
return textDecoder.decode(view);
|
|
4369
|
+
}
|
|
4370
|
+
function columnToField(column) {
|
|
4371
|
+
return {
|
|
4372
|
+
name: column.name,
|
|
4373
|
+
nullable: column.nullable,
|
|
4374
|
+
scalarField: column.scalarType,
|
|
4375
|
+
complexField: column.complexType,
|
|
4376
|
+
type: column.type === "scalarType" ? "scalarField" : "complexField"
|
|
4377
|
+
};
|
|
4378
|
+
}
|
|
4379
|
+
function decodeField(src, offset) {
|
|
4380
|
+
const typeCode = decodeVarintInt32(src, offset, 1)[0] >>> 0;
|
|
4381
|
+
if (typeCode < 10 || typeCode > 30) {
|
|
4382
|
+
throw new Error(`Unsupported field type code ${typeCode}. Supported: ${SUPPORTED_FIELD_TYPES}`);
|
|
4383
|
+
}
|
|
4384
|
+
const column = decodeColumnType(typeCode);
|
|
4385
|
+
if (columnTypeHasName(typeCode)) {
|
|
4386
|
+
column.name = decodeString3(src, offset);
|
|
4387
|
+
}
|
|
4388
|
+
if (columnTypeHasChildren(typeCode)) {
|
|
4389
|
+
const childCount = decodeVarintInt32(src, offset, 1)[0] >>> 0;
|
|
4390
|
+
column.complexType.children = new Array(childCount);
|
|
4391
|
+
for (let i = 0; i < childCount; i++) {
|
|
4392
|
+
column.complexType.children[i] = decodeField(src, offset);
|
|
4393
|
+
}
|
|
4394
|
+
}
|
|
4395
|
+
return columnToField(column);
|
|
4396
|
+
}
|
|
4397
|
+
function decodeColumn(src, offset) {
|
|
4398
|
+
const typeCode = decodeVarintInt32(src, offset, 1)[0] >>> 0;
|
|
4399
|
+
const column = decodeColumnType(typeCode);
|
|
4400
|
+
if (!column) {
|
|
4401
|
+
throw new Error(`Unsupported column type code ${typeCode}. Supported: ${SUPPORTED_COLUMN_TYPES}`);
|
|
4402
|
+
}
|
|
4403
|
+
if (columnTypeHasName(typeCode)) {
|
|
4404
|
+
column.name = decodeString3(src, offset);
|
|
4405
|
+
} else {
|
|
4406
|
+
if (typeCode >= 0 && typeCode <= 3) {
|
|
4407
|
+
column.name = "id";
|
|
4408
|
+
} else if (typeCode === 4) {
|
|
4409
|
+
column.name = "geometry";
|
|
4410
|
+
}
|
|
4411
|
+
}
|
|
4412
|
+
if (columnTypeHasChildren(typeCode)) {
|
|
4413
|
+
const childCount = decodeVarintInt32(src, offset, 1)[0] >>> 0;
|
|
4414
|
+
const complexCol = column.complexType;
|
|
4415
|
+
complexCol.children = new Array(childCount);
|
|
4416
|
+
for (let i = 0; i < childCount; i++) {
|
|
4417
|
+
complexCol.children[i] = decodeField(src, offset);
|
|
4418
|
+
}
|
|
4419
|
+
}
|
|
4420
|
+
return column;
|
|
4421
|
+
}
|
|
4422
|
+
function decodeEmbeddedTileSetMetadata(bytes, offset) {
|
|
4423
|
+
const meta = {};
|
|
4424
|
+
meta.featureTables = [];
|
|
4425
|
+
const table = {};
|
|
4426
|
+
table.name = decodeString3(bytes, offset);
|
|
4427
|
+
const extent = decodeVarintInt32(bytes, offset, 1)[0] >>> 0;
|
|
4428
|
+
const columnCount = decodeVarintInt32(bytes, offset, 1)[0] >>> 0;
|
|
4429
|
+
table.columns = new Array(columnCount);
|
|
4430
|
+
for (let j = 0; j < columnCount; j++) {
|
|
4431
|
+
table.columns[j] = decodeColumn(bytes, offset);
|
|
4432
|
+
}
|
|
4433
|
+
meta.featureTables.push(table);
|
|
4434
|
+
return [meta, extent];
|
|
4435
|
+
}
|
|
4436
|
+
|
|
4437
|
+
// ../../node_modules/@maplibre/mlt/dist/mltDecoder.js
|
|
4438
|
+
function decodeTile(tile, geometryScaling, idWithinMaxSafeInteger = true) {
|
|
4439
|
+
const offset = new IntWrapper(0);
|
|
4440
|
+
const featureTables = [];
|
|
4441
|
+
while (offset.get() < tile.length) {
|
|
4442
|
+
const blockLength = decodeVarintInt32(tile, offset, 1)[0] >>> 0;
|
|
4443
|
+
const blockStart = offset.get();
|
|
4444
|
+
const blockEnd = blockStart + blockLength;
|
|
4445
|
+
if (blockEnd > tile.length) {
|
|
4446
|
+
throw new Error(`Block overruns tile: ${blockEnd} > ${tile.length}`);
|
|
4447
|
+
}
|
|
4448
|
+
const tag = decodeVarintInt32(tile, offset, 1)[0] >>> 0;
|
|
4449
|
+
if (tag !== 1) {
|
|
4450
|
+
offset.set(blockEnd);
|
|
4451
|
+
continue;
|
|
4452
|
+
}
|
|
4453
|
+
const [metadata, extent] = decodeEmbeddedTileSetMetadata(tile, offset);
|
|
4454
|
+
const featureTableMetadata = metadata.featureTables[0];
|
|
4455
|
+
let idVector = null;
|
|
4456
|
+
let geometryVector = null;
|
|
4457
|
+
const propertyVectors = [];
|
|
4458
|
+
let numFeatures = 0;
|
|
4459
|
+
for (const columnMetadata of featureTableMetadata.columns) {
|
|
4460
|
+
const columnName = columnMetadata.name;
|
|
4461
|
+
if (isLogicalIdColumn(columnMetadata)) {
|
|
4462
|
+
let nullabilityBuffer = null;
|
|
4463
|
+
if (columnMetadata.nullable) {
|
|
4464
|
+
const presentStreamMetadata = decodeStreamMetadata(tile, offset);
|
|
4465
|
+
const streamDataStart = offset.get();
|
|
4466
|
+
const values = decodeBooleanRle(tile, presentStreamMetadata.numValues, presentStreamMetadata.byteLength, offset);
|
|
4467
|
+
offset.set(streamDataStart + presentStreamMetadata.byteLength);
|
|
4468
|
+
nullabilityBuffer = new BitVector(values, presentStreamMetadata.numValues);
|
|
4469
|
+
}
|
|
4470
|
+
const idDataStreamMetadata = decodeStreamMetadata(tile, offset);
|
|
4471
|
+
numFeatures = nullabilityBuffer ? nullabilityBuffer.size() : idDataStreamMetadata.decompressedCount;
|
|
4472
|
+
idVector = decodeIdColumn(tile, columnMetadata, offset, columnName, idDataStreamMetadata, nullabilityBuffer ?? numFeatures, idWithinMaxSafeInteger);
|
|
4473
|
+
} else if (isGeometryColumn(columnMetadata)) {
|
|
4474
|
+
const numStreams = decodeVarintInt32(tile, offset, 1)[0];
|
|
4475
|
+
if (numFeatures === 0) {
|
|
4476
|
+
const savedOffset = offset.get();
|
|
4477
|
+
const geometryTypeMetadata = decodeStreamMetadata(tile, offset);
|
|
4478
|
+
numFeatures = geometryTypeMetadata.decompressedCount;
|
|
4479
|
+
offset.set(savedOffset);
|
|
4480
|
+
}
|
|
4481
|
+
if (geometryScaling) {
|
|
4482
|
+
geometryScaling.scale = geometryScaling.extent / extent;
|
|
4483
|
+
}
|
|
4484
|
+
geometryVector = decodeGeometryColumn(tile, numStreams, offset, numFeatures, geometryScaling);
|
|
4485
|
+
} else {
|
|
4486
|
+
const columnHasStreamCount = hasStreamCount(columnMetadata);
|
|
4487
|
+
const numStreams = columnHasStreamCount ? decodeVarintInt32(tile, offset, 1)[0] : 1;
|
|
4488
|
+
if (numStreams === 0) {
|
|
4489
|
+
continue;
|
|
4490
|
+
}
|
|
4491
|
+
const propertyVector = decodePropertyColumn(tile, offset, columnMetadata, numStreams, numFeatures, void 0);
|
|
4492
|
+
if (propertyVector) {
|
|
4493
|
+
if (Array.isArray(propertyVector)) {
|
|
4494
|
+
for (const property of propertyVector) {
|
|
4495
|
+
propertyVectors.push(property);
|
|
4496
|
+
}
|
|
4497
|
+
} else {
|
|
4498
|
+
propertyVectors.push(propertyVector);
|
|
4499
|
+
}
|
|
4500
|
+
}
|
|
4501
|
+
}
|
|
4502
|
+
}
|
|
4503
|
+
const featureTable = new FeatureTable(featureTableMetadata.name, geometryVector, idVector, propertyVectors, extent);
|
|
4504
|
+
featureTables.push(featureTable);
|
|
4505
|
+
offset.set(blockEnd);
|
|
4506
|
+
}
|
|
4507
|
+
return featureTables;
|
|
4508
|
+
}
|
|
4509
|
+
function decodeIdColumn(tile, columnMetadata, offset, columnName, idDataStreamMetadata, sizeOrNullabilityBuffer, idWithinMaxSafeInteger = false) {
|
|
4510
|
+
const scalarTypeMetadata = columnMetadata.scalarType;
|
|
4511
|
+
if (!scalarTypeMetadata || scalarTypeMetadata.type !== "logicalType" || scalarTypeMetadata.logicalType !== LogicalScalarType.ID) {
|
|
4512
|
+
throw new Error(`ID column must be a logical ID scalar type: ${columnName}`);
|
|
4513
|
+
}
|
|
4514
|
+
const idDataType = scalarTypeMetadata.longID ? ScalarType.UINT_64 : ScalarType.UINT_32;
|
|
4515
|
+
const nullabilityBuffer = typeof sizeOrNullabilityBuffer === "number" ? void 0 : sizeOrNullabilityBuffer;
|
|
4516
|
+
const vectorType = getVectorType(idDataStreamMetadata, sizeOrNullabilityBuffer, tile, offset, idDataType === ScalarType.UINT_64 ? "int64" : "int32");
|
|
4517
|
+
if (idDataType === ScalarType.UINT_32) {
|
|
4518
|
+
switch (vectorType) {
|
|
4519
|
+
case VectorType.FLAT: {
|
|
4520
|
+
const id = decodeUnsignedInt32Stream(tile, offset, idDataStreamMetadata, void 0, nullabilityBuffer);
|
|
4521
|
+
return new Int32FlatVector(columnName, id, sizeOrNullabilityBuffer);
|
|
4522
|
+
}
|
|
4523
|
+
case VectorType.SEQUENCE: {
|
|
4524
|
+
const id = decodeSequenceInt32Stream(tile, offset, idDataStreamMetadata);
|
|
4525
|
+
return new Int32SequenceVector(columnName, id[0], id[1], idDataStreamMetadata.numRleValues);
|
|
4526
|
+
}
|
|
4527
|
+
case VectorType.CONST: {
|
|
4528
|
+
const id = decodeUnsignedConstInt32Stream(tile, offset, idDataStreamMetadata);
|
|
4529
|
+
return new Int32ConstVector(columnName, id, sizeOrNullabilityBuffer, false);
|
|
4530
|
+
}
|
|
4531
|
+
}
|
|
4532
|
+
}
|
|
4533
|
+
switch (vectorType) {
|
|
4534
|
+
case VectorType.FLAT: {
|
|
4535
|
+
if (idWithinMaxSafeInteger) {
|
|
4536
|
+
const id2 = decodeUnsignedInt64AsFloat64Stream(tile, offset, idDataStreamMetadata);
|
|
4537
|
+
return new DoubleFlatVector(columnName, id2, sizeOrNullabilityBuffer);
|
|
4538
|
+
}
|
|
4539
|
+
const id = decodeUnsignedInt64Stream(tile, offset, idDataStreamMetadata, nullabilityBuffer);
|
|
4540
|
+
return new Int64FlatVector(columnName, id, sizeOrNullabilityBuffer);
|
|
4541
|
+
}
|
|
4542
|
+
case VectorType.SEQUENCE: {
|
|
4543
|
+
const id = decodeSequenceInt64Stream(tile, offset, idDataStreamMetadata);
|
|
4544
|
+
return new Int64SequenceVector(columnName, id[0], id[1], idDataStreamMetadata.numRleValues);
|
|
4545
|
+
}
|
|
4546
|
+
case VectorType.CONST: {
|
|
4547
|
+
const id = decodeUnsignedConstInt64Stream(tile, offset, idDataStreamMetadata);
|
|
4548
|
+
return new Int64ConstVector(columnName, id, sizeOrNullabilityBuffer, false);
|
|
4549
|
+
}
|
|
4550
|
+
}
|
|
4551
|
+
throw new Error("Vector type not supported for id column.");
|
|
4552
|
+
}
|