@loaders.gl/pcd 3.4.13 → 3.4.15
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/es5/bundle.js +1 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/index.js +6 -26
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/decompress-lzf.js +7 -7
- package/dist/es5/lib/decompress-lzf.js.map +1 -1
- package/dist/es5/lib/get-pcd-schema.js +2 -2
- package/dist/es5/lib/get-pcd-schema.js.map +1 -1
- package/dist/es5/lib/parse-pcd.js +71 -75
- package/dist/es5/lib/parse-pcd.js.map +1 -1
- package/dist/es5/pcd-loader.js +3 -3
- package/dist/es5/pcd-loader.js.map +1 -1
- package/dist/esm/pcd-loader.js +1 -1
- package/dist/pcd-worker.js +1 -1
- package/package.json +4 -4
package/dist/es5/bundle.js
CHANGED
package/dist/es5/bundle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"sources":["../../src/bundle.ts"],"sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"mappings":";;AACA,
|
|
1
|
+
{"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"sources":["../../src/bundle.ts"],"sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"mappings":";;AACA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAS,CAAC;AACxCC,UAAU,CAACC,OAAO,GAAGD,UAAU,CAACC,OAAO,IAAI,CAAC,CAAC;AAC7CC,MAAM,CAACC,OAAO,GAAGC,MAAM,CAACC,MAAM,CAACL,UAAU,CAACC,OAAO,EAAEH,aAAa,CAAC"}
|
package/dist/es5/index.js
CHANGED
|
@@ -7,39 +7,19 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.PCDLoader = void 0;
|
|
8
8
|
Object.defineProperty(exports, "PCDWorkerLoader", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function
|
|
10
|
+
get: function () {
|
|
11
11
|
return _pcdLoader.PCDLoader;
|
|
12
12
|
}
|
|
13
13
|
});
|
|
14
14
|
exports._typecheckPCDLoader = void 0;
|
|
15
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
16
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
17
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
18
15
|
var _parsePcd = _interopRequireDefault(require("./lib/parse-pcd"));
|
|
19
16
|
var _pcdLoader = require("./pcd-loader");
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
parse: function () {
|
|
24
|
-
var _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer) {
|
|
25
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
26
|
-
while (1) switch (_context.prev = _context.next) {
|
|
27
|
-
case 0:
|
|
28
|
-
return _context.abrupt("return", (0, _parsePcd.default)(arrayBuffer));
|
|
29
|
-
case 1:
|
|
30
|
-
case "end":
|
|
31
|
-
return _context.stop();
|
|
32
|
-
}
|
|
33
|
-
}, _callee);
|
|
34
|
-
}));
|
|
35
|
-
function parse(_x) {
|
|
36
|
-
return _parse.apply(this, arguments);
|
|
37
|
-
}
|
|
38
|
-
return parse;
|
|
39
|
-
}(),
|
|
17
|
+
const PCDLoader = {
|
|
18
|
+
..._pcdLoader.PCDLoader,
|
|
19
|
+
parse: async arrayBuffer => (0, _parsePcd.default)(arrayBuffer),
|
|
40
20
|
parseSync: _parsePcd.default
|
|
41
|
-
}
|
|
21
|
+
};
|
|
42
22
|
exports.PCDLoader = PCDLoader;
|
|
43
|
-
|
|
23
|
+
const _typecheckPCDLoader = PCDLoader;
|
|
44
24
|
exports._typecheckPCDLoader = _typecheckPCDLoader;
|
|
45
25
|
//# sourceMappingURL=index.js.map
|
package/dist/es5/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_parsePcd","_interopRequireDefault","require","_pcdLoader","
|
|
1
|
+
{"version":3,"file":"index.js","names":["_parsePcd","_interopRequireDefault","require","_pcdLoader","PCDLoader","PCDWorkerLoader","parse","arrayBuffer","parsePCDSync","parseSync","exports","_typecheckPCDLoader"],"sources":["../../src/index.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport parsePCDSync from './lib/parse-pcd';\nimport {PCDLoader as PCDWorkerLoader} from './pcd-loader';\n\nexport {PCDWorkerLoader};\n\n/**\n * Loader for PCD - Point Cloud Data\n */\nexport const PCDLoader = {\n ...PCDWorkerLoader,\n parse: async (arrayBuffer) => parsePCDSync(arrayBuffer),\n parseSync: parsePCDSync\n};\n\nexport const _typecheckPCDLoader: LoaderWithParser = PCDLoader;\n"],"mappings":";;;;;;;;;;;;;;AACA,IAAAA,SAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAOO,MAAME,SAAS,GAAG;EACvB,GAAGC,oBAAe;EAClBC,KAAK,EAAE,MAAOC,WAAW,IAAK,IAAAC,iBAAY,EAACD,WAAW,CAAC;EACvDE,SAAS,EAAED;AACb,CAAC;AAACE,OAAA,CAAAN,SAAA,GAAAA,SAAA;AAEK,MAAMO,mBAAqC,GAAGP,SAAS;AAACM,OAAA,CAAAC,mBAAA,GAAAA,mBAAA"}
|
|
@@ -5,13 +5,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.decompressLZF = decompressLZF;
|
|
7
7
|
function decompressLZF(inData, outLength) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
const inLength = inData.length;
|
|
9
|
+
const outData = new Uint8Array(outLength);
|
|
10
|
+
let inPtr = 0;
|
|
11
|
+
let outPtr = 0;
|
|
12
|
+
let ctrl;
|
|
13
|
+
let len;
|
|
14
|
+
let ref;
|
|
15
15
|
do {
|
|
16
16
|
ctrl = inData[inPtr++];
|
|
17
17
|
if (ctrl < 1 << 5) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decompress-lzf.js","names":["decompressLZF","inData","outLength","inLength","length","outData","Uint8Array","inPtr","outPtr","ctrl","len","ref","Error"],"sources":["../../../src/lib/decompress-lzf.ts"],"sourcesContent":["/* eslint-disable */\n/**\n * from https://gitlab.com/taketwo/three-pcd-loader/blob/master/decompress-lzf.js\n * @param inData\n * @param outLength\n * @returns\n */\nexport function decompressLZF(inData: Uint8Array, outLength: number): Uint8Array {\n const inLength = inData.length;\n const outData = new Uint8Array(outLength);\n let inPtr = 0;\n let outPtr = 0;\n let ctrl;\n let len;\n let ref;\n\n do {\n ctrl = inData[inPtr++];\n\n if (ctrl < 1 << 5) {\n ctrl++;\n if (outPtr + ctrl > outLength) {\n throw new Error('Output buffer is not large enough');\n }\n if (inPtr + ctrl > inLength) {\n throw new Error('Invalid compressed data');\n }\n\n do {\n outData[outPtr++] = inData[inPtr++];\n } while (--ctrl);\n } else {\n len = ctrl >> 5;\n ref = outPtr - ((ctrl & 0x1f) << 8) - 1;\n if (inPtr >= inLength) {\n throw new Error('Invalid compressed data');\n }\n\n if (len === 7) {\n len += inData[inPtr++];\n if (inPtr >= inLength) {\n throw new Error('Invalid compressed data');\n }\n }\n\n ref -= inData[inPtr++];\n if (outPtr + len + 2 > outLength) {\n throw new Error('Output buffer is not large enough');\n }\n if (ref < 0) {\n throw new Error('Invalid compressed data');\n }\n if (ref >= outPtr) {\n throw new Error('Invalid compressed data');\n }\n\n do {\n outData[outPtr++] = outData[ref++];\n } while (--len + 2);\n }\n } while (inPtr < inLength);\n\n return outData;\n}\n"],"mappings":";;;;;;AAOO,SAASA,aAAaA,CAACC,MAAkB,EAAEC,SAAiB,EAAc;EAC/E,
|
|
1
|
+
{"version":3,"file":"decompress-lzf.js","names":["decompressLZF","inData","outLength","inLength","length","outData","Uint8Array","inPtr","outPtr","ctrl","len","ref","Error"],"sources":["../../../src/lib/decompress-lzf.ts"],"sourcesContent":["/* eslint-disable */\n/**\n * from https://gitlab.com/taketwo/three-pcd-loader/blob/master/decompress-lzf.js\n * @param inData\n * @param outLength\n * @returns\n */\nexport function decompressLZF(inData: Uint8Array, outLength: number): Uint8Array {\n const inLength = inData.length;\n const outData = new Uint8Array(outLength);\n let inPtr = 0;\n let outPtr = 0;\n let ctrl;\n let len;\n let ref;\n\n do {\n ctrl = inData[inPtr++];\n\n if (ctrl < 1 << 5) {\n ctrl++;\n if (outPtr + ctrl > outLength) {\n throw new Error('Output buffer is not large enough');\n }\n if (inPtr + ctrl > inLength) {\n throw new Error('Invalid compressed data');\n }\n\n do {\n outData[outPtr++] = inData[inPtr++];\n } while (--ctrl);\n } else {\n len = ctrl >> 5;\n ref = outPtr - ((ctrl & 0x1f) << 8) - 1;\n if (inPtr >= inLength) {\n throw new Error('Invalid compressed data');\n }\n\n if (len === 7) {\n len += inData[inPtr++];\n if (inPtr >= inLength) {\n throw new Error('Invalid compressed data');\n }\n }\n\n ref -= inData[inPtr++];\n if (outPtr + len + 2 > outLength) {\n throw new Error('Output buffer is not large enough');\n }\n if (ref < 0) {\n throw new Error('Invalid compressed data');\n }\n if (ref >= outPtr) {\n throw new Error('Invalid compressed data');\n }\n\n do {\n outData[outPtr++] = outData[ref++];\n } while (--len + 2);\n }\n } while (inPtr < inLength);\n\n return outData;\n}\n"],"mappings":";;;;;;AAOO,SAASA,aAAaA,CAACC,MAAkB,EAAEC,SAAiB,EAAc;EAC/E,MAAMC,QAAQ,GAAGF,MAAM,CAACG,MAAM;EAC9B,MAAMC,OAAO,GAAG,IAAIC,UAAU,CAACJ,SAAS,CAAC;EACzC,IAAIK,KAAK,GAAG,CAAC;EACb,IAAIC,MAAM,GAAG,CAAC;EACd,IAAIC,IAAI;EACR,IAAIC,GAAG;EACP,IAAIC,GAAG;EAEP,GAAG;IACDF,IAAI,GAAGR,MAAM,CAACM,KAAK,EAAE,CAAC;IAEtB,IAAIE,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE;MACjBA,IAAI,EAAE;MACN,IAAID,MAAM,GAAGC,IAAI,GAAGP,SAAS,EAAE;QAC7B,MAAM,IAAIU,KAAK,CAAC,mCAAmC,CAAC;MACtD;MACA,IAAIL,KAAK,GAAGE,IAAI,GAAGN,QAAQ,EAAE;QAC3B,MAAM,IAAIS,KAAK,CAAC,yBAAyB,CAAC;MAC5C;MAEA,GAAG;QACDP,OAAO,CAACG,MAAM,EAAE,CAAC,GAAGP,MAAM,CAACM,KAAK,EAAE,CAAC;MACrC,CAAC,QAAQ,EAAEE,IAAI;IACjB,CAAC,MAAM;MACLC,GAAG,GAAGD,IAAI,IAAI,CAAC;MACfE,GAAG,GAAGH,MAAM,IAAI,CAACC,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC;MACvC,IAAIF,KAAK,IAAIJ,QAAQ,EAAE;QACrB,MAAM,IAAIS,KAAK,CAAC,yBAAyB,CAAC;MAC5C;MAEA,IAAIF,GAAG,KAAK,CAAC,EAAE;QACbA,GAAG,IAAIT,MAAM,CAACM,KAAK,EAAE,CAAC;QACtB,IAAIA,KAAK,IAAIJ,QAAQ,EAAE;UACrB,MAAM,IAAIS,KAAK,CAAC,yBAAyB,CAAC;QAC5C;MACF;MAEAD,GAAG,IAAIV,MAAM,CAACM,KAAK,EAAE,CAAC;MACtB,IAAIC,MAAM,GAAGE,GAAG,GAAG,CAAC,GAAGR,SAAS,EAAE;QAChC,MAAM,IAAIU,KAAK,CAAC,mCAAmC,CAAC;MACtD;MACA,IAAID,GAAG,GAAG,CAAC,EAAE;QACX,MAAM,IAAIC,KAAK,CAAC,yBAAyB,CAAC;MAC5C;MACA,IAAID,GAAG,IAAIH,MAAM,EAAE;QACjB,MAAM,IAAII,KAAK,CAAC,yBAAyB,CAAC;MAC5C;MAEA,GAAG;QACDP,OAAO,CAACG,MAAM,EAAE,CAAC,GAAGH,OAAO,CAACM,GAAG,EAAE,CAAC;MACpC,CAAC,QAAQ,EAAED,GAAG,GAAG,CAAC;IACpB;EACF,CAAC,QAAQH,KAAK,GAAGJ,QAAQ;EAEzB,OAAOE,OAAO;AAChB"}
|
|
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.getPCDSchema = getPCDSchema;
|
|
7
7
|
var _schema = require("@loaders.gl/schema");
|
|
8
8
|
function getPCDSchema(PCDheader, metadata) {
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
const offset = PCDheader.offset;
|
|
10
|
+
const fields = [];
|
|
11
11
|
if (offset.x !== undefined) {
|
|
12
12
|
fields.push(new _schema.Field('POSITION', new _schema.FixedSizeList(3, new _schema.Field('xyz', new _schema.Float32())), false));
|
|
13
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-pcd-schema.js","names":["_schema","require","getPCDSchema","PCDheader","metadata","offset","fields","x","undefined","push","Field","FixedSizeList","Float32","normal_x","rgb","Uint8","intensity","label","Int32","Schema"],"sources":["../../../src/lib/get-pcd-schema.ts"],"sourcesContent":["import {Schema, Field, Float32, Int32, Uint8, FixedSizeList} from '@loaders.gl/schema';\nimport type {PCDHeader} from './pcd-types';\n\ntype SchemaMetadata = Map<string, any>;\n\n/**\n * Gets schema from PCD header\n * @param PCDheader\n * @param metadata\n * @returns Schema\n */\nexport function getPCDSchema(PCDheader: PCDHeader, metadata: SchemaMetadata): Schema {\n const offset = PCDheader.offset;\n\n const fields: Field[] = [];\n\n if (offset.x !== undefined) {\n fields.push(\n new Field('POSITION', new FixedSizeList(3, new Field('xyz', new Float32())), false)\n );\n }\n\n if (offset.normal_x !== undefined) {\n fields.push(new Field('NORMAL', new FixedSizeList(3, new Field('xyz', new Float32())), false));\n }\n\n if (offset.rgb !== undefined) {\n fields.push(new Field('COLOR_0', new FixedSizeList(3, new Field('rgb', new Uint8())), false));\n }\n\n if (offset.intensity !== undefined) {\n fields.push(new Field('intensity', new Field('intensity', new Float32()), false));\n }\n\n if (offset.label !== undefined) {\n fields.push(new Field('label', new Field('label', new Int32()), false));\n }\n\n return new Schema(fields, metadata);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAWO,SAASC,YAAYA,CAACC,SAAoB,EAAEC,QAAwB,EAAU;EACnF,
|
|
1
|
+
{"version":3,"file":"get-pcd-schema.js","names":["_schema","require","getPCDSchema","PCDheader","metadata","offset","fields","x","undefined","push","Field","FixedSizeList","Float32","normal_x","rgb","Uint8","intensity","label","Int32","Schema"],"sources":["../../../src/lib/get-pcd-schema.ts"],"sourcesContent":["import {Schema, Field, Float32, Int32, Uint8, FixedSizeList} from '@loaders.gl/schema';\nimport type {PCDHeader} from './pcd-types';\n\ntype SchemaMetadata = Map<string, any>;\n\n/**\n * Gets schema from PCD header\n * @param PCDheader\n * @param metadata\n * @returns Schema\n */\nexport function getPCDSchema(PCDheader: PCDHeader, metadata: SchemaMetadata): Schema {\n const offset = PCDheader.offset;\n\n const fields: Field[] = [];\n\n if (offset.x !== undefined) {\n fields.push(\n new Field('POSITION', new FixedSizeList(3, new Field('xyz', new Float32())), false)\n );\n }\n\n if (offset.normal_x !== undefined) {\n fields.push(new Field('NORMAL', new FixedSizeList(3, new Field('xyz', new Float32())), false));\n }\n\n if (offset.rgb !== undefined) {\n fields.push(new Field('COLOR_0', new FixedSizeList(3, new Field('rgb', new Uint8())), false));\n }\n\n if (offset.intensity !== undefined) {\n fields.push(new Field('intensity', new Field('intensity', new Float32()), false));\n }\n\n if (offset.label !== undefined) {\n fields.push(new Field('label', new Field('label', new Int32()), false));\n }\n\n return new Schema(fields, metadata);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAWO,SAASC,YAAYA,CAACC,SAAoB,EAAEC,QAAwB,EAAU;EACnF,MAAMC,MAAM,GAAGF,SAAS,CAACE,MAAM;EAE/B,MAAMC,MAAe,GAAG,EAAE;EAE1B,IAAID,MAAM,CAACE,CAAC,KAAKC,SAAS,EAAE;IAC1BF,MAAM,CAACG,IAAI,CACT,IAAIC,aAAK,CAAC,UAAU,EAAE,IAAIC,qBAAa,CAAC,CAAC,EAAE,IAAID,aAAK,CAAC,KAAK,EAAE,IAAIE,eAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CACpF,CAAC;EACH;EAEA,IAAIP,MAAM,CAACQ,QAAQ,KAAKL,SAAS,EAAE;IACjCF,MAAM,CAACG,IAAI,CAAC,IAAIC,aAAK,CAAC,QAAQ,EAAE,IAAIC,qBAAa,CAAC,CAAC,EAAE,IAAID,aAAK,CAAC,KAAK,EAAE,IAAIE,eAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EAChG;EAEA,IAAIP,MAAM,CAACS,GAAG,KAAKN,SAAS,EAAE;IAC5BF,MAAM,CAACG,IAAI,CAAC,IAAIC,aAAK,CAAC,SAAS,EAAE,IAAIC,qBAAa,CAAC,CAAC,EAAE,IAAID,aAAK,CAAC,KAAK,EAAE,IAAIK,aAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EAC/F;EAEA,IAAIV,MAAM,CAACW,SAAS,KAAKR,SAAS,EAAE;IAClCF,MAAM,CAACG,IAAI,CAAC,IAAIC,aAAK,CAAC,WAAW,EAAE,IAAIA,aAAK,CAAC,WAAW,EAAE,IAAIE,eAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EACnF;EAEA,IAAIP,MAAM,CAACY,KAAK,KAAKT,SAAS,EAAE;IAC9BF,MAAM,CAACG,IAAI,CAAC,IAAIC,aAAK,CAAC,OAAO,EAAE,IAAIA,aAAK,CAAC,OAAO,EAAE,IAAIQ,aAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EACzE;EAEA,OAAO,IAAIC,cAAM,CAACb,MAAM,EAAEF,QAAQ,CAAC;AACrC"}
|
|
@@ -7,11 +7,11 @@ exports.default = parsePCD;
|
|
|
7
7
|
var _schema = require("@loaders.gl/schema");
|
|
8
8
|
var _decompressLzf = require("./decompress-lzf");
|
|
9
9
|
var _getPcdSchema = require("./get-pcd-schema");
|
|
10
|
-
|
|
10
|
+
const LITTLE_ENDIAN = true;
|
|
11
11
|
function parsePCD(data) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
const textData = new TextDecoder().decode(data);
|
|
13
|
+
const pcdHeader = parsePCDHeader(textData);
|
|
14
|
+
let attributes = {};
|
|
15
15
|
switch (pcdHeader.data) {
|
|
16
16
|
case 'ascii':
|
|
17
17
|
attributes = parsePCDASCII(pcdHeader, textData);
|
|
@@ -26,23 +26,23 @@ function parsePCD(data) {
|
|
|
26
26
|
throw new Error("PCD: ".concat(pcdHeader.data, " files are not supported"));
|
|
27
27
|
}
|
|
28
28
|
attributes = getMeshAttributes(attributes);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
const header = getMeshHeader(pcdHeader, attributes);
|
|
30
|
+
const metadata = new Map([['mode', '0'], ['boundingBox', JSON.stringify(header.boundingBox)]]);
|
|
31
|
+
const schema = (0, _getPcdSchema.getPCDSchema)(pcdHeader, metadata);
|
|
32
32
|
return {
|
|
33
33
|
loaderData: {
|
|
34
34
|
header: pcdHeader
|
|
35
35
|
},
|
|
36
|
-
header
|
|
37
|
-
schema
|
|
36
|
+
header,
|
|
37
|
+
schema,
|
|
38
38
|
mode: 0,
|
|
39
39
|
indices: null,
|
|
40
|
-
attributes
|
|
40
|
+
attributes
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
43
|
function getMeshHeader(pcdHeader, attributes) {
|
|
44
44
|
if (typeof pcdHeader.width === 'number' && typeof pcdHeader.height === 'number') {
|
|
45
|
-
|
|
45
|
+
const pointCount = pcdHeader.width * pcdHeader.height;
|
|
46
46
|
return {
|
|
47
47
|
vertexCount: pointCount,
|
|
48
48
|
boundingBox: (0, _schema.getMeshBoundingBox)(attributes)
|
|
@@ -51,7 +51,7 @@ function getMeshHeader(pcdHeader, attributes) {
|
|
|
51
51
|
return pcdHeader;
|
|
52
52
|
}
|
|
53
53
|
function getMeshAttributes(attributes) {
|
|
54
|
-
|
|
54
|
+
const normalizedAttributes = {
|
|
55
55
|
POSITION: {
|
|
56
56
|
value: new Float32Array(attributes.position),
|
|
57
57
|
size: 3
|
|
@@ -84,9 +84,9 @@ function getMeshAttributes(attributes) {
|
|
|
84
84
|
return normalizedAttributes;
|
|
85
85
|
}
|
|
86
86
|
function parsePCDHeader(data) {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
87
|
+
const result1 = data.search(/[\r\n]DATA\s(\S*)\s/i);
|
|
88
|
+
const result2 = /[\r\n]DATA\s(\S*)\s/i.exec(data.substr(result1 - 1));
|
|
89
|
+
const pcdHeader = {};
|
|
90
90
|
pcdHeader.data = result2 && result2[1];
|
|
91
91
|
if (result2 !== null) {
|
|
92
92
|
pcdHeader.headerLen = (result2 && result2[0].length) + result1;
|
|
@@ -127,31 +127,27 @@ function parsePCDHeader(data) {
|
|
|
127
127
|
pcdHeader.points = pcdHeader.width * pcdHeader.height;
|
|
128
128
|
}
|
|
129
129
|
if (pcdHeader.size !== null) {
|
|
130
|
-
pcdHeader.size = pcdHeader.size[1].split(' ').map(
|
|
131
|
-
return parseInt(x, 10);
|
|
132
|
-
});
|
|
130
|
+
pcdHeader.size = pcdHeader.size[1].split(' ').map(x => parseInt(x, 10));
|
|
133
131
|
}
|
|
134
132
|
if (pcdHeader.count !== null) {
|
|
135
|
-
pcdHeader.count = pcdHeader.count[1].split(' ').map(
|
|
136
|
-
return parseInt(x, 10);
|
|
137
|
-
});
|
|
133
|
+
pcdHeader.count = pcdHeader.count[1].split(' ').map(x => parseInt(x, 10));
|
|
138
134
|
} else {
|
|
139
135
|
pcdHeader.count = [];
|
|
140
136
|
if (pcdHeader.fields !== null) {
|
|
141
|
-
for (
|
|
137
|
+
for (let i = 0; i < pcdHeader.fields.length; i++) {
|
|
142
138
|
pcdHeader.count.push(1);
|
|
143
139
|
}
|
|
144
140
|
}
|
|
145
141
|
}
|
|
146
142
|
pcdHeader.offset = {};
|
|
147
|
-
|
|
143
|
+
let sizeSum = 0;
|
|
148
144
|
if (pcdHeader.fields !== null && pcdHeader.size !== null) {
|
|
149
|
-
for (
|
|
145
|
+
for (let i = 0; i < pcdHeader.fields.length; i++) {
|
|
150
146
|
if (pcdHeader.data === 'ascii') {
|
|
151
|
-
pcdHeader.offset[pcdHeader.fields[
|
|
147
|
+
pcdHeader.offset[pcdHeader.fields[i]] = i;
|
|
152
148
|
} else {
|
|
153
|
-
pcdHeader.offset[pcdHeader.fields[
|
|
154
|
-
sizeSum += pcdHeader.size[
|
|
149
|
+
pcdHeader.offset[pcdHeader.fields[i]] = sizeSum;
|
|
150
|
+
sizeSum += pcdHeader.size[i];
|
|
155
151
|
}
|
|
156
152
|
}
|
|
157
153
|
}
|
|
@@ -159,26 +155,26 @@ function parsePCDHeader(data) {
|
|
|
159
155
|
return pcdHeader;
|
|
160
156
|
}
|
|
161
157
|
function parsePCDASCII(pcdHeader, textData) {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
for (
|
|
158
|
+
const position = [];
|
|
159
|
+
const normal = [];
|
|
160
|
+
const color = [];
|
|
161
|
+
const intensity = [];
|
|
162
|
+
const label = [];
|
|
163
|
+
const offset = pcdHeader.offset;
|
|
164
|
+
const pcdData = textData.substr(pcdHeader.headerLen);
|
|
165
|
+
const lines = pcdData.split('\n');
|
|
166
|
+
for (let i = 0; i < lines.length; i++) {
|
|
171
167
|
if (lines[i] !== '') {
|
|
172
|
-
|
|
168
|
+
const line = lines[i].split(' ');
|
|
173
169
|
if (offset.x !== undefined) {
|
|
174
170
|
position.push(parseFloat(line[offset.x]));
|
|
175
171
|
position.push(parseFloat(line[offset.y]));
|
|
176
172
|
position.push(parseFloat(line[offset.z]));
|
|
177
173
|
}
|
|
178
174
|
if (offset.rgb !== undefined) {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
175
|
+
const floatValue = parseFloat(line[offset.rgb]);
|
|
176
|
+
const binaryColor = new Float32Array([floatValue]);
|
|
177
|
+
const dataview = new DataView(binaryColor.buffer, 0);
|
|
182
178
|
color.push(dataview.getUint8(0));
|
|
183
179
|
color.push(dataview.getUint8(1));
|
|
184
180
|
color.push(dataview.getUint8(2));
|
|
@@ -197,20 +193,20 @@ function parsePCDASCII(pcdHeader, textData) {
|
|
|
197
193
|
}
|
|
198
194
|
}
|
|
199
195
|
return {
|
|
200
|
-
position
|
|
201
|
-
normal
|
|
202
|
-
color
|
|
196
|
+
position,
|
|
197
|
+
normal,
|
|
198
|
+
color
|
|
203
199
|
};
|
|
204
200
|
}
|
|
205
201
|
function parsePCDBinary(pcdHeader, data) {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
for (
|
|
202
|
+
const position = [];
|
|
203
|
+
const normal = [];
|
|
204
|
+
const color = [];
|
|
205
|
+
const intensity = [];
|
|
206
|
+
const label = [];
|
|
207
|
+
const dataview = new DataView(data, pcdHeader.headerLen);
|
|
208
|
+
const offset = pcdHeader.offset;
|
|
209
|
+
for (let i = 0, row = 0; i < pcdHeader.points; i++, row += pcdHeader.rowSize) {
|
|
214
210
|
if (offset.x !== undefined) {
|
|
215
211
|
position.push(dataview.getFloat32(row + offset.x, LITTLE_ENDIAN));
|
|
216
212
|
position.push(dataview.getFloat32(row + offset.y, LITTLE_ENDIAN));
|
|
@@ -234,11 +230,11 @@ function parsePCDBinary(pcdHeader, data) {
|
|
|
234
230
|
}
|
|
235
231
|
}
|
|
236
232
|
return {
|
|
237
|
-
position
|
|
238
|
-
normal
|
|
239
|
-
color
|
|
240
|
-
intensity
|
|
241
|
-
label
|
|
233
|
+
position,
|
|
234
|
+
normal,
|
|
235
|
+
color,
|
|
236
|
+
intensity,
|
|
237
|
+
label
|
|
242
238
|
};
|
|
243
239
|
}
|
|
244
240
|
|
|
@@ -250,18 +246,18 @@ function parsePCDBinary(pcdHeader, data) {
|
|
|
250
246
|
* @returns [attributes]
|
|
251
247
|
*/
|
|
252
248
|
function parsePCDBinaryCompressed(pcdHeader, data) {
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
for (
|
|
249
|
+
const position = [];
|
|
250
|
+
const normal = [];
|
|
251
|
+
const color = [];
|
|
252
|
+
const intensity = [];
|
|
253
|
+
const label = [];
|
|
254
|
+
const sizes = new Uint32Array(data.slice(pcdHeader.headerLen, pcdHeader.headerLen + 8));
|
|
255
|
+
const compressedSize = sizes[0];
|
|
256
|
+
const decompressedSize = sizes[1];
|
|
257
|
+
const decompressed = (0, _decompressLzf.decompressLZF)(new Uint8Array(data, pcdHeader.headerLen + 8, compressedSize), decompressedSize);
|
|
258
|
+
const dataview = new DataView(decompressed.buffer);
|
|
259
|
+
const offset = pcdHeader.offset;
|
|
260
|
+
for (let i = 0; i < pcdHeader.points; i++) {
|
|
265
261
|
if (offset.x !== undefined) {
|
|
266
262
|
position.push(dataview.getFloat32(pcdHeader.points * offset.x + pcdHeader.size[0] * i, LITTLE_ENDIAN));
|
|
267
263
|
position.push(dataview.getFloat32(pcdHeader.points * offset.y + pcdHeader.size[1] * i, LITTLE_ENDIAN));
|
|
@@ -278,20 +274,20 @@ function parsePCDBinaryCompressed(pcdHeader, data) {
|
|
|
278
274
|
normal.push(dataview.getFloat32(pcdHeader.points * offset.normal_z + pcdHeader.size[6] * i, LITTLE_ENDIAN));
|
|
279
275
|
}
|
|
280
276
|
if (offset.intensity !== undefined) {
|
|
281
|
-
|
|
277
|
+
const intensityIndex = pcdHeader.fields.indexOf('intensity');
|
|
282
278
|
intensity.push(dataview.getFloat32(pcdHeader.points * offset.intensity + pcdHeader.size[intensityIndex] * i, LITTLE_ENDIAN));
|
|
283
279
|
}
|
|
284
280
|
if (offset.label !== undefined) {
|
|
285
|
-
|
|
281
|
+
const labelIndex = pcdHeader.fields.indexOf('label');
|
|
286
282
|
label.push(dataview.getInt32(pcdHeader.points * offset.label + pcdHeader.size[labelIndex] * i, LITTLE_ENDIAN));
|
|
287
283
|
}
|
|
288
284
|
}
|
|
289
285
|
return {
|
|
290
|
-
position
|
|
291
|
-
normal
|
|
292
|
-
color
|
|
293
|
-
intensity
|
|
294
|
-
label
|
|
286
|
+
position,
|
|
287
|
+
normal,
|
|
288
|
+
color,
|
|
289
|
+
intensity,
|
|
290
|
+
label
|
|
295
291
|
};
|
|
296
292
|
}
|
|
297
293
|
//# sourceMappingURL=parse-pcd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-pcd.js","names":["_schema","require","_decompressLzf","_getPcdSchema","LITTLE_ENDIAN","parsePCD","data","textData","TextDecoder","decode","pcdHeader","parsePCDHeader","attributes","parsePCDASCII","parsePCDBinary","parsePCDBinaryCompressed","Error","concat","getMeshAttributes","header","getMeshHeader","metadata","Map","JSON","stringify","boundingBox","schema","getPCDSchema","loaderData","mode","indices","width","height","pointCount","vertexCount","getMeshBoundingBox","normalizedAttributes","POSITION","value","Float32Array","position","size","normal","length","NORMAL","color","COLOR_0","Uint8Array","intensity","label","result1","search","result2","exec","substr","headerLen","str","replace","version","fields","type","count","viewpoint","points","parseFloat","split","parseInt","map","x","i","push","offset","sizeSum","rowSize","pcdData","lines","line","undefined","y","z","rgb","floatValue","binaryColor","dataview","DataView","buffer","getUint8","normal_x","normal_y","normal_z","row","getFloat32","getInt32","sizes","Uint32Array","slice","compressedSize","decompressedSize","decompressed","decompressLZF","intensityIndex","indexOf","labelIndex"],"sources":["../../../src/lib/parse-pcd.ts"],"sourcesContent":["// PCD Loader, adapted from THREE.js (MIT license)\n// Description: A loader for PCD ascii and binary files.\n// Limitations: Compressed binary files are not supported.\n//\n// Attributions per original THREE.js source file:\n// @author Filipe Caixeta / http://filipecaixeta.com.br\n// @author Mugen87 / https://github.com/Mugen87\n\nimport {MeshAttribute, MeshAttributes} from '@loaders.gl/schema';\nimport {getMeshBoundingBox} from '@loaders.gl/schema';\nimport {decompressLZF} from './decompress-lzf';\nimport {getPCDSchema} from './get-pcd-schema';\nimport type {PCDHeader} from './pcd-types';\n\ntype NormalizedAttributes = {\n POSITION: {\n value: Float32Array;\n size: number;\n };\n NORMAL?: {\n value: Float32Array;\n size: number;\n };\n COLOR_0?: {\n value: Uint8Array;\n size: number;\n };\n};\n\ntype HeaderAttributes = {\n [attributeName: string]: number[];\n};\n\nconst LITTLE_ENDIAN: boolean = true;\n\n/**\n *\n * @param data\n * @returns\n */\nexport default function parsePCD(data: ArrayBufferLike) {\n // parse header (always ascii format)\n const textData = new TextDecoder().decode(data);\n const pcdHeader = parsePCDHeader(textData);\n\n let attributes: any = {};\n\n // parse data\n switch (pcdHeader.data) {\n case 'ascii':\n attributes = parsePCDASCII(pcdHeader, textData);\n break;\n\n case 'binary':\n attributes = parsePCDBinary(pcdHeader, data);\n break;\n\n case 'binary_compressed':\n attributes = parsePCDBinaryCompressed(pcdHeader, data);\n break;\n\n default:\n throw new Error(`PCD: ${pcdHeader.data} files are not supported`);\n }\n\n attributes = getMeshAttributes(attributes);\n\n const header = getMeshHeader(pcdHeader, attributes);\n\n const metadata = new Map([\n ['mode', '0'],\n ['boundingBox', JSON.stringify(header.boundingBox)]\n ]);\n\n const schema = getPCDSchema(pcdHeader, metadata);\n\n return {\n loaderData: {\n header: pcdHeader\n },\n header,\n schema,\n mode: 0, // POINTS\n indices: null,\n attributes\n };\n}\n\n// Create a header that contains common data for PointCloud category loaders\nfunction getMeshHeader(pcdHeader: PCDHeader, attributes: NormalizedAttributes): Partial<PCDHeader> {\n if (typeof pcdHeader.width === 'number' && typeof pcdHeader.height === 'number') {\n const pointCount = pcdHeader.width * pcdHeader.height; // Supports \"organized\" point sets\n return {\n vertexCount: pointCount,\n boundingBox: getMeshBoundingBox(attributes)\n };\n }\n return pcdHeader;\n}\n\n/**\n * @param attributes\n * @returns Normalized attributes\n */\nfunction getMeshAttributes(attributes: HeaderAttributes): {[attributeName: string]: MeshAttribute} {\n const normalizedAttributes: MeshAttributes = {\n POSITION: {\n // Binary PCD is only 32 bit\n value: new Float32Array(attributes.position),\n size: 3\n }\n };\n\n if (attributes.normal && attributes.normal.length > 0) {\n normalizedAttributes.NORMAL = {\n value: new Float32Array(attributes.normal),\n size: 3\n };\n }\n\n if (attributes.color && attributes.color.length > 0) {\n // TODO - RGBA\n normalizedAttributes.COLOR_0 = {\n value: new Uint8Array(attributes.color),\n size: 3\n };\n }\n\n if (attributes.intensity && attributes.intensity.length > 0) {\n // TODO - RGBA\n normalizedAttributes.COLOR_0 = {\n value: new Uint8Array(attributes.color),\n size: 3\n };\n }\n\n if (attributes.label && attributes.label.length > 0) {\n // TODO - RGBA\n normalizedAttributes.COLOR_0 = {\n value: new Uint8Array(attributes.label),\n size: 3\n };\n }\n\n return normalizedAttributes;\n}\n\n/**\n * Incoming data parsing\n * @param data\n * @returns Header\n */\n/* eslint-disable complexity, max-statements */\nfunction parsePCDHeader(data: string): PCDHeader {\n const result1 = data.search(/[\\r\\n]DATA\\s(\\S*)\\s/i);\n const result2 = /[\\r\\n]DATA\\s(\\S*)\\s/i.exec(data.substr(result1 - 1));\n\n const pcdHeader: any = {};\n pcdHeader.data = result2 && result2[1];\n if (result2 !== null) {\n pcdHeader.headerLen = (result2 && result2[0].length) + result1;\n }\n pcdHeader.str = data.substr(0, pcdHeader.headerLen);\n\n // remove comments\n\n pcdHeader.str = pcdHeader.str.replace(/\\#.*/gi, '');\n\n // parse\n\n pcdHeader.version = /VERSION (.*)/i.exec(pcdHeader.str);\n pcdHeader.fields = /FIELDS (.*)/i.exec(pcdHeader.str);\n pcdHeader.size = /SIZE (.*)/i.exec(pcdHeader.str);\n pcdHeader.type = /TYPE (.*)/i.exec(pcdHeader.str);\n pcdHeader.count = /COUNT (.*)/i.exec(pcdHeader.str);\n pcdHeader.width = /WIDTH (.*)/i.exec(pcdHeader.str);\n pcdHeader.height = /HEIGHT (.*)/i.exec(pcdHeader.str);\n pcdHeader.viewpoint = /VIEWPOINT (.*)/i.exec(pcdHeader.str);\n pcdHeader.points = /POINTS (.*)/i.exec(pcdHeader.str);\n\n // evaluate\n\n if (pcdHeader.version !== null) {\n pcdHeader.version = parseFloat(pcdHeader.version[1]);\n }\n\n if (pcdHeader.fields !== null) {\n pcdHeader.fields = pcdHeader.fields[1].split(' ');\n }\n\n if (pcdHeader.type !== null) {\n pcdHeader.type = pcdHeader.type[1].split(' ');\n }\n\n if (pcdHeader.width !== null) {\n pcdHeader.width = parseInt(pcdHeader.width[1], 10);\n }\n\n if (pcdHeader.height !== null) {\n pcdHeader.height = parseInt(pcdHeader.height[1], 10);\n }\n\n if (pcdHeader.viewpoint !== null) {\n pcdHeader.viewpoint = pcdHeader.viewpoint[1];\n }\n\n if (pcdHeader.points !== null) {\n pcdHeader.points = parseInt(pcdHeader.points[1], 10);\n }\n\n if (\n pcdHeader.points === null &&\n typeof pcdHeader.width === 'number' &&\n typeof pcdHeader.height === 'number'\n ) {\n pcdHeader.points = pcdHeader.width * pcdHeader.height;\n }\n\n if (pcdHeader.size !== null) {\n pcdHeader.size = pcdHeader.size[1].split(' ').map((x) => parseInt(x, 10));\n }\n\n if (pcdHeader.count !== null) {\n pcdHeader.count = pcdHeader.count[1].split(' ').map((x) => parseInt(x, 10));\n } else {\n pcdHeader.count = [];\n if (pcdHeader.fields !== null) {\n for (let i = 0; i < pcdHeader.fields.length; i++) {\n pcdHeader.count.push(1);\n }\n }\n }\n\n pcdHeader.offset = {};\n\n let sizeSum = 0;\n if (pcdHeader.fields !== null && pcdHeader.size !== null) {\n for (let i = 0; i < pcdHeader.fields.length; i++) {\n if (pcdHeader.data === 'ascii') {\n pcdHeader.offset[pcdHeader.fields[i]] = i;\n } else {\n pcdHeader.offset[pcdHeader.fields[i]] = sizeSum;\n sizeSum += pcdHeader.size[i];\n }\n }\n }\n\n // for binary only\n pcdHeader.rowSize = sizeSum;\n\n return pcdHeader;\n}\n\n/**\n * @param pcdHeader\n * @param textData\n * @returns [attributes]\n */\n// eslint-enable-next-line complexity, max-statements\nfunction parsePCDASCII(pcdHeader: PCDHeader, textData: string): HeaderAttributes {\n const position: number[] = [];\n const normal: number[] = [];\n const color: number[] = [];\n const intensity: number[] = [];\n const label: number[] = [];\n\n const offset = pcdHeader.offset;\n const pcdData = textData.substr(pcdHeader.headerLen);\n const lines = pcdData.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n if (lines[i] !== '') {\n const line = lines[i].split(' ');\n\n if (offset.x !== undefined) {\n position.push(parseFloat(line[offset.x]));\n position.push(parseFloat(line[offset.y]));\n position.push(parseFloat(line[offset.z]));\n }\n\n if (offset.rgb !== undefined) {\n const floatValue = parseFloat(line[offset.rgb]);\n const binaryColor = new Float32Array([floatValue]);\n const dataview = new DataView(binaryColor.buffer, 0);\n color.push(dataview.getUint8(0));\n color.push(dataview.getUint8(1));\n color.push(dataview.getUint8(2));\n // TODO - handle alpha channel / RGBA?\n }\n\n if (offset.normal_x !== undefined) {\n normal.push(parseFloat(line[offset.normal_x]));\n normal.push(parseFloat(line[offset.normal_y]));\n normal.push(parseFloat(line[offset.normal_z]));\n }\n\n if (offset.intensity !== undefined) {\n intensity.push(parseFloat(line[offset.intensity]));\n }\n\n if (offset.label !== undefined) {\n label.push(parseInt(line[offset.label]));\n }\n }\n }\n\n return {position, normal, color};\n}\n\n/**\n * @param pcdHeader\n * @param data\n * @returns [attributes]\n */\nfunction parsePCDBinary(pcdHeader: PCDHeader, data: ArrayBufferLike): HeaderAttributes {\n const position: number[] = [];\n const normal: number[] = [];\n const color: number[] = [];\n const intensity: number[] = [];\n const label: number[] = [];\n\n const dataview = new DataView(data, pcdHeader.headerLen);\n const offset = pcdHeader.offset;\n\n for (let i = 0, row = 0; i < pcdHeader.points; i++, row += pcdHeader.rowSize) {\n if (offset.x !== undefined) {\n position.push(dataview.getFloat32(row + offset.x, LITTLE_ENDIAN));\n position.push(dataview.getFloat32(row + offset.y, LITTLE_ENDIAN));\n position.push(dataview.getFloat32(row + offset.z, LITTLE_ENDIAN));\n }\n\n if (offset.rgb !== undefined) {\n color.push(dataview.getUint8(row + offset.rgb + 0));\n color.push(dataview.getUint8(row + offset.rgb + 1));\n color.push(dataview.getUint8(row + offset.rgb + 2));\n }\n\n if (offset.normal_x !== undefined) {\n normal.push(dataview.getFloat32(row + offset.normal_x, LITTLE_ENDIAN));\n normal.push(dataview.getFloat32(row + offset.normal_y, LITTLE_ENDIAN));\n normal.push(dataview.getFloat32(row + offset.normal_z, LITTLE_ENDIAN));\n }\n\n if (offset.intensity !== undefined) {\n intensity.push(dataview.getFloat32(row + offset.intensity, LITTLE_ENDIAN));\n }\n\n if (offset.label !== undefined) {\n label.push(dataview.getInt32(row + offset.label, LITTLE_ENDIAN));\n }\n }\n\n return {position, normal, color, intensity, label};\n}\n\n/** Parse compressed PCD data in in binary_compressed form ( https://pointclouds.org/documentation/tutorials/pcd_file_format.html)\n * from https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/PCDLoader.js\n * @license MIT (http://opensource.org/licenses/MIT)\n * @param pcdHeader\n * @param data\n * @returns [attributes]\n */\n// eslint-enable-next-line complexity, max-statements\nfunction parsePCDBinaryCompressed(pcdHeader: PCDHeader, data: ArrayBufferLike): HeaderAttributes {\n const position: number[] = [];\n const normal: number[] = [];\n const color: number[] = [];\n const intensity: number[] = [];\n const label: number[] = [];\n\n const sizes = new Uint32Array(data.slice(pcdHeader.headerLen, pcdHeader.headerLen + 8));\n const compressedSize = sizes[0];\n const decompressedSize = sizes[1];\n const decompressed = decompressLZF(\n new Uint8Array(data, pcdHeader.headerLen + 8, compressedSize),\n decompressedSize\n );\n const dataview = new DataView(decompressed.buffer);\n\n const offset = pcdHeader.offset;\n\n for (let i = 0; i < pcdHeader.points; i++) {\n if (offset.x !== undefined) {\n position.push(\n dataview.getFloat32(pcdHeader.points * offset.x + pcdHeader.size[0] * i, LITTLE_ENDIAN)\n );\n position.push(\n dataview.getFloat32(pcdHeader.points * offset.y + pcdHeader.size[1] * i, LITTLE_ENDIAN)\n );\n position.push(\n dataview.getFloat32(pcdHeader.points * offset.z + pcdHeader.size[2] * i, LITTLE_ENDIAN)\n );\n }\n\n if (offset.rgb !== undefined) {\n color.push(\n dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 0) / 255.0\n );\n color.push(\n dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 1) / 255.0\n );\n color.push(\n dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 2) / 255.0\n );\n }\n\n if (offset.normal_x !== undefined) {\n normal.push(\n dataview.getFloat32(\n pcdHeader.points * offset.normal_x + pcdHeader.size[4] * i,\n LITTLE_ENDIAN\n )\n );\n normal.push(\n dataview.getFloat32(\n pcdHeader.points * offset.normal_y + pcdHeader.size[5] * i,\n LITTLE_ENDIAN\n )\n );\n normal.push(\n dataview.getFloat32(\n pcdHeader.points * offset.normal_z + pcdHeader.size[6] * i,\n LITTLE_ENDIAN\n )\n );\n }\n\n if (offset.intensity !== undefined) {\n const intensityIndex = pcdHeader.fields.indexOf('intensity');\n intensity.push(\n dataview.getFloat32(\n pcdHeader.points * offset.intensity + pcdHeader.size[intensityIndex] * i,\n LITTLE_ENDIAN\n )\n );\n }\n\n if (offset.label !== undefined) {\n const labelIndex = pcdHeader.fields.indexOf('label');\n label.push(\n dataview.getInt32(\n pcdHeader.points * offset.label + pcdHeader.size[labelIndex] * i,\n LITTLE_ENDIAN\n )\n );\n }\n }\n\n return {\n position,\n normal,\n color,\n intensity,\n label\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parse-pcd.js","names":["_schema","require","_decompressLzf","_getPcdSchema","LITTLE_ENDIAN","parsePCD","data","textData","TextDecoder","decode","pcdHeader","parsePCDHeader","attributes","parsePCDASCII","parsePCDBinary","parsePCDBinaryCompressed","Error","concat","getMeshAttributes","header","getMeshHeader","metadata","Map","JSON","stringify","boundingBox","schema","getPCDSchema","loaderData","mode","indices","width","height","pointCount","vertexCount","getMeshBoundingBox","normalizedAttributes","POSITION","value","Float32Array","position","size","normal","length","NORMAL","color","COLOR_0","Uint8Array","intensity","label","result1","search","result2","exec","substr","headerLen","str","replace","version","fields","type","count","viewpoint","points","parseFloat","split","parseInt","map","x","i","push","offset","sizeSum","rowSize","pcdData","lines","line","undefined","y","z","rgb","floatValue","binaryColor","dataview","DataView","buffer","getUint8","normal_x","normal_y","normal_z","row","getFloat32","getInt32","sizes","Uint32Array","slice","compressedSize","decompressedSize","decompressed","decompressLZF","intensityIndex","indexOf","labelIndex"],"sources":["../../../src/lib/parse-pcd.ts"],"sourcesContent":["// PCD Loader, adapted from THREE.js (MIT license)\n// Description: A loader for PCD ascii and binary files.\n// Limitations: Compressed binary files are not supported.\n//\n// Attributions per original THREE.js source file:\n// @author Filipe Caixeta / http://filipecaixeta.com.br\n// @author Mugen87 / https://github.com/Mugen87\n\nimport {MeshAttribute, MeshAttributes} from '@loaders.gl/schema';\nimport {getMeshBoundingBox} from '@loaders.gl/schema';\nimport {decompressLZF} from './decompress-lzf';\nimport {getPCDSchema} from './get-pcd-schema';\nimport type {PCDHeader} from './pcd-types';\n\ntype NormalizedAttributes = {\n POSITION: {\n value: Float32Array;\n size: number;\n };\n NORMAL?: {\n value: Float32Array;\n size: number;\n };\n COLOR_0?: {\n value: Uint8Array;\n size: number;\n };\n};\n\ntype HeaderAttributes = {\n [attributeName: string]: number[];\n};\n\nconst LITTLE_ENDIAN: boolean = true;\n\n/**\n *\n * @param data\n * @returns\n */\nexport default function parsePCD(data: ArrayBufferLike) {\n // parse header (always ascii format)\n const textData = new TextDecoder().decode(data);\n const pcdHeader = parsePCDHeader(textData);\n\n let attributes: any = {};\n\n // parse data\n switch (pcdHeader.data) {\n case 'ascii':\n attributes = parsePCDASCII(pcdHeader, textData);\n break;\n\n case 'binary':\n attributes = parsePCDBinary(pcdHeader, data);\n break;\n\n case 'binary_compressed':\n attributes = parsePCDBinaryCompressed(pcdHeader, data);\n break;\n\n default:\n throw new Error(`PCD: ${pcdHeader.data} files are not supported`);\n }\n\n attributes = getMeshAttributes(attributes);\n\n const header = getMeshHeader(pcdHeader, attributes);\n\n const metadata = new Map([\n ['mode', '0'],\n ['boundingBox', JSON.stringify(header.boundingBox)]\n ]);\n\n const schema = getPCDSchema(pcdHeader, metadata);\n\n return {\n loaderData: {\n header: pcdHeader\n },\n header,\n schema,\n mode: 0, // POINTS\n indices: null,\n attributes\n };\n}\n\n// Create a header that contains common data for PointCloud category loaders\nfunction getMeshHeader(pcdHeader: PCDHeader, attributes: NormalizedAttributes): Partial<PCDHeader> {\n if (typeof pcdHeader.width === 'number' && typeof pcdHeader.height === 'number') {\n const pointCount = pcdHeader.width * pcdHeader.height; // Supports \"organized\" point sets\n return {\n vertexCount: pointCount,\n boundingBox: getMeshBoundingBox(attributes)\n };\n }\n return pcdHeader;\n}\n\n/**\n * @param attributes\n * @returns Normalized attributes\n */\nfunction getMeshAttributes(attributes: HeaderAttributes): {[attributeName: string]: MeshAttribute} {\n const normalizedAttributes: MeshAttributes = {\n POSITION: {\n // Binary PCD is only 32 bit\n value: new Float32Array(attributes.position),\n size: 3\n }\n };\n\n if (attributes.normal && attributes.normal.length > 0) {\n normalizedAttributes.NORMAL = {\n value: new Float32Array(attributes.normal),\n size: 3\n };\n }\n\n if (attributes.color && attributes.color.length > 0) {\n // TODO - RGBA\n normalizedAttributes.COLOR_0 = {\n value: new Uint8Array(attributes.color),\n size: 3\n };\n }\n\n if (attributes.intensity && attributes.intensity.length > 0) {\n // TODO - RGBA\n normalizedAttributes.COLOR_0 = {\n value: new Uint8Array(attributes.color),\n size: 3\n };\n }\n\n if (attributes.label && attributes.label.length > 0) {\n // TODO - RGBA\n normalizedAttributes.COLOR_0 = {\n value: new Uint8Array(attributes.label),\n size: 3\n };\n }\n\n return normalizedAttributes;\n}\n\n/**\n * Incoming data parsing\n * @param data\n * @returns Header\n */\n/* eslint-disable complexity, max-statements */\nfunction parsePCDHeader(data: string): PCDHeader {\n const result1 = data.search(/[\\r\\n]DATA\\s(\\S*)\\s/i);\n const result2 = /[\\r\\n]DATA\\s(\\S*)\\s/i.exec(data.substr(result1 - 1));\n\n const pcdHeader: any = {};\n pcdHeader.data = result2 && result2[1];\n if (result2 !== null) {\n pcdHeader.headerLen = (result2 && result2[0].length) + result1;\n }\n pcdHeader.str = data.substr(0, pcdHeader.headerLen);\n\n // remove comments\n\n pcdHeader.str = pcdHeader.str.replace(/\\#.*/gi, '');\n\n // parse\n\n pcdHeader.version = /VERSION (.*)/i.exec(pcdHeader.str);\n pcdHeader.fields = /FIELDS (.*)/i.exec(pcdHeader.str);\n pcdHeader.size = /SIZE (.*)/i.exec(pcdHeader.str);\n pcdHeader.type = /TYPE (.*)/i.exec(pcdHeader.str);\n pcdHeader.count = /COUNT (.*)/i.exec(pcdHeader.str);\n pcdHeader.width = /WIDTH (.*)/i.exec(pcdHeader.str);\n pcdHeader.height = /HEIGHT (.*)/i.exec(pcdHeader.str);\n pcdHeader.viewpoint = /VIEWPOINT (.*)/i.exec(pcdHeader.str);\n pcdHeader.points = /POINTS (.*)/i.exec(pcdHeader.str);\n\n // evaluate\n\n if (pcdHeader.version !== null) {\n pcdHeader.version = parseFloat(pcdHeader.version[1]);\n }\n\n if (pcdHeader.fields !== null) {\n pcdHeader.fields = pcdHeader.fields[1].split(' ');\n }\n\n if (pcdHeader.type !== null) {\n pcdHeader.type = pcdHeader.type[1].split(' ');\n }\n\n if (pcdHeader.width !== null) {\n pcdHeader.width = parseInt(pcdHeader.width[1], 10);\n }\n\n if (pcdHeader.height !== null) {\n pcdHeader.height = parseInt(pcdHeader.height[1], 10);\n }\n\n if (pcdHeader.viewpoint !== null) {\n pcdHeader.viewpoint = pcdHeader.viewpoint[1];\n }\n\n if (pcdHeader.points !== null) {\n pcdHeader.points = parseInt(pcdHeader.points[1], 10);\n }\n\n if (\n pcdHeader.points === null &&\n typeof pcdHeader.width === 'number' &&\n typeof pcdHeader.height === 'number'\n ) {\n pcdHeader.points = pcdHeader.width * pcdHeader.height;\n }\n\n if (pcdHeader.size !== null) {\n pcdHeader.size = pcdHeader.size[1].split(' ').map((x) => parseInt(x, 10));\n }\n\n if (pcdHeader.count !== null) {\n pcdHeader.count = pcdHeader.count[1].split(' ').map((x) => parseInt(x, 10));\n } else {\n pcdHeader.count = [];\n if (pcdHeader.fields !== null) {\n for (let i = 0; i < pcdHeader.fields.length; i++) {\n pcdHeader.count.push(1);\n }\n }\n }\n\n pcdHeader.offset = {};\n\n let sizeSum = 0;\n if (pcdHeader.fields !== null && pcdHeader.size !== null) {\n for (let i = 0; i < pcdHeader.fields.length; i++) {\n if (pcdHeader.data === 'ascii') {\n pcdHeader.offset[pcdHeader.fields[i]] = i;\n } else {\n pcdHeader.offset[pcdHeader.fields[i]] = sizeSum;\n sizeSum += pcdHeader.size[i];\n }\n }\n }\n\n // for binary only\n pcdHeader.rowSize = sizeSum;\n\n return pcdHeader;\n}\n\n/**\n * @param pcdHeader\n * @param textData\n * @returns [attributes]\n */\n// eslint-enable-next-line complexity, max-statements\nfunction parsePCDASCII(pcdHeader: PCDHeader, textData: string): HeaderAttributes {\n const position: number[] = [];\n const normal: number[] = [];\n const color: number[] = [];\n const intensity: number[] = [];\n const label: number[] = [];\n\n const offset = pcdHeader.offset;\n const pcdData = textData.substr(pcdHeader.headerLen);\n const lines = pcdData.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n if (lines[i] !== '') {\n const line = lines[i].split(' ');\n\n if (offset.x !== undefined) {\n position.push(parseFloat(line[offset.x]));\n position.push(parseFloat(line[offset.y]));\n position.push(parseFloat(line[offset.z]));\n }\n\n if (offset.rgb !== undefined) {\n const floatValue = parseFloat(line[offset.rgb]);\n const binaryColor = new Float32Array([floatValue]);\n const dataview = new DataView(binaryColor.buffer, 0);\n color.push(dataview.getUint8(0));\n color.push(dataview.getUint8(1));\n color.push(dataview.getUint8(2));\n // TODO - handle alpha channel / RGBA?\n }\n\n if (offset.normal_x !== undefined) {\n normal.push(parseFloat(line[offset.normal_x]));\n normal.push(parseFloat(line[offset.normal_y]));\n normal.push(parseFloat(line[offset.normal_z]));\n }\n\n if (offset.intensity !== undefined) {\n intensity.push(parseFloat(line[offset.intensity]));\n }\n\n if (offset.label !== undefined) {\n label.push(parseInt(line[offset.label]));\n }\n }\n }\n\n return {position, normal, color};\n}\n\n/**\n * @param pcdHeader\n * @param data\n * @returns [attributes]\n */\nfunction parsePCDBinary(pcdHeader: PCDHeader, data: ArrayBufferLike): HeaderAttributes {\n const position: number[] = [];\n const normal: number[] = [];\n const color: number[] = [];\n const intensity: number[] = [];\n const label: number[] = [];\n\n const dataview = new DataView(data, pcdHeader.headerLen);\n const offset = pcdHeader.offset;\n\n for (let i = 0, row = 0; i < pcdHeader.points; i++, row += pcdHeader.rowSize) {\n if (offset.x !== undefined) {\n position.push(dataview.getFloat32(row + offset.x, LITTLE_ENDIAN));\n position.push(dataview.getFloat32(row + offset.y, LITTLE_ENDIAN));\n position.push(dataview.getFloat32(row + offset.z, LITTLE_ENDIAN));\n }\n\n if (offset.rgb !== undefined) {\n color.push(dataview.getUint8(row + offset.rgb + 0));\n color.push(dataview.getUint8(row + offset.rgb + 1));\n color.push(dataview.getUint8(row + offset.rgb + 2));\n }\n\n if (offset.normal_x !== undefined) {\n normal.push(dataview.getFloat32(row + offset.normal_x, LITTLE_ENDIAN));\n normal.push(dataview.getFloat32(row + offset.normal_y, LITTLE_ENDIAN));\n normal.push(dataview.getFloat32(row + offset.normal_z, LITTLE_ENDIAN));\n }\n\n if (offset.intensity !== undefined) {\n intensity.push(dataview.getFloat32(row + offset.intensity, LITTLE_ENDIAN));\n }\n\n if (offset.label !== undefined) {\n label.push(dataview.getInt32(row + offset.label, LITTLE_ENDIAN));\n }\n }\n\n return {position, normal, color, intensity, label};\n}\n\n/** Parse compressed PCD data in in binary_compressed form ( https://pointclouds.org/documentation/tutorials/pcd_file_format.html)\n * from https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/PCDLoader.js\n * @license MIT (http://opensource.org/licenses/MIT)\n * @param pcdHeader\n * @param data\n * @returns [attributes]\n */\n// eslint-enable-next-line complexity, max-statements\nfunction parsePCDBinaryCompressed(pcdHeader: PCDHeader, data: ArrayBufferLike): HeaderAttributes {\n const position: number[] = [];\n const normal: number[] = [];\n const color: number[] = [];\n const intensity: number[] = [];\n const label: number[] = [];\n\n const sizes = new Uint32Array(data.slice(pcdHeader.headerLen, pcdHeader.headerLen + 8));\n const compressedSize = sizes[0];\n const decompressedSize = sizes[1];\n const decompressed = decompressLZF(\n new Uint8Array(data, pcdHeader.headerLen + 8, compressedSize),\n decompressedSize\n );\n const dataview = new DataView(decompressed.buffer);\n\n const offset = pcdHeader.offset;\n\n for (let i = 0; i < pcdHeader.points; i++) {\n if (offset.x !== undefined) {\n position.push(\n dataview.getFloat32(pcdHeader.points * offset.x + pcdHeader.size[0] * i, LITTLE_ENDIAN)\n );\n position.push(\n dataview.getFloat32(pcdHeader.points * offset.y + pcdHeader.size[1] * i, LITTLE_ENDIAN)\n );\n position.push(\n dataview.getFloat32(pcdHeader.points * offset.z + pcdHeader.size[2] * i, LITTLE_ENDIAN)\n );\n }\n\n if (offset.rgb !== undefined) {\n color.push(\n dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 0) / 255.0\n );\n color.push(\n dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 1) / 255.0\n );\n color.push(\n dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 2) / 255.0\n );\n }\n\n if (offset.normal_x !== undefined) {\n normal.push(\n dataview.getFloat32(\n pcdHeader.points * offset.normal_x + pcdHeader.size[4] * i,\n LITTLE_ENDIAN\n )\n );\n normal.push(\n dataview.getFloat32(\n pcdHeader.points * offset.normal_y + pcdHeader.size[5] * i,\n LITTLE_ENDIAN\n )\n );\n normal.push(\n dataview.getFloat32(\n pcdHeader.points * offset.normal_z + pcdHeader.size[6] * i,\n LITTLE_ENDIAN\n )\n );\n }\n\n if (offset.intensity !== undefined) {\n const intensityIndex = pcdHeader.fields.indexOf('intensity');\n intensity.push(\n dataview.getFloat32(\n pcdHeader.points * offset.intensity + pcdHeader.size[intensityIndex] * i,\n LITTLE_ENDIAN\n )\n );\n }\n\n if (offset.label !== undefined) {\n const labelIndex = pcdHeader.fields.indexOf('label');\n label.push(\n dataview.getInt32(\n pcdHeader.points * offset.label + pcdHeader.size[labelIndex] * i,\n LITTLE_ENDIAN\n )\n );\n }\n }\n\n return {\n position,\n normal,\n color,\n intensity,\n label\n };\n}\n"],"mappings":"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"}
|
package/dist/es5/pcd-loader.js
CHANGED
|
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports._typecheckPCDLoader = exports.PCDLoader = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
const VERSION = typeof "3.4.15" !== 'undefined' ? "3.4.15" : 'latest';
|
|
8
|
+
const PCDLoader = {
|
|
9
9
|
name: 'PCD (Point Cloud Data)',
|
|
10
10
|
id: 'pcd',
|
|
11
11
|
module: 'pcd',
|
|
@@ -18,6 +18,6 @@ var PCDLoader = {
|
|
|
18
18
|
}
|
|
19
19
|
};
|
|
20
20
|
exports.PCDLoader = PCDLoader;
|
|
21
|
-
|
|
21
|
+
const _typecheckPCDLoader = PCDLoader;
|
|
22
22
|
exports._typecheckPCDLoader = _typecheckPCDLoader;
|
|
23
23
|
//# sourceMappingURL=pcd-loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pcd-loader.js","names":["VERSION","PCDLoader","name","id","module","version","worker","extensions","mimeTypes","options","pcd","exports","_typecheckPCDLoader"],"sources":["../../src/pcd-loader.ts"],"sourcesContent":["import type {Loader} from '@loaders.gl/loader-utils';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/**\n * Worker loader for PCD - Point Cloud Data\n */\nexport const PCDLoader = {\n name: 'PCD (Point Cloud Data)',\n id: 'pcd',\n module: 'pcd',\n version: VERSION,\n worker: true,\n extensions: ['pcd'],\n mimeTypes: ['text/plain'],\n options: {\n pcd: {}\n }\n};\n\nexport const _typecheckPCDLoader: Loader = PCDLoader;\n"],"mappings":";;;;;;AAIA,
|
|
1
|
+
{"version":3,"file":"pcd-loader.js","names":["VERSION","PCDLoader","name","id","module","version","worker","extensions","mimeTypes","options","pcd","exports","_typecheckPCDLoader"],"sources":["../../src/pcd-loader.ts"],"sourcesContent":["import type {Loader} from '@loaders.gl/loader-utils';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/**\n * Worker loader for PCD - Point Cloud Data\n */\nexport const PCDLoader = {\n name: 'PCD (Point Cloud Data)',\n id: 'pcd',\n module: 'pcd',\n version: VERSION,\n worker: true,\n extensions: ['pcd'],\n mimeTypes: ['text/plain'],\n options: {\n pcd: {}\n }\n};\n\nexport const _typecheckPCDLoader: Loader = PCDLoader;\n"],"mappings":";;;;;;AAIA,MAAMA,OAAO,GAAG,eAAkB,KAAK,WAAW,cAAiB,QAAQ;AAKpE,MAAMC,SAAS,GAAG;EACvBC,IAAI,EAAE,wBAAwB;EAC9BC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEL,OAAO;EAChBM,MAAM,EAAE,IAAI;EACZC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,CAAC,YAAY,CAAC;EACzBC,OAAO,EAAE;IACPC,GAAG,EAAE,CAAC;EACR;AACF,CAAC;AAACC,OAAA,CAAAV,SAAA,GAAAA,SAAA;AAEK,MAAMW,mBAA2B,GAAGX,SAAS;AAACU,OAAA,CAAAC,mBAAA,GAAAA,mBAAA"}
|
package/dist/esm/pcd-loader.js
CHANGED
package/dist/pcd-worker.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/pcd",
|
|
3
|
-
"version": "3.4.
|
|
3
|
+
"version": "3.4.15",
|
|
4
4
|
"description": "Framework-independent loader for the PCD format",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"build-worker": "esbuild src/workers/pcd-worker.ts --bundle --outfile=dist/pcd-worker.js --define:__VERSION__=\\\"$npm_package_version\\\""
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@loaders.gl/loader-utils": "3.4.
|
|
37
|
-
"@loaders.gl/schema": "3.4.
|
|
36
|
+
"@loaders.gl/loader-utils": "3.4.15",
|
|
37
|
+
"@loaders.gl/schema": "3.4.15"
|
|
38
38
|
},
|
|
39
|
-
"gitHead": "
|
|
39
|
+
"gitHead": "19e941d5805568e449ef9092490d6568a4853298"
|
|
40
40
|
}
|