@pixerate/editor 0.267.0 → 0.268.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.
Files changed (80) hide show
  1. package/dist/animation-editor/index.cjs +62 -62
  2. package/dist/animation-editor/index.js +6 -6
  3. package/dist/brushes/index.cjs +198 -72
  4. package/dist/brushes/index.d.cts +4 -3
  5. package/dist/brushes/index.d.ts +4 -3
  6. package/dist/brushes/index.js +136 -10
  7. package/dist/brushes/library.d.cts +27 -1
  8. package/dist/brushes/library.d.ts +27 -1
  9. package/dist/brushes/profiles.d.cts +4 -0
  10. package/dist/brushes/profiles.d.ts +4 -0
  11. package/dist/brushes/schema.d.cts +4 -0
  12. package/dist/brushes/schema.d.ts +4 -0
  13. package/dist/brushes/sources.d.cts +114 -0
  14. package/dist/brushes/sources.d.ts +114 -0
  15. package/dist/brushes/types.d.cts +37 -5
  16. package/dist/brushes/types.d.ts +37 -5
  17. package/dist/brushes/ui.d.cts +40 -4
  18. package/dist/brushes/ui.d.ts +40 -4
  19. package/dist/{brushstrokeRender-NLFPEBGI.js → brushstrokeRender-A727TTNQ.js} +6 -6
  20. package/dist/{brushstrokeRender-L7JYRR2R.cjs → brushstrokeRender-WR2N5HHY.cjs} +22 -22
  21. package/dist/canvas/index.cjs +13 -13
  22. package/dist/canvas/index.js +1 -1
  23. package/dist/{chunk-J2TNIZ55.cjs → chunk-2WOGXEDX.cjs} +1 -1
  24. package/dist/{chunk-JGWVZPT6.js → chunk-3XDSNIGF.js} +72 -5
  25. package/dist/{chunk-EXB2EGBE.cjs → chunk-62MFUHSI.cjs} +16 -16
  26. package/dist/{chunk-FGJHJIMN.js → chunk-74ODPZLX.js} +10 -10
  27. package/dist/{chunk-GCVFEPJG.js → chunk-ACTHSQOI.js} +182 -0
  28. package/dist/{chunk-LHPEG5AU.cjs → chunk-B3G7BKUV.cjs} +90 -90
  29. package/dist/{chunk-EF7LZAXQ.js → chunk-BAZMCFVL.js} +1 -1
  30. package/dist/{chunk-HIO6E7LC.cjs → chunk-BPJSI4NT.cjs} +2 -2
  31. package/dist/{chunk-XVOP3CGQ.cjs → chunk-EU2ZZA6L.cjs} +393 -62
  32. package/dist/{chunk-YIC6MAJ2.js → chunk-HFY5LG5J.js} +1 -1
  33. package/dist/{chunk-7UKFXXWL.js → chunk-HVO6XCI4.js} +1 -1
  34. package/dist/{chunk-OKHKA43L.cjs → chunk-JBB3GDBB.cjs} +330 -216
  35. package/dist/{chunk-AGNUD5BI.js → chunk-KZI3YWKW.js} +351 -20
  36. package/dist/{chunk-EYSHTYLG.js → chunk-LETF75CA.js} +1 -1
  37. package/dist/{chunk-FQPUF2W2.cjs → chunk-NIBFKXMD.cjs} +217 -35
  38. package/dist/{chunk-G7NHE2VD.cjs → chunk-NPWWSCWT.cjs} +35 -35
  39. package/dist/{chunk-OSEXT7JL.js → chunk-QNY7BDFP.js} +1 -1
  40. package/dist/{chunk-PXDIAYB6.cjs → chunk-STLTOISW.cjs} +34 -214
  41. package/dist/{chunk-4IDUYB45.js → chunk-UVTO3D4E.js} +130 -16
  42. package/dist/{chunk-TXFWZ5ZJ.js → chunk-W6JDUXP3.js} +4 -184
  43. package/dist/{chunk-LA5Y4ETA.cjs → chunk-YOVXQHA3.cjs} +23 -23
  44. package/dist/{chunk-DT4YQUGT.cjs → chunk-YXP6X3SY.cjs} +101 -34
  45. package/dist/image-editor/index.cjs +851 -851
  46. package/dist/image-editor/index.js +23 -23
  47. package/dist/paint/index.cjs +5 -5
  48. package/dist/paint/index.js +11 -11
  49. package/dist/paint-editor/brush-library-tools.d.cts +12 -2
  50. package/dist/paint-editor/brush-library-tools.d.ts +12 -2
  51. package/dist/paint-editor/brush-model.d.cts +29 -1
  52. package/dist/paint-editor/brush-model.d.ts +29 -1
  53. package/dist/paint-editor/brush-source-art.d.cts +32 -0
  54. package/dist/paint-editor/brush-source-art.d.ts +32 -0
  55. package/dist/paint-editor/controller.d.cts +6 -1
  56. package/dist/paint-editor/controller.d.ts +6 -1
  57. package/dist/paint-editor/dab-stroke.d.cts +2 -0
  58. package/dist/paint-editor/dab-stroke.d.ts +2 -0
  59. package/dist/paint-editor/engine.d.cts +11 -2
  60. package/dist/paint-editor/engine.d.ts +11 -2
  61. package/dist/paint-editor/index.cjs +576 -481
  62. package/dist/paint-editor/index.d.cts +3 -1
  63. package/dist/paint-editor/index.d.ts +3 -1
  64. package/dist/paint-editor/index.js +127 -32
  65. package/dist/paint-editor/stamp-tip.d.cts +8 -5
  66. package/dist/paint-editor/stamp-tip.d.ts +8 -5
  67. package/dist/paint-editor/thumbnails.d.cts +6 -0
  68. package/dist/paint-editor/thumbnails.d.ts +6 -0
  69. package/dist/paint-editor/tip-grain.d.cts +34 -0
  70. package/dist/paint-editor/tip-grain.d.ts +34 -0
  71. package/dist/raster/index.cjs +2 -2
  72. package/dist/raster/index.js +9 -9
  73. package/dist/vector/index.cjs +1002 -1002
  74. package/dist/vector/index.js +7 -7
  75. package/package.json +1 -1
  76. package/skills/pixerate-brushes/SKILL.md +35 -8
  77. package/skills/pixerate-brushes-design/SKILL.md +8 -1
  78. package/skills/pixerate-paint-editor/SKILL.md +6 -0
  79. package/skills/pixerate-paint-editor/references/brush-facets.md +3 -1
  80. package/skills/pixerate-paint-sketch-to-finish/SKILL.md +1 -0
@@ -88,6 +88,8 @@ export interface PenDab extends Dab {
88
88
  lean: number;
89
89
  /** Pen speed (px/ms), or `null` when the samples carry no time. */
90
90
  speed: number | null;
91
+ /** Mirrored across the tip's x axis (bit 1) and y axis (bit 2), from `dynamics.flip`; 0 or missing: not mirrored. */
92
+ flip?: number;
91
93
  }
92
94
  /**
93
95
  * Walks pen samples into dabs, incrementally (any chunking gives the same dabs). Dab angles are in
@@ -115,6 +117,8 @@ export declare class PenDabWalker {
115
117
  private dab;
116
118
  push(p: PenPoint, out: PenDab[]): void;
117
119
  finish(out: PenDab[]): void;
120
+ /** The dabs of one spacing step: `dynamics.count` of them, each with its own index and so its own jitter. */
121
+ private lay;
118
122
  }
119
123
  export interface DryStrokeOptions {
120
124
  /** The paper's dry height field, or `null` for no grain. */
@@ -127,7 +131,10 @@ export interface DryStrokeOptions {
127
131
  copies?: readonly StrokeCopy[];
128
132
  /** Effect paint: each pixel takes its colour (and alpha) from these canvas-sized pixels. */
129
133
  effect?: EffectPaintPixels | null;
130
- /** Loaded sticker art, for a stamp tip of a sticker from the sticker library (`brush.stamp`); without it such a tip paints round. */
134
+ /**
135
+ * Loaded art for a stamp tip of a sticker or an image source (`brush.stamp`) and for an image
136
+ * tip grain (`brush.tipGrain.source`); without it such a tip paints round, and the grain is left out.
137
+ */
131
138
  stampArt?: StickerArtLookup;
132
139
  }
133
140
  /**
@@ -149,13 +156,15 @@ export declare class DryStroke {
149
156
  private lastFed;
150
157
  /** The stamp tip's shape, or `null` for the round computed tip. */
151
158
  private readonly stamp;
159
+ /** The tip's own grain, or `null`. */
160
+ private readonly tipGrain;
152
161
  constructor(brush: PaintBrush, options: DryStrokeOptions);
153
162
  /** Feeds raw pen samples; returns the document rectangles the new dabs touched. */
154
163
  push(points: readonly PenPoint[]): RasterRect[];
155
164
  /** Ends the stroke: the smoothed path catches up with the last raw sample; a single tap paints one dab. */
156
165
  finish(): RasterRect[];
157
166
  private paint;
158
- /** Lays one mark (a dab, or a spray droplet of dab `d`): the round tip or the stamp, the paper grain, effect paint. */
167
+ /** Lays one mark (a dab, or a spray droplet of dab `d`): the round tip or the stamp, the tip grain, the paper grain, effect paint. */
159
168
  private mark;
160
169
  }
161
170
  /** The shared engine's tip for the Mixer Brush engine (it smooths and walks by itself, so smoothing is applied before). */
@@ -88,6 +88,8 @@ export interface PenDab extends Dab {
88
88
  lean: number;
89
89
  /** Pen speed (px/ms), or `null` when the samples carry no time. */
90
90
  speed: number | null;
91
+ /** Mirrored across the tip's x axis (bit 1) and y axis (bit 2), from `dynamics.flip`; 0 or missing: not mirrored. */
92
+ flip?: number;
91
93
  }
92
94
  /**
93
95
  * Walks pen samples into dabs, incrementally (any chunking gives the same dabs). Dab angles are in
@@ -115,6 +117,8 @@ export declare class PenDabWalker {
115
117
  private dab;
116
118
  push(p: PenPoint, out: PenDab[]): void;
117
119
  finish(out: PenDab[]): void;
120
+ /** The dabs of one spacing step: `dynamics.count` of them, each with its own index and so its own jitter. */
121
+ private lay;
118
122
  }
119
123
  export interface DryStrokeOptions {
120
124
  /** The paper's dry height field, or `null` for no grain. */
@@ -127,7 +131,10 @@ export interface DryStrokeOptions {
127
131
  copies?: readonly StrokeCopy[];
128
132
  /** Effect paint: each pixel takes its colour (and alpha) from these canvas-sized pixels. */
129
133
  effect?: EffectPaintPixels | null;
130
- /** Loaded sticker art, for a stamp tip of a sticker from the sticker library (`brush.stamp`); without it such a tip paints round. */
134
+ /**
135
+ * Loaded art for a stamp tip of a sticker or an image source (`brush.stamp`) and for an image
136
+ * tip grain (`brush.tipGrain.source`); without it such a tip paints round, and the grain is left out.
137
+ */
131
138
  stampArt?: StickerArtLookup;
132
139
  }
133
140
  /**
@@ -149,13 +156,15 @@ export declare class DryStroke {
149
156
  private lastFed;
150
157
  /** The stamp tip's shape, or `null` for the round computed tip. */
151
158
  private readonly stamp;
159
+ /** The tip's own grain, or `null`. */
160
+ private readonly tipGrain;
152
161
  constructor(brush: PaintBrush, options: DryStrokeOptions);
153
162
  /** Feeds raw pen samples; returns the document rectangles the new dabs touched. */
154
163
  push(points: readonly PenPoint[]): RasterRect[];
155
164
  /** Ends the stroke: the smoothed path catches up with the last raw sample; a single tap paints one dab. */
156
165
  finish(): RasterRect[];
157
166
  private paint;
158
- /** Lays one mark (a dab, or a spray droplet of dab `d`): the round tip or the stamp, the paper grain, effect paint. */
167
+ /** Lays one mark (a dab, or a spray droplet of dab `d`): the round tip or the stamp, the tip grain, the paper grain, effect paint. */
159
168
  private mark;
160
169
  }
161
170
  /** The shared engine's tip for the Mixer Brush engine (it smooths and walks by itself, so smoothing is applied before). */