@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
@@ -8,7 +8,7 @@ import {
8
8
  parseOpenTypeFont,
9
9
  removeAnchorsKeepingShape,
10
10
  traceField
11
- } from "../chunk-YIC6MAJ2.js";
11
+ } from "../chunk-HFY5LG5J.js";
12
12
  import {
13
13
  ADJUSTMENT_KEYS,
14
14
  ADJUSTMENT_KINDS,
@@ -408,7 +408,7 @@ import {
408
408
  writePsd,
409
409
  xyToTempTint,
410
410
  xyToUv
411
- } from "../chunk-FGJHJIMN.js";
411
+ } from "../chunk-74ODPZLX.js";
412
412
  import {
413
413
  flattenPath,
414
414
  rasterizeCoverage
@@ -604,7 +604,7 @@ import {
604
604
  spotHealPixels,
605
605
  spotHealWindow,
606
606
  toneOf
607
- } from "../chunk-7UKFXXWL.js";
607
+ } from "../chunk-HVO6XCI4.js";
608
608
  import {
609
609
  bestOffset,
610
610
  contentAwareFill,
@@ -682,14 +682,14 @@ import {
682
682
  warpMeshParamAt,
683
683
  warpMeshRows,
684
684
  warpPresetMesh
685
- } from "../chunk-4IDUYB45.js";
685
+ } from "../chunk-UVTO3D4E.js";
686
686
  import {
687
687
  IMAGE_PROFILE,
688
688
  checkBrush,
689
689
  closest,
690
690
  createBrushLibrary,
691
691
  resolveBrush
692
- } from "../chunk-AGNUD5BI.js";
692
+ } from "../chunk-KZI3YWKW.js";
693
693
  import "../chunk-JL6YH5WD.js";
694
694
  import "../chunk-M6DNZNVY.js";
695
695
  import {
@@ -810,23 +810,17 @@ import {
810
810
  } from "../chunk-GSTSZPSR.js";
811
811
  import {
812
812
  BrushstrokeCache,
813
- GRAIN_PATTERNS,
814
- GRAIN_TILE,
815
- PaperGrain,
816
813
  brushstrokeDataUrl,
817
814
  brushstrokeKey,
818
815
  brushstrokeSamples,
819
816
  brushstrokeStrokeOptions,
820
817
  brushstrokeToCanvas,
821
- grainCatch,
822
- grainHeights,
823
818
  isBrushstrokeBrush,
824
819
  paintPathStroke,
825
820
  pathStrokeCoverage,
826
821
  pathStrokeDabs,
827
- renderBrushstroke,
828
- strokeGrainCatch
829
- } from "../chunk-TXFWZ5ZJ.js";
822
+ renderBrushstroke
823
+ } from "../chunk-W6JDUXP3.js";
830
824
  import {
831
825
  CoverageMap,
832
826
  DEFAULT_BLENDER,
@@ -837,6 +831,8 @@ import {
837
831
  DEFAULT_SMUDGE,
838
832
  DabWalker,
839
833
  EMPTY_MIXER_LOAD,
834
+ GRAIN_PATTERNS,
835
+ GRAIN_TILE,
840
836
  MAX_BRUSH_SIZE,
841
837
  MIXER_DRAIN,
842
838
  MIXER_PICKUP_RATE,
@@ -857,6 +853,7 @@ import {
857
853
  PaintExchange,
858
854
  PaintGradientSampler,
859
855
  PaintSourceError,
856
+ PaperGrain,
860
857
  SmudgeTip,
861
858
  StrokeCoverage,
862
859
  TIP_GRADIENT_STEPS,
@@ -873,6 +870,8 @@ import {
873
870
  dabRect,
874
871
  exchangeRates,
875
872
  gradientDabColor,
873
+ grainCatch,
874
+ grainHeights,
876
875
  hexToPaintRgb,
877
876
  isGradientPaint,
878
877
  loadMixer,
@@ -895,12 +894,13 @@ import {
895
894
  scalePaintGradient,
896
895
  smoothPoints,
897
896
  solidPaint,
897
+ strokeGrainCatch,
898
898
  tipFalloff,
899
899
  tipReach,
900
900
  tipShape,
901
901
  updatePaintGradientStop,
902
902
  walkDabs
903
- } from "../chunk-GCVFEPJG.js";
903
+ } from "../chunk-ACTHSQOI.js";
904
904
  import {
905
905
  TileableNoise,
906
906
  hash2,
@@ -914,15 +914,6 @@ import {
914
914
  BRUSHSTROKE_MIN_SCALE,
915
915
  brushstrokeScaleBucket
916
916
  } from "../chunk-ODBT55Q7.js";
917
- import {
918
- base64ToBytes,
919
- bytesToBase64,
920
- decodePng,
921
- encodePng,
922
- isPng,
923
- parseDataUrl,
924
- pngDataUrl
925
- } from "../chunk-OTTT5N3K.js";
926
917
  import {
927
918
  BIT_DEPTHS,
928
919
  BLEND_MODES,
@@ -977,6 +968,15 @@ import {
977
968
  to8From32,
978
969
  writeDeepRegion
979
970
  } from "../chunk-IRSTHLQQ.js";
971
+ import {
972
+ base64ToBytes,
973
+ bytesToBase64,
974
+ decodePng,
975
+ encodePng,
976
+ isPng,
977
+ parseDataUrl,
978
+ pngDataUrl
979
+ } from "../chunk-OTTT5N3K.js";
980
980
  import {
981
981
  SurfaceDraft,
982
982
  TILE,
@@ -33,7 +33,7 @@
33
33
 
34
34
 
35
35
 
36
- var _chunkEXB2EGBEcjs = require('../chunk-EXB2EGBE.cjs');
36
+ var _chunk62MFUHSIcjs = require('../chunk-62MFUHSI.cjs');
37
37
 
38
38
 
39
39
 
@@ -147,13 +147,13 @@ var _chunkJ5VQYK7Tcjs = require('../chunk-J5VQYK7T.cjs');
147
147
 
148
148
 
149
149
 
150
+ var _chunkSTLTOISWcjs = require('../chunk-STLTOISW.cjs');
150
151
 
151
152
 
152
153
 
153
154
 
154
155
 
155
156
 
156
- var _chunkPXDIAYB6cjs = require('../chunk-PXDIAYB6.cjs');
157
157
 
158
158
 
159
159
 
@@ -227,7 +227,7 @@ var _chunkPXDIAYB6cjs = require('../chunk-PXDIAYB6.cjs');
227
227
 
228
228
 
229
229
 
230
- var _chunkFQPUF2W2cjs = require('../chunk-FQPUF2W2.cjs');
230
+ var _chunkNIBFKXMDcjs = require('../chunk-NIBFKXMD.cjs');
231
231
 
232
232
 
233
233
 
@@ -241,7 +241,6 @@ var _chunk3K6HWEXZcjs = require('../chunk-3K6HWEXZ.cjs');
241
241
 
242
242
 
243
243
  var _chunkYQGCPL5Xcjs = require('../chunk-YQGCPL5X.cjs');
244
- require('../chunk-W5M3J7PV.cjs');
245
244
 
246
245
 
247
246
 
@@ -255,6 +254,7 @@ require('../chunk-W5M3J7PV.cjs');
255
254
 
256
255
 
257
256
  var _chunk2VX55NFMcjs = require('../chunk-2VX55NFM.cjs');
257
+ require('../chunk-W5M3J7PV.cjs');
258
258
  require('../chunk-474IQG74.cjs');
259
259
  require('../chunk-XFM3OCHU.cjs');
260
260
 
@@ -498,4 +498,4 @@ require('../chunk-XFM3OCHU.cjs');
498
498
 
499
499
 
500
500
 
501
- exports.BODY_SCATTER = _chunkJ5VQYK7Tcjs.BODY_SCATTER; exports.BRUSHSTROKE_MAX_SCALE = _chunkYQGCPL5Xcjs.BRUSHSTROKE_MAX_SCALE; exports.BRUSHSTROKE_MIN_SCALE = _chunkYQGCPL5Xcjs.BRUSHSTROKE_MIN_SCALE; exports.BrushstrokeCache = _chunkPXDIAYB6cjs.BrushstrokeCache; exports.CoverageMap = _chunkFQPUF2W2cjs.CoverageMap; exports.DEFAULT_BLENDER = _chunkFQPUF2W2cjs.DEFAULT_BLENDER; exports.DEFAULT_BRUSH = _chunkFQPUF2W2cjs.DEFAULT_BRUSH; exports.DEFAULT_FLOW = _chunkJ5VQYK7Tcjs.DEFAULT_FLOW; exports.DEFAULT_MIXER = _chunkFQPUF2W2cjs.DEFAULT_MIXER; exports.DEFAULT_PAINT_GRADIENT = _chunkFQPUF2W2cjs.DEFAULT_PAINT_GRADIENT; exports.DEFAULT_PAINT_GRADIENT_MAPPING = _chunkFQPUF2W2cjs.DEFAULT_PAINT_GRADIENT_MAPPING; exports.DEFAULT_RETOUCH = _chunkEXB2EGBEcjs.DEFAULT_RETOUCH; exports.DEFAULT_SMUDGE = _chunkFQPUF2W2cjs.DEFAULT_SMUDGE; exports.DEFAULT_WET_PAPER = _chunkJ5VQYK7Tcjs.DEFAULT_WET_PAPER; exports.DEFAULT_WET_PARAMS = _chunkJ5VQYK7Tcjs.DEFAULT_WET_PARAMS; exports.DRY_EPS = _chunkJ5VQYK7Tcjs.DRY_EPS; exports.DabWalker = _chunkFQPUF2W2cjs.DabWalker; exports.EMPTY_MIXER_LOAD = _chunkFQPUF2W2cjs.EMPTY_MIXER_LOAD; exports.EX = _chunkJ5VQYK7Tcjs.EX; exports.EY = _chunkJ5VQYK7Tcjs.EY; exports.FLAG_ALIVE = _chunkJ5VQYK7Tcjs.FLAG_ALIVE; exports.FLAG_BOTTOM = _chunkJ5VQYK7Tcjs.FLAG_BOTTOM; exports.FLAG_LEFT = _chunkJ5VQYK7Tcjs.FLAG_LEFT; exports.FLAG_RIGHT = _chunkJ5VQYK7Tcjs.FLAG_RIGHT; exports.FLAG_TOP = _chunkJ5VQYK7Tcjs.FLAG_TOP; exports.FLAG_WET = _chunkJ5VQYK7Tcjs.FLAG_WET; exports.FLAT = _chunkJ5VQYK7Tcjs.FLAT; exports.FREE_INTERVAL = _chunkJ5VQYK7Tcjs.FREE_INTERVAL; exports.GRAIN_PATTERNS = _chunkPXDIAYB6cjs.GRAIN_PATTERNS; exports.GRAIN_TILE = _chunkPXDIAYB6cjs.GRAIN_TILE; exports.HIDE = _chunkJ5VQYK7Tcjs.HIDE; exports.IDENTITY_CLONE_TRANSFORM = _chunkEXB2EGBEcjs.IDENTITY_CLONE_TRANSFORM; exports.MASS_CHANNELS = _chunkJ5VQYK7Tcjs.MASS_CHANNELS; exports.MAX_BATCH = _chunkJ5VQYK7Tcjs.MAX_BATCH; exports.MAX_BRUSH_SIZE = _chunkFQPUF2W2cjs.MAX_BRUSH_SIZE; exports.MAX_TILT_ACCEL = _chunkJ5VQYK7Tcjs.MAX_TILT_ACCEL; exports.MAX_WET_LANES = _chunkJ5VQYK7Tcjs.MAX_WET_LANES; exports.MAX_WET_SLOTS = _chunkJ5VQYK7Tcjs.MAX_WET_SLOTS; exports.MIXER_DRAIN = _chunkFQPUF2W2cjs.MIXER_DRAIN; exports.MIXER_PICKUP_RATE = _chunkFQPUF2W2cjs.MIXER_PICKUP_RATE; exports.MIXING_MODELS = _chunkFQPUF2W2cjs.MIXING_MODELS; exports.MixerStroke = _chunkFQPUF2W2cjs.MixerStroke; exports.OPP = _chunkJ5VQYK7Tcjs.OPP; exports.PAINT_COLOR_JSON_SCHEMA = _chunkFQPUF2W2cjs.PAINT_COLOR_JSON_SCHEMA; exports.PAINT_GRADIENT_FULL_SPEED = _chunkFQPUF2W2cjs.PAINT_GRADIENT_FULL_SPEED; exports.PAINT_GRADIENT_JSON_SCHEMA = _chunkFQPUF2W2cjs.PAINT_GRADIENT_JSON_SCHEMA; exports.PAINT_GRADIENT_KIT = _chunkFQPUF2W2cjs.PAINT_GRADIENT_KIT; exports.PAINT_GRADIENT_MAPPINGS = _chunkFQPUF2W2cjs.PAINT_GRADIENT_MAPPINGS; exports.PAINT_GRADIENT_MAPPING_LABELS = _chunkFQPUF2W2cjs.PAINT_GRADIENT_MAPPING_LABELS; exports.PAINT_GRADIENT_PRESETS = _chunkFQPUF2W2cjs.PAINT_GRADIENT_PRESETS; exports.PAINT_GRADIENT_REPEATS = _chunkFQPUF2W2cjs.PAINT_GRADIENT_REPEATS; exports.PAINT_GRADIENT_REPEAT_LABELS = _chunkFQPUF2W2cjs.PAINT_GRADIENT_REPEAT_LABELS; exports.PAINT_GRADIENT_SPACES = _chunkFQPUF2W2cjs.PAINT_GRADIENT_SPACES; exports.PAINT_GRADIENT_SPACE_LABELS = _chunkFQPUF2W2cjs.PAINT_GRADIENT_SPACE_LABELS; exports.PAINT_SOURCE_JSON_SCHEMA = _chunkFQPUF2W2cjs.PAINT_SOURCE_JSON_SCHEMA; exports.PAPER_CAPACITY = _chunkJ5VQYK7Tcjs.PAPER_CAPACITY; exports.PARAM = _chunkJ5VQYK7Tcjs.PARAM; exports.PARAM_FLOATS = _chunkJ5VQYK7Tcjs.PARAM_FLOATS; exports.PIGMENT_BANDS = _chunk2VX55NFMcjs.PIGMENT_BANDS; exports.PIGMENT_CHANNELS = _chunkJ5VQYK7Tcjs.PIGMENT_CHANNELS; exports.PIGMENT_LAMBDA_MIN = _chunk2VX55NFMcjs.PIGMENT_LAMBDA_MIN; exports.PIGMENT_LAMBDA_STEP = _chunk2VX55NFMcjs.PIGMENT_LAMBDA_STEP; exports.PIGMENT_UNIT = _chunkJ5VQYK7Tcjs.PIGMENT_UNIT; exports.PIGMENT_WAVELENGTHS = _chunk2VX55NFMcjs.PIGMENT_WAVELENGTHS; exports.PLANE = _chunkJ5VQYK7Tcjs.PLANE; exports.PLANE_BYTES = _chunkJ5VQYK7Tcjs.PLANE_BYTES; exports.P_D0 = _chunkJ5VQYK7Tcjs.P_D0; exports.P_DL = _chunkJ5VQYK7Tcjs.P_DL; exports.P_EDGE = _chunkJ5VQYK7Tcjs.P_EDGE; exports.P_FX = _chunkJ5VQYK7Tcjs.P_FX; exports.P_FY = _chunkJ5VQYK7Tcjs.P_FY; exports.P_H = _chunkJ5VQYK7Tcjs.P_H; exports.P_L = _chunkJ5VQYK7Tcjs.P_L; exports.P_P0 = _chunkJ5VQYK7Tcjs.P_P0; exports.P_RHO = _chunkJ5VQYK7Tcjs.P_RHO; exports.P_SW = _chunkJ5VQYK7Tcjs.P_SW; exports.P_UX = _chunkJ5VQYK7Tcjs.P_UX; exports.P_UY = _chunkJ5VQYK7Tcjs.P_UY; exports.PaintExchange = _chunkFQPUF2W2cjs.PaintExchange; exports.PaintGradientSampler = _chunkFQPUF2W2cjs.PaintGradientSampler; exports.PaintSourceError = _chunkFQPUF2W2cjs.PaintSourceError; exports.PaperGrain = _chunkPXDIAYB6cjs.PaperGrain; exports.RETOUCH_SAMPLES = _chunkEXB2EGBEcjs.RETOUCH_SAMPLES; exports.RegionPixelSource = _chunkEXB2EGBEcjs.RegionPixelSource; exports.RetouchDabStroke = _chunkEXB2EGBEcjs.RetouchDabStroke; exports.SET_PLANES = _chunkJ5VQYK7Tcjs.SET_PLANES; exports.SLOT_BYTES = _chunkJ5VQYK7Tcjs.SLOT_BYTES; exports.SLOT_PLANES = _chunkJ5VQYK7Tcjs.SLOT_PLANES; exports.SLOT_SIDE = _chunkJ5VQYK7Tcjs.SLOT_SIDE; exports.SPOT_HEAL_TYPES = _chunkEXB2EGBEcjs.SPOT_HEAL_TYPES; exports.SRGB_TO_LINEAR = _chunkJ5VQYK7Tcjs.SRGB_TO_LINEAR; exports.STRIP = _chunkJ5VQYK7Tcjs.STRIP; exports.SmudgeTip = _chunkFQPUF2W2cjs.SmudgeTip; exports.StrokeCoverage = _chunkFQPUF2W2cjs.StrokeCoverage; exports.TIP_GRADIENT_STEPS = _chunkFQPUF2W2cjs.TIP_GRADIENT_STEPS; exports.TONE_RANGES = _chunkEXB2EGBEcjs.TONE_RANGES; exports.TileMedium = _chunkFQPUF2W2cjs.TileMedium; exports.TilePixelSource = _chunkEXB2EGBEcjs.TilePixelSource; exports.TileableNoise = _chunk3K6HWEXZcjs.TileableNoise; exports.TransformedPixelSource = _chunkEXB2EGBEcjs.TransformedPixelSource; exports.U_MAX = _chunkJ5VQYK7Tcjs.U_MAX; exports.W9 = _chunkJ5VQYK7Tcjs.W9; exports.WET_FLOW_KINDS = _chunkJ5VQYK7Tcjs.WET_FLOW_KINDS; exports.WET_PARAM_KEYS = _chunkJ5VQYK7Tcjs.WET_PARAM_KEYS; exports.WET_TILE = _chunkJ5VQYK7Tcjs.WET_TILE; exports.WGSL_HALO = _chunkJ5VQYK7Tcjs.WGSL_HALO; exports.WGSL_SHADE = _chunkJ5VQYK7Tcjs.WGSL_SHADE; exports.WGSL_STEP = _chunkJ5VQYK7Tcjs.WGSL_STEP; exports.WetGpuEngine = _chunkJ5VQYK7Tcjs.WetGpuEngine; exports.WetMedium = _chunkJ5VQYK7Tcjs.WetMedium; exports.WetWorkerPool = _chunkJ5VQYK7Tcjs.WetWorkerPool; exports.WetWorld = _chunkJ5VQYK7Tcjs.WetWorld; exports.WetWorldError = _chunkJ5VQYK7Tcjs.WetWorldError; exports.addPaintGradientStop = _chunkFQPUF2W2cjs.addPaintGradientStop; exports.applyRetouchToTile = _chunkEXB2EGBEcjs.applyRetouchToTile; exports.applyStrokeToDeepTile = _chunkFQPUF2W2cjs.applyStrokeToDeepTile; exports.applyStrokeToTile = _chunkFQPUF2W2cjs.applyStrokeToTile; exports.applyToneToDeepTile = _chunkEXB2EGBEcjs.applyToneToDeepTile; exports.bestOffset = _chunkBB6TR422cjs.bestOffset; exports.blendRadius = _chunkFQPUF2W2cjs.blendRadius; exports.blenderDab = _chunkFQPUF2W2cjs.blenderDab; exports.boxBlurPixels = _chunkEXB2EGBEcjs.boxBlurPixels; exports.brushstrokeDataUrl = _chunkPXDIAYB6cjs.brushstrokeDataUrl; exports.brushstrokeKey = _chunkPXDIAYB6cjs.brushstrokeKey; exports.brushstrokeSamples = _chunkPXDIAYB6cjs.brushstrokeSamples; exports.brushstrokeScaleBucket = _chunkYQGCPL5Xcjs.brushstrokeScaleBucket; exports.brushstrokeStrokeOptions = _chunkPXDIAYB6cjs.brushstrokeStrokeOptions; exports.brushstrokeToCanvas = _chunkPXDIAYB6cjs.brushstrokeToCanvas; exports.canShareMemory = _chunkJ5VQYK7Tcjs.canShareMemory; exports.cleanMixer = _chunkFQPUF2W2cjs.cleanMixer; exports.cloneSamplePoint = _chunkEXB2EGBEcjs.cloneSamplePoint; exports.contentAwareFill = _chunkBB6TR422cjs.contentAwareFill; exports.coverageTileCoord = _chunkFQPUF2W2cjs.coverageTileCoord; exports.createBlenderScratch = _chunkFQPUF2W2cjs.createBlenderScratch; exports.createPigment = _chunk2VX55NFMcjs.createPigment; exports.createPigmentTools = _chunkEXB2EGBEcjs.createPigmentTools; exports.createWetGpuEngine = _chunkJ5VQYK7Tcjs.createWetGpuEngine; exports.dabCoverage = _chunkFQPUF2W2cjs.dabCoverage; exports.dabRect = _chunkFQPUF2W2cjs.dabRect; exports.dexp = _chunkJ5VQYK7Tcjs.dexp; exports.dilateMask = _chunkBB6TR422cjs.dilateMask; exports.dlog = _chunkJ5VQYK7Tcjs.dlog; exports.dodgeBurn = _chunkEXB2EGBEcjs.dodgeBurn; exports.dodgeBurnCurve = _chunkEXB2EGBEcjs.dodgeBurnCurve; exports.dpow = _chunkJ5VQYK7Tcjs.dpow; exports.dsincos = _chunkJ5VQYK7Tcjs.dsincos; exports.edgeBits = _chunkJ5VQYK7Tcjs.edgeBits; exports.exchangeRates = _chunkFQPUF2W2cjs.exchangeRates; exports.expNeg = _chunkJ5VQYK7Tcjs.expNeg; exports.filmPixel = _chunkJ5VQYK7Tcjs.filmPixel; exports.filmReflectance = _chunkJ5VQYK7Tcjs.filmReflectance; exports.findWebGpu = _chunkJ5VQYK7Tcjs.findWebGpu; exports.flowField = _chunkJ5VQYK7Tcjs.flowField; exports.gradientDabColor = _chunkFQPUF2W2cjs.gradientDabColor; exports.grainCatch = _chunkPXDIAYB6cjs.grainCatch; exports.grainHeights = _chunkPXDIAYB6cjs.grainHeights; exports.hash2 = _chunk3K6HWEXZcjs.hash2; exports.healPixels = _chunkEXB2EGBEcjs.healPixels; exports.hexToPaintRgb = _chunkFQPUF2W2cjs.hexToPaintRgb; exports.isBrushstrokeBrush = _chunkPXDIAYB6cjs.isBrushstrokeBrush; exports.isGradientPaint = _chunkFQPUF2W2cjs.isGradientPaint; exports.isIdentityCloneTransform = _chunkEXB2EGBEcjs.isIdentityCloneTransform; exports.latticeViscosity = _chunkJ5VQYK7Tcjs.latticeViscosity; exports.lerpPigment = _chunk2VX55NFMcjs.lerpPigment; exports.lerpPigmentInto = _chunk2VX55NFMcjs.lerpPigmentInto; exports.linearToSrgb8 = _chunkJ5VQYK7Tcjs.linearToSrgb8; exports.loadMixer = _chunkFQPUF2W2cjs.loadMixer; exports.loadWetKernel = _chunkJ5VQYK7Tcjs.loadWetKernel; exports.luma = _chunkEXB2EGBEcjs.luma; exports.maskBounds = _chunkBB6TR422cjs.maskBounds; exports.membraneFill = _chunkBB6TR422cjs.membraneFill; exports.mix32 = _chunk3K6HWEXZcjs.mix32; exports.mixPigments = _chunk2VX55NFMcjs.mixPigments; exports.mixerRates = _chunkFQPUF2W2cjs.mixerRates; exports.moveWetSnapshot = _chunkJ5VQYK7Tcjs.moveWetSnapshot; exports.normalizeBlender = _chunkFQPUF2W2cjs.normalizeBlender; exports.normalizeBrush = _chunkFQPUF2W2cjs.normalizeBrush; exports.normalizeFlow = _chunkJ5VQYK7Tcjs.normalizeFlow; exports.normalizeHexColor = _chunkFQPUF2W2cjs.normalizeHexColor; exports.normalizeMixer = _chunkFQPUF2W2cjs.normalizeMixer; exports.normalizeRetouch = _chunkEXB2EGBEcjs.normalizeRetouch; exports.normalizeSmudge = _chunkFQPUF2W2cjs.normalizeSmudge; exports.normalizeTilt = _chunkJ5VQYK7Tcjs.normalizeTilt; exports.normalizeWetParams = _chunkJ5VQYK7Tcjs.normalizeWetParams; exports.packWetParams = _chunkJ5VQYK7Tcjs.packWetParams; exports.paintGradientMappingFor = _chunkFQPUF2W2cjs.paintGradientMappingFor; exports.paintPathStroke = _chunkPXDIAYB6cjs.paintPathStroke; exports.paintSourceColor = _chunkFQPUF2W2cjs.paintSourceColor; exports.paintSourceCss = _chunkFQPUF2W2cjs.paintSourceCss; exports.parsePaintSource = _chunkFQPUF2W2cjs.parsePaintSource; exports.pathStrokeCoverage = _chunkPXDIAYB6cjs.pathStrokeCoverage; exports.pathStrokeDabs = _chunkPXDIAYB6cjs.pathStrokeDabs; exports.perDabStrength = _chunkEXB2EGBEcjs.perDabStrength; exports.pigmentColor = _chunkJ5VQYK7Tcjs.pigmentColor; exports.pigmentOf = _chunkJ5VQYK7Tcjs.pigmentOf; exports.pixelPigment = _chunkJ5VQYK7Tcjs.pixelPigment; exports.pointerPressure = _chunkEXB2EGBEcjs.pointerPressure; exports.pointerStrokeSample = _chunkEXB2EGBEcjs.pointerStrokeSample; exports.pointerStrokeSamples = _chunkEXB2EGBEcjs.pointerStrokeSamples; exports.put255 = _chunkFQPUF2W2cjs.put255; exports.rand01 = _chunk3K6HWEXZcjs.rand01; exports.randSigned = _chunk3K6HWEXZcjs.randSigned; exports.rasterizeDab = _chunkFQPUF2W2cjs.rasterizeDab; exports.readPaintSource = _chunkFQPUF2W2cjs.readPaintSource; exports.readSourceRegion = _chunkEXB2EGBEcjs.readSourceRegion; exports.reflectanceToRgb = _chunk2VX55NFMcjs.reflectanceToRgb; exports.removePaintGradientStop = _chunkFQPUF2W2cjs.removePaintGradientStop; exports.renderBrushstroke = _chunkPXDIAYB6cjs.renderBrushstroke; exports.resolvePaintGradient = _chunkFQPUF2W2cjs.resolvePaintGradient; exports.retouchFilter = _chunkEXB2EGBEcjs.retouchFilter; exports.reversePaintGradient = _chunkFQPUF2W2cjs.reversePaintGradient; exports.rgbToReflectance = _chunk2VX55NFMcjs.rgbToReflectance; exports.rgbaViewOfGrey = _chunkEXB2EGBEcjs.rgbaViewOfGrey; exports.saturationOf = _chunkEXB2EGBEcjs.saturationOf; exports.scalePaintGradient = _chunkFQPUF2W2cjs.scalePaintGradient; exports.seamlessClone = _chunkBB6TR422cjs.seamlessClone; exports.seedFromString = _chunk3K6HWEXZcjs.seedFromString; exports.setPigmentColor = _chunk2VX55NFMcjs.setPigmentColor; exports.shadeLightTile = _chunkJ5VQYK7Tcjs.shadeLightTile; exports.shadeTile = _chunkJ5VQYK7Tcjs.shadeTile; exports.smoothPoints = _chunkFQPUF2W2cjs.smoothPoints; exports.smudgeEffect = _chunkEXB2EGBEcjs.smudgeEffect; exports.solidPaint = _chunkFQPUF2W2cjs.solidPaint; exports.solveMembrane = _chunkBB6TR422cjs.solveMembrane; exports.sponge = _chunkEXB2EGBEcjs.sponge; exports.spongeEffect = _chunkEXB2EGBEcjs.spongeEffect; exports.spotHealPixels = _chunkEXB2EGBEcjs.spotHealPixels; exports.spotHealWindow = _chunkEXB2EGBEcjs.spotHealWindow; exports.srgbByteToLinear = _chunkJ5VQYK7Tcjs.srgbByteToLinear; exports.stepSlotTs = _chunkJ5VQYK7Tcjs.stepSlotTs; exports.strokeGrainCatch = _chunkPXDIAYB6cjs.strokeGrainCatch; exports.tipFalloff = _chunkFQPUF2W2cjs.tipFalloff; exports.tipReach = _chunkFQPUF2W2cjs.tipReach; exports.tipShape = _chunkFQPUF2W2cjs.tipShape; exports.toneOf = _chunkEXB2EGBEcjs.toneOf; exports.updatePaintGradientStop = _chunkFQPUF2W2cjs.updatePaintGradientStop; exports.walkDabs = _chunkFQPUF2W2cjs.walkDabs; exports.wetGpuSupport = _chunkJ5VQYK7Tcjs.wetGpuSupport; exports.wetSimdSupported = _chunkJ5VQYK7Tcjs.wetSimdSupported; exports.wetSupport = _chunkJ5VQYK7Tcjs.wetSupport;
501
+ exports.BODY_SCATTER = _chunkJ5VQYK7Tcjs.BODY_SCATTER; exports.BRUSHSTROKE_MAX_SCALE = _chunkYQGCPL5Xcjs.BRUSHSTROKE_MAX_SCALE; exports.BRUSHSTROKE_MIN_SCALE = _chunkYQGCPL5Xcjs.BRUSHSTROKE_MIN_SCALE; exports.BrushstrokeCache = _chunkSTLTOISWcjs.BrushstrokeCache; exports.CoverageMap = _chunkNIBFKXMDcjs.CoverageMap; exports.DEFAULT_BLENDER = _chunkNIBFKXMDcjs.DEFAULT_BLENDER; exports.DEFAULT_BRUSH = _chunkNIBFKXMDcjs.DEFAULT_BRUSH; exports.DEFAULT_FLOW = _chunkJ5VQYK7Tcjs.DEFAULT_FLOW; exports.DEFAULT_MIXER = _chunkNIBFKXMDcjs.DEFAULT_MIXER; exports.DEFAULT_PAINT_GRADIENT = _chunkNIBFKXMDcjs.DEFAULT_PAINT_GRADIENT; exports.DEFAULT_PAINT_GRADIENT_MAPPING = _chunkNIBFKXMDcjs.DEFAULT_PAINT_GRADIENT_MAPPING; exports.DEFAULT_RETOUCH = _chunk62MFUHSIcjs.DEFAULT_RETOUCH; exports.DEFAULT_SMUDGE = _chunkNIBFKXMDcjs.DEFAULT_SMUDGE; exports.DEFAULT_WET_PAPER = _chunkJ5VQYK7Tcjs.DEFAULT_WET_PAPER; exports.DEFAULT_WET_PARAMS = _chunkJ5VQYK7Tcjs.DEFAULT_WET_PARAMS; exports.DRY_EPS = _chunkJ5VQYK7Tcjs.DRY_EPS; exports.DabWalker = _chunkNIBFKXMDcjs.DabWalker; exports.EMPTY_MIXER_LOAD = _chunkNIBFKXMDcjs.EMPTY_MIXER_LOAD; exports.EX = _chunkJ5VQYK7Tcjs.EX; exports.EY = _chunkJ5VQYK7Tcjs.EY; exports.FLAG_ALIVE = _chunkJ5VQYK7Tcjs.FLAG_ALIVE; exports.FLAG_BOTTOM = _chunkJ5VQYK7Tcjs.FLAG_BOTTOM; exports.FLAG_LEFT = _chunkJ5VQYK7Tcjs.FLAG_LEFT; exports.FLAG_RIGHT = _chunkJ5VQYK7Tcjs.FLAG_RIGHT; exports.FLAG_TOP = _chunkJ5VQYK7Tcjs.FLAG_TOP; exports.FLAG_WET = _chunkJ5VQYK7Tcjs.FLAG_WET; exports.FLAT = _chunkJ5VQYK7Tcjs.FLAT; exports.FREE_INTERVAL = _chunkJ5VQYK7Tcjs.FREE_INTERVAL; exports.GRAIN_PATTERNS = _chunkNIBFKXMDcjs.GRAIN_PATTERNS; exports.GRAIN_TILE = _chunkNIBFKXMDcjs.GRAIN_TILE; exports.HIDE = _chunkJ5VQYK7Tcjs.HIDE; exports.IDENTITY_CLONE_TRANSFORM = _chunk62MFUHSIcjs.IDENTITY_CLONE_TRANSFORM; exports.MASS_CHANNELS = _chunkJ5VQYK7Tcjs.MASS_CHANNELS; exports.MAX_BATCH = _chunkJ5VQYK7Tcjs.MAX_BATCH; exports.MAX_BRUSH_SIZE = _chunkNIBFKXMDcjs.MAX_BRUSH_SIZE; exports.MAX_TILT_ACCEL = _chunkJ5VQYK7Tcjs.MAX_TILT_ACCEL; exports.MAX_WET_LANES = _chunkJ5VQYK7Tcjs.MAX_WET_LANES; exports.MAX_WET_SLOTS = _chunkJ5VQYK7Tcjs.MAX_WET_SLOTS; exports.MIXER_DRAIN = _chunkNIBFKXMDcjs.MIXER_DRAIN; exports.MIXER_PICKUP_RATE = _chunkNIBFKXMDcjs.MIXER_PICKUP_RATE; exports.MIXING_MODELS = _chunkNIBFKXMDcjs.MIXING_MODELS; exports.MixerStroke = _chunkNIBFKXMDcjs.MixerStroke; exports.OPP = _chunkJ5VQYK7Tcjs.OPP; exports.PAINT_COLOR_JSON_SCHEMA = _chunkNIBFKXMDcjs.PAINT_COLOR_JSON_SCHEMA; exports.PAINT_GRADIENT_FULL_SPEED = _chunkNIBFKXMDcjs.PAINT_GRADIENT_FULL_SPEED; exports.PAINT_GRADIENT_JSON_SCHEMA = _chunkNIBFKXMDcjs.PAINT_GRADIENT_JSON_SCHEMA; exports.PAINT_GRADIENT_KIT = _chunkNIBFKXMDcjs.PAINT_GRADIENT_KIT; exports.PAINT_GRADIENT_MAPPINGS = _chunkNIBFKXMDcjs.PAINT_GRADIENT_MAPPINGS; exports.PAINT_GRADIENT_MAPPING_LABELS = _chunkNIBFKXMDcjs.PAINT_GRADIENT_MAPPING_LABELS; exports.PAINT_GRADIENT_PRESETS = _chunkNIBFKXMDcjs.PAINT_GRADIENT_PRESETS; exports.PAINT_GRADIENT_REPEATS = _chunkNIBFKXMDcjs.PAINT_GRADIENT_REPEATS; exports.PAINT_GRADIENT_REPEAT_LABELS = _chunkNIBFKXMDcjs.PAINT_GRADIENT_REPEAT_LABELS; exports.PAINT_GRADIENT_SPACES = _chunkNIBFKXMDcjs.PAINT_GRADIENT_SPACES; exports.PAINT_GRADIENT_SPACE_LABELS = _chunkNIBFKXMDcjs.PAINT_GRADIENT_SPACE_LABELS; exports.PAINT_SOURCE_JSON_SCHEMA = _chunkNIBFKXMDcjs.PAINT_SOURCE_JSON_SCHEMA; exports.PAPER_CAPACITY = _chunkJ5VQYK7Tcjs.PAPER_CAPACITY; exports.PARAM = _chunkJ5VQYK7Tcjs.PARAM; exports.PARAM_FLOATS = _chunkJ5VQYK7Tcjs.PARAM_FLOATS; exports.PIGMENT_BANDS = _chunk2VX55NFMcjs.PIGMENT_BANDS; exports.PIGMENT_CHANNELS = _chunkJ5VQYK7Tcjs.PIGMENT_CHANNELS; exports.PIGMENT_LAMBDA_MIN = _chunk2VX55NFMcjs.PIGMENT_LAMBDA_MIN; exports.PIGMENT_LAMBDA_STEP = _chunk2VX55NFMcjs.PIGMENT_LAMBDA_STEP; exports.PIGMENT_UNIT = _chunkJ5VQYK7Tcjs.PIGMENT_UNIT; exports.PIGMENT_WAVELENGTHS = _chunk2VX55NFMcjs.PIGMENT_WAVELENGTHS; exports.PLANE = _chunkJ5VQYK7Tcjs.PLANE; exports.PLANE_BYTES = _chunkJ5VQYK7Tcjs.PLANE_BYTES; exports.P_D0 = _chunkJ5VQYK7Tcjs.P_D0; exports.P_DL = _chunkJ5VQYK7Tcjs.P_DL; exports.P_EDGE = _chunkJ5VQYK7Tcjs.P_EDGE; exports.P_FX = _chunkJ5VQYK7Tcjs.P_FX; exports.P_FY = _chunkJ5VQYK7Tcjs.P_FY; exports.P_H = _chunkJ5VQYK7Tcjs.P_H; exports.P_L = _chunkJ5VQYK7Tcjs.P_L; exports.P_P0 = _chunkJ5VQYK7Tcjs.P_P0; exports.P_RHO = _chunkJ5VQYK7Tcjs.P_RHO; exports.P_SW = _chunkJ5VQYK7Tcjs.P_SW; exports.P_UX = _chunkJ5VQYK7Tcjs.P_UX; exports.P_UY = _chunkJ5VQYK7Tcjs.P_UY; exports.PaintExchange = _chunkNIBFKXMDcjs.PaintExchange; exports.PaintGradientSampler = _chunkNIBFKXMDcjs.PaintGradientSampler; exports.PaintSourceError = _chunkNIBFKXMDcjs.PaintSourceError; exports.PaperGrain = _chunkNIBFKXMDcjs.PaperGrain; exports.RETOUCH_SAMPLES = _chunk62MFUHSIcjs.RETOUCH_SAMPLES; exports.RegionPixelSource = _chunk62MFUHSIcjs.RegionPixelSource; exports.RetouchDabStroke = _chunk62MFUHSIcjs.RetouchDabStroke; exports.SET_PLANES = _chunkJ5VQYK7Tcjs.SET_PLANES; exports.SLOT_BYTES = _chunkJ5VQYK7Tcjs.SLOT_BYTES; exports.SLOT_PLANES = _chunkJ5VQYK7Tcjs.SLOT_PLANES; exports.SLOT_SIDE = _chunkJ5VQYK7Tcjs.SLOT_SIDE; exports.SPOT_HEAL_TYPES = _chunk62MFUHSIcjs.SPOT_HEAL_TYPES; exports.SRGB_TO_LINEAR = _chunkJ5VQYK7Tcjs.SRGB_TO_LINEAR; exports.STRIP = _chunkJ5VQYK7Tcjs.STRIP; exports.SmudgeTip = _chunkNIBFKXMDcjs.SmudgeTip; exports.StrokeCoverage = _chunkNIBFKXMDcjs.StrokeCoverage; exports.TIP_GRADIENT_STEPS = _chunkNIBFKXMDcjs.TIP_GRADIENT_STEPS; exports.TONE_RANGES = _chunk62MFUHSIcjs.TONE_RANGES; exports.TileMedium = _chunkNIBFKXMDcjs.TileMedium; exports.TilePixelSource = _chunk62MFUHSIcjs.TilePixelSource; exports.TileableNoise = _chunk3K6HWEXZcjs.TileableNoise; exports.TransformedPixelSource = _chunk62MFUHSIcjs.TransformedPixelSource; exports.U_MAX = _chunkJ5VQYK7Tcjs.U_MAX; exports.W9 = _chunkJ5VQYK7Tcjs.W9; exports.WET_FLOW_KINDS = _chunkJ5VQYK7Tcjs.WET_FLOW_KINDS; exports.WET_PARAM_KEYS = _chunkJ5VQYK7Tcjs.WET_PARAM_KEYS; exports.WET_TILE = _chunkJ5VQYK7Tcjs.WET_TILE; exports.WGSL_HALO = _chunkJ5VQYK7Tcjs.WGSL_HALO; exports.WGSL_SHADE = _chunkJ5VQYK7Tcjs.WGSL_SHADE; exports.WGSL_STEP = _chunkJ5VQYK7Tcjs.WGSL_STEP; exports.WetGpuEngine = _chunkJ5VQYK7Tcjs.WetGpuEngine; exports.WetMedium = _chunkJ5VQYK7Tcjs.WetMedium; exports.WetWorkerPool = _chunkJ5VQYK7Tcjs.WetWorkerPool; exports.WetWorld = _chunkJ5VQYK7Tcjs.WetWorld; exports.WetWorldError = _chunkJ5VQYK7Tcjs.WetWorldError; exports.addPaintGradientStop = _chunkNIBFKXMDcjs.addPaintGradientStop; exports.applyRetouchToTile = _chunk62MFUHSIcjs.applyRetouchToTile; exports.applyStrokeToDeepTile = _chunkNIBFKXMDcjs.applyStrokeToDeepTile; exports.applyStrokeToTile = _chunkNIBFKXMDcjs.applyStrokeToTile; exports.applyToneToDeepTile = _chunk62MFUHSIcjs.applyToneToDeepTile; exports.bestOffset = _chunkBB6TR422cjs.bestOffset; exports.blendRadius = _chunkNIBFKXMDcjs.blendRadius; exports.blenderDab = _chunkNIBFKXMDcjs.blenderDab; exports.boxBlurPixels = _chunk62MFUHSIcjs.boxBlurPixels; exports.brushstrokeDataUrl = _chunkSTLTOISWcjs.brushstrokeDataUrl; exports.brushstrokeKey = _chunkSTLTOISWcjs.brushstrokeKey; exports.brushstrokeSamples = _chunkSTLTOISWcjs.brushstrokeSamples; exports.brushstrokeScaleBucket = _chunkYQGCPL5Xcjs.brushstrokeScaleBucket; exports.brushstrokeStrokeOptions = _chunkSTLTOISWcjs.brushstrokeStrokeOptions; exports.brushstrokeToCanvas = _chunkSTLTOISWcjs.brushstrokeToCanvas; exports.canShareMemory = _chunkJ5VQYK7Tcjs.canShareMemory; exports.cleanMixer = _chunkNIBFKXMDcjs.cleanMixer; exports.cloneSamplePoint = _chunk62MFUHSIcjs.cloneSamplePoint; exports.contentAwareFill = _chunkBB6TR422cjs.contentAwareFill; exports.coverageTileCoord = _chunkNIBFKXMDcjs.coverageTileCoord; exports.createBlenderScratch = _chunkNIBFKXMDcjs.createBlenderScratch; exports.createPigment = _chunk2VX55NFMcjs.createPigment; exports.createPigmentTools = _chunk62MFUHSIcjs.createPigmentTools; exports.createWetGpuEngine = _chunkJ5VQYK7Tcjs.createWetGpuEngine; exports.dabCoverage = _chunkNIBFKXMDcjs.dabCoverage; exports.dabRect = _chunkNIBFKXMDcjs.dabRect; exports.dexp = _chunkJ5VQYK7Tcjs.dexp; exports.dilateMask = _chunkBB6TR422cjs.dilateMask; exports.dlog = _chunkJ5VQYK7Tcjs.dlog; exports.dodgeBurn = _chunk62MFUHSIcjs.dodgeBurn; exports.dodgeBurnCurve = _chunk62MFUHSIcjs.dodgeBurnCurve; exports.dpow = _chunkJ5VQYK7Tcjs.dpow; exports.dsincos = _chunkJ5VQYK7Tcjs.dsincos; exports.edgeBits = _chunkJ5VQYK7Tcjs.edgeBits; exports.exchangeRates = _chunkNIBFKXMDcjs.exchangeRates; exports.expNeg = _chunkJ5VQYK7Tcjs.expNeg; exports.filmPixel = _chunkJ5VQYK7Tcjs.filmPixel; exports.filmReflectance = _chunkJ5VQYK7Tcjs.filmReflectance; exports.findWebGpu = _chunkJ5VQYK7Tcjs.findWebGpu; exports.flowField = _chunkJ5VQYK7Tcjs.flowField; exports.gradientDabColor = _chunkNIBFKXMDcjs.gradientDabColor; exports.grainCatch = _chunkNIBFKXMDcjs.grainCatch; exports.grainHeights = _chunkNIBFKXMDcjs.grainHeights; exports.hash2 = _chunk3K6HWEXZcjs.hash2; exports.healPixels = _chunk62MFUHSIcjs.healPixels; exports.hexToPaintRgb = _chunkNIBFKXMDcjs.hexToPaintRgb; exports.isBrushstrokeBrush = _chunkSTLTOISWcjs.isBrushstrokeBrush; exports.isGradientPaint = _chunkNIBFKXMDcjs.isGradientPaint; exports.isIdentityCloneTransform = _chunk62MFUHSIcjs.isIdentityCloneTransform; exports.latticeViscosity = _chunkJ5VQYK7Tcjs.latticeViscosity; exports.lerpPigment = _chunk2VX55NFMcjs.lerpPigment; exports.lerpPigmentInto = _chunk2VX55NFMcjs.lerpPigmentInto; exports.linearToSrgb8 = _chunkJ5VQYK7Tcjs.linearToSrgb8; exports.loadMixer = _chunkNIBFKXMDcjs.loadMixer; exports.loadWetKernel = _chunkJ5VQYK7Tcjs.loadWetKernel; exports.luma = _chunk62MFUHSIcjs.luma; exports.maskBounds = _chunkBB6TR422cjs.maskBounds; exports.membraneFill = _chunkBB6TR422cjs.membraneFill; exports.mix32 = _chunk3K6HWEXZcjs.mix32; exports.mixPigments = _chunk2VX55NFMcjs.mixPigments; exports.mixerRates = _chunkNIBFKXMDcjs.mixerRates; exports.moveWetSnapshot = _chunkJ5VQYK7Tcjs.moveWetSnapshot; exports.normalizeBlender = _chunkNIBFKXMDcjs.normalizeBlender; exports.normalizeBrush = _chunkNIBFKXMDcjs.normalizeBrush; exports.normalizeFlow = _chunkJ5VQYK7Tcjs.normalizeFlow; exports.normalizeHexColor = _chunkNIBFKXMDcjs.normalizeHexColor; exports.normalizeMixer = _chunkNIBFKXMDcjs.normalizeMixer; exports.normalizeRetouch = _chunk62MFUHSIcjs.normalizeRetouch; exports.normalizeSmudge = _chunkNIBFKXMDcjs.normalizeSmudge; exports.normalizeTilt = _chunkJ5VQYK7Tcjs.normalizeTilt; exports.normalizeWetParams = _chunkJ5VQYK7Tcjs.normalizeWetParams; exports.packWetParams = _chunkJ5VQYK7Tcjs.packWetParams; exports.paintGradientMappingFor = _chunkNIBFKXMDcjs.paintGradientMappingFor; exports.paintPathStroke = _chunkSTLTOISWcjs.paintPathStroke; exports.paintSourceColor = _chunkNIBFKXMDcjs.paintSourceColor; exports.paintSourceCss = _chunkNIBFKXMDcjs.paintSourceCss; exports.parsePaintSource = _chunkNIBFKXMDcjs.parsePaintSource; exports.pathStrokeCoverage = _chunkSTLTOISWcjs.pathStrokeCoverage; exports.pathStrokeDabs = _chunkSTLTOISWcjs.pathStrokeDabs; exports.perDabStrength = _chunk62MFUHSIcjs.perDabStrength; exports.pigmentColor = _chunkJ5VQYK7Tcjs.pigmentColor; exports.pigmentOf = _chunkJ5VQYK7Tcjs.pigmentOf; exports.pixelPigment = _chunkJ5VQYK7Tcjs.pixelPigment; exports.pointerPressure = _chunk62MFUHSIcjs.pointerPressure; exports.pointerStrokeSample = _chunk62MFUHSIcjs.pointerStrokeSample; exports.pointerStrokeSamples = _chunk62MFUHSIcjs.pointerStrokeSamples; exports.put255 = _chunkNIBFKXMDcjs.put255; exports.rand01 = _chunk3K6HWEXZcjs.rand01; exports.randSigned = _chunk3K6HWEXZcjs.randSigned; exports.rasterizeDab = _chunkNIBFKXMDcjs.rasterizeDab; exports.readPaintSource = _chunkNIBFKXMDcjs.readPaintSource; exports.readSourceRegion = _chunk62MFUHSIcjs.readSourceRegion; exports.reflectanceToRgb = _chunk2VX55NFMcjs.reflectanceToRgb; exports.removePaintGradientStop = _chunkNIBFKXMDcjs.removePaintGradientStop; exports.renderBrushstroke = _chunkSTLTOISWcjs.renderBrushstroke; exports.resolvePaintGradient = _chunkNIBFKXMDcjs.resolvePaintGradient; exports.retouchFilter = _chunk62MFUHSIcjs.retouchFilter; exports.reversePaintGradient = _chunkNIBFKXMDcjs.reversePaintGradient; exports.rgbToReflectance = _chunk2VX55NFMcjs.rgbToReflectance; exports.rgbaViewOfGrey = _chunk62MFUHSIcjs.rgbaViewOfGrey; exports.saturationOf = _chunk62MFUHSIcjs.saturationOf; exports.scalePaintGradient = _chunkNIBFKXMDcjs.scalePaintGradient; exports.seamlessClone = _chunkBB6TR422cjs.seamlessClone; exports.seedFromString = _chunk3K6HWEXZcjs.seedFromString; exports.setPigmentColor = _chunk2VX55NFMcjs.setPigmentColor; exports.shadeLightTile = _chunkJ5VQYK7Tcjs.shadeLightTile; exports.shadeTile = _chunkJ5VQYK7Tcjs.shadeTile; exports.smoothPoints = _chunkNIBFKXMDcjs.smoothPoints; exports.smudgeEffect = _chunk62MFUHSIcjs.smudgeEffect; exports.solidPaint = _chunkNIBFKXMDcjs.solidPaint; exports.solveMembrane = _chunkBB6TR422cjs.solveMembrane; exports.sponge = _chunk62MFUHSIcjs.sponge; exports.spongeEffect = _chunk62MFUHSIcjs.spongeEffect; exports.spotHealPixels = _chunk62MFUHSIcjs.spotHealPixels; exports.spotHealWindow = _chunk62MFUHSIcjs.spotHealWindow; exports.srgbByteToLinear = _chunkJ5VQYK7Tcjs.srgbByteToLinear; exports.stepSlotTs = _chunkJ5VQYK7Tcjs.stepSlotTs; exports.strokeGrainCatch = _chunkNIBFKXMDcjs.strokeGrainCatch; exports.tipFalloff = _chunkNIBFKXMDcjs.tipFalloff; exports.tipReach = _chunkNIBFKXMDcjs.tipReach; exports.tipShape = _chunkNIBFKXMDcjs.tipShape; exports.toneOf = _chunk62MFUHSIcjs.toneOf; exports.updatePaintGradientStop = _chunkNIBFKXMDcjs.updatePaintGradientStop; exports.walkDabs = _chunkNIBFKXMDcjs.walkDabs; exports.wetGpuSupport = _chunkJ5VQYK7Tcjs.wetGpuSupport; exports.wetSimdSupported = _chunkJ5VQYK7Tcjs.wetSimdSupported; exports.wetSupport = _chunkJ5VQYK7Tcjs.wetSupport;
@@ -33,7 +33,7 @@ import {
33
33
  spotHealPixels,
34
34
  spotHealWindow,
35
35
  toneOf
36
- } from "../chunk-7UKFXXWL.js";
36
+ } from "../chunk-HVO6XCI4.js";
37
37
  import {
38
38
  bestOffset,
39
39
  contentAwareFill,
@@ -137,23 +137,17 @@ import {
137
137
  } from "../chunk-GSTSZPSR.js";
138
138
  import {
139
139
  BrushstrokeCache,
140
- GRAIN_PATTERNS,
141
- GRAIN_TILE,
142
- PaperGrain,
143
140
  brushstrokeDataUrl,
144
141
  brushstrokeKey,
145
142
  brushstrokeSamples,
146
143
  brushstrokeStrokeOptions,
147
144
  brushstrokeToCanvas,
148
- grainCatch,
149
- grainHeights,
150
145
  isBrushstrokeBrush,
151
146
  paintPathStroke,
152
147
  pathStrokeCoverage,
153
148
  pathStrokeDabs,
154
- renderBrushstroke,
155
- strokeGrainCatch
156
- } from "../chunk-TXFWZ5ZJ.js";
149
+ renderBrushstroke
150
+ } from "../chunk-W6JDUXP3.js";
157
151
  import {
158
152
  CoverageMap,
159
153
  DEFAULT_BLENDER,
@@ -164,6 +158,8 @@ import {
164
158
  DEFAULT_SMUDGE,
165
159
  DabWalker,
166
160
  EMPTY_MIXER_LOAD,
161
+ GRAIN_PATTERNS,
162
+ GRAIN_TILE,
167
163
  MAX_BRUSH_SIZE,
168
164
  MIXER_DRAIN,
169
165
  MIXER_PICKUP_RATE,
@@ -184,6 +180,7 @@ import {
184
180
  PaintExchange,
185
181
  PaintGradientSampler,
186
182
  PaintSourceError,
183
+ PaperGrain,
187
184
  SmudgeTip,
188
185
  StrokeCoverage,
189
186
  TIP_GRADIENT_STEPS,
@@ -200,6 +197,8 @@ import {
200
197
  dabRect,
201
198
  exchangeRates,
202
199
  gradientDabColor,
200
+ grainCatch,
201
+ grainHeights,
203
202
  hexToPaintRgb,
204
203
  isGradientPaint,
205
204
  loadMixer,
@@ -222,12 +221,13 @@ import {
222
221
  scalePaintGradient,
223
222
  smoothPoints,
224
223
  solidPaint,
224
+ strokeGrainCatch,
225
225
  tipFalloff,
226
226
  tipReach,
227
227
  tipShape,
228
228
  updatePaintGradientStop,
229
229
  walkDabs
230
- } from "../chunk-GCVFEPJG.js";
230
+ } from "../chunk-ACTHSQOI.js";
231
231
  import {
232
232
  TileableNoise,
233
233
  hash2,
@@ -241,7 +241,6 @@ import {
241
241
  BRUSHSTROKE_MIN_SCALE,
242
242
  brushstrokeScaleBucket
243
243
  } from "../chunk-ODBT55Q7.js";
244
- import "../chunk-OTTT5N3K.js";
245
244
  import {
246
245
  PIGMENT_BANDS,
247
246
  PIGMENT_LAMBDA_MIN,
@@ -255,6 +254,7 @@ import {
255
254
  rgbToReflectance,
256
255
  setPigmentColor
257
256
  } from "../chunk-IRSTHLQQ.js";
257
+ import "../chunk-OTTT5N3K.js";
258
258
  import "../chunk-HVVR5PZW.js";
259
259
  import "../chunk-QGHEDC7B.js";
260
260
  export {
@@ -2,17 +2,27 @@
2
2
  * The shared brush library's agent tools for a paint editor (`createPaintBrushLibraryToolProvider`),
3
3
  * with `preview_brush` painted by this editor.
4
4
  */
5
+ import type { BrushLibrary } from '../brushes/library.cjs';
6
+ import type { StickerArtLookup } from './sticker-art.cjs';
5
7
  import { type BrushLibraryToolProviderOptions, type BrushPreviewRenderer } from '../brushes/tools.cjs';
6
8
  import type { AgentToolProvider } from '../tools/registry.cjs';
7
9
  import type { PaintEditorController } from './controller.cjs';
8
10
  import { type PaperSettings } from './paper.cjs';
9
11
  export type PaintBrushLibraryToolProviderOptions = Omit<BrushLibraryToolProviderOptions, 'renderPreview'>;
12
+ /** Where a preview renderer finds a brush's image sources (and sticker art). */
13
+ export interface PaintBrushPreviewOptions {
14
+ /** Image sources are read from this library before each preview that needs them. */
15
+ library?: Pick<BrushLibrary, 'getSource'>;
16
+ /** Art for sticker stamp tips (and anything else not in the library), read on every call. */
17
+ stampArt?: () => StickerArtLookup | undefined;
18
+ }
10
19
  /**
11
20
  * A brush preview renderer (`BrushPreviewRenderer`, as `preview_brush` and `BrushLibraryEditor`
12
21
  * take) that paints the test stroke with the paint engine on `paper` (read on every call; default
13
- * the default paper). Any brush the paint editor renders, so also the image editor's.
22
+ * the default paper). Any brush the paint editor renders, so also the image editor's. With
23
+ * `options.library`, image tips and image grain are drawn from its sources.
14
24
  */
15
- export declare function paintBrushPreviewRenderer(paper?: () => PaperSettings): BrushPreviewRenderer;
25
+ export declare function paintBrushPreviewRenderer(paper?: () => PaperSettings, options?: PaintBrushPreviewOptions): BrushPreviewRenderer;
16
26
  /**
17
27
  * The brush library tools for a paint editor (`@pixerate/editor/brushes`' provider on the
18
28
  * editor's `brushLibrary`, `PAINT_PROFILE`), with `preview_brush` painting the test stroke on the
@@ -2,17 +2,27 @@
2
2
  * The shared brush library's agent tools for a paint editor (`createPaintBrushLibraryToolProvider`),
3
3
  * with `preview_brush` painted by this editor.
4
4
  */
5
+ import type { BrushLibrary } from '../brushes/library.js';
6
+ import type { StickerArtLookup } from './sticker-art.js';
5
7
  import { type BrushLibraryToolProviderOptions, type BrushPreviewRenderer } from '../brushes/tools.js';
6
8
  import type { AgentToolProvider } from '../tools/registry.js';
7
9
  import type { PaintEditorController } from './controller.js';
8
10
  import { type PaperSettings } from './paper.js';
9
11
  export type PaintBrushLibraryToolProviderOptions = Omit<BrushLibraryToolProviderOptions, 'renderPreview'>;
12
+ /** Where a preview renderer finds a brush's image sources (and sticker art). */
13
+ export interface PaintBrushPreviewOptions {
14
+ /** Image sources are read from this library before each preview that needs them. */
15
+ library?: Pick<BrushLibrary, 'getSource'>;
16
+ /** Art for sticker stamp tips (and anything else not in the library), read on every call. */
17
+ stampArt?: () => StickerArtLookup | undefined;
18
+ }
10
19
  /**
11
20
  * A brush preview renderer (`BrushPreviewRenderer`, as `preview_brush` and `BrushLibraryEditor`
12
21
  * take) that paints the test stroke with the paint engine on `paper` (read on every call; default
13
- * the default paper). Any brush the paint editor renders, so also the image editor's.
22
+ * the default paper). Any brush the paint editor renders, so also the image editor's. With
23
+ * `options.library`, image tips and image grain are drawn from its sources.
14
24
  */
15
- export declare function paintBrushPreviewRenderer(paper?: () => PaperSettings): BrushPreviewRenderer;
25
+ export declare function paintBrushPreviewRenderer(paper?: () => PaperSettings, options?: PaintBrushPreviewOptions): BrushPreviewRenderer;
16
26
  /**
17
27
  * The brush library tools for a paint editor (`@pixerate/editor/brushes`' provider on the
18
28
  * editor's `brushLibrary`, `PAINT_PROFILE`), with `preview_brush` painting the test stroke on the
@@ -156,7 +156,31 @@ export interface BrushDynamics {
156
156
  opacityJitter: number;
157
157
  /** Random offset across the stroke in diameters, 0..4 (default 0). */
158
158
  scatter: number;
159
+ /** Dabs laid at each spacing step, 1..16, each with its own jitter (missing: 1). */
160
+ count?: number;
161
+ /** Mirror each dab at random across these axes (missing: `none`). */
162
+ flip?: DabFlip;
159
163
  }
164
+ /** Random mirroring of dabs. */
165
+ export type DabFlip = 'none' | 'x' | 'y' | 'xy';
166
+ export declare const DAB_FLIPS: readonly DabFlip[];
167
+ export type TipGrainMode = 'moving' | 'texturised';
168
+ export declare const TIP_GRAIN_MODES: readonly TipGrainMode[];
169
+ /** Texture inside the tip (dab engines): each dab's coverage is multiplied by it. */
170
+ export interface TipGrainSettings {
171
+ /** A grain pattern (`rough`, `canvas`…) or an image source `source:<id>`. */
172
+ source: string;
173
+ /** `texturised` (default): fixed to the canvas; `moving`: rolls along with the tip. */
174
+ mode: TipGrainMode;
175
+ /** 0.05..20: 1 the source's own size (default 1). */
176
+ scale: number;
177
+ /** 0..1: how much it takes out of the dab (default 0.6). */
178
+ depth: number;
179
+ /** 0..3 around the middle (default 1). */
180
+ contrast: number;
181
+ invert: boolean;
182
+ }
183
+ export declare const DEFAULT_TIP_GRAIN: Readonly<Omit<TipGrainSettings, 'source'>>;
160
184
  export declare const DEFAULT_DYNAMICS: Readonly<BrushDynamics>;
161
185
  export interface PaintBrush {
162
186
  /** Library id (lowercase letters, digits and dashes). */
@@ -202,6 +226,8 @@ export interface PaintBrush {
202
226
  stamp: string | null;
203
227
  /** Dab engine: spray marks. Each dab lays a seeded scatter of droplets across the tip; `null` (default): one mark per dab. */
204
228
  spray: SpraySettings | null;
229
+ /** Dab engines: texture inside the tip (missing: none). Recorded with the stroke, source ref included, so replays match. */
230
+ tipGrain?: TipGrainSettings;
205
231
  /**
206
232
  * The brush's own gradient paint (`@pixerate/editor/paint` `PaintGradientSource`), used instead
207
233
  * of the editor's paint; `null` (default): the editor's paint. Stops may be `paint` / `secondary`
@@ -228,8 +254,10 @@ export interface SpraySettings {
228
254
  size: number;
229
255
  }
230
256
  export declare const DEFAULT_SPRAY: Readonly<SpraySettings>;
231
- export type PaintBrushInput = Partial<Omit<PaintBrush, 'tip' | 'dynamics' | 'mixer' | 'behavior' | 'blender' | 'smudge' | 'wet' | 'impasto' | 'particle' | 'bristle' | 'sticker' | 'paint' | 'light' | 'spray'>> & {
257
+ export type PaintBrushInput = Partial<Omit<PaintBrush, 'tip' | 'dynamics' | 'mixer' | 'behavior' | 'blender' | 'smudge' | 'wet' | 'impasto' | 'particle' | 'bristle' | 'sticker' | 'paint' | 'light' | 'spray' | 'tipGrain'>> & {
232
258
  spray?: Partial<SpraySettings> | null;
259
+ /** Tip grain (`null` removes it). */
260
+ tipGrain?: Partial<TipGrainSettings> | null;
233
261
  light?: Partial<LightSettings>;
234
262
  /** A gradient (or `null` for the editor's paint); a plain colour source clears it. */
235
263
  paint?: PaintSource | null;
@@ -156,7 +156,31 @@ export interface BrushDynamics {
156
156
  opacityJitter: number;
157
157
  /** Random offset across the stroke in diameters, 0..4 (default 0). */
158
158
  scatter: number;
159
+ /** Dabs laid at each spacing step, 1..16, each with its own jitter (missing: 1). */
160
+ count?: number;
161
+ /** Mirror each dab at random across these axes (missing: `none`). */
162
+ flip?: DabFlip;
159
163
  }
164
+ /** Random mirroring of dabs. */
165
+ export type DabFlip = 'none' | 'x' | 'y' | 'xy';
166
+ export declare const DAB_FLIPS: readonly DabFlip[];
167
+ export type TipGrainMode = 'moving' | 'texturised';
168
+ export declare const TIP_GRAIN_MODES: readonly TipGrainMode[];
169
+ /** Texture inside the tip (dab engines): each dab's coverage is multiplied by it. */
170
+ export interface TipGrainSettings {
171
+ /** A grain pattern (`rough`, `canvas`…) or an image source `source:<id>`. */
172
+ source: string;
173
+ /** `texturised` (default): fixed to the canvas; `moving`: rolls along with the tip. */
174
+ mode: TipGrainMode;
175
+ /** 0.05..20: 1 the source's own size (default 1). */
176
+ scale: number;
177
+ /** 0..1: how much it takes out of the dab (default 0.6). */
178
+ depth: number;
179
+ /** 0..3 around the middle (default 1). */
180
+ contrast: number;
181
+ invert: boolean;
182
+ }
183
+ export declare const DEFAULT_TIP_GRAIN: Readonly<Omit<TipGrainSettings, 'source'>>;
160
184
  export declare const DEFAULT_DYNAMICS: Readonly<BrushDynamics>;
161
185
  export interface PaintBrush {
162
186
  /** Library id (lowercase letters, digits and dashes). */
@@ -202,6 +226,8 @@ export interface PaintBrush {
202
226
  stamp: string | null;
203
227
  /** Dab engine: spray marks. Each dab lays a seeded scatter of droplets across the tip; `null` (default): one mark per dab. */
204
228
  spray: SpraySettings | null;
229
+ /** Dab engines: texture inside the tip (missing: none). Recorded with the stroke, source ref included, so replays match. */
230
+ tipGrain?: TipGrainSettings;
205
231
  /**
206
232
  * The brush's own gradient paint (`@pixerate/editor/paint` `PaintGradientSource`), used instead
207
233
  * of the editor's paint; `null` (default): the editor's paint. Stops may be `paint` / `secondary`
@@ -228,8 +254,10 @@ export interface SpraySettings {
228
254
  size: number;
229
255
  }
230
256
  export declare const DEFAULT_SPRAY: Readonly<SpraySettings>;
231
- export type PaintBrushInput = Partial<Omit<PaintBrush, 'tip' | 'dynamics' | 'mixer' | 'behavior' | 'blender' | 'smudge' | 'wet' | 'impasto' | 'particle' | 'bristle' | 'sticker' | 'paint' | 'light' | 'spray'>> & {
257
+ export type PaintBrushInput = Partial<Omit<PaintBrush, 'tip' | 'dynamics' | 'mixer' | 'behavior' | 'blender' | 'smudge' | 'wet' | 'impasto' | 'particle' | 'bristle' | 'sticker' | 'paint' | 'light' | 'spray' | 'tipGrain'>> & {
232
258
  spray?: Partial<SpraySettings> | null;
259
+ /** Tip grain (`null` removes it). */
260
+ tipGrain?: Partial<TipGrainSettings> | null;
233
261
  light?: Partial<LightSettings>;
234
262
  /** A gradient (or `null` for the editor's paint); a plain colour source clears it. */
235
263
  paint?: PaintSource | null;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Brush sources the paint engine can draw with: the brush library's and the open painting's, by
3
+ * id. Strokes read them synchronously, as they read sticker art (`StickerArtLookup`): a stamp tip
4
+ * `source:<id>` and an image tip grain both take the source's mask as alpha. Each mask is decoded
5
+ * the first time it is drawn.
6
+ */
7
+ import { type BrushSource } from '../brushes/sources.cjs';
8
+ import type { StickerArtLookup } from './sticker-art.cjs';
9
+ export declare class BrushSourceArtCache {
10
+ private readonly sources;
11
+ private readonly art;
12
+ /** Adds or replaces sources (a replaced image is decoded again). */
13
+ set(sources: Iterable<BrushSource>): void;
14
+ /** The source of an id, if known. */
15
+ source(id: string): BrushSource | undefined;
16
+ /** Every known source. */
17
+ all(): BrushSource[];
18
+ /** The art of a `source:<id>` ref (alpha = the mask), or `undefined` when the source is unknown or its image can't be read. */
19
+ get: StickerArtLookup;
20
+ /** A lookup that reads sources from here and every other ref from `stickers`. */
21
+ with(stickers: StickerArtLookup): StickerArtLookup;
22
+ }
23
+ /** The ids of the sources an engine brush draws with: its stamp tip, its tip grain and its particle stamps. */
24
+ export declare function engineBrushSourceIds(brush: {
25
+ stamp: string | null;
26
+ tipGrain?: {
27
+ source: string;
28
+ };
29
+ particle?: {
30
+ dotTextures: readonly string[];
31
+ };
32
+ }): string[];
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Brush sources the paint engine can draw with: the brush library's and the open painting's, by
3
+ * id. Strokes read them synchronously, as they read sticker art (`StickerArtLookup`): a stamp tip
4
+ * `source:<id>` and an image tip grain both take the source's mask as alpha. Each mask is decoded
5
+ * the first time it is drawn.
6
+ */
7
+ import { type BrushSource } from '../brushes/sources.js';
8
+ import type { StickerArtLookup } from './sticker-art.js';
9
+ export declare class BrushSourceArtCache {
10
+ private readonly sources;
11
+ private readonly art;
12
+ /** Adds or replaces sources (a replaced image is decoded again). */
13
+ set(sources: Iterable<BrushSource>): void;
14
+ /** The source of an id, if known. */
15
+ source(id: string): BrushSource | undefined;
16
+ /** Every known source. */
17
+ all(): BrushSource[];
18
+ /** The art of a `source:<id>` ref (alpha = the mask), or `undefined` when the source is unknown or its image can't be read. */
19
+ get: StickerArtLookup;
20
+ /** A lookup that reads sources from here and every other ref from `stickers`. */
21
+ with(stickers: StickerArtLookup): StickerArtLookup;
22
+ }
23
+ /** The ids of the sources an engine brush draws with: its stamp tip, its tip grain and its particle stamps. */
24
+ export declare function engineBrushSourceIds(brush: {
25
+ stamp: string | null;
26
+ tipGrain?: {
27
+ source: string;
28
+ };
29
+ particle?: {
30
+ dotTextures: readonly string[];
31
+ };
32
+ }): string[];
@@ -39,7 +39,8 @@ import { type PaintGuides, type PerspectiveGuide, type ReferenceImage, type Symm
39
39
  import { MixingPad, type MixingPadTool, type PadMixOptions } from './mixing-pad.cjs';
40
40
  import { type Stencil, type StencilInput } from './stencils.cjs';
41
41
  import { type Sticker } from './stickers.cjs';
42
- import { type StickerRasterizer } from './sticker-art.cjs';
42
+ import { type StickerArtLookup, type StickerRasterizer } from './sticker-art.cjs';
43
+ import { BrushSourceArtCache } from './brush-source-art.cjs';
43
44
  import { StickersSlot } from '../stickers/helpers.cjs';
44
45
  import type { StickerProvider, StickerRef } from '../stickers/types.cjs';
45
46
  import { type LightSpill } from './light.cjs';
@@ -445,6 +446,10 @@ export declare class PaintEditorController {
445
446
  /** The sticker library slot (see `setStickersProvider`). */
446
447
  readonly stickers: StickersSlot;
447
448
  private readonly stickerArt;
449
+ /** Image sources strokes draw with: the brush library's and the open painting's (saved with it). */
450
+ readonly brushSources: BrushSourceArtCache;
451
+ /** Art for stamp tips and tip grain: image sources from `brushSources`, stickers from the sticker library. */
452
+ readonly stampArt: StickerArtLookup;
448
453
  private readonly rasterizeSticker;
449
454
  private readonly effectsRenderer;
450
455
  private paperEffectNodeCache;
@@ -39,7 +39,8 @@ import { type PaintGuides, type PerspectiveGuide, type ReferenceImage, type Symm
39
39
  import { MixingPad, type MixingPadTool, type PadMixOptions } from './mixing-pad.js';
40
40
  import { type Stencil, type StencilInput } from './stencils.js';
41
41
  import { type Sticker } from './stickers.js';
42
- import { type StickerRasterizer } from './sticker-art.js';
42
+ import { type StickerArtLookup, type StickerRasterizer } from './sticker-art.js';
43
+ import { BrushSourceArtCache } from './brush-source-art.js';
43
44
  import { StickersSlot } from '../stickers/helpers.js';
44
45
  import type { StickerProvider, StickerRef } from '../stickers/types.js';
45
46
  import { type LightSpill } from './light.js';
@@ -445,6 +446,10 @@ export declare class PaintEditorController {
445
446
  /** The sticker library slot (see `setStickersProvider`). */
446
447
  readonly stickers: StickersSlot;
447
448
  private readonly stickerArt;
449
+ /** Image sources strokes draw with: the brush library's and the open painting's (saved with it). */
450
+ readonly brushSources: BrushSourceArtCache;
451
+ /** Art for stamp tips and tip grain: image sources from `brushSources`, stickers from the sticker library. */
452
+ readonly stampArt: StickerArtLookup;
448
453
  private readonly rasterizeSticker;
449
454
  private readonly effectsRenderer;
450
455
  private paperEffectNodeCache;
@@ -76,6 +76,8 @@ export declare class PaintDabStroke {
76
76
  private lastFed;
77
77
  /** The stamp tip's shape (dab brushes), or `null` for the round computed tip. */
78
78
  private readonly stamp;
79
+ /** The tip's own grain, or `null`. */
80
+ private readonly tipGrain;
79
81
  constructor(brush: PaintBrush, options: PaintDabStrokeOptions);
80
82
  /** What copy 0's brush carries after the dabs so far (mixer and wet-capable dab brushes). */
81
83
  get load(): MixerLoad | null;
@@ -76,6 +76,8 @@ export declare class PaintDabStroke {
76
76
  private lastFed;
77
77
  /** The stamp tip's shape (dab brushes), or `null` for the round computed tip. */
78
78
  private readonly stamp;
79
+ /** The tip's own grain, or `null`. */
80
+ private readonly tipGrain;
79
81
  constructor(brush: PaintBrush, options: PaintDabStrokeOptions);
80
82
  /** What copy 0's brush carries after the dabs so far (mixer and wet-capable dab brushes). */
81
83
  get load(): MixerLoad | null;