UNPKG

@softrobot/loaders.gl-draco

Version:

Framework-independent loader and writer for Draco compressed meshes and point clouds

213 lines (187 loc) 5.4 kB
// Interface exposed to emscripten's WebIDL Binder. // http://kripken.github.io/emscripten-site/docs/porting/connecting_cpp_and_javascript/WebIDL-Binder.html /* eslint-disable camelcase */ import { // GeometryAttribute, // PointAttribute, PointCloud, Mesh, Metadata, DracoInt8Array } from './draco-web-decoder'; type draco_GeometryAttribute_Type = number; type draco_EncodedGeometryType = number; type draco_MeshEncoderMethod = number; /* enum draco_GeometryAttribute_Type { "draco_GeometryAttribute::INVALID", "draco_GeometryAttribute::POSITION", "draco_GeometryAttribute::NORMAL", "draco_GeometryAttribute::COLOR", "draco_GeometryAttribute::TEX_COORD", "draco_GeometryAttribute::GENERIC" }; enum draco_EncodedGeometryType { "draco::INVALID_GEOMETRY_TYPE", "draco::POINT_CLOUD", "draco::TRIANGULAR_MESH" }; enum draco_MeshEncoderMethod { "draco::MESH_SEQUENTIAL_ENCODING", "draco::MESH_EDGEBREAKER_ENCODING" }; */ /* export class GeometryAttribute { constructor(); } export class PointAttribute { constructor(); size(): number; // From GeometryAttribute attribute_type(): number; data_type(): number; num_components(): number; normalized(): boolean; byte_stride(): number; byte_offset(): number; unique_id(): number; } export class PointCloud { constructor(); num_attributes(): number; num_points(): number; } export class Mesh extends PointCloud { constructor(); num_faces(): number; // From PointCloud num_attributes(): number; num_points(): number; set_num_points(num_points: number): void; } export class Metadata { constructor(); } export class DracoInt8Array { constructor(); GetValue(index: number): number; size(): number; } */ export class MetadataBuilder { constructor(); AddStringEntry(metadata: Metadata, entry_name: string, entry_value: string); AddIntEntry(metadata: Metadata, entry_name: string, entry_value: number); AddDoubleEntry(metadata: Metadata, entry_name: string, entry_value: number); AddIntEntryArray( metadata: Metadata, entry_name: string, entry_value: Int32Array, num_values: number ); } export class PointCloudBuilder { constructor(); PointCloudBuilder(): void; AddFloatAttribute( pc: PointCloud, type: draco_GeometryAttribute_Type, num_vertices: number, num_components: number, att_values: Float32Array ); AddInt8Attribute( pc: PointCloud, type: draco_GeometryAttribute_Type, num_vertices: number, num_components: number, att_values: Int8Array ); AddUInt8Attribute( pc: PointCloud, type: draco_GeometryAttribute_Type, num_vertices: number, num_components: number, att_values: Uint8Array ); AddInt16Attribute( pc: PointCloud, type: draco_GeometryAttribute_Type, num_vertices: number, num_components: number, att_values: Int16Array ); AddUInt16Attribute( pc: PointCloud, type: draco_GeometryAttribute_Type, num_vertices: number, num_components: number, att_values: Uint16Array ); AddInt32Attribute( pc: PointCloud, type: draco_GeometryAttribute_Type, num_vertices: number, num_components: number, att_values: Int32Array ); AddUInt32Attribute( pc: PointCloud, type: draco_GeometryAttribute_Type, num_vertices: number, num_components: number, att_values: Uint32Array ); AddMetadata(pc: PointCloud, metadata: Metadata): boolean; SetMetadataForAttribute(pc: PointCloud, attribute_id: number, metadata: Metadata); } export class MeshBuilder extends PointCloudBuilder { constructor(); AddFacesToMesh(mesh: Mesh, num_faces: number, faces: number[]): boolean; } export class Encoder { constructor(); Encoder(): void; SetEncodingMethod(method: number): void; SetAttributeQuantization(type: draco_GeometryAttribute_Type, quantization_bits: number); SetAttributeExplicitQuantization( type: draco_GeometryAttribute_Type, quantization_bits: number, num_components: number, origin: number[], range: number ); SetSpeedOptions(encoding_speed: number, decoding_speed: number): void; SetTrackEncodedProperties(flag: boolean): void; EncodeMeshToDracoBuffer(mesh: Mesh, encoded_data: DracoInt8Array); EncodePointCloudToDracoBuffer( pc: PointCloud, deduplicate_values: boolean, encoded_data: DracoInt8Array ); // Returns the number of encoded points or faces from the last Encode // operation. Returns 0 if SetTrackEncodedProperties was not set to true. GetNumberOfEncodedPoints(): number; GetNumberOfEncodedFaces(): number; } export class ExpertEncoder { constructor(); ExpertEncoder(pc: PointCloud): void; SetEncodingMethod(method: number): void; SetAttributeQuantization(att_id: number, quantization_bits: number); SetAttributeExplicitQuantization( att_id: number, quantization_bits: number, num_components: number, origin: number[], range: number ); SetSpeedOptions(encoding_speed: number, decoding_speed: number): void; SetTrackEncodedProperties(flag: boolean): void; EncodeToDracoBuffer(deduplicate_values: boolean, encoded_data: DracoInt8Array); // Returns the number of encoded points or faces from the last Encode // operation. Returns 0 if SetTrackEncodedProperties was not set to true. GetNumberOfEncodedPoints(): number; GetNumberOfEncodedFaces(): number; }