/** * Compute 2D bounding box from projected faces. * @param {import('./heerich.js').Face[]} faces * @returns {{x: number, y: number, w: number, h: number}} */ export function computeBounds(faces: import("./heerich.js").Face[]): { x: number; y: number; w: number; h: number; }; /** * SVG renderer for Heerich voxel scenes. * Consumes the output of `getFaces()` / `renderTest()` and produces an SVG string. */ export class SVGRenderer { /** * Render projected faces to an SVG string. * @param {import('./heerich.js').Face[]} faces - Projected, depth-sorted face array * @param {Object} [options] * @param {number} [options.padding=20] - ViewBox padding in pixels * @param {[number,number,number,number]} [options.viewBox] - Custom viewBox override * @param {[number,number]} [options.offset=[0,0]] - Translate all geometry * @param {string} [options.prepend] - Raw SVG to insert before faces * @param {string} [options.append] - Raw SVG to insert after faces * @param {boolean} [options.occlusion=false] - Enable built-in occlusion culling (no external dependency needed) * @param {function(number[][], number[][][]): string|null} [options.resolveOcclusion] - Custom occlusion resolver (overrides built-in). Providing this implicitly enables occlusion. * @param {function(import('./heerich.js').Face): Object|null} [options.faceAttributes] - Per-face attribute callback * @param {number} [options.tileW] - Voxel tile pixel width (for content face transforms) * @param {Map} [options.decals] - Registered decal definitions * @returns {string} SVG markup */ render(faces: import("./heerich.js").Face[], options?: { padding?: number; viewBox?: [number, number, number, number]; offset?: [number, number]; prepend?: string; append?: string; occlusion?: boolean; resolveOcclusion?: (arg0: number[][], arg1: number[][][]) => string | null; faceAttributes?: (arg0: import("./heerich.js").Face) => any | null; tileW?: number; decals?: Map; }): string; }