/** * @nexart/ui-renderer - Canvas Scaler * * Scales canvas resolution for preview rendering. * Preview renderer does NOT render at full mint resolution. * * ╔══════════════════════════════════════════════════════════════════════════╗ * ║ CANVAS SCALING — PERFORMANCE CRITICAL ║ * ║ ║ * ║ Max dimension: 900px ║ * ║ Preserves aspect ratio ║ * ║ Uses CSS scaling for display ║ * ╠══════════════════════════════════════════════════════════════════════════╣ * ║ ARCHITECTURAL INVARIANT (v0.8.2+): ║ * ║ ║ * ║ Scaling is a RENDERING concern, NOT a SEMANTIC one. ║ * ║ ║ * ║ - Canvas buffer: scaled (renderWidth × renderHeight) ║ * ║ - Runtime width/height: ALWAYS original protocol dimensions ║ * ║ - Context transform: ctx.scale() maps original → render space ║ * ║ ║ * ║ This ensures sketch math works identically in preview and Code Mode. ║ * ╚══════════════════════════════════════════════════════════════════════════╝ */ export interface ScaledDimensions { /** Scaled width for rendering */ renderWidth: number; /** Scaled height for rendering */ renderHeight: number; /** Original width */ originalWidth: number; /** Original height */ originalHeight: number; /** Scale factor applied */ scaleFactor: number; /** Whether scaling was applied */ wasScaled: boolean; } /** * Calculate scaled dimensions for preview rendering. * Maintains aspect ratio, caps at MAX_DIMENSION. */ export declare function calculateScaledDimensions(width: number, height: number): ScaledDimensions; /** * Apply scaled dimensions to a canvas element. * Sets canvas internal resolution and CSS display size. */ export declare function applyScaledDimensions(canvas: HTMLCanvasElement, dimensions: ScaledDimensions): void; /** * Scale coordinates from original space to render space. * Used when the sketch uses original coordinates but canvas is scaled. */ export declare function scaleCoordinate(value: number, scaleFactor: number): number; /** * Create a scaling transform for the canvas context. * This allows sketches to use original coordinates while rendering at scaled resolution. */ export declare function applyScaleTransform(ctx: CanvasRenderingContext2D, scaleFactor: number): void; /** * Reapply context scale after canvas resize. * * NOTE: * Canvas resizing resets the 2D context transform. * The UI renderer downsamples the canvas for performance, * so we must reapply the internal scale factor once after resize. * This runtime is preview-only and intentionally non-deterministic. * * @param canvas - The canvas element * @param dimensions - The scaled dimensions object */ export declare function reapplyContextScale(canvas: HTMLCanvasElement, dimensions: ScaledDimensions): void; /** * Clear the canvas ignoring any active transforms. * Ensures full canvas is cleared even when scaled. * * @param ctx - The 2D rendering context * @param canvas - The canvas element (for dimensions) */ export declare function clearCanvasIgnoringTransform(ctx: CanvasRenderingContext2D, canvas: HTMLCanvasElement): void; //# sourceMappingURL=canvas-scaler.d.ts.map