@pixerate/editor 0.116.0 → 0.118.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 (63) hide show
  1. package/THIRD_PARTY_NOTICES.md +2 -0
  2. package/dist/{chunk-ZYZGEILO.cjs → chunk-2J3LS7JZ.cjs} +203 -203
  3. package/dist/{chunk-ZYZGEILO.cjs.map → chunk-2J3LS7JZ.cjs.map} +1 -1
  4. package/dist/{chunk-TFOPHZ3U.cjs → chunk-7ISPWEJA.cjs} +302 -5
  5. package/dist/chunk-7ISPWEJA.cjs.map +1 -0
  6. package/dist/{chunk-2UT4GXYA.cjs → chunk-BYAWOAST.cjs} +109 -41
  7. package/dist/chunk-BYAWOAST.cjs.map +1 -0
  8. package/dist/{chunk-PAOWHJ5O.cjs → chunk-EBSYZRSW.cjs} +217 -400
  9. package/dist/chunk-EBSYZRSW.cjs.map +1 -0
  10. package/dist/{chunk-XK5LZKBD.js → chunk-HKDTM6VC.js} +298 -1
  11. package/dist/chunk-HKDTM6VC.js.map +1 -0
  12. package/dist/{chunk-D53VQGEJ.js → chunk-IVSNUXW7.js} +79 -2
  13. package/dist/chunk-IVSNUXW7.js.map +1 -0
  14. package/dist/{chunk-ARQ7PQ6Q.js → chunk-JHXMNOMF.js} +71 -3
  15. package/dist/chunk-JHXMNOMF.js.map +1 -0
  16. package/dist/{chunk-HOCPSFGA.cjs → chunk-L2T6EJ5S.cjs} +154 -77
  17. package/dist/chunk-L2T6EJ5S.cjs.map +1 -0
  18. package/dist/{chunk-SEBYNBHW.js → chunk-R2JE6SA7.js} +9 -9
  19. package/dist/{chunk-D53KSJUV.js → chunk-VD2UDVF7.js} +100 -283
  20. package/dist/chunk-VD2UDVF7.js.map +1 -0
  21. package/dist/{export-BXxSGBCq.d.cts → export-DMOuzgZZ.d.cts} +8 -3
  22. package/dist/{export-Dm44YUvS.d.ts → export-Dul1SbPv.d.ts} +8 -3
  23. package/dist/{flow-COCB42TP.d.cts → flow-4-OC-UkQ.d.cts} +22 -1
  24. package/dist/{flow-BMtHAmg4.d.ts → flow-Cb7lkPm8.d.ts} +22 -1
  25. package/dist/image-editor/index.cjs +1112 -1024
  26. package/dist/image-editor/index.cjs.map +1 -1
  27. package/dist/image-editor/index.d.cts +6 -6
  28. package/dist/image-editor/index.d.ts +6 -6
  29. package/dist/image-editor/index.js +124 -36
  30. package/dist/image-editor/index.js.map +1 -1
  31. package/dist/paint/index.cjs +8 -4
  32. package/dist/paint/index.cjs.map +1 -1
  33. package/dist/paint/index.d.cts +2 -2
  34. package/dist/paint/index.d.ts +2 -2
  35. package/dist/paint/index.js +7 -3
  36. package/dist/paint-editor/index.cjs +242 -242
  37. package/dist/paint-editor/index.d.cts +4 -4
  38. package/dist/paint-editor/index.d.ts +4 -4
  39. package/dist/paint-editor/index.js +4 -4
  40. package/dist/raster/index.cjs +6 -4
  41. package/dist/raster/index.cjs.map +1 -1
  42. package/dist/raster/index.d.cts +2 -2
  43. package/dist/raster/index.d.ts +2 -2
  44. package/dist/raster/index.js +27 -25
  45. package/dist/{render-CrmHOgpo.d.ts → render-B05K68_h.d.ts} +9 -1
  46. package/dist/{render-B1K_OoLy.d.cts → render-DnAbIKcs.d.cts} +9 -1
  47. package/dist/vector/index.cjs +11335 -10178
  48. package/dist/vector/index.cjs.map +1 -1
  49. package/dist/vector/index.d.cts +159 -5
  50. package/dist/vector/index.d.ts +159 -5
  51. package/dist/vector/index.js +11242 -10085
  52. package/dist/vector/index.js.map +1 -1
  53. package/package.json +1 -1
  54. package/skills/pixerate-image-editor/references/photoshop-files.md +6 -7
  55. package/dist/chunk-2UT4GXYA.cjs.map +0 -1
  56. package/dist/chunk-ARQ7PQ6Q.js.map +0 -1
  57. package/dist/chunk-D53KSJUV.js.map +0 -1
  58. package/dist/chunk-D53VQGEJ.js.map +0 -1
  59. package/dist/chunk-HOCPSFGA.cjs.map +0 -1
  60. package/dist/chunk-PAOWHJ5O.cjs.map +0 -1
  61. package/dist/chunk-TFOPHZ3U.cjs.map +0 -1
  62. package/dist/chunk-XK5LZKBD.js.map +0 -1
  63. /package/dist/{chunk-SEBYNBHW.js.map → chunk-R2JE6SA7.js.map} +0 -0
@@ -1,11 +1,11 @@
1
- import { a2 as RasterLayerBase, a3 as RasterMask$1, a5 as RasterPixelLayer, H as GroupBlendMode, r as EffectFill, G as GlobalLight, u as EffectPattern, M as Interpolation, T as LayerLocation$1, U as LayerLocks, O as LayerEffect, S as LayerEffects, R as RasterSources, a as RasterCompositor, l as CompositorOptions, Q as LayerEffectKind, p as EffectContext, h as BitDepth } from './render-B1K_OoLy.cjs';
1
+ import { a2 as RasterLayerBase, a3 as RasterMask$1, a5 as RasterPixelLayer, H as GroupBlendMode, r as EffectFill, G as GlobalLight, u as EffectPattern, M as Interpolation, T as LayerLocation$1, U as LayerLocks, O as LayerEffect, S as LayerEffects, R as RasterSources, a as RasterCompositor, l as CompositorOptions, Q as LayerEffectKind, p as EffectContext, h as BitDepth } from './render-DnAbIKcs.cjs';
2
2
  import { c as PixelSurface, a as BlendMode, j as TiledSurface, R as RasterRect } from './surface-Cn30xIV6.cjs';
3
3
  import { b as BuiltinProfileId, j as Intent, P as Profile, T as Transform, d as ColorSpace } from './builtin-CY97ppKM.cjs';
4
4
  import { A as AffineMatrix, Q as Quad, a as WarpMesh, V as Vec2$1, H as Homography } from './types-CwMPoRMU.cjs';
5
5
  import { B as BezierPath } from './bezier-BfwIbVTl.cjs';
6
6
  import { b as TextRun, P as ParagraphRun, T as TextShaper, c as ParagraphStyle, d as TextStyle, L as LaidFragment, W as WarpPreset, e as TextLayout } from './warp-B39VsOtd.cjs';
7
7
  import { w as VectorSubpath, o as Vec2 } from './types-Tfly4Aya.cjs';
8
- import { B as BrushSettings, M as MixerSettings, a as MixerLoad, R as RetouchSettings, S as StrokeCoverage, b as MixerTarget, c as MixerStroke, d as RetouchApply, e as StrokePoint, f as RetouchPaint, C as CoverageMap, P as PaintTileTarget, g as StrokeApply } from './flow-COCB42TP.cjs';
8
+ import { B as BrushSettings, M as MixerSettings, a as MixerLoad, R as RetouchSettings, S as StrokeCoverage, b as MixerTarget, c as MixerStroke, d as RetouchApply, e as StrokePoint, f as RetouchPaint, C as CoverageMap, P as PaintTileTarget, g as StrokeApply } from './flow-4-OC-UkQ.cjs';
9
9
 
10
10
  /**
11
11
  * A selection: one 8-bit coverage value per image pixel (0 = not selected, 255 = fully
@@ -2737,11 +2737,16 @@ declare class PaintStrokeSession {
2737
2737
  private readonly fresh;
2738
2738
  private last;
2739
2739
  private closed;
2740
+ /** Brush and eraser strokes on a 16- or 32-bit document: the deep samples of each touched tile. */
2741
+ private readonly deep;
2742
+ private readonly liveDeep;
2740
2743
  constructor(controller: ImageEditorController, target: {
2741
2744
  id: string;
2742
2745
  channel: LayerTarget;
2743
2746
  surface: TiledSurface;
2744
- }, stroke: StrokeCoverage | MixerStrokeInit | RetouchStrokeInit, apply: StrokeApply);
2747
+ }, stroke: StrokeCoverage | MixerStrokeInit | RetouchStrokeInit, apply: StrokeApply,
2748
+ /** Composite brush / eraser strokes at this bit depth (layers only); `null` for 8 bits. */
2749
+ depth?: 16 | 32 | null);
2745
2750
  /** The new tile of a coverage stroke over the pre-stroke tile `src`. */
2746
2751
  private compositeTile;
2747
2752
  /** The live pixels a mixer stroke reads and writes; base tiles are copied on first write. */
@@ -1,11 +1,11 @@
1
- import { a2 as RasterLayerBase, a3 as RasterMask$1, a5 as RasterPixelLayer, H as GroupBlendMode, r as EffectFill, G as GlobalLight, u as EffectPattern, M as Interpolation, T as LayerLocation$1, U as LayerLocks, O as LayerEffect, S as LayerEffects, R as RasterSources, a as RasterCompositor, l as CompositorOptions, Q as LayerEffectKind, p as EffectContext, h as BitDepth } from './render-CrmHOgpo.js';
1
+ import { a2 as RasterLayerBase, a3 as RasterMask$1, a5 as RasterPixelLayer, H as GroupBlendMode, r as EffectFill, G as GlobalLight, u as EffectPattern, M as Interpolation, T as LayerLocation$1, U as LayerLocks, O as LayerEffect, S as LayerEffects, R as RasterSources, a as RasterCompositor, l as CompositorOptions, Q as LayerEffectKind, p as EffectContext, h as BitDepth } from './render-B05K68_h.js';
2
2
  import { c as PixelSurface, a as BlendMode, j as TiledSurface, R as RasterRect } from './surface-Cn30xIV6.js';
3
3
  import { b as BuiltinProfileId, j as Intent, P as Profile, T as Transform, d as ColorSpace } from './builtin-CY97ppKM.js';
4
4
  import { A as AffineMatrix, Q as Quad, a as WarpMesh, V as Vec2$1, H as Homography } from './types-CwMPoRMU.js';
5
5
  import { B as BezierPath } from './bezier-DYBvLgUH.js';
6
6
  import { b as TextRun, P as ParagraphRun, T as TextShaper, c as ParagraphStyle, d as TextStyle, L as LaidFragment, W as WarpPreset, e as TextLayout } from './warp-DMN30aY6.js';
7
7
  import { w as VectorSubpath, o as Vec2 } from './types-CDLGhAZp.js';
8
- import { B as BrushSettings, M as MixerSettings, a as MixerLoad, R as RetouchSettings, S as StrokeCoverage, b as MixerTarget, c as MixerStroke, d as RetouchApply, e as StrokePoint, f as RetouchPaint, C as CoverageMap, P as PaintTileTarget, g as StrokeApply } from './flow-BMtHAmg4.js';
8
+ import { B as BrushSettings, M as MixerSettings, a as MixerLoad, R as RetouchSettings, S as StrokeCoverage, b as MixerTarget, c as MixerStroke, d as RetouchApply, e as StrokePoint, f as RetouchPaint, C as CoverageMap, P as PaintTileTarget, g as StrokeApply } from './flow-Cb7lkPm8.js';
9
9
 
10
10
  /**
11
11
  * A selection: one 8-bit coverage value per image pixel (0 = not selected, 255 = fully
@@ -2737,11 +2737,16 @@ declare class PaintStrokeSession {
2737
2737
  private readonly fresh;
2738
2738
  private last;
2739
2739
  private closed;
2740
+ /** Brush and eraser strokes on a 16- or 32-bit document: the deep samples of each touched tile. */
2741
+ private readonly deep;
2742
+ private readonly liveDeep;
2740
2743
  constructor(controller: ImageEditorController, target: {
2741
2744
  id: string;
2742
2745
  channel: LayerTarget;
2743
2746
  surface: TiledSurface;
2744
- }, stroke: StrokeCoverage | MixerStrokeInit | RetouchStrokeInit, apply: StrokeApply);
2747
+ }, stroke: StrokeCoverage | MixerStrokeInit | RetouchStrokeInit, apply: StrokeApply,
2748
+ /** Composite brush / eraser strokes at this bit depth (layers only); `null` for 8 bits. */
2749
+ depth?: 16 | 32 | null);
2745
2750
  /** The new tile of a coverage stroke over the pre-stroke tile `src`. */
2746
2751
  private compositeTile;
2747
2752
  /** The live pixels a mixer stroke reads and writes; base tiles are copied on first write. */
@@ -158,6 +158,17 @@ declare function applyStrokeToTile(coverage: CoverageMap, tileData: Uint8Clamped
158
158
  into?: Uint8ClampedArray;
159
159
  region?: RasterRect;
160
160
  }): Uint8ClampedArray;
161
+ /**
162
+ * `applyStrokeToTile` at high bit depth: composites the stroke's coverage over deep RGBA
163
+ * samples (`Uint16Array` sRGB or `Float32Array` linear light, see `raster/deep`) of the target's
164
+ * tile (tx, ty) as it was before the stroke, and returns new samples of the same type. Blending
165
+ * runs in float in the samples' own space (sRGB at 16 bits, linear light at 32 bits); the paint
166
+ * colours are 8-bit sRGB and converted. Layers only (masks stay 8-bit).
167
+ */
168
+ declare function applyStrokeToDeepTile(coverage: CoverageMap, samples: Uint16Array | Float32Array, tx: number, ty: number, s: StrokeApply, options?: {
169
+ into?: Uint16Array | Float32Array;
170
+ region?: RasterRect;
171
+ }): Uint16Array | Float32Array;
161
172
  /** Tile coordinates of coverage tile keys (for callers that track dirty tiles). */
162
173
  declare function coverageTileCoord(key: TileKey): {
163
174
  tx: number;
@@ -641,6 +652,16 @@ declare function applyRetouchToTile(coverage: CoverageMap, tileData: Uint8Clampe
641
652
  into?: Uint8ClampedArray;
642
653
  region?: RasterRect;
643
654
  }): Uint8ClampedArray;
655
+ /**
656
+ * Dodge / Burn at 16 or 32 bits: `applyRetouchToTile`'s tone paint on a layer tile's deep samples
657
+ * (`Uint16Array` sRGB-encoded, or `Float32Array` linear light, RGBA). The tone curves work on
658
+ * encoded values as at 8 bits, so 32-bit samples are encoded, toned and decoded (colour above 1 is
659
+ * toned at 1 and keeps its excess). Returns the new samples.
660
+ */
661
+ declare function applyToneToDeepTile(coverage: CoverageMap, samples: Uint16Array | Float32Array, tx: number, ty: number, tone: (rgb: number[]) => void, s: RetouchApply, options?: {
662
+ into?: Uint16Array | Float32Array;
663
+ region?: RasterRect;
664
+ }): Uint16Array | Float32Array;
644
665
  /** The tone function of a Dodge or Burn stroke. */
645
666
  declare function toneOf(tool: 'dodge' | 'burn', settings: Pick<RetouchSettings, 'exposure' | 'range' | 'protectTones'>): (rgb: number[]) => void;
646
667
  /**
@@ -1259,4 +1280,4 @@ declare function normalizeFlow(raw?: Partial<WetFlowSpec>, base?: WetFlowSpec):
1259
1280
  /** The flow field of a spec on a canvas, or `null` for `none` (strength is applied by the world). */
1260
1281
  declare function flowField(spec: WetFlowSpec, width: number, height: number): WetFlowField | null;
1261
1282
 
1262
- export { FLAG_RIGHT as $, normalizeWetParams as A, type BrushSettings as B, CoverageMap as C, type Dab as D, wetSupport as E, type BlenderScratch as F, DEFAULT_BLENDER as G, DEFAULT_BRUSH as H, DEFAULT_MIXER as I, DEFAULT_RETOUCH as J, DEFAULT_SMUDGE as K, DEFAULT_WET_PAPER as L, type MixerSettings as M, DRY_EPS as N, DabWalker as O, type PaintTileTarget as P, EMPTY_MIXER_LOAD as Q, type RetouchSettings as R, StrokeCoverage as S, TileMedium as T, EX as U, EY as V, WetWorld as W, type ExchangeRates as X, FLAG_ALIVE as Y, FLAG_BOTTOM as Z, FLAG_LEFT as _, type MixerLoad as a, blendRadius as a$, FLAG_TOP as a0, FLAG_WET as a1, FLAT as a2, FREE_INTERVAL as a3, MAX_BATCH as a4, MAX_TILT_ACCEL as a5, MAX_WET_LANES as a6, MAX_WET_SLOTS as a7, MIXER_DRAIN as a8, MIXER_PICKUP_RATE as a9, type RetouchSample as aA, SET_PLANES as aB, SLOT_BYTES as aC, SLOT_PLANES as aD, SLOT_SIDE as aE, SPOT_HEAL_TYPES as aF, STRIP as aG, type SmudgeDab as aH, SmudgeTip as aI, type SpotHealType as aJ, TONE_RANGES as aK, type TileMediumOptions as aL, TilePixelSource as aM, type ToneRange as aN, U_MAX as aO, W9 as aP, WET_TILE as aQ, type WetFlowField as aR, type WetKernelKind as aS, type WetLaneOptions as aT, type WetLaneStats as aU, type WetPaper as aV, type WetWorkerLayout as aW, WetWorkerPool as aX, WetWorldError as aY, applyRetouchToTile as aZ, applyStrokeToTile as a_, MIXING_MODELS as aa, OPP as ab, PAPER_CAPACITY as ac, PARAM as ad, PARAM_FLOATS as ae, PIGMENT_CHANNELS as af, PLANE as ag, PLANE_BYTES as ah, P_D0 as ai, P_EDGE as aj, P_FX as ak, P_FY as al, P_H as am, P_P0 as an, P_RHO as ao, P_SW as ap, P_UX as aq, P_UY as ar, PaintExchange as as, type PaintMedium as at, type PaintSample as au, type PixelSource as av, RETOUCH_SAMPLES as aw, RegionPixelSource as ax, type RetouchDabEffect as ay, RetouchDabStroke as az, type MixerTarget as b, blenderDab as b0, canShareMemory as b1, cleanMixer as b2, coverageTileCoord as b3, createBlenderScratch as b4, dabCoverage as b5, dabRect as b6, dodgeBurn as b7, dodgeBurnCurve as b8, dsincos as b9, spotHealWindow as bA, tipFalloff as bB, tipReach as bC, tipShape as bD, toneOf as bE, walkDabs as bF, wetSimdSupported as bG, edgeBits as ba, exchangeRates as bb, flowField as bc, healPixels as bd, latticeViscosity as be, loadMixer as bf, loadWetKernel as bg, luma as bh, mixerRates as bi, normalizeBlender as bj, normalizeBrush as bk, normalizeMixer as bl, normalizeRetouch as bm, normalizeSmudge as bn, normalizeTilt as bo, packWetParams as bp, perDabStrength as bq, rasterizeDab as br, readSourceRegion as bs, rgbaViewOfGrey as bt, saturationOf as bu, smoothPoints as bv, smudgeEffect as bw, sponge as bx, spongeEffect as by, spotHealPixels as bz, MixerStroke as c, type RetouchApply as d, type StrokePoint as e, type RetouchPaint as f, type StrokeApply as g, type MixingModel as h, type BlenderSettings as i, type SmudgeSettings as j, type WetTilt as k, type WetParams as l, type WetFlowSpec as m, type RgbTriple as n, type WetWorldOptions as o, type WetBackendInfo as p, type WetSnapshot as q, type WetPaperInput as r, DEFAULT_FLOW as s, DEFAULT_WET_PARAMS as t, MAX_BRUSH_SIZE as u, WET_FLOW_KINDS as v, WET_PARAM_KEYS as w, type WetFlowKind as x, type WetSupport as y, normalizeFlow as z };
1283
+ export { FLAG_RIGHT as $, normalizeWetParams as A, type BrushSettings as B, CoverageMap as C, type Dab as D, wetSupport as E, type BlenderScratch as F, DEFAULT_BLENDER as G, DEFAULT_BRUSH as H, DEFAULT_MIXER as I, DEFAULT_RETOUCH as J, DEFAULT_SMUDGE as K, DEFAULT_WET_PAPER as L, type MixerSettings as M, DRY_EPS as N, DabWalker as O, type PaintTileTarget as P, EMPTY_MIXER_LOAD as Q, type RetouchSettings as R, StrokeCoverage as S, TileMedium as T, EX as U, EY as V, WetWorld as W, type ExchangeRates as X, FLAG_ALIVE as Y, FLAG_BOTTOM as Z, FLAG_LEFT as _, type MixerLoad as a, applyStrokeToTile as a$, FLAG_TOP as a0, FLAG_WET as a1, FLAT as a2, FREE_INTERVAL as a3, MAX_BATCH as a4, MAX_TILT_ACCEL as a5, MAX_WET_LANES as a6, MAX_WET_SLOTS as a7, MIXER_DRAIN as a8, MIXER_PICKUP_RATE as a9, type RetouchSample as aA, SET_PLANES as aB, SLOT_BYTES as aC, SLOT_PLANES as aD, SLOT_SIDE as aE, SPOT_HEAL_TYPES as aF, STRIP as aG, type SmudgeDab as aH, SmudgeTip as aI, type SpotHealType as aJ, TONE_RANGES as aK, type TileMediumOptions as aL, TilePixelSource as aM, type ToneRange as aN, U_MAX as aO, W9 as aP, WET_TILE as aQ, type WetFlowField as aR, type WetKernelKind as aS, type WetLaneOptions as aT, type WetLaneStats as aU, type WetPaper as aV, type WetWorkerLayout as aW, WetWorkerPool as aX, WetWorldError as aY, applyRetouchToTile as aZ, applyStrokeToDeepTile as a_, MIXING_MODELS as aa, OPP as ab, PAPER_CAPACITY as ac, PARAM as ad, PARAM_FLOATS as ae, PIGMENT_CHANNELS as af, PLANE as ag, PLANE_BYTES as ah, P_D0 as ai, P_EDGE as aj, P_FX as ak, P_FY as al, P_H as am, P_P0 as an, P_RHO as ao, P_SW as ap, P_UX as aq, P_UY as ar, PaintExchange as as, type PaintMedium as at, type PaintSample as au, type PixelSource as av, RETOUCH_SAMPLES as aw, RegionPixelSource as ax, type RetouchDabEffect as ay, RetouchDabStroke as az, type MixerTarget as b, applyToneToDeepTile as b0, blendRadius as b1, blenderDab as b2, canShareMemory as b3, cleanMixer as b4, coverageTileCoord as b5, createBlenderScratch as b6, dabCoverage as b7, dabRect as b8, dodgeBurn as b9, spongeEffect as bA, spotHealPixels as bB, spotHealWindow as bC, tipFalloff as bD, tipReach as bE, tipShape as bF, toneOf as bG, walkDabs as bH, wetSimdSupported as bI, dodgeBurnCurve as ba, dsincos as bb, edgeBits as bc, exchangeRates as bd, flowField as be, healPixels as bf, latticeViscosity as bg, loadMixer as bh, loadWetKernel as bi, luma as bj, mixerRates as bk, normalizeBlender as bl, normalizeBrush as bm, normalizeMixer as bn, normalizeRetouch as bo, normalizeSmudge as bp, normalizeTilt as bq, packWetParams as br, perDabStrength as bs, rasterizeDab as bt, readSourceRegion as bu, rgbaViewOfGrey as bv, saturationOf as bw, smoothPoints as bx, smudgeEffect as by, sponge as bz, MixerStroke as c, type RetouchApply as d, type StrokePoint as e, type RetouchPaint as f, type StrokeApply as g, type MixingModel as h, type BlenderSettings as i, type SmudgeSettings as j, type WetTilt as k, type WetParams as l, type WetFlowSpec as m, type RgbTriple as n, type WetWorldOptions as o, type WetBackendInfo as p, type WetSnapshot as q, type WetPaperInput as r, DEFAULT_FLOW as s, DEFAULT_WET_PARAMS as t, MAX_BRUSH_SIZE as u, WET_FLOW_KINDS as v, WET_PARAM_KEYS as w, type WetFlowKind as x, type WetSupport as y, normalizeFlow as z };
@@ -158,6 +158,17 @@ declare function applyStrokeToTile(coverage: CoverageMap, tileData: Uint8Clamped
158
158
  into?: Uint8ClampedArray;
159
159
  region?: RasterRect;
160
160
  }): Uint8ClampedArray;
161
+ /**
162
+ * `applyStrokeToTile` at high bit depth: composites the stroke's coverage over deep RGBA
163
+ * samples (`Uint16Array` sRGB or `Float32Array` linear light, see `raster/deep`) of the target's
164
+ * tile (tx, ty) as it was before the stroke, and returns new samples of the same type. Blending
165
+ * runs in float in the samples' own space (sRGB at 16 bits, linear light at 32 bits); the paint
166
+ * colours are 8-bit sRGB and converted. Layers only (masks stay 8-bit).
167
+ */
168
+ declare function applyStrokeToDeepTile(coverage: CoverageMap, samples: Uint16Array | Float32Array, tx: number, ty: number, s: StrokeApply, options?: {
169
+ into?: Uint16Array | Float32Array;
170
+ region?: RasterRect;
171
+ }): Uint16Array | Float32Array;
161
172
  /** Tile coordinates of coverage tile keys (for callers that track dirty tiles). */
162
173
  declare function coverageTileCoord(key: TileKey): {
163
174
  tx: number;
@@ -641,6 +652,16 @@ declare function applyRetouchToTile(coverage: CoverageMap, tileData: Uint8Clampe
641
652
  into?: Uint8ClampedArray;
642
653
  region?: RasterRect;
643
654
  }): Uint8ClampedArray;
655
+ /**
656
+ * Dodge / Burn at 16 or 32 bits: `applyRetouchToTile`'s tone paint on a layer tile's deep samples
657
+ * (`Uint16Array` sRGB-encoded, or `Float32Array` linear light, RGBA). The tone curves work on
658
+ * encoded values as at 8 bits, so 32-bit samples are encoded, toned and decoded (colour above 1 is
659
+ * toned at 1 and keeps its excess). Returns the new samples.
660
+ */
661
+ declare function applyToneToDeepTile(coverage: CoverageMap, samples: Uint16Array | Float32Array, tx: number, ty: number, tone: (rgb: number[]) => void, s: RetouchApply, options?: {
662
+ into?: Uint16Array | Float32Array;
663
+ region?: RasterRect;
664
+ }): Uint16Array | Float32Array;
644
665
  /** The tone function of a Dodge or Burn stroke. */
645
666
  declare function toneOf(tool: 'dodge' | 'burn', settings: Pick<RetouchSettings, 'exposure' | 'range' | 'protectTones'>): (rgb: number[]) => void;
646
667
  /**
@@ -1259,4 +1280,4 @@ declare function normalizeFlow(raw?: Partial<WetFlowSpec>, base?: WetFlowSpec):
1259
1280
  /** The flow field of a spec on a canvas, or `null` for `none` (strength is applied by the world). */
1260
1281
  declare function flowField(spec: WetFlowSpec, width: number, height: number): WetFlowField | null;
1261
1282
 
1262
- export { FLAG_RIGHT as $, normalizeWetParams as A, type BrushSettings as B, CoverageMap as C, type Dab as D, wetSupport as E, type BlenderScratch as F, DEFAULT_BLENDER as G, DEFAULT_BRUSH as H, DEFAULT_MIXER as I, DEFAULT_RETOUCH as J, DEFAULT_SMUDGE as K, DEFAULT_WET_PAPER as L, type MixerSettings as M, DRY_EPS as N, DabWalker as O, type PaintTileTarget as P, EMPTY_MIXER_LOAD as Q, type RetouchSettings as R, StrokeCoverage as S, TileMedium as T, EX as U, EY as V, WetWorld as W, type ExchangeRates as X, FLAG_ALIVE as Y, FLAG_BOTTOM as Z, FLAG_LEFT as _, type MixerLoad as a, blendRadius as a$, FLAG_TOP as a0, FLAG_WET as a1, FLAT as a2, FREE_INTERVAL as a3, MAX_BATCH as a4, MAX_TILT_ACCEL as a5, MAX_WET_LANES as a6, MAX_WET_SLOTS as a7, MIXER_DRAIN as a8, MIXER_PICKUP_RATE as a9, type RetouchSample as aA, SET_PLANES as aB, SLOT_BYTES as aC, SLOT_PLANES as aD, SLOT_SIDE as aE, SPOT_HEAL_TYPES as aF, STRIP as aG, type SmudgeDab as aH, SmudgeTip as aI, type SpotHealType as aJ, TONE_RANGES as aK, type TileMediumOptions as aL, TilePixelSource as aM, type ToneRange as aN, U_MAX as aO, W9 as aP, WET_TILE as aQ, type WetFlowField as aR, type WetKernelKind as aS, type WetLaneOptions as aT, type WetLaneStats as aU, type WetPaper as aV, type WetWorkerLayout as aW, WetWorkerPool as aX, WetWorldError as aY, applyRetouchToTile as aZ, applyStrokeToTile as a_, MIXING_MODELS as aa, OPP as ab, PAPER_CAPACITY as ac, PARAM as ad, PARAM_FLOATS as ae, PIGMENT_CHANNELS as af, PLANE as ag, PLANE_BYTES as ah, P_D0 as ai, P_EDGE as aj, P_FX as ak, P_FY as al, P_H as am, P_P0 as an, P_RHO as ao, P_SW as ap, P_UX as aq, P_UY as ar, PaintExchange as as, type PaintMedium as at, type PaintSample as au, type PixelSource as av, RETOUCH_SAMPLES as aw, RegionPixelSource as ax, type RetouchDabEffect as ay, RetouchDabStroke as az, type MixerTarget as b, blenderDab as b0, canShareMemory as b1, cleanMixer as b2, coverageTileCoord as b3, createBlenderScratch as b4, dabCoverage as b5, dabRect as b6, dodgeBurn as b7, dodgeBurnCurve as b8, dsincos as b9, spotHealWindow as bA, tipFalloff as bB, tipReach as bC, tipShape as bD, toneOf as bE, walkDabs as bF, wetSimdSupported as bG, edgeBits as ba, exchangeRates as bb, flowField as bc, healPixels as bd, latticeViscosity as be, loadMixer as bf, loadWetKernel as bg, luma as bh, mixerRates as bi, normalizeBlender as bj, normalizeBrush as bk, normalizeMixer as bl, normalizeRetouch as bm, normalizeSmudge as bn, normalizeTilt as bo, packWetParams as bp, perDabStrength as bq, rasterizeDab as br, readSourceRegion as bs, rgbaViewOfGrey as bt, saturationOf as bu, smoothPoints as bv, smudgeEffect as bw, sponge as bx, spongeEffect as by, spotHealPixels as bz, MixerStroke as c, type RetouchApply as d, type StrokePoint as e, type RetouchPaint as f, type StrokeApply as g, type MixingModel as h, type BlenderSettings as i, type SmudgeSettings as j, type WetTilt as k, type WetParams as l, type WetFlowSpec as m, type RgbTriple as n, type WetWorldOptions as o, type WetBackendInfo as p, type WetSnapshot as q, type WetPaperInput as r, DEFAULT_FLOW as s, DEFAULT_WET_PARAMS as t, MAX_BRUSH_SIZE as u, WET_FLOW_KINDS as v, WET_PARAM_KEYS as w, type WetFlowKind as x, type WetSupport as y, normalizeFlow as z };
1283
+ export { FLAG_RIGHT as $, normalizeWetParams as A, type BrushSettings as B, CoverageMap as C, type Dab as D, wetSupport as E, type BlenderScratch as F, DEFAULT_BLENDER as G, DEFAULT_BRUSH as H, DEFAULT_MIXER as I, DEFAULT_RETOUCH as J, DEFAULT_SMUDGE as K, DEFAULT_WET_PAPER as L, type MixerSettings as M, DRY_EPS as N, DabWalker as O, type PaintTileTarget as P, EMPTY_MIXER_LOAD as Q, type RetouchSettings as R, StrokeCoverage as S, TileMedium as T, EX as U, EY as V, WetWorld as W, type ExchangeRates as X, FLAG_ALIVE as Y, FLAG_BOTTOM as Z, FLAG_LEFT as _, type MixerLoad as a, applyStrokeToTile as a$, FLAG_TOP as a0, FLAG_WET as a1, FLAT as a2, FREE_INTERVAL as a3, MAX_BATCH as a4, MAX_TILT_ACCEL as a5, MAX_WET_LANES as a6, MAX_WET_SLOTS as a7, MIXER_DRAIN as a8, MIXER_PICKUP_RATE as a9, type RetouchSample as aA, SET_PLANES as aB, SLOT_BYTES as aC, SLOT_PLANES as aD, SLOT_SIDE as aE, SPOT_HEAL_TYPES as aF, STRIP as aG, type SmudgeDab as aH, SmudgeTip as aI, type SpotHealType as aJ, TONE_RANGES as aK, type TileMediumOptions as aL, TilePixelSource as aM, type ToneRange as aN, U_MAX as aO, W9 as aP, WET_TILE as aQ, type WetFlowField as aR, type WetKernelKind as aS, type WetLaneOptions as aT, type WetLaneStats as aU, type WetPaper as aV, type WetWorkerLayout as aW, WetWorkerPool as aX, WetWorldError as aY, applyRetouchToTile as aZ, applyStrokeToDeepTile as a_, MIXING_MODELS as aa, OPP as ab, PAPER_CAPACITY as ac, PARAM as ad, PARAM_FLOATS as ae, PIGMENT_CHANNELS as af, PLANE as ag, PLANE_BYTES as ah, P_D0 as ai, P_EDGE as aj, P_FX as ak, P_FY as al, P_H as am, P_P0 as an, P_RHO as ao, P_SW as ap, P_UX as aq, P_UY as ar, PaintExchange as as, type PaintMedium as at, type PaintSample as au, type PixelSource as av, RETOUCH_SAMPLES as aw, RegionPixelSource as ax, type RetouchDabEffect as ay, RetouchDabStroke as az, type MixerTarget as b, applyToneToDeepTile as b0, blendRadius as b1, blenderDab as b2, canShareMemory as b3, cleanMixer as b4, coverageTileCoord as b5, createBlenderScratch as b6, dabCoverage as b7, dabRect as b8, dodgeBurn as b9, spongeEffect as bA, spotHealPixels as bB, spotHealWindow as bC, tipFalloff as bD, tipReach as bE, tipShape as bF, toneOf as bG, walkDabs as bH, wetSimdSupported as bI, dodgeBurnCurve as ba, dsincos as bb, edgeBits as bc, exchangeRates as bd, flowField as be, healPixels as bf, latticeViscosity as bg, loadMixer as bh, loadWetKernel as bi, luma as bj, mixerRates as bk, normalizeBlender as bl, normalizeBrush as bm, normalizeMixer as bn, normalizeRetouch as bo, normalizeSmudge as bp, normalizeTilt as bq, packWetParams as br, perDabStrength as bs, rasterizeDab as bt, readSourceRegion as bu, rgbaViewOfGrey as bv, saturationOf as bw, smoothPoints as bx, smudgeEffect as by, sponge as bz, MixerStroke as c, type RetouchApply as d, type StrokePoint as e, type RetouchPaint as f, type StrokeApply as g, type MixingModel as h, type BlenderSettings as i, type SmudgeSettings as j, type WetTilt as k, type WetParams as l, type WetFlowSpec as m, type RgbTriple as n, type WetWorldOptions as o, type WetBackendInfo as p, type WetSnapshot as q, type WetPaperInput as r, DEFAULT_FLOW as s, DEFAULT_WET_PARAMS as t, MAX_BRUSH_SIZE as u, WET_FLOW_KINDS as v, WET_PARAM_KEYS as w, type WetFlowKind as x, type WetSupport as y, normalizeFlow as z };