@amigo-labs/pincel-wasm 1.5.0 → 1.6.0

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/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@amigo-labs/pincel-wasm",
3
3
  "type": "module",
4
4
  "description": "WebAssembly bindings for the Pincel core (wasm-bindgen / wasm-pack target)",
5
- "version": "1.5.0",
5
+ "version": "1.6.0",
6
6
  "license": "MIT OR Apache-2.0",
7
7
  "repository": {
8
8
  "type": "git",
package/pincel_wasm.d.ts CHANGED
@@ -1243,6 +1243,12 @@ export class Document {
1243
1243
  * follow-up).
1244
1244
  */
1245
1245
  undo(): boolean;
1246
+ /**
1247
+ * A [`Vectorizer`] over `frame` composed like
1248
+ * [`exportPng`](Document::export_png): zoom 1, visible layers, no onion
1249
+ * skin, no overlays.
1250
+ */
1251
+ vectorizer(frame: number): Vectorizer;
1246
1252
  /**
1247
1253
  * Frame the UI is currently viewing / editing (0-based). All paint
1248
1254
  * paths target it. See [`Document::set_current_frame`].
@@ -1380,6 +1386,46 @@ export class Event {
1380
1386
  readonly y: number;
1381
1387
  }
1382
1388
 
1389
+ /**
1390
+ * The SVG of one trace and its counts.
1391
+ */
1392
+ export class VectorizeResult {
1393
+ private constructor();
1394
+ free(): void;
1395
+ [Symbol.dispose](): void;
1396
+ /**
1397
+ * Number of layers (one per colour).
1398
+ */
1399
+ readonly layers: number;
1400
+ /**
1401
+ * Number of outlines over all layers.
1402
+ */
1403
+ readonly outlines: number;
1404
+ /**
1405
+ * The SVG document.
1406
+ */
1407
+ readonly svg: string;
1408
+ /**
1409
+ * The monochrome threshold used, or −1 outside monochrome mode.
1410
+ */
1411
+ readonly threshold: number;
1412
+ }
1413
+
1414
+ /**
1415
+ * Traces one source image repeatedly; keeps the core's caches between
1416
+ * traces so a preview that changes only Potrace options stays cheap.
1417
+ */
1418
+ export class Vectorizer {
1419
+ private constructor();
1420
+ free(): void;
1421
+ [Symbol.dispose](): void;
1422
+ /**
1423
+ * Traces with `mode` (0 colours, 1 monochrome, 2 pixel-exact) and the
1424
+ * flat `params` vector; errors carry the core's message.
1425
+ */
1426
+ trace(mode: number, params: Float64Array): VectorizeResult;
1427
+ }
1428
+
1383
1429
  /**
1384
1430
  * Snake_case names of every blend mode, in file-format order.
1385
1431
  */
@@ -1519,34 +1565,14 @@ export interface InitOutput {
1519
1565
  readonly document_undoDepth: (a: number) => number;
1520
1566
  readonly document_width: (a: number) => number;
1521
1567
  readonly palettePresetNames: () => [number, number];
1522
- readonly __wbg_animationinfo_free: (a: number, b: number) => void;
1523
- readonly __wbg_event_free: (a: number, b: number) => void;
1524
- readonly animationinfo_defaultLoops: (a: number) => number;
1525
- readonly animationinfo_frameCount: (a: number) => number;
1526
- readonly animationinfo_gifApproximated: (a: number) => number;
1527
- readonly animationinfo_semiTransparent: (a: number) => number;
1528
- readonly document_animationInfo: (a: number, b: number, c: number) => [number, number, number];
1529
- readonly document_exportAnimation: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number, number, number];
1530
- readonly event_frame: (a: number) => number;
1531
- readonly event_height: (a: number) => number;
1532
- readonly event_kind: (a: number) => [number, number];
1533
- readonly event_width: (a: number) => number;
1534
- readonly event_x: (a: number) => number;
1535
- readonly event_y: (a: number) => number;
1536
- readonly event_layer: (a: number) => number;
1537
- readonly __wbg_copiedimage_free: (a: number, b: number) => void;
1538
- readonly copiedimage_height: (a: number) => number;
1539
- readonly copiedimage_png: (a: number) => [number, number];
1540
- readonly copiedimage_width: (a: number) => number;
1541
- readonly copiedimage_x: (a: number) => number;
1542
- readonly copiedimage_y: (a: number) => number;
1543
- readonly document_copySelection: (a: number, b: number) => [number, number, number];
1544
- readonly document_cutSelection: (a: number) => [number, number, number];
1545
- readonly document_imageKey: (a: number, b: number) => [number, number, number, number];
1546
- readonly document_pasteLayer: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number];
1568
+ readonly document_cropToSelection: (a: number) => [number, number, number];
1569
+ readonly document_resizeCanvas: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1570
+ readonly document_scaleImage: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1571
+ readonly document_transformCanvas: (a: number, b: number, c: number) => [number, number];
1572
+ readonly document_transformLayer: (a: number, b: number, c: number) => [number, number];
1547
1573
  readonly blendModeNames: () => [number, number];
1548
1574
  readonly document_addGroup: (a: number, b: number, c: number) => [number, number, number];
1549
- readonly document_beginStroke: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
1575
+ readonly document_applyEffect: (a: number, b: number, c: number, d: number, e: number) => [number, number, number];
1550
1576
  readonly document_duplicateLayer: (a: number, b: number) => [number, number, number];
1551
1577
  readonly document_flattenImage: (a: number) => [number, number, number];
1552
1578
  readonly document_layerBlendMode: (a: number, b: number) => [number, number];
@@ -1557,51 +1583,79 @@ export interface InitOutput {
1557
1583
  readonly document_layerThumbnail: (a: number, b: number, c: number, d: number) => [number, number, number];
1558
1584
  readonly document_mergeDown: (a: number, b: number) => [number, number];
1559
1585
  readonly document_moveLayerTo: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1586
+ readonly document_previewEffect: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number];
1560
1587
  readonly document_reorderLayer: (a: number, b: number, c: number) => [number, number];
1561
1588
  readonly document_setLayerBlendMode: (a: number, b: number, c: number, d: number) => [number, number];
1562
1589
  readonly document_setLayerEditable: (a: number, b: number, c: number) => [number, number];
1563
1590
  readonly document_setLayerOpacity: (a: number, b: number, c: number) => [number, number];
1564
- readonly document_strokeTo: (a: number, b: number, c: number, d: number) => [number, number];
1591
+ readonly effectNames: () => [number, number];
1592
+ readonly document_contractSelection: (a: number, b: number) => void;
1593
+ readonly document_drawText: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number) => [number, number, number];
1594
+ readonly document_expandSelection: (a: number, b: number) => void;
1595
+ readonly document_invertSelection: (a: number) => void;
1596
+ readonly document_previewText: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number) => [number, number, number];
1597
+ readonly document_selectAll: (a: number) => void;
1598
+ readonly document_selectEllipse: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
1599
+ readonly document_selectPolygon: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1600
+ readonly document_selectRect: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
1601
+ readonly document_selectWand: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => [number, number];
1602
+ readonly document_selectionIsRect: (a: number) => number;
1603
+ readonly document_selectionMask: (a: number) => [number, number];
1604
+ readonly registerFont: (a: number, b: number) => number;
1605
+ readonly __wbg_vectorizer_free: (a: number, b: number) => void;
1606
+ readonly __wbg_vectorizeresult_free: (a: number, b: number) => void;
1607
+ readonly document_vectorizer: (a: number, b: number) => [number, number, number];
1608
+ readonly vectorizer_trace: (a: number, b: number, c: number, d: number) => [number, number, number];
1609
+ readonly vectorizeresult_layers: (a: number) => number;
1610
+ readonly vectorizeresult_outlines: (a: number) => number;
1611
+ readonly vectorizeresult_svg: (a: number) => [number, number];
1612
+ readonly vectorizeresult_threshold: (a: number) => number;
1613
+ readonly __wbg_copiedimage_free: (a: number, b: number) => void;
1614
+ readonly copiedimage_height: (a: number) => number;
1615
+ readonly copiedimage_png: (a: number) => [number, number];
1616
+ readonly copiedimage_width: (a: number) => number;
1617
+ readonly copiedimage_x: (a: number) => number;
1618
+ readonly copiedimage_y: (a: number) => number;
1619
+ readonly document_copySelection: (a: number, b: number) => [number, number, number];
1620
+ readonly document_cutSelection: (a: number) => [number, number, number];
1621
+ readonly document_imageKey: (a: number, b: number) => [number, number, number, number];
1622
+ readonly document_importPngAsLayer: (a: number, b: number, c: number, d: number, e: number) => [number, number, number];
1623
+ readonly document_openPng: (a: number, b: number) => [number, number, number];
1624
+ readonly document_pasteLayer: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number];
1625
+ readonly __wbg_animationinfo_free: (a: number, b: number) => void;
1626
+ readonly __wbg_event_free: (a: number, b: number) => void;
1627
+ readonly animationinfo_defaultLoops: (a: number) => number;
1628
+ readonly animationinfo_frameCount: (a: number) => number;
1629
+ readonly animationinfo_gifApproximated: (a: number) => number;
1630
+ readonly animationinfo_semiTransparent: (a: number) => number;
1565
1631
  readonly document_addTag: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number];
1566
- readonly document_cropToSelection: (a: number) => [number, number, number];
1632
+ readonly document_animationInfo: (a: number, b: number, c: number) => [number, number, number];
1633
+ readonly document_applyShape: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number) => [number, number];
1634
+ readonly document_beginStroke: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
1635
+ readonly document_exportAnimation: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number, number, number];
1567
1636
  readonly document_frameDuration: (a: number, b: number) => [number, number, number];
1568
1637
  readonly document_onionSkinEnabled: (a: number) => number;
1569
1638
  readonly document_removeFrame: (a: number, b: number) => [number, number];
1570
1639
  readonly document_removeTag: (a: number, b: number) => [number, number];
1571
- readonly document_resizeCanvas: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1572
- readonly document_scaleImage: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1573
1640
  readonly document_setFrameDuration: (a: number, b: number, c: number) => [number, number];
1574
1641
  readonly document_setOnionSkin: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
1575
1642
  readonly document_setTagDirection: (a: number, b: number, c: number, d: number) => [number, number];
1576
1643
  readonly document_setTagName: (a: number, b: number, c: number, d: number) => [number, number];
1577
1644
  readonly document_setTagRange: (a: number, b: number, c: number, d: number) => [number, number];
1645
+ readonly document_strokeTo: (a: number, b: number, c: number, d: number) => [number, number];
1578
1646
  readonly document_tagColor: (a: number, b: number) => [number, number, number];
1579
1647
  readonly document_tagCount: (a: number) => number;
1580
1648
  readonly document_tagDirection: (a: number, b: number) => [number, number, number, number];
1581
1649
  readonly document_tagFrom: (a: number, b: number) => [number, number, number];
1582
1650
  readonly document_tagName: (a: number, b: number) => [number, number, number, number];
1583
1651
  readonly document_tagTo: (a: number, b: number) => [number, number, number];
1584
- readonly document_transformCanvas: (a: number, b: number, c: number) => [number, number];
1585
- readonly document_transformLayer: (a: number, b: number, c: number) => [number, number];
1586
- readonly document_contractSelection: (a: number, b: number) => void;
1587
- readonly document_drawText: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number) => [number, number, number];
1588
- readonly document_expandSelection: (a: number, b: number) => void;
1589
- readonly document_invertSelection: (a: number) => void;
1590
- readonly document_previewText: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number) => [number, number, number];
1591
- readonly document_selectAll: (a: number) => void;
1592
- readonly document_selectEllipse: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
1593
- readonly document_selectPolygon: (a: number, b: number, c: number, d: number, e: number) => [number, number];
1594
- readonly document_selectRect: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
1595
- readonly document_selectWand: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => [number, number];
1596
- readonly document_selectionIsRect: (a: number) => number;
1597
- readonly document_selectionMask: (a: number) => [number, number];
1598
- readonly registerFont: (a: number, b: number) => number;
1599
- readonly document_applyEffect: (a: number, b: number, c: number, d: number, e: number) => [number, number, number];
1600
- readonly document_applyShape: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number) => [number, number];
1601
- readonly document_previewEffect: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number];
1602
- readonly effectNames: () => [number, number];
1603
- readonly document_importPngAsLayer: (a: number, b: number, c: number, d: number, e: number) => [number, number, number];
1604
- readonly document_openPng: (a: number, b: number) => [number, number, number];
1652
+ readonly event_frame: (a: number) => number;
1653
+ readonly event_height: (a: number) => number;
1654
+ readonly event_kind: (a: number) => [number, number];
1655
+ readonly event_width: (a: number) => number;
1656
+ readonly event_x: (a: number) => number;
1657
+ readonly event_y: (a: number) => number;
1658
+ readonly event_layer: (a: number) => number;
1605
1659
  readonly __wbindgen_externrefs: WebAssembly.Table;
1606
1660
  readonly __wbindgen_free: (a: number, b: number, c: number) => void;
1607
1661
  readonly __externref_drop_slice: (a: number, b: number) => void;
package/pincel_wasm.js CHANGED
@@ -2779,6 +2779,20 @@ export class Document {
2779
2779
  const ret = wasm.document_undoDepth(this.__wbg_ptr);
2780
2780
  return ret >>> 0;
2781
2781
  }
2782
+ /**
2783
+ * A [`Vectorizer`] over `frame` composed like
2784
+ * [`exportPng`](Document::export_png): zoom 1, visible layers, no onion
2785
+ * skin, no overlays.
2786
+ * @param {number} frame
2787
+ * @returns {Vectorizer}
2788
+ */
2789
+ vectorizer(frame) {
2790
+ const ret = wasm.document_vectorizer(this.__wbg_ptr, frame);
2791
+ if (ret[2]) {
2792
+ throw takeFromExternrefTable0(ret[1]);
2793
+ }
2794
+ return Vectorizer.__wrap(ret[0]);
2795
+ }
2782
2796
  /**
2783
2797
  * Canvas width in pixels.
2784
2798
  * @returns {number}
@@ -2893,6 +2907,109 @@ export class Event {
2893
2907
  }
2894
2908
  if (Symbol.dispose) Event.prototype[Symbol.dispose] = Event.prototype.free;
2895
2909
 
2910
+ /**
2911
+ * The SVG of one trace and its counts.
2912
+ */
2913
+ export class VectorizeResult {
2914
+ static __wrap(ptr) {
2915
+ const obj = Object.create(VectorizeResult.prototype);
2916
+ obj.__wbg_ptr = ptr;
2917
+ VectorizeResultFinalization.register(obj, obj.__wbg_ptr, obj);
2918
+ return obj;
2919
+ }
2920
+ __destroy_into_raw() {
2921
+ const ptr = this.__wbg_ptr;
2922
+ this.__wbg_ptr = 0;
2923
+ VectorizeResultFinalization.unregister(this);
2924
+ return ptr;
2925
+ }
2926
+ free() {
2927
+ const ptr = this.__destroy_into_raw();
2928
+ wasm.__wbg_vectorizeresult_free(ptr, 0);
2929
+ }
2930
+ /**
2931
+ * Number of layers (one per colour).
2932
+ * @returns {number}
2933
+ */
2934
+ get layers() {
2935
+ const ret = wasm.vectorizeresult_layers(this.__wbg_ptr);
2936
+ return ret >>> 0;
2937
+ }
2938
+ /**
2939
+ * Number of outlines over all layers.
2940
+ * @returns {number}
2941
+ */
2942
+ get outlines() {
2943
+ const ret = wasm.vectorizeresult_outlines(this.__wbg_ptr);
2944
+ return ret >>> 0;
2945
+ }
2946
+ /**
2947
+ * The SVG document.
2948
+ * @returns {string}
2949
+ */
2950
+ get svg() {
2951
+ let deferred1_0;
2952
+ let deferred1_1;
2953
+ try {
2954
+ const ret = wasm.vectorizeresult_svg(this.__wbg_ptr);
2955
+ deferred1_0 = ret[0];
2956
+ deferred1_1 = ret[1];
2957
+ return getStringFromWasm0(ret[0], ret[1]);
2958
+ } finally {
2959
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
2960
+ }
2961
+ }
2962
+ /**
2963
+ * The monochrome threshold used, or −1 outside monochrome mode.
2964
+ * @returns {number}
2965
+ */
2966
+ get threshold() {
2967
+ const ret = wasm.vectorizeresult_threshold(this.__wbg_ptr);
2968
+ return ret;
2969
+ }
2970
+ }
2971
+ if (Symbol.dispose) VectorizeResult.prototype[Symbol.dispose] = VectorizeResult.prototype.free;
2972
+
2973
+ /**
2974
+ * Traces one source image repeatedly; keeps the core's caches between
2975
+ * traces so a preview that changes only Potrace options stays cheap.
2976
+ */
2977
+ export class Vectorizer {
2978
+ static __wrap(ptr) {
2979
+ const obj = Object.create(Vectorizer.prototype);
2980
+ obj.__wbg_ptr = ptr;
2981
+ VectorizerFinalization.register(obj, obj.__wbg_ptr, obj);
2982
+ return obj;
2983
+ }
2984
+ __destroy_into_raw() {
2985
+ const ptr = this.__wbg_ptr;
2986
+ this.__wbg_ptr = 0;
2987
+ VectorizerFinalization.unregister(this);
2988
+ return ptr;
2989
+ }
2990
+ free() {
2991
+ const ptr = this.__destroy_into_raw();
2992
+ wasm.__wbg_vectorizer_free(ptr, 0);
2993
+ }
2994
+ /**
2995
+ * Traces with `mode` (0 colours, 1 monochrome, 2 pixel-exact) and the
2996
+ * flat `params` vector; errors carry the core's message.
2997
+ * @param {number} mode
2998
+ * @param {Float64Array} params
2999
+ * @returns {VectorizeResult}
3000
+ */
3001
+ trace(mode, params) {
3002
+ const ptr0 = passArrayF64ToWasm0(params, wasm.__wbindgen_malloc);
3003
+ const len0 = WASM_VECTOR_LEN;
3004
+ const ret = wasm.vectorizer_trace(this.__wbg_ptr, mode, ptr0, len0);
3005
+ if (ret[2]) {
3006
+ throw takeFromExternrefTable0(ret[1]);
3007
+ }
3008
+ return VectorizeResult.__wrap(ret[0]);
3009
+ }
3010
+ }
3011
+ if (Symbol.dispose) Vectorizer.prototype[Symbol.dispose] = Vectorizer.prototype.free;
3012
+
2896
3013
  /**
2897
3014
  * Snake_case names of every blend mode, in file-format order.
2898
3015
  * @returns {string[]}
@@ -2997,6 +3114,12 @@ const DocumentFinalization = (typeof FinalizationRegistry === 'undefined')
2997
3114
  const EventFinalization = (typeof FinalizationRegistry === 'undefined')
2998
3115
  ? { register: () => {}, unregister: () => {} }
2999
3116
  : new FinalizationRegistry(ptr => wasm.__wbg_event_free(ptr, 1));
3117
+ const VectorizeResultFinalization = (typeof FinalizationRegistry === 'undefined')
3118
+ ? { register: () => {}, unregister: () => {} }
3119
+ : new FinalizationRegistry(ptr => wasm.__wbg_vectorizeresult_free(ptr, 1));
3120
+ const VectorizerFinalization = (typeof FinalizationRegistry === 'undefined')
3121
+ ? { register: () => {}, unregister: () => {} }
3122
+ : new FinalizationRegistry(ptr => wasm.__wbg_vectorizer_free(ptr, 1));
3000
3123
 
3001
3124
  function getArrayJsValueFromWasm0(ptr, len) {
3002
3125
  ptr = ptr >>> 0;
Binary file