@loaders.gl/ply 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.
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- var moduleExports = require('./index');
3
+ const moduleExports = require('./index');
4
4
  globalThis.loaders = globalThis.loaders || {};
5
5
  module.exports = Object.assign(globalThis.loaders, moduleExports);
6
6
  //# sourceMappingURL=bundle.js.map
@@ -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,IAAMA,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"}
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
@@ -1,54 +1,27 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.PLYLoader = void 0;
8
7
  Object.defineProperty(exports, "PLYWorkerLoader", {
9
8
  enumerable: true,
10
- get: function get() {
9
+ get: function () {
11
10
  return _plyLoader.PLYLoader;
12
11
  }
13
12
  });
14
13
  exports._typecheckPLYLoader = 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
14
  var _plyLoader = require("./ply-loader");
19
15
  var _parsePly = require("./lib/parse-ply");
20
16
  var _parsePlyInBatches = require("./lib/parse-ply-in-batches");
21
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
22
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
23
- var PLYLoader = _objectSpread(_objectSpread({}, _plyLoader.PLYLoader), {}, {
24
- parse: function () {
25
- var _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer, options) {
26
- return _regenerator.default.wrap(function _callee$(_context) {
27
- while (1) switch (_context.prev = _context.next) {
28
- case 0:
29
- return _context.abrupt("return", (0, _parsePly.parsePLY)(arrayBuffer, options === null || options === void 0 ? void 0 : options.ply));
30
- case 1:
31
- case "end":
32
- return _context.stop();
33
- }
34
- }, _callee);
35
- }));
36
- function parse(_x, _x2) {
37
- return _parse.apply(this, arguments);
38
- }
39
- return parse;
40
- }(),
41
- parseTextSync: function parseTextSync(arrayBuffer, options) {
42
- return (0, _parsePly.parsePLY)(arrayBuffer, options === null || options === void 0 ? void 0 : options.ply);
43
- },
44
- parseSync: function parseSync(arrayBuffer, options) {
45
- return (0, _parsePly.parsePLY)(arrayBuffer, options === null || options === void 0 ? void 0 : options.ply);
46
- },
47
- parseInBatches: function parseInBatches(arrayBuffer, options) {
48
- return (0, _parsePlyInBatches.parsePLYInBatches)(arrayBuffer, options === null || options === void 0 ? void 0 : options.ply);
49
- }
50
- });
17
+ const PLYLoader = {
18
+ ..._plyLoader.PLYLoader,
19
+ parse: async (arrayBuffer, options) => (0, _parsePly.parsePLY)(arrayBuffer, options === null || options === void 0 ? void 0 : options.ply),
20
+ parseTextSync: (arrayBuffer, options) => (0, _parsePly.parsePLY)(arrayBuffer, options === null || options === void 0 ? void 0 : options.ply),
21
+ parseSync: (arrayBuffer, options) => (0, _parsePly.parsePLY)(arrayBuffer, options === null || options === void 0 ? void 0 : options.ply),
22
+ parseInBatches: (arrayBuffer, options) => (0, _parsePlyInBatches.parsePLYInBatches)(arrayBuffer, options === null || options === void 0 ? void 0 : options.ply)
23
+ };
51
24
  exports.PLYLoader = PLYLoader;
52
- var _typecheckPLYLoader = PLYLoader;
25
+ const _typecheckPLYLoader = PLYLoader;
53
26
  exports._typecheckPLYLoader = _typecheckPLYLoader;
54
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_plyLoader","require","_parsePly","_parsePlyInBatches","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","PLYLoader","PLYWorkerLoader","parse","_parse","_asyncToGenerator2","_regenerator","mark","_callee","arrayBuffer","options","wrap","_callee$","_context","prev","next","abrupt","parsePLY","ply","stop","_x","_x2","parseTextSync","parseSync","parseInBatches","parsePLYInBatches","exports","_typecheckPLYLoader"],"sources":["../../src/index.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {PLYLoader as PLYWorkerLoader} from './ply-loader';\nimport {parsePLY} from './lib/parse-ply';\nimport {parsePLYInBatches} from './lib/parse-ply-in-batches';\n\n// PLYLoader\n\nexport {PLYWorkerLoader};\n\n/**\n * Loader for PLY - Polygon File Format\n */\nexport const PLYLoader = {\n ...PLYWorkerLoader,\n // Note: parsePLY supports both text and binary\n parse: async (arrayBuffer, options) => parsePLY(arrayBuffer, options?.ply), // TODO - this may not detect text correctly?\n parseTextSync: (arrayBuffer, options) => parsePLY(arrayBuffer, options?.ply),\n parseSync: (arrayBuffer, options) => parsePLY(arrayBuffer, options?.ply),\n parseInBatches: (arrayBuffer, options) => parsePLYInBatches(arrayBuffer, options?.ply)\n};\n\nexport const _typecheckPLYLoader: LoaderWithParser = PLYLoader;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["_plyLoader","require","_parsePly","_parsePlyInBatches","PLYLoader","PLYWorkerLoader","parse","arrayBuffer","options","parsePLY","ply","parseTextSync","parseSync","parseInBatches","parsePLYInBatches","exports","_typecheckPLYLoader"],"sources":["../../src/index.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {PLYLoader as PLYWorkerLoader} from './ply-loader';\nimport {parsePLY} from './lib/parse-ply';\nimport {parsePLYInBatches} from './lib/parse-ply-in-batches';\n\n// PLYLoader\n\nexport {PLYWorkerLoader};\n\n/**\n * Loader for PLY - Polygon File Format\n */\nexport const PLYLoader = {\n ...PLYWorkerLoader,\n // Note: parsePLY supports both text and binary\n parse: async (arrayBuffer, options) => parsePLY(arrayBuffer, options?.ply), // TODO - this may not detect text correctly?\n parseTextSync: (arrayBuffer, options) => parsePLY(arrayBuffer, options?.ply),\n parseSync: (arrayBuffer, options) => parsePLY(arrayBuffer, options?.ply),\n parseInBatches: (arrayBuffer, options) => parsePLYInBatches(arrayBuffer, options?.ply)\n};\n\nexport const _typecheckPLYLoader: LoaderWithParser = PLYLoader;\n"],"mappings":";;;;;;;;;;;;;AACA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,kBAAA,GAAAF,OAAA;AASO,MAAMG,SAAS,GAAG;EACvB,GAAGC,oBAAe;EAElBC,KAAK,EAAE,MAAAA,CAAOC,WAAW,EAAEC,OAAO,KAAK,IAAAC,kBAAQ,EAACF,WAAW,EAAEC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEE,GAAG,CAAC;EAC1EC,aAAa,EAAEA,CAACJ,WAAW,EAAEC,OAAO,KAAK,IAAAC,kBAAQ,EAACF,WAAW,EAAEC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEE,GAAG,CAAC;EAC5EE,SAAS,EAAEA,CAACL,WAAW,EAAEC,OAAO,KAAK,IAAAC,kBAAQ,EAACF,WAAW,EAAEC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEE,GAAG,CAAC;EACxEG,cAAc,EAAEA,CAACN,WAAW,EAAEC,OAAO,KAAK,IAAAM,oCAAiB,EAACP,WAAW,EAAEC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEE,GAAG;AACvF,CAAC;AAACK,OAAA,CAAAX,SAAA,GAAAA,SAAA;AAEK,MAAMY,mBAAqC,GAAGZ,SAAS;AAACW,OAAA,CAAAC,mBAAA,GAAAA,mBAAA"}
@@ -6,12 +6,12 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.getPLYSchema = getPLYSchema;
7
7
  var _schema = require("@loaders.gl/schema");
8
8
  function getPLYSchema(plyHeader, attributes) {
9
- var metadataMap = makeMetadataFromPlyHeader(plyHeader);
10
- var schema = (0, _schema.deduceMeshSchema)(attributes, metadataMap);
9
+ const metadataMap = makeMetadataFromPlyHeader(plyHeader);
10
+ const schema = (0, _schema.deduceMeshSchema)(attributes, metadataMap);
11
11
  return schema;
12
12
  }
13
13
  function makeMetadataFromPlyHeader(plyHeader) {
14
- var metadataMap = new Map();
14
+ const metadataMap = new Map();
15
15
  metadataMap.set('ply_comments', JSON.stringify(plyHeader.comments));
16
16
  metadataMap.set('ply_elements', JSON.stringify(plyHeader.elements));
17
17
  if (plyHeader.format !== undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"get-ply-schema.js","names":["_schema","require","getPLYSchema","plyHeader","attributes","metadataMap","makeMetadataFromPlyHeader","schema","deduceMeshSchema","Map","set","JSON","stringify","comments","elements","format","undefined","version","headerLength","toString"],"sources":["../../../src/lib/get-ply-schema.ts"],"sourcesContent":["import {Schema, MeshAttributes, deduceMeshSchema} from '@loaders.gl/schema';\nimport type {PLYHeader} from './ply-types';\n\n/**\n * Gets schema from PLY header\n * @param plyHeader\n * @param metadata\n * @returns Schema\n */\nexport function getPLYSchema(plyHeader: PLYHeader, attributes: MeshAttributes): Schema {\n const metadataMap = makeMetadataFromPlyHeader(plyHeader);\n const schema = deduceMeshSchema(attributes, metadataMap);\n return schema;\n}\n\n/**\n * Make arrow like schema metadata by PlyHeader properties\n * @param plyHeader\n * @returns\n */\nfunction makeMetadataFromPlyHeader(plyHeader: PLYHeader): Map<string, string> {\n const metadataMap = new Map();\n metadataMap.set('ply_comments', JSON.stringify(plyHeader.comments));\n metadataMap.set('ply_elements', JSON.stringify(plyHeader.elements));\n if (plyHeader.format !== undefined) {\n metadataMap.set('ply_format', plyHeader.format);\n }\n if (plyHeader.version !== undefined) {\n metadataMap.set('ply_version', plyHeader.version);\n }\n if (plyHeader.headerLength !== undefined) {\n metadataMap.set('ply_headerLength', plyHeader.headerLength.toString(10));\n }\n return metadataMap;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AASO,SAASC,YAAYA,CAACC,SAAoB,EAAEC,UAA0B,EAAU;EACrF,IAAMC,WAAW,GAAGC,yBAAyB,CAACH,SAAS,CAAC;EACxD,IAAMI,MAAM,GAAG,IAAAC,wBAAgB,EAACJ,UAAU,EAAEC,WAAW,CAAC;EACxD,OAAOE,MAAM;AACf;AAOA,SAASD,yBAAyBA,CAACH,SAAoB,EAAuB;EAC5E,IAAME,WAAW,GAAG,IAAII,GAAG,CAAC,CAAC;EAC7BJ,WAAW,CAACK,GAAG,CAAC,cAAc,EAAEC,IAAI,CAACC,SAAS,CAACT,SAAS,CAACU,QAAQ,CAAC,CAAC;EACnER,WAAW,CAACK,GAAG,CAAC,cAAc,EAAEC,IAAI,CAACC,SAAS,CAACT,SAAS,CAACW,QAAQ,CAAC,CAAC;EACnE,IAAIX,SAAS,CAACY,MAAM,KAAKC,SAAS,EAAE;IAClCX,WAAW,CAACK,GAAG,CAAC,YAAY,EAAEP,SAAS,CAACY,MAAM,CAAC;EACjD;EACA,IAAIZ,SAAS,CAACc,OAAO,KAAKD,SAAS,EAAE;IACnCX,WAAW,CAACK,GAAG,CAAC,aAAa,EAAEP,SAAS,CAACc,OAAO,CAAC;EACnD;EACA,IAAId,SAAS,CAACe,YAAY,KAAKF,SAAS,EAAE;IACxCX,WAAW,CAACK,GAAG,CAAC,kBAAkB,EAAEP,SAAS,CAACe,YAAY,CAACC,QAAQ,CAAC,EAAE,CAAC,CAAC;EAC1E;EACA,OAAOd,WAAW;AACpB"}
1
+ {"version":3,"file":"get-ply-schema.js","names":["_schema","require","getPLYSchema","plyHeader","attributes","metadataMap","makeMetadataFromPlyHeader","schema","deduceMeshSchema","Map","set","JSON","stringify","comments","elements","format","undefined","version","headerLength","toString"],"sources":["../../../src/lib/get-ply-schema.ts"],"sourcesContent":["import {Schema, MeshAttributes, deduceMeshSchema} from '@loaders.gl/schema';\nimport type {PLYHeader} from './ply-types';\n\n/**\n * Gets schema from PLY header\n * @param plyHeader\n * @param metadata\n * @returns Schema\n */\nexport function getPLYSchema(plyHeader: PLYHeader, attributes: MeshAttributes): Schema {\n const metadataMap = makeMetadataFromPlyHeader(plyHeader);\n const schema = deduceMeshSchema(attributes, metadataMap);\n return schema;\n}\n\n/**\n * Make arrow like schema metadata by PlyHeader properties\n * @param plyHeader\n * @returns\n */\nfunction makeMetadataFromPlyHeader(plyHeader: PLYHeader): Map<string, string> {\n const metadataMap = new Map();\n metadataMap.set('ply_comments', JSON.stringify(plyHeader.comments));\n metadataMap.set('ply_elements', JSON.stringify(plyHeader.elements));\n if (plyHeader.format !== undefined) {\n metadataMap.set('ply_format', plyHeader.format);\n }\n if (plyHeader.version !== undefined) {\n metadataMap.set('ply_version', plyHeader.version);\n }\n if (plyHeader.headerLength !== undefined) {\n metadataMap.set('ply_headerLength', plyHeader.headerLength.toString(10));\n }\n return metadataMap;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AASO,SAASC,YAAYA,CAACC,SAAoB,EAAEC,UAA0B,EAAU;EACrF,MAAMC,WAAW,GAAGC,yBAAyB,CAACH,SAAS,CAAC;EACxD,MAAMI,MAAM,GAAG,IAAAC,wBAAgB,EAACJ,UAAU,EAAEC,WAAW,CAAC;EACxD,OAAOE,MAAM;AACf;AAOA,SAASD,yBAAyBA,CAACH,SAAoB,EAAuB;EAC5E,MAAME,WAAW,GAAG,IAAII,GAAG,CAAC,CAAC;EAC7BJ,WAAW,CAACK,GAAG,CAAC,cAAc,EAAEC,IAAI,CAACC,SAAS,CAACT,SAAS,CAACU,QAAQ,CAAC,CAAC;EACnER,WAAW,CAACK,GAAG,CAAC,cAAc,EAAEC,IAAI,CAACC,SAAS,CAACT,SAAS,CAACW,QAAQ,CAAC,CAAC;EACnE,IAAIX,SAAS,CAACY,MAAM,KAAKC,SAAS,EAAE;IAClCX,WAAW,CAACK,GAAG,CAAC,YAAY,EAAEP,SAAS,CAACY,MAAM,CAAC;EACjD;EACA,IAAIZ,SAAS,CAACc,OAAO,KAAKD,SAAS,EAAE;IACnCX,WAAW,CAACK,GAAG,CAAC,aAAa,EAAEP,SAAS,CAACc,OAAO,CAAC;EACnD;EACA,IAAId,SAAS,CAACe,YAAY,KAAKF,SAAS,EAAE;IACxCX,WAAW,CAACK,GAAG,CAAC,kBAAkB,EAAEP,SAAS,CAACe,YAAY,CAACC,QAAQ,CAAC,EAAE,CAAC,CAAC;EAC1E;EACA,OAAOd,WAAW;AACpB"}
@@ -7,28 +7,28 @@ exports.default = normalizePLY;
7
7
  var _schema = require("@loaders.gl/schema");
8
8
  var _getPlySchema = require("./get-ply-schema");
9
9
  function normalizePLY(plyHeader, plyAttributes, options) {
10
- var attributes = getMeshAttributes(plyAttributes);
11
- var boundingBox = (0, _schema.getMeshBoundingBox)(attributes);
12
- var vertexCount = plyAttributes.indices.length || plyAttributes.vertices.length / 3;
13
- var isTriangles = plyAttributes.indices && plyAttributes.indices.length > 0;
14
- var mode = isTriangles ? 4 : 0;
15
- var topology = isTriangles ? 'triangle-list' : 'point-list';
16
- var schema = (0, _getPlySchema.getPLYSchema)(plyHeader, attributes);
17
- var plyMesh = {
10
+ const attributes = getMeshAttributes(plyAttributes);
11
+ const boundingBox = (0, _schema.getMeshBoundingBox)(attributes);
12
+ const vertexCount = plyAttributes.indices.length || plyAttributes.vertices.length / 3;
13
+ const isTriangles = plyAttributes.indices && plyAttributes.indices.length > 0;
14
+ const mode = isTriangles ? 4 : 0;
15
+ const topology = isTriangles ? 'triangle-list' : 'point-list';
16
+ const schema = (0, _getPlySchema.getPLYSchema)(plyHeader, attributes);
17
+ const plyMesh = {
18
18
  loader: 'ply',
19
19
  loaderData: plyHeader,
20
20
  header: {
21
- vertexCount: vertexCount,
22
- boundingBox: boundingBox
21
+ vertexCount,
22
+ boundingBox
23
23
  },
24
- schema: schema,
25
- attributes: attributes,
24
+ schema,
25
+ attributes,
26
26
  indices: {
27
27
  value: new Uint32Array(0),
28
28
  size: 0
29
29
  },
30
- mode: mode,
31
- topology: topology
30
+ mode,
31
+ topology
32
32
  };
33
33
  if (plyAttributes.indices.length > 0) {
34
34
  plyMesh.indices = {
@@ -39,9 +39,8 @@ function normalizePLY(plyHeader, plyAttributes, options) {
39
39
  return plyMesh;
40
40
  }
41
41
  function getMeshAttributes(attributes) {
42
- var accessors = {};
43
- for (var _i = 0, _Object$keys = Object.keys(attributes); _i < _Object$keys.length; _i++) {
44
- var attributeName = _Object$keys[_i];
42
+ const accessors = {};
43
+ for (const attributeName of Object.keys(attributes)) {
45
44
  switch (attributeName) {
46
45
  case 'vertices':
47
46
  if (attributes.vertices.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"normalize-ply.js","names":["_schema","require","_getPlySchema","normalizePLY","plyHeader","plyAttributes","options","attributes","getMeshAttributes","boundingBox","getMeshBoundingBox","vertexCount","indices","length","vertices","isTriangles","mode","topology","schema","getPLYSchema","plyMesh","loader","loaderData","header","value","Uint32Array","size","accessors","_i","_Object$keys","Object","keys","attributeName","POSITION","Float32Array","normals","NORMAL","uvs","TEXCOORD_0","colors","COLOR_0","Uint8Array","normalized"],"sources":["../../../src/lib/normalize-ply.ts"],"sourcesContent":["import type {MeshAttributes} from '@loaders.gl/schema';\nimport {getMeshBoundingBox} from '@loaders.gl/schema';\nimport type {PLYMesh, PLYHeader, PLYAttributes, MeshHeader} from './ply-types';\nimport {getPLYSchema} from './get-ply-schema';\n\n/**\n * @param header\n * @param attributes\n * @returns data and header\n */\nexport default function normalizePLY(\n plyHeader: MeshHeader & PLYHeader,\n plyAttributes: PLYAttributes,\n options?: {}\n): PLYMesh {\n const attributes = getMeshAttributes(plyAttributes);\n const boundingBox = getMeshBoundingBox(attributes);\n const vertexCount = plyAttributes.indices.length || plyAttributes.vertices.length / 3;\n\n // TODO - how to detect POINT CLOUDS vs MESHES?\n // TODO - For Meshes, PLY quadrangles must be split?\n const isTriangles = plyAttributes.indices && plyAttributes.indices.length > 0;\n const mode = isTriangles ? 4 : 0; // TRIANGLES vs POINTS\n const topology = isTriangles ? 'triangle-list' : 'point-list';\n\n const schema = getPLYSchema(plyHeader, attributes);\n\n const plyMesh: PLYMesh = {\n loader: 'ply',\n loaderData: plyHeader,\n header: {\n vertexCount,\n boundingBox\n },\n schema,\n attributes,\n indices: {value: new Uint32Array(0), size: 0},\n mode,\n topology\n };\n\n if (plyAttributes.indices.length > 0) {\n plyMesh.indices = {value: new Uint32Array(plyAttributes.indices), size: 1};\n }\n\n return plyMesh;\n}\n\n/**\n * @param attributes\n * @returns accessors []\n */\n// eslint-disable-next-line complexity\nfunction getMeshAttributes(attributes: PLYAttributes): MeshAttributes {\n const accessors: MeshAttributes = {};\n\n for (const attributeName of Object.keys(attributes)) {\n switch (attributeName) {\n case 'vertices':\n if (attributes.vertices.length > 0) {\n accessors.POSITION = {value: new Float32Array(attributes.vertices), size: 3};\n }\n break;\n\n // optional attributes data\n case 'normals':\n if (attributes.normals.length > 0) {\n accessors.NORMAL = {value: new Float32Array(attributes.normals), size: 3};\n }\n break;\n\n case 'uvs':\n if (attributes.uvs.length > 0) {\n accessors.TEXCOORD_0 = {value: new Float32Array(attributes.uvs), size: 2};\n }\n break;\n\n case 'colors':\n if (attributes.colors.length > 0) {\n // TODO - normalized shoud be based on `uchar` flag in source data?\n accessors.COLOR_0 = {value: new Uint8Array(attributes.colors), size: 3, normalized: true};\n }\n break;\n\n case 'indices':\n break;\n\n default:\n if (attributes[attributeName].length > 0) {\n accessors[attributeName] = {value: new Float32Array(attributes[attributeName]), size: 1};\n }\n break;\n }\n }\n return accessors;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"normalize-ply.js","names":["_schema","require","_getPlySchema","normalizePLY","plyHeader","plyAttributes","options","attributes","getMeshAttributes","boundingBox","getMeshBoundingBox","vertexCount","indices","length","vertices","isTriangles","mode","topology","schema","getPLYSchema","plyMesh","loader","loaderData","header","value","Uint32Array","size","accessors","attributeName","Object","keys","POSITION","Float32Array","normals","NORMAL","uvs","TEXCOORD_0","colors","COLOR_0","Uint8Array","normalized"],"sources":["../../../src/lib/normalize-ply.ts"],"sourcesContent":["import type {MeshAttributes} from '@loaders.gl/schema';\nimport {getMeshBoundingBox} from '@loaders.gl/schema';\nimport type {PLYMesh, PLYHeader, PLYAttributes, MeshHeader} from './ply-types';\nimport {getPLYSchema} from './get-ply-schema';\n\n/**\n * @param header\n * @param attributes\n * @returns data and header\n */\nexport default function normalizePLY(\n plyHeader: MeshHeader & PLYHeader,\n plyAttributes: PLYAttributes,\n options?: {}\n): PLYMesh {\n const attributes = getMeshAttributes(plyAttributes);\n const boundingBox = getMeshBoundingBox(attributes);\n const vertexCount = plyAttributes.indices.length || plyAttributes.vertices.length / 3;\n\n // TODO - how to detect POINT CLOUDS vs MESHES?\n // TODO - For Meshes, PLY quadrangles must be split?\n const isTriangles = plyAttributes.indices && plyAttributes.indices.length > 0;\n const mode = isTriangles ? 4 : 0; // TRIANGLES vs POINTS\n const topology = isTriangles ? 'triangle-list' : 'point-list';\n\n const schema = getPLYSchema(plyHeader, attributes);\n\n const plyMesh: PLYMesh = {\n loader: 'ply',\n loaderData: plyHeader,\n header: {\n vertexCount,\n boundingBox\n },\n schema,\n attributes,\n indices: {value: new Uint32Array(0), size: 0},\n mode,\n topology\n };\n\n if (plyAttributes.indices.length > 0) {\n plyMesh.indices = {value: new Uint32Array(plyAttributes.indices), size: 1};\n }\n\n return plyMesh;\n}\n\n/**\n * @param attributes\n * @returns accessors []\n */\n// eslint-disable-next-line complexity\nfunction getMeshAttributes(attributes: PLYAttributes): MeshAttributes {\n const accessors: MeshAttributes = {};\n\n for (const attributeName of Object.keys(attributes)) {\n switch (attributeName) {\n case 'vertices':\n if (attributes.vertices.length > 0) {\n accessors.POSITION = {value: new Float32Array(attributes.vertices), size: 3};\n }\n break;\n\n // optional attributes data\n case 'normals':\n if (attributes.normals.length > 0) {\n accessors.NORMAL = {value: new Float32Array(attributes.normals), size: 3};\n }\n break;\n\n case 'uvs':\n if (attributes.uvs.length > 0) {\n accessors.TEXCOORD_0 = {value: new Float32Array(attributes.uvs), size: 2};\n }\n break;\n\n case 'colors':\n if (attributes.colors.length > 0) {\n // TODO - normalized shoud be based on `uchar` flag in source data?\n accessors.COLOR_0 = {value: new Uint8Array(attributes.colors), size: 3, normalized: true};\n }\n break;\n\n case 'indices':\n break;\n\n default:\n if (attributes[attributeName].length > 0) {\n accessors[attributeName] = {value: new Float32Array(attributes[attributeName]), size: 1};\n }\n break;\n }\n }\n return accessors;\n}\n"],"mappings":"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"}
@@ -5,217 +5,112 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.parsePLYInBatches = parsePLYInBatches;
8
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
- var _awaitAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/awaitAsyncGenerator"));
11
- var _wrapAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapAsyncGenerator"));
12
8
  var _loaderUtils = require("@loaders.gl/loader-utils");
13
9
  var _normalizePly = _interopRequireDefault(require("./normalize-ply"));
14
- function _asyncIterator(iterable) { var method, async, sync, retry = 2; for ("undefined" != typeof Symbol && (async = Symbol.asyncIterator, sync = Symbol.iterator); retry--;) { if (async && null != (method = iterable[async])) return method.call(iterable); if (sync && null != (method = iterable[sync])) return new AsyncFromSyncIterator(method.call(iterable)); async = "@@asyncIterator", sync = "@@iterator"; } throw new TypeError("Object is not async iterable"); }
15
- function AsyncFromSyncIterator(s) { function AsyncFromSyncIteratorContinuation(r) { if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object.")); var done = r.done; return Promise.resolve(r.value).then(function (value) { return { value: value, done: done }; }); } return AsyncFromSyncIterator = function AsyncFromSyncIterator(s) { this.s = s, this.n = s.next; }, AsyncFromSyncIterator.prototype = { s: null, n: null, next: function next() { return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments)); }, return: function _return(value) { var ret = this.s.return; return void 0 === ret ? Promise.resolve({ value: value, done: !0 }) : AsyncFromSyncIteratorContinuation(ret.apply(this.s, arguments)); }, throw: function _throw(value) { var thr = this.s.return; return void 0 === thr ? Promise.reject(value) : AsyncFromSyncIteratorContinuation(thr.apply(this.s, arguments)); } }, new AsyncFromSyncIterator(s); }
16
- var currentElement;
17
- function parsePLYInBatches(_x, _x2) {
18
- return _parsePLYInBatches.apply(this, arguments);
19
- }
20
- function _parsePLYInBatches() {
21
- _parsePLYInBatches = (0, _wrapAsyncGenerator2.default)(_regenerator.default.mark(function _callee(iterator, options) {
22
- var lineIterator, header, attributes;
23
- return _regenerator.default.wrap(function _callee$(_context) {
24
- while (1) switch (_context.prev = _context.next) {
25
- case 0:
26
- lineIterator = (0, _loaderUtils.makeLineIterator)((0, _loaderUtils.makeTextDecoderIterator)(iterator));
27
- _context.next = 3;
28
- return (0, _awaitAsyncGenerator2.default)(parsePLYHeader(lineIterator, options));
29
- case 3:
30
- header = _context.sent;
31
- _context.t0 = header.format;
32
- _context.next = _context.t0 === 'ascii' ? 7 : 11;
33
- break;
34
- case 7:
35
- _context.next = 9;
36
- return (0, _awaitAsyncGenerator2.default)(parseASCII(lineIterator, header));
37
- case 9:
38
- attributes = _context.sent;
39
- return _context.abrupt("break", 12);
40
- case 11:
41
- throw new Error('Binary PLY can not yet be parsed in streaming mode');
42
- case 12:
43
- _context.next = 14;
44
- return (0, _normalizePly.default)(header, attributes, options);
45
- case 14:
46
- case "end":
47
- return _context.stop();
48
- }
49
- }, _callee);
50
- }));
51
- return _parsePLYInBatches.apply(this, arguments);
52
- }
53
- function parsePLYHeader(_x3, _x4) {
54
- return _parsePLYHeader.apply(this, arguments);
10
+ let currentElement;
11
+ async function* parsePLYInBatches(iterator, options) {
12
+ const lineIterator = (0, _loaderUtils.makeLineIterator)((0, _loaderUtils.makeTextDecoderIterator)(iterator));
13
+ const header = await parsePLYHeader(lineIterator, options);
14
+ let attributes;
15
+ switch (header.format) {
16
+ case 'ascii':
17
+ attributes = await parseASCII(lineIterator, header);
18
+ break;
19
+ default:
20
+ throw new Error('Binary PLY can not yet be parsed in streaming mode');
21
+ }
22
+ yield (0, _normalizePly.default)(header, attributes, options);
55
23
  }
56
- function _parsePLYHeader() {
57
- _parsePLYHeader = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(lineIterator, options) {
58
- var header;
59
- return _regenerator.default.wrap(function _callee2$(_context2) {
60
- while (1) switch (_context2.prev = _context2.next) {
61
- case 0:
62
- header = {
63
- comments: [],
64
- elements: []
65
- };
66
- _context2.next = 3;
67
- return (0, _loaderUtils.forEach)(lineIterator, function (line) {
68
- line = line.trim();
69
- if (line === 'end_header') {
70
- return true;
71
- }
72
- if (line === '') {
73
- return false;
74
- }
75
- var lineValues = line.split(/\s+/);
76
- var lineType = lineValues.shift();
77
- line = lineValues.join(' ');
78
- switch (lineType) {
79
- case 'ply':
80
- break;
81
- case 'format':
82
- header.format = lineValues[0];
83
- header.version = lineValues[1];
84
- break;
85
- case 'comment':
86
- header.comments.push(line);
87
- break;
88
- case 'element':
89
- if (currentElement) {
90
- header.elements.push(currentElement);
91
- }
92
- currentElement = {
93
- name: lineValues[0],
94
- count: parseInt(lineValues[1], 10),
95
- properties: []
96
- };
97
- break;
98
- case 'property':
99
- var property = makePLYElementProperty(lineValues, options.propertyNameMapping);
100
- currentElement.properties.push(property);
101
- break;
102
- default:
103
- console.log('unhandled', lineType, lineValues);
104
- }
105
- return false;
106
- });
107
- case 3:
108
- if (currentElement) {
109
- header.elements.push(currentElement);
110
- }
111
- return _context2.abrupt("return", header);
112
- case 5:
113
- case "end":
114
- return _context2.stop();
115
- }
116
- }, _callee2);
117
- }));
118
- return _parsePLYHeader.apply(this, arguments);
24
+ async function parsePLYHeader(lineIterator, options) {
25
+ const header = {
26
+ comments: [],
27
+ elements: []
28
+ };
29
+ await (0, _loaderUtils.forEach)(lineIterator, line => {
30
+ line = line.trim();
31
+ if (line === 'end_header') {
32
+ return true;
33
+ }
34
+ if (line === '') {
35
+ return false;
36
+ }
37
+ const lineValues = line.split(/\s+/);
38
+ const lineType = lineValues.shift();
39
+ line = lineValues.join(' ');
40
+ switch (lineType) {
41
+ case 'ply':
42
+ break;
43
+ case 'format':
44
+ header.format = lineValues[0];
45
+ header.version = lineValues[1];
46
+ break;
47
+ case 'comment':
48
+ header.comments.push(line);
49
+ break;
50
+ case 'element':
51
+ if (currentElement) {
52
+ header.elements.push(currentElement);
53
+ }
54
+ currentElement = {
55
+ name: lineValues[0],
56
+ count: parseInt(lineValues[1], 10),
57
+ properties: []
58
+ };
59
+ break;
60
+ case 'property':
61
+ const property = makePLYElementProperty(lineValues, options.propertyNameMapping);
62
+ currentElement.properties.push(property);
63
+ break;
64
+ default:
65
+ console.log('unhandled', lineType, lineValues);
66
+ }
67
+ return false;
68
+ });
69
+ if (currentElement) {
70
+ header.elements.push(currentElement);
71
+ }
72
+ return header;
119
73
  }
120
74
  function makePLYElementProperty(propertyValues, propertyNameMapping) {
121
- var type = propertyValues[0];
75
+ const type = propertyValues[0];
122
76
  switch (type) {
123
77
  case 'list':
124
78
  return {
125
- type: type,
79
+ type,
126
80
  name: propertyValues[3],
127
81
  countType: propertyValues[1],
128
82
  itemType: propertyValues[2]
129
83
  };
130
84
  default:
131
85
  return {
132
- type: type,
86
+ type,
133
87
  name: propertyValues[1]
134
88
  };
135
89
  }
136
90
  }
137
- function parseASCII(_x5, _x6) {
138
- return _parseASCII.apply(this, arguments);
139
- }
140
- function _parseASCII() {
141
- _parseASCII = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(lineIterator, header) {
142
- var attributes, currentElement, currentElementCount, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, line, element;
143
- return _regenerator.default.wrap(function _callee3$(_context3) {
144
- while (1) switch (_context3.prev = _context3.next) {
145
- case 0:
146
- attributes = {
147
- indices: [],
148
- vertices: [],
149
- normals: [],
150
- uvs: [],
151
- colors: []
152
- };
153
- currentElement = 0;
154
- currentElementCount = 0;
155
- _iteratorAbruptCompletion = false;
156
- _didIteratorError = false;
157
- _context3.prev = 5;
158
- _iterator = _asyncIterator(lineIterator);
159
- case 7:
160
- _context3.next = 9;
161
- return _iterator.next();
162
- case 9:
163
- if (!(_iteratorAbruptCompletion = !(_step = _context3.sent).done)) {
164
- _context3.next = 16;
165
- break;
166
- }
167
- line = _step.value;
168
- line = line.trim();
169
- if (line !== '') {
170
- if (currentElementCount >= header.elements[currentElement].count) {
171
- currentElement++;
172
- currentElementCount = 0;
173
- }
174
- element = parsePLYElement(header.elements[currentElement].properties, line);
175
- handleElement(attributes, header.elements[currentElement].name, element);
176
- currentElementCount++;
177
- }
178
- case 13:
179
- _iteratorAbruptCompletion = false;
180
- _context3.next = 7;
181
- break;
182
- case 16:
183
- _context3.next = 22;
184
- break;
185
- case 18:
186
- _context3.prev = 18;
187
- _context3.t0 = _context3["catch"](5);
188
- _didIteratorError = true;
189
- _iteratorError = _context3.t0;
190
- case 22:
191
- _context3.prev = 22;
192
- _context3.prev = 23;
193
- if (!(_iteratorAbruptCompletion && _iterator.return != null)) {
194
- _context3.next = 27;
195
- break;
196
- }
197
- _context3.next = 27;
198
- return _iterator.return();
199
- case 27:
200
- _context3.prev = 27;
201
- if (!_didIteratorError) {
202
- _context3.next = 30;
203
- break;
204
- }
205
- throw _iteratorError;
206
- case 30:
207
- return _context3.finish(27);
208
- case 31:
209
- return _context3.finish(22);
210
- case 32:
211
- return _context3.abrupt("return", attributes);
212
- case 33:
213
- case "end":
214
- return _context3.stop();
91
+ async function parseASCII(lineIterator, header) {
92
+ const attributes = {
93
+ indices: [],
94
+ vertices: [],
95
+ normals: [],
96
+ uvs: [],
97
+ colors: []
98
+ };
99
+ let currentElement = 0;
100
+ let currentElementCount = 0;
101
+ for await (let line of lineIterator) {
102
+ line = line.trim();
103
+ if (line !== '') {
104
+ if (currentElementCount >= header.elements[currentElement].count) {
105
+ currentElement++;
106
+ currentElementCount = 0;
215
107
  }
216
- }, _callee3, null, [[5, 18, 22, 32], [23,, 27, 31]]);
217
- }));
218
- return _parseASCII.apply(this, arguments);
108
+ const element = parsePLYElement(header.elements[currentElement].properties, line);
109
+ handleElement(attributes, header.elements[currentElement].name, element);
110
+ currentElementCount++;
111
+ }
112
+ }
113
+ return attributes;
219
114
  }
220
115
  function parseASCIINumber(n, type) {
221
116
  switch (type) {
@@ -242,13 +137,13 @@ function parseASCIINumber(n, type) {
242
137
  }
243
138
  }
244
139
  function parsePLYElement(properties, line) {
245
- var values = line.split(/\s+/);
246
- var element = {};
247
- for (var i = 0; i < properties.length; i++) {
140
+ const values = line.split(/\s+/);
141
+ const element = {};
142
+ for (let i = 0; i < properties.length; i++) {
248
143
  if (properties[i].type === 'list') {
249
- var list = [];
250
- var n = parseASCIINumber(values.shift(), properties[i].countType);
251
- for (var j = 0; j < n; j++) {
144
+ const list = [];
145
+ const n = parseASCIINumber(values.shift(), properties[i].countType);
146
+ for (let j = 0; j < n; j++) {
252
147
  list.push(parseASCIINumber(values.shift(), properties[i].itemType));
253
148
  }
254
149
  element[properties[i].name] = list;
@@ -259,7 +154,7 @@ function parsePLYElement(properties, line) {
259
154
  return element;
260
155
  }
261
156
  function handleElement(buffer, elementName) {
262
- var element = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
157
+ let element = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
263
158
  switch (elementName) {
264
159
  case 'vertex':
265
160
  buffer.vertices.push(element.x, element.y, element.z);
@@ -274,7 +169,7 @@ function handleElement(buffer, elementName) {
274
169
  }
275
170
  break;
276
171
  case 'face':
277
- var vertexIndices = element.vertex_indices || element.vertex_index;
172
+ const vertexIndices = element.vertex_indices || element.vertex_index;
278
173
  if (vertexIndices.length === 3) {
279
174
  buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[2]);
280
175
  } else if (vertexIndices.length === 4) {
@@ -1 +1 @@
1
- {"version":3,"file":"parse-ply-in-batches.js","names":["_loaderUtils","require","_normalizePly","_interopRequireDefault","_asyncIterator","iterable","method","async","sync","retry","Symbol","asyncIterator","iterator","call","AsyncFromSyncIterator","TypeError","s","AsyncFromSyncIteratorContinuation","r","Object","Promise","reject","done","resolve","value","then","n","next","prototype","apply","arguments","return","_return","ret","throw","_throw","thr","currentElement","parsePLYInBatches","_x","_x2","_parsePLYInBatches","_wrapAsyncGenerator2","default","_regenerator","mark","_callee","options","lineIterator","header","attributes","wrap","_callee$","_context","prev","makeLineIterator","makeTextDecoderIterator","_awaitAsyncGenerator2","parsePLYHeader","sent","t0","format","parseASCII","abrupt","Error","normalizePLY","stop","_x3","_x4","_parsePLYHeader","_asyncToGenerator2","_callee2","_callee2$","_context2","comments","elements","forEach","line","trim","lineValues","split","lineType","shift","join","version","push","name","count","parseInt","properties","property","makePLYElementProperty","propertyNameMapping","console","log","propertyValues","type","countType","itemType","_x5","_x6","_parseASCII","_callee3","currentElementCount","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_iterator","_step","element","_callee3$","_context3","indices","vertices","normals","uvs","colors","parsePLYElement","handleElement","finish","parseASCIINumber","parseFloat","values","i","length","list","j","buffer","elementName","undefined","x","y","z","nx","ny","nz","t","red","green","blue","vertexIndices","vertex_indices","vertex_index"],"sources":["../../../src/lib/parse-ply-in-batches.ts"],"sourcesContent":["// PLY Loader, adapted from THREE.js (MIT license)\n//\n// Attributions per original THREE.js source file:\n//\n// @author Wei Meng / http://about.me/menway\n//\n// Description: A loader for PLY ASCII files (known as the Polygon File Format\n// or the Stanford Triangle Format).\n//\n// Limitations: ASCII decoding assumes file is UTF-8.\n//\n// If the PLY file uses non standard property names, they can be mapped while\n// loading. For example, the following maps the properties\n// “diffuse_(red|green|blue)” in the file to standard color names.\n//\n// parsePLY(data, {\n// propertyNameMapping: {\n// diffuse_red: 'red',\n// diffuse_green: 'green',\n// diffuse_blue: 'blue'\n// }\n// });\n\nimport {makeLineIterator, makeTextDecoderIterator, forEach} from '@loaders.gl/loader-utils';\nimport normalizePLY from './normalize-ply';\nimport {PLYMesh, PLYHeader, PLYElement, PLYProperty, PLYAttributes} from './ply-types';\n\nlet currentElement: PLYElement;\n\n/**\n * PARSER\n * @param iterator\n * @param options\n */\nexport async function* parsePLYInBatches(\n iterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>,\n options: any\n): AsyncIterable<PLYMesh> {\n const lineIterator = makeLineIterator(makeTextDecoderIterator(iterator));\n const header = await parsePLYHeader(lineIterator, options);\n\n let attributes: PLYAttributes;\n switch (header.format) {\n case 'ascii':\n attributes = await parseASCII(lineIterator, header);\n break;\n default:\n throw new Error('Binary PLY can not yet be parsed in streaming mode');\n // attributes = await parseBinary(lineIterator, header);\n }\n\n yield normalizePLY(header, attributes, options);\n}\n\n/**\n * Parses header\n * @param lineIterator\n * @param options\n * @returns\n */\nasync function parsePLYHeader(\n lineIterator: AsyncIterable<string> | Iterable<string>,\n options: {[key: string]: any}\n): Promise<PLYHeader> {\n const header: PLYHeader = {\n comments: [],\n elements: []\n // headerLength\n };\n\n // Note: forEach does not reset iterator if exiting loop prematurely\n // so that iteration can continue in a second loop\n await forEach(lineIterator, (line: string) => {\n line = line.trim();\n\n // End of header\n if (line === 'end_header') {\n return true; // Returning true cancels `forEach`\n }\n\n // Ignore empty lines\n if (line === '') {\n // eslint-disable-next-line\n return false; // Returning false does not cancel `forEach`\n }\n\n const lineValues = line.split(/\\s+/);\n const lineType = lineValues.shift();\n line = lineValues.join(' ');\n\n switch (lineType) {\n case 'ply':\n // First line magic characters, ignore\n break;\n\n case 'format':\n header.format = lineValues[0];\n header.version = lineValues[1];\n break;\n\n case 'comment':\n header.comments.push(line);\n break;\n\n case 'element':\n if (currentElement) {\n header.elements.push(currentElement);\n }\n\n currentElement = {\n name: lineValues[0],\n count: parseInt(lineValues[1], 10),\n properties: []\n };\n break;\n\n case 'property':\n const property = makePLYElementProperty(lineValues, options.propertyNameMapping);\n currentElement.properties.push(property);\n break;\n\n default:\n // eslint-disable-next-line\n console.log('unhandled', lineType, lineValues);\n }\n\n return false;\n });\n\n if (currentElement) {\n header.elements.push(currentElement);\n }\n\n return header;\n}\n\nfunction makePLYElementProperty(propertyValues: string[], propertyNameMapping: []): PLYProperty {\n const type = propertyValues[0];\n switch (type) {\n case 'list':\n return {\n type,\n name: propertyValues[3],\n countType: propertyValues[1],\n itemType: propertyValues[2]\n };\n default:\n return {\n type,\n name: propertyValues[1]\n };\n }\n}\n\n// ASCII PARSING\n/**\n * @param lineIterator\n * @param header\n * @returns\n */\nasync function parseASCII(lineIterator: AsyncIterable<string>, header: PLYHeader) {\n // PLY ascii format specification, as per http://en.wikipedia.org/wiki/PLY_(file_format)\n const attributes: PLYAttributes = {\n indices: [],\n vertices: [],\n normals: [],\n uvs: [],\n colors: []\n };\n\n let currentElement = 0;\n let currentElementCount = 0;\n\n for await (let line of lineIterator) {\n line = line.trim();\n\n if (line !== '') {\n if (currentElementCount >= header.elements[currentElement].count) {\n currentElement++;\n currentElementCount = 0;\n }\n\n const element = parsePLYElement(header.elements[currentElement].properties, line);\n handleElement(attributes, header.elements[currentElement].name, element);\n currentElementCount++;\n }\n }\n\n return attributes;\n}\n/**\n * Parses ASCII number\n * @param n\n * @param type\n * @returns ASCII number\n */\n// eslint-disable-next-line complexity\nfunction parseASCIINumber(n: string, type: string): number {\n switch (type) {\n case 'char':\n case 'uchar':\n case 'short':\n case 'ushort':\n case 'int':\n case 'uint':\n case 'int8':\n case 'uint8':\n case 'int16':\n case 'uint16':\n case 'int32':\n case 'uint32':\n return parseInt(n, 10);\n\n case 'float':\n case 'double':\n case 'float32':\n case 'float64':\n return parseFloat(n);\n\n default:\n throw new Error(type);\n }\n}\n/**\n * Parses ASCII element\n * @param properties\n * @param line\n * @returns element\n */\nfunction parsePLYElement(properties: any[], line: string) {\n const values: any = line.split(/\\s+/);\n\n const element = {};\n\n for (let i = 0; i < properties.length; i++) {\n if (properties[i].type === 'list') {\n const list: any = [];\n const n = parseASCIINumber(values.shift(), properties[i].countType);\n\n for (let j = 0; j < n; j++) {\n list.push(parseASCIINumber(values.shift(), properties[i].itemType));\n }\n\n element[properties[i].name] = list;\n } else {\n element[properties[i].name] = parseASCIINumber(values.shift(), properties[i].type);\n }\n }\n\n return element;\n}\n/**\n * @param buffer\n * @param elementName\n * @param element\n */\n// HELPER FUNCTIONS\n// eslint-disable-next-line complexity\nfunction handleElement(\n buffer: {[index: string]: number[]},\n elementName: string,\n element: any = {}\n) {\n switch (elementName) {\n case 'vertex':\n buffer.vertices.push(element.x, element.y, element.z);\n if ('nx' in element && 'ny' in element && 'nz' in element) {\n buffer.normals.push(element.nx, element.ny, element.nz);\n }\n if ('s' in element && 't' in element) {\n buffer.uvs.push(element.s, element.t);\n }\n if ('red' in element && 'green' in element && 'blue' in element) {\n buffer.colors.push(element.red / 255.0, element.green / 255.0, element.blue / 255.0);\n }\n break;\n\n case 'face':\n const vertexIndices = element.vertex_indices || element.vertex_index; // issue #9338\n if (vertexIndices.length === 3) {\n buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[2]);\n } else if (vertexIndices.length === 4) {\n buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[3]);\n buffer.indices.push(vertexIndices[1], vertexIndices[2], vertexIndices[3]);\n }\n break;\n\n default:\n break;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parse-ply-in-batches.js","names":["_loaderUtils","require","_normalizePly","_interopRequireDefault","currentElement","parsePLYInBatches","iterator","options","lineIterator","makeLineIterator","makeTextDecoderIterator","header","parsePLYHeader","attributes","format","parseASCII","Error","normalizePLY","comments","elements","forEach","line","trim","lineValues","split","lineType","shift","join","version","push","name","count","parseInt","properties","property","makePLYElementProperty","propertyNameMapping","console","log","propertyValues","type","countType","itemType","indices","vertices","normals","uvs","colors","currentElementCount","element","parsePLYElement","handleElement","parseASCIINumber","n","parseFloat","values","i","length","list","j","buffer","elementName","arguments","undefined","x","y","z","nx","ny","nz","s","t","red","green","blue","vertexIndices","vertex_indices","vertex_index"],"sources":["../../../src/lib/parse-ply-in-batches.ts"],"sourcesContent":["// PLY Loader, adapted from THREE.js (MIT license)\n//\n// Attributions per original THREE.js source file:\n//\n// @author Wei Meng / http://about.me/menway\n//\n// Description: A loader for PLY ASCII files (known as the Polygon File Format\n// or the Stanford Triangle Format).\n//\n// Limitations: ASCII decoding assumes file is UTF-8.\n//\n// If the PLY file uses non standard property names, they can be mapped while\n// loading. For example, the following maps the properties\n// “diffuse_(red|green|blue)” in the file to standard color names.\n//\n// parsePLY(data, {\n// propertyNameMapping: {\n// diffuse_red: 'red',\n// diffuse_green: 'green',\n// diffuse_blue: 'blue'\n// }\n// });\n\nimport {makeLineIterator, makeTextDecoderIterator, forEach} from '@loaders.gl/loader-utils';\nimport normalizePLY from './normalize-ply';\nimport {PLYMesh, PLYHeader, PLYElement, PLYProperty, PLYAttributes} from './ply-types';\n\nlet currentElement: PLYElement;\n\n/**\n * PARSER\n * @param iterator\n * @param options\n */\nexport async function* parsePLYInBatches(\n iterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>,\n options: any\n): AsyncIterable<PLYMesh> {\n const lineIterator = makeLineIterator(makeTextDecoderIterator(iterator));\n const header = await parsePLYHeader(lineIterator, options);\n\n let attributes: PLYAttributes;\n switch (header.format) {\n case 'ascii':\n attributes = await parseASCII(lineIterator, header);\n break;\n default:\n throw new Error('Binary PLY can not yet be parsed in streaming mode');\n // attributes = await parseBinary(lineIterator, header);\n }\n\n yield normalizePLY(header, attributes, options);\n}\n\n/**\n * Parses header\n * @param lineIterator\n * @param options\n * @returns\n */\nasync function parsePLYHeader(\n lineIterator: AsyncIterable<string> | Iterable<string>,\n options: {[key: string]: any}\n): Promise<PLYHeader> {\n const header: PLYHeader = {\n comments: [],\n elements: []\n // headerLength\n };\n\n // Note: forEach does not reset iterator if exiting loop prematurely\n // so that iteration can continue in a second loop\n await forEach(lineIterator, (line: string) => {\n line = line.trim();\n\n // End of header\n if (line === 'end_header') {\n return true; // Returning true cancels `forEach`\n }\n\n // Ignore empty lines\n if (line === '') {\n // eslint-disable-next-line\n return false; // Returning false does not cancel `forEach`\n }\n\n const lineValues = line.split(/\\s+/);\n const lineType = lineValues.shift();\n line = lineValues.join(' ');\n\n switch (lineType) {\n case 'ply':\n // First line magic characters, ignore\n break;\n\n case 'format':\n header.format = lineValues[0];\n header.version = lineValues[1];\n break;\n\n case 'comment':\n header.comments.push(line);\n break;\n\n case 'element':\n if (currentElement) {\n header.elements.push(currentElement);\n }\n\n currentElement = {\n name: lineValues[0],\n count: parseInt(lineValues[1], 10),\n properties: []\n };\n break;\n\n case 'property':\n const property = makePLYElementProperty(lineValues, options.propertyNameMapping);\n currentElement.properties.push(property);\n break;\n\n default:\n // eslint-disable-next-line\n console.log('unhandled', lineType, lineValues);\n }\n\n return false;\n });\n\n if (currentElement) {\n header.elements.push(currentElement);\n }\n\n return header;\n}\n\nfunction makePLYElementProperty(propertyValues: string[], propertyNameMapping: []): PLYProperty {\n const type = propertyValues[0];\n switch (type) {\n case 'list':\n return {\n type,\n name: propertyValues[3],\n countType: propertyValues[1],\n itemType: propertyValues[2]\n };\n default:\n return {\n type,\n name: propertyValues[1]\n };\n }\n}\n\n// ASCII PARSING\n/**\n * @param lineIterator\n * @param header\n * @returns\n */\nasync function parseASCII(lineIterator: AsyncIterable<string>, header: PLYHeader) {\n // PLY ascii format specification, as per http://en.wikipedia.org/wiki/PLY_(file_format)\n const attributes: PLYAttributes = {\n indices: [],\n vertices: [],\n normals: [],\n uvs: [],\n colors: []\n };\n\n let currentElement = 0;\n let currentElementCount = 0;\n\n for await (let line of lineIterator) {\n line = line.trim();\n\n if (line !== '') {\n if (currentElementCount >= header.elements[currentElement].count) {\n currentElement++;\n currentElementCount = 0;\n }\n\n const element = parsePLYElement(header.elements[currentElement].properties, line);\n handleElement(attributes, header.elements[currentElement].name, element);\n currentElementCount++;\n }\n }\n\n return attributes;\n}\n/**\n * Parses ASCII number\n * @param n\n * @param type\n * @returns ASCII number\n */\n// eslint-disable-next-line complexity\nfunction parseASCIINumber(n: string, type: string): number {\n switch (type) {\n case 'char':\n case 'uchar':\n case 'short':\n case 'ushort':\n case 'int':\n case 'uint':\n case 'int8':\n case 'uint8':\n case 'int16':\n case 'uint16':\n case 'int32':\n case 'uint32':\n return parseInt(n, 10);\n\n case 'float':\n case 'double':\n case 'float32':\n case 'float64':\n return parseFloat(n);\n\n default:\n throw new Error(type);\n }\n}\n/**\n * Parses ASCII element\n * @param properties\n * @param line\n * @returns element\n */\nfunction parsePLYElement(properties: any[], line: string) {\n const values: any = line.split(/\\s+/);\n\n const element = {};\n\n for (let i = 0; i < properties.length; i++) {\n if (properties[i].type === 'list') {\n const list: any = [];\n const n = parseASCIINumber(values.shift(), properties[i].countType);\n\n for (let j = 0; j < n; j++) {\n list.push(parseASCIINumber(values.shift(), properties[i].itemType));\n }\n\n element[properties[i].name] = list;\n } else {\n element[properties[i].name] = parseASCIINumber(values.shift(), properties[i].type);\n }\n }\n\n return element;\n}\n/**\n * @param buffer\n * @param elementName\n * @param element\n */\n// HELPER FUNCTIONS\n// eslint-disable-next-line complexity\nfunction handleElement(\n buffer: {[index: string]: number[]},\n elementName: string,\n element: any = {}\n) {\n switch (elementName) {\n case 'vertex':\n buffer.vertices.push(element.x, element.y, element.z);\n if ('nx' in element && 'ny' in element && 'nz' in element) {\n buffer.normals.push(element.nx, element.ny, element.nz);\n }\n if ('s' in element && 't' in element) {\n buffer.uvs.push(element.s, element.t);\n }\n if ('red' in element && 'green' in element && 'blue' in element) {\n buffer.colors.push(element.red / 255.0, element.green / 255.0, element.blue / 255.0);\n }\n break;\n\n case 'face':\n const vertexIndices = element.vertex_indices || element.vertex_index; // issue #9338\n if (vertexIndices.length === 3) {\n buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[2]);\n } else if (vertexIndices.length === 4) {\n buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[3]);\n buffer.indices.push(vertexIndices[1], vertexIndices[2], vertexIndices[3]);\n }\n break;\n\n default:\n break;\n }\n}\n"],"mappings":"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"}
@@ -6,15 +6,12 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.parsePLY = parsePLY;
8
8
  var _normalizePly = _interopRequireDefault(require("./normalize-ply"));
9
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
10
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
11
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
12
9
  function parsePLY(data) {
13
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
14
- var header;
15
- var attributes;
10
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
11
+ let header;
12
+ let attributes;
16
13
  if (data instanceof ArrayBuffer) {
17
- var text = new TextDecoder().decode(data);
14
+ const text = new TextDecoder().decode(data);
18
15
  header = parseHeader(text, options);
19
16
  attributes = header.format === 'ascii' ? parseASCII(text, header) : parseBinary(data, header);
20
17
  } else {
@@ -24,29 +21,29 @@ function parsePLY(data) {
24
21
  return (0, _normalizePly.default)(header, attributes);
25
22
  }
26
23
  function parseHeader(data, options) {
27
- var PLY_HEADER_PATTERN = /ply([\s\S]*)end_header\s/;
28
- var headerText = '';
29
- var headerLength = 0;
30
- var result = PLY_HEADER_PATTERN.exec(data);
24
+ const PLY_HEADER_PATTERN = /ply([\s\S]*)end_header\s/;
25
+ let headerText = '';
26
+ let headerLength = 0;
27
+ const result = PLY_HEADER_PATTERN.exec(data);
31
28
  if (result !== null) {
32
29
  headerText = result[1];
33
30
  headerLength = result[0].length;
34
31
  }
35
- var lines = headerText.split('\n');
36
- var header = parseHeaderLines(lines, headerLength, options);
32
+ const lines = headerText.split('\n');
33
+ const header = parseHeaderLines(lines, headerLength, options);
37
34
  return header;
38
35
  }
39
36
  function parseHeaderLines(lines, headerLength, options) {
40
- var header = {
37
+ const header = {
41
38
  comments: [],
42
39
  elements: [],
43
- headerLength: headerLength
40
+ headerLength
44
41
  };
45
- var lineType;
46
- var lineValues;
47
- var currentElement = null;
48
- for (var i = 0; i < lines.length; i++) {
49
- var line = lines[i];
42
+ let lineType;
43
+ let lineValues;
44
+ let currentElement = null;
45
+ for (let i = 0; i < lines.length; i++) {
46
+ let line = lines[i];
50
47
  line = line.trim();
51
48
  if (line === '') {
52
49
  continue;
@@ -74,7 +71,7 @@ function parseHeaderLines(lines, headerLength, options) {
74
71
  break;
75
72
  case 'property':
76
73
  if (currentElement) {
77
- var property = makePLYElementProperty(lineValues);
74
+ const property = makePLYElementProperty(lineValues);
78
75
  if (options !== null && options !== void 0 && options.propertyNameMapping && property.name in (options === null || options === void 0 ? void 0 : options.propertyNameMapping)) {
79
76
  property.name = options === null || options === void 0 ? void 0 : options.propertyNameMapping[property.name];
80
77
  }
@@ -91,69 +88,51 @@ function parseHeaderLines(lines, headerLength, options) {
91
88
  return header;
92
89
  }
93
90
  function getPLYAttributes(header) {
94
- var attributes = {
91
+ const attributes = {
95
92
  indices: [],
96
93
  vertices: [],
97
94
  normals: [],
98
95
  uvs: [],
99
96
  colors: []
100
97
  };
101
- var _iterator = _createForOfIteratorHelper(header.elements),
102
- _step;
103
- try {
104
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
105
- var element = _step.value;
106
- if (element.name === 'vertex') {
107
- var _iterator2 = _createForOfIteratorHelper(element.properties),
108
- _step2;
109
- try {
110
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
111
- var property = _step2.value;
112
- switch (property.name) {
113
- case 'x':
114
- case 'y':
115
- case 'z':
116
- case 'nx':
117
- case 'ny':
118
- case 'nz':
119
- case 's':
120
- case 't':
121
- case 'red':
122
- case 'green':
123
- case 'blue':
124
- break;
125
- default:
126
- attributes[property.name] = [];
127
- break;
128
- }
129
- }
130
- } catch (err) {
131
- _iterator2.e(err);
132
- } finally {
133
- _iterator2.f();
98
+ for (const element of header.elements) {
99
+ if (element.name === 'vertex') {
100
+ for (const property of element.properties) {
101
+ switch (property.name) {
102
+ case 'x':
103
+ case 'y':
104
+ case 'z':
105
+ case 'nx':
106
+ case 'ny':
107
+ case 'nz':
108
+ case 's':
109
+ case 't':
110
+ case 'red':
111
+ case 'green':
112
+ case 'blue':
113
+ break;
114
+ default:
115
+ attributes[property.name] = [];
116
+ break;
134
117
  }
135
118
  }
136
119
  }
137
- } catch (err) {
138
- _iterator.e(err);
139
- } finally {
140
- _iterator.f();
141
120
  }
142
121
  return attributes;
143
122
  }
144
123
  function makePLYElementProperty(propertyValues) {
145
- var type = propertyValues[0];
124
+ const type = propertyValues[0];
146
125
  switch (type) {
147
126
  case 'list':
148
127
  return {
149
- type: type,
128
+ type,
150
129
  name: propertyValues[3],
151
130
  countType: propertyValues[1],
152
131
  itemType: propertyValues[2]
153
132
  };
154
133
  default:
155
134
  return {
156
- type: type,
135
+ type,
157
136
  name: propertyValues[1]
158
137
  };
159
138
  }
@@ -183,13 +162,13 @@ function parseASCIINumber(n, type) {
183
162
  }
184
163
  }
185
164
  function parsePLYElement(properties, line) {
186
- var values = line.split(/\s+/);
187
- var element = {};
188
- for (var i = 0; i < properties.length; i++) {
165
+ const values = line.split(/\s+/);
166
+ const element = {};
167
+ for (let i = 0; i < properties.length; i++) {
189
168
  if (properties[i].type === 'list') {
190
- var list = [];
191
- var n = parseASCIINumber(values.shift(), properties[i].countType);
192
- for (var j = 0; j < n; j++) {
169
+ const list = [];
170
+ const n = parseASCIINumber(values.shift(), properties[i].countType);
171
+ for (let j = 0; j < n; j++) {
193
172
  list.push(parseASCIINumber(values.shift(), properties[i].itemType));
194
173
  }
195
174
  element[properties[i].name] = list;
@@ -200,25 +179,25 @@ function parsePLYElement(properties, line) {
200
179
  return element;
201
180
  }
202
181
  function parseASCII(data, header) {
203
- var attributes = getPLYAttributes(header);
204
- var result;
205
- var patternBody = /end_header\s([\s\S]*)$/;
206
- var body = '';
182
+ const attributes = getPLYAttributes(header);
183
+ let result;
184
+ const patternBody = /end_header\s([\s\S]*)$/;
185
+ let body = '';
207
186
  if ((result = patternBody.exec(data)) !== null) {
208
187
  body = result[1];
209
188
  }
210
- var lines = body.split('\n');
211
- var currentElement = 0;
212
- var currentElementCount = 0;
213
- for (var i = 0; i < lines.length; i++) {
214
- var line = lines[i];
189
+ const lines = body.split('\n');
190
+ let currentElement = 0;
191
+ let currentElementCount = 0;
192
+ for (let i = 0; i < lines.length; i++) {
193
+ let line = lines[i];
215
194
  line = line.trim();
216
195
  if (line !== '') {
217
196
  if (currentElementCount >= header.elements[currentElement].count) {
218
197
  currentElement++;
219
198
  currentElementCount = 0;
220
199
  }
221
- var element = parsePLYElement(header.elements[currentElement].properties, line);
200
+ const element = parsePLYElement(header.elements[currentElement].properties, line);
222
201
  handleElement(attributes, header.elements[currentElement].name, element);
223
202
  currentElementCount++;
224
203
  }
@@ -226,10 +205,9 @@ function parseASCII(data, header) {
226
205
  return attributes;
227
206
  }
228
207
  function handleElement(buffer, elementName) {
229
- var element = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
208
+ let element = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
230
209
  if (elementName === 'vertex') {
231
- for (var _i = 0, _Object$keys = Object.keys(element); _i < _Object$keys.length; _i++) {
232
- var propertyName = _Object$keys[_i];
210
+ for (const propertyName of Object.keys(element)) {
233
211
  switch (propertyName) {
234
212
  case 'x':
235
213
  buffer.vertices.push(element.x, element.y, element.z);
@@ -265,7 +243,7 @@ function handleElement(buffer, elementName) {
265
243
  }
266
244
  }
267
245
  } else if (elementName === 'face') {
268
- var vertexIndices = element.vertex_indices || element.vertex_index;
246
+ const vertexIndices = element.vertex_indices || element.vertex_index;
269
247
  if (vertexIndices.length === 3) {
270
248
  buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[2]);
271
249
  } else if (vertexIndices.length === 4) {
@@ -305,16 +283,16 @@ function binaryRead(dataview, at, type, littleEndian) {
305
283
  }
306
284
  }
307
285
  function binaryReadElement(dataview, at, properties, littleEndian) {
308
- var element = {};
309
- var result;
310
- var read = 0;
311
- for (var i = 0; i < properties.length; i++) {
286
+ const element = {};
287
+ let result;
288
+ let read = 0;
289
+ for (let i = 0; i < properties.length; i++) {
312
290
  if (properties[i].type === 'list') {
313
- var list = [];
291
+ const list = [];
314
292
  result = binaryRead(dataview, at + read, properties[i].countType, littleEndian);
315
- var n = result[0];
293
+ const n = result[0];
316
294
  read += result[1];
317
- for (var j = 0; j < n; j++) {
295
+ for (let j = 0; j < n; j++) {
318
296
  result = binaryRead(dataview, at + read, properties[i].itemType, littleEndian);
319
297
  list.push(result[0]);
320
298
  read += result[1];
@@ -329,17 +307,17 @@ function binaryReadElement(dataview, at, properties, littleEndian) {
329
307
  return [element, read];
330
308
  }
331
309
  function parseBinary(data, header) {
332
- var attributes = getPLYAttributes(header);
333
- var littleEndian = header.format === 'binary_little_endian';
334
- var body = new DataView(data, header.headerLength);
335
- var result;
336
- var loc = 0;
337
- for (var currentElement = 0; currentElement < header.elements.length; currentElement++) {
338
- var count = header.elements[currentElement].count;
339
- for (var currentElementCount = 0; currentElementCount < count; currentElementCount++) {
310
+ const attributes = getPLYAttributes(header);
311
+ const littleEndian = header.format === 'binary_little_endian';
312
+ const body = new DataView(data, header.headerLength);
313
+ let result;
314
+ let loc = 0;
315
+ for (let currentElement = 0; currentElement < header.elements.length; currentElement++) {
316
+ const count = header.elements[currentElement].count;
317
+ for (let currentElementCount = 0; currentElementCount < count; currentElementCount++) {
340
318
  result = binaryReadElement(body, loc, header.elements[currentElement].properties, littleEndian);
341
319
  loc += result[1];
342
- var element = result[0];
320
+ const element = result[0];
343
321
  handleElement(attributes, header.elements[currentElement].name, element);
344
322
  }
345
323
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parse-ply.js","names":["_normalizePly","_interopRequireDefault","require","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","parsePLY","data","options","arguments","undefined","header","attributes","ArrayBuffer","text","TextDecoder","decode","parseHeader","format","parseASCII","parseBinary","normalizePLY","PLY_HEADER_PATTERN","headerText","headerLength","result","exec","lines","split","parseHeaderLines","comments","elements","lineType","lineValues","currentElement","line","trim","shift","join","version","push","count","parseInt","properties","property","makePLYElementProperty","propertyNameMapping","console","log","getPLYAttributes","indices","vertices","normals","uvs","colors","_iterator","_step","element","_iterator2","_step2","propertyValues","type","countType","itemType","parseASCIINumber","parseFloat","Error","parsePLYElement","values","list","j","patternBody","body","currentElementCount","handleElement","buffer","elementName","_i","_Object$keys","keys","propertyName","x","y","z","nx","ny","nz","t","red","green","blue","vertexIndices","vertex_indices","vertex_index","binaryRead","dataview","at","littleEndian","getInt8","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","binaryReadElement","read","DataView","loc"],"sources":["../../../src/lib/parse-ply.ts"],"sourcesContent":["// PLY Loader, adapted from THREE.js (MIT license)\n//\n// Attributions per original THREE.js source file:\n//\n// @author Wei Meng / http://about.me/menway\n//\n// Description: A loader for PLY ASCII files (known as the Polygon File Format\n// or the Stanford Triangle Format).\n//\n// Limitations: ASCII decoding assumes file is UTF-8.\n//\n// If the PLY file uses non standard property names, they can be mapped while\n// loading. For example, the following maps the properties\n// “diffuse_(red|green|blue)” in the file to standard color names.\n//\n// parsePLY(data, {\n// propertyNameMapping: {\n// diffuse_red: 'red',\n// diffuse_green: 'green',\n// diffuse_blue: 'blue'\n// }\n// });\nimport type {\n PLYMesh,\n PLYHeader,\n PLYAttributes,\n MeshHeader,\n PLYElement,\n PLYProperty\n} from './ply-types';\nimport normalizePLY from './normalize-ply';\n\nexport type ParsePLYOptions = {\n propertyNameMapping?: Record<string, string>;\n};\n\n/**\n * @param data\n * @param options\n * @returns\n */\nexport function parsePLY(data: ArrayBuffer | string, options: ParsePLYOptions = {}): PLYMesh {\n let header: PLYHeader & MeshHeader;\n let attributes: PLYAttributes;\n\n if (data instanceof ArrayBuffer) {\n const text = new TextDecoder().decode(data);\n header = parseHeader(text, options);\n attributes = header.format === 'ascii' ? parseASCII(text, header) : parseBinary(data, header);\n } else {\n header = parseHeader(data, options);\n attributes = parseASCII(data, header);\n }\n\n return normalizePLY(header, attributes);\n}\n\n/**\n * @param data\n * @param options\n * @returns header\n */\nfunction parseHeader(data: any, options?: ParsePLYOptions): PLYHeader {\n const PLY_HEADER_PATTERN = /ply([\\s\\S]*)end_header\\s/;\n\n let headerText = '';\n let headerLength = 0;\n\n const result = PLY_HEADER_PATTERN.exec(data);\n\n if (result !== null) {\n headerText = result[1];\n headerLength = result[0].length;\n }\n const lines = headerText.split('\\n');\n const header = parseHeaderLines(lines, headerLength, options);\n\n return header;\n}\n\n/**\n * @param lines\n * @param headerLength\n * @param options\n * @returns header\n */\n// eslint-disable-next-line complexity\nfunction parseHeaderLines(\n lines: string[],\n headerLength: number,\n options?: ParsePLYOptions\n): PLYHeader {\n const header: PLYHeader = {\n comments: [],\n elements: [],\n headerLength\n };\n\n let lineType: string | undefined;\n let lineValues: string[];\n let currentElement: PLYElement | null = null;\n\n for (let i = 0; i < lines.length; i++) {\n let line: string = lines[i];\n line = line.trim();\n\n if (line === '') {\n // eslint-disable-next-line\n continue;\n }\n\n lineValues = line.split(/\\s+/);\n lineType = lineValues.shift();\n line = lineValues.join(' ');\n\n switch (lineType) {\n case 'format':\n header.format = lineValues[0];\n header.version = lineValues[1];\n break;\n\n case 'comment':\n header.comments.push(line);\n break;\n\n case 'element':\n // Start new element, store previous element\n if (currentElement) {\n header.elements.push(currentElement);\n }\n\n currentElement = {\n name: lineValues[0],\n count: parseInt(lineValues[1], 10),\n properties: []\n };\n break;\n\n case 'property':\n if (currentElement) {\n const property = makePLYElementProperty(lineValues);\n if (options?.propertyNameMapping && property.name in options?.propertyNameMapping) {\n property.name = options?.propertyNameMapping[property.name];\n }\n currentElement.properties.push(property);\n }\n break;\n\n default:\n // eslint-disable-next-line\n console.log('unhandled', lineType, lineValues);\n }\n }\n\n // Store in-progress element\n if (currentElement) {\n header.elements.push(currentElement);\n }\n\n return header;\n}\n\n/** Generate attributes arrays from the header */\n// eslint-disable-next-line complexity\nfunction getPLYAttributes(header: PLYHeader): PLYAttributes {\n // TODO Generate only the attribute arrays actually in the header\n const attributes = {\n indices: [],\n vertices: [],\n normals: [],\n uvs: [],\n colors: []\n };\n\n for (const element of header.elements) {\n if (element.name === 'vertex') {\n for (const property of element.properties) {\n switch (property.name) {\n case 'x':\n case 'y':\n case 'z':\n case 'nx':\n case 'ny':\n case 'nz':\n case 's':\n case 't':\n case 'red':\n case 'green':\n case 'blue':\n break;\n default:\n // Add any non-geometry attributes\n attributes[property.name] = [];\n break;\n }\n }\n }\n }\n\n return attributes;\n}\n\n/**\n * @param propertyValues\n * @returns property of ply element\n */\nfunction makePLYElementProperty(propertyValues: string[]): PLYProperty {\n const type = propertyValues[0];\n switch (type) {\n case 'list':\n return {\n type,\n name: propertyValues[3],\n countType: propertyValues[1],\n itemType: propertyValues[2]\n };\n default:\n return {\n type,\n name: propertyValues[1]\n };\n }\n}\n\n/**\n * Parses ASCII number\n * @param n\n * @param type\n * @returns\n */\n// eslint-disable-next-line complexity\nfunction parseASCIINumber(n: string, type: string): number {\n switch (type) {\n case 'char':\n case 'uchar':\n case 'short':\n case 'ushort':\n case 'int':\n case 'uint':\n case 'int8':\n case 'uint8':\n case 'int16':\n case 'uint16':\n case 'int32':\n case 'uint32':\n return parseInt(n, 10);\n\n case 'float':\n case 'double':\n case 'float32':\n case 'float64':\n return parseFloat(n);\n\n default:\n throw new Error(type);\n }\n}\n\n/**\n * @param properties\n * @param line\n * @returns ASCII element\n */\nfunction parsePLYElement(properties: any[], line: string) {\n const values: any = line.split(/\\s+/);\n\n const element = {};\n\n for (let i = 0; i < properties.length; i++) {\n if (properties[i].type === 'list') {\n const list: any = [];\n const n = parseASCIINumber(values.shift(), properties[i].countType);\n\n for (let j = 0; j < n; j++) {\n list.push(parseASCIINumber(values.shift(), properties[i].itemType));\n }\n\n element[properties[i].name] = list;\n } else {\n element[properties[i].name] = parseASCIINumber(values.shift(), properties[i].type);\n }\n }\n\n return element;\n}\n\n/**\n * @param data\n * @param header\n * @returns [attributes]\n */\nfunction parseASCII(data: any, header: PLYHeader): PLYAttributes {\n // PLY ascii format specification, as per http://en.wikipedia.org/wiki/PLY_(file_format)\n\n const attributes = getPLYAttributes(header);\n\n let result: RegExpExecArray | null;\n\n const patternBody = /end_header\\s([\\s\\S]*)$/;\n let body = '';\n if ((result = patternBody.exec(data)) !== null) {\n body = result[1];\n }\n\n const lines = body.split('\\n');\n let currentElement = 0;\n let currentElementCount = 0;\n\n for (let i = 0; i < lines.length; i++) {\n let line = lines[i];\n line = line.trim();\n\n if (line !== '') {\n if (currentElementCount >= header.elements[currentElement].count) {\n currentElement++;\n currentElementCount = 0;\n }\n\n const element = parsePLYElement(header.elements[currentElement].properties, line);\n handleElement(attributes, header.elements[currentElement].name, element);\n currentElementCount++;\n }\n }\n\n return attributes;\n}\n\n/**\n * @param buffer\n * @param elementName\n * @param element\n */\n// eslint-disable-next-line complexity\nfunction handleElement(\n buffer: {[index: string]: number[]},\n elementName: string,\n element: any = {}\n) {\n if (elementName === 'vertex') {\n for (const propertyName of Object.keys(element)) {\n switch (propertyName) {\n case 'x':\n buffer.vertices.push(element.x, element.y, element.z);\n break;\n case 'y':\n case 'z':\n break;\n\n case 'nx':\n if ('nx' in element && 'ny' in element && 'nz' in element) {\n buffer.normals.push(element.nx, element.ny, element.nz);\n }\n break;\n case 'ny':\n case 'nz':\n break;\n\n case 's':\n if ('s' in element && 't' in element) {\n buffer.uvs.push(element.s, element.t);\n }\n break;\n case 't':\n break;\n\n case 'red':\n if ('red' in element && 'green' in element && 'blue' in element) {\n buffer.colors.push(element.red, element.green, element.blue);\n }\n break;\n case 'green':\n case 'blue':\n break;\n\n default:\n buffer[propertyName].push(element[propertyName]);\n }\n }\n } else if (elementName === 'face') {\n const vertexIndices = element.vertex_indices || element.vertex_index; // issue #9338\n\n if (vertexIndices.length === 3) {\n buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[2]);\n } else if (vertexIndices.length === 4) {\n buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[3]);\n buffer.indices.push(vertexIndices[1], vertexIndices[2], vertexIndices[3]);\n }\n }\n}\n\n/**\n * Reads binary data\n * @param dataview\n * @param at\n * @param type\n * @param littleEndian\n * @returns [number, number]\n */\n// eslint-disable-next-line complexity\nfunction binaryRead(dataview: DataView, at: number, type: any, littleEndian: boolean): number[] {\n switch (type) {\n // corespondences for non-specific length types here match rply:\n case 'int8':\n case 'char':\n return [dataview.getInt8(at), 1];\n case 'uint8':\n case 'uchar':\n return [dataview.getUint8(at), 1];\n case 'int16':\n case 'short':\n return [dataview.getInt16(at, littleEndian), 2];\n case 'uint16':\n case 'ushort':\n return [dataview.getUint16(at, littleEndian), 2];\n case 'int32':\n case 'int':\n return [dataview.getInt32(at, littleEndian), 4];\n case 'uint32':\n case 'uint':\n return [dataview.getUint32(at, littleEndian), 4];\n case 'float32':\n case 'float':\n return [dataview.getFloat32(at, littleEndian), 4];\n case 'float64':\n case 'double':\n return [dataview.getFloat64(at, littleEndian), 8];\n\n default:\n throw new Error(type);\n }\n}\n\n/**\n * Reads binary data\n * @param dataview\n * @param at\n * @param properties\n * @param littleEndian\n * @returns [object, number]\n */\nfunction binaryReadElement(\n dataview: DataView,\n at: number,\n properties: {[index: string]: any},\n littleEndian: boolean\n): {}[] {\n const element = {};\n let result: number[];\n let read = 0;\n\n for (let i = 0; i < properties.length; i++) {\n if (properties[i].type === 'list') {\n const list = [];\n\n result = binaryRead(dataview, at + read, properties[i].countType, littleEndian);\n const n = result[0];\n read += result[1];\n\n for (let j = 0; j < n; j++) {\n result = binaryRead(dataview, at + read, properties[i].itemType, littleEndian);\n // @ts-ignore\n list.push(result[0]);\n read += result[1];\n }\n\n element[properties[i].name] = list;\n } else {\n result = binaryRead(dataview, at + read, properties[i].type, littleEndian);\n element[properties[i].name] = result[0];\n read += result[1];\n }\n }\n\n return [element, read];\n}\n\ntype BinaryAttributes = {\n [index: string]: number[];\n};\n\n/**\n * Parses binary data\n * @param data\n * @param header\n * @returns [attributes] of data\n */\nfunction parseBinary(data: ArrayBuffer, header: PLYHeader): BinaryAttributes {\n const attributes = getPLYAttributes(header);\n\n const littleEndian = header.format === 'binary_little_endian';\n const body = new DataView(data, header.headerLength);\n let result: any[];\n let loc = 0;\n\n for (let currentElement = 0; currentElement < header.elements.length; currentElement++) {\n const count = header.elements[currentElement].count;\n for (let currentElementCount = 0; currentElementCount < count; currentElementCount++) {\n result = binaryReadElement(\n body,\n loc,\n header.elements[currentElement].properties,\n littleEndian\n );\n loc += result[1];\n const element = result[0];\n\n handleElement(attributes, header.elements[currentElement].name, element);\n }\n }\n\n return attributes;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parse-ply.js","names":["_normalizePly","_interopRequireDefault","require","parsePLY","data","options","arguments","length","undefined","header","attributes","ArrayBuffer","text","TextDecoder","decode","parseHeader","format","parseASCII","parseBinary","normalizePLY","PLY_HEADER_PATTERN","headerText","headerLength","result","exec","lines","split","parseHeaderLines","comments","elements","lineType","lineValues","currentElement","i","line","trim","shift","join","version","push","name","count","parseInt","properties","property","makePLYElementProperty","propertyNameMapping","console","log","getPLYAttributes","indices","vertices","normals","uvs","colors","element","propertyValues","type","countType","itemType","parseASCIINumber","n","parseFloat","Error","parsePLYElement","values","list","j","patternBody","body","currentElementCount","handleElement","buffer","elementName","propertyName","Object","keys","x","y","z","nx","ny","nz","s","t","red","green","blue","vertexIndices","vertex_indices","vertex_index","binaryRead","dataview","at","littleEndian","getInt8","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","binaryReadElement","read","DataView","loc"],"sources":["../../../src/lib/parse-ply.ts"],"sourcesContent":["// PLY Loader, adapted from THREE.js (MIT license)\n//\n// Attributions per original THREE.js source file:\n//\n// @author Wei Meng / http://about.me/menway\n//\n// Description: A loader for PLY ASCII files (known as the Polygon File Format\n// or the Stanford Triangle Format).\n//\n// Limitations: ASCII decoding assumes file is UTF-8.\n//\n// If the PLY file uses non standard property names, they can be mapped while\n// loading. For example, the following maps the properties\n// “diffuse_(red|green|blue)” in the file to standard color names.\n//\n// parsePLY(data, {\n// propertyNameMapping: {\n// diffuse_red: 'red',\n// diffuse_green: 'green',\n// diffuse_blue: 'blue'\n// }\n// });\nimport type {\n PLYMesh,\n PLYHeader,\n PLYAttributes,\n MeshHeader,\n PLYElement,\n PLYProperty\n} from './ply-types';\nimport normalizePLY from './normalize-ply';\n\nexport type ParsePLYOptions = {\n propertyNameMapping?: Record<string, string>;\n};\n\n/**\n * @param data\n * @param options\n * @returns\n */\nexport function parsePLY(data: ArrayBuffer | string, options: ParsePLYOptions = {}): PLYMesh {\n let header: PLYHeader & MeshHeader;\n let attributes: PLYAttributes;\n\n if (data instanceof ArrayBuffer) {\n const text = new TextDecoder().decode(data);\n header = parseHeader(text, options);\n attributes = header.format === 'ascii' ? parseASCII(text, header) : parseBinary(data, header);\n } else {\n header = parseHeader(data, options);\n attributes = parseASCII(data, header);\n }\n\n return normalizePLY(header, attributes);\n}\n\n/**\n * @param data\n * @param options\n * @returns header\n */\nfunction parseHeader(data: any, options?: ParsePLYOptions): PLYHeader {\n const PLY_HEADER_PATTERN = /ply([\\s\\S]*)end_header\\s/;\n\n let headerText = '';\n let headerLength = 0;\n\n const result = PLY_HEADER_PATTERN.exec(data);\n\n if (result !== null) {\n headerText = result[1];\n headerLength = result[0].length;\n }\n const lines = headerText.split('\\n');\n const header = parseHeaderLines(lines, headerLength, options);\n\n return header;\n}\n\n/**\n * @param lines\n * @param headerLength\n * @param options\n * @returns header\n */\n// eslint-disable-next-line complexity\nfunction parseHeaderLines(\n lines: string[],\n headerLength: number,\n options?: ParsePLYOptions\n): PLYHeader {\n const header: PLYHeader = {\n comments: [],\n elements: [],\n headerLength\n };\n\n let lineType: string | undefined;\n let lineValues: string[];\n let currentElement: PLYElement | null = null;\n\n for (let i = 0; i < lines.length; i++) {\n let line: string = lines[i];\n line = line.trim();\n\n if (line === '') {\n // eslint-disable-next-line\n continue;\n }\n\n lineValues = line.split(/\\s+/);\n lineType = lineValues.shift();\n line = lineValues.join(' ');\n\n switch (lineType) {\n case 'format':\n header.format = lineValues[0];\n header.version = lineValues[1];\n break;\n\n case 'comment':\n header.comments.push(line);\n break;\n\n case 'element':\n // Start new element, store previous element\n if (currentElement) {\n header.elements.push(currentElement);\n }\n\n currentElement = {\n name: lineValues[0],\n count: parseInt(lineValues[1], 10),\n properties: []\n };\n break;\n\n case 'property':\n if (currentElement) {\n const property = makePLYElementProperty(lineValues);\n if (options?.propertyNameMapping && property.name in options?.propertyNameMapping) {\n property.name = options?.propertyNameMapping[property.name];\n }\n currentElement.properties.push(property);\n }\n break;\n\n default:\n // eslint-disable-next-line\n console.log('unhandled', lineType, lineValues);\n }\n }\n\n // Store in-progress element\n if (currentElement) {\n header.elements.push(currentElement);\n }\n\n return header;\n}\n\n/** Generate attributes arrays from the header */\n// eslint-disable-next-line complexity\nfunction getPLYAttributes(header: PLYHeader): PLYAttributes {\n // TODO Generate only the attribute arrays actually in the header\n const attributes = {\n indices: [],\n vertices: [],\n normals: [],\n uvs: [],\n colors: []\n };\n\n for (const element of header.elements) {\n if (element.name === 'vertex') {\n for (const property of element.properties) {\n switch (property.name) {\n case 'x':\n case 'y':\n case 'z':\n case 'nx':\n case 'ny':\n case 'nz':\n case 's':\n case 't':\n case 'red':\n case 'green':\n case 'blue':\n break;\n default:\n // Add any non-geometry attributes\n attributes[property.name] = [];\n break;\n }\n }\n }\n }\n\n return attributes;\n}\n\n/**\n * @param propertyValues\n * @returns property of ply element\n */\nfunction makePLYElementProperty(propertyValues: string[]): PLYProperty {\n const type = propertyValues[0];\n switch (type) {\n case 'list':\n return {\n type,\n name: propertyValues[3],\n countType: propertyValues[1],\n itemType: propertyValues[2]\n };\n default:\n return {\n type,\n name: propertyValues[1]\n };\n }\n}\n\n/**\n * Parses ASCII number\n * @param n\n * @param type\n * @returns\n */\n// eslint-disable-next-line complexity\nfunction parseASCIINumber(n: string, type: string): number {\n switch (type) {\n case 'char':\n case 'uchar':\n case 'short':\n case 'ushort':\n case 'int':\n case 'uint':\n case 'int8':\n case 'uint8':\n case 'int16':\n case 'uint16':\n case 'int32':\n case 'uint32':\n return parseInt(n, 10);\n\n case 'float':\n case 'double':\n case 'float32':\n case 'float64':\n return parseFloat(n);\n\n default:\n throw new Error(type);\n }\n}\n\n/**\n * @param properties\n * @param line\n * @returns ASCII element\n */\nfunction parsePLYElement(properties: any[], line: string) {\n const values: any = line.split(/\\s+/);\n\n const element = {};\n\n for (let i = 0; i < properties.length; i++) {\n if (properties[i].type === 'list') {\n const list: any = [];\n const n = parseASCIINumber(values.shift(), properties[i].countType);\n\n for (let j = 0; j < n; j++) {\n list.push(parseASCIINumber(values.shift(), properties[i].itemType));\n }\n\n element[properties[i].name] = list;\n } else {\n element[properties[i].name] = parseASCIINumber(values.shift(), properties[i].type);\n }\n }\n\n return element;\n}\n\n/**\n * @param data\n * @param header\n * @returns [attributes]\n */\nfunction parseASCII(data: any, header: PLYHeader): PLYAttributes {\n // PLY ascii format specification, as per http://en.wikipedia.org/wiki/PLY_(file_format)\n\n const attributes = getPLYAttributes(header);\n\n let result: RegExpExecArray | null;\n\n const patternBody = /end_header\\s([\\s\\S]*)$/;\n let body = '';\n if ((result = patternBody.exec(data)) !== null) {\n body = result[1];\n }\n\n const lines = body.split('\\n');\n let currentElement = 0;\n let currentElementCount = 0;\n\n for (let i = 0; i < lines.length; i++) {\n let line = lines[i];\n line = line.trim();\n\n if (line !== '') {\n if (currentElementCount >= header.elements[currentElement].count) {\n currentElement++;\n currentElementCount = 0;\n }\n\n const element = parsePLYElement(header.elements[currentElement].properties, line);\n handleElement(attributes, header.elements[currentElement].name, element);\n currentElementCount++;\n }\n }\n\n return attributes;\n}\n\n/**\n * @param buffer\n * @param elementName\n * @param element\n */\n// eslint-disable-next-line complexity\nfunction handleElement(\n buffer: {[index: string]: number[]},\n elementName: string,\n element: any = {}\n) {\n if (elementName === 'vertex') {\n for (const propertyName of Object.keys(element)) {\n switch (propertyName) {\n case 'x':\n buffer.vertices.push(element.x, element.y, element.z);\n break;\n case 'y':\n case 'z':\n break;\n\n case 'nx':\n if ('nx' in element && 'ny' in element && 'nz' in element) {\n buffer.normals.push(element.nx, element.ny, element.nz);\n }\n break;\n case 'ny':\n case 'nz':\n break;\n\n case 's':\n if ('s' in element && 't' in element) {\n buffer.uvs.push(element.s, element.t);\n }\n break;\n case 't':\n break;\n\n case 'red':\n if ('red' in element && 'green' in element && 'blue' in element) {\n buffer.colors.push(element.red, element.green, element.blue);\n }\n break;\n case 'green':\n case 'blue':\n break;\n\n default:\n buffer[propertyName].push(element[propertyName]);\n }\n }\n } else if (elementName === 'face') {\n const vertexIndices = element.vertex_indices || element.vertex_index; // issue #9338\n\n if (vertexIndices.length === 3) {\n buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[2]);\n } else if (vertexIndices.length === 4) {\n buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[3]);\n buffer.indices.push(vertexIndices[1], vertexIndices[2], vertexIndices[3]);\n }\n }\n}\n\n/**\n * Reads binary data\n * @param dataview\n * @param at\n * @param type\n * @param littleEndian\n * @returns [number, number]\n */\n// eslint-disable-next-line complexity\nfunction binaryRead(dataview: DataView, at: number, type: any, littleEndian: boolean): number[] {\n switch (type) {\n // corespondences for non-specific length types here match rply:\n case 'int8':\n case 'char':\n return [dataview.getInt8(at), 1];\n case 'uint8':\n case 'uchar':\n return [dataview.getUint8(at), 1];\n case 'int16':\n case 'short':\n return [dataview.getInt16(at, littleEndian), 2];\n case 'uint16':\n case 'ushort':\n return [dataview.getUint16(at, littleEndian), 2];\n case 'int32':\n case 'int':\n return [dataview.getInt32(at, littleEndian), 4];\n case 'uint32':\n case 'uint':\n return [dataview.getUint32(at, littleEndian), 4];\n case 'float32':\n case 'float':\n return [dataview.getFloat32(at, littleEndian), 4];\n case 'float64':\n case 'double':\n return [dataview.getFloat64(at, littleEndian), 8];\n\n default:\n throw new Error(type);\n }\n}\n\n/**\n * Reads binary data\n * @param dataview\n * @param at\n * @param properties\n * @param littleEndian\n * @returns [object, number]\n */\nfunction binaryReadElement(\n dataview: DataView,\n at: number,\n properties: {[index: string]: any},\n littleEndian: boolean\n): {}[] {\n const element = {};\n let result: number[];\n let read = 0;\n\n for (let i = 0; i < properties.length; i++) {\n if (properties[i].type === 'list') {\n const list = [];\n\n result = binaryRead(dataview, at + read, properties[i].countType, littleEndian);\n const n = result[0];\n read += result[1];\n\n for (let j = 0; j < n; j++) {\n result = binaryRead(dataview, at + read, properties[i].itemType, littleEndian);\n // @ts-ignore\n list.push(result[0]);\n read += result[1];\n }\n\n element[properties[i].name] = list;\n } else {\n result = binaryRead(dataview, at + read, properties[i].type, littleEndian);\n element[properties[i].name] = result[0];\n read += result[1];\n }\n }\n\n return [element, read];\n}\n\ntype BinaryAttributes = {\n [index: string]: number[];\n};\n\n/**\n * Parses binary data\n * @param data\n * @param header\n * @returns [attributes] of data\n */\nfunction parseBinary(data: ArrayBuffer, header: PLYHeader): BinaryAttributes {\n const attributes = getPLYAttributes(header);\n\n const littleEndian = header.format === 'binary_little_endian';\n const body = new DataView(data, header.headerLength);\n let result: any[];\n let loc = 0;\n\n for (let currentElement = 0; currentElement < header.elements.length; currentElement++) {\n const count = header.elements[currentElement].count;\n for (let currentElementCount = 0; currentElementCount < count; currentElementCount++) {\n result = binaryReadElement(\n body,\n loc,\n header.elements[currentElement].properties,\n littleEndian\n );\n loc += result[1];\n const element = result[0];\n\n handleElement(attributes, header.elements[currentElement].name, element);\n }\n }\n\n return attributes;\n}\n"],"mappings":"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"}
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports._typecheckPLYLoader = exports.PLYLoader = void 0;
7
- var VERSION = typeof "3.4.13" !== 'undefined' ? "3.4.13" : 'latest';
8
- var PLYLoader = {
7
+ const VERSION = typeof "3.4.15" !== 'undefined' ? "3.4.15" : 'latest';
8
+ const PLYLoader = {
9
9
  name: 'PLY',
10
10
  id: 'ply',
11
11
  module: 'ply',
@@ -22,6 +22,6 @@ var PLYLoader = {
22
22
  }
23
23
  };
24
24
  exports.PLYLoader = PLYLoader;
25
- var _typecheckPLYLoader = PLYLoader;
25
+ const _typecheckPLYLoader = PLYLoader;
26
26
  exports._typecheckPLYLoader = _typecheckPLYLoader;
27
27
  //# sourceMappingURL=ply-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ply-loader.js","names":["VERSION","PLYLoader","name","id","module","shapes","version","worker","extensions","mimeTypes","text","binary","tests","options","ply","exports","_typecheckPLYLoader"],"sources":["../../src/ply-loader.ts"],"sourcesContent":["// PLY Loader\nimport 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 PLY - Polygon File Format (aka Stanford Triangle Format)'\n * links: ['http://paulbourke.net/dataformats/ply/',\n * 'https://en.wikipedia.org/wiki/PLY_(file_format)']\n */\nexport const PLYLoader = {\n name: 'PLY',\n id: 'ply',\n module: 'ply',\n shapes: ['mesh', 'gltf', 'columnar-table'],\n version: VERSION,\n worker: true,\n extensions: ['ply'],\n mimeTypes: ['text/plain', 'application/octet-stream'],\n text: true,\n binary: true,\n tests: ['ply'],\n options: {\n ply: {}\n }\n};\n\nexport const _typecheckPLYLoader: Loader = PLYLoader;\n"],"mappings":";;;;;;AAKA,IAAMA,OAAO,GAAG,eAAkB,KAAK,WAAW,cAAiB,QAAQ;AAOpE,IAAMC,SAAS,GAAG;EACvBC,IAAI,EAAE,KAAK;EACXC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,KAAK;EACbC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC;EAC1CC,OAAO,EAAEN,OAAO;EAChBO,MAAM,EAAE,IAAI;EACZC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,CAAC,YAAY,EAAE,0BAA0B,CAAC;EACrDC,IAAI,EAAE,IAAI;EACVC,MAAM,EAAE,IAAI;EACZC,KAAK,EAAE,CAAC,KAAK,CAAC;EACdC,OAAO,EAAE;IACPC,GAAG,EAAE,CAAC;EACR;AACF,CAAC;AAACC,OAAA,CAAAd,SAAA,GAAAA,SAAA;AAEK,IAAMe,mBAA2B,GAAGf,SAAS;AAACc,OAAA,CAAAC,mBAAA,GAAAA,mBAAA"}
1
+ {"version":3,"file":"ply-loader.js","names":["VERSION","PLYLoader","name","id","module","shapes","version","worker","extensions","mimeTypes","text","binary","tests","options","ply","exports","_typecheckPLYLoader"],"sources":["../../src/ply-loader.ts"],"sourcesContent":["// PLY Loader\nimport 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 PLY - Polygon File Format (aka Stanford Triangle Format)'\n * links: ['http://paulbourke.net/dataformats/ply/',\n * 'https://en.wikipedia.org/wiki/PLY_(file_format)']\n */\nexport const PLYLoader = {\n name: 'PLY',\n id: 'ply',\n module: 'ply',\n shapes: ['mesh', 'gltf', 'columnar-table'],\n version: VERSION,\n worker: true,\n extensions: ['ply'],\n mimeTypes: ['text/plain', 'application/octet-stream'],\n text: true,\n binary: true,\n tests: ['ply'],\n options: {\n ply: {}\n }\n};\n\nexport const _typecheckPLYLoader: Loader = PLYLoader;\n"],"mappings":";;;;;;AAKA,MAAMA,OAAO,GAAG,eAAkB,KAAK,WAAW,cAAiB,QAAQ;AAOpE,MAAMC,SAAS,GAAG;EACvBC,IAAI,EAAE,KAAK;EACXC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,KAAK;EACbC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC;EAC1CC,OAAO,EAAEN,OAAO;EAChBO,MAAM,EAAE,IAAI;EACZC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,CAAC,YAAY,EAAE,0BAA0B,CAAC;EACrDC,IAAI,EAAE,IAAI;EACVC,MAAM,EAAE,IAAI;EACZC,KAAK,EAAE,CAAC,KAAK,CAAC;EACdC,OAAO,EAAE;IACPC,GAAG,EAAE,CAAC;EACR;AACF,CAAC;AAACC,OAAA,CAAAd,SAAA,GAAAA,SAAA;AAEK,MAAMe,mBAA2B,GAAGf,SAAS;AAACc,OAAA,CAAAC,mBAAA,GAAAA,mBAAA"}
@@ -1,4 +1,4 @@
1
- const VERSION = typeof "3.4.13" !== 'undefined' ? "3.4.13" : 'latest';
1
+ const VERSION = typeof "3.4.15" !== 'undefined' ? "3.4.15" : 'latest';
2
2
  export const PLYLoader = {
3
3
  name: 'PLY',
4
4
  id: 'ply',
@@ -222,7 +222,7 @@
222
222
  }
223
223
 
224
224
  // src/ply-loader.ts
225
- var VERSION = true ? "3.4.13" : "latest";
225
+ var VERSION = true ? "3.4.15" : "latest";
226
226
  var PLYLoader = {
227
227
  name: "PLY",
228
228
  id: "ply",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/ply",
3
- "version": "3.4.13",
3
+ "version": "3.4.15",
4
4
  "description": "Framework-independent loader for the PLY format",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -34,8 +34,8 @@
34
34
  },
35
35
  "dependencies": {
36
36
  "@babel/runtime": "^7.3.1",
37
- "@loaders.gl/loader-utils": "3.4.13",
38
- "@loaders.gl/schema": "3.4.13"
37
+ "@loaders.gl/loader-utils": "3.4.15",
38
+ "@loaders.gl/schema": "3.4.15"
39
39
  },
40
- "gitHead": "be8849c02972ce541e01720d29b976f830d6af92"
40
+ "gitHead": "19e941d5805568e449ef9092490d6568a4853298"
41
41
  }