/** * Registration Mark Generation for Brother ScanNCut Print-and-Cut * * This module provides utilities for generating registration marks * both as SVG (for printing) and as FCM alignment data (for cutting). * * Registration Mark Design: * Brother ScanNCut uses a bullseye pattern with a horizontal bar: * - White background (16mm × 18mm) * - Outer ring (r=5mm, stroke=1mm) * - Inner ring (r=3mm, stroke=1mm) * - Center dot (r=1mm) * - Horizontal bar (10mm × 1mm) * * Layout Rules: * - 4 marks positioned at corners of the printable area * - X inset: 12.0mm from left/right edges * - Y inset: ~14.0mm from top/bottom edges (13.98mm exactly) */ import { Point } from "./point.js"; /** Registration mark dimensions (all values in mm) */ export declare const dimensions: { /** White background rectangle width */ readonly BG_WIDTH_MM: 16; /** White background rectangle height */ readonly BG_HEIGHT_MM: 18; /** Center dot radius */ readonly CENTER_DOT_RADIUS_MM: 0.99; /** Inner ring outer radius */ readonly INNER_RING_OUTER_MM: 3; /** Inner ring inner radius */ readonly INNER_RING_INNER_MM: 2; /** Outer ring outer radius */ readonly OUTER_RING_OUTER_MM: 5; /** Outer ring inner radius */ readonly OUTER_RING_INNER_MM: 4; /** Horizontal bar width */ readonly BAR_WIDTH_MM: 10; /** Horizontal bar height */ readonly BAR_HEIGHT_MM: 1; /** Standard X inset from page edge to mark center */ readonly X_INSET_MM: 12; /** Standard Y inset from page edge to mark center */ readonly Y_INSET_MM: 13.98; }; /** Page size definition */ export interface PageSize { width_mm: number; height_mm: number; } /** Common page sizes */ export declare const PageSizes: { /** US Letter: 8.5" × 11" */ readonly LETTER: PageSize; /** ISO A4: 210mm × 297mm */ readonly A4: PageSize; /** 12" × 12" craft mat */ readonly SQUARE_12: PageSize; /** 12" × 24" craft mat */ readonly LONG_12X24: PageSize; }; /** Convert page size to FCM units (hundredths of mm) */ export declare function pageToFcmUnits(page: PageSize): { width: number; height: number; }; /** Position of a single registration mark */ export interface MarkPosition { /** X coordinate of mark center in mm */ x_mm: number; /** Y coordinate of mark center in mm */ y_mm: number; } /** Convert mark position to FCM Point (hundredths of mm) */ export declare function markToFcmPoint(pos: MarkPosition): Point; /** Convert mark position to SVG coordinates at given DPI */ export declare function markToSvgCoords(pos: MarkPosition, dpi: number): { x: number; y: number; }; /** Calculate the 4 registration mark positions for a given page size */ export declare function calculateMarkPositions(page: PageSize): [MarkPosition, MarkPosition, MarkPosition, MarkPosition]; /** Get FCM AlignmentData marks for a page size */ export declare function getFcmAlignmentMarks(page: PageSize): Point[]; /** Generate a single registration mark as SVG at the given center position */ export declare function generateMarkSvg(cx: number, cy: number, id: string): string; /** Generate complete SVG with all 4 registration marks for a page */ export declare function generateRegistrationMarksSvg(page: PageSize): string; /** Generate a single registration mark as standalone SVG (for embedding) */ export declare function generateSingleMarkSvg(): string;