UNPKG

@itwin/core-frontend

Version:
197 lines • 6.51 kB
/** @packageDocumentation * @module Tiles */ import { UintArray } from "@itwin/core-bentley"; import { XYAndZ } from "@itwin/core-geometry"; import { ColorDefProps, FeatureIndexType, FillFlags, Gradient, LinePixels, PolylineTypeFlags, QParams2dProps, QParams3dProps } from "@itwin/core-common"; import { EdgeTable } from "../internal/render/EdgeParams"; import { SurfaceMaterialAtlas, SurfaceType } from "../internal/render/SurfaceParams"; import { AuxChannelTableProps } from "../internal/render/AuxChannelTable"; import { ImdlAreaPattern, ImdlDocument } from "./ImdlSchema"; import { InstancedGraphicProps } from "../render/InstancedGraphicParams"; /** Types comprising the parsed representation of an ImdlDocument, produced by [[parseImdlDocument]] and consumed by [[decodeImdlGraphics]]. * All of the types are required to support [structured cloning](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm) so that they * can be passed between workers and the main JavaScript thread. * @internal */ export declare namespace ImdlModel { interface VertexTable { data: Uint8Array; usesUnquantizedPositions?: boolean; qparams: QParams3dProps; width: number; height: number; hasTranslucency: boolean; uniformColor?: ColorDefProps; featureIndexType: FeatureIndexType; uniformFeatureID?: number; numVertices: number; numRgbaPerVertex: number; uvParams?: QParams2dProps; } interface PointStringParams { vertices: VertexTable; indices: Uint8Array; weight: number; } interface TesselatedPolyline { indices: Uint8Array; prevIndices: Uint8Array; nextIndicesAndParams: Uint8Array; } interface PolylineParams { vertices: VertexTable; polyline: TesselatedPolyline; isPlanar: boolean; type: PolylineTypeFlags; weight: number; linePixels: LinePixels; } interface SegmentEdgeParams { indices: Uint8Array; endPointAndQuadIndices: Uint8Array; } interface SilhouetteParams extends SegmentEdgeParams { normalPairs: Uint8Array; } interface IndexedEdgeParams { indices: Uint8Array; edges: EdgeTable; } interface EdgeParams { weight: number; linePixels: LinePixels; segments?: SegmentEdgeParams; silhouettes?: SilhouetteParams; polylines?: TesselatedPolyline; indexed?: IndexedEdgeParams; } interface SurfaceMaterialParams { alpha?: number; diffuse?: { color?: ColorDefProps; weight?: number; }; specular?: { color?: ColorDefProps; weight?: number; exponent?: number; }; } interface SurfaceRenderMaterial { isAtlas: false; material: string | SurfaceMaterialParams; } type SurfaceMaterial = SurfaceRenderMaterial | SurfaceMaterialAtlas; interface SurfaceParams { type: SurfaceType; indices: Uint8Array; fillFlags: FillFlags; hasBakedLighting: boolean; material?: SurfaceMaterial; textureMapping?: { texture: string | Gradient.SymbProps; alwaysDisplayed: boolean; }; } interface MeshParams { vertices: VertexTable; surface: SurfaceParams; edges?: EdgeParams; isPlanar: boolean; auxChannels?: AuxChannelTableProps; } interface Instances extends InstancedGraphicProps { type: "instances"; } interface ViewIndependentOrigin { type: "viewIndependentOrigin"; origin: XYAndZ; } type PrimitiveModifier = Instances | ViewIndependentOrigin; type Primitive = { params: MeshParams; modifier?: PrimitiveModifier; type: "mesh"; } | { params: PointStringParams; modifier?: PrimitiveModifier; type: "point"; } | { params: PolylineParams; modifier?: PrimitiveModifier; type: "polyline"; }; type AreaPatternParams = Omit<ImdlAreaPattern, "xyOffsets"> & { xyOffsets: Float32Array; }; type NodePrimitive = Primitive | { params: AreaPatternParams; modifier?: never; type: "pattern"; }; interface BasicNode { primitives: NodePrimitive[]; animationNodeId?: never; animationId?: never; layerId?: never; groupId?: never; } interface AnimationNode { primitives: NodePrimitive[]; animationNodeId: number; animationId?: string; layerId?: never; groupId?: never; } interface Layer { primitives: NodePrimitive[]; layerId: string; groupId?: never; animationNodeId?: never; animationId?: never; } /** Nodes that contain primitives. */ type PrimitivesNode = BasicNode | AnimationNode | Layer; /** A grouping node that contains other nodes. These don't nest. */ interface GroupNode { groupId: number; nodes: PrimitivesNode[]; primitives?: never; animationNodeId?: never; animationId?: never; layerId?: never; } type Node = PrimitivesNode | GroupNode; interface SingleModelFeatureTable { multiModel: false; data: Uint32Array; numFeatures: number; animationNodeIds?: UintArray; numSubCategories?: never; } interface MultiModelFeatureTable { multiModel: true; data: Uint32Array; numFeatures: number; numSubCategories: number; animationNodeIds?: UintArray; } type FeatureTable = SingleModelFeatureTable | MultiModelFeatureTable; interface Document { featureTable: FeatureTable; nodes: Node[]; patterns: Map<string, Primitive[]>; rtcCenter?: XYAndZ; binaryData: Uint8Array; json: ImdlDocument; } } /** @internal */ export declare function addPrimitiveTransferables(xfers: Set<Transferable>, primitive: ImdlModel.NodePrimitive): void; /** Collect an array of all the [transferable objects](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Transferable_objects) * within the specified document. * @internal */ export declare function collectTransferables(document: ImdlModel.Document): Transferable[]; //# sourceMappingURL=ImdlModel.d.ts.map