/*! * Copyright (c) Microsoft Corporation. * Licensed under the MIT License. */ /// import { quat, mat4, vec3, vec4 } from "gl-matrix"; import { IComponent, IComponentVisual } from "./component.js"; import { Core, HorizontalAlignment, TextAlignment, VerticalAlignment } from "../main.js"; import { ITextMetric } from "../helpers/text.js"; import { Font } from "../font.js"; import { IBufferVisual } from "../buffer.js"; interface ILabelVisualBase extends IComponentVisual { pickVMatrix: mat4; pickPMatrix: mat4; isPickingEnabled: boolean; } export interface ILabelVisual extends ILabelVisualBase { label: Label; } export interface ILabelSetVisual extends ILabelVisualBase { label: LabelSet; } export declare class LabelVisual implements ILabelVisual { label: Label; pickVMatrix: mat4; pickPMatrix: mat4; isPickingEnabled: boolean; isVisible: boolean; viewports: DOMRect[]; viewportOffset: number; viewportCount: number; mMatrix: mat4; mvMatrices: mat4[]; vMatrices: mat4[]; inverseVMatrices: mat4[]; pMatrices: mat4[]; isInitialized: boolean; render(elapsedTime: number, xrFrame?: XRFrame): void; update(elapsedTime: number): void; constructor(label: Label); } export declare class LabelSetVisual implements ILabelSetVisual { label: LabelSet; pickVMatrix: mat4; pickPMatrix: mat4; isPickingEnabled: boolean; isVisible: boolean; viewports: DOMRect[]; viewportOffset: number; viewportCount: number; mMatrix: mat4; mvMatrices: mat4[]; vMatrices: mat4[]; inverseVMatrices: mat4[]; pMatrices: mat4[]; isInitialized: boolean; render(elapsedTime: number, xrFrame?: XRFrame): void; update(elapsedTime: number): void; constructor(labelSet: LabelSet); } interface ILabelOptionsBase { maxGlyphs: number; font?: Font; minBoundsX?: number; minBoundsY?: number; minBoundsZ?: number; maxBoundsX?: number; maxBoundsY?: number; maxBoundsZ?: number; horizontalAlignment?: HorizontalAlignment; verticalAlignment?: VerticalAlignment; rotation?: vec4 | quat | Float64Array; material?: number; scale?: number; offsetX?: number; offsetY?: number; offsetZ?: number; reverseX?: boolean; reverseY?: boolean; reverseZ?: boolean; maxGlyphTop?: number; materialType?: number; materialColor?: [number, number, number] | vec3; materialFuzz?: number; materialGloss?: number; segmentColor?: [number, number, number, number] | vec4; } export declare abstract class LabelBase implements IComponent { protected _core: Core; protected _mMatrix: mat4; protected _isInitialized: boolean; protected _hasChanged: boolean; protected _indexCount: number; protected _maxGlyphs: number; protected _vertices: ArrayBuffer; protected _verticesView: DataView; protected _indices: Uint32Array; protected _offset: vec3; protected _vec3: vec3; protected _vec4: vec4; protected _reverseX: boolean; protected _reverseY: boolean; protected _reverseZ: boolean; protected _textMetric: ITextMetric; protected _material: number; get material(): number; get vertices(): ArrayBuffer; get verticesView(): DataView; get indices(): Uint32Array; get indexCount(): number; get isInitialized(): boolean; get mMatrix(): mat4; hasChangedCallback: () => void; color: vec3; borderColor: vec3; hoverColor: vec3; borderWidth: number; gamma: number; protected _materialType: number; get materialType(): number; protected _materialColor: [number, number, number] | vec3; get materialColor(): vec3; protected _materialFuzz: number; get materialFuzz(): number; protected _materialGloss: number; get materialGloss(): number; protected _segmentColor: [number, number, number, number] | vec4; get segmentColor(): vec4; protected _scale: number; get scale(): number; set scale(value: number); protected _font: Font; get font(): Font; set font(value: Font); protected _rotation: vec4 | quat | Float64Array; get rotation(): vec4 | quat | Float64Array; set rotation(value: vec4 | quat | Float64Array); set reverseX(value: boolean); set reverseY(value: boolean); set reverseZ(value: boolean); protected _horizontalAlignment: HorizontalAlignment; get horizontalAlignment(): HorizontalAlignment; set horizontalAlignment(value: HorizontalAlignment); protected _verticalAlignment: VerticalAlignment; get verticalAlignment(): VerticalAlignment; set verticalAlignment(value: VerticalAlignment); protected _offsetX: number; get offsetX(): number; set offsetX(value: number); protected _offsetY: number; get offsetY(): number; set offsetY(value: number); protected _offsetZ: number; get offsetZ(): number; set offsetZ(value: number); protected _maxGlyphTop: number; get maxGlyphTop(): number; set maxGlyphTop(value: number); protected _maxGlyphHeight: number; get maxGlyphHeight(): number; set maxGlyphHeight(value: number); constructor(core: Core, options: ILabelOptionsBase); initialize(): void; update(elapsedTime: number): void; } export interface ILabelOptions extends ILabelOptionsBase { text?: string[]; textAlignment?: TextAlignment; } export declare class Label extends LabelBase { protected _originX: number; protected _originY: number; protected _textAlignment: TextAlignment; get textAlignment(): TextAlignment; set textAlignment(value: TextAlignment); protected _text: string[]; get text(): string[]; set text(value: string[]); width: number; height: number; constructor(core: Core, options: ILabelOptions); update(elapsedTime: number): void; } export interface ILabelSetOptions extends ILabelOptionsBase { text: string[]; positionsX?: Float64Array; positionsY?: Float64Array; positionsZ?: Float64Array; positionScalingX?: number; positionScalingY?: number; positionScalingZ?: number; rotations?: Float64Array; horizontalAlignments?: HorizontalAlignment[]; verticalAlignments?: VerticalAlignment[]; scales?: Float64Array; scalesScaling?: number; materials?: Uint32Array; offsetsX?: Float64Array; offsetsY?: Float64Array; offsetsZ?: Float64Array; offsetScalingX?: number; offsetScalingY?: number; offsetScalingZ?: number; offsetScalingsX?: Float64Array; offsetScalingsY?: Float64Array; offsetScalingsZ?: Float64Array; materialTypes?: Uint8Array; materialColors?: Float32Array; materialFuzzes?: Float32Array; materialGlosses?: Float32Array; segmentColors?: Float32Array; } export declare class LabelSet extends LabelBase { protected _quat: quat; protected _materials: Uint32Array; get materials(): Uint32Array; protected _materialTypes: Uint32Array; get materialTypes(): Uint32Array; protected _materialColors: Float32Array; get materialColors(): Float32Array; protected _materialFuzzes: Float32Array; get materialFuzzes(): Float32Array; protected _materialGlosses: Float32Array; get materialGlosses(): Float32Array; protected _segmentColors: Float32Array; get segmentColors(): Float32Array; protected _minBoundsX: number; get minBoundsX(): number; set minBoundsX(value: number); protected _minBoundsY: number; get minBoundsY(): number; set minBoundsY(value: number); protected _minBoundsZ: number; get minBoundsZ(): number; set minBoundsZ(value: number); protected _maxBoundsX: number; get maxBoundsX(): number; set maxBoundsX(value: number); protected _maxBoundsY: number; get maxBoundsY(): number; set maxBoundsY(value: number); protected _maxBoundsZ: number; get maxBoundsZ(): number; set maxBoundsZ(value: number); protected _positionsX: Float64Array; get positionsX(): Float64Array; set positionsX(value: Float64Array); protected _positionsY: Float64Array; get positionsY(): Float64Array; set positionsY(value: Float64Array); protected _positionsZ: Float64Array; get positionsZ(): Float64Array; set positionsZ(value: Float64Array); protected _positionScalingX: number; get positionScalingX(): number; set positionScalingX(value: number); protected _positionScalingY: number; get positionScalingY(): number; set positionScalingY(value: number); protected _positionScalingZ: number; get positionScalingZ(): number; set positionScalingZ(value: number); protected _rotations: Float64Array; get rotations(): Float64Array; set rotations(value: Float64Array); protected _offsetsX: Float64Array; get offsetsX(): Float64Array; set offsetsX(value: Float64Array); protected _offsetsY: Float64Array; get offsetsY(): Float64Array; set offsetsY(value: Float64Array); protected _offsetsZ: Float64Array; get offsetsZ(): Float64Array; set offsetsZ(value: Float64Array); protected _offsetScalingX: number; get offsetScalingX(): number; set offsetScalingX(value: number); protected _offsetScalingY: number; get offsetScalingY(): number; set offsetScalingY(value: number); protected _offsetScalingZ: number; get offsetScalingZ(): number; set offsetScalingZ(value: number); protected _text: string[]; get text(): string[]; set text(value: string[]); protected _horizontalAlignments: HorizontalAlignment[]; get horizontalAlignments(): HorizontalAlignment[]; set horizontalAlignments(value: HorizontalAlignment[]); protected _verticalAlignments: VerticalAlignment[]; get verticalAlignments(): VerticalAlignment[]; set verticalAlignments(value: VerticalAlignment[]); protected _scales: Float64Array; get scales(): Float64Array; set scales(value: Float64Array); protected _scalesScaling: number; get scalesScaling(): number; set scalesScaling(value: number); pickIdLookup: { [index: number]: number; }; constructor(core: Core, options: ILabelSetOptions); update(elapsedTime: number): void; } export interface ITransitionLabelSetOptions extends ILabelSetOptions { offset?: number; count?: number; glyphOffsets: Uint32Array; hover?: Float64Array | Uint32Array; order?: Float64Array | Uint32Array; minOrder?: number; maxOrder?: number; orderReverse?: boolean; staggerOrder?: number; staggerOrders?: Float64Array | Uint32Array; minStaggerOrder?: number; maxStaggerOrder?: number; staggerOrderReverse?: boolean; } export declare class TransitionLabelSet { private _core; private _vec2; private _vec3; private _vec4; private _quat; private _topLeft; private _topRight; private _bottomLeft; private _bottomRight; private _offset; private _textMetric; isInitialized: boolean; pickIdLookup: { [index: number]: number; }; constructor(core: Core); update(buffer: IBufferVisual, labelIds: Uint32Array, options: ITransitionLabelSetOptions): void; } export {};