@loaders.gl/textures 4.0.0-alpha.5 → 4.0.0-alpha.6
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/dist/basis-loader.d.ts +4 -43
- package/dist/basis-loader.d.ts.map +1 -1
- package/dist/basis-loader.js +36 -24
- package/dist/basis-nodejs-worker.js +66490 -0
- package/dist/basis-worker.js +52 -19
- package/dist/bundle.js +2 -2
- package/dist/compressed-texture-loader.d.ts +1 -1
- package/dist/compressed-texture-loader.d.ts.map +1 -1
- package/dist/compressed-texture-loader.js +59 -36
- package/dist/compressed-texture-worker.js +51 -18
- package/dist/compressed-texture-writer.d.ts +13 -21
- package/dist/compressed-texture-writer.d.ts.map +1 -1
- package/dist/compressed-texture-writer.js +33 -21
- package/dist/crunch-loader.js +23 -16
- package/dist/crunch-worker.js +49 -17
- package/dist/dist.min.js +218 -146
- package/dist/es5/basis-loader.js +38 -0
- package/dist/es5/basis-loader.js.map +1 -0
- package/dist/es5/bundle.js +6 -0
- package/dist/es5/bundle.js.map +1 -0
- package/dist/es5/compressed-texture-loader.js +76 -0
- package/dist/es5/compressed-texture-loader.js.map +1 -0
- package/dist/es5/compressed-texture-writer.js +28 -0
- package/dist/es5/compressed-texture-writer.js.map +1 -0
- package/dist/es5/crunch-loader.js +26 -0
- package/dist/es5/crunch-loader.js.map +1 -0
- package/dist/es5/index.js +132 -0
- package/dist/es5/index.js.map +1 -0
- package/dist/es5/ktx2-basis-writer-nodejs.js +14 -0
- package/dist/es5/ktx2-basis-writer-nodejs.js.map +1 -0
- package/dist/es5/ktx2-basis-writer.js +26 -0
- package/dist/es5/ktx2-basis-writer.js.map +1 -0
- package/dist/es5/lib/encoders/encode-ktx.js +12 -0
- package/dist/es5/lib/encoders/encode-ktx.js.map +1 -0
- package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js +74 -0
- package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js.map +1 -0
- package/dist/es5/lib/encoders/encode-texture.js +38 -0
- package/dist/es5/lib/encoders/encode-texture.js.map +1 -0
- package/dist/es5/lib/gl-extensions.js +68 -0
- package/dist/es5/lib/gl-extensions.js.map +1 -0
- package/dist/es5/lib/parsers/basis-module-loader.js +194 -0
- package/dist/es5/lib/parsers/basis-module-loader.js.map +1 -0
- package/dist/es5/lib/parsers/crunch-module-loader.js +67 -0
- package/dist/es5/lib/parsers/crunch-module-loader.js.map +1 -0
- package/dist/es5/lib/parsers/parse-basis.js +270 -0
- package/dist/es5/lib/parsers/parse-basis.js.map +1 -0
- package/dist/es5/lib/parsers/parse-compressed-texture.js +22 -0
- package/dist/es5/lib/parsers/parse-compressed-texture.js.map +1 -0
- package/dist/es5/lib/parsers/parse-crunch.js +100 -0
- package/dist/es5/lib/parsers/parse-crunch.js.map +1 -0
- package/dist/es5/lib/parsers/parse-dds.js +84 -0
- package/dist/es5/lib/parsers/parse-dds.js.map +1 -0
- package/dist/es5/lib/parsers/parse-ktx.js +34 -0
- package/dist/es5/lib/parsers/parse-ktx.js.map +1 -0
- package/dist/es5/lib/parsers/parse-npy.js +70 -0
- package/dist/es5/lib/parsers/parse-npy.js.map +1 -0
- package/dist/es5/lib/parsers/parse-pvr.js +161 -0
- package/dist/es5/lib/parsers/parse-pvr.js.map +1 -0
- package/dist/es5/lib/texture-api/async-deep-map.js +156 -0
- package/dist/es5/lib/texture-api/async-deep-map.js.map +1 -0
- package/dist/es5/lib/texture-api/deep-load.js +63 -0
- package/dist/es5/lib/texture-api/deep-load.js.map +1 -0
- package/dist/es5/lib/texture-api/generate-url.js +20 -0
- package/dist/es5/lib/texture-api/generate-url.js.map +1 -0
- package/dist/es5/lib/texture-api/load-image-array.js +75 -0
- package/dist/es5/lib/texture-api/load-image-array.js.map +1 -0
- package/dist/es5/lib/texture-api/load-image-cube.js +136 -0
- package/dist/es5/lib/texture-api/load-image-cube.js.map +1 -0
- package/dist/es5/lib/texture-api/load-image.js +129 -0
- package/dist/es5/lib/texture-api/load-image.js.map +1 -0
- package/dist/es5/lib/texture-api/texture-api-types.js +2 -0
- package/dist/es5/lib/texture-api/texture-api-types.js.map +1 -0
- package/dist/es5/lib/utils/extract-mipmap-images.js +41 -0
- package/dist/es5/lib/utils/extract-mipmap-images.js.map +1 -0
- package/dist/es5/lib/utils/ktx-format-helper.js +79 -0
- package/dist/es5/lib/utils/ktx-format-helper.js.map +1 -0
- package/dist/es5/lib/utils/texture-formats.js +54 -0
- package/dist/es5/lib/utils/texture-formats.js.map +1 -0
- package/dist/es5/lib/utils/version.js +9 -0
- package/dist/es5/lib/utils/version.js.map +1 -0
- package/dist/es5/libs/basis_encoder.js +21 -0
- package/dist/es5/libs/basis_encoder.wasm +0 -0
- package/dist/es5/libs/basis_transcoder.js +22 -0
- package/dist/{libs → es5}/libs/basis_transcoder.wasm +0 -0
- package/dist/es5/npy-loader.js +51 -0
- package/dist/es5/npy-loader.js.map +1 -0
- package/dist/es5/types.js +2 -0
- package/dist/es5/types.js.map +1 -0
- package/dist/es5/workers/basis-nodejs-worker.js +7 -0
- package/dist/es5/workers/basis-nodejs-worker.js.map +1 -0
- package/dist/es5/workers/basis-worker.js +6 -0
- package/dist/es5/workers/basis-worker.js.map +1 -0
- package/dist/es5/workers/compressed-texture-worker.js +6 -0
- package/dist/es5/workers/compressed-texture-worker.js.map +1 -0
- package/dist/es5/workers/crunch-worker.js +19 -0
- package/dist/es5/workers/crunch-worker.js.map +1 -0
- package/dist/es5/workers/ktx2-basis-writer-nodejs-worker.js +53 -0
- package/dist/es5/workers/ktx2-basis-writer-nodejs-worker.js.map +1 -0
- package/dist/es5/workers/ktx2-basis-writer-worker.js +53 -0
- package/dist/es5/workers/ktx2-basis-writer-worker.js.map +1 -0
- package/dist/es5/workers/npy-worker.js +6 -0
- package/dist/es5/workers/npy-worker.js.map +1 -0
- package/dist/esm/basis-loader.js +27 -0
- package/dist/esm/basis-loader.js.map +1 -0
- package/dist/esm/bundle.js +4 -0
- package/dist/esm/bundle.js.map +1 -0
- package/dist/esm/compressed-texture-loader.js +41 -0
- package/dist/esm/compressed-texture-loader.js.map +1 -0
- package/dist/esm/compressed-texture-writer.js +21 -0
- package/dist/esm/compressed-texture-writer.js.map +1 -0
- package/dist/esm/crunch-loader.js +18 -0
- package/dist/esm/crunch-loader.js.map +1 -0
- package/dist/esm/index.js +30 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/ktx2-basis-writer-nodejs.js +3 -0
- package/dist/esm/ktx2-basis-writer-nodejs.js.map +1 -0
- package/dist/{ktx2-basis-universal-texture-writer.js → esm/ktx2-basis-writer.js} +4 -4
- package/dist/esm/ktx2-basis-writer.js.map +1 -0
- package/dist/esm/lib/encoders/encode-ktx.js +6 -0
- package/dist/esm/lib/encoders/encode-ktx.js.map +1 -0
- package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js +35 -0
- package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js.map +1 -0
- package/dist/esm/lib/encoders/encode-texture.js +12 -0
- package/dist/esm/lib/encoders/encode-texture.js.map +1 -0
- package/dist/esm/lib/gl-extensions.js +61 -0
- package/dist/esm/lib/gl-extensions.js.map +1 -0
- package/dist/esm/lib/parsers/basis-module-loader.js +77 -0
- package/dist/esm/lib/parsers/basis-module-loader.js.map +1 -0
- package/dist/esm/lib/parsers/crunch-module-loader.js +19 -0
- package/dist/esm/lib/parsers/crunch-module-loader.js.map +1 -0
- package/dist/esm/lib/parsers/parse-basis.js +231 -0
- package/dist/esm/lib/parsers/parse-basis.js.map +1 -0
- package/dist/esm/lib/parsers/parse-compressed-texture.js +16 -0
- package/dist/esm/lib/parsers/parse-compressed-texture.js.map +1 -0
- package/dist/esm/lib/parsers/parse-crunch.js +75 -0
- package/dist/esm/lib/parsers/parse-crunch.js.map +1 -0
- package/dist/esm/lib/parsers/parse-dds.js +75 -0
- package/dist/esm/lib/parsers/parse-dds.js.map +1 -0
- package/dist/esm/lib/parsers/parse-ktx.js +25 -0
- package/dist/esm/lib/parsers/parse-ktx.js.map +1 -0
- package/dist/esm/lib/parsers/parse-npy.js +63 -0
- package/dist/esm/lib/parsers/parse-npy.js.map +1 -0
- package/dist/esm/lib/parsers/parse-pvr.js +154 -0
- package/dist/esm/lib/parsers/parse-pvr.js.map +1 -0
- package/dist/esm/lib/texture-api/async-deep-map.js +34 -0
- package/dist/esm/lib/texture-api/async-deep-map.js.map +1 -0
- package/dist/esm/lib/texture-api/deep-load.js +10 -0
- package/dist/esm/lib/texture-api/deep-load.js.map +1 -0
- package/dist/esm/lib/texture-api/generate-url.js +13 -0
- package/dist/esm/lib/texture-api/generate-url.js.map +1 -0
- package/dist/esm/lib/texture-api/load-image-array.js +20 -0
- package/dist/esm/lib/texture-api/load-image-array.js.map +1 -0
- package/dist/esm/lib/texture-api/load-image-cube.js +63 -0
- package/dist/esm/lib/texture-api/load-image-cube.js.map +1 -0
- package/dist/esm/lib/texture-api/load-image.js +46 -0
- package/dist/esm/lib/texture-api/load-image.js.map +1 -0
- package/dist/esm/lib/texture-api/texture-api-types.js +2 -0
- package/dist/esm/lib/texture-api/texture-api-types.js.map +1 -0
- package/dist/esm/lib/utils/extract-mipmap-images.js +35 -0
- package/dist/esm/lib/utils/extract-mipmap-images.js.map +1 -0
- package/dist/esm/lib/utils/ktx-format-helper.js +73 -0
- package/dist/esm/lib/utils/ktx-format-helper.js.map +1 -0
- package/dist/esm/lib/utils/texture-formats.js +36 -0
- package/dist/esm/lib/utils/texture-formats.js.map +1 -0
- package/dist/esm/lib/utils/version.js +2 -0
- package/dist/esm/lib/utils/version.js.map +1 -0
- package/dist/esm/libs/README.md +9 -0
- package/dist/esm/libs/basis_encoder.js +21 -0
- package/dist/esm/libs/basis_encoder.wasm +0 -0
- package/dist/esm/libs/basis_transcoder.js +22 -0
- package/dist/esm/libs/basis_transcoder.wasm +0 -0
- package/dist/esm/libs/crunch.js +136 -0
- package/dist/esm/npy-loader.js +22 -0
- package/dist/esm/npy-loader.js.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/workers/basis-nodejs-worker.js +5 -0
- package/dist/esm/workers/basis-nodejs-worker.js.map +1 -0
- package/dist/esm/workers/basis-worker.js +4 -0
- package/dist/esm/workers/basis-worker.js.map +1 -0
- package/dist/esm/workers/compressed-texture-worker.js +4 -0
- package/dist/esm/workers/compressed-texture-worker.js.map +1 -0
- package/dist/esm/workers/crunch-worker.js +9 -0
- package/dist/esm/workers/crunch-worker.js.map +1 -0
- package/dist/esm/workers/ktx2-basis-writer-nodejs-worker.js +31 -0
- package/dist/esm/workers/ktx2-basis-writer-nodejs-worker.js.map +1 -0
- package/dist/esm/workers/ktx2-basis-writer-worker.js +31 -0
- package/dist/esm/workers/ktx2-basis-writer-worker.js.map +1 -0
- package/dist/esm/workers/npy-worker.js +4 -0
- package/dist/esm/workers/npy-worker.js.map +1 -0
- package/dist/index.d.ts +15 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +53 -14
- package/dist/ktx2-basis-writer-nodejs-worker.js +65949 -0
- package/dist/ktx2-basis-writer-nodejs.d.ts +3 -0
- package/dist/ktx2-basis-writer-nodejs.d.ts.map +1 -0
- package/dist/ktx2-basis-writer-nodejs.js +7 -0
- package/dist/ktx2-basis-writer-worker.js +343 -0
- package/dist/ktx2-basis-writer.d.ts +16 -0
- package/dist/ktx2-basis-writer.d.ts.map +1 -0
- package/dist/ktx2-basis-writer.js +26 -0
- package/dist/lib/encoders/encode-ktx.js +9 -5
- package/dist/lib/encoders/encode-ktx2-basis-texture.js +40 -34
- package/dist/lib/encoders/encode-texture.d.ts +2 -3
- package/dist/lib/encoders/encode-texture.d.ts.map +1 -1
- package/dist/lib/encoders/encode-texture.js +26 -11
- package/dist/lib/gl-extensions.js +71 -60
- package/dist/lib/parsers/basis-module-loader.js +100 -76
- package/dist/lib/parsers/crunch-module-loader.js +30 -18
- package/dist/lib/parsers/parse-basis.d.ts +1 -1
- package/dist/lib/parsers/parse-basis.d.ts.map +1 -1
- package/dist/lib/parsers/parse-basis.js +225 -240
- package/dist/lib/parsers/parse-compressed-texture.js +25 -18
- package/dist/lib/parsers/parse-crunch.js +96 -82
- package/dist/lib/parsers/parse-dds.js +93 -63
- package/dist/lib/parsers/parse-ktx.js +44 -23
- package/dist/lib/parsers/parse-npy.d.ts +10 -5
- package/dist/lib/parsers/parse-npy.d.ts.map +1 -1
- package/dist/lib/parsers/parse-npy.js +76 -71
- package/dist/lib/parsers/parse-pvr.js +212 -133
- package/dist/lib/texture-api/async-deep-map.d.ts +2 -2
- package/dist/lib/texture-api/async-deep-map.d.ts.map +1 -1
- package/dist/lib/texture-api/async-deep-map.js +35 -33
- package/dist/lib/texture-api/deep-load.d.ts +2 -2
- package/dist/lib/texture-api/deep-load.d.ts.map +1 -1
- package/dist/lib/texture-api/deep-load.js +14 -8
- package/dist/lib/texture-api/generate-url.js +16 -13
- package/dist/lib/texture-api/load-image-array.js +19 -18
- package/dist/lib/texture-api/load-image-cube.d.ts +1 -1
- package/dist/lib/texture-api/load-image-cube.d.ts.map +1 -1
- package/dist/lib/texture-api/load-image-cube.js +39 -55
- package/dist/lib/texture-api/load-image.js +38 -43
- package/dist/lib/texture-api/texture-api-types.d.ts +2 -2
- package/dist/lib/texture-api/texture-api-types.d.ts.map +1 -1
- package/dist/lib/texture-api/texture-api-types.js +3 -2
- package/dist/lib/utils/extract-mipmap-images.d.ts +1 -1
- package/dist/lib/utils/extract-mipmap-images.d.ts.map +1 -1
- package/dist/lib/utils/extract-mipmap-images.js +45 -36
- package/dist/lib/utils/ktx-format-helper.js +122 -70
- package/dist/lib/utils/texture-formats.js +42 -30
- package/dist/lib/utils/version.js +8 -2
- package/dist/libs/basis_encoder.js +20 -21
- package/dist/libs/basis_encoder.wasm +0 -0
- package/dist/libs/basis_transcoder.js +14 -13
- package/dist/libs/basis_transcoder.wasm +0 -0
- package/dist/npy-loader.d.ts +6 -37
- package/dist/npy-loader.d.ts.map +1 -1
- package/dist/npy-loader.js +28 -20
- package/dist/npy-worker.js +60 -31
- package/dist/types.js +1 -2
- package/dist/workers/basis-nodejs-worker.d.ts +2 -0
- package/dist/workers/basis-nodejs-worker.d.ts.map +1 -0
- package/dist/workers/basis-nodejs-worker.js +6 -0
- package/dist/workers/basis-worker.js +5 -4
- package/dist/workers/compressed-texture-worker.js +5 -4
- package/dist/workers/crunch-worker.js +13 -7
- package/dist/workers/ktx2-basis-writer-nodejs-worker.d.ts +2 -0
- package/dist/workers/ktx2-basis-writer-nodejs-worker.d.ts.map +1 -0
- package/dist/workers/ktx2-basis-writer-nodejs-worker.js +26 -0
- package/dist/workers/ktx2-basis-writer-worker.d.ts +2 -0
- package/dist/workers/ktx2-basis-writer-worker.d.ts.map +1 -0
- package/dist/workers/ktx2-basis-writer-worker.js +26 -0
- package/dist/workers/npy-worker.js +5 -4
- package/package.json +16 -10
- package/src/basis-loader.ts +8 -8
- package/src/compressed-texture-writer.ts +21 -3
- package/src/index.ts +19 -1
- package/src/ktx2-basis-writer-nodejs.ts +4 -0
- package/src/{ktx2-basis-universal-texture-writer.ts → ktx2-basis-writer.ts} +14 -3
- package/src/lib/encoders/encode-texture.ts +2 -1
- package/src/lib/parsers/parse-basis.ts +1 -1
- package/src/lib/parsers/parse-npy.ts +52 -31
- package/src/libs/basis_encoder.js +20 -21
- package/src/libs/basis_encoder.wasm +0 -0
- package/src/libs/basis_transcoder.js +14 -13
- package/src/libs/basis_transcoder.wasm +0 -0
- package/src/npy-loader.ts +7 -7
- package/src/workers/basis-nodejs-worker.ts +5 -0
- package/src/workers/ktx2-basis-writer-nodejs-worker.ts +25 -0
- package/src/workers/ktx2-basis-writer-worker.ts +25 -0
- package/dist/basis-loader.js.map +0 -1
- package/dist/bundle.js.map +0 -1
- package/dist/compressed-texture-loader.js.map +0 -1
- package/dist/compressed-texture-writer.js.map +0 -1
- package/dist/crunch-loader.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/ktx2-basis-universal-texture-writer.d.ts +0 -22
- package/dist/ktx2-basis-universal-texture-writer.d.ts.map +0 -1
- package/dist/ktx2-basis-universal-texture-writer.js.map +0 -1
- package/dist/lib/encoders/encode-ktx.js.map +0 -1
- package/dist/lib/encoders/encode-ktx2-basis-texture.js.map +0 -1
- package/dist/lib/encoders/encode-texture.js.map +0 -1
- package/dist/lib/gl-extensions.js.map +0 -1
- package/dist/lib/parsers/basis-module-loader.js.map +0 -1
- package/dist/lib/parsers/crunch-module-loader.js.map +0 -1
- package/dist/lib/parsers/parse-basis.js.map +0 -1
- package/dist/lib/parsers/parse-compressed-texture.js.map +0 -1
- package/dist/lib/parsers/parse-crunch.js.map +0 -1
- package/dist/lib/parsers/parse-dds.js.map +0 -1
- package/dist/lib/parsers/parse-ktx.js.map +0 -1
- package/dist/lib/parsers/parse-npy.js.map +0 -1
- package/dist/lib/parsers/parse-pvr.js.map +0 -1
- package/dist/lib/texture-api/async-deep-map.js.map +0 -1
- package/dist/lib/texture-api/deep-load.js.map +0 -1
- package/dist/lib/texture-api/generate-url.js.map +0 -1
- package/dist/lib/texture-api/load-image-array.js.map +0 -1
- package/dist/lib/texture-api/load-image-cube.js.map +0 -1
- package/dist/lib/texture-api/load-image.js.map +0 -1
- package/dist/lib/texture-api/texture-api-types.js.map +0 -1
- package/dist/lib/utils/extract-mipmap-images.js.map +0 -1
- package/dist/lib/utils/ktx-format-helper.js.map +0 -1
- package/dist/lib/utils/texture-formats.js.map +0 -1
- package/dist/lib/utils/version.js.map +0 -1
- package/dist/libs/libs/basis_encoder.js +0 -22
- package/dist/libs/libs/basis_encoder.wasm +0 -0
- package/dist/libs/libs/basis_transcoder.js +0 -21
- package/dist/npy-loader.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/workers/basis-worker.js.map +0 -1
- package/dist/workers/compressed-texture-worker.js.map +0 -1
- package/dist/workers/crunch-worker.js.map +0 -1
- package/dist/workers/npy-worker.js.map +0 -1
- /package/dist/{libs → es5}/libs/README.md +0 -0
- /package/dist/{libs → es5}/libs/crunch.js +0 -0
|
@@ -1,24 +1,49 @@
|
|
|
1
1
|
// import type {TextureLevel} from '@loaders.gl/schema';
|
|
2
|
+
import {TypedArray} from '@math.gl/types';
|
|
3
|
+
// import {TypedArrayConstructor} from "@math.gl/types";
|
|
4
|
+
|
|
5
|
+
// TODO move to math.gl
|
|
6
|
+
type TypedArrayConstructor =
|
|
7
|
+
| typeof Int8Array
|
|
8
|
+
| typeof Uint8Array
|
|
9
|
+
| typeof Int16Array
|
|
10
|
+
| typeof Uint16Array
|
|
11
|
+
| typeof Int32Array
|
|
12
|
+
| typeof Uint32Array
|
|
13
|
+
| typeof Int32Array
|
|
14
|
+
| typeof Uint32Array
|
|
15
|
+
| typeof Float32Array
|
|
16
|
+
| typeof Float64Array;
|
|
17
|
+
|
|
18
|
+
const a = new Uint32Array([0x12345678]);
|
|
19
|
+
const b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);
|
|
20
|
+
const isLittleEndian = !(b[0] === 0x12);
|
|
21
|
+
|
|
22
|
+
const LITTLE_ENDIAN_OS = isLittleEndian;
|
|
23
|
+
|
|
24
|
+
/** One numpy "tile" */
|
|
25
|
+
export type NPYTile = {
|
|
26
|
+
/** tile header */
|
|
27
|
+
header: NumpyHeader;
|
|
28
|
+
/** data in tile */
|
|
29
|
+
data: TypedArray;
|
|
30
|
+
};
|
|
2
31
|
|
|
3
|
-
type NumpyHeader = {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);
|
|
8
|
-
return !(b[0] === 0x12);
|
|
9
|
-
}
|
|
32
|
+
type NumpyHeader = {
|
|
33
|
+
descr: string;
|
|
34
|
+
shape: number[];
|
|
35
|
+
};
|
|
10
36
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const DTYPES: Record<string, any> = {
|
|
37
|
+
/**
|
|
38
|
+
* The basic string format consists of 3 characters:
|
|
39
|
+
* 1. a character describing the byteorder of the data (<: little-endian, >: big-endian, |: not-relevant)
|
|
40
|
+
* 2. a character code giving the basic type of the array
|
|
41
|
+
* 3. an integer providing the number of bytes the type uses.
|
|
42
|
+
* https://numpy.org/doc/stable/reference/arrays.interface.html
|
|
43
|
+
*
|
|
44
|
+
* Here I only include the second and third characters, and check endianness separately
|
|
45
|
+
*/
|
|
46
|
+
const DTYPES: Record<string, TypedArrayConstructor> = {
|
|
22
47
|
u1: Uint8Array,
|
|
23
48
|
i1: Int8Array,
|
|
24
49
|
u2: Uint16Array,
|
|
@@ -29,31 +54,27 @@ const DTYPES: Record<string, any> = {
|
|
|
29
54
|
f8: Float64Array
|
|
30
55
|
};
|
|
31
56
|
|
|
32
|
-
export function parseNPY(arrayBuffer: ArrayBuffer, options?:
|
|
33
|
-
if (!arrayBuffer) {
|
|
34
|
-
return null;
|
|
35
|
-
}
|
|
36
|
-
|
|
57
|
+
export function parseNPY(arrayBuffer: ArrayBuffer, options?: {}): NPYTile {
|
|
37
58
|
const view = new DataView(arrayBuffer);
|
|
38
59
|
const {header, headerEndOffset} = parseHeader(view);
|
|
39
60
|
|
|
40
61
|
const numpyType = header.descr;
|
|
41
62
|
const ArrayType = DTYPES[numpyType.slice(1, 3)];
|
|
42
63
|
if (!ArrayType) {
|
|
43
|
-
|
|
44
|
-
console.warn(`Decoding of npy dtype not implemented: ${numpyType}`);
|
|
45
|
-
return null;
|
|
64
|
+
throw new Error(`Unimplemented type ${numpyType}`);
|
|
46
65
|
}
|
|
47
66
|
|
|
48
67
|
const nArrayElements = header.shape?.reduce((a: number, b: number): number => a * b);
|
|
49
68
|
const arrayByteLength = nArrayElements * ArrayType.BYTES_PER_ELEMENT;
|
|
50
69
|
|
|
70
|
+
if (arrayBuffer.byteLength < headerEndOffset + arrayByteLength) {
|
|
71
|
+
throw new Error('Buffer overflow');
|
|
72
|
+
}
|
|
51
73
|
const data = new ArrayType(arrayBuffer.slice(headerEndOffset, headerEndOffset + arrayByteLength));
|
|
52
74
|
|
|
53
75
|
// Swap endianness if needed
|
|
54
76
|
if ((numpyType[0] === '>' && LITTLE_ENDIAN_OS) || (numpyType[0] === '<' && !LITTLE_ENDIAN_OS)) {
|
|
55
|
-
|
|
56
|
-
console.warn('Data is wrong endianness, byte swapping not yet implemented.');
|
|
77
|
+
throw new Error('Incorrect endianness');
|
|
57
78
|
}
|
|
58
79
|
|
|
59
80
|
return {
|
|
@@ -73,12 +94,12 @@ function parseHeader(view: DataView): {header: NumpyHeader; headerEndOffset: num
|
|
|
73
94
|
// const minorVersion = view.getUint8(7);
|
|
74
95
|
|
|
75
96
|
let offset = 8;
|
|
76
|
-
let headerLength;
|
|
97
|
+
let headerLength: number;
|
|
77
98
|
if (majorVersion >= 2) {
|
|
78
|
-
headerLength = view.getUint32(
|
|
99
|
+
headerLength = view.getUint32(offset, true);
|
|
79
100
|
offset += 4;
|
|
80
101
|
} else {
|
|
81
|
-
headerLength = view.getUint16(
|
|
102
|
+
headerLength = view.getUint16(offset, true);
|
|
82
103
|
offset += 2;
|
|
83
104
|
}
|
|
84
105
|
|