@ifc-lite/pointcloud 0.8.0 → 0.9.0
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/README.md +20 -0
- package/dist/formats/ascii-points.d.ts.map +1 -1
- package/dist/formats/ascii-points.js +1 -0
- package/dist/formats/ascii-points.js.map +1 -1
- package/dist/formats/e57-decode.js +1 -1
- package/dist/formats/e57-decode.js.map +1 -1
- package/dist/formats/e57.d.ts.map +1 -1
- package/dist/formats/e57.js +1 -0
- package/dist/formats/e57.js.map +1 -1
- package/dist/formats/ifcx-points.d.ts.map +1 -1
- package/dist/formats/ifcx-points.js +2 -0
- package/dist/formats/ifcx-points.js.map +1 -1
- package/dist/formats/las.d.ts.map +1 -1
- package/dist/formats/las.js +1 -0
- package/dist/formats/las.js.map +1 -1
- package/dist/formats/pcd.js +1 -1
- package/dist/formats/pcd.js.map +1 -1
- package/dist/formats/ply-color.d.ts +2 -0
- package/dist/formats/ply-color.d.ts.map +1 -1
- package/dist/formats/ply-color.js +6 -1
- package/dist/formats/ply-color.js.map +1 -1
- package/dist/formats/ply-fixed-binary.d.ts +9 -0
- package/dist/formats/ply-fixed-binary.d.ts.map +1 -0
- package/dist/formats/ply-fixed-binary.js +60 -0
- package/dist/formats/ply-fixed-binary.js.map +1 -0
- package/dist/formats/ply-scalar.d.ts +6 -0
- package/dist/formats/ply-scalar.d.ts.map +1 -0
- package/dist/formats/ply-scalar.js +25 -0
- package/dist/formats/ply-scalar.js.map +1 -0
- package/dist/formats/ply-variable-row.d.ts +15 -0
- package/dist/formats/ply-variable-row.d.ts.map +1 -0
- package/dist/formats/ply-variable-row.js +66 -0
- package/dist/formats/ply-variable-row.js.map +1 -0
- package/dist/formats/ply.d.ts +36 -10
- package/dist/formats/ply.d.ts.map +1 -1
- package/dist/formats/ply.js +83 -83
- package/dist/formats/ply.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/streaming/ascii-points-source.js +1 -0
- package/dist/streaming/ascii-points-source.js.map +1 -1
- package/dist/streaming/decode-worker.js +2 -1
- package/dist/streaming/decode-worker.js.map +1 -1
- package/dist/streaming/e57-source.js +1 -1
- package/dist/streaming/e57-source.js.map +1 -1
- package/dist/streaming/inline-worker.js +1 -1
- package/dist/streaming/pcd-source.js +1 -0
- package/dist/streaming/pcd-source.js.map +1 -1
- package/dist/streaming/ply-source.d.ts +9 -17
- package/dist/streaming/ply-source.d.ts.map +1 -1
- package/dist/streaming/ply-source.js +39 -69
- package/dist/streaming/ply-source.js.map +1 -1
- package/dist/streaming/ply-stream-decode.d.ts +32 -0
- package/dist/streaming/ply-stream-decode.d.ts.map +1 -0
- package/dist/streaming/ply-stream-decode.js +363 -0
- package/dist/streaming/ply-stream-decode.js.map +1 -0
- package/dist/streaming/ply-variable-stream.d.ts +15 -0
- package/dist/streaming/ply-variable-stream.d.ts.map +1 -0
- package/dist/streaming/ply-variable-stream.js +73 -0
- package/dist/streaming/ply-variable-stream.js.map +1 -0
- package/dist/streaming/protocol.d.ts +3 -1
- package/dist/streaming/protocol.d.ts.map +1 -1
- package/dist/streaming/protocol.js +18 -4
- package/dist/streaming/protocol.js.map +1 -1
- package/dist/streaming/stride.d.ts +3 -0
- package/dist/streaming/stride.d.ts.map +1 -0
- package/dist/streaming/stride.js +9 -0
- package/dist/streaming/stride.js.map +1 -0
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ply-scalar.d.ts","sourceRoot":"","sources":["../../src/formats/ply-scalar.ts"],"names":[],"mappings":"AAIA,UAAU,cAAc;IAAG,IAAI,EAAE,MAAM,CAAA;CAAE;AAEzC,wBAAgB,aAAa,CAC3B,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,OAAO,GACpB,MAAM,CAoBR"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
export function readPlyScalar(view, offset, prop, littleEndian) {
|
|
5
|
+
switch (prop.type) {
|
|
6
|
+
case 'char':
|
|
7
|
+
case 'int8': return view.getInt8(offset);
|
|
8
|
+
case 'uchar':
|
|
9
|
+
case 'uint8': return view.getUint8(offset);
|
|
10
|
+
case 'short':
|
|
11
|
+
case 'int16': return view.getInt16(offset, littleEndian);
|
|
12
|
+
case 'ushort':
|
|
13
|
+
case 'uint16': return view.getUint16(offset, littleEndian);
|
|
14
|
+
case 'int':
|
|
15
|
+
case 'int32': return view.getInt32(offset, littleEndian);
|
|
16
|
+
case 'uint':
|
|
17
|
+
case 'uint32': return view.getUint32(offset, littleEndian);
|
|
18
|
+
case 'float':
|
|
19
|
+
case 'float32': return view.getFloat32(offset, littleEndian);
|
|
20
|
+
case 'double':
|
|
21
|
+
case 'float64': return view.getFloat64(offset, littleEndian);
|
|
22
|
+
default: throw new Error(`PLY: cannot read scalar of type "${prop.type}"`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=ply-scalar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ply-scalar.js","sourceRoot":"","sources":["../../src/formats/ply-scalar.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAI/D,MAAM,UAAU,aAAa,CAC3B,IAAc,EACd,MAAc,EACd,IAAoB,EACpB,YAAqB;IAErB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACzC,KAAK,OAAO,CAAC;QACb,KAAK,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC3C,KAAK,OAAO,CAAC;QACb,KAAK,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACzD,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC3D,KAAK,KAAK,CAAC;QACX,KAAK,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACzD,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC3D,KAAK,OAAO,CAAC;QACb,KAAK,SAAS,CAAC,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC7D,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC7D,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { PlyPropertyOrderEntry } from './ply.js';
|
|
2
|
+
export declare function parseAsciiVariableRow(tokens: readonly string[], order: readonly PlyPropertyOrderEntry[], row: number): Map<string, number>;
|
|
3
|
+
export declare function parseBinaryVariableRow(view: DataView, start: number, order: readonly PlyPropertyOrderEntry[], littleEndian: boolean, row: number): {
|
|
4
|
+
values: Map<string, number>;
|
|
5
|
+
end: number;
|
|
6
|
+
};
|
|
7
|
+
export interface VariablePlyOutputs {
|
|
8
|
+
positions: Float32Array;
|
|
9
|
+
colors?: Float32Array;
|
|
10
|
+
normals?: Float32Array;
|
|
11
|
+
intensities?: Uint16Array;
|
|
12
|
+
originOffset?: readonly [number, number, number];
|
|
13
|
+
}
|
|
14
|
+
export declare function writeVariablePlyRow(values: ReadonlyMap<string, number>, row: number, output: VariablePlyOutputs): void;
|
|
15
|
+
//# sourceMappingURL=ply-variable-row.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ply-variable-row.d.ts","sourceRoot":"","sources":["../../src/formats/ply-variable-row.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAGtD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,qBAAqB,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAe1I;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,qBAAqB,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAkB/L;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,YAAY,CAAC;IAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IAClG,YAAY,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAClD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAmBtH"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
import { readPlyScalar } from './ply-scalar.js';
|
|
5
|
+
export function parseAsciiVariableRow(tokens, order, row) {
|
|
6
|
+
const values = new Map();
|
|
7
|
+
let cursor = 0;
|
|
8
|
+
for (const entry of order) {
|
|
9
|
+
if (entry.kind === 'scalar') {
|
|
10
|
+
if (cursor >= tokens.length)
|
|
11
|
+
throw new Error(`PLY ascii: vertex row ${row + 1} is missing property ${entry.property.name}`);
|
|
12
|
+
values.set(entry.property.name, Number(tokens[cursor++]));
|
|
13
|
+
continue;
|
|
14
|
+
}
|
|
15
|
+
const count = Number(tokens[cursor++]);
|
|
16
|
+
if (!Number.isSafeInteger(count) || count < 0 || cursor + count > tokens.length)
|
|
17
|
+
throw new Error(`PLY ascii: vertex row ${row + 1} has an invalid ${entry.name} list`);
|
|
18
|
+
cursor += count;
|
|
19
|
+
}
|
|
20
|
+
if (cursor !== tokens.length)
|
|
21
|
+
throw new Error(`PLY ascii: vertex row ${row + 1} has unexpected trailing values`);
|
|
22
|
+
return values;
|
|
23
|
+
}
|
|
24
|
+
export function parseBinaryVariableRow(view, start, order, littleEndian, row) {
|
|
25
|
+
const values = new Map();
|
|
26
|
+
let cursor = start;
|
|
27
|
+
for (const entry of order) {
|
|
28
|
+
if (entry.kind === 'scalar') {
|
|
29
|
+
if (cursor + entry.property.size > view.byteLength)
|
|
30
|
+
throw new Error(`PLY binary: vertex row ${row + 1} is truncated`);
|
|
31
|
+
values.set(entry.property.name, readPlyScalar(view, cursor, entry.property, littleEndian));
|
|
32
|
+
cursor += entry.property.size;
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
if (cursor + entry.countSize > view.byteLength)
|
|
36
|
+
throw new Error(`PLY binary: vertex row ${row + 1} list count is truncated`);
|
|
37
|
+
const count = readPlyScalar(view, cursor, { type: entry.countType }, littleEndian);
|
|
38
|
+
cursor += entry.countSize;
|
|
39
|
+
const bytes = count * entry.itemSize;
|
|
40
|
+
if (!Number.isSafeInteger(count) || count < 0 || cursor + bytes > view.byteLength)
|
|
41
|
+
throw new Error(`PLY binary: vertex row ${row + 1} has an invalid ${entry.name} list`);
|
|
42
|
+
cursor += bytes;
|
|
43
|
+
}
|
|
44
|
+
return { values, end: cursor };
|
|
45
|
+
}
|
|
46
|
+
export function writeVariablePlyRow(values, row, output) {
|
|
47
|
+
const origin = output.originOffset ?? [0, 0, 0];
|
|
48
|
+
output.positions[row * 3] = (values.get('x') ?? Number.NaN) - origin[0];
|
|
49
|
+
output.positions[row * 3 + 1] = (values.get('y') ?? Number.NaN) - origin[1];
|
|
50
|
+
output.positions[row * 3 + 2] = (values.get('z') ?? Number.NaN) - origin[2];
|
|
51
|
+
if (output.colors) {
|
|
52
|
+
output.colors[row * 3] = values.get('red') ?? values.get('r') ?? Number.NaN;
|
|
53
|
+
output.colors[row * 3 + 1] = values.get('green') ?? values.get('g') ?? Number.NaN;
|
|
54
|
+
output.colors[row * 3 + 2] = values.get('blue') ?? values.get('b') ?? Number.NaN;
|
|
55
|
+
}
|
|
56
|
+
if (output.normals) {
|
|
57
|
+
output.normals[row * 3] = values.get('nx') ?? Number.NaN;
|
|
58
|
+
output.normals[row * 3 + 1] = values.get('ny') ?? Number.NaN;
|
|
59
|
+
output.normals[row * 3 + 2] = values.get('nz') ?? Number.NaN;
|
|
60
|
+
}
|
|
61
|
+
if (output.intensities) {
|
|
62
|
+
const value = values.get('intensity') ?? values.get('scalar_Intensity') ?? 0;
|
|
63
|
+
output.intensities[row] = Math.min(65535, Math.max(0, value | 0));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=ply-variable-row.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ply-variable-row.js","sourceRoot":"","sources":["../../src/formats/ply-variable-row.ts"],"names":[],"mappings":"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"}
|
package/dist/formats/ply.d.ts
CHANGED
|
@@ -7,23 +7,37 @@
|
|
|
7
7
|
* meshes but not for the scan-style files this viewer ingests).
|
|
8
8
|
*
|
|
9
9
|
* Position fields (x/y/z) are required. RGB (r/g/b or red/green/blue,
|
|
10
|
-
* uchar)
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
10
|
+
* uchar), complete source normals (nx/ny/nz) and intensity
|
|
11
|
+
* (intensity, uchar/ushort/float) are optional and surfaced when present.
|
|
12
|
+
* `decodePly` is the direct whole-buffer API. The canonical Open/Add path
|
|
13
|
+
* uses `PlyStreamingSource`, whose bounded decoder never allocates full-count
|
|
14
|
+
* channels before applying its host-selected stride.
|
|
14
15
|
*/
|
|
15
|
-
import type { DecodedPointChunk } from '../types.js';
|
|
16
|
-
interface
|
|
16
|
+
import type { DecodedPointChunk, PointNormalState } from '../types.js';
|
|
17
|
+
export interface PlyPropertyDecl {
|
|
17
18
|
name: string;
|
|
18
19
|
type: string;
|
|
19
20
|
size: number;
|
|
20
21
|
/** Byte offset within a single vertex record (binary mode only). */
|
|
21
22
|
offset: number;
|
|
22
23
|
}
|
|
23
|
-
interface
|
|
24
|
+
export interface PlyListPropertyDecl {
|
|
25
|
+
kind: 'list';
|
|
26
|
+
name: string;
|
|
27
|
+
countType: string;
|
|
28
|
+
itemType: string;
|
|
29
|
+
countSize: number;
|
|
30
|
+
itemSize: number;
|
|
31
|
+
}
|
|
32
|
+
export type PlyPropertyOrderEntry = {
|
|
33
|
+
kind: 'scalar';
|
|
34
|
+
property: PlyPropertyDecl;
|
|
35
|
+
} | PlyListPropertyDecl;
|
|
36
|
+
export interface PlyElementDecl {
|
|
24
37
|
name: string;
|
|
25
38
|
count: number;
|
|
26
|
-
properties:
|
|
39
|
+
properties: PlyPropertyDecl[];
|
|
40
|
+
propertyOrder: PlyPropertyOrderEntry[];
|
|
27
41
|
/** Bytes per record (binary mode); unused for ascii. */
|
|
28
42
|
recordSize: number;
|
|
29
43
|
/**
|
|
@@ -33,15 +47,28 @@ interface ElementDecl {
|
|
|
33
47
|
* decoders walk with a fixed stride.
|
|
34
48
|
*/
|
|
35
49
|
hasListProperty: boolean;
|
|
50
|
+
listPropertyNames: string[];
|
|
36
51
|
}
|
|
37
52
|
export interface PlyHeader {
|
|
38
53
|
format: 'ascii' | 'binary_little_endian' | 'binary_big_endian';
|
|
39
54
|
version: string;
|
|
40
|
-
elements:
|
|
55
|
+
elements: PlyElementDecl[];
|
|
41
56
|
/** Byte offset where the body data starts. */
|
|
42
57
|
bodyOffset: number;
|
|
43
58
|
}
|
|
44
59
|
export declare function parsePlyHeader(buffer: Uint8Array): PlyHeader;
|
|
60
|
+
export interface PlyVertexLayout {
|
|
61
|
+
vertex: PlyElementDecl;
|
|
62
|
+
xProp: PlyPropertyDecl;
|
|
63
|
+
yProp: PlyPropertyDecl;
|
|
64
|
+
zProp: PlyPropertyDecl;
|
|
65
|
+
nxProp?: PlyPropertyDecl;
|
|
66
|
+
nyProp?: PlyPropertyDecl;
|
|
67
|
+
nzProp?: PlyPropertyDecl;
|
|
68
|
+
normalState: PointNormalState;
|
|
69
|
+
}
|
|
70
|
+
/** Validate the fixed-row vertex schema shared by whole-file and streaming decode. */
|
|
71
|
+
export declare function inspectPlyVertex(header: PlyHeader): PlyVertexLayout;
|
|
45
72
|
export declare function decodePly(buffer: Uint8Array,
|
|
46
73
|
/**
|
|
47
74
|
* Native (X, Y, Z)-axis offset subtracted from each decoded vertex in
|
|
@@ -51,5 +78,4 @@ export declare function decodePly(buffer: Uint8Array,
|
|
|
51
78
|
* byte-for-byte.
|
|
52
79
|
*/
|
|
53
80
|
originOffset?: readonly [number, number, number]): DecodedPointChunk;
|
|
54
|
-
export {};
|
|
55
81
|
//# sourceMappingURL=ply.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ply.d.ts","sourceRoot":"","sources":["../../src/formats/ply.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"ply.d.ts","sourceRoot":"","sources":["../../src/formats/ply.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAkB,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAavF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAChE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,MAAM,qBAAqB,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAA;CAAE,GAAG,mBAAmB,CAAC;AAExG,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,aAAa,EAAE,qBAAqB,EAAE,CAAC;IACvC,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,OAAO,GAAG,sBAAsB,GAAG,mBAAmB,CAAC;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;CACpB;AAID,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAiG5D;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,eAAe,CAAC;IACvE,MAAM,CAAC,EAAE,eAAe,CAAC;IAAC,MAAM,CAAC,EAAE,eAAe,CAAC;IAAC,MAAM,CAAC,EAAE,eAAe,CAAC;IAC7E,WAAW,EAAE,gBAAgB,CAAC;CAC/B;AAED,sFAAsF;AACtF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,eAAe,CAqBnE;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,UAAU;AAClB;;;;;;GAMG;AACH,YAAY,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAC/C,iBAAiB,CAiFnB"}
|
package/dist/formats/ply.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
4
|
import { normalizePlyColors } from './ply-color.js';
|
|
5
|
+
import { parseAsciiVariableRow, parseBinaryVariableRow, writeVariablePlyRow } from './ply-variable-row.js';
|
|
6
|
+
import { decodeFixedBinaryPlyBody } from './ply-fixed-binary.js';
|
|
5
7
|
/** Name → byte size for the PLY-defined scalar types. */
|
|
6
8
|
const TYPE_SIZES = {
|
|
7
9
|
char: 1, int8: 1, uchar: 1, uint8: 1,
|
|
@@ -65,8 +67,10 @@ export function parsePlyHeader(buffer) {
|
|
|
65
67
|
name: parts[1],
|
|
66
68
|
count: parseInt(parts[2], 10),
|
|
67
69
|
properties: [],
|
|
70
|
+
propertyOrder: [],
|
|
68
71
|
recordSize: 0,
|
|
69
72
|
hasListProperty: false,
|
|
73
|
+
listPropertyNames: [],
|
|
70
74
|
};
|
|
71
75
|
elements.push(current);
|
|
72
76
|
continue;
|
|
@@ -80,7 +84,13 @@ export function parsePlyHeader(buffer) {
|
|
|
80
84
|
// fact and skip them — harmless on elements we never decode, rejected
|
|
81
85
|
// for the vertex element in decodePly.
|
|
82
86
|
if (parts[1] === 'list') {
|
|
87
|
+
const countType = parts[2], itemType = parts[3], name = parts[4];
|
|
88
|
+
const countSize = TYPE_SIZES[countType], itemSize = TYPE_SIZES[itemType];
|
|
89
|
+
if (!name || countSize === undefined || itemSize === undefined)
|
|
90
|
+
throw new Error(`PLY: invalid list property declaration "${line}"`);
|
|
83
91
|
current.hasListProperty = true;
|
|
92
|
+
current.listPropertyNames.push(name);
|
|
93
|
+
current.propertyOrder.push({ kind: 'list', name, countType, itemType, countSize, itemSize });
|
|
84
94
|
continue;
|
|
85
95
|
}
|
|
86
96
|
const type = parts[1];
|
|
@@ -89,7 +99,9 @@ export function parsePlyHeader(buffer) {
|
|
|
89
99
|
if (size === undefined) {
|
|
90
100
|
throw new Error(`PLY: unknown property type "${type}"`);
|
|
91
101
|
}
|
|
92
|
-
|
|
102
|
+
const property = { name, type, size, offset: current.recordSize };
|
|
103
|
+
current.properties.push(property);
|
|
104
|
+
current.propertyOrder.push({ kind: 'scalar', property });
|
|
93
105
|
current.recordSize += size;
|
|
94
106
|
continue;
|
|
95
107
|
}
|
|
@@ -101,6 +113,32 @@ export function parsePlyHeader(buffer) {
|
|
|
101
113
|
}
|
|
102
114
|
return { format, version, elements, bodyOffset };
|
|
103
115
|
}
|
|
116
|
+
/** Validate the fixed-row vertex schema shared by whole-file and streaming decode. */
|
|
117
|
+
export function inspectPlyVertex(header) {
|
|
118
|
+
const vertex = header.elements.find((element) => element.name === 'vertex');
|
|
119
|
+
if (!vertex)
|
|
120
|
+
throw new Error('PLY: no vertex element');
|
|
121
|
+
if (header.elements[0] !== vertex) {
|
|
122
|
+
throw new Error(`PLY: vertex element must appear first; saw "${header.elements[0]?.name}" first`);
|
|
123
|
+
}
|
|
124
|
+
const normalNames = new Set(['nx', 'ny', 'nz']);
|
|
125
|
+
const one = (name) => {
|
|
126
|
+
const matches = vertex.properties.filter((property) => property.name === name);
|
|
127
|
+
if (matches.length > 1)
|
|
128
|
+
throw new Error(`PLY: vertex property "${name}" must not be declared more than once`);
|
|
129
|
+
return matches[0];
|
|
130
|
+
};
|
|
131
|
+
const xProp = one('x'), yProp = one('y'), zProp = one('z');
|
|
132
|
+
if (!xProp || !yProp || !zProp)
|
|
133
|
+
throw new Error('PLY: vertex element must define x, y, z properties');
|
|
134
|
+
const normalProps = (name) => vertex.properties.filter((property) => property.name === name);
|
|
135
|
+
const nx = normalProps('nx'), ny = normalProps('ny'), nz = normalProps('nz');
|
|
136
|
+
const declared = nx.length + ny.length + nz.length + vertex.listPropertyNames.filter((name) => normalNames.has(name)).length;
|
|
137
|
+
const complete = declared === 3 && nx.length === 1 && ny.length === 1 && nz.length === 1;
|
|
138
|
+
return { vertex, xProp, yProp, zProp, nxProp: complete ? nx[0] : undefined,
|
|
139
|
+
nyProp: complete ? ny[0] : undefined, nzProp: complete ? nz[0] : undefined,
|
|
140
|
+
normalState: declared === 0 ? 'absent' : complete ? 'supplied' : 'invalid' };
|
|
141
|
+
}
|
|
104
142
|
export function decodePly(buffer,
|
|
105
143
|
/**
|
|
106
144
|
* Native (X, Y, Z)-axis offset subtracted from each decoded vertex in
|
|
@@ -111,32 +149,13 @@ export function decodePly(buffer,
|
|
|
111
149
|
*/
|
|
112
150
|
originOffset) {
|
|
113
151
|
const header = parsePlyHeader(buffer);
|
|
114
|
-
const
|
|
115
|
-
|
|
116
|
-
throw new Error('PLY: no vertex element');
|
|
117
|
-
// Both decoders start at header.bodyOffset, so vertex MUST be the first
|
|
118
|
-
// element. Files that declare another element first would silently
|
|
119
|
-
// produce garbage point data otherwise. Reject deterministically.
|
|
120
|
-
if (header.elements[0] !== vertex) {
|
|
121
|
-
throw new Error(`PLY: vertex element must appear first; saw "${header.elements[0]?.name}" first`);
|
|
122
|
-
}
|
|
123
|
-
// A list property on the vertex element makes its records variable length:
|
|
124
|
-
// `recordSize` (binary stride) and the ascii column map would both drift and
|
|
125
|
-
// silently read garbage. Reject up front; list properties on OTHER elements
|
|
126
|
-
// (face indices) stay fine because those elements are never decoded.
|
|
127
|
-
if (vertex.hasListProperty) {
|
|
128
|
-
throw new Error('PLY: list-valued properties on the vertex element are not supported (variable-length records)');
|
|
129
|
-
}
|
|
130
|
-
const xProp = vertex.properties.find((p) => p.name === 'x');
|
|
131
|
-
const yProp = vertex.properties.find((p) => p.name === 'y');
|
|
132
|
-
const zProp = vertex.properties.find((p) => p.name === 'z');
|
|
133
|
-
if (!xProp || !yProp || !zProp) {
|
|
134
|
-
throw new Error('PLY: vertex element must define x, y, z properties');
|
|
135
|
-
}
|
|
152
|
+
const layout = inspectPlyVertex(header);
|
|
153
|
+
const { vertex } = layout;
|
|
136
154
|
const rProp = vertex.properties.find((p) => p.name === 'red' || p.name === 'r');
|
|
137
155
|
const gProp = vertex.properties.find((p) => p.name === 'green' || p.name === 'g');
|
|
138
156
|
const bProp = vertex.properties.find((p) => p.name === 'blue' || p.name === 'b');
|
|
139
157
|
const hasRgb = !!(rProp && gProp && bProp);
|
|
158
|
+
const { nxProp, nyProp, nzProp } = layout;
|
|
140
159
|
const intensityProp = vertex.properties.find((p) => p.name === 'intensity' || p.name === 'scalar_Intensity');
|
|
141
160
|
const count = vertex.count;
|
|
142
161
|
if (!Number.isFinite(count) || count < 0) {
|
|
@@ -163,12 +182,34 @@ originOffset) {
|
|
|
163
182
|
}
|
|
164
183
|
const positions = new Float32Array(count * 3);
|
|
165
184
|
const colors = hasRgb ? new Float32Array(count * 3) : undefined;
|
|
185
|
+
const normals = nxProp && nyProp && nzProp ? new Float32Array(count * 3) : undefined;
|
|
166
186
|
const intensities = intensityProp ? new Uint16Array(count) : undefined;
|
|
167
187
|
if (header.format === 'ascii') {
|
|
168
|
-
|
|
188
|
+
if (vertex.hasListProperty) {
|
|
189
|
+
const lines = TEXT_DECODER.decode(buffer.subarray(header.bodyOffset)).split(/\r?\n/).filter(line => line.trim());
|
|
190
|
+
if (lines.length < count)
|
|
191
|
+
throw new Error(`PLY ascii: expected ${count} vertex lines, got ${lines.length}`);
|
|
192
|
+
for (let row = 0; row < count; row++)
|
|
193
|
+
writeVariablePlyRow(parseAsciiVariableRow(lines[row].trim().split(/\s+/), vertex.propertyOrder, row), row, { positions, colors, normals, intensities, originOffset });
|
|
194
|
+
}
|
|
195
|
+
else
|
|
196
|
+
decodeAsciiBody(buffer, header, vertex, positions, colors, normals, intensities, originOffset);
|
|
169
197
|
}
|
|
170
198
|
else {
|
|
171
|
-
|
|
199
|
+
const littleEndian = header.format === 'binary_little_endian';
|
|
200
|
+
if (vertex.hasListProperty) {
|
|
201
|
+
const view = new DataView(buffer.buffer, buffer.byteOffset + header.bodyOffset, buffer.length - header.bodyOffset);
|
|
202
|
+
let cursor = 0;
|
|
203
|
+
for (let row = 0; row < count; row++) {
|
|
204
|
+
const parsed = parseBinaryVariableRow(view, cursor, vertex.propertyOrder, littleEndian, row);
|
|
205
|
+
writeVariablePlyRow(parsed.values, row, { positions, colors, normals, intensities, originOffset });
|
|
206
|
+
cursor = parsed.end;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
const view = new DataView(buffer.buffer, buffer.byteOffset + header.bodyOffset, count * vertex.recordSize);
|
|
211
|
+
decodeFixedBinaryPlyBody(view, vertex, positions, colors, normals, intensities, littleEndian, originOffset);
|
|
212
|
+
}
|
|
172
213
|
}
|
|
173
214
|
if (colors && rProp && gProp && bProp) {
|
|
174
215
|
normalizePlyColors(colors, [rProp.type, gProp.type, bProp.type]);
|
|
@@ -176,13 +217,20 @@ originOffset) {
|
|
|
176
217
|
return {
|
|
177
218
|
positions,
|
|
178
219
|
colors,
|
|
220
|
+
normals,
|
|
221
|
+
normalState: normals && normals.every(Number.isFinite) && everyNormalNonzero(normals) ? 'supplied' : layout.normalState === 'supplied' ? 'invalid' : layout.normalState,
|
|
179
222
|
intensities,
|
|
180
223
|
pointCount: count,
|
|
181
224
|
bbox: computeBBox(positions),
|
|
182
225
|
};
|
|
183
226
|
}
|
|
184
|
-
|
|
185
|
-
|
|
227
|
+
function everyNormalNonzero(normals) {
|
|
228
|
+
for (let i = 0; i < normals.length; i += 3)
|
|
229
|
+
if (normals[i] ** 2 + normals[i + 1] ** 2 + normals[i + 2] ** 2 === 0)
|
|
230
|
+
return false;
|
|
231
|
+
return true;
|
|
232
|
+
}
|
|
233
|
+
function decodeAsciiBody(buffer, header, vertex, positions, colors, normals, intensities, originOffset) {
|
|
186
234
|
// Decode just the vertex part of the body (other elements come after).
|
|
187
235
|
// For ascii, each line = one vertex (in the order properties were
|
|
188
236
|
// declared).
|
|
@@ -196,6 +244,9 @@ function decodeAsciiBody(buffer, header, vertex, positions, colors, intensities,
|
|
|
196
244
|
const rCol = vertex.properties.findIndex((p) => p.name === 'red' || p.name === 'r');
|
|
197
245
|
const gCol = vertex.properties.findIndex((p) => p.name === 'green' || p.name === 'g');
|
|
198
246
|
const bCol = vertex.properties.findIndex((p) => p.name === 'blue' || p.name === 'b');
|
|
247
|
+
const nxCol = vertex.properties.findIndex((p) => p.name === 'nx');
|
|
248
|
+
const nyCol = vertex.properties.findIndex((p) => p.name === 'ny');
|
|
249
|
+
const nzCol = vertex.properties.findIndex((p) => p.name === 'nz');
|
|
199
250
|
const iCol = vertex.properties.findIndex((p) => p.name === 'intensity' || p.name === 'scalar_Intensity');
|
|
200
251
|
let lineStart = 0;
|
|
201
252
|
let written = 0;
|
|
@@ -216,6 +267,11 @@ function decodeAsciiBody(buffer, header, vertex, positions, colors, intensities,
|
|
|
216
267
|
colors[written * 3 + 1] = Number(parts[gCol]);
|
|
217
268
|
colors[written * 3 + 2] = Number(parts[bCol]);
|
|
218
269
|
}
|
|
270
|
+
if (normals) {
|
|
271
|
+
normals[written * 3] = Number(parts[nxCol]);
|
|
272
|
+
normals[written * 3 + 1] = Number(parts[nyCol]);
|
|
273
|
+
normals[written * 3 + 2] = Number(parts[nzCol]);
|
|
274
|
+
}
|
|
219
275
|
if (intensities && iCol >= 0) {
|
|
220
276
|
intensities[written] = Math.min(65535, Math.max(0, Number(parts[iCol]) | 0));
|
|
221
277
|
}
|
|
@@ -225,62 +281,6 @@ function decodeAsciiBody(buffer, header, vertex, positions, colors, intensities,
|
|
|
225
281
|
throw new Error(`PLY ascii: expected ${vertex.count} vertex lines, got ${written}`);
|
|
226
282
|
}
|
|
227
283
|
}
|
|
228
|
-
// ─── binary body ────────────────────────────────────────────────────────────
|
|
229
|
-
function decodeBinaryBody(buffer, header, vertex, positions, colors, intensities, littleEndian, originOffset) {
|
|
230
|
-
const stride = vertex.recordSize;
|
|
231
|
-
const need = vertex.count * stride;
|
|
232
|
-
if (buffer.length < header.bodyOffset + need) {
|
|
233
|
-
throw new Error(`PLY binary: expected ${need} body bytes, got ${buffer.length - header.bodyOffset}`);
|
|
234
|
-
}
|
|
235
|
-
const view = new DataView(buffer.buffer, buffer.byteOffset + header.bodyOffset, need);
|
|
236
|
-
const offX = originOffset?.[0] ?? 0;
|
|
237
|
-
const offY = originOffset?.[1] ?? 0;
|
|
238
|
-
const offZ = originOffset?.[2] ?? 0;
|
|
239
|
-
const xProp = vertex.properties.find((p) => p.name === 'x');
|
|
240
|
-
const yProp = vertex.properties.find((p) => p.name === 'y');
|
|
241
|
-
const zProp = vertex.properties.find((p) => p.name === 'z');
|
|
242
|
-
const rProp = colors ? vertex.properties.find((p) => p.name === 'red' || p.name === 'r') : undefined;
|
|
243
|
-
const gProp = colors ? vertex.properties.find((p) => p.name === 'green' || p.name === 'g') : undefined;
|
|
244
|
-
const bProp = colors ? vertex.properties.find((p) => p.name === 'blue' || p.name === 'b') : undefined;
|
|
245
|
-
const iProp = intensities
|
|
246
|
-
? vertex.properties.find((p) => p.name === 'intensity' || p.name === 'scalar_Intensity')
|
|
247
|
-
: undefined;
|
|
248
|
-
for (let i = 0; i < vertex.count; i++) {
|
|
249
|
-
const base = i * stride;
|
|
250
|
-
positions[i * 3] = readScalar(view, base + xProp.offset, xProp, littleEndian) - offX;
|
|
251
|
-
positions[i * 3 + 1] = readScalar(view, base + yProp.offset, yProp, littleEndian) - offY;
|
|
252
|
-
positions[i * 3 + 2] = readScalar(view, base + zProp.offset, zProp, littleEndian) - offZ;
|
|
253
|
-
if (colors && rProp && gProp && bProp) {
|
|
254
|
-
colors[i * 3] = readScalar(view, base + rProp.offset, rProp, littleEndian);
|
|
255
|
-
colors[i * 3 + 1] = readScalar(view, base + gProp.offset, gProp, littleEndian);
|
|
256
|
-
colors[i * 3 + 2] = readScalar(view, base + bProp.offset, bProp, littleEndian);
|
|
257
|
-
}
|
|
258
|
-
if (intensities && iProp) {
|
|
259
|
-
intensities[i] = Math.min(65535, Math.max(0, readScalar(view, base + iProp.offset, iProp, littleEndian) | 0));
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
function readScalar(view, offset, prop, le) {
|
|
264
|
-
switch (prop.type) {
|
|
265
|
-
case 'char':
|
|
266
|
-
case 'int8': return view.getInt8(offset);
|
|
267
|
-
case 'uchar':
|
|
268
|
-
case 'uint8': return view.getUint8(offset);
|
|
269
|
-
case 'short':
|
|
270
|
-
case 'int16': return view.getInt16(offset, le);
|
|
271
|
-
case 'ushort':
|
|
272
|
-
case 'uint16': return view.getUint16(offset, le);
|
|
273
|
-
case 'int':
|
|
274
|
-
case 'int32': return view.getInt32(offset, le);
|
|
275
|
-
case 'uint':
|
|
276
|
-
case 'uint32': return view.getUint32(offset, le);
|
|
277
|
-
case 'float':
|
|
278
|
-
case 'float32': return view.getFloat32(offset, le);
|
|
279
|
-
case 'double':
|
|
280
|
-
case 'float64': return view.getFloat64(offset, le);
|
|
281
|
-
default: throw new Error(`PLY: cannot read scalar of type "${prop.type}"`);
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
284
|
function computeBBox(positions) {
|
|
285
285
|
let minX = Infinity, minY = Infinity, minZ = Infinity;
|
|
286
286
|
let maxX = -Infinity, maxY = -Infinity, maxZ = -Infinity;
|
package/dist/formats/ply.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ply.js","sourceRoot":"","sources":["../../src/formats/ply.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ply.js","sourceRoot":"","sources":["../../src/formats/ply.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* Phase 1: streaming `.las` from local Files / fetched Blobs.
|
|
7
7
|
* Phase 2: streaming `.laz` (laz-perf in the worker).
|
|
8
8
|
*/
|
|
9
|
-
export type { DecodedPointChunk, PointCloudBBox } from './types.js';
|
|
9
|
+
export type { DecodedPointChunk, PointCloudBBox, PointNormalState } from './types.js';
|
|
10
10
|
export { decodePcd } from './formats/pcd.js';
|
|
11
11
|
export { decodePointsArray, decodePointsBase64, type PointsArrayAttribute, type PointsBase64Attribute, } from './formats/ifcx-points.js';
|
|
12
12
|
export { decompressLZF } from './lzf.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGtF,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,GAC3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,KAAK,SAAS,GACf,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACV,oBAAoB,EACpB,eAAe,EACf,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,sBAAsB,EACtB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,GACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,YAAY,IAAI,eAAe,EAC/B,SAAS,EACT,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EACL,wBAAwB,EACxB,KAAK,+BAA+B,EACpC,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,0BAA0B,EAC1B,8BAA8B,EAC9B,0BAA0B,EAC1B,KAAK,wBAAwB,GAC9B,MAAM,qBAAqB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ascii-points-source.js","sourceRoot":"","sources":["../../src/streaming/ascii-points-source.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ascii-points-source.js","sourceRoot":"","sources":["../../src/streaming/ascii-points-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
4
|
import { chunkToWire, } from './protocol.js';
|
|
5
|
+
import { normalizePointStride } from './stride.js';
|
|
5
6
|
const sources = new Map();
|
|
6
7
|
let nextSourceId = 1;
|
|
7
8
|
self.onmessage = (event) => {
|
|
@@ -29,7 +30,7 @@ async function handleOpen(msg) {
|
|
|
29
30
|
try {
|
|
30
31
|
const source = await createSource(msg.format, msg.blob, {
|
|
31
32
|
label: msg.label,
|
|
32
|
-
downsample: { stride:
|
|
33
|
+
downsample: { stride: normalizePointStride(msg.stride) },
|
|
33
34
|
originOffset: msg.originOffset,
|
|
34
35
|
});
|
|
35
36
|
const abort = new AbortController();
|