import { mat3 } from 'gl-matrix'; interface CameraState { x: number; y: number; scale: number; targetX: number; targetY: number; targetScale: number; } /** * Manages camera transformations, zoom, and pan operations for flame graph * * Core principles: * - Horizontal scaling only (vertical scale always 1) * - Root frame always at least viewport width (min scale = 1) * - Selected frame centers in viewport and fills viewport width * - Proper bounds enforcement */ export declare class CameraController { #private; /** * Set the viewport dimensions */ setViewport(width: number, height: number): void; /** * Set whether we're in fixed height mode (draggable) or auto-height mode */ setFixedHeightMode(isFixed: boolean): void; /** * Set the total content height */ setContentHeight(height: number): void; /** * Get the current camera state */ getCamera(): CameraState; /** * Get the transformation matrix for rendering * Only horizontal scaling applied, vertical scale always 1 */ getMatrix(): mat3; /** * Check if vertical scrolling is needed */ isScrollable(): boolean; /** * Check if the camera can be panned (for UI cursor changes) */ canPan(): boolean; /** * Zoom to a specific frame * Frame will fill viewport width and be centered */ zoomToFrame(frameX1: number, frameX2: number): void; /** * Reset zoom to show full graph */ resetZoom(): void; /** * Zoom in/out by a factor at a specific point */ zoomAt(zoomFactor: number, centerX: number, centerY: number): void; /** * Pan the camera by the given deltas */ pan(deltaX: number, deltaY: number): void; /** * Scroll the camera vertically (for mouse wheel scrolling) * Only works in fixed height mode when content is scrollable */ scroll(deltaY: number): void; /** * Update camera animation (call each frame) */ update(): boolean; /** * Convert screen coordinates to world coordinates */ screenToWorld(screenX: number, screenY: number): { x: number; y: number; }; /** * Set camera position immediately (no animation) */ setImmediate(x: number, y: number, scale: number): void; } export {}; //# sourceMappingURL=CameraController.d.ts.map