import * as THREE from "three"; import { CBARContext } from "./CBARContext"; import { CBARScene } from "./components/CBARScene"; import { CBARObject3D } from "./components/CBARObject3D"; import { CBARSurfaceAsset } from "./assets"; import { CBARSurface } from "./components"; export declare enum CBARMode { None = 0, Video = 1, Image = 2 } export declare class CBARRenderContext { camera: THREE.PerspectiveCamera; scene: THREE.Scene; renderer: THREE.WebGLRenderer; renderTarget: THREE.WebGLRenderTarget; resolution: Point2D; constructor(camera: THREE.PerspectiveCamera, scene: THREE.Scene, renderer: THREE.WebGLRenderer, renderTarget: THREE.WebGLRenderTarget, resolution: Point2D); } export declare enum CBAREventType { ContextMenu = 0, Wheel = 1, TouchDown = 2, TouchMove = 3, TouchUp = 4, TouchLeave = 5, Rotate = 6, Translate = 7, DragStart = 8, DragMove = 9, DragEnd = 10, MouseOver = 11, MouseOut = 12 } export declare enum CBARHighlightState { None = "none", Hover = "hover", Selected = "selected", Drag = "drag" } export declare type CBARIntersection = { intersection: THREE.Intersection; object: CBARObject3D; }; export declare enum CBARToolMode { None = "", Rotate = "rotate", Translate = "translate", DrawSurface = "draw", EraseSurface = "erase" } export declare type Point2D = { x: number; y: number; }; export declare type Rectangle = { x: number; y: number; width: number; height: number; }; export declare class CBAREvent { type: CBAREventType; context: CBARContext; scene: CBARScene; toolMode: CBARToolMode; constructor(type: CBAREventType, context: CBARContext, scene: CBARScene, toolMode: CBARToolMode); } export declare class CBARMouseEvent extends CBAREvent { mouseEvent: any; point: THREE.Vector2; intersections: CBARIntersection[]; constructor(type: CBAREventType, context: CBARContext, scene: CBARScene, toolMode: CBARToolMode, mouseEvent: any, point: THREE.Vector2, intersections: CBARIntersection[]); get screenPoint(): Point2D; protected get assetIntersections(): CBARIntersection[]; private _surface; forward?: THREE.Vector3; get surface(): CBARSurface | undefined; private _asset; get asset(): CBARSurfaceAsset | undefined; _overwrite(surface: CBARSurface | undefined | null, asset: CBARSurfaceAsset | undefined | null): void; } export declare type CBAREventHandler = (event: CBAREvent) => void; export declare type CBARMouseEventHandler = (event: CBARMouseEvent) => void; export declare type CBARVector = number[]; export declare enum CBARSurfaceType { None = "None", Floor = "Floor", OnFloor = "OnFloor", Ceiling = "Ceiling", OnCeiling = "OnCeiling", Wall = "Wall", OnWall = "OnWall", Other = "Other" } export declare const getSurfaceType: (surfaceJSON: any) => CBARSurfaceType; export declare enum CBARAssetType { Model = "model", TiledSurface = "tiled-surface", SurfaceModel = "surface-model", PaintSurface = "paint-surface", TiledRectangle = "tiled-rectangle", Rug = "tiled-rug" } export declare const surfaceTypeByNormal: (normal: THREE.Vector3) => CBARSurfaceType.Floor | CBARSurfaceType.Ceiling | CBARSurfaceType.Wall; export declare const snapNormalToSurfaceType: (normal: THREE.Vector3, surfaceType: CBARSurfaceType) => THREE.Vector3; export declare class CBMaterialProperties { readonly ppi: number; readonly diffuseUrl: string; readonly normalsUrl?: string | undefined; readonly specularUrl?: string | undefined; constructor(ppi: number, diffuseUrl: string, normalsUrl?: string | undefined, specularUrl?: string | undefined); } export declare enum CBARServerFile { Background = "main", Lighting = "lighting", IndexMask = "index_mask" } export declare const CBARUploadNames: { Preview: string; Pinterest: string; Brand: string; }; export declare type CBARSuperpixelData = { pixels: [number, number][]; center: [number, number]; meanRadius: number; }; export declare class CBARHistoryState { private readonly data; constructor(source: HTMLCanvasElement); restoreInto(source: HTMLCanvasElement, completed: () => void): void; }