@pixerate/editor 0.270.0 → 0.272.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animation-editor/index.cjs +62 -62
- package/dist/animation-editor/index.js +5 -5
- package/dist/brushes/index.cjs +69 -66
- package/dist/brushes/index.js +6 -3
- package/dist/brushes/patch.d.cts +1 -1
- package/dist/brushes/patch.d.ts +1 -1
- package/dist/brushes/schema.d.cts +1 -0
- package/dist/brushes/schema.d.ts +1 -0
- package/dist/brushes/types.d.cts +8 -0
- package/dist/brushes/types.d.ts +8 -0
- package/dist/{brushstrokeRender-WR2N5HHY.cjs → brushstrokeRender-5YBCLFDQ.cjs} +15 -15
- package/dist/{brushstrokeRender-A727TTNQ.js → brushstrokeRender-DZGFU3J4.js} +3 -3
- package/dist/canvas/index.cjs +15 -15
- package/dist/canvas/index.js +2 -2
- package/dist/{chunk-THBJHPUL.js → chunk-2F3YDXCN.js} +1 -1
- package/dist/{chunk-4CPOKP27.js → chunk-2XDNF73E.js} +1 -1
- package/dist/{chunk-3KNQ2W6X.cjs → chunk-3JKCREEU.cjs} +59 -53
- package/dist/{chunk-4YSPQGZW.js → chunk-5HP2VSAS.js} +1 -1
- package/dist/{chunk-BPJSI4NT.cjs → chunk-7W2EQQBP.cjs} +2 -2
- package/dist/{chunk-LETF75CA.js → chunk-CLB2I2FU.js} +1 -1
- package/dist/{chunk-BAZMCFVL.js → chunk-DZVRH63Y.js} +1 -1
- package/dist/{chunk-PY4GWSE2.cjs → chunk-EBFPMSJO.cjs} +27 -5
- package/dist/{chunk-VBRHE4AM.cjs → chunk-FXVCB6YG.cjs} +35 -35
- package/dist/{chunk-EU2ZZA6L.cjs → chunk-GHGBIAWQ.cjs} +126 -39
- package/dist/{chunk-CBVNCWJM.cjs → chunk-LBDC5434.cjs} +2 -2
- package/dist/{chunk-2WOGXEDX.cjs → chunk-M3RZOF3G.cjs} +1 -1
- package/dist/{chunk-GSTSZPSR.js → chunk-N3SKPQEH.js} +225 -18
- package/dist/{chunk-J5VQYK7T.cjs → chunk-N5IMDAHM.cjs} +251 -44
- package/dist/{chunk-ININNHLM.js → chunk-NAHJV3O6.js} +11 -5
- package/dist/{chunk-MWUZCEFT.js → chunk-S2XPXA47.js} +1 -1
- package/dist/{chunk-56RHCIJV.cjs → chunk-SNAFFCAX.cjs} +296 -203
- package/dist/{chunk-EHLOCVWB.js → chunk-T2URHAJX.js} +27 -5
- package/dist/{chunk-BENSE3VX.cjs → chunk-TNLKFW7D.cjs} +23 -23
- package/dist/{chunk-KZI3YWKW.js → chunk-UXYCY3HP.js} +93 -6
- package/dist/{chunk-4NMPUJUK.cjs → chunk-YJANF2BL.cjs} +86 -86
- package/dist/{chunk-FUDP5QBB.js → chunk-ZEI7ZEA4.js} +101 -8
- package/dist/effects/index.cjs +5 -2
- package/dist/effects/index.js +4 -1
- package/dist/effects/pool.d.cts +9 -0
- package/dist/effects/pool.d.ts +9 -0
- package/dist/effects/types.d.cts +2 -0
- package/dist/effects/types.d.ts +2 -0
- package/dist/image-editor/index.cjs +791 -791
- package/dist/image-editor/index.js +6 -6
- package/dist/paint/index.cjs +2 -2
- package/dist/paint/index.js +1 -1
- package/dist/paint/wet/world.d.cts +37 -1
- package/dist/paint/wet/world.d.ts +37 -1
- package/dist/paint-editor/brush-controls.d.cts +2 -0
- package/dist/paint-editor/brush-controls.d.ts +2 -0
- package/dist/paint-editor/brush-model.d.cts +14 -1
- package/dist/paint-editor/brush-model.d.ts +14 -1
- package/dist/paint-editor/controller.d.cts +75 -4
- package/dist/paint-editor/controller.d.ts +75 -4
- package/dist/paint-editor/effect-paint.d.cts +33 -8
- package/dist/paint-editor/effect-paint.d.ts +33 -8
- package/dist/paint-editor/effects.d.cts +4 -0
- package/dist/paint-editor/effects.d.ts +4 -0
- package/dist/paint-editor/index.cjs +814 -483
- package/dist/paint-editor/index.js +408 -77
- package/dist/paint-editor/stroke.d.cts +13 -5
- package/dist/paint-editor/stroke.d.ts +13 -5
- package/dist/paint-editor/ui.d.cts +1 -1
- package/dist/paint-editor/ui.d.ts +1 -1
- package/dist/paint-editor/wet.d.cts +8 -1
- package/dist/paint-editor/wet.d.ts +8 -1
- package/dist/vector/index.cjs +999 -999
- package/dist/vector/index.js +5 -5
- package/dist/video-editor/index.cjs +317 -317
- package/dist/video-editor/index.js +2 -2
- package/package.json +1 -1
- package/skills/pixerate-brushes/SKILL.md +1 -0
- package/skills/pixerate-paint-editor/SKILL.md +6 -13
- package/skills/pixerate-paint-editor/references/brush-facets.md +1 -0
- package/skills/pixerate-paint-editor/references/effect-paint.md +28 -6
- package/skills/pixerate-paint-editor/references/ghost.md +47 -0
- package/skills/pixerate-paint-watercolour/SKILL.md +1 -0
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
parseOpenTypeFont,
|
|
9
9
|
removeAnchorsKeepingShape,
|
|
10
10
|
traceField
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-2F3YDXCN.js";
|
|
12
12
|
import {
|
|
13
13
|
ADJUSTMENT_KEYS,
|
|
14
14
|
ADJUSTMENT_KINDS,
|
|
@@ -409,7 +409,7 @@ import {
|
|
|
409
409
|
writePsd,
|
|
410
410
|
xyToTempTint,
|
|
411
411
|
xyToUv
|
|
412
|
-
} from "../chunk-
|
|
412
|
+
} from "../chunk-5HP2VSAS.js";
|
|
413
413
|
import {
|
|
414
414
|
flattenPath,
|
|
415
415
|
rasterizeCoverage
|
|
@@ -683,14 +683,14 @@ import {
|
|
|
683
683
|
warpMeshParamAt,
|
|
684
684
|
warpMeshRows,
|
|
685
685
|
warpPresetMesh
|
|
686
|
-
} from "../chunk-
|
|
686
|
+
} from "../chunk-ZEI7ZEA4.js";
|
|
687
687
|
import {
|
|
688
688
|
IMAGE_PROFILE,
|
|
689
689
|
checkBrush,
|
|
690
690
|
closest,
|
|
691
691
|
createBrushLibrary,
|
|
692
692
|
resolveBrush
|
|
693
|
-
} from "../chunk-
|
|
693
|
+
} from "../chunk-UXYCY3HP.js";
|
|
694
694
|
import "../chunk-JL6YH5WD.js";
|
|
695
695
|
import "../chunk-RWDSSK2I.js";
|
|
696
696
|
import {
|
|
@@ -706,7 +706,7 @@ import {
|
|
|
706
706
|
import "../chunk-SZTI6EER.js";
|
|
707
707
|
import {
|
|
708
708
|
EffectRendererPool
|
|
709
|
-
} from "../chunk-
|
|
709
|
+
} from "../chunk-T2URHAJX.js";
|
|
710
710
|
import {
|
|
711
711
|
EffectUnsupportedError,
|
|
712
712
|
EffectsSlot,
|
|
@@ -808,7 +808,7 @@ import {
|
|
|
808
808
|
wetGpuSupport,
|
|
809
809
|
wetSimdSupported,
|
|
810
810
|
wetSupport
|
|
811
|
-
} from "../chunk-
|
|
811
|
+
} from "../chunk-N3SKPQEH.js";
|
|
812
812
|
import {
|
|
813
813
|
BrushstrokeCache,
|
|
814
814
|
brushstrokeDataUrl,
|
package/dist/paint/index.cjs
CHANGED
|
@@ -134,7 +134,7 @@ var _chunkBB6TR422cjs = require('../chunk-BB6TR422.cjs');
|
|
|
134
134
|
|
|
135
135
|
|
|
136
136
|
|
|
137
|
-
var
|
|
137
|
+
var _chunkN5IMDAHMcjs = require('../chunk-N5IMDAHM.cjs');
|
|
138
138
|
|
|
139
139
|
|
|
140
140
|
|
|
@@ -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 = _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;
|
|
501
|
+
exports.BODY_SCATTER = _chunkN5IMDAHMcjs.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 = _chunkN5IMDAHMcjs.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 = _chunkN5IMDAHMcjs.DEFAULT_WET_PAPER; exports.DEFAULT_WET_PARAMS = _chunkN5IMDAHMcjs.DEFAULT_WET_PARAMS; exports.DRY_EPS = _chunkN5IMDAHMcjs.DRY_EPS; exports.DabWalker = _chunkNIBFKXMDcjs.DabWalker; exports.EMPTY_MIXER_LOAD = _chunkNIBFKXMDcjs.EMPTY_MIXER_LOAD; exports.EX = _chunkN5IMDAHMcjs.EX; exports.EY = _chunkN5IMDAHMcjs.EY; exports.FLAG_ALIVE = _chunkN5IMDAHMcjs.FLAG_ALIVE; exports.FLAG_BOTTOM = _chunkN5IMDAHMcjs.FLAG_BOTTOM; exports.FLAG_LEFT = _chunkN5IMDAHMcjs.FLAG_LEFT; exports.FLAG_RIGHT = _chunkN5IMDAHMcjs.FLAG_RIGHT; exports.FLAG_TOP = _chunkN5IMDAHMcjs.FLAG_TOP; exports.FLAG_WET = _chunkN5IMDAHMcjs.FLAG_WET; exports.FLAT = _chunkN5IMDAHMcjs.FLAT; exports.FREE_INTERVAL = _chunkN5IMDAHMcjs.FREE_INTERVAL; exports.GRAIN_PATTERNS = _chunkNIBFKXMDcjs.GRAIN_PATTERNS; exports.GRAIN_TILE = _chunkNIBFKXMDcjs.GRAIN_TILE; exports.HIDE = _chunkN5IMDAHMcjs.HIDE; exports.IDENTITY_CLONE_TRANSFORM = _chunk62MFUHSIcjs.IDENTITY_CLONE_TRANSFORM; exports.MASS_CHANNELS = _chunkN5IMDAHMcjs.MASS_CHANNELS; exports.MAX_BATCH = _chunkN5IMDAHMcjs.MAX_BATCH; exports.MAX_BRUSH_SIZE = _chunkNIBFKXMDcjs.MAX_BRUSH_SIZE; exports.MAX_TILT_ACCEL = _chunkN5IMDAHMcjs.MAX_TILT_ACCEL; exports.MAX_WET_LANES = _chunkN5IMDAHMcjs.MAX_WET_LANES; exports.MAX_WET_SLOTS = _chunkN5IMDAHMcjs.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 = _chunkN5IMDAHMcjs.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 = _chunkN5IMDAHMcjs.PAPER_CAPACITY; exports.PARAM = _chunkN5IMDAHMcjs.PARAM; exports.PARAM_FLOATS = _chunkN5IMDAHMcjs.PARAM_FLOATS; exports.PIGMENT_BANDS = _chunk2VX55NFMcjs.PIGMENT_BANDS; exports.PIGMENT_CHANNELS = _chunkN5IMDAHMcjs.PIGMENT_CHANNELS; exports.PIGMENT_LAMBDA_MIN = _chunk2VX55NFMcjs.PIGMENT_LAMBDA_MIN; exports.PIGMENT_LAMBDA_STEP = _chunk2VX55NFMcjs.PIGMENT_LAMBDA_STEP; exports.PIGMENT_UNIT = _chunkN5IMDAHMcjs.PIGMENT_UNIT; exports.PIGMENT_WAVELENGTHS = _chunk2VX55NFMcjs.PIGMENT_WAVELENGTHS; exports.PLANE = _chunkN5IMDAHMcjs.PLANE; exports.PLANE_BYTES = _chunkN5IMDAHMcjs.PLANE_BYTES; exports.P_D0 = _chunkN5IMDAHMcjs.P_D0; exports.P_DL = _chunkN5IMDAHMcjs.P_DL; exports.P_EDGE = _chunkN5IMDAHMcjs.P_EDGE; exports.P_FX = _chunkN5IMDAHMcjs.P_FX; exports.P_FY = _chunkN5IMDAHMcjs.P_FY; exports.P_H = _chunkN5IMDAHMcjs.P_H; exports.P_L = _chunkN5IMDAHMcjs.P_L; exports.P_P0 = _chunkN5IMDAHMcjs.P_P0; exports.P_RHO = _chunkN5IMDAHMcjs.P_RHO; exports.P_SW = _chunkN5IMDAHMcjs.P_SW; exports.P_UX = _chunkN5IMDAHMcjs.P_UX; exports.P_UY = _chunkN5IMDAHMcjs.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 = _chunkN5IMDAHMcjs.SET_PLANES; exports.SLOT_BYTES = _chunkN5IMDAHMcjs.SLOT_BYTES; exports.SLOT_PLANES = _chunkN5IMDAHMcjs.SLOT_PLANES; exports.SLOT_SIDE = _chunkN5IMDAHMcjs.SLOT_SIDE; exports.SPOT_HEAL_TYPES = _chunk62MFUHSIcjs.SPOT_HEAL_TYPES; exports.SRGB_TO_LINEAR = _chunkN5IMDAHMcjs.SRGB_TO_LINEAR; exports.STRIP = _chunkN5IMDAHMcjs.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 = _chunkN5IMDAHMcjs.U_MAX; exports.W9 = _chunkN5IMDAHMcjs.W9; exports.WET_FLOW_KINDS = _chunkN5IMDAHMcjs.WET_FLOW_KINDS; exports.WET_PARAM_KEYS = _chunkN5IMDAHMcjs.WET_PARAM_KEYS; exports.WET_TILE = _chunkN5IMDAHMcjs.WET_TILE; exports.WGSL_HALO = _chunkN5IMDAHMcjs.WGSL_HALO; exports.WGSL_SHADE = _chunkN5IMDAHMcjs.WGSL_SHADE; exports.WGSL_STEP = _chunkN5IMDAHMcjs.WGSL_STEP; exports.WetGpuEngine = _chunkN5IMDAHMcjs.WetGpuEngine; exports.WetMedium = _chunkN5IMDAHMcjs.WetMedium; exports.WetWorkerPool = _chunkN5IMDAHMcjs.WetWorkerPool; exports.WetWorld = _chunkN5IMDAHMcjs.WetWorld; exports.WetWorldError = _chunkN5IMDAHMcjs.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 = _chunkN5IMDAHMcjs.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 = _chunkN5IMDAHMcjs.createWetGpuEngine; exports.dabCoverage = _chunkNIBFKXMDcjs.dabCoverage; exports.dabRect = _chunkNIBFKXMDcjs.dabRect; exports.dexp = _chunkN5IMDAHMcjs.dexp; exports.dilateMask = _chunkBB6TR422cjs.dilateMask; exports.dlog = _chunkN5IMDAHMcjs.dlog; exports.dodgeBurn = _chunk62MFUHSIcjs.dodgeBurn; exports.dodgeBurnCurve = _chunk62MFUHSIcjs.dodgeBurnCurve; exports.dpow = _chunkN5IMDAHMcjs.dpow; exports.dsincos = _chunkN5IMDAHMcjs.dsincos; exports.edgeBits = _chunkN5IMDAHMcjs.edgeBits; exports.exchangeRates = _chunkNIBFKXMDcjs.exchangeRates; exports.expNeg = _chunkN5IMDAHMcjs.expNeg; exports.filmPixel = _chunkN5IMDAHMcjs.filmPixel; exports.filmReflectance = _chunkN5IMDAHMcjs.filmReflectance; exports.findWebGpu = _chunkN5IMDAHMcjs.findWebGpu; exports.flowField = _chunkN5IMDAHMcjs.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 = _chunkN5IMDAHMcjs.latticeViscosity; exports.lerpPigment = _chunk2VX55NFMcjs.lerpPigment; exports.lerpPigmentInto = _chunk2VX55NFMcjs.lerpPigmentInto; exports.linearToSrgb8 = _chunkN5IMDAHMcjs.linearToSrgb8; exports.loadMixer = _chunkNIBFKXMDcjs.loadMixer; exports.loadWetKernel = _chunkN5IMDAHMcjs.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 = _chunkN5IMDAHMcjs.moveWetSnapshot; exports.normalizeBlender = _chunkNIBFKXMDcjs.normalizeBlender; exports.normalizeBrush = _chunkNIBFKXMDcjs.normalizeBrush; exports.normalizeFlow = _chunkN5IMDAHMcjs.normalizeFlow; exports.normalizeHexColor = _chunkNIBFKXMDcjs.normalizeHexColor; exports.normalizeMixer = _chunkNIBFKXMDcjs.normalizeMixer; exports.normalizeRetouch = _chunk62MFUHSIcjs.normalizeRetouch; exports.normalizeSmudge = _chunkNIBFKXMDcjs.normalizeSmudge; exports.normalizeTilt = _chunkN5IMDAHMcjs.normalizeTilt; exports.normalizeWetParams = _chunkN5IMDAHMcjs.normalizeWetParams; exports.packWetParams = _chunkN5IMDAHMcjs.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 = _chunkN5IMDAHMcjs.pigmentColor; exports.pigmentOf = _chunkN5IMDAHMcjs.pigmentOf; exports.pixelPigment = _chunkN5IMDAHMcjs.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 = _chunkN5IMDAHMcjs.shadeLightTile; exports.shadeTile = _chunkN5IMDAHMcjs.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 = _chunkN5IMDAHMcjs.srgbByteToLinear; exports.stepSlotTs = _chunkN5IMDAHMcjs.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 = _chunkN5IMDAHMcjs.wetGpuSupport; exports.wetSimdSupported = _chunkN5IMDAHMcjs.wetSimdSupported; exports.wetSupport = _chunkN5IMDAHMcjs.wetSupport;
|
package/dist/paint/index.js
CHANGED
|
@@ -59,6 +59,17 @@ export interface WetWorldOptions {
|
|
|
59
59
|
/** Worker threads for the wasm kernel: `auto` (default: cores − 1, at most 10) or a number (0: none). */
|
|
60
60
|
threads?: number | 'auto';
|
|
61
61
|
}
|
|
62
|
+
/** A wet layer's active ghost paint state: pigment per unit tracer and fade countdown. */
|
|
63
|
+
export interface WetGhostState {
|
|
64
|
+
/** Pigment per unit of tracer (K_r, K_g, K_b, S). */
|
|
65
|
+
pigment: [number, number, number, number];
|
|
66
|
+
/** Free-interval ticks left before the ghost has fully faded. */
|
|
67
|
+
remaining: number;
|
|
68
|
+
/** Total free-interval ticks configured for the current ghost fade. */
|
|
69
|
+
total: number;
|
|
70
|
+
/** Linger seconds configured for the current ghost fade. */
|
|
71
|
+
linger: number;
|
|
72
|
+
}
|
|
62
73
|
export interface WetLaneOptions {
|
|
63
74
|
params?: Partial<WetParams>;
|
|
64
75
|
/** The layer's pixels under the wet paint (default empty). */
|
|
@@ -68,6 +79,8 @@ export interface WetLaneOptions {
|
|
|
68
79
|
flowStrength?: number;
|
|
69
80
|
/** The layer's light paint under the wet paint (one channel; default none). */
|
|
70
81
|
light?: TiledSurface | null;
|
|
82
|
+
/** Active ghost paint state on the layer, if any. */
|
|
83
|
+
ghost?: WetGhostState | null;
|
|
71
84
|
}
|
|
72
85
|
/** Totals for one wet layer. */
|
|
73
86
|
export interface WetLaneStats {
|
|
@@ -95,6 +108,7 @@ export interface WetSnapshot {
|
|
|
95
108
|
base: TiledSurface;
|
|
96
109
|
light?: TiledSurface;
|
|
97
110
|
lit?: boolean;
|
|
111
|
+
ghost?: WetGhostState | null;
|
|
98
112
|
}>;
|
|
99
113
|
/** Per active key: the current set and the deposit planes; and its last flags. */
|
|
100
114
|
readonly slots: ReadonlyMap<number, {
|
|
@@ -191,6 +205,15 @@ export declare class WetWorld {
|
|
|
191
205
|
isLit(id: string): boolean;
|
|
192
206
|
/** Replaces the light paint under a layer's wet paint. */
|
|
193
207
|
setLight(id: string, light: TiledSurface): void;
|
|
208
|
+
/** Active ghost paint state on the layer, or `null`. */
|
|
209
|
+
getGhost(id: string): WetGhostState | null;
|
|
210
|
+
/** Sets or clears a layer's active ghost paint state. */
|
|
211
|
+
setGhost(id: string, ghost: WetGhostState | null): void;
|
|
212
|
+
/**
|
|
213
|
+
* Starts a ghost paint fade on `id` with `pigment` per unit tracer and `linger` seconds. If an
|
|
214
|
+
* earlier ghost of a different colour is still fading on the layer, it finishes at once first.
|
|
215
|
+
*/
|
|
216
|
+
startGhost(id: string, pigment: readonly [number, number, number, number], linger: number, stepsPerSecond?: number): void;
|
|
194
217
|
private pack;
|
|
195
218
|
private touchAll;
|
|
196
219
|
private laneIndexOf;
|
|
@@ -287,7 +310,20 @@ export declare class WetWorld {
|
|
|
287
310
|
* the paper as settled pigment, so water can move it again, and the same share of its light
|
|
288
311
|
* paint (`light`) as settled light. Only where there is surface water.
|
|
289
312
|
*/
|
|
290
|
-
rewet(id: string, rect: RasterRect, cov: ArrayLike<number> | null, amount: number, paper: readonly [number, number, number]): void;
|
|
313
|
+
rewet(id: string, rect: RasterRect, cov: ArrayLike<number> | null, amount: number, paper: readonly [number, number, number], suspend?: boolean): void;
|
|
314
|
+
/**
|
|
315
|
+
* Subtracts `amount` (0..1) of a ghost lane's remaining tracer (`P_L`, `P_DL`) and proportional
|
|
316
|
+
* ghost pigment (`lane.ghost.pigment`) across all live tiles of `id`. Speeds up in cells that
|
|
317
|
+
* are nearly dry so drying paint never pops. Clears the lane's `ghost` state once no tracer remains.
|
|
318
|
+
*/
|
|
319
|
+
fadeGhost(id: string, amount: number): void;
|
|
320
|
+
/** Whether any live tile of `lane` still holds ghost tracer (`P_L > 0` or `P_DL > 0`). */
|
|
321
|
+
private hasGhostTracer;
|
|
322
|
+
/**
|
|
323
|
+
* Fades ghost tracer and pigment in one slot by `amount` (0..1). Returns whether any tracer
|
|
324
|
+
* remains in the slot.
|
|
325
|
+
*/
|
|
326
|
+
private fadeGhostKey;
|
|
291
327
|
/**
|
|
292
328
|
* Dries wet paint at once (everything settles where it is, the water goes): in `rect`, or the
|
|
293
329
|
* whole layer. Whole tiles that end up dry are baked into the base and freed. Returns the
|
|
@@ -59,6 +59,17 @@ export interface WetWorldOptions {
|
|
|
59
59
|
/** Worker threads for the wasm kernel: `auto` (default: cores − 1, at most 10) or a number (0: none). */
|
|
60
60
|
threads?: number | 'auto';
|
|
61
61
|
}
|
|
62
|
+
/** A wet layer's active ghost paint state: pigment per unit tracer and fade countdown. */
|
|
63
|
+
export interface WetGhostState {
|
|
64
|
+
/** Pigment per unit of tracer (K_r, K_g, K_b, S). */
|
|
65
|
+
pigment: [number, number, number, number];
|
|
66
|
+
/** Free-interval ticks left before the ghost has fully faded. */
|
|
67
|
+
remaining: number;
|
|
68
|
+
/** Total free-interval ticks configured for the current ghost fade. */
|
|
69
|
+
total: number;
|
|
70
|
+
/** Linger seconds configured for the current ghost fade. */
|
|
71
|
+
linger: number;
|
|
72
|
+
}
|
|
62
73
|
export interface WetLaneOptions {
|
|
63
74
|
params?: Partial<WetParams>;
|
|
64
75
|
/** The layer's pixels under the wet paint (default empty). */
|
|
@@ -68,6 +79,8 @@ export interface WetLaneOptions {
|
|
|
68
79
|
flowStrength?: number;
|
|
69
80
|
/** The layer's light paint under the wet paint (one channel; default none). */
|
|
70
81
|
light?: TiledSurface | null;
|
|
82
|
+
/** Active ghost paint state on the layer, if any. */
|
|
83
|
+
ghost?: WetGhostState | null;
|
|
71
84
|
}
|
|
72
85
|
/** Totals for one wet layer. */
|
|
73
86
|
export interface WetLaneStats {
|
|
@@ -95,6 +108,7 @@ export interface WetSnapshot {
|
|
|
95
108
|
base: TiledSurface;
|
|
96
109
|
light?: TiledSurface;
|
|
97
110
|
lit?: boolean;
|
|
111
|
+
ghost?: WetGhostState | null;
|
|
98
112
|
}>;
|
|
99
113
|
/** Per active key: the current set and the deposit planes; and its last flags. */
|
|
100
114
|
readonly slots: ReadonlyMap<number, {
|
|
@@ -191,6 +205,15 @@ export declare class WetWorld {
|
|
|
191
205
|
isLit(id: string): boolean;
|
|
192
206
|
/** Replaces the light paint under a layer's wet paint. */
|
|
193
207
|
setLight(id: string, light: TiledSurface): void;
|
|
208
|
+
/** Active ghost paint state on the layer, or `null`. */
|
|
209
|
+
getGhost(id: string): WetGhostState | null;
|
|
210
|
+
/** Sets or clears a layer's active ghost paint state. */
|
|
211
|
+
setGhost(id: string, ghost: WetGhostState | null): void;
|
|
212
|
+
/**
|
|
213
|
+
* Starts a ghost paint fade on `id` with `pigment` per unit tracer and `linger` seconds. If an
|
|
214
|
+
* earlier ghost of a different colour is still fading on the layer, it finishes at once first.
|
|
215
|
+
*/
|
|
216
|
+
startGhost(id: string, pigment: readonly [number, number, number, number], linger: number, stepsPerSecond?: number): void;
|
|
194
217
|
private pack;
|
|
195
218
|
private touchAll;
|
|
196
219
|
private laneIndexOf;
|
|
@@ -287,7 +310,20 @@ export declare class WetWorld {
|
|
|
287
310
|
* the paper as settled pigment, so water can move it again, and the same share of its light
|
|
288
311
|
* paint (`light`) as settled light. Only where there is surface water.
|
|
289
312
|
*/
|
|
290
|
-
rewet(id: string, rect: RasterRect, cov: ArrayLike<number> | null, amount: number, paper: readonly [number, number, number]): void;
|
|
313
|
+
rewet(id: string, rect: RasterRect, cov: ArrayLike<number> | null, amount: number, paper: readonly [number, number, number], suspend?: boolean): void;
|
|
314
|
+
/**
|
|
315
|
+
* Subtracts `amount` (0..1) of a ghost lane's remaining tracer (`P_L`, `P_DL`) and proportional
|
|
316
|
+
* ghost pigment (`lane.ghost.pigment`) across all live tiles of `id`. Speeds up in cells that
|
|
317
|
+
* are nearly dry so drying paint never pops. Clears the lane's `ghost` state once no tracer remains.
|
|
318
|
+
*/
|
|
319
|
+
fadeGhost(id: string, amount: number): void;
|
|
320
|
+
/** Whether any live tile of `lane` still holds ghost tracer (`P_L > 0` or `P_DL > 0`). */
|
|
321
|
+
private hasGhostTracer;
|
|
322
|
+
/**
|
|
323
|
+
* Fades ghost tracer and pigment in one slot by `amount` (0..1). Returns whether any tracer
|
|
324
|
+
* remains in the slot.
|
|
325
|
+
*/
|
|
326
|
+
private fadeGhostKey;
|
|
291
327
|
/**
|
|
292
328
|
* Dries wet paint at once (everything settles where it is, the water goes): in `rect`, or the
|
|
293
329
|
* whole layer. Whole tiles that end up dry are baked into the base and freed. Returns the
|
|
@@ -41,6 +41,7 @@ export interface BrushEngineControls {
|
|
|
41
41
|
/** Light paint: the "light follows pressure" toggle (`light.pressure`); the Light slider is in `sliders`. */
|
|
42
42
|
light?: boolean;
|
|
43
43
|
}
|
|
44
|
+
export declare const GHOST_SLIDERS: readonly SliderControl[];
|
|
44
45
|
/**
|
|
45
46
|
* The controls the active brush's engine adds to the brush panel (`null` for the eraser):
|
|
46
47
|
* blender strength and blend distance; smudge strength and length; the Mixer Brush's pick-up,
|
|
@@ -50,6 +51,7 @@ export interface BrushEngineControls {
|
|
|
50
51
|
*/
|
|
51
52
|
export declare function brushEngineControls(brush: Pick<PaintBrush, 'engine'> & {
|
|
52
53
|
wet?: PaintBrush['wet'];
|
|
54
|
+
ghost?: PaintBrush['ghost'];
|
|
53
55
|
}): BrushEngineControls | null;
|
|
54
56
|
/** The multi-colour sliders for a mode: softness, and dabs per colour in `dab` mode. */
|
|
55
57
|
export declare function multiColorSliders(mode: string): readonly SliderControl[];
|
|
@@ -41,6 +41,7 @@ export interface BrushEngineControls {
|
|
|
41
41
|
/** Light paint: the "light follows pressure" toggle (`light.pressure`); the Light slider is in `sliders`. */
|
|
42
42
|
light?: boolean;
|
|
43
43
|
}
|
|
44
|
+
export declare const GHOST_SLIDERS: readonly SliderControl[];
|
|
44
45
|
/**
|
|
45
46
|
* The controls the active brush's engine adds to the brush panel (`null` for the eraser):
|
|
46
47
|
* blender strength and blend distance; smudge strength and length; the Mixer Brush's pick-up,
|
|
@@ -50,6 +51,7 @@ export interface BrushEngineControls {
|
|
|
50
51
|
*/
|
|
51
52
|
export declare function brushEngineControls(brush: Pick<PaintBrush, 'engine'> & {
|
|
52
53
|
wet?: PaintBrush['wet'];
|
|
54
|
+
ghost?: PaintBrush['ghost'];
|
|
53
55
|
}): BrushEngineControls | null;
|
|
54
56
|
/** The multi-colour sliders for a mode: softness, and dabs per colour in `dab` mode. */
|
|
55
57
|
export declare function multiColorSliders(mode: string): readonly SliderControl[];
|
|
@@ -94,6 +94,15 @@ export interface LightSettings {
|
|
|
94
94
|
}
|
|
95
95
|
export declare const DEFAULT_LIGHT: Readonly<LightSettings>;
|
|
96
96
|
export declare function normalizeLight(raw?: Partial<LightSettings>, base?: LightSettings): LightSettings;
|
|
97
|
+
/** Ghost paint: wet paint whose colour vanishes after `linger` seconds, leaving only what it smeared. */
|
|
98
|
+
export interface GhostSettings {
|
|
99
|
+
/** Seconds of simulated time before the ghost paint has fully faded, 0.5..60 (default 4). */
|
|
100
|
+
linger: number;
|
|
101
|
+
/** How much the ghost paint drags and lifts the paint it passes through, 0..1 (default 0.3). */
|
|
102
|
+
smear: number;
|
|
103
|
+
}
|
|
104
|
+
export declare const DEFAULT_GHOST: Readonly<GhostSettings>;
|
|
105
|
+
export declare function normalizeGhost(raw?: Partial<GhostSettings>, base?: GhostSettings): GhostSettings;
|
|
97
106
|
export declare function normalizeImpasto(raw?: Partial<ImpastoSettings>, base?: ImpastoSettings): ImpastoSettings;
|
|
98
107
|
/** Multi-coloured brush: `tip` lays the colours across the tip, `dab` changes colour from dab to dab. */
|
|
99
108
|
export type MultiColorMode = 'off' | 'tip' | 'dab';
|
|
@@ -218,6 +227,8 @@ export interface PaintBrush {
|
|
|
218
227
|
sticker: StickerSettings;
|
|
219
228
|
/** Light paint: the light it lays with its colour (amount 0: none). */
|
|
220
229
|
light: LightSettings;
|
|
230
|
+
/** Wet engine: ghost paint settings (missing when not a ghost brush). */
|
|
231
|
+
ghost?: GhostSettings;
|
|
221
232
|
/**
|
|
222
233
|
* Dab engine: a stamp tip. Each dab (and each spray droplet) is this sticker's shape, an editor
|
|
223
234
|
* stamp (`editor:star`) or any sticker ref from the sticker library, laid in the paint colour;
|
|
@@ -254,10 +265,12 @@ export interface SpraySettings {
|
|
|
254
265
|
size: number;
|
|
255
266
|
}
|
|
256
267
|
export declare const DEFAULT_SPRAY: Readonly<SpraySettings>;
|
|
257
|
-
export type PaintBrushInput = Partial<Omit<PaintBrush, 'tip' | 'dynamics' | 'mixer' | 'behavior' | 'blender' | 'smudge' | 'wet' | 'impasto' | 'particle' | 'bristle' | 'sticker' | 'paint' | 'light' | 'spray' | 'tipGrain'>> & {
|
|
268
|
+
export type PaintBrushInput = Partial<Omit<PaintBrush, 'tip' | 'dynamics' | 'mixer' | 'behavior' | 'blender' | 'smudge' | 'wet' | 'impasto' | 'particle' | 'bristle' | 'sticker' | 'paint' | 'light' | 'ghost' | 'spray' | 'tipGrain'>> & {
|
|
258
269
|
spray?: Partial<SpraySettings> | null;
|
|
259
270
|
/** Tip grain (`null` removes it). */
|
|
260
271
|
tipGrain?: Partial<TipGrainSettings> | null;
|
|
272
|
+
/** Ghost paint (`null` removes it). */
|
|
273
|
+
ghost?: Partial<GhostSettings> | null;
|
|
261
274
|
light?: Partial<LightSettings>;
|
|
262
275
|
/** A gradient (or `null` for the editor's paint); a plain colour source clears it. */
|
|
263
276
|
paint?: PaintSource | null;
|
|
@@ -94,6 +94,15 @@ export interface LightSettings {
|
|
|
94
94
|
}
|
|
95
95
|
export declare const DEFAULT_LIGHT: Readonly<LightSettings>;
|
|
96
96
|
export declare function normalizeLight(raw?: Partial<LightSettings>, base?: LightSettings): LightSettings;
|
|
97
|
+
/** Ghost paint: wet paint whose colour vanishes after `linger` seconds, leaving only what it smeared. */
|
|
98
|
+
export interface GhostSettings {
|
|
99
|
+
/** Seconds of simulated time before the ghost paint has fully faded, 0.5..60 (default 4). */
|
|
100
|
+
linger: number;
|
|
101
|
+
/** How much the ghost paint drags and lifts the paint it passes through, 0..1 (default 0.3). */
|
|
102
|
+
smear: number;
|
|
103
|
+
}
|
|
104
|
+
export declare const DEFAULT_GHOST: Readonly<GhostSettings>;
|
|
105
|
+
export declare function normalizeGhost(raw?: Partial<GhostSettings>, base?: GhostSettings): GhostSettings;
|
|
97
106
|
export declare function normalizeImpasto(raw?: Partial<ImpastoSettings>, base?: ImpastoSettings): ImpastoSettings;
|
|
98
107
|
/** Multi-coloured brush: `tip` lays the colours across the tip, `dab` changes colour from dab to dab. */
|
|
99
108
|
export type MultiColorMode = 'off' | 'tip' | 'dab';
|
|
@@ -218,6 +227,8 @@ export interface PaintBrush {
|
|
|
218
227
|
sticker: StickerSettings;
|
|
219
228
|
/** Light paint: the light it lays with its colour (amount 0: none). */
|
|
220
229
|
light: LightSettings;
|
|
230
|
+
/** Wet engine: ghost paint settings (missing when not a ghost brush). */
|
|
231
|
+
ghost?: GhostSettings;
|
|
221
232
|
/**
|
|
222
233
|
* Dab engine: a stamp tip. Each dab (and each spray droplet) is this sticker's shape, an editor
|
|
223
234
|
* stamp (`editor:star`) or any sticker ref from the sticker library, laid in the paint colour;
|
|
@@ -254,10 +265,12 @@ export interface SpraySettings {
|
|
|
254
265
|
size: number;
|
|
255
266
|
}
|
|
256
267
|
export declare const DEFAULT_SPRAY: Readonly<SpraySettings>;
|
|
257
|
-
export type PaintBrushInput = Partial<Omit<PaintBrush, 'tip' | 'dynamics' | 'mixer' | 'behavior' | 'blender' | 'smudge' | 'wet' | 'impasto' | 'particle' | 'bristle' | 'sticker' | 'paint' | 'light' | 'spray' | 'tipGrain'>> & {
|
|
268
|
+
export type PaintBrushInput = Partial<Omit<PaintBrush, 'tip' | 'dynamics' | 'mixer' | 'behavior' | 'blender' | 'smudge' | 'wet' | 'impasto' | 'particle' | 'bristle' | 'sticker' | 'paint' | 'light' | 'ghost' | 'spray' | 'tipGrain'>> & {
|
|
258
269
|
spray?: Partial<SpraySettings> | null;
|
|
259
270
|
/** Tip grain (`null` removes it). */
|
|
260
271
|
tipGrain?: Partial<TipGrainSettings> | null;
|
|
272
|
+
/** Ghost paint (`null` removes it). */
|
|
273
|
+
ghost?: Partial<GhostSettings> | null;
|
|
261
274
|
light?: Partial<LightSettings>;
|
|
262
275
|
/** A gradient (or `null` for the editor's paint); a plain colour source clears it. */
|
|
263
276
|
paint?: PaintSource | null;
|
|
@@ -378,6 +378,17 @@ export declare class PaintEditorController {
|
|
|
378
378
|
private paintEpoch;
|
|
379
379
|
/** Rendered effect paints by `effectPaintKey` (most recently used last). */
|
|
380
380
|
private readonly effectPaintPixels;
|
|
381
|
+
/** Primary path control name (`format: 'svg-path'`) per effect id, learned from `describeEffect`. */
|
|
382
|
+
private readonly effectPathControls;
|
|
383
|
+
/** How many renders the running batch needs together (`prepareEffectPaints`; a synchronous replay reads them all). */
|
|
384
|
+
private effectPaintBatch;
|
|
385
|
+
/** The hand-painted stroke waiting for its path render (`finishPathStroke`), or `null`. */
|
|
386
|
+
private pathStroke;
|
|
387
|
+
/**
|
|
388
|
+
* The hand-painted path stroke's live preview: the effect rendered along the path drawn so far
|
|
389
|
+
* (one render at a time; the newest path when it lands), repainted into the stroke as it lands.
|
|
390
|
+
*/
|
|
391
|
+
private pathPreview;
|
|
381
392
|
private mixerLoad;
|
|
382
393
|
private view;
|
|
383
394
|
private hand;
|
|
@@ -739,7 +750,11 @@ export declare class PaintEditorController {
|
|
|
739
750
|
layerId: string;
|
|
740
751
|
source: PaintEffectSource;
|
|
741
752
|
}>;
|
|
742
|
-
/**
|
|
753
|
+
/**
|
|
754
|
+
* At most this many rendered effect paints are kept (each is canvas-sized), more only while
|
|
755
|
+
* something needs them all: a replay's batch, and the path-mapped strokes on stroke layers,
|
|
756
|
+
* which each have a render of their own and are redrawn synchronously.
|
|
757
|
+
*/
|
|
743
758
|
private static readonly EFFECT_PAINT_CACHE;
|
|
744
759
|
/** The effect paint strokes use (or the one rendering), or `null`. */
|
|
745
760
|
getEffectPaint(): PaintEffectPaint | null;
|
|
@@ -748,8 +763,10 @@ export declare class PaintEditorController {
|
|
|
748
763
|
* size, and brushes then take each pixel's colour (and alpha) from it, fixed to the canvas, as if
|
|
749
764
|
* painting a hidden picture into view. `setColor` and `setPaint` go back to colour. Editor state,
|
|
750
765
|
* not an undo step. Strokes that would paint with it throw while it renders. Returns the paint.
|
|
751
|
-
* With `map: { by: 'stroke' }` the effect lies along each stroke
|
|
752
|
-
* `
|
|
766
|
+
* With `map: { by: 'stroke' }` the effect lies along each stroke as a strip; with
|
|
767
|
+
* `map: { by: 'path' }` an effect with a path control (`format: 'svg-path'`) draws itself along
|
|
768
|
+
* each stroke's centreline in canvas pixels; with `live`, strokes on a stroke layer keep playing
|
|
769
|
+
* it (see `setEffectPlayback`).
|
|
753
770
|
*/
|
|
754
771
|
setEffectPaint(source: {
|
|
755
772
|
effect: string;
|
|
@@ -760,15 +777,47 @@ export declare class PaintEditorController {
|
|
|
760
777
|
}): Promise<PaintEffectPaint>;
|
|
761
778
|
/** The rendered pixels of an effect paint at the current canvas size, or `null` when it has not been rendered. */
|
|
762
779
|
private effectPaintImage;
|
|
780
|
+
private cacheEffectPaintPixels;
|
|
781
|
+
private cacheEffectPaintImage;
|
|
782
|
+
private trimEffectPaints;
|
|
783
|
+
/** Renders an effect paint on the caller's stack when its renderer is warm and has `renderSync`; otherwise `null`. */
|
|
784
|
+
private renderEffectPaintSync;
|
|
763
785
|
/** Renders an effect paint at the canvas size into the cache (nothing when it is there already). */
|
|
764
786
|
private renderEffectPaint;
|
|
787
|
+
/** Renders an effect paint at the canvas size without keeping it. */
|
|
788
|
+
private renderEffectPaintPixels;
|
|
765
789
|
/**
|
|
766
790
|
* Renders effect paints that are not rendered yet (strokes and replays need them rendered
|
|
767
791
|
* first, since strokes are synchronous). Throws naming the effect and provider when one cannot be.
|
|
768
792
|
*/
|
|
769
793
|
prepareEffectPaints(paints: Iterable<PaintEffectPaint>): Promise<void>;
|
|
794
|
+
/**
|
|
795
|
+
* Renders the path-mapped effect paint for one or more strokes' points before a synchronous
|
|
796
|
+
* stroke call runs (`paint_stroke` and `stroke_path` do; `paintStroke` throws without it on a
|
|
797
|
+
* provider that can't render synchronously). For a stroke layer edit, see `prepareStrokeEdit`.
|
|
798
|
+
*/
|
|
799
|
+
prepareStrokePathEffect(init: PaintStrokeInit, pointsList: readonly (readonly PenPoint[])[]): Promise<void>;
|
|
800
|
+
/**
|
|
801
|
+
* Renders what an edit of a stroke layer's stroke paints with (`updateStroke`, `editStrokePoints`):
|
|
802
|
+
* a new effect paint, or a path-mapped stroke's new path. Those calls are synchronous, and throw
|
|
803
|
+
* without it on a provider that can't render synchronously. Bad edits are left for them to refuse.
|
|
804
|
+
*/
|
|
805
|
+
prepareStrokeEdit(id: string, edit: {
|
|
806
|
+
paint?: unknown;
|
|
807
|
+
points?: readonly PenPoint[];
|
|
808
|
+
transform?: StrokeVariation;
|
|
809
|
+
}): Promise<void>;
|
|
810
|
+
/** Whether `prepareStrokeEdit` has to be awaited before this edit can run. */
|
|
811
|
+
strokeEditNeedsRender(id: string, edit: {
|
|
812
|
+
paint?: unknown;
|
|
813
|
+
points?: readonly PenPoint[];
|
|
814
|
+
transform?: StrokeVariation;
|
|
815
|
+
}): boolean;
|
|
816
|
+
private strokeEditPaint;
|
|
817
|
+
/** A stroke edit's transform as an affine map, checked. */
|
|
818
|
+
private strokeTransform;
|
|
770
819
|
/** Renders the effect paints of recorded strokes (default all of them) before a replay. */
|
|
771
|
-
prepareStrokeEffects(strokeIds?: readonly string[]): Promise<void>;
|
|
820
|
+
prepareStrokeEffects(strokeIds?: readonly string[], variation?: ReplayOptions): Promise<void>;
|
|
772
821
|
/** A small preview of the effect paint (a PNG data URL `size` px wide), or `null` without a rendered one. */
|
|
773
822
|
effectPaintThumbnail(size?: number): string | null;
|
|
774
823
|
/**
|
|
@@ -945,8 +994,30 @@ export declare class PaintEditorController {
|
|
|
945
994
|
* (one undo step) or `cancel()`.
|
|
946
995
|
*/
|
|
947
996
|
beginStroke(init?: PaintStrokeInit): PaintStrokeSession;
|
|
997
|
+
/**
|
|
998
|
+
* Renders a hand-painted path stroke's effect along the path drawn so far and paints the stroke
|
|
999
|
+
* again with it when it lands, so the effect follows the pen while it draws. One render at a
|
|
1000
|
+
* time: when one lands, the next takes the newest path. A failed render leaves the preview as it
|
|
1001
|
+
* was; the render on release reports it.
|
|
1002
|
+
*/
|
|
1003
|
+
private previewPathStroke;
|
|
948
1004
|
/** The current live stroke, if any. */
|
|
949
1005
|
get activeStroke(): PaintStrokeSession | null;
|
|
1006
|
+
/**
|
|
1007
|
+
* While a hand-painted stroke waits for its path render (`map: { by: 'path' }`), settles when it
|
|
1008
|
+
* has landed and rejects if it could not (the stroke is dropped); `null` otherwise. Until then
|
|
1009
|
+
* the editor is busy, as during a stroke, and shows the stroke as it was painted.
|
|
1010
|
+
*/
|
|
1011
|
+
get strokeRendering(): Promise<void> | null;
|
|
1012
|
+
/** The paint a finished hand-painted stroke must be painted again with, or `null` when it already painted with it. */
|
|
1013
|
+
private pathStrokePaint;
|
|
1014
|
+
/**
|
|
1015
|
+
* Ends a hand-painted stroke with a path-mapped effect. Its whole path isn't known until now, so
|
|
1016
|
+
* the live stroke was only a preview from renders along the path so far (`previewPathStroke`):
|
|
1017
|
+
* nothing of it was committed. Paints it again with the path's own render, as one stroke and one undo step, at
|
|
1018
|
+
* once if that can render synchronously and when the render lands if not.
|
|
1019
|
+
*/
|
|
1020
|
+
private finishPathStroke;
|
|
950
1021
|
/** Runs a whole stroke against `doc` without touching the editor; returns the new document. */
|
|
951
1022
|
private runStroke;
|
|
952
1023
|
/** Paints one stroke from data (one undo step). */
|
|
@@ -378,6 +378,17 @@ export declare class PaintEditorController {
|
|
|
378
378
|
private paintEpoch;
|
|
379
379
|
/** Rendered effect paints by `effectPaintKey` (most recently used last). */
|
|
380
380
|
private readonly effectPaintPixels;
|
|
381
|
+
/** Primary path control name (`format: 'svg-path'`) per effect id, learned from `describeEffect`. */
|
|
382
|
+
private readonly effectPathControls;
|
|
383
|
+
/** How many renders the running batch needs together (`prepareEffectPaints`; a synchronous replay reads them all). */
|
|
384
|
+
private effectPaintBatch;
|
|
385
|
+
/** The hand-painted stroke waiting for its path render (`finishPathStroke`), or `null`. */
|
|
386
|
+
private pathStroke;
|
|
387
|
+
/**
|
|
388
|
+
* The hand-painted path stroke's live preview: the effect rendered along the path drawn so far
|
|
389
|
+
* (one render at a time; the newest path when it lands), repainted into the stroke as it lands.
|
|
390
|
+
*/
|
|
391
|
+
private pathPreview;
|
|
381
392
|
private mixerLoad;
|
|
382
393
|
private view;
|
|
383
394
|
private hand;
|
|
@@ -739,7 +750,11 @@ export declare class PaintEditorController {
|
|
|
739
750
|
layerId: string;
|
|
740
751
|
source: PaintEffectSource;
|
|
741
752
|
}>;
|
|
742
|
-
/**
|
|
753
|
+
/**
|
|
754
|
+
* At most this many rendered effect paints are kept (each is canvas-sized), more only while
|
|
755
|
+
* something needs them all: a replay's batch, and the path-mapped strokes on stroke layers,
|
|
756
|
+
* which each have a render of their own and are redrawn synchronously.
|
|
757
|
+
*/
|
|
743
758
|
private static readonly EFFECT_PAINT_CACHE;
|
|
744
759
|
/** The effect paint strokes use (or the one rendering), or `null`. */
|
|
745
760
|
getEffectPaint(): PaintEffectPaint | null;
|
|
@@ -748,8 +763,10 @@ export declare class PaintEditorController {
|
|
|
748
763
|
* size, and brushes then take each pixel's colour (and alpha) from it, fixed to the canvas, as if
|
|
749
764
|
* painting a hidden picture into view. `setColor` and `setPaint` go back to colour. Editor state,
|
|
750
765
|
* not an undo step. Strokes that would paint with it throw while it renders. Returns the paint.
|
|
751
|
-
* With `map: { by: 'stroke' }` the effect lies along each stroke
|
|
752
|
-
* `
|
|
766
|
+
* With `map: { by: 'stroke' }` the effect lies along each stroke as a strip; with
|
|
767
|
+
* `map: { by: 'path' }` an effect with a path control (`format: 'svg-path'`) draws itself along
|
|
768
|
+
* each stroke's centreline in canvas pixels; with `live`, strokes on a stroke layer keep playing
|
|
769
|
+
* it (see `setEffectPlayback`).
|
|
753
770
|
*/
|
|
754
771
|
setEffectPaint(source: {
|
|
755
772
|
effect: string;
|
|
@@ -760,15 +777,47 @@ export declare class PaintEditorController {
|
|
|
760
777
|
}): Promise<PaintEffectPaint>;
|
|
761
778
|
/** The rendered pixels of an effect paint at the current canvas size, or `null` when it has not been rendered. */
|
|
762
779
|
private effectPaintImage;
|
|
780
|
+
private cacheEffectPaintPixels;
|
|
781
|
+
private cacheEffectPaintImage;
|
|
782
|
+
private trimEffectPaints;
|
|
783
|
+
/** Renders an effect paint on the caller's stack when its renderer is warm and has `renderSync`; otherwise `null`. */
|
|
784
|
+
private renderEffectPaintSync;
|
|
763
785
|
/** Renders an effect paint at the canvas size into the cache (nothing when it is there already). */
|
|
764
786
|
private renderEffectPaint;
|
|
787
|
+
/** Renders an effect paint at the canvas size without keeping it. */
|
|
788
|
+
private renderEffectPaintPixels;
|
|
765
789
|
/**
|
|
766
790
|
* Renders effect paints that are not rendered yet (strokes and replays need them rendered
|
|
767
791
|
* first, since strokes are synchronous). Throws naming the effect and provider when one cannot be.
|
|
768
792
|
*/
|
|
769
793
|
prepareEffectPaints(paints: Iterable<PaintEffectPaint>): Promise<void>;
|
|
794
|
+
/**
|
|
795
|
+
* Renders the path-mapped effect paint for one or more strokes' points before a synchronous
|
|
796
|
+
* stroke call runs (`paint_stroke` and `stroke_path` do; `paintStroke` throws without it on a
|
|
797
|
+
* provider that can't render synchronously). For a stroke layer edit, see `prepareStrokeEdit`.
|
|
798
|
+
*/
|
|
799
|
+
prepareStrokePathEffect(init: PaintStrokeInit, pointsList: readonly (readonly PenPoint[])[]): Promise<void>;
|
|
800
|
+
/**
|
|
801
|
+
* Renders what an edit of a stroke layer's stroke paints with (`updateStroke`, `editStrokePoints`):
|
|
802
|
+
* a new effect paint, or a path-mapped stroke's new path. Those calls are synchronous, and throw
|
|
803
|
+
* without it on a provider that can't render synchronously. Bad edits are left for them to refuse.
|
|
804
|
+
*/
|
|
805
|
+
prepareStrokeEdit(id: string, edit: {
|
|
806
|
+
paint?: unknown;
|
|
807
|
+
points?: readonly PenPoint[];
|
|
808
|
+
transform?: StrokeVariation;
|
|
809
|
+
}): Promise<void>;
|
|
810
|
+
/** Whether `prepareStrokeEdit` has to be awaited before this edit can run. */
|
|
811
|
+
strokeEditNeedsRender(id: string, edit: {
|
|
812
|
+
paint?: unknown;
|
|
813
|
+
points?: readonly PenPoint[];
|
|
814
|
+
transform?: StrokeVariation;
|
|
815
|
+
}): boolean;
|
|
816
|
+
private strokeEditPaint;
|
|
817
|
+
/** A stroke edit's transform as an affine map, checked. */
|
|
818
|
+
private strokeTransform;
|
|
770
819
|
/** Renders the effect paints of recorded strokes (default all of them) before a replay. */
|
|
771
|
-
prepareStrokeEffects(strokeIds?: readonly string[]): Promise<void>;
|
|
820
|
+
prepareStrokeEffects(strokeIds?: readonly string[], variation?: ReplayOptions): Promise<void>;
|
|
772
821
|
/** A small preview of the effect paint (a PNG data URL `size` px wide), or `null` without a rendered one. */
|
|
773
822
|
effectPaintThumbnail(size?: number): string | null;
|
|
774
823
|
/**
|
|
@@ -945,8 +994,30 @@ export declare class PaintEditorController {
|
|
|
945
994
|
* (one undo step) or `cancel()`.
|
|
946
995
|
*/
|
|
947
996
|
beginStroke(init?: PaintStrokeInit): PaintStrokeSession;
|
|
997
|
+
/**
|
|
998
|
+
* Renders a hand-painted path stroke's effect along the path drawn so far and paints the stroke
|
|
999
|
+
* again with it when it lands, so the effect follows the pen while it draws. One render at a
|
|
1000
|
+
* time: when one lands, the next takes the newest path. A failed render leaves the preview as it
|
|
1001
|
+
* was; the render on release reports it.
|
|
1002
|
+
*/
|
|
1003
|
+
private previewPathStroke;
|
|
948
1004
|
/** The current live stroke, if any. */
|
|
949
1005
|
get activeStroke(): PaintStrokeSession | null;
|
|
1006
|
+
/**
|
|
1007
|
+
* While a hand-painted stroke waits for its path render (`map: { by: 'path' }`), settles when it
|
|
1008
|
+
* has landed and rejects if it could not (the stroke is dropped); `null` otherwise. Until then
|
|
1009
|
+
* the editor is busy, as during a stroke, and shows the stroke as it was painted.
|
|
1010
|
+
*/
|
|
1011
|
+
get strokeRendering(): Promise<void> | null;
|
|
1012
|
+
/** The paint a finished hand-painted stroke must be painted again with, or `null` when it already painted with it. */
|
|
1013
|
+
private pathStrokePaint;
|
|
1014
|
+
/**
|
|
1015
|
+
* Ends a hand-painted stroke with a path-mapped effect. Its whole path isn't known until now, so
|
|
1016
|
+
* the live stroke was only a preview from renders along the path so far (`previewPathStroke`):
|
|
1017
|
+
* nothing of it was committed. Paints it again with the path's own render, as one stroke and one undo step, at
|
|
1018
|
+
* once if that can render synchronously and when the render lands if not.
|
|
1019
|
+
*/
|
|
1020
|
+
private finishPathStroke;
|
|
950
1021
|
/** Runs a whole stroke against `doc` without touching the editor; returns the new document. */
|
|
951
1022
|
private runStroke;
|
|
952
1023
|
/** Paints one stroke from data (one undo step). */
|