mirror of
https://github.com/visioncortex/vtracer.git
synced 2026-09-14 08:05:58 -07:00
749f0df0bd
New nodejs/ package: a wasm-bindgen crate (vtracer-wasm) built with wasm-pack that wraps the vtracer framework, plus a thin JS layer for file I/O. Image decoding (png/jpeg/gif/bmp via the image crate) runs in wasm too, so the package has zero native dependencies — no sharp, no node-gyp. No separate general-purpose wasm crate: the Node package directly owns and wraps the wasm. Excluded from the cargo workspace (wasm-bindgen cdylib), built with wasm-pack. JS API (camelCase options): convertBuffer, convertPixels, convertFile, convertFileSync — each taking an Options object (preset, colorMode, hierarchical/cutout mosaic, mode, palette, maxColors, optimize, ...). Ships index.d.ts types and a node smoke test. README updated. Verified: builds to wasm32-unknown-unknown; `node test.js` passes; output matches the CLI/Python bindings (253 paths on the tank sample).
35 lines
1.4 KiB
TypeScript
35 lines
1.4 KiB
TypeScript
/** Conversion options. Any field may be omitted; omitted fields use the framework default. */
|
|
export interface Options {
|
|
/** Applied before other fields: "bw" | "poster" | "photo". */
|
|
preset?: 'bw' | 'poster' | 'photo';
|
|
colorMode?: 'color' | 'bw';
|
|
hierarchical?: 'stacked' | 'cutout';
|
|
mode?: 'pixel' | 'polygon' | 'spline';
|
|
filterSpeckle?: number;
|
|
colorPrecision?: number;
|
|
layerDifference?: number;
|
|
cornerThreshold?: number;
|
|
lengthThreshold?: number;
|
|
maxIterations?: number;
|
|
spliceThreshold?: number;
|
|
pathPrecision?: number;
|
|
/** Fixed palette: `#rrggbb` strings. */
|
|
palette?: string[];
|
|
/** Auto-quantize target color count. */
|
|
maxColors?: number;
|
|
/** 0 = off, 1 = quantize+simplify, 2 = + shorthands/grouping. */
|
|
optimize?: number;
|
|
}
|
|
|
|
/** Vectorize an encoded image (PNG/JPEG/GIF/BMP) buffer to an SVG string. */
|
|
export function convertBuffer(buffer: Uint8Array, options?: Options): string;
|
|
|
|
/** Vectorize a raw RGBA8 buffer (`width * height * 4` bytes) to an SVG string. */
|
|
export function convertPixels(rgba: Uint8Array, width: number, height: number, options?: Options): string;
|
|
|
|
/** Read an image file, vectorize it, and write the SVG to disk. */
|
|
export function convertFile(inputPath: string, outputPath: string, options?: Options): Promise<void>;
|
|
|
|
/** Synchronous {@link convertFile}. */
|
|
export function convertFileSync(inputPath: string, outputPath: string, options?: Options): void;
|