@pixagram/renderart 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -190,80 +190,56 @@ declare const HEX_PRESETS: Record<string, Partial<HexOptions>>;
190
190
  /**
191
191
  * WASM Module Loader
192
192
  *
193
- * Handles loading and initialization of the Rust WASM module.
194
- * Requires explicit initialization - does NOT auto-import WASM.
195
- *
196
- * @example
197
- * ```typescript
198
- * import { initWasm } from '@pixagram/renderart';
199
- * import init from '@pixagram/renderart/pkg/renderart_wasm.js';
200
- *
201
- * // Initialize with the WASM module
202
- * await initWasm(init);
203
- * ```
193
+ * Auto-initializes WASM from URL. Works with any bundler.
204
194
  */
205
195
 
206
196
  /**
207
- * Initialize WASM module
197
+ * Configure WASM loading path
198
+ * Call this before using any CPU renderer if you need a custom path.
208
199
  *
209
- * @param wasmInit - The init function from renderart_wasm.js
210
- * @param wasmUrl - Optional URL to the .wasm file (for custom loading)
200
+ * @param url - URL to the renderart_wasm_bg.wasm file
211
201
  *
212
202
  * @example
213
203
  * ```typescript
214
- * // Option 1: Let wasm-pack handle loading
215
- * import init, * as wasm from '@pixagram/renderart/pkg/renderart_wasm.js';
216
- * await initWasm(init, wasm);
217
- *
218
- * // Option 2: With custom WASM URL
219
- * import init, * as wasm from '@pixagram/renderart/pkg/renderart_wasm.js';
220
- * await initWasm(() => init('/path/to/renderart_wasm_bg.wasm'), wasm);
204
+ * setWasmUrl('/static/wasm/renderart_wasm_bg.wasm');
221
205
  * ```
222
206
  */
223
- declare function initWasm(wasmInit: () => Promise<void>, wasm: any): Promise<void>;
207
+ declare function setWasmUrl(url: string): void;
208
+ /**
209
+ * Initialize WASM module
210
+ * Called automatically on first CPU renderer use.
211
+ * Can be called manually for preloading.
212
+ */
213
+ declare function initWasm(customUrl?: string): Promise<void>;
224
214
  /** Check if WASM is loaded */
225
215
  declare function isWasmLoaded(): boolean;
226
- /** Get the WASM module (throws if not initialized) */
227
- declare function getWasmModule(): any;
228
216
  /** CRT CPU Renderer using WASM */
229
217
  declare class CrtCpuRenderer {
230
218
  private ready;
231
- /** Create renderer (WASM must be initialized first via initWasm) */
232
- static create(): CrtCpuRenderer;
233
- /** Check if renderer is ready */
219
+ /** Create and initialize renderer (auto-loads WASM) */
220
+ static create(): Promise<CrtCpuRenderer>;
234
221
  isReady(): boolean;
235
- /** Render CRT effect */
236
222
  render(input: ImageInput | ImageData, options?: CrtOptions): ImageOutput;
237
- /** Dispose resources */
238
223
  dispose(): void;
239
224
  }
240
225
  /** HEX CPU Renderer using WASM */
241
226
  declare class HexCpuRenderer {
242
227
  private ready;
243
- /** Create renderer (WASM must be initialized first via initWasm) */
244
- static create(): HexCpuRenderer;
245
- /** Check if renderer is ready */
228
+ static create(): Promise<HexCpuRenderer>;
246
229
  isReady(): boolean;
247
- /** Render hexagonal effect */
248
230
  render(input: ImageInput | ImageData, options?: HexOptions): ImageOutput;
249
- /** Get output dimensions */
250
231
  getDimensions(srcWidth: number, srcHeight: number, scale: number, orientation?: HexOrientation): {
251
232
  width: number;
252
233
  height: number;
253
234
  };
254
- /** Dispose resources */
255
235
  dispose(): void;
256
236
  }
257
237
  /** XBRZ CPU Renderer using WASM */
258
238
  declare class XbrzCpuRenderer {
259
239
  private ready;
260
- /** Create renderer (WASM must be initialized first via initWasm) */
261
- static create(): XbrzCpuRenderer;
262
- /** Check if renderer is ready */
240
+ static create(): Promise<XbrzCpuRenderer>;
263
241
  isReady(): boolean;
264
- /** Render xBRZ scaling */
265
242
  render(input: ImageInput | ImageData, options?: XbrzOptions): ImageOutput;
266
- /** Dispose resources */
267
243
  dispose(): void;
268
244
  }
269
245
  /** XBRZ presets */
@@ -272,77 +248,47 @@ declare const XBRZ_PRESETS: Record<string, Partial<XbrzOptions>>;
272
248
  /**
273
249
  * RenderArt - Unified Pixel Art Rendering Engine
274
250
  *
275
- * Provides a unified API for all rendering engines (CRT, HEX, XBRZ)
276
- * with automatic backend selection (GPU/CPU).
277
- *
278
- * GPU renderers work standalone. CPU renderers require WASM initialization.
279
- *
280
- * @example
281
- * ```typescript
282
- * // GPU-only (no WASM needed)
283
- * const renderer = RenderArt.createGpuOnly();
284
- * const result = renderer.crt.renderSync(imageData, { scale: 3 });
285
- *
286
- * // With CPU fallback (requires WASM init)
287
- * import init, * as wasm from '@pixagram/renderart/pkg/renderart_wasm.js';
288
- * await initWasm(init, wasm);
289
- * const renderer = RenderArt.create();
290
- * ```
251
+ * GPU renderers work standalone. CPU renderers auto-initialize WASM.
291
252
  */
292
253
 
293
- /** CRT rendering engine with GPU/CPU backend support */
254
+ /** CRT rendering engine */
294
255
  declare class CrtEngine {
295
256
  private gpuRenderer;
296
257
  private cpuRenderer;
297
258
  private gpuAvailable;
298
- private cpuAvailable;
299
- constructor(gpuAvailable: boolean, cpuAvailable: boolean);
300
- /** Initialize GPU renderer */
259
+ constructor(gpuAvailable: boolean);
301
260
  private ensureGpu;
302
- /** Initialize CPU renderer */
303
261
  private ensureCpu;
304
262
  /** Render with automatic backend selection */
305
- render(input: ImageInput | ImageData, options?: CrtOptions): ImageOutput;
306
- /** Render with preset */
307
- render(input: ImageInput | ImageData, preset: CrtPreset, overrides?: Partial<CrtOptions>): ImageOutput;
263
+ render(input: ImageInput | ImageData, options?: CrtOptions): Promise<ImageOutput>;
264
+ render(input: ImageInput | ImageData, preset: CrtPreset, overrides?: Partial<CrtOptions>): Promise<ImageOutput>;
308
265
  /** Render synchronously (GPU only) */
309
266
  renderSync(input: ImageInput | ImageData, options?: CrtOptions): ImageOutput;
310
- /** Dispose resources */
311
267
  dispose(): void;
312
268
  }
313
- /** HEX rendering engine with GPU/CPU backend support */
269
+ /** HEX rendering engine */
314
270
  declare class HexEngine {
315
271
  private gpuRenderer;
316
272
  private cpuRenderer;
317
273
  private gpuAvailable;
318
- private cpuAvailable;
319
- constructor(gpuAvailable: boolean, cpuAvailable: boolean);
274
+ constructor(gpuAvailable: boolean);
320
275
  private ensureGpu;
321
276
  private ensureCpu;
322
- /** Render with automatic backend selection */
323
- render(input: ImageInput | ImageData, options?: HexOptions): ImageOutput;
324
- /** Render with preset */
325
- render(input: ImageInput | ImageData, preset: HexPreset, overrides?: Partial<HexOptions>): ImageOutput;
326
- /** Render synchronously (GPU only) */
277
+ render(input: ImageInput | ImageData, options?: HexOptions): Promise<ImageOutput>;
278
+ render(input: ImageInput | ImageData, preset: HexPreset, overrides?: Partial<HexOptions>): Promise<ImageOutput>;
327
279
  renderSync(input: ImageInput | ImageData, options?: HexOptions): ImageOutput;
328
- /** Get output dimensions */
329
280
  getDimensions(srcWidth: number, srcHeight: number, options?: HexOptions): {
330
281
  width: number;
331
282
  height: number;
332
283
  };
333
284
  dispose(): void;
334
285
  }
335
- /** XBRZ rendering engine (CPU only - algorithm too complex for efficient GPU) */
286
+ /** XBRZ rendering engine (CPU only) */
336
287
  declare class XbrzEngine {
337
288
  private cpuRenderer;
338
- private cpuAvailable;
339
- constructor(cpuAvailable: boolean);
340
289
  private ensureCpu;
341
- /** Render xBRZ scaling */
342
- render(input: ImageInput | ImageData, options?: XbrzOptions): ImageOutput;
343
- /** Render with preset */
344
- render(input: ImageInput | ImageData, preset: XbrzPreset, overrides?: Partial<XbrzOptions>): ImageOutput;
345
- /** Get output dimensions */
290
+ render(input: ImageInput | ImageData, options?: XbrzOptions): Promise<ImageOutput>;
291
+ render(input: ImageInput | ImageData, preset: XbrzPreset, overrides?: Partial<XbrzOptions>): Promise<ImageOutput>;
346
292
  getDimensions(srcWidth: number, srcHeight: number, scale?: number): {
347
293
  width: number;
348
294
  height: number;
@@ -351,29 +297,19 @@ declare class XbrzEngine {
351
297
  }
352
298
  /** RenderArt - Unified Pixel Art Rendering Engine */
353
299
  declare class RenderArt {
354
- /** CRT effect renderer */
355
300
  readonly crt: CrtEngine;
356
- /** Hexagonal pixel renderer */
357
301
  readonly hex: HexEngine;
358
- /** xBRZ scaling renderer */
359
302
  readonly xbrz: XbrzEngine;
360
303
  private _capabilities;
361
304
  private constructor();
362
- /**
363
- * Create RenderArt instance
364
- * GPU renderers always available if WebGL2 supported.
365
- * CPU renderers require WASM to be initialized via initWasm() first.
366
- */
305
+ /** Create RenderArt instance */
367
306
  static create(): RenderArt;
368
- /**
369
- * Create GPU-only RenderArt instance (no WASM required)
370
- * CPU fallback will not be available.
371
- */
307
+ /** Create GPU-only instance */
372
308
  static createGpuOnly(): RenderArt;
373
- /** Get renderer capabilities */
309
+ /** Pre-initialize WASM for faster first CPU render */
310
+ preloadWasm(wasmUrl?: string): Promise<void>;
374
311
  get capabilities(): RendererCapabilities;
375
- /** Dispose all resources */
376
312
  dispose(): void;
377
313
  }
378
314
 
379
- export { type Backend, CRT_PRESETS, CrtCpuRenderer, CrtEngine, CrtGpuRenderer, type CrtOptions, type CrtPreset, HEX_PRESETS, HexCpuRenderer, HexEngine, HexGpuRenderer, type HexOptions, type HexOrientation, type HexPreset, type ImageInput, type ImageOutput, type PixelData, RenderArt, type RenderStats, type Renderer, type RendererCapabilities, XBRZ_PRESETS, XbrzCpuRenderer, XbrzEngine, type XbrzOptions, type XbrzPreset, getWasmModule, hexGetDimensions, initWasm, isWasmLoaded };
315
+ export { type Backend, CRT_PRESETS, CrtCpuRenderer, CrtEngine, CrtGpuRenderer, type CrtOptions, type CrtPreset, HEX_PRESETS, HexCpuRenderer, HexEngine, HexGpuRenderer, type HexOptions, type HexOrientation, type HexPreset, type ImageInput, type ImageOutput, type PixelData, RenderArt, type RenderStats, type Renderer, type RendererCapabilities, XBRZ_PRESETS, XbrzCpuRenderer, XbrzEngine, type XbrzOptions, type XbrzPreset, hexGetDimensions, initWasm, isWasmLoaded, setWasmUrl };