/** * Fixed-point arithmetic utilities for rasterization * * FreeType uses several fixed-point formats: * - F26Dot6: 26.6 format (64 units per pixel) for coordinates * - F16Dot16: 16.16 format for high-precision calculations * - F2Dot14: 2.14 format for normalized vectors */ export declare const PIXEL_BITS = 8; export declare const ONE_PIXEL: number; export declare const PIXEL_MASK: number; export declare const F26DOT6_SHIFT = 6; export declare const F26DOT6_ONE: number; export declare const F16DOT16_SHIFT = 16; export declare const F16DOT16_ONE: number; /** * Convert float to 26.6 fixed-point */ export declare function floatToF26Dot6(x: number): number; /** * Convert 26.6 fixed-point to float */ export declare function f26Dot6ToFloat(x: number): number; /** * Convert float to internal raster coordinates (PIXEL_BITS precision) * Input is in font units, output has 256 subpixel levels per pixel */ export declare function floatToPixel(x: number, scale: number): number; /** * Truncate to pixel (floor for positive, ceil for negative) */ export declare function truncPixel(x: number): number; /** * Get fractional part (0 to ONE_PIXEL-1) */ export declare function fracPixel(x: number): number; /** * Round to nearest pixel */ export declare function roundPixel(x: number): number; /** * Floor to pixel boundary */ export declare function floorPixel(x: number): number; /** * Ceiling to pixel boundary */ export declare function ceilPixel(x: number): number; /** * Upscale from 26.6 to internal PIXEL_BITS format * PIXEL_BITS=8 means 2 extra bits of precision vs 26.6 */ export declare function upscale(x: number): number; /** * Downscale from internal format to 26.6 */ export declare function downscale(x: number): number; /** * Multiply two fixed-point numbers and divide, avoiding overflow * Computes (a * b) / c with 64-bit intermediate precision when needed */ export declare function mulDiv(a: number, b: number, c: number): number; /** * Multiply two 16.16 fixed-point numbers */ export declare function mulFix(a: number, b: number): number; /** * Divide two numbers and return 16.16 fixed-point result */ export declare function divFix(a: number, b: number): number; /** * Fast approximation of sqrt(x*x + y*y) using "alpha max plus beta min" algorithm. * Uses alpha = 1, beta = 3/8 for max error < 7% vs exact value. * From FreeType's FT_HYPOT macro. */ export declare function hypot(x: number, y: number): number; /** * Calculate the length of a 2D vector (integer math) * Uses FreeType's "alpha max plus beta min" approximation */ export declare function vectorLength(dx: number, dy: number): number; /** * Normalize a 2D vector to unit length (16.16 fixed-point output) */ export declare function normalizeVector(dx: number, dy: number): { x: number; y: number; }; /** * Clamp value to range */ export declare function clamp(x: number, min: number, max: number): number; /** * Absolute value */ export declare function abs(x: number): number; /** * Sign of value (-1, 0, or 1) */ export declare function sign(x: number): number;