import { IDisposable } from "../../Interfaces/IDisposable"; import { Nullable } from "../../types"; export type InfoPointsStyle = { borderColor?: string; innerPointColor?: string; color?: string; highlightColor?: string; }; export type ImagePanelStyle = { backgroundColor?: string; loadingTextColor?: string; buttonsBorderColor?: string; buttonsColor?: string; buttonsBorderHighlightColor?: string; buttonsHighlightColor?: string; buttonsIconColor?: string; }; export type InfoPointsManagerStyle = { infoPointsStyle?: InfoPointsStyle; imagePanelStyle?: ImagePanelStyle; }; export type InfoPointPickedEventArgs = { meshID: string; materialID: string | null; materialPhotoUrl: string[]; }; export type InfoPointPickedEventListener = (evt: InfoPointPickedEventArgs) => void; export type InfoPointContentShownListener = () => void; export type InfoPointContentHiddenListener = () => void; export declare class InfoPointsManager implements IDisposable { private _zkScene; private _scene; private _sceneHelper; private _style; private _rootContainer; private _meshesInfoPoints; private _infoPoints; private _imageUrls; private _currentIdx; private _imagePanel; private _loadingText; private _image; private _closeImageButton; private _moveNextImageButton; private _movePrevImageButton; private _isOnMoveNextButton; private _isOnMovePrevButton; private _lastCameraPosition; onBeforeShowImages: Nullable<() => void>; onAfterShowImages: Nullable<() => void>; private _infoPointsShown; get infoPointsShown(): boolean; private _canShowInfoPointsContent; get canShowInfoPointsContent(): boolean; set canShowInfoPointsContent(value: boolean); private _infoPointPickedListeners; private _infoPointContentShownListeners; private _infoPointContentHiddenListeners; private _renderingNeededListeners; private CLOSE_SVG; private CHEVRON_LEFT_SVG; private CHEVRON_RIGHT_SVG; constructor(zkScene: Zakeke.Scene, scene: BABYLON.Scene, style?: InfoPointsManagerStyle); dispose(): void; private setDefaultStyle; private setStyle; applyStyle(style: Nullable): void; showInfoPoints(): void; hideInfoPoints(): void; refresh(): void; private getAllInfoPoints; private refreshInfoPoints; private removeMeshInfoPoints; private getOrCreateMeshInfoPoint; private updateInfoPointUrls; private createMeshInfoPoint; private getMaterialInfoPoint; private getMaterialPhotoUrls; private getOrCreateImagePanel; private createImagePanel; private addCloseButton; private addMoveNextImageButton; private addMovePrevImageButton; private updateMoveNextImageButton; private updateMovePrevImageButton; private showImages; private moveNextImage; private movePrevImage; private showCurrentImage; private canMoveNextImage; private canMovePrevImage; private hideImages; private showImage; /** * Update info points visibility and return true if at least one info point has been updated. * * @return {boolean} Return true if any info point has been updated. */ updateInfoPointsVisibility(): boolean; drawRay(origin: BABYLON.Vector3, forward: BABYLON.Vector3): void; private updateMeshInfoPointVisibility; private getCloseSvg; private getChevronLeftSvg; private getChevronRightSvg; private getSvg; private fireInfoPointPickedEvent; addInfoPointPickedListener(listenerFunction: InfoPointPickedEventListener): void; addInfoPointPickedListenerRange(listenerFunctions: InfoPointPickedEventListener[]): void; private fireInfoPointContentShownEvent; addInfoPointContentShownListener(listenerFunction: InfoPointContentShownListener): void; addInfoPointContentShownListenerRange(listenerFunctions: InfoPointContentShownListener[]): void; private fireInfoPointContentHiddenEvent; addInfoPointContentHiddenListener(listenerFunction: InfoPointContentHiddenListener): void; addInfoPointContentHiddenListenerRange(listenerFunctions: InfoPointContentHiddenListener[]): void; private fireRenderingNeededEvent; addRenderingNeededListener(listenerFunction: () => void): void; showLoadingText(): void; hideLoadingText(): void; private updateGuiElementsStyle; private updateMeshInfoPointsStyle; private updateImagePanelStyle; }