@pixerate/editor 0.279.0 → 0.280.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 +59 -59
- package/dist/animation-editor/index.js +3 -3
- package/dist/{chunk-MITQGHN3.cjs → chunk-4BMRQSPB.cjs} +15 -1
- package/dist/{chunk-DWPFGWW5.js → chunk-FKO3CY2C.js} +1 -1
- package/dist/{chunk-N4MCWQZ7.js → chunk-HN57I7KT.js} +1 -1
- package/dist/{chunk-4NZTK7LM.cjs → chunk-K4ANWBF7.cjs} +35 -35
- package/dist/{chunk-VNF7A2JA.cjs → chunk-MNHP3AQT.cjs} +23 -23
- package/dist/{chunk-FNIWHSLI.js → chunk-NJDEKU5D.js} +1 -1
- package/dist/{chunk-CTHWXW5M.js → chunk-V6LQND7D.js} +14 -0
- package/dist/{chunk-QBZEC2JJ.cjs → chunk-WCC4NXWY.cjs} +86 -86
- package/dist/{chunk-PEQWARCP.cjs → chunk-WZYRYYXN.cjs} +29 -25
- package/dist/{chunk-HHX7ST6Z.js → chunk-YOM76H2V.js} +7 -3
- package/dist/image-editor/index.cjs +783 -783
- package/dist/image-editor/index.js +4 -4
- package/dist/paint/index.cjs +2 -2
- package/dist/paint/index.js +1 -1
- package/dist/paint/wet/gpu.d.cts +2 -0
- package/dist/paint/wet/gpu.d.ts +2 -0
- package/dist/paint-editor/index.cjs +128 -128
- package/dist/paint-editor/index.js +3 -3
- package/dist/vector/commands.d.cts +25 -0
- package/dist/vector/commands.d.ts +25 -0
- package/dist/vector/index.cjs +1056 -1034
- package/dist/vector/index.js +65 -43
- package/package.json +5 -5
- package/skills/pixerate-vector/SKILL.md +1 -1
|
@@ -42,7 +42,7 @@ var _chunkYH6SKC7Pcjs = require('../chunk-YH6SKC7P.cjs');
|
|
|
42
42
|
|
|
43
43
|
|
|
44
44
|
|
|
45
|
-
var
|
|
45
|
+
var _chunkWCC4NXWYcjs = require('../chunk-WCC4NXWY.cjs');
|
|
46
46
|
require('../chunk-YZWM6ZIP.cjs');
|
|
47
47
|
require('../chunk-3ZRNK3RO.cjs');
|
|
48
48
|
|
|
@@ -125,7 +125,7 @@ var _chunkK7ENM55Pcjs = require('../chunk-K7ENM55P.cjs');
|
|
|
125
125
|
|
|
126
126
|
|
|
127
127
|
|
|
128
|
-
var
|
|
128
|
+
var _chunkWZYRYYXNcjs = require('../chunk-WZYRYYXN.cjs');
|
|
129
129
|
|
|
130
130
|
|
|
131
131
|
|
|
@@ -250,7 +250,7 @@ require('../chunk-WOFXZ3XU.cjs');
|
|
|
250
250
|
|
|
251
251
|
|
|
252
252
|
|
|
253
|
-
var
|
|
253
|
+
var _chunk4BMRQSPBcjs = require('../chunk-4BMRQSPB.cjs');
|
|
254
254
|
require('../chunk-NPPMKMCU.cjs');
|
|
255
255
|
|
|
256
256
|
|
|
@@ -414,7 +414,7 @@ function normalizeCanvas(raw) {
|
|
|
414
414
|
function createPaintDocument(options = {}) {
|
|
415
415
|
const canvas = normalizeCanvas({ width: _nullishCoalesce(options.width, () => ( 2048)), height: _nullishCoalesce(options.height, () => ( 1536)), dpi: options.dpi });
|
|
416
416
|
const layer = createPaintLayer("Layer 1");
|
|
417
|
-
return { canvas, paper:
|
|
417
|
+
return { canvas, paper: _chunkWZYRYYXNcjs.normalizePaper.call(void 0, _nullishCoalesce(options.paper, () => ( {}))), layers: [layer], activeLayerId: layer.id, strokes: [] };
|
|
418
418
|
}
|
|
419
419
|
|
|
420
420
|
// src/paint-editor/ferro.ts
|
|
@@ -973,17 +973,17 @@ function lightTile(color, height, heightAround, material, light, film = null, vi
|
|
|
973
973
|
filmRgb = thinFilmRgb(opd);
|
|
974
974
|
}
|
|
975
975
|
for (let c = 0; c < 3; c++) {
|
|
976
|
-
const a =
|
|
976
|
+
const a = _chunk4BMRQSPBcjs.SRGB_TO_LINEAR[color[i + c]];
|
|
977
977
|
const fc = filmRgb ? filmRgb[c] : a;
|
|
978
978
|
if (hasSlope) {
|
|
979
979
|
const tint = metal * a + (1 - metal);
|
|
980
980
|
const diff = fa > 0 ? a * (1 - fa * 0.75) + fc * fa * (0.45 + 0.55 * a) : a;
|
|
981
981
|
const specTint = fa > 0 ? tint * (1 - fa) + fc * fa : tint;
|
|
982
982
|
const v = diff * shade * (1 - 0.35 * metal) + spec * specTint * (1 + metal);
|
|
983
|
-
out[i + c] =
|
|
983
|
+
out[i + c] = _chunk4BMRQSPBcjs.linearToSrgb8.call(void 0, v);
|
|
984
984
|
} else {
|
|
985
985
|
const v = a * (1 - fa * 0.75) + fc * fa * (0.45 + 0.55 * a);
|
|
986
|
-
out[i + c] =
|
|
986
|
+
out[i + c] = _chunk4BMRQSPBcjs.linearToSrgb8.call(void 0, v);
|
|
987
987
|
}
|
|
988
988
|
}
|
|
989
989
|
}
|
|
@@ -1275,12 +1275,12 @@ var ThickStrokeDriver = (_class3 = class {
|
|
|
1275
1275
|
constructor(init) {;_class3.prototype.__init3.call(this);_class3.prototype.__init4.call(this);_class3.prototype.__init5.call(this);_class3.prototype.__init6.call(this);_class3.prototype.__init7.call(this);_class3.prototype.__init8.call(this);_class3.prototype.__init9.call(this);_class3.prototype.__init10.call(this);_class3.prototype.__init11.call(this);_class3.prototype.__init12.call(this);
|
|
1276
1276
|
this.init = init;
|
|
1277
1277
|
const b = init.brush;
|
|
1278
|
-
this.smoother = new (0,
|
|
1279
|
-
const copies = init.copies.length ? init.copies : [
|
|
1278
|
+
this.smoother = new (0, _chunkWZYRYYXNcjs.PenSmoother)(b.tip.smoothing, b.pressureSmoothing);
|
|
1279
|
+
const copies = init.copies.length ? init.copies : [_chunkWZYRYYXNcjs.IDENTITY_COPY];
|
|
1280
1280
|
this.copies = copies;
|
|
1281
1281
|
const rates = _chunkIFWLZZCWcjs.exchangeRates.call(void 0, b.behavior.pickup, b.behavior.mix, 1, b.behavior.mixing);
|
|
1282
1282
|
this.states = copies.map((c, i) => ({
|
|
1283
|
-
walker: new (0,
|
|
1283
|
+
walker: new (0, _chunkWZYRYYXNcjs.PenDabWalker)(b, init.seed + i * 7919 | 0, c.linear),
|
|
1284
1284
|
exchange: new (0, _chunkIFWLZZCWcjs.PaintExchange)(rates, init.load),
|
|
1285
1285
|
smudge: b.impasto.tool === "knife" ? new (0, _chunkIFWLZZCWcjs.SmudgeTip)({ strength: 0.85, length: 0.6 + 0.38 * b.impasto.drag, mixing: b.behavior.mixing }, b.tip.size * 1.2) : null,
|
|
1286
1286
|
carried: null,
|
|
@@ -1433,7 +1433,7 @@ var ThickStrokeDriver = (_class3 = class {
|
|
|
1433
1433
|
let flow = 1;
|
|
1434
1434
|
const effect = this.init.effect;
|
|
1435
1435
|
if (effect) {
|
|
1436
|
-
|
|
1436
|
+
_chunkWZYRYYXNcjs.sampleEffectAt.call(void 0, effect, d.x, d.y, this.centre, d);
|
|
1437
1437
|
ex.setReservoirColor(this.centre[0], this.centre[1], this.centre[2]);
|
|
1438
1438
|
} else if (this.sampler) {
|
|
1439
1439
|
const g = this.sampler.dab(d, this.sample);
|
|
@@ -1450,7 +1450,7 @@ var ThickStrokeDriver = (_class3 = class {
|
|
|
1450
1450
|
let field = null;
|
|
1451
1451
|
if (effect) {
|
|
1452
1452
|
field = new Float32Array(n * 3);
|
|
1453
|
-
|
|
1453
|
+
_chunkWZYRYYXNcjs.effectDabField.call(void 0, effect, rect, cov, this.centre, this.paint, field, 0, d);
|
|
1454
1454
|
}
|
|
1455
1455
|
this.medium.deposit(rect, cov, dep, this.paint, ex.paintPigment, field);
|
|
1456
1456
|
}
|
|
@@ -1870,7 +1870,7 @@ function uvPaper(paper, uv) {
|
|
|
1870
1870
|
if (!uv.on || uv.ambient >= 1) return paper;
|
|
1871
1871
|
const cached = uvPapers.get(paper);
|
|
1872
1872
|
if (cached && cached.ambient === uv.ambient) return cached.paper;
|
|
1873
|
-
const [r, g, b] =
|
|
1873
|
+
const [r, g, b] = _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, paper.color);
|
|
1874
1874
|
const toHex = (v) => Math.round(Math.min(255, Math.max(0, v * uv.ambient))).toString(16).padStart(2, "0");
|
|
1875
1875
|
const next = { ...paper, color: `#${toHex(r)}${toHex(g)}${toHex(b)}` };
|
|
1876
1876
|
uvPapers.set(paper, { ambient: uv.ambient, paper: next });
|
|
@@ -2073,9 +2073,9 @@ var UvCache = (_class5 = class {constructor() { _class5.prototype.__init15.call(
|
|
|
2073
2073
|
const fGain = fa / 255 * str;
|
|
2074
2074
|
const fCov = Math.min(1, fGain);
|
|
2075
2075
|
for (let c = 0; c < 3; c++) {
|
|
2076
|
-
const baseLin = ca > 0 ?
|
|
2077
|
-
const emLin = fa > 0 ?
|
|
2078
|
-
dst[i + c] =
|
|
2076
|
+
const baseLin = ca > 0 ? _chunk4BMRQSPBcjs.SRGB_TO_LINEAR[cd[i + c]] * amb : 0;
|
|
2077
|
+
const emLin = fa > 0 ? _chunk4BMRQSPBcjs.SRGB_TO_LINEAR[fd[i + c]] * (1 + 1.15 * fGain) : 0;
|
|
2078
|
+
dst[i + c] = _chunk4BMRQSPBcjs.linearToSrgb8.call(void 0, baseLin * (1 - fCov * 0.5) + emLin * fCov);
|
|
2079
2079
|
}
|
|
2080
2080
|
dst[i + 3] = Math.min(255, Math.max(ca, Math.round(fa * Math.min(1, str))));
|
|
2081
2081
|
}
|
|
@@ -2421,11 +2421,11 @@ var MarkStroke = (_class7 = class {
|
|
|
2421
2421
|
this.options = options;
|
|
2422
2422
|
this.sampler = options.paint ? new (0, _chunkIFWLZZCWcjs.PaintGradientSampler)(options.paint, _nullishCoalesce(options.seed, () => ( 0))) : null;
|
|
2423
2423
|
this.tipTable = _optionalChain([this, 'access', _56 => _56.sampler, 'optionalAccess', _57 => _57.acrossTip]) ? this.sampler.tipTable(_chunkIFWLZZCWcjs.TIP_GRADIENT_STEPS) : null;
|
|
2424
|
-
this.smoother = new (0,
|
|
2425
|
-
this.copies = _optionalChain([options, 'access', _58 => _58.copies, 'optionalAccess', _59 => _59.length]) ? options.copies : [
|
|
2424
|
+
this.smoother = new (0, _chunkWZYRYYXNcjs.PenSmoother)(brush.tip.smoothing, brush.pressureSmoothing);
|
|
2425
|
+
this.copies = _optionalChain([options, 'access', _58 => _58.copies, 'optionalAccess', _59 => _59.length]) ? options.copies : [_chunkWZYRYYXNcjs.IDENTITY_COPY];
|
|
2426
2426
|
this.seed = _nullishCoalesce(options.seed, () => ( 0));
|
|
2427
2427
|
const fine = { ...brush, tip: { ...brush.tip, spacing: Math.max(0.01, Math.min(0.25, STEP_PX / Math.max(1, brush.tip.size))) } };
|
|
2428
|
-
this.walkers = this.copies.map((c, i) => new (0,
|
|
2428
|
+
this.walkers = this.copies.map((c, i) => new (0, _chunkWZYRYYXNcjs.PenDabWalker)(fine, (_nullishCoalesce(options.seed, () => ( 0))) + i * 7919 | 0, c.linear));
|
|
2429
2429
|
this.depth = options.grain && !options.grain.flat ? Math.min(1, Math.max(0, options.paperDepth * brush.grain)) : 0;
|
|
2430
2430
|
}
|
|
2431
2431
|
|
|
@@ -2504,7 +2504,7 @@ var MarkStroke = (_class7 = class {
|
|
|
2504
2504
|
*/
|
|
2505
2505
|
stamp(x, y, r, kind, rotation, seed, alpha, opacity, pressure, rects) {
|
|
2506
2506
|
if (!(r > 0.05) || !(alpha > 0)) return;
|
|
2507
|
-
const sample =
|
|
2507
|
+
const sample = _chunkWZYRYYXNcjs.stampSampler.call(void 0, kind, this.options.stampArt);
|
|
2508
2508
|
if (!sample) return this.mark(x, y, r, alpha, opacity, pressure, rects);
|
|
2509
2509
|
const reach = Math.max(0.5, r) * Math.SQRT2 + 1;
|
|
2510
2510
|
const rect = { x: Math.floor(x - reach), y: Math.floor(y - reach), width: 0, height: 0 };
|
|
@@ -2554,7 +2554,7 @@ var MarkStroke = (_class7 = class {
|
|
|
2554
2554
|
if (this.options.effect) {
|
|
2555
2555
|
if (this.field.length < n * 3) this.field = new Float32Array(n * 3);
|
|
2556
2556
|
const field = this.field.subarray(0, n * 3);
|
|
2557
|
-
|
|
2557
|
+
_chunkWZYRYYXNcjs.sampleEffectField.call(void 0, this.options.effect, rect, vals, field, this.pen);
|
|
2558
2558
|
this.coverage.accumulate(rect, vals, opacity, null, field);
|
|
2559
2559
|
} else {
|
|
2560
2560
|
const color = this.markColor(x, y);
|
|
@@ -3234,11 +3234,11 @@ var StickerSpray = (_class10 = class {
|
|
|
3234
3234
|
constructor(init) {;_class10.prototype.__init33.call(this);_class10.prototype.__init34.call(this);_class10.prototype.__init35.call(this);_class10.prototype.__init36.call(this);_class10.prototype.__init37.call(this);
|
|
3235
3235
|
this.init = init;
|
|
3236
3236
|
const b = init.brush;
|
|
3237
|
-
this.smoother = new (0,
|
|
3238
|
-
this.copies = init.copies.length ? init.copies : [
|
|
3237
|
+
this.smoother = new (0, _chunkWZYRYYXNcjs.PenSmoother)(b.tip.smoothing, b.pressureSmoothing);
|
|
3238
|
+
this.copies = init.copies.length ? init.copies : [_chunkWZYRYYXNcjs.IDENTITY_COPY];
|
|
3239
3239
|
const spacing = Math.max(0.05, 1 / Math.max(0.05, b.sticker.density * 4));
|
|
3240
3240
|
const walk = { ...b, tip: { ...b.tip, spacing }, dynamics: { ...b.dynamics, scatter: 0, sizeJitter: 0, angleJitter: 0 } };
|
|
3241
|
-
this.walkers = this.copies.map((c, i) => new (0,
|
|
3241
|
+
this.walkers = this.copies.map((c, i) => new (0, _chunkWZYRYYXNcjs.PenDabWalker)(walk, init.seed + i * 7919 | 0, c.linear));
|
|
3242
3242
|
this.medium = new (0, _chunkIFWLZZCWcjs.TileMedium)(init.target, {});
|
|
3243
3243
|
this.next = init.nextId;
|
|
3244
3244
|
}
|
|
@@ -3324,7 +3324,7 @@ var StickerSpray = (_class10 = class {
|
|
|
3324
3324
|
const effect = this.init.effect;
|
|
3325
3325
|
if (effect) {
|
|
3326
3326
|
const rgb = [0, 0, 0];
|
|
3327
|
-
const alpha =
|
|
3327
|
+
const alpha = _chunkWZYRYYXNcjs.sampleEffectAt.call(void 0, effect, d.x + dx, d.y + dy, rgb, d);
|
|
3328
3328
|
return { color: "#" + rgb.map((c) => Math.round(c * 255).toString(16).padStart(2, "0")).join(""), alpha };
|
|
3329
3329
|
}
|
|
3330
3330
|
const g = this.init.paint;
|
|
@@ -3453,7 +3453,7 @@ var PaintStrokeSession = (_class11 = class _PaintStrokeSession {
|
|
|
3453
3453
|
this.layerId = init.layerId;
|
|
3454
3454
|
this.base = init.surface;
|
|
3455
3455
|
this.live = new Map(this.base.tiles);
|
|
3456
|
-
this.copies = init.copies.length ? init.copies : [
|
|
3456
|
+
this.copies = init.copies.length ? init.copies : [_chunkWZYRYYXNcjs.IDENTITY_COPY];
|
|
3457
3457
|
const brush = init.brush;
|
|
3458
3458
|
this.invisibleDaylight = brush.fluorescence.amount > 0 && brush.fluorescence.invisible && brush.engine !== "eraser" && brush.engine !== "blender" && brush.engine !== "smudge";
|
|
3459
3459
|
if (init.wet) this.wetDriver = init.wet.driver;
|
|
@@ -3527,7 +3527,7 @@ var PaintStrokeSession = (_class11 = class _PaintStrokeSession {
|
|
|
3527
3527
|
}
|
|
3528
3528
|
if (brush.engine === "mixer" || brush.engine === "blender" || brush.engine === "smudge" || _chunkHRUK5TFWcjs.usesPaintExchange.call(void 0, brush, Boolean(init.paint))) {
|
|
3529
3529
|
const rgb = (c) => [c[0] / 255, c[1] / 255, c[2] / 255];
|
|
3530
|
-
this.wet = new (0,
|
|
3530
|
+
this.wet = new (0, _chunkWZYRYYXNcjs.PaintDabStroke)(brush, {
|
|
3531
3531
|
target: this.tileTarget(),
|
|
3532
3532
|
color: rgb(init.color),
|
|
3533
3533
|
secondary: rgb(_nullishCoalesce(init.secondary, () => ( init.background))),
|
|
@@ -3543,7 +3543,7 @@ var PaintStrokeSession = (_class11 = class _PaintStrokeSession {
|
|
|
3543
3543
|
});
|
|
3544
3544
|
} else {
|
|
3545
3545
|
const opts = { grain: init.grain, paperDepth: init.paperDepth, seed: init.seed, copies: this.copies, paint: _nullishCoalesce(init.paint, () => ( null)), effect, stampArt: init.stampArt, film: this.filmBuffer };
|
|
3546
|
-
this.dry = brush.engine === "particle" ? new ParticleStroke(brush, opts) : brush.engine === "bristle" ? new BristleStroke(brush, opts) : new (0,
|
|
3546
|
+
this.dry = brush.engine === "particle" ? new ParticleStroke(brush, opts) : brush.engine === "bristle" ? new BristleStroke(brush, opts) : new (0, _chunkWZYRYYXNcjs.DryStroke)(brush, opts);
|
|
3547
3547
|
}
|
|
3548
3548
|
}
|
|
3549
3549
|
}
|
|
@@ -3624,7 +3624,7 @@ var PaintStrokeSession = (_class11 = class _PaintStrokeSession {
|
|
|
3624
3624
|
makeThermoTwin(thermo) {
|
|
3625
3625
|
const init = this.init;
|
|
3626
3626
|
const hotHex = init.brush.thermochromic.hotColor;
|
|
3627
|
-
const hotRgb = hotHex ?
|
|
3627
|
+
const hotRgb = hotHex ? _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, hotHex) : [0, 0, 0];
|
|
3628
3628
|
const threshold = init.brush.thermochromic.threshold;
|
|
3629
3629
|
const host = {
|
|
3630
3630
|
update: (_id, surface) => {
|
|
@@ -4191,7 +4191,7 @@ function normalizeBrushStroke(raw) {
|
|
|
4191
4191
|
}
|
|
4192
4192
|
if (st.length) out.stencils = st;
|
|
4193
4193
|
}
|
|
4194
|
-
const effect =
|
|
4194
|
+
const effect = _chunkWZYRYYXNcjs.readPaintEffectPaint.call(void 0, r.paint);
|
|
4195
4195
|
const paint = effect ? null : _chunkIFWLZZCWcjs.readPaintSource.call(void 0, r.paint);
|
|
4196
4196
|
if (effect) out.paint = effect;
|
|
4197
4197
|
else if (paint && paint.type === "gradient") out.paint = paint;
|
|
@@ -4235,7 +4235,7 @@ function varyStroke(stroke, m, v) {
|
|
|
4235
4235
|
const out = { ...stroke, brush, points };
|
|
4236
4236
|
if (_optionalChain([stroke, 'access', _159 => _159.paint, 'optionalAccess', _160 => _160.type]) === "gradient" && s !== 1) out.paint = _chunkIFWLZZCWcjs.scalePaintGradient.call(void 0, stroke.paint, s);
|
|
4237
4237
|
if (_optionalChain([stroke, 'access', _161 => _161.paint, 'optionalAccess', _162 => _162.type]) === "effect" && _optionalChain([stroke, 'access', _163 => _163.paint, 'access', _164 => _164.map, 'optionalAccess', _165 => _165.by]) === "stroke" && s !== 1) out.paint = { ...stroke.paint, map: { ...stroke.paint.map, length: Math.min(4096, Math.max(16, Math.round(stroke.paint.map.length * s))) } };
|
|
4238
|
-
if (_optionalChain([stroke, 'access', _166 => _166.paint, 'optionalAccess', _167 => _167.type]) === "effect" && _optionalChain([stroke, 'access', _168 => _168.paint, 'access', _169 => _169.map, 'optionalAccess', _170 => _170.by]) === "path") out.paint =
|
|
4238
|
+
if (_optionalChain([stroke, 'access', _166 => _166.paint, 'optionalAccess', _167 => _167.type]) === "effect" && _optionalChain([stroke, 'access', _168 => _168.paint, 'access', _169 => _169.map, 'optionalAccess', _170 => _170.by]) === "path") out.paint = _chunkWZYRYYXNcjs.withStrokePath.call(void 0, stroke.paint, points);
|
|
4239
4239
|
if (_optionalChain([stroke, 'access', _171 => _171.copies, 'optionalAccess', _172 => _172.length])) {
|
|
4240
4240
|
const inv = invertAffine(m);
|
|
4241
4241
|
out.copies = stroke.copies.map((c) => composeAffine(m, composeAffine(c, inv)));
|
|
@@ -4277,7 +4277,7 @@ function paperTile(paper, r, light) {
|
|
|
4277
4277
|
const key = `${paperKey(paper, light)}|${r.x},${r.y},${r.width},${r.height}`;
|
|
4278
4278
|
let t = tileCache.get(key);
|
|
4279
4279
|
if (!t) {
|
|
4280
|
-
t =
|
|
4280
|
+
t = _chunkWZYRYYXNcjs.renderPaper.call(void 0, paper, r, paperGrain(paper), light);
|
|
4281
4281
|
if (tileCache.size > 512) tileCache.delete(tileCache.keys().next().value);
|
|
4282
4282
|
tileCache.set(key, t);
|
|
4283
4283
|
}
|
|
@@ -4382,7 +4382,7 @@ function header(state, options) {
|
|
|
4382
4382
|
return out;
|
|
4383
4383
|
}
|
|
4384
4384
|
function serializePaintDocument(state, options = {}) {
|
|
4385
|
-
const { layers, assets } =
|
|
4385
|
+
const { layers, assets } = _chunkWCC4NXWYcjs.serializeLayers.call(void 0, state.layers);
|
|
4386
4386
|
return { ...header(state, options), layers, assets };
|
|
4387
4387
|
}
|
|
4388
4388
|
var NO_EXTENSION_PNGS = /* @__PURE__ */ new Set(["format", "version", "width", "height", "dpi", "paper", "layers", "assets", "activeLayerId", "strokes", "wetEvents", "paintEvents", "origin"]);
|
|
@@ -4452,7 +4452,7 @@ function inlinePngs(value, assets, problems, field, used) {
|
|
|
4452
4452
|
return value;
|
|
4453
4453
|
}
|
|
4454
4454
|
async function serializePaintDocumentExternal(state, store, options = {}) {
|
|
4455
|
-
const { layers, assets } = await
|
|
4455
|
+
const { layers, assets } = await _chunkWCC4NXWYcjs.serializeLayersExternal.call(void 0, state.layers, store);
|
|
4456
4456
|
const out = { ...header(state, options), layers, assets };
|
|
4457
4457
|
for (const key of Object.keys(out)) if (!NO_EXTENSION_PNGS.has(key)) out[key] = await externalizePngs(out[key], assets, store);
|
|
4458
4458
|
return out;
|
|
@@ -4496,8 +4496,8 @@ function deserializePaintDocument(raw) {
|
|
|
4496
4496
|
}
|
|
4497
4497
|
function readDocument(r, assets, problems) {
|
|
4498
4498
|
const canvas = normalizeCanvas({ width: r.width, height: r.height, dpi: _nullishCoalesce(r.dpi, () => ( void 0)) });
|
|
4499
|
-
const paper =
|
|
4500
|
-
const layers = paintLayersOnly(
|
|
4499
|
+
const paper = _chunkWZYRYYXNcjs.normalizePaper.call(void 0, _nullishCoalesce(r.paper, () => ( {})));
|
|
4500
|
+
const layers = paintLayersOnly(_chunkWCC4NXWYcjs.deserializeLayers.call(void 0, r.layers, { assets, problems }), problems);
|
|
4501
4501
|
const wanted = typeof r.activeLayerId === "string" ? r.activeLayerId : null;
|
|
4502
4502
|
const activeLayerId = wanted && _chunkPVJMTLPJcjs.findLayer.call(void 0, layers, wanted) ? wanted : _nullishCoalesce(_optionalChain([_chunkPVJMTLPJcjs.flattenLayers.call(void 0, layers), 'access', _184 => _184.filter, 'call', _185 => _185((l) => l.type === "pixel"), 'access', _186 => _186.pop, 'call', _187 => _187(), 'optionalAccess', _188 => _188.id]), () => ( null));
|
|
4503
4503
|
const wetEvents = Array.isArray(r.wetEvents) ? r.wetEvents.filter((e) => e && typeof e === "object" && Number.isInteger(e.clock) && typeof e.kind === "string") : [];
|
|
@@ -4513,7 +4513,7 @@ async function deserializePaintDocumentAsync(raw, store) {
|
|
|
4513
4513
|
if (!raw || typeof raw !== "object") throw new Error("Not a paint document: expected a JSON object.");
|
|
4514
4514
|
const r = raw;
|
|
4515
4515
|
const problems = [];
|
|
4516
|
-
const assets = await
|
|
4516
|
+
const assets = await _chunkWCC4NXWYcjs.resolveExternalAssets.call(void 0, _nullishCoalesce(r.assets, () => ( {})), store, problems);
|
|
4517
4517
|
const loaded = deserializePaintDocument({ ...r, assets });
|
|
4518
4518
|
return { ...loaded, problems: [...problems, ...loaded.problems] };
|
|
4519
4519
|
}
|
|
@@ -4596,7 +4596,7 @@ function pointerToPenPoint(e, x, y, view) {
|
|
|
4596
4596
|
const p = { x, y, pressure: samplePressure(e) };
|
|
4597
4597
|
if (typeof e.timeStamp === "number" && Number.isFinite(e.timeStamp)) p.t = e.timeStamp;
|
|
4598
4598
|
if (e.pointerType !== "pen") return p;
|
|
4599
|
-
const o =
|
|
4599
|
+
const o = _chunkWZYRYYXNcjs.penOrientation.call(void 0, {
|
|
4600
4600
|
x,
|
|
4601
4601
|
y,
|
|
4602
4602
|
altitude: typeof e.altitudeAngle === "number" ? e.altitudeAngle : void 0,
|
|
@@ -4663,19 +4663,19 @@ var thumbWorld = null;
|
|
|
4663
4663
|
function paintWetTestStroke(brush, paper, color, width, height) {
|
|
4664
4664
|
if (!thumbWorld || thumbWorld.width !== width || thumbWorld.height !== height) {
|
|
4665
4665
|
_optionalChain([thumbWorld, 'optionalAccess', _191 => _191.destroy, 'call', _192 => _192()]);
|
|
4666
|
-
thumbWorld = new (0,
|
|
4667
|
-
} else thumbWorld.setPaper(
|
|
4666
|
+
thumbWorld = new (0, _chunk4BMRQSPBcjs.WetWorld)(width, height, _chunkWZYRYYXNcjs.wetPaperInput.call(void 0, paper), { kernel: "typescript", threads: 0 });
|
|
4667
|
+
} else thumbWorld.setPaper(_chunkWZYRYYXNcjs.wetPaperInput.call(void 0, paper));
|
|
4668
4668
|
const w = thumbWorld;
|
|
4669
4669
|
if (w.hasLane("thumb")) w.removeLane("thumb");
|
|
4670
4670
|
w.ensureLane("thumb");
|
|
4671
|
-
const [r, g, b] =
|
|
4671
|
+
const [r, g, b] = _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, color);
|
|
4672
4672
|
if (brush.wet.tool !== "paint" && brush.wet.tool !== "water") {
|
|
4673
4673
|
const half = Math.ceil(height / 2);
|
|
4674
|
-
w.paint("thumb", { x: 0, y: 0, width, height: half }, null, 0.4, Array.from(
|
|
4675
|
-
w.paint("thumb", { x: 0, y: half, width, height: height - half }, null, 0.4, Array.from(
|
|
4674
|
+
w.paint("thumb", { x: 0, y: 0, width, height: half }, null, 0.4, Array.from(_chunk4BMRQSPBcjs.pigmentOf.call(void 0, [r / 255, g / 255, b / 255], 0), (v) => v * 0.05));
|
|
4675
|
+
w.paint("thumb", { x: 0, y: half, width, height: height - half }, null, 0.4, Array.from(_chunk4BMRQSPBcjs.pigmentOf.call(void 0, [232 / 255, 196 / 255, 64 / 255], 0), (v) => v * 0.05));
|
|
4676
4676
|
}
|
|
4677
4677
|
const film = brush.iridescence && brush.wet.tool === "paint" ? new FilmBuffer(_chunk474IQG74cjs.emptySurface.call(void 0, 4, 0)) : null;
|
|
4678
|
-
const driver = new (0,
|
|
4678
|
+
const driver = new (0, _chunkWZYRYYXNcjs.WetStrokeDriver)({
|
|
4679
4679
|
world: w,
|
|
4680
4680
|
laneId: "thumb",
|
|
4681
4681
|
brush,
|
|
@@ -4683,9 +4683,9 @@ function paintWetTestStroke(brush, paper, color, width, height) {
|
|
|
4683
4683
|
load: brushLoadForStroke(brush, _chunkIFWLZZCWcjs.EMPTY_MIXER_LOAD, [r / 255, g / 255, b / 255]),
|
|
4684
4684
|
grain: paperGrain(paper),
|
|
4685
4685
|
paperDepth: paper.depth,
|
|
4686
|
-
paperColor:
|
|
4686
|
+
paperColor: _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, paper.color),
|
|
4687
4687
|
seed: 7,
|
|
4688
|
-
copies: [
|
|
4688
|
+
copies: [_chunkWZYRYYXNcjs.IDENTITY_COPY],
|
|
4689
4689
|
film
|
|
4690
4690
|
});
|
|
4691
4691
|
driver.push(thumbnailStroke(width, height));
|
|
@@ -4707,7 +4707,7 @@ function thumbnailStroke(width, height) {
|
|
|
4707
4707
|
return pts;
|
|
4708
4708
|
}
|
|
4709
4709
|
function paintTestStroke(surface, brush, paper, color, width, height, stampArt) {
|
|
4710
|
-
const [r, g, b] =
|
|
4710
|
+
const [r, g, b] = _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, color);
|
|
4711
4711
|
let result = surface;
|
|
4712
4712
|
let thick = null;
|
|
4713
4713
|
let light = null;
|
|
@@ -4730,13 +4730,13 @@ function paintTestStroke(surface, brush, paper, color, width, height, stampArt)
|
|
|
4730
4730
|
lockTransparency: false,
|
|
4731
4731
|
brush,
|
|
4732
4732
|
color: [r, g, b, 255],
|
|
4733
|
-
background: [...
|
|
4733
|
+
background: [..._chunkWZYRYYXNcjs.hexToRgb8.call(void 0, paper.color), 255],
|
|
4734
4734
|
grain: paperGrain(paper),
|
|
4735
4735
|
paperDepth: paper.depth,
|
|
4736
4736
|
seed: 7,
|
|
4737
4737
|
colorHex: color,
|
|
4738
4738
|
affineCopies: [],
|
|
4739
|
-
copies: [
|
|
4739
|
+
copies: [_chunkWZYRYYXNcjs.IDENTITY_COPY],
|
|
4740
4740
|
mixerLoad: brushLoadForStroke(brush, _chunkIFWLZZCWcjs.EMPTY_MIXER_LOAD, [r / 255, g / 255, b / 255]),
|
|
4741
4741
|
thick: brush.engine === "impasto" || brush.iridescence ? { channels: emptyThickChannels() } : void 0,
|
|
4742
4742
|
sticker: brush.engine === "sticker" ? { nextId: 1 } : void 0,
|
|
@@ -4757,7 +4757,7 @@ function renderBrushThumbnail(brush, options) {
|
|
|
4757
4757
|
const height = Math.max(16, Math.min(512, Math.round(_nullishCoalesce(options.height, () => ( 48)))));
|
|
4758
4758
|
const maxSize = height * 0.42;
|
|
4759
4759
|
const b = brush.tip.size > maxSize ? _chunkHRUK5TFWcjs.normalizePaintBrush.call(void 0, { tip: { ...brush.tip, size: maxSize } }, brush) : brush;
|
|
4760
|
-
const rgba = [...
|
|
4760
|
+
const rgba = [..._chunkWZYRYYXNcjs.hexToRgb8.call(void 0, options.color), 255];
|
|
4761
4761
|
let surface = _chunk474IQG74cjs.emptySurface.call(void 0, 4);
|
|
4762
4762
|
if (b.engine === "eraser") {
|
|
4763
4763
|
surface = _chunk474IQG74cjs.fillRect.call(void 0, surface, { x: 0, y: 0, width, height }, rgba);
|
|
@@ -5085,7 +5085,7 @@ var MixingPad = (_class13 = class {constructor() { _class13.prototype.__init63.c
|
|
|
5085
5085
|
}
|
|
5086
5086
|
/** Paints `points` with `brush` in `color` on the pad. */
|
|
5087
5087
|
run(brush, points, color) {
|
|
5088
|
-
const [r, g, b] =
|
|
5088
|
+
const [r, g, b] = _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, color);
|
|
5089
5089
|
let result = null;
|
|
5090
5090
|
const session = new PaintStrokeSession(
|
|
5091
5091
|
{ update: () => {
|
|
@@ -5103,7 +5103,7 @@ var MixingPad = (_class13 = class {constructor() { _class13.prototype.__init63.c
|
|
|
5103
5103
|
seed: 1,
|
|
5104
5104
|
colorHex: color,
|
|
5105
5105
|
affineCopies: [],
|
|
5106
|
-
copies: [
|
|
5106
|
+
copies: [_chunkWZYRYYXNcjs.IDENTITY_COPY],
|
|
5107
5107
|
mixerLoad: brushLoadForStroke(brush, _chunkIFWLZZCWcjs.EMPTY_MIXER_LOAD, [r / 255, g / 255, b / 255])
|
|
5108
5108
|
}
|
|
5109
5109
|
);
|
|
@@ -5194,7 +5194,7 @@ var MixingPad = (_class13 = class {constructor() { _class13.prototype.__init63.c
|
|
|
5194
5194
|
this.run(knife, stir, "#000000");
|
|
5195
5195
|
}
|
|
5196
5196
|
const mixed = _chunk2VX55NFMcjs.mixPigments.call(void 0,
|
|
5197
|
-
paints2.map((p) =>
|
|
5197
|
+
paints2.map((p) => _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, p.color).map((v) => v / 255)),
|
|
5198
5198
|
paints2.map((p) => p.parts)
|
|
5199
5199
|
);
|
|
5200
5200
|
const core = _chunkHRUK5TFWcjs.normalizePaintBrush.call(void 0, { tip: { ...PAD_BLOB.tip, size: R * 1.1, hardness: 0.55 } }, PAD_BLOB);
|
|
@@ -5589,10 +5589,10 @@ function addTiles(a, b) {
|
|
|
5589
5589
|
}
|
|
5590
5590
|
function computeTile(paper, grain, amount, rect, layers) {
|
|
5591
5591
|
const n = rect.width * rect.height;
|
|
5592
|
-
const [p0, p1, p2] =
|
|
5592
|
+
const [p0, p1, p2] = _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, paper.color);
|
|
5593
5593
|
const pb = [p0, p1, p2];
|
|
5594
5594
|
const pl = [Math.max(1e-4, LIN[p0]), Math.max(1e-4, LIN[p1]), Math.max(1e-4, LIN[p2])];
|
|
5595
|
-
const [c0, c1, c2] =
|
|
5595
|
+
const [c0, c1, c2] = _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, _nullishCoalesce(paper.backlightColor, () => ( DEFAULT_BACKLIGHT_COLOR)));
|
|
5596
5596
|
const t0 = new Float32Array(n).fill(amount * LIN[c0]);
|
|
5597
5597
|
const t1 = new Float32Array(n).fill(amount * LIN[c1]);
|
|
5598
5598
|
const t2 = new Float32Array(n).fill(amount * LIN[c2]);
|
|
@@ -6674,7 +6674,7 @@ function crossoverStrokes(a, b, seed, index = 0) {
|
|
|
6674
6674
|
const dom = w >= 0.5 ? b : a;
|
|
6675
6675
|
let paint = dom.paint;
|
|
6676
6676
|
if (_optionalChain([paint, 'optionalAccess', _294 => _294.type]) === "effect" && _optionalChain([paint, 'access', _295 => _295.map, 'optionalAccess', _296 => _296.by]) === "path") {
|
|
6677
|
-
paint =
|
|
6677
|
+
paint = _chunkWZYRYYXNcjs.withStrokePath.call(void 0, paint, points);
|
|
6678
6678
|
}
|
|
6679
6679
|
let load = dom.load;
|
|
6680
6680
|
if (_optionalChain([load, 'optionalAccess', _297 => _297.reservoir])) {
|
|
@@ -6716,7 +6716,7 @@ function mutateStroke(stroke, rates, seed, index = 0, group) {
|
|
|
6716
6716
|
out = {
|
|
6717
6717
|
...out,
|
|
6718
6718
|
points: jittered,
|
|
6719
|
-
..._optionalChain([out, 'access', _300 => _300.paint, 'optionalAccess', _301 => _301.type]) === "effect" && _optionalChain([out, 'access', _302 => _302.paint, 'access', _303 => _303.map, 'optionalAccess', _304 => _304.by]) === "path" ? { paint:
|
|
6719
|
+
..._optionalChain([out, 'access', _300 => _300.paint, 'optionalAccess', _301 => _301.type]) === "effect" && _optionalChain([out, 'access', _302 => _302.paint, 'access', _303 => _303.map, 'optionalAccess', _304 => _304.by]) === "path" ? { paint: _chunkWZYRYYXNcjs.withStrokePath.call(void 0, out.paint, jittered) } : {}
|
|
6720
6720
|
};
|
|
6721
6721
|
}
|
|
6722
6722
|
if (r.color > 0) {
|
|
@@ -6920,7 +6920,7 @@ function parseColor(value, what = "color") {
|
|
|
6920
6920
|
return value.trim().toLowerCase();
|
|
6921
6921
|
}
|
|
6922
6922
|
function rgbaOf(hex2) {
|
|
6923
|
-
const [r, g, b] =
|
|
6923
|
+
const [r, g, b] = _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, hex2);
|
|
6924
6924
|
return [r, g, b, 255];
|
|
6925
6925
|
}
|
|
6926
6926
|
function rgbToHex(r, g, b) {
|
|
@@ -7092,7 +7092,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
7092
7092
|
this.encodeImage = options.encodeImage;
|
|
7093
7093
|
this.guides = defaultGuides(this.doc.canvas);
|
|
7094
7094
|
this.wetOptions = options.wet;
|
|
7095
|
-
this.wet = new (0,
|
|
7095
|
+
this.wet = new (0, _chunkWZYRYYXNcjs.PaintWetLayers)(
|
|
7096
7096
|
{
|
|
7097
7097
|
canvas: () => this.doc.canvas,
|
|
7098
7098
|
paper: () => this.doc.paper,
|
|
@@ -7554,7 +7554,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
7554
7554
|
// --- Canvas and paper ----------------------------------------------------------
|
|
7555
7555
|
resolvePaper(paper) {
|
|
7556
7556
|
if (typeof paper === "string") {
|
|
7557
|
-
const p =
|
|
7557
|
+
const p = _chunkWZYRYYXNcjs.paperPreset.call(void 0, paper);
|
|
7558
7558
|
if (!p) throw new PaintEditorError(`Unknown paper "${paper}". Call list_papers for the ids.`);
|
|
7559
7559
|
return p;
|
|
7560
7560
|
}
|
|
@@ -7690,19 +7690,19 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
7690
7690
|
this.requireIdle("changing the paper");
|
|
7691
7691
|
let base = this.doc.paper;
|
|
7692
7692
|
if (update.preset !== void 0 && update.preset !== this.doc.paper.preset) {
|
|
7693
|
-
const p =
|
|
7693
|
+
const p = _chunkWZYRYYXNcjs.paperPreset.call(void 0, update.preset);
|
|
7694
7694
|
if (!p) throw new PaintEditorError(`Unknown paper "${update.preset}". Call list_papers for the ids.`);
|
|
7695
7695
|
base = p;
|
|
7696
7696
|
}
|
|
7697
7697
|
const { preset: _p, ...rest } = update;
|
|
7698
7698
|
if (rest.color !== void 0) parseColor(rest.color, "paper color");
|
|
7699
|
-
const paper =
|
|
7699
|
+
const paper = _chunkWZYRYYXNcjs.normalizePaper.call(void 0, { ...rest, preset: base.preset, offset: _nullishCoalesce(rest.offset, () => ( this.doc.paper.offset)) }, base);
|
|
7700
7700
|
const changedKeys = Object.keys(rest).filter((k) => k !== "name");
|
|
7701
7701
|
if (changedKeys.length && update.preset === void 0) paper.preset = base.preset;
|
|
7702
7702
|
if (this.wet.world) this.beginWetOp();
|
|
7703
7703
|
this.commit("Paper", { ...this.doc, paper });
|
|
7704
7704
|
this.wet.paperChanged();
|
|
7705
|
-
return
|
|
7705
|
+
return _chunkWZYRYYXNcjs.clonePaper.call(void 0, paper);
|
|
7706
7706
|
}
|
|
7707
7707
|
// --- Layers --------------------------------------------------------------------
|
|
7708
7708
|
getLayer(id) {
|
|
@@ -8221,8 +8221,8 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
8221
8221
|
if (!(Number.isFinite(pressure) && pressure >= 0 && pressure <= 1)) throw new PaintEditorError(`pressure ${pressure} is out of range; use 0..1.`);
|
|
8222
8222
|
const wet = options.wet === true;
|
|
8223
8223
|
if (wet && this.previewing) throw new PaintEditorError("Wet paint can't be previewed; suggest a dry fill instead.");
|
|
8224
|
-
if (wet && !this.wet.wetLayerIds().includes(fillTarget.id) && this.wet.wetLayerIds().length >=
|
|
8225
|
-
throw new PaintEditorError(`At most ${
|
|
8224
|
+
if (wet && !this.wet.wetLayerIds().includes(fillTarget.id) && this.wet.wetLayerIds().length >= _chunk4BMRQSPBcjs.MAX_WET_LANES) {
|
|
8225
|
+
throw new PaintEditorError(`At most ${_chunk4BMRQSPBcjs.MAX_WET_LANES} layers can hold wet paint at once; dry one first (dry_paint).`);
|
|
8226
8226
|
}
|
|
8227
8227
|
const refPixels = refSpec === "layer" ? this.compositePixels({ layerIds: [fillTarget.id], paper: false, wet: "display" }).data : refSpec === "all" || refSpec === "composite" ? this.compositePixels({ paper: false, wet: "display" }).data : this.compositePixels({ layerIds: [refSpec], paper: false, wet: "display" }).data;
|
|
8228
8228
|
const filled = _chunkYH6SKC7Pcjs.fillRegionMask.call(void 0, refPixels, width, height, {
|
|
@@ -8270,10 +8270,10 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
8270
8270
|
}
|
|
8271
8271
|
this.beginWetOp();
|
|
8272
8272
|
const world = this.wet.ensureLane(l2.id);
|
|
8273
|
-
const [r, g, b] =
|
|
8274
|
-
const medium = new (0,
|
|
8273
|
+
const [r, g, b] = _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, color);
|
|
8274
|
+
const medium = new (0, _chunk4BMRQSPBcjs.WetMedium)(world, l2.id, {
|
|
8275
8275
|
water: 0.9 * Math.max(0.25, opacity),
|
|
8276
|
-
mass:
|
|
8276
|
+
mass: _chunk4BMRQSPBcjs.PIGMENT_UNIT * 2.5 * opacity,
|
|
8277
8277
|
body: 0,
|
|
8278
8278
|
light: 0
|
|
8279
8279
|
});
|
|
@@ -8658,7 +8658,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
8658
8658
|
this.checkTime(source.time);
|
|
8659
8659
|
let map;
|
|
8660
8660
|
try {
|
|
8661
|
-
map =
|
|
8661
|
+
map = _chunkWZYRYYXNcjs.readEffectStrokeMap.call(void 0, source.map);
|
|
8662
8662
|
} catch (e) {
|
|
8663
8663
|
throw new PaintEditorError(e.message);
|
|
8664
8664
|
}
|
|
@@ -8692,9 +8692,9 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
8692
8692
|
}
|
|
8693
8693
|
/** The rendered pixels of an effect paint at the current canvas size, or `null` when it has not been rendered. */
|
|
8694
8694
|
effectPaintImage(p) {
|
|
8695
|
-
const key =
|
|
8695
|
+
const key = _chunkWZYRYYXNcjs.effectPaintKey.call(void 0, p);
|
|
8696
8696
|
const img = this.effectPaintPixels.get(key);
|
|
8697
|
-
const size =
|
|
8697
|
+
const size = _chunkWZYRYYXNcjs.effectPaintSize.call(void 0, p, this.doc.canvas);
|
|
8698
8698
|
if (!img || img.width !== size.width || img.height !== size.height) return null;
|
|
8699
8699
|
this.effectPaintPixels.delete(key);
|
|
8700
8700
|
this.effectPaintPixels.set(key, img);
|
|
@@ -8704,7 +8704,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
8704
8704
|
return this.cacheEffectPaintImage(p, toEffectPaintPixels(p, pixels));
|
|
8705
8705
|
}
|
|
8706
8706
|
cacheEffectPaintImage(p, img) {
|
|
8707
|
-
this.effectPaintPixels.set(
|
|
8707
|
+
this.effectPaintPixels.set(_chunkWZYRYYXNcjs.effectPaintKey.call(void 0, p), img);
|
|
8708
8708
|
this.trimEffectPaints();
|
|
8709
8709
|
return img;
|
|
8710
8710
|
}
|
|
@@ -8720,7 +8720,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
8720
8720
|
if (have) return have;
|
|
8721
8721
|
const provider = this.effects.provider;
|
|
8722
8722
|
if (!provider || p.provider && provider.id !== p.provider) return null;
|
|
8723
|
-
const size =
|
|
8723
|
+
const size = _chunkWZYRYYXNcjs.effectPaintSize.call(void 0, p, this.doc.canvas);
|
|
8724
8724
|
const pixels = this.effectsRenderer.renderSync(provider, p.effect, size, { time: p.time, values: p.values });
|
|
8725
8725
|
return pixels ? this.cacheEffectPaintPixels(p, pixels) : null;
|
|
8726
8726
|
}
|
|
@@ -8736,7 +8736,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
8736
8736
|
const what = `the effect "${p.effect}"${p.provider ? ` from provider "${p.provider}"` : ""}`;
|
|
8737
8737
|
if (!provider) throw new PaintEditorError(`Effect paint needs ${what}, but no effects provider is registered; register it (setEffectsProvider) and try again.`);
|
|
8738
8738
|
if (p.provider && provider.id !== p.provider) throw new PaintEditorError(`Effect paint needs ${what}, but the registered provider is "${provider.id}"; register "${p.provider}" (setEffectsProvider) and try again.`);
|
|
8739
|
-
const { width, height } =
|
|
8739
|
+
const { width, height } = _chunkWZYRYYXNcjs.effectPaintSize.call(void 0, p, this.doc.canvas);
|
|
8740
8740
|
let pixels;
|
|
8741
8741
|
try {
|
|
8742
8742
|
pixels = await this.effectsRenderer.render(provider, p.effect, { width, height }, { time: p.time, values: p.values });
|
|
@@ -8751,10 +8751,10 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
8751
8751
|
*/
|
|
8752
8752
|
async prepareEffectPaints(paints2) {
|
|
8753
8753
|
const list = [...paints2];
|
|
8754
|
-
this.effectPaintBatch = new Set(list.map(
|
|
8754
|
+
this.effectPaintBatch = new Set(list.map(_chunkWZYRYYXNcjs.effectPaintKey)).size;
|
|
8755
8755
|
const seen = /* @__PURE__ */ new Set();
|
|
8756
8756
|
for (const p of list) {
|
|
8757
|
-
const key =
|
|
8757
|
+
const key = _chunkWZYRYYXNcjs.effectPaintKey.call(void 0, p);
|
|
8758
8758
|
if (seen.has(key)) continue;
|
|
8759
8759
|
seen.add(key);
|
|
8760
8760
|
await this.renderEffectPaint(p);
|
|
@@ -8770,15 +8770,15 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
8770
8770
|
if (!_chunkHRUK5TFWcjs.brushTakesPaint.call(void 0, brush)) return;
|
|
8771
8771
|
let source = null;
|
|
8772
8772
|
if (init.paint !== void 0) {
|
|
8773
|
-
if (!
|
|
8774
|
-
source =
|
|
8773
|
+
if (!_chunkWZYRYYXNcjs.isPaintEffectPaint.call(void 0, init.paint)) return;
|
|
8774
|
+
source = _chunkWZYRYYXNcjs.readPaintEffectPaint.call(void 0, init.paint);
|
|
8775
8775
|
} else if (init.color === void 0 && !brush.paint && !this.effectPaintPending) {
|
|
8776
8776
|
source = this.effectPaint;
|
|
8777
8777
|
}
|
|
8778
8778
|
if (!source || _optionalChain([source, 'access', _513 => _513.map, 'optionalAccess', _514 => _514.by]) !== "path") return;
|
|
8779
8779
|
if (!this.effectPathControls.has(source.effect)) await this.describeEffect(source.effect);
|
|
8780
8780
|
const control = this.effectPathControls.get(source.effect);
|
|
8781
|
-
const paints2 = pointsList.filter((pts) => pts.length > 0).map((pts) =>
|
|
8781
|
+
const paints2 = pointsList.filter((pts) => pts.length > 0).map((pts) => _chunkWZYRYYXNcjs.withStrokePath.call(void 0, source, pts, control));
|
|
8782
8782
|
if (paints2.length) await this.prepareEffectPaints(paints2);
|
|
8783
8783
|
}
|
|
8784
8784
|
/**
|
|
@@ -8802,12 +8802,12 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
8802
8802
|
if (!was) return null;
|
|
8803
8803
|
try {
|
|
8804
8804
|
if (edit.paint !== void 0) {
|
|
8805
|
-
if (!
|
|
8806
|
-
const p =
|
|
8807
|
-
return p &&
|
|
8805
|
+
if (!_chunkWZYRYYXNcjs.isPaintEffectPaint.call(void 0, edit.paint)) return null;
|
|
8806
|
+
const p = _chunkWZYRYYXNcjs.readPaintEffectPaint.call(void 0, edit.paint);
|
|
8807
|
+
return p && _chunkWZYRYYXNcjs.withStrokePath.call(void 0, p, was.points, this.effectPathControls.get(p.effect));
|
|
8808
8808
|
}
|
|
8809
8809
|
if (_optionalChain([was, 'access', _517 => _517.paint, 'optionalAccess', _518 => _518.type]) !== "effect" || _optionalChain([was, 'access', _519 => _519.paint, 'access', _520 => _520.map, 'optionalAccess', _521 => _521.by]) !== "path") return null;
|
|
8810
|
-
if (edit.points !== void 0) return
|
|
8810
|
+
if (edit.points !== void 0) return _chunkWZYRYYXNcjs.withStrokePath.call(void 0, was.paint, this.checkPoints(edit.points), this.effectPathControls.get(was.paint.effect));
|
|
8811
8811
|
if (!edit.transform) return null;
|
|
8812
8812
|
const varied = varyStroke(was, this.strokeTransform(was, edit.transform), {}).paint;
|
|
8813
8813
|
return _optionalChain([varied, 'optionalAccess', _522 => _522.type]) === "effect" ? varied : null;
|
|
@@ -8875,8 +8875,8 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
8875
8875
|
if (!_chunkHRUK5TFWcjs.brushTakesPaint.call(void 0, brush)) return null;
|
|
8876
8876
|
let source = null;
|
|
8877
8877
|
if (init.paint !== void 0) {
|
|
8878
|
-
if (!
|
|
8879
|
-
source =
|
|
8878
|
+
if (!_chunkWZYRYYXNcjs.isPaintEffectPaint.call(void 0, init.paint)) return null;
|
|
8879
|
+
source = _chunkWZYRYYXNcjs.readPaintEffectPaint.call(void 0, init.paint);
|
|
8880
8880
|
if (!source) throw new PaintEditorError("The stroke's effect paint needs an effect id and values (getEffectPaint returns one).");
|
|
8881
8881
|
} else if (init.color === void 0 && !brush.paint) {
|
|
8882
8882
|
if (this.effectPaintPending) throw new PaintEditorError(`The effect paint "${this.effectPaintPending.effect}" is still rendering; wait for set_effect_paint to finish, then paint.`);
|
|
@@ -8884,7 +8884,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
8884
8884
|
}
|
|
8885
8885
|
if (!source) return null;
|
|
8886
8886
|
const path = _optionalChain([source, 'access', _527 => _527.map, 'optionalAccess', _528 => _528.by]) === "path";
|
|
8887
|
-
if (path && _optionalChain([points, 'optionalAccess', _529 => _529.length])) source =
|
|
8887
|
+
if (path && _optionalChain([points, 'optionalAccess', _529 => _529.length])) source = _chunkWZYRYYXNcjs.withStrokePath.call(void 0, source, points, this.effectPathControls.get(source.effect));
|
|
8888
8888
|
const pixels = _nullishCoalesce(this.effectPaintImage(source), () => ( (path ? this.renderEffectPaintSync(source) : null)));
|
|
8889
8889
|
if (!pixels) throw new PaintEditorError(`The effect paint "${source.effect}"${source.provider ? ` from provider "${source.provider}"` : ""} is not rendered at this canvas size; call ${path ? "prepareStrokePathEffect (the paint_stroke tool does this) or prepareStrokeEdit" : "set_effect_paint (or prepareEffectPaints)"} first.`);
|
|
8890
8890
|
return { source, pixels };
|
|
@@ -9052,7 +9052,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
9052
9052
|
this.brushSpec = { ...copyJSON(spec), id: next.id, name: next.name };
|
|
9053
9053
|
this.pendingBrushId = null;
|
|
9054
9054
|
this.emit([]);
|
|
9055
|
-
const refs =
|
|
9055
|
+
const refs = _chunkWZYRYYXNcjs.brushStickerRefs.call(void 0, next);
|
|
9056
9056
|
if (refs.length) void this.prepareStickers(refs).catch(() => this.emit([]));
|
|
9057
9057
|
}
|
|
9058
9058
|
/**
|
|
@@ -9114,7 +9114,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
9114
9114
|
const hex2 = this.brushColour ? _chunkJBZRVLXVcjs.brushColourHex.call(void 0, this.brushColour, next) : null;
|
|
9115
9115
|
if (hex2) this.color = hex2;
|
|
9116
9116
|
this.liveLayers = null;
|
|
9117
|
-
const refs =
|
|
9117
|
+
const refs = _chunkWZYRYYXNcjs.brushStickerRefs.call(void 0, this.brush);
|
|
9118
9118
|
if (refs.some((r) => !_chunkRDFHWAHLcjs.editorStampOf.call(void 0, r))) void this.prepareStickers(refs).catch(() => this.emit([]));
|
|
9119
9119
|
this.emit();
|
|
9120
9120
|
}
|
|
@@ -9137,7 +9137,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
9137
9137
|
if (_optionalChain([had, 'optionalAccess', _553 => _553.scheme]) === scheme) return had.stroke;
|
|
9138
9138
|
const out = { ...st, color: want };
|
|
9139
9139
|
if (st.load) {
|
|
9140
|
-
const load = brushLoadForStroke(st.brush, _chunkIFWLZZCWcjs.EMPTY_MIXER_LOAD,
|
|
9140
|
+
const load = brushLoadForStroke(st.brush, _chunkIFWLZZCWcjs.EMPTY_MIXER_LOAD, _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, want).map((v) => v / 255));
|
|
9141
9141
|
if (load.reservoir || load.pickup) out.load = load;
|
|
9142
9142
|
else delete out.load;
|
|
9143
9143
|
}
|
|
@@ -9262,7 +9262,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
9262
9262
|
if (!_chunkHRUK5TFWcjs.brushTakesPaint.call(void 0, brush)) return null;
|
|
9263
9263
|
let g = null;
|
|
9264
9264
|
if (init.paint !== void 0) {
|
|
9265
|
-
if (
|
|
9265
|
+
if (_chunkWZYRYYXNcjs.isPaintEffectPaint.call(void 0, init.paint)) return null;
|
|
9266
9266
|
const p = this.readStrokePaint(init.paint);
|
|
9267
9267
|
g = p.type === "gradient" ? p : null;
|
|
9268
9268
|
} else g = _nullishCoalesce(brush.paint, () => ( (init.color === void 0 ? this.gradient : null)));
|
|
@@ -9306,7 +9306,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
9306
9306
|
// --- Mixer Brush ---------------------------------------------------------------
|
|
9307
9307
|
/** Fills the Mixer Brush reservoir with a colour (default the editor colour). */
|
|
9308
9308
|
loadMixerBrush(color) {
|
|
9309
|
-
const [r, g, b] =
|
|
9309
|
+
const [r, g, b] = _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, color === void 0 ? this.color : parseColor(color));
|
|
9310
9310
|
this.mixerLoad = _chunkIFWLZZCWcjs.loadMixer.call(void 0, this.mixerLoad, [r / 255, g / 255, b / 255]);
|
|
9311
9311
|
this.emit([]);
|
|
9312
9312
|
return this.mixerLoad;
|
|
@@ -9359,7 +9359,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
9359
9359
|
}
|
|
9360
9360
|
const scheme = _nullishCoalesce(this.paintScheme, () => ( this.colorScheme));
|
|
9361
9361
|
let init = dualColor ? { ...given, color: dualColor[scheme] } : given;
|
|
9362
|
-
if (init.paint !== void 0 && !
|
|
9362
|
+
if (init.paint !== void 0 && !_chunkWZYRYYXNcjs.isPaintEffectPaint.call(void 0, init.paint)) {
|
|
9363
9363
|
const p = this.readStrokePaint(init.paint);
|
|
9364
9364
|
if (p.type === "color") {
|
|
9365
9365
|
init = { ...init, color: p.color, paint: void 0 };
|
|
@@ -9383,7 +9383,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
9383
9383
|
if (this.previewing && _chunkHRUK5TFWcjs.isWetBrush.call(void 0, brush)) throw new PaintEditorError(`Wet paint can't be previewed; the ${brush.name} brush paints wet media. Suggest it with a dry brush.`);
|
|
9384
9384
|
if (brush.ghost) {
|
|
9385
9385
|
if (brush.light.amount > 0) throw new PaintEditorError(`Ghost paint (${brush.name}) shares the wet light channel and can't emit light; set light.amount to 0 or ghost to null (set_brush).`);
|
|
9386
|
-
if (
|
|
9386
|
+
if (_chunkWZYRYYXNcjs.isPaintEffectPaint.call(void 0, init.paint) || init.paint === void 0 && init.color === void 0 && Boolean(this.effectPaint)) {
|
|
9387
9387
|
throw new PaintEditorError(`Ghost paint (${brush.name}) needs a single colour to subtract as it fades, so it can't paint with an effect; set a solid colour (set_color) or pass color to paint_stroke.`);
|
|
9388
9388
|
}
|
|
9389
9389
|
if (brush.behavior.multicolor.mode !== "off") throw new PaintEditorError(`Ghost paint (${brush.name}) needs a single colour to subtract as it fades, so it can't use multi-colour paint; set behavior.multicolor.mode to "off" (set_brush).`);
|
|
@@ -9418,9 +9418,9 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
9418
9418
|
if (why) throw new PaintEditorError(`Layer "${layer.name}" is a stroke layer. ${why}`);
|
|
9419
9419
|
}
|
|
9420
9420
|
if (_optionalChain([doc, 'access', _589 => _589.liveStrokes, 'optionalAccess', _590 => _590[layer.id]]) && _optionalChain([effect, 'optionalAccess', _591 => _591.source, 'access', _592 => _592.live])) {
|
|
9421
|
-
const key =
|
|
9421
|
+
const key = _chunkWZYRYYXNcjs.effectPaintKey.call(void 0, effect.source);
|
|
9422
9422
|
const { sources } = this.liveEffects(doc);
|
|
9423
|
-
if (!sources.some((p) =>
|
|
9423
|
+
if (!sources.some((p) => _chunkWZYRYYXNcjs.effectPaintKey.call(void 0, p) === key) && sources.length >= MAX_LIVE_EFFECT_SOURCES) {
|
|
9424
9424
|
throw new PaintEditorError(`The painting already plays ${MAX_LIVE_EFFECT_SOURCES} live effects, the most it can; paint with one of them, or set_effect_paint with live false to bake this one.`);
|
|
9425
9425
|
}
|
|
9426
9426
|
}
|
|
@@ -9446,14 +9446,14 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
9446
9446
|
if (doc !== this.doc) doc = { ...doc, layers: _chunkPVJMTLPJcjs.mapLayer.call(void 0, doc.layers, layer.id, () => moved), ..._optionalChain([doc, 'access', _600 => _600.thick, 'optionalAccess', _601 => _601[layer.id]]) ? { thick: moveThick(doc.thick) } : {} };
|
|
9447
9447
|
layer = moved;
|
|
9448
9448
|
}
|
|
9449
|
-
if (!this.wet.wetLayerIds().includes(layer.id) && this.wet.wetLayerIds().length >=
|
|
9450
|
-
throw new PaintEditorError(`At most ${
|
|
9449
|
+
if (!this.wet.wetLayerIds().includes(layer.id) && this.wet.wetLayerIds().length >= _chunk4BMRQSPBcjs.MAX_WET_LANES) {
|
|
9450
|
+
throw new PaintEditorError(`At most ${_chunk4BMRQSPBcjs.MAX_WET_LANES} layers can hold wet paint at once; dry one first (dry_paint).`);
|
|
9451
9451
|
}
|
|
9452
9452
|
this.beginWetOp();
|
|
9453
9453
|
const world = this.wet.ensureLane(layer.id, brush.wet.medium);
|
|
9454
9454
|
const id = layer.id;
|
|
9455
9455
|
const wetColor = init.color === void 0 ? _nullishCoalesce(this.ownColour(init.brushId), () => ( this.color)) : parseColor(init.color);
|
|
9456
|
-
const [r, g, b] =
|
|
9456
|
+
const [r, g, b] = _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, wetColor);
|
|
9457
9457
|
const wetGradient = this.strokeGradient(init, brush, wetColor);
|
|
9458
9458
|
const load = _nullishCoalesce(init.load, () => ( brushLoadForStroke(brush, this.mixerLoad, [r / 255, g / 255, b / 255])));
|
|
9459
9459
|
const seedW = _nullishCoalesce(init.seed, () => ( _chunk3K6HWEXZcjs.mix32.call(void 0, this.seedCounter * 2654435761 >>> 0) & 2147483647));
|
|
@@ -9461,7 +9461,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
9461
9461
|
const wetMask = init.maskStencils ? this.stencilSelection(init.maskStencils) : init.stencils !== false ? this.stencilSelection() : null;
|
|
9462
9462
|
const needWetFilm = Boolean(brush.wet.tool === "paint" && brush.iridescence || brush.wet.tool === "blot" && _optionalChain([doc, 'access', _602 => _602.thick, 'optionalAccess', _603 => _603[id], 'optionalAccess', _604 => _604.film, 'access', _605 => _605.tiles, 'access', _606 => _606.size]));
|
|
9463
9463
|
const wetFilm = needWetFilm ? new FilmBuffer((_nullishCoalesce(_optionalChain([doc, 'access', _607 => _607.thick, 'optionalAccess', _608 => _608[id]]), () => ( emptyThickChannels()))).film, layer.offset, wetMask) : null;
|
|
9464
|
-
const driver = new (0,
|
|
9464
|
+
const driver = new (0, _chunkWZYRYYXNcjs.WetStrokeDriver)({
|
|
9465
9465
|
world,
|
|
9466
9466
|
laneId: id,
|
|
9467
9467
|
brush,
|
|
@@ -9469,7 +9469,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
9469
9469
|
load,
|
|
9470
9470
|
grain: paperGrain(doc.paper),
|
|
9471
9471
|
paperDepth: doc.paper.depth,
|
|
9472
|
-
paperColor:
|
|
9472
|
+
paperColor: _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, doc.paper.color),
|
|
9473
9473
|
seed: seedW,
|
|
9474
9474
|
copies: [IDENTITY_AFFINE, ...copiesW].map(affineCopy),
|
|
9475
9475
|
mask: wetMask,
|
|
@@ -9743,7 +9743,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
9743
9743
|
if (!pv || pv.session !== s || pv.pending || !s.open) return;
|
|
9744
9744
|
const paint = this.pathStrokePaint(s);
|
|
9745
9745
|
if (!paint) return;
|
|
9746
|
-
const key =
|
|
9746
|
+
const key = _chunkWZYRYYXNcjs.effectPaintKey.call(void 0, paint);
|
|
9747
9747
|
if (key === pv.key) return;
|
|
9748
9748
|
pv.key = key;
|
|
9749
9749
|
const cached = this.effectPaintImage(paint);
|
|
@@ -9778,8 +9778,8 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
9778
9778
|
pathStrokePaint(s) {
|
|
9779
9779
|
const source = _optionalChain([s, 'access', _698 => _698.init, 'access', _699 => _699.effect, 'optionalAccess', _700 => _700.source]);
|
|
9780
9780
|
if (_optionalChain([source, 'optionalAccess', _701 => _701.map, 'optionalAccess', _702 => _702.by]) !== "path" || !s.points.length) return null;
|
|
9781
|
-
const paint =
|
|
9782
|
-
return
|
|
9781
|
+
const paint = _chunkWZYRYYXNcjs.withStrokePath.call(void 0, source, s.points, this.effectPathControls.get(source.effect));
|
|
9782
|
+
return _chunkWZYRYYXNcjs.effectPaintKey.call(void 0, paint) === _chunkWZYRYYXNcjs.effectPaintKey.call(void 0, source) ? null : paint;
|
|
9783
9783
|
}
|
|
9784
9784
|
/**
|
|
9785
9785
|
* Ends a hand-painted stroke with a path-mapped effect. Its whole path isn't known until now, so
|
|
@@ -9802,7 +9802,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
9802
9802
|
Object.assign(s.result, result);
|
|
9803
9803
|
this.notifySample("end", s, [], result.strokeId);
|
|
9804
9804
|
};
|
|
9805
|
-
const key =
|
|
9805
|
+
const key = _chunkWZYRYYXNcjs.effectPaintKey.call(void 0, paint);
|
|
9806
9806
|
if (_optionalChain([preview, 'optionalAccess', _703 => _703.landed, 'optionalAccess', _704 => _704.key]) === key) this.cacheEffectPaintImage(paint, preview.landed.pixels);
|
|
9807
9807
|
if (this.effectPaintImage(paint) || this.renderEffectPaintSync(paint)) {
|
|
9808
9808
|
finish();
|
|
@@ -10035,7 +10035,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
10035
10035
|
if (!_chunkPVJMTLPJcjs.findLayer.call(void 0, doc.layers, layerId)) throw new PaintEditorError(`Stroke "${s.id}" was painted on layer "${layerId}", which no longer exists; pass layerId to replay it elsewhere.`);
|
|
10036
10036
|
let load = s.load;
|
|
10037
10037
|
if (load && options.color !== void 0 && load.reservoir) {
|
|
10038
|
-
const [r, g, b] =
|
|
10038
|
+
const [r, g, b] = _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, options.color);
|
|
10039
10039
|
load = { ...load, reservoir: [r / 255, g / 255, b / 255] };
|
|
10040
10040
|
}
|
|
10041
10041
|
const paint = v.paint && options.color === void 0 ? { paint: v.paint } : {};
|
|
@@ -10549,7 +10549,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
10549
10549
|
wetState() {
|
|
10550
10550
|
const st = this.getState().wet;
|
|
10551
10551
|
const backend = this.wet.backend();
|
|
10552
|
-
return { ...st, layers: this.wet.wetLayerIds().map((id) => this.wet.info(id)), backend, message: _nullishCoalesce(_optionalChain([backend, 'optionalAccess', _761 => _761.message]), () => (
|
|
10552
|
+
return { ...st, layers: this.wet.wetLayerIds().map((id) => this.wet.info(id)), backend, message: _nullishCoalesce(_optionalChain([backend, 'optionalAccess', _761 => _761.message]), () => ( _chunk4BMRQSPBcjs.wetSupport.call(void 0, ).message)), engine: this.wet.engineInfo() };
|
|
10553
10553
|
}
|
|
10554
10554
|
/**
|
|
10555
10555
|
* Engine B, the WebGPU accelerator for large wet areas: whether it may run, its state (`off`,
|
|
@@ -10567,7 +10567,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
10567
10567
|
*/
|
|
10568
10568
|
async setWetEngine(options) {
|
|
10569
10569
|
const gpu = _nullishCoalesce(options.gpu, () => ( this.wet.gpuMode));
|
|
10570
|
-
if (!
|
|
10570
|
+
if (!_chunkWZYRYYXNcjs.WET_GPU_MODES.includes(gpu)) throw new PaintEditorError(`gpu must be ${_chunkWZYRYYXNcjs.WET_GPU_MODES.join(" or ")}, not ${JSON.stringify(gpu)}.`);
|
|
10571
10571
|
if (options.minTiles !== void 0 && !(Number.isInteger(options.minTiles) && options.minTiles >= 1 && options.minTiles <= 1024)) throw new PaintEditorError(`minTiles ${options.minTiles} is out of range; use 1..1024 tiles of 256 px.`);
|
|
10572
10572
|
this.wet.setGpu(gpu, options.minTiles);
|
|
10573
10573
|
this.emit();
|
|
@@ -10628,7 +10628,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
10628
10628
|
const amount = _nullishCoalesce(options.amount, () => ( 1));
|
|
10629
10629
|
if (!(amount > 0 && amount <= 1)) throw new PaintEditorError(`amount ${amount} is out of range; use above 0 up to 1.`);
|
|
10630
10630
|
const rect = _nullishCoalesce(this.checkRect(options.rect), () => ( { x: 0, y: 0, width: this.doc.canvas.width, height: this.doc.canvas.height }));
|
|
10631
|
-
if (!this.wet.wetLayerIds().includes(l.id) && this.wet.wetLayerIds().length >=
|
|
10631
|
+
if (!this.wet.wetLayerIds().includes(l.id) && this.wet.wetLayerIds().length >= _chunk4BMRQSPBcjs.MAX_WET_LANES) throw new PaintEditorError(`At most ${_chunk4BMRQSPBcjs.MAX_WET_LANES} layers can hold wet paint at once; dry one first (dry_paint).`);
|
|
10632
10632
|
const before = this.doc;
|
|
10633
10633
|
this.beginWetOp();
|
|
10634
10634
|
const world = this.wet.ensureLane(l.id);
|
|
@@ -10648,7 +10648,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
10648
10648
|
this.requireWetIdle("changing wet settings");
|
|
10649
10649
|
if (this.heldEvaporation.has(l.id)) {
|
|
10650
10650
|
const current = this.wet.info(l.id).params;
|
|
10651
|
-
const intended =
|
|
10651
|
+
const intended = _chunk4BMRQSPBcjs.normalizeWetParams.call(void 0, { ...current, evaporation: this.heldEvaporation.get(l.id), ...update });
|
|
10652
10652
|
this.heldEvaporation.set(l.id, intended.evaporation);
|
|
10653
10653
|
this.wet.setParams(l.id, { ...update, evaporation: 0 });
|
|
10654
10654
|
this.recordWetSetting({ kind: "params", layerId: l.id, data: intended });
|
|
@@ -11134,7 +11134,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
11134
11134
|
this.wet.reset();
|
|
11135
11135
|
if (!raw || typeof raw !== "object") return;
|
|
11136
11136
|
const r = raw;
|
|
11137
|
-
this.wet.setTilt(
|
|
11137
|
+
this.wet.setTilt(_chunk4BMRQSPBcjs.normalizeTilt.call(void 0, _nullishCoalesce(r.tilt, () => ( {}))));
|
|
11138
11138
|
if (r.layers && typeof r.layers === "object") {
|
|
11139
11139
|
for (const [id, v] of Object.entries(r.layers)) {
|
|
11140
11140
|
if (!v || typeof v !== "object") {
|
|
@@ -11145,8 +11145,8 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
11145
11145
|
const ghost = readWetGhost(x.ghost);
|
|
11146
11146
|
const livePatterns = x.livePatterns ? _chunkIFWLZZCWcjs.normalizeLivePatterns.call(void 0, x.livePatterns) : null;
|
|
11147
11147
|
this.wet.settings.set(id, {
|
|
11148
|
-
params:
|
|
11149
|
-
flow:
|
|
11148
|
+
params: _chunk4BMRQSPBcjs.normalizeWetParams.call(void 0, _nullishCoalesce(x.params, () => ( {}))),
|
|
11149
|
+
flow: _chunk4BMRQSPBcjs.normalizeFlow.call(void 0, _nullishCoalesce(x.flow, () => ( {}))),
|
|
11150
11150
|
...ghost ? { ghost } : {},
|
|
11151
11151
|
...livePatterns ? { livePatterns } : {}
|
|
11152
11152
|
});
|
|
@@ -11501,7 +11501,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
11501
11501
|
return next.type === "group" ? { ...next, children: toStandard(next.children) } : next;
|
|
11502
11502
|
});
|
|
11503
11503
|
const layers = toStandard(dried);
|
|
11504
|
-
const result =
|
|
11504
|
+
const result = _chunkWCC4NXWYcjs.exportPsd.call(void 0, { width, height, layers: [paperLayer, ...layers], merged, resolution: dpi });
|
|
11505
11505
|
for (const [mode, names] of changed) {
|
|
11506
11506
|
const label = _nullishCoalesce(_optionalChain([_chunk2VX55NFMcjs.BLEND_MODES, 'access', _821 => _821.find, 'call', _822 => _822((m) => m.id === mode), 'optionalAccess', _823 => _823.label]), () => ( mode));
|
|
11507
11507
|
const std = _nullishCoalesce(_optionalChain([_chunk2VX55NFMcjs.BLEND_MODES, 'access', _824 => _824.find, 'call', _825 => _825((m) => m.id === _chunk2VX55NFMcjs.standardBlendMode.call(void 0, mode)), 'optionalAccess', _826 => _826.label]), () => ( _chunk2VX55NFMcjs.standardBlendMode.call(void 0, mode)));
|
|
@@ -12039,8 +12039,8 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
12039
12039
|
}
|
|
12040
12040
|
if (update.paint !== void 0) {
|
|
12041
12041
|
if (update.paint === null) delete next.paint;
|
|
12042
|
-
else if (
|
|
12043
|
-
const ep = _optionalChain([update, 'access', _867 => _867.paint, 'access', _868 => _868.map, 'optionalAccess', _869 => _869.by]) === "path" ?
|
|
12042
|
+
else if (_chunkWZYRYYXNcjs.isPaintEffectPaint.call(void 0, update.paint)) {
|
|
12043
|
+
const ep = _optionalChain([update, 'access', _867 => _867.paint, 'access', _868 => _868.map, 'optionalAccess', _869 => _869.by]) === "path" ? _chunkWZYRYYXNcjs.withStrokePath.call(void 0, update.paint, next.points, this.effectPathControls.get(update.paint.effect)) : update.paint;
|
|
12044
12044
|
if (!this.effectPaintImage(ep) && !this.renderEffectPaintSync(ep)) throw new PaintEditorError(`The effect "${update.paint.effect}" is not rendered yet; render it first (prepareEffectPaints; the update_stroke tool does this).`);
|
|
12045
12045
|
next.paint = JSON.parse(JSON.stringify(ep));
|
|
12046
12046
|
} else {
|
|
@@ -12052,7 +12052,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
12052
12052
|
} else next.paint = JSON.parse(JSON.stringify(p));
|
|
12053
12053
|
}
|
|
12054
12054
|
}
|
|
12055
|
-
const rgb =
|
|
12055
|
+
const rgb = _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, next.color).map((v) => v / 255);
|
|
12056
12056
|
const load = brushLoadForStroke(brush, _chunkIFWLZZCWcjs.EMPTY_MIXER_LOAD, rgb);
|
|
12057
12057
|
if (load.reservoir || load.pickup) next.load = load;
|
|
12058
12058
|
else delete next.load;
|
|
@@ -12075,7 +12075,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
12075
12075
|
const points = this.checkPoints(edit.points);
|
|
12076
12076
|
next = { ...was, points: points.map((p) => ({ ...p })) };
|
|
12077
12077
|
if (_optionalChain([next, 'access', _870 => _870.paint, 'optionalAccess', _871 => _871.type]) === "effect" && _optionalChain([next, 'access', _872 => _872.paint, 'access', _873 => _873.map, 'optionalAccess', _874 => _874.by]) === "path") {
|
|
12078
|
-
next.paint =
|
|
12078
|
+
next.paint = _chunkWZYRYYXNcjs.withStrokePath.call(void 0, next.paint, next.points, this.effectPathControls.get(next.paint.effect));
|
|
12079
12079
|
}
|
|
12080
12080
|
} else {
|
|
12081
12081
|
next = varyStroke(was, this.strokeTransform(was, edit.transform), {});
|
|
@@ -12283,7 +12283,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
|
|
|
12283
12283
|
const live = strokes.filter(isLiveEffect);
|
|
12284
12284
|
if (!isPixelLayer(layer) || !live.length) continue;
|
|
12285
12285
|
layers.push({ layer, strokes });
|
|
12286
|
-
for (const st of live) sources.set(
|
|
12286
|
+
for (const st of live) sources.set(_chunkWZYRYYXNcjs.effectPaintKey.call(void 0, st.paint), st.paint);
|
|
12287
12287
|
}
|
|
12288
12288
|
return { layers, sources: [...sources.values()] };
|
|
12289
12289
|
}
|
|
@@ -14563,7 +14563,7 @@ function createPaintWetTools(c) {
|
|
|
14563
14563
|
type: "object",
|
|
14564
14564
|
properties: {
|
|
14565
14565
|
layerId: LAYER_ID2,
|
|
14566
|
-
kind: { type: "string", enum: [...
|
|
14566
|
+
kind: { type: "string", enum: [..._chunk4BMRQSPBcjs.WET_FLOW_KINDS], description: "none, linear, swirl, radial or turbulent." },
|
|
14567
14567
|
strength: UNIT("How hard it pushes, 0..1 (1 is about a 25\xB0 tilt; default 0.5)."),
|
|
14568
14568
|
angle: { type: "number", minimum: -360, maximum: 360, description: "linear: direction in degrees clockwise from canvas down (default 0)." },
|
|
14569
14569
|
center: {
|
|
@@ -15258,7 +15258,7 @@ function createMutationTools(c, options = {}) {
|
|
|
15258
15258
|
const base = s.brushId ? c.getBrush(s.brushId) : c.getState().brush;
|
|
15259
15259
|
const brush = s.brush ? c.brushChanges(s.brush, s.brushId) : void 0;
|
|
15260
15260
|
if (base) {
|
|
15261
|
-
const refs =
|
|
15261
|
+
const refs = _chunkWZYRYYXNcjs.brushStickerRefs.call(void 0, _chunkHRUK5TFWcjs.normalizePaintBrush.call(void 0, { ..._nullishCoalesce(brush, () => ( {})), id: base.id }, base));
|
|
15262
15262
|
if (refs.length) await c.prepareStickers(refs);
|
|
15263
15263
|
}
|
|
15264
15264
|
strokes.push({
|
|
@@ -15580,8 +15580,8 @@ function createPaintEditorToolProvider(controller, options = {}) {
|
|
|
15580
15580
|
inputSchema: EMPTY4,
|
|
15581
15581
|
annotations: { title: "List papers", ...READ9 },
|
|
15582
15582
|
handler: () => ({
|
|
15583
|
-
papers:
|
|
15584
|
-
families: [...
|
|
15583
|
+
papers: _chunkWZYRYYXNcjs.PAPER_LIBRARY.map((p) => ({ id: p.preset, name: p.name, family: p.family, pattern: p.pattern, color: p.color, depth: p.depth, absorption: p.absorption, permeability: p.permeability, roughness: p.roughness })),
|
|
15584
|
+
families: [..._chunkWZYRYYXNcjs.PAPER_FAMILIES],
|
|
15585
15585
|
patterns: [..._chunkIFWLZZCWcjs.GRAIN_PATTERNS]
|
|
15586
15586
|
})
|
|
15587
15587
|
});
|
|
@@ -16005,7 +16005,7 @@ function createPaintEditorToolProvider(controller, options = {}) {
|
|
|
16005
16005
|
const base = a.brushId ? c.getBrush(a.brushId) : c.getState().brush;
|
|
16006
16006
|
const brush = a.brush ? c.brushChanges(a.brush, a.brushId) : void 0;
|
|
16007
16007
|
if (base) {
|
|
16008
|
-
const refs =
|
|
16008
|
+
const refs = _chunkWZYRYYXNcjs.brushStickerRefs.call(void 0, _chunkHRUK5TFWcjs.normalizePaintBrush.call(void 0, { ..._nullishCoalesce(brush, () => ( {})), id: base.id }, base));
|
|
16009
16009
|
if (refs.length) await c.prepareStickers(refs);
|
|
16010
16010
|
}
|
|
16011
16011
|
const stroke = { points: a.points, layerId: a.layerId, brushId: a.brushId, brush, color: a.color, paint: a.paint, seed: a.seed, snapToPerspective: a.snapToPerspective };
|
|
@@ -16042,7 +16042,7 @@ function createPaintEditorToolProvider(controller, options = {}) {
|
|
|
16042
16042
|
const base = a.brushId ? c.getBrush(a.brushId) : c.getState().brush;
|
|
16043
16043
|
const brush = a.brush ? c.brushChanges(a.brush, a.brushId) : void 0;
|
|
16044
16044
|
if (base) {
|
|
16045
|
-
const refs =
|
|
16045
|
+
const refs = _chunkWZYRYYXNcjs.brushStickerRefs.call(void 0, _chunkHRUK5TFWcjs.normalizePaintBrush.call(void 0, { ..._nullishCoalesce(brush, () => ( {})), id: base.id }, base));
|
|
16046
16046
|
if (refs.length) await c.prepareStickers(refs);
|
|
16047
16047
|
}
|
|
16048
16048
|
const path = options.origin && typeof a.path === "string" && a.path.trim() ? _chunkGF2RBSDMcjs.bezierPathToSvg.call(void 0, a.path, { offset: { x: -options.origin.x, y: -options.origin.y } }) : a.path;
|
|
@@ -16411,7 +16411,7 @@ function createPaintEditorToolProvider(controller, options = {}) {
|
|
|
16411
16411
|
tools.push(..._chunkUQXULAMQcjs.createPigmentTools.call(void 0, ));
|
|
16412
16412
|
tools.push(..._chunkPFHJS4HEcjs.createStickerTools.call(void 0, { provider: () => c.stickersProvider }));
|
|
16413
16413
|
tools.push(
|
|
16414
|
-
...
|
|
16414
|
+
..._chunkWCC4NXWYcjs.createLayerEffectTools.call(void 0,
|
|
16415
16415
|
{
|
|
16416
16416
|
requireLayer: (id) => void c.getLayerEffects(id),
|
|
16417
16417
|
getLayerEffects: (id) => c.getLayerEffects(id),
|
|
@@ -16469,7 +16469,7 @@ function strokeSummary(s, withPoints, live) {
|
|
|
16469
16469
|
}
|
|
16470
16470
|
|
|
16471
16471
|
// src/paint-editor/brush-library-tools.ts
|
|
16472
|
-
function paintBrushPreviewRenderer(paper = () =>
|
|
16472
|
+
function paintBrushPreviewRenderer(paper = () => _chunkWZYRYYXNcjs.DEFAULT_PAPER, options = {}) {
|
|
16473
16473
|
const sources = new BrushSourceArtCache();
|
|
16474
16474
|
const draw = (brush, { width, height, color }) => {
|
|
16475
16475
|
const stickers = _optionalChain([options, 'access', _983 => _983.stampArt, 'optionalCall', _984 => _984()]);
|
|
@@ -17675,7 +17675,7 @@ function toolList(provider) {
|
|
|
17675
17675
|
function uiTables() {
|
|
17676
17676
|
return {
|
|
17677
17677
|
tools: PAINT_TOOLS,
|
|
17678
|
-
brushOptions:
|
|
17678
|
+
brushOptions: _chunkWCC4NXWYcjs.BRUSH_OPTION_CONTROLS,
|
|
17679
17679
|
blendMenu: BLEND_MENU_GROUPS,
|
|
17680
17680
|
layerEffects: _chunkPVJMTLPJcjs.LAYER_EFFECT_MENU.map(({ kind, label }) => ({ kind, label, controls: _chunkPVJMTLPJcjs.layerEffectControls.call(void 0, _chunkPVJMTLPJcjs.defaultLayerEffect.call(void 0, kind, kind)) })),
|
|
17681
17681
|
sliders: { paper: PAPER_SLIDERS, wet: WET_PARAM_SLIDERS, wetTilt: WET_TILT_SLIDERS, wetSpeed: WET_SPEED_SLIDER, light: LIGHT_SLIDERS, uvLight: UV_LIGHT_SLIDERS, viewTilt: VIEW_TILT_SLIDERS, ghost: _chunkJVFGK3DKcjs.GHOST_SLIDERS, mutation: _chunkJVFGK3DKcjs.MUTATION_SLIDERS, livePatterns: LIVE_PATTERN_SLIDERS, stroke: STROKE_SLIDERS, sticker: STICKER_SLIDERS, magnet: MAGNET_SLIDERS },
|
|
@@ -18235,4 +18235,4 @@ function createPaintConformanceHost(setup, options) {
|
|
|
18235
18235
|
|
|
18236
18236
|
|
|
18237
18237
|
|
|
18238
|
-
exports.BACKLIGHT_SPILL = BACKLIGHT_SPILL; exports.BLEND_MENU_GROUPS = BLEND_MENU_GROUPS; exports.BLEND_MODES = _chunk2VX55NFMcjs.BLEND_MODES; exports.BRUSH_ID = _chunkHRUK5TFWcjs.BRUSH_ID; exports.BRUSH_ROTATIONS = _chunkHRUK5TFWcjs.BRUSH_ROTATIONS; exports.BRUSH_SLIDERS = _chunkJVFGK3DKcjs.BRUSH_SLIDERS; exports.BUILTIN_BRUSHES = _chunkHRUK5TFWcjs.BUILTIN_BRUSHES; exports.BristleStroke = BristleStroke; exports.BrushSourceArtCache = BrushSourceArtCache; exports.DAB_FLIPS = _chunkHRUK5TFWcjs.DAB_FLIPS; exports.DEFAULT_BACKLIGHT_COLOR = DEFAULT_BACKLIGHT_COLOR; exports.DEFAULT_BEHAVIOR = _chunkHRUK5TFWcjs.DEFAULT_BEHAVIOR; exports.DEFAULT_BRISTLE = _chunkHRUK5TFWcjs.DEFAULT_BRISTLE; exports.DEFAULT_BRUSH_ID = _chunkHRUK5TFWcjs.DEFAULT_BRUSH_ID; exports.DEFAULT_DPI = DEFAULT_DPI; exports.DEFAULT_DYNAMICS = _chunkHRUK5TFWcjs.DEFAULT_DYNAMICS; exports.DEFAULT_FERRO = _chunkHRUK5TFWcjs.DEFAULT_FERRO; exports.DEFAULT_FLOW = _chunkMITQGHN3cjs.DEFAULT_FLOW; exports.DEFAULT_FLUORESCENCE = _chunkHRUK5TFWcjs.DEFAULT_FLUORESCENCE; exports.DEFAULT_GHOST = _chunkHRUK5TFWcjs.DEFAULT_GHOST; exports.DEFAULT_IMPASTO = _chunkHRUK5TFWcjs.DEFAULT_IMPASTO; exports.DEFAULT_IRIDESCENCE = _chunkHRUK5TFWcjs.DEFAULT_IRIDESCENCE; exports.DEFAULT_LIGHT = _chunkHRUK5TFWcjs.DEFAULT_LIGHT; exports.DEFAULT_LIGHTING = DEFAULT_LIGHTING; exports.DEFAULT_LIVE_PATTERNS = _chunkIFWLZZCWcjs.DEFAULT_LIVE_PATTERNS; exports.DEFAULT_MAGNET_RADIUS = DEFAULT_MAGNET_RADIUS; exports.DEFAULT_MAGNET_STRENGTH = DEFAULT_MAGNET_STRENGTH; exports.DEFAULT_MULTI_COLOR = _chunkHRUK5TFWcjs.DEFAULT_MULTI_COLOR; exports.DEFAULT_MUTATION = _chunkHRUK5TFWcjs.DEFAULT_MUTATION; exports.DEFAULT_MUTATION_RATES = DEFAULT_MUTATION_RATES; exports.DEFAULT_PAINT_GRADIENT = _chunkIFWLZZCWcjs.DEFAULT_PAINT_GRADIENT; exports.DEFAULT_PAINT_GRADIENT_MAPPING = _chunkIFWLZZCWcjs.DEFAULT_PAINT_GRADIENT_MAPPING; exports.DEFAULT_PAPER = _chunkPEQWARCPcjs.DEFAULT_PAPER; exports.DEFAULT_PARTICLE = _chunkHRUK5TFWcjs.DEFAULT_PARTICLE; exports.DEFAULT_SPRAY = _chunkHRUK5TFWcjs.DEFAULT_SPRAY; exports.DEFAULT_STICKER = _chunkHRUK5TFWcjs.DEFAULT_STICKER; exports.DEFAULT_SWATCHES = DEFAULT_SWATCHES; exports.DEFAULT_THERMOCHROMIC = _chunkHRUK5TFWcjs.DEFAULT_THERMOCHROMIC; exports.DEFAULT_TIP_GRAIN = _chunkHRUK5TFWcjs.DEFAULT_TIP_GRAIN; exports.DEFAULT_UV_LIGHT = DEFAULT_UV_LIGHT; exports.DEFAULT_VIEW = DEFAULT_VIEW; exports.DEFAULT_VIEW_TILT = DEFAULT_VIEW_TILT; exports.DEFAULT_WET_BRUSH = _chunkHRUK5TFWcjs.DEFAULT_WET_BRUSH; exports.DEFAULT_WET_PARAMS = _chunkMITQGHN3cjs.DEFAULT_WET_PARAMS; exports.DOT_ROTATIONS = _chunkHRUK5TFWcjs.DOT_ROTATIONS; exports.DOT_ROTATION_LABELS = DOT_ROTATION_LABELS; exports.DOT_TEXTURE_ORDERS = _chunkHRUK5TFWcjs.DOT_TEXTURE_ORDERS; exports.DOT_TEXTURE_ORDER_LABELS = DOT_TEXTURE_ORDER_LABELS; exports.DryStroke = _chunkPEQWARCPcjs.DryStroke; exports.EFFECT_MAP_REPEATS = _chunkPEQWARCPcjs.EFFECT_MAP_REPEATS; exports.EFFECT_STRIP_HEIGHT = _chunkPEQWARCPcjs.EFFECT_STRIP_HEIGHT; exports.EVOLUTION_BRUSH_FACETS = EVOLUTION_BRUSH_FACETS; exports.EVOLUTION_MUTATION_SCHEMA = EVOLUTION_MUTATION_SCHEMA; exports.EVOLUTION_SLIDERS = EVOLUTION_SLIDERS; exports.EXTENSION_ASSET_REF = EXTENSION_ASSET_REF; exports.FERRO_CARRIER_RGB = FERRO_CARRIER_RGB; exports.FERRO_DEFAULT_GLOSS = FERRO_DEFAULT_GLOSS; exports.FERRO_DEFAULT_METALLIC = FERRO_DEFAULT_METALLIC; exports.FERRO_DEFAULT_RIM = FERRO_DEFAULT_RIM; exports.FilmBuffer = FilmBuffer; exports.GHOST_SLIDERS = _chunkJVFGK3DKcjs.GHOST_SLIDERS; exports.GHOST_TRIGGERS = _chunkHRUK5TFWcjs.GHOST_TRIGGERS; exports.GPU_LEAD = _chunkPEQWARCPcjs.GPU_LEAD; exports.GRAIN_PATTERNS = _chunkIFWLZZCWcjs.GRAIN_PATTERNS; exports.GRAIN_TILE = _chunkIFWLZZCWcjs.GRAIN_TILE; exports.HARMONY_KINDS = _chunkI3Y2Q3PMcjs.HARMONY_KINDS; exports.HEAT_COOLING = HEAT_COOLING; exports.HEAT_DIFFUSION = HEAT_DIFFUSION; exports.HEAT_DRY_THRESHOLD = HEAT_DRY_THRESHOLD; exports.HEAT_SCALE = HEAT_SCALE; exports.IDENTITY_AFFINE = IDENTITY_AFFINE; exports.IDENTITY_COPY = _chunkPEQWARCPcjs.IDENTITY_COPY; exports.IMPASTO_TOOLS = _chunkHRUK5TFWcjs.IMPASTO_TOOLS; exports.IMPASTO_TOOL_LABELS = IMPASTO_TOOL_LABELS; exports.IRIDESCENCE_SLIDERS = _chunkJVFGK3DKcjs.IRIDESCENCE_SLIDERS; exports.LIGHT_SLIDERS = LIGHT_SLIDERS; exports.LIVE_PATTERN_KINDS = _chunkIFWLZZCWcjs.LIVE_PATTERN_KINDS; exports.LIVE_PATTERN_LABELS = LIVE_PATTERN_LABELS; exports.LIVE_PATTERN_PRESETS = _chunkIFWLZZCWcjs.LIVE_PATTERN_PRESETS; exports.LIVE_PATTERN_SCHEMA = LIVE_PATTERN_SCHEMA; exports.LIVE_PATTERN_SLIDERS = LIVE_PATTERN_SLIDERS; exports.LIVE_STROKE_ENGINES = LIVE_STROKE_ENGINES; exports.LitCache = LitCache; exports.MAGNET_SLIDERS = MAGNET_SLIDERS; exports.MAX_BRUSH_SIZE = _chunkIFWLZZCWcjs.MAX_BRUSH_SIZE; exports.MAX_CANVAS_SIDE = MAX_CANVAS_SIDE; exports.MAX_COORDINATE = MAX_COORDINATE; exports.MAX_DOT_TEXTURES = _chunkHRUK5TFWcjs.MAX_DOT_TEXTURES; exports.MAX_EFFECT_PATH_POINTS = _chunkPEQWARCPcjs.MAX_EFFECT_PATH_POINTS; exports.MAX_IMAGE_SIDE = MAX_IMAGE_SIDE; exports.MAX_LIVE_EFFECT_SOURCES = MAX_LIVE_EFFECT_SOURCES; exports.MAX_PATH_SAMPLES = MAX_PATH_SAMPLES; exports.MAX_STICKER_STAMPS = _chunkHRUK5TFWcjs.MAX_STICKER_STAMPS; exports.MAX_ZOOM = MAX_ZOOM; exports.MIN_CANVAS_SIDE = MIN_CANVAS_SIDE; exports.MIN_ZOOM = MIN_ZOOM; exports.MIXING_PAD_HEIGHT = MIXING_PAD_HEIGHT; exports.MIXING_PAD_WIDTH = MIXING_PAD_WIDTH; exports.MULTI_COLOR_MODES = _chunkHRUK5TFWcjs.MULTI_COLOR_MODES; exports.MUTATION_SLIDERS = _chunkJVFGK3DKcjs.MUTATION_SLIDERS; exports.MixingPad = MixingPad; exports.PAD_SAMPLE_SIZES = PAD_SAMPLE_SIZES; exports.PAINTERLY_BLEND_MODES = _chunk2VX55NFMcjs.PAINTERLY_BLEND_MODES; exports.PAINT_BRUSH_CATEGORIES = _chunkHRUK5TFWcjs.PAINT_BRUSH_CATEGORIES; exports.PAINT_BRUSH_ENGINES = _chunkHRUK5TFWcjs.PAINT_BRUSH_ENGINES; exports.PAINT_COLOR_JSON_SCHEMA = _chunkIFWLZZCWcjs.PAINT_COLOR_JSON_SCHEMA; exports.PAINT_CONTRACT_FORMAT_VERSION = PAINT_CONTRACT_FORMAT_VERSION; exports.PAINT_DOCUMENT_JSON_SCHEMA = PAINT_DOCUMENT_JSON_SCHEMA; exports.PAINT_EFFECT_PLACES = PAINT_EFFECT_PLACES; exports.PAINT_FORMAT = PAINT_FORMAT; exports.PAINT_GRADIENT_FULL_SPEED = _chunkIFWLZZCWcjs.PAINT_GRADIENT_FULL_SPEED; exports.PAINT_GRADIENT_JSON_SCHEMA = _chunkIFWLZZCWcjs.PAINT_GRADIENT_JSON_SCHEMA; exports.PAINT_GRADIENT_KIT = _chunkIFWLZZCWcjs.PAINT_GRADIENT_KIT; exports.PAINT_GRADIENT_MAPPINGS = _chunkIFWLZZCWcjs.PAINT_GRADIENT_MAPPINGS; exports.PAINT_GRADIENT_MAPPING_LABELS = _chunkIFWLZZCWcjs.PAINT_GRADIENT_MAPPING_LABELS; exports.PAINT_GRADIENT_PRESETS = _chunkIFWLZZCWcjs.PAINT_GRADIENT_PRESETS; exports.PAINT_GRADIENT_REPEATS = _chunkIFWLZZCWcjs.PAINT_GRADIENT_REPEATS; exports.PAINT_GRADIENT_REPEAT_LABELS = _chunkIFWLZZCWcjs.PAINT_GRADIENT_REPEAT_LABELS; exports.PAINT_GRADIENT_SPACES = _chunkIFWLZZCWcjs.PAINT_GRADIENT_SPACES; exports.PAINT_GRADIENT_SPACE_LABELS = _chunkIFWLZZCWcjs.PAINT_GRADIENT_SPACE_LABELS; exports.PAINT_SCHEMA_VERSION = PAINT_SCHEMA_VERSION; exports.PAINT_SHORTCUTS = PAINT_SHORTCUTS; exports.PAINT_SOURCE_JSON_SCHEMA = _chunkIFWLZZCWcjs.PAINT_SOURCE_JSON_SCHEMA; exports.PAINT_TARGET = PAINT_TARGET; exports.PAINT_TOOLS = PAINT_TOOLS; exports.PAPER_EFFECT_BLENDS = PAPER_EFFECT_BLENDS; exports.PAPER_EFFECT_NODE_ID = PAPER_EFFECT_NODE_ID; exports.PAPER_FAMILIES = _chunkPEQWARCPcjs.PAPER_FAMILIES; exports.PAPER_LIBRARY = _chunkPEQWARCPcjs.PAPER_LIBRARY; exports.PAPER_NODE_ID = PAPER_NODE_ID; exports.PAPER_SLIDERS = PAPER_SLIDERS; exports.PAPER_TARGET = PAPER_TARGET; exports.PARTICLE_KINDS = _chunkHRUK5TFWcjs.PARTICLE_KINDS; exports.PARTICLE_KIND_LABELS = PARTICLE_KIND_LABELS; exports.PARTICLE_RENDERS = _chunkHRUK5TFWcjs.PARTICLE_RENDERS; exports.PARTICLE_RENDER_LABELS = PARTICLE_RENDER_LABELS; exports.PATH_STROKE_TAPERS = PATH_STROKE_TAPERS; exports.PaintCanvasPresenter = PaintCanvasPresenter; exports.PaintDabStroke = _chunkPEQWARCPcjs.PaintDabStroke; exports.PaintDirector = PaintDirector; exports.PaintDocumentError = PaintDocumentError; exports.PaintEditorController = PaintEditorController; exports.PaintEditorError = PaintEditorError; exports.PaintEffectsRenderer = PaintEffectsRenderer; exports.PaintGesture = PaintGesture; exports.PaintGradientSampler = _chunkIFWLZZCWcjs.PaintGradientSampler; exports.PaintPresence = PaintPresence; exports.PaintSourceError = _chunkIFWLZZCWcjs.PaintSourceError; exports.PaintStrokeSession = PaintStrokeSession; exports.PaintWetLayers = _chunkPEQWARCPcjs.PaintWetLayers; exports.PaperGrain = _chunkIFWLZZCWcjs.PaperGrain; exports.ParticleStroke = ParticleStroke; exports.PenDabWalker = _chunkPEQWARCPcjs.PenDabWalker; exports.PenSmoother = _chunkPEQWARCPcjs.PenSmoother; exports.PerspectiveSnapper = PerspectiveSnapper; exports.RIBBON_PAIRS = _chunkHRUK5TFWcjs.RIBBON_PAIRS; exports.RIBBON_PAIR_LABELS = RIBBON_PAIR_LABELS; exports.SNAP_DECIDE_DISTANCE = SNAP_DECIDE_DISTANCE; exports.STAMP_KINDS = _chunkRDFHWAHLcjs.STAMP_KINDS; exports.STAMP_LABELS = STAMP_LABELS; exports.STENCIL_KINDS = STENCIL_KINDS; exports.STENCIL_SHAPES = STENCIL_SHAPES; exports.STICKER_ART_SIZE = STICKER_ART_SIZE; exports.STICKER_SLIDERS = STICKER_SLIDERS; exports.STROKE_SLIDERS = STROKE_SLIDERS; exports.SYMMETRY_MODES = SYMMETRY_MODES; exports.StencilSnapper = StencilSnapper; exports.StickerArtCache = StickerArtCache; exports.StickerBrowser = _chunk3VHH6V67cjs.StickerBrowser; exports.StickerSpray = StickerSpray; exports.TIP_GRAIN_MODES = _chunkHRUK5TFWcjs.TIP_GRAIN_MODES; exports.TRACING_NODE_ID = TRACING_NODE_ID; exports.ThermoCache = ThermoCache; exports.ThickStrokeDriver = ThickStrokeDriver; exports.TileableNoise = _chunk3K6HWEXZcjs.TileableNoise; exports.TipGrain = _chunkPEQWARCPcjs.TipGrain; exports.UV_LIGHT_SLIDERS = UV_LIGHT_SLIDERS; exports.UvCache = UvCache; exports.VIEW_TILT_SLIDERS = VIEW_TILT_SLIDERS; exports.WET_FLOW_KINDS = _chunkMITQGHN3cjs.WET_FLOW_KINDS; exports.WET_GPU_MODES = _chunkPEQWARCPcjs.WET_GPU_MODES; exports.WET_GPU_OPTIONS = WET_GPU_OPTIONS; exports.WET_MEDIA = _chunkHRUK5TFWcjs.WET_MEDIA; exports.WET_MEDIUM_LABELS = WET_MEDIUM_LABELS; exports.WET_MEDIUM_PARAMS = _chunkPEQWARCPcjs.WET_MEDIUM_PARAMS; exports.WET_PARAM_KEYS = _chunkMITQGHN3cjs.WET_PARAM_KEYS; exports.WET_PARAM_SCHEMA = WET_PARAM_SCHEMA; exports.WET_PARAM_SLIDERS = WET_PARAM_SLIDERS; exports.WET_SPEED_SLIDER = WET_SPEED_SLIDER; exports.WET_TILT_SLIDERS = WET_TILT_SLIDERS; exports.WET_TOOLS = _chunkHRUK5TFWcjs.WET_TOOLS; exports.WET_TOOL_LABELS = WET_TOOL_LABELS; exports.WetStrokeDriver = _chunkPEQWARCPcjs.WetStrokeDriver; exports.addPaintGradientStop = _chunkIFWLZZCWcjs.addPaintGradientStop; exports.addPolygonArea = addPolygonArea; exports.advanceHeatField = advanceHeatField; exports.advectFerro = advectFerro; exports.affineCopy = affineCopy; exports.applyAffine = applyAffine; exports.backlightOf = backlightOf; exports.bakeFerroIntoThick = bakeFerroIntoThick; exports.brushEngineControls = _chunkJVFGK3DKcjs.brushEngineControls; exports.brushLoadColor = brushLoadColor; exports.brushLoadForStroke = brushLoadForStroke; exports.brushTakesPaint = _chunkHRUK5TFWcjs.brushTakesPaint; exports.brushToJSON = _chunkHRUK5TFWcjs.brushToJSON; exports.buildTimeLapse = buildTimeLapse; exports.checkEvolutionStrokes = checkEvolutionStrokes; exports.checkPaintEffectPlace = checkPaintEffectPlace; exports.clearHeatField = clearHeatField; exports.cloneHeatField = cloneHeatField; exports.clonePaper = _chunkPEQWARCPcjs.clonePaper; exports.colorHarmony = colorHarmony2; exports.composeAffine = composeAffine; exports.computeUvSpill = computeUvSpill; exports.contactSheet = contactSheet; exports.createEvolutionTools = createEvolutionTools; exports.createFerroTools = createFerroTools; exports.createHeatField = createHeatField; exports.createMutationTools = createMutationTools; exports.createPaintAgentStrokes = createPaintAgentStrokes; exports.createPaintBrushLibraryToolProvider = createPaintBrushLibraryToolProvider; exports.createPaintChangeFeed = createPaintChangeFeed; exports.createPaintCompositor = createPaintCompositor; exports.createPaintConformanceHost = createPaintConformanceHost; exports.createPaintDocument = createPaintDocument; exports.createPaintEditorDocument = createPaintEditorDocument; exports.createPaintEditorToolProvider = createPaintEditorToolProvider; exports.createPaintEffectsToolProvider = createPaintEffectsToolProvider; exports.createPaintEvolutionToolProvider = createPaintEvolutionToolProvider; exports.createPaintEvolutionTools = createPaintEvolutionTools; exports.createPaintLayer = createPaintLayer; exports.createPaintProposalToolProvider = createPaintProposalToolProvider; exports.createPaintProposals = createPaintProposals; exports.createPaintReplayTools = createPaintReplayTools; exports.createPaintStickerTools = createPaintStickerTools; exports.createPaintThickTools = createPaintThickTools; exports.createPaintWetTools = createPaintWetTools; exports.crossoverBrushes = crossoverBrushes; exports.crossoverGenomes = crossoverGenomes; exports.crossoverStrokes = crossoverStrokes; exports.decodeImageBlob = decodeImageBlob; exports.defaultGuides = defaultGuides; exports.defaultImageEncoder = defaultImageEncoder; exports.defaultStickerRasterizer = defaultStickerRasterizer; exports.describeGenomeDiff = describeGenomeDiff; exports.deserializePaintDocument = deserializePaintDocument; exports.deserializePaintDocumentAsync = deserializePaintDocumentAsync; exports.deviceOrientationToViewTilt = deviceOrientationToViewTilt; exports.documentExtensions = documentExtensions; exports.documentToScreen = documentToScreen; exports.downloadBytes = downloadBytes; exports.downsampleRgba = downsampleRgba; exports.drawSticker = drawSticker; exports.drawWaterOverlay = drawWaterOverlay; exports.driftBrushFacets = driftBrushFacets; exports.driftColorOklch = driftColorOklch; exports.effectDabField = _chunkPEQWARCPcjs.effectDabField; exports.effectLayersToJSON = effectLayersToJSON; exports.effectPaintKey = _chunkPEQWARCPcjs.effectPaintKey; exports.effectPaintSize = _chunkPEQWARCPcjs.effectPaintSize; exports.emptiedLayers = emptiedLayers; exports.emptyFerro = emptyFerro; exports.emptyFluor = emptyFluor; exports.emptyThermo = emptyThermo; exports.emptyThickChannels = emptyThickChannels; exports.engineBrushSourceIds = engineBrushSourceIds; exports.exportProposalContactSheetPng = exportProposalContactSheetPng; exports.ferroCacheKey = ferroCacheKey; exports.ferroFieldAt = ferroFieldAt; exports.ferroFromJSON = ferroFromJSON; exports.ferroInfo = ferroInfo; exports.ferroSpikeHeightAt = ferroSpikeHeightAt; exports.ferroToJSON = ferroToJSON; exports.ferroToShadow = ferroToShadow; exports.ferroTwinBrush = ferroTwinBrush; exports.fillRegionMask = _chunkYH6SKC7Pcjs.fillRegionMask; exports.finalizeThermoStroke = finalizeThermoStroke; exports.findUnfilledRegionsMask = _chunkYH6SKC7Pcjs.findUnfilledRegionsMask; exports.fitZoom = fitZoom; exports.fluorFromJSON = fluorFromJSON; exports.fluorToJSON = fluorToJSON; exports.fluorTwinBrush = fluorTwinBrush; exports.grainCatch = _chunkIFWLZZCWcjs.grainCatch; exports.grainHeights = _chunkIFWLZZCWcjs.grainHeights; exports.guideOverlay = guideOverlay; exports.handlePaintShortcut = handlePaintShortcut; exports.hasThickChannels = hasThickChannels; exports.hash2 = _chunk3K6HWEXZcjs.hash2; exports.heatFromJSON = heatFromJSON; exports.heatStats = heatStats; exports.heatToJSON = heatToJSON; exports.hexToPaintRgb = _chunkIFWLZZCWcjs.hexToPaintRgb; exports.hexToRgb8 = _chunkPEQWARCPcjs.hexToRgb8; exports.hotCellsBounds = hotCellsBounds; exports.hslToRgb = hslToRgb; exports.hsvToRgb = hsvToRgb; exports.hueToWheel = _chunkI3Y2Q3PMcjs.hueToWheel; exports.inferEffectPathControl = _chunkPEQWARCPcjs.inferEffectPathControl; exports.invertAffine = invertAffine; exports.isBlendMode = _chunk2VX55NFMcjs.isBlendMode; exports.isGradientPaint = _chunkIFWLZZCWcjs.isGradientPaint; exports.isPaintEffectPaint = _chunkPEQWARCPcjs.isPaintEffectPaint; exports.isPainterlyBlendMode = _chunk2VX55NFMcjs.isPainterlyBlendMode; exports.isPalmTouch = isPalmTouch; exports.isWetBrush = _chunkHRUK5TFWcjs.isWetBrush; exports.isWetCapable = _chunkHRUK5TFWcjs.isWetCapable; exports.jitterStrokePoints = jitterStrokePoints; exports.lightTile = lightTile; exports.lightingKey = lightingKey; exports.liveStrokeBounds = liveStrokeBounds; exports.liveStrokeRefusal = liveStrokeRefusal; exports.magnetsFromJSON = magnetsFromJSON; exports.mapPenPoint = mapPenPoint; exports.mergeFerro = mergeFerro; exports.mergeFourChannel = mergeFourChannel; exports.mix32 = _chunk3K6HWEXZcjs.mix32; exports.mixColorOklch = mixColorOklch; exports.mixPixels = mixPixels; exports.mixerLoadForStroke = mixerLoadForStroke; exports.mixerTip = _chunkPEQWARCPcjs.mixerTip; exports.multiColorForDab = _chunkPEQWARCPcjs.multiColorForDab; exports.multiColorGradient = _chunkPEQWARCPcjs.multiColorGradient; exports.multiColorPalette = _chunkPEQWARCPcjs.multiColorPalette; exports.multiColorSliders = _chunkJVFGK3DKcjs.multiColorSliders; exports.multiColorToPaint = _chunkHRUK5TFWcjs.multiColorToPaint; exports.mutateGenome = mutateGenome; exports.mutateStroke = mutateStroke; exports.mutationBrushRefusal = mutationBrushRefusal; exports.newPaintLayerId = newPaintLayerId; exports.nextPaperEffectVersion = nextPaperEffectVersion; exports.normalizeBehavior = _chunkHRUK5TFWcjs.normalizeBehavior; exports.normalizeBristle = _chunkHRUK5TFWcjs.normalizeBristle; exports.normalizeBrushStroke = normalizeBrushStroke; exports.normalizeCanvas = normalizeCanvas; exports.normalizeDynamics = _chunkHRUK5TFWcjs.normalizeDynamics; exports.normalizeFerro = _chunkHRUK5TFWcjs.normalizeFerro; exports.normalizeFerroSettings = _chunkHRUK5TFWcjs.normalizeFerro; exports.normalizeFlow = _chunkMITQGHN3cjs.normalizeFlow; exports.normalizeFluorescence = _chunkHRUK5TFWcjs.normalizeFluorescence; exports.normalizeGhost = _chunkHRUK5TFWcjs.normalizeGhost; exports.normalizeHexColor = _chunkIFWLZZCWcjs.normalizeHexColor; exports.normalizeImpasto = _chunkHRUK5TFWcjs.normalizeImpasto; exports.normalizeLight = _chunkHRUK5TFWcjs.normalizeLight; exports.normalizeLighting = normalizeLighting; exports.normalizeLivePatterns = _chunkIFWLZZCWcjs.normalizeLivePatterns; exports.normalizeMagnet = normalizeMagnet; exports.normalizeMultiColor = _chunkHRUK5TFWcjs.normalizeMultiColor; exports.normalizeMutation = _chunkHRUK5TFWcjs.normalizeMutation; exports.normalizeMutationRates = normalizeMutationRates; exports.normalizePaintBrush = _chunkHRUK5TFWcjs.normalizePaintBrush; exports.normalizePaper = _chunkPEQWARCPcjs.normalizePaper; exports.normalizeParticle = _chunkHRUK5TFWcjs.normalizeParticle; exports.normalizePerspective = normalizePerspective; exports.normalizeRotation = normalizeRotation; exports.normalizeStencil = normalizeStencil; exports.normalizeStickerSettings = _chunkHRUK5TFWcjs.normalizeStickerSettings; exports.normalizeStickerUpdate = normalizeStickerUpdate; exports.normalizeSymmetry = normalizeSymmetry; exports.normalizeThermochromic = _chunkHRUK5TFWcjs.normalizeThermochromic; exports.normalizeUvLight = normalizeUvLight; exports.normalizeView = normalizeView; exports.normalizeViewTilt = normalizeViewTilt; exports.normalizeWetBrush = _chunkHRUK5TFWcjs.normalizeWetBrush; exports.normalizeWetParams = _chunkMITQGHN3cjs.normalizeWetParams; exports.overPixels = overPixels; exports.padSampleRadius = padSampleRadius; exports.paintAgentStrokePoints = paintAgentStrokePoints; exports.paintBrushPreviewRenderer = paintBrushPreviewRenderer; exports.paintContracts = paintContracts; exports.paintGradientMappingFor = _chunkIFWLZZCWcjs.paintGradientMappingFor; exports.paintHeatField = paintHeatField; exports.paintPlaybackPanel = paintPlaybackPanel; exports.paintProposalGhost = paintProposalGhost; exports.paintShortcutFor = paintShortcutFor; exports.paintSourceColor = _chunkIFWLZZCWcjs.paintSourceColor; exports.paintSourceCss = _chunkIFWLZZCWcjs.paintSourceCss; exports.paintToMultiColor = _chunkHRUK5TFWcjs.paintToMultiColor; exports.paperEffectFromJSON = paperEffectFromJSON; exports.paperEffectToJSON = paperEffectToJSON; exports.paperGrain = paperGrain; exports.paperKey = paperKey; exports.paperNode = paperNode; exports.paperPreset = _chunkPEQWARCPcjs.paperPreset; exports.parseBrushLibrary = _chunkHRUK5TFWcjs.parseBrushLibrary; exports.parseHexColor = parseHexColor; exports.parsePaintSource = _chunkIFWLZZCWcjs.parsePaintSource; exports.patchBrushValue = _chunkJVFGK3DKcjs.patchBrushValue; exports.patchPath = patchPath; exports.penOrientation = _chunkPEQWARCPcjs.penOrientation; exports.perspectiveDirections = perspectiveDirections; exports.perspectiveGuideLines = perspectiveGuideLines; exports.planPaintToolPlayback = planPaintToolPlayback; exports.pointerToPenPoint = pointerToPenPoint; exports.proposalGenomeStrokes = proposalGenomeStrokes; exports.quickStencil = quickStencil; exports.rand01 = _chunk3K6HWEXZcjs.rand01; exports.randSigned = _chunk3K6HWEXZcjs.randSigned; exports.readEffectStrokeMap = _chunkPEQWARCPcjs.readEffectStrokeMap; exports.readPaintEffectPaint = _chunkPEQWARCPcjs.readPaintEffectPaint; exports.readPaintEffectSource = readPaintEffectSource; exports.readPaintSource = _chunkIFWLZZCWcjs.readPaintSource; exports.readPath = readPath; exports.readSwatch = readSwatch; exports.reliefInfo = reliefInfo; exports.removePaintGradientStop = _chunkIFWLZZCWcjs.removePaintGradientStop; exports.renderBrushThumbnail = renderBrushThumbnail; exports.renderColorWheel = renderColorWheel; exports.renderPaper = _chunkPEQWARCPcjs.renderPaper; exports.renderProposalContactSheet = renderProposalContactSheet; exports.renderStickers = renderStickers; exports.replayFrame = replayFrame; exports.replayItems = replayItems; exports.replayPainting = replayPainting; exports.requestDeviceTiltPermission = requestDeviceTiltPermission; exports.rerollStrokeSeed = rerollStrokeSeed; exports.resampleStrokePoints = resampleStrokePoints; exports.resolvePaintGradient = _chunkIFWLZZCWcjs.resolvePaintGradient; exports.reversePaintGradient = _chunkIFWLZZCWcjs.reversePaintGradient; exports.rgbToHexColor = rgbToHexColor; exports.rgbToHsl = rgbToHsl; exports.rgbToHsv = rgbToHsv; exports.sampleArt = sampleArt; exports.sampleEffectAt = _chunkPEQWARCPcjs.sampleEffectAt; exports.sampleEffectField = _chunkPEQWARCPcjs.sampleEffectField; exports.sampleHeatAt = sampleHeatAt; exports.samplePath = samplePath; exports.samplePressure = samplePressure; exports.scaleFerro = scaleFerro; exports.scaleFluor = scaleFluor; exports.scalePaintGradient = _chunkIFWLZZCWcjs.scalePaintGradient; exports.scaleStencil = scaleStencil; exports.screenToDocument = screenToDocument; exports.seedFromString = _chunk3K6HWEXZcjs.seedFromString; exports.seededStrokeVariation = seededStrokeVariation; exports.serializePaintDocument = serializePaintDocument; exports.serializePaintDocumentExternal = serializePaintDocumentExternal; exports.shadowToFerro = shadowToFerro; exports.shiftHeatField = shiftHeatField; exports.solidPaint = _chunkIFWLZZCWcjs.solidPaint; exports.squaredDistanceTransform = _chunkYH6SKC7Pcjs.squaredDistanceTransform; exports.stampCoverage = _chunkRDFHWAHLcjs.stampCoverage; exports.standardBlendMode = _chunk2VX55NFMcjs.standardBlendMode; exports.startDeviceTilt = startDeviceTilt; exports.startWetClock = startWetClock; exports.stencilMask = stencilMask; exports.stencilOutline = stencilOutline; exports.stickerAt = stickerAt; exports.stickerRect = stickerRect; exports.stickerRefLabel = stickerRefLabel; exports.stickerStamp = stickerStamp; exports.stickerSurface = stickerSurface; exports.strokeBounds = strokeBounds; exports.strokeDuration = strokeDuration; exports.strokePathPoints = _chunkPEQWARCPcjs.strokePathPoints; exports.strokeSchedule = strokeSchedule; exports.strokeToJSON = strokeToJSON; exports.sweepPath = sweepPath; exports.symmetryAxisAngles = symmetryAxisAngles; exports.symmetryAxisSegments = symmetryAxisSegments; exports.symmetryCopies = symmetryCopies; exports.thermoFromJSON = thermoFromJSON; exports.thermoToJSON = thermoToJSON; exports.thermoTwinBrush = thermoTwinBrush; exports.thickFromJSON = thickFromJSON; exports.thickToJSON = thickToJSON; exports.thinFilmRgb = thinFilmRgb; exports.thumbnailStroke = thumbnailStroke; exports.tiltToOrientation = _chunkPEQWARCPcjs.tiltToOrientation; exports.timeLapseVideo = timeLapseVideo; exports.timeLapseZip = timeLapseZip; exports.toStrokePoint = _chunkPEQWARCPcjs.toStrokePoint; exports.toggleDotTexture = toggleDotTexture; exports.toggleStamp = toggleStamp; exports.toggleStickerRef = toggleStickerRef; exports.translateStencil = translateStencil; exports.updatePaintGradientStop = _chunkIFWLZZCWcjs.updatePaintGradientStop; exports.usesPaintExchange = _chunkHRUK5TFWcjs.usesPaintExchange; exports.uvLightKey = uvLightKey; exports.uvPaper = uvPaper; exports.variationAffine = variationAffine; exports.varyStroke = varyStroke; exports.viewCssTransform = viewCssTransform; exports.viewMatrix = viewMatrix; exports.viewPenToDocument = viewPenToDocument; exports.viewTiltKey = viewTiltKey; exports.wetEngineSummary = wetEngineSummary; exports.wetPaperInput = _chunkPEQWARCPcjs.wetPaperInput; exports.wetPigmentOf = _chunkPEQWARCPcjs.wetPigmentOf; exports.wetSupport = _chunkMITQGHN3cjs.wetSupport; exports.wheelAngle = wheelAngle; exports.wheelPick = wheelPick; exports.wheelPoint = wheelPoint; exports.wheelToHue = _chunkI3Y2Q3PMcjs.wheelToHue; exports.withPaintPlayback = withPaintPlayback; exports.withStrokePath = _chunkPEQWARCPcjs.withStrokePath;
|
|
18238
|
+
exports.BACKLIGHT_SPILL = BACKLIGHT_SPILL; exports.BLEND_MENU_GROUPS = BLEND_MENU_GROUPS; exports.BLEND_MODES = _chunk2VX55NFMcjs.BLEND_MODES; exports.BRUSH_ID = _chunkHRUK5TFWcjs.BRUSH_ID; exports.BRUSH_ROTATIONS = _chunkHRUK5TFWcjs.BRUSH_ROTATIONS; exports.BRUSH_SLIDERS = _chunkJVFGK3DKcjs.BRUSH_SLIDERS; exports.BUILTIN_BRUSHES = _chunkHRUK5TFWcjs.BUILTIN_BRUSHES; exports.BristleStroke = BristleStroke; exports.BrushSourceArtCache = BrushSourceArtCache; exports.DAB_FLIPS = _chunkHRUK5TFWcjs.DAB_FLIPS; exports.DEFAULT_BACKLIGHT_COLOR = DEFAULT_BACKLIGHT_COLOR; exports.DEFAULT_BEHAVIOR = _chunkHRUK5TFWcjs.DEFAULT_BEHAVIOR; exports.DEFAULT_BRISTLE = _chunkHRUK5TFWcjs.DEFAULT_BRISTLE; exports.DEFAULT_BRUSH_ID = _chunkHRUK5TFWcjs.DEFAULT_BRUSH_ID; exports.DEFAULT_DPI = DEFAULT_DPI; exports.DEFAULT_DYNAMICS = _chunkHRUK5TFWcjs.DEFAULT_DYNAMICS; exports.DEFAULT_FERRO = _chunkHRUK5TFWcjs.DEFAULT_FERRO; exports.DEFAULT_FLOW = _chunk4BMRQSPBcjs.DEFAULT_FLOW; exports.DEFAULT_FLUORESCENCE = _chunkHRUK5TFWcjs.DEFAULT_FLUORESCENCE; exports.DEFAULT_GHOST = _chunkHRUK5TFWcjs.DEFAULT_GHOST; exports.DEFAULT_IMPASTO = _chunkHRUK5TFWcjs.DEFAULT_IMPASTO; exports.DEFAULT_IRIDESCENCE = _chunkHRUK5TFWcjs.DEFAULT_IRIDESCENCE; exports.DEFAULT_LIGHT = _chunkHRUK5TFWcjs.DEFAULT_LIGHT; exports.DEFAULT_LIGHTING = DEFAULT_LIGHTING; exports.DEFAULT_LIVE_PATTERNS = _chunkIFWLZZCWcjs.DEFAULT_LIVE_PATTERNS; exports.DEFAULT_MAGNET_RADIUS = DEFAULT_MAGNET_RADIUS; exports.DEFAULT_MAGNET_STRENGTH = DEFAULT_MAGNET_STRENGTH; exports.DEFAULT_MULTI_COLOR = _chunkHRUK5TFWcjs.DEFAULT_MULTI_COLOR; exports.DEFAULT_MUTATION = _chunkHRUK5TFWcjs.DEFAULT_MUTATION; exports.DEFAULT_MUTATION_RATES = DEFAULT_MUTATION_RATES; exports.DEFAULT_PAINT_GRADIENT = _chunkIFWLZZCWcjs.DEFAULT_PAINT_GRADIENT; exports.DEFAULT_PAINT_GRADIENT_MAPPING = _chunkIFWLZZCWcjs.DEFAULT_PAINT_GRADIENT_MAPPING; exports.DEFAULT_PAPER = _chunkWZYRYYXNcjs.DEFAULT_PAPER; exports.DEFAULT_PARTICLE = _chunkHRUK5TFWcjs.DEFAULT_PARTICLE; exports.DEFAULT_SPRAY = _chunkHRUK5TFWcjs.DEFAULT_SPRAY; exports.DEFAULT_STICKER = _chunkHRUK5TFWcjs.DEFAULT_STICKER; exports.DEFAULT_SWATCHES = DEFAULT_SWATCHES; exports.DEFAULT_THERMOCHROMIC = _chunkHRUK5TFWcjs.DEFAULT_THERMOCHROMIC; exports.DEFAULT_TIP_GRAIN = _chunkHRUK5TFWcjs.DEFAULT_TIP_GRAIN; exports.DEFAULT_UV_LIGHT = DEFAULT_UV_LIGHT; exports.DEFAULT_VIEW = DEFAULT_VIEW; exports.DEFAULT_VIEW_TILT = DEFAULT_VIEW_TILT; exports.DEFAULT_WET_BRUSH = _chunkHRUK5TFWcjs.DEFAULT_WET_BRUSH; exports.DEFAULT_WET_PARAMS = _chunk4BMRQSPBcjs.DEFAULT_WET_PARAMS; exports.DOT_ROTATIONS = _chunkHRUK5TFWcjs.DOT_ROTATIONS; exports.DOT_ROTATION_LABELS = DOT_ROTATION_LABELS; exports.DOT_TEXTURE_ORDERS = _chunkHRUK5TFWcjs.DOT_TEXTURE_ORDERS; exports.DOT_TEXTURE_ORDER_LABELS = DOT_TEXTURE_ORDER_LABELS; exports.DryStroke = _chunkWZYRYYXNcjs.DryStroke; exports.EFFECT_MAP_REPEATS = _chunkWZYRYYXNcjs.EFFECT_MAP_REPEATS; exports.EFFECT_STRIP_HEIGHT = _chunkWZYRYYXNcjs.EFFECT_STRIP_HEIGHT; exports.EVOLUTION_BRUSH_FACETS = EVOLUTION_BRUSH_FACETS; exports.EVOLUTION_MUTATION_SCHEMA = EVOLUTION_MUTATION_SCHEMA; exports.EVOLUTION_SLIDERS = EVOLUTION_SLIDERS; exports.EXTENSION_ASSET_REF = EXTENSION_ASSET_REF; exports.FERRO_CARRIER_RGB = FERRO_CARRIER_RGB; exports.FERRO_DEFAULT_GLOSS = FERRO_DEFAULT_GLOSS; exports.FERRO_DEFAULT_METALLIC = FERRO_DEFAULT_METALLIC; exports.FERRO_DEFAULT_RIM = FERRO_DEFAULT_RIM; exports.FilmBuffer = FilmBuffer; exports.GHOST_SLIDERS = _chunkJVFGK3DKcjs.GHOST_SLIDERS; exports.GHOST_TRIGGERS = _chunkHRUK5TFWcjs.GHOST_TRIGGERS; exports.GPU_LEAD = _chunkWZYRYYXNcjs.GPU_LEAD; exports.GRAIN_PATTERNS = _chunkIFWLZZCWcjs.GRAIN_PATTERNS; exports.GRAIN_TILE = _chunkIFWLZZCWcjs.GRAIN_TILE; exports.HARMONY_KINDS = _chunkI3Y2Q3PMcjs.HARMONY_KINDS; exports.HEAT_COOLING = HEAT_COOLING; exports.HEAT_DIFFUSION = HEAT_DIFFUSION; exports.HEAT_DRY_THRESHOLD = HEAT_DRY_THRESHOLD; exports.HEAT_SCALE = HEAT_SCALE; exports.IDENTITY_AFFINE = IDENTITY_AFFINE; exports.IDENTITY_COPY = _chunkWZYRYYXNcjs.IDENTITY_COPY; exports.IMPASTO_TOOLS = _chunkHRUK5TFWcjs.IMPASTO_TOOLS; exports.IMPASTO_TOOL_LABELS = IMPASTO_TOOL_LABELS; exports.IRIDESCENCE_SLIDERS = _chunkJVFGK3DKcjs.IRIDESCENCE_SLIDERS; exports.LIGHT_SLIDERS = LIGHT_SLIDERS; exports.LIVE_PATTERN_KINDS = _chunkIFWLZZCWcjs.LIVE_PATTERN_KINDS; exports.LIVE_PATTERN_LABELS = LIVE_PATTERN_LABELS; exports.LIVE_PATTERN_PRESETS = _chunkIFWLZZCWcjs.LIVE_PATTERN_PRESETS; exports.LIVE_PATTERN_SCHEMA = LIVE_PATTERN_SCHEMA; exports.LIVE_PATTERN_SLIDERS = LIVE_PATTERN_SLIDERS; exports.LIVE_STROKE_ENGINES = LIVE_STROKE_ENGINES; exports.LitCache = LitCache; exports.MAGNET_SLIDERS = MAGNET_SLIDERS; exports.MAX_BRUSH_SIZE = _chunkIFWLZZCWcjs.MAX_BRUSH_SIZE; exports.MAX_CANVAS_SIDE = MAX_CANVAS_SIDE; exports.MAX_COORDINATE = MAX_COORDINATE; exports.MAX_DOT_TEXTURES = _chunkHRUK5TFWcjs.MAX_DOT_TEXTURES; exports.MAX_EFFECT_PATH_POINTS = _chunkWZYRYYXNcjs.MAX_EFFECT_PATH_POINTS; exports.MAX_IMAGE_SIDE = MAX_IMAGE_SIDE; exports.MAX_LIVE_EFFECT_SOURCES = MAX_LIVE_EFFECT_SOURCES; exports.MAX_PATH_SAMPLES = MAX_PATH_SAMPLES; exports.MAX_STICKER_STAMPS = _chunkHRUK5TFWcjs.MAX_STICKER_STAMPS; exports.MAX_ZOOM = MAX_ZOOM; exports.MIN_CANVAS_SIDE = MIN_CANVAS_SIDE; exports.MIN_ZOOM = MIN_ZOOM; exports.MIXING_PAD_HEIGHT = MIXING_PAD_HEIGHT; exports.MIXING_PAD_WIDTH = MIXING_PAD_WIDTH; exports.MULTI_COLOR_MODES = _chunkHRUK5TFWcjs.MULTI_COLOR_MODES; exports.MUTATION_SLIDERS = _chunkJVFGK3DKcjs.MUTATION_SLIDERS; exports.MixingPad = MixingPad; exports.PAD_SAMPLE_SIZES = PAD_SAMPLE_SIZES; exports.PAINTERLY_BLEND_MODES = _chunk2VX55NFMcjs.PAINTERLY_BLEND_MODES; exports.PAINT_BRUSH_CATEGORIES = _chunkHRUK5TFWcjs.PAINT_BRUSH_CATEGORIES; exports.PAINT_BRUSH_ENGINES = _chunkHRUK5TFWcjs.PAINT_BRUSH_ENGINES; exports.PAINT_COLOR_JSON_SCHEMA = _chunkIFWLZZCWcjs.PAINT_COLOR_JSON_SCHEMA; exports.PAINT_CONTRACT_FORMAT_VERSION = PAINT_CONTRACT_FORMAT_VERSION; exports.PAINT_DOCUMENT_JSON_SCHEMA = PAINT_DOCUMENT_JSON_SCHEMA; exports.PAINT_EFFECT_PLACES = PAINT_EFFECT_PLACES; exports.PAINT_FORMAT = PAINT_FORMAT; exports.PAINT_GRADIENT_FULL_SPEED = _chunkIFWLZZCWcjs.PAINT_GRADIENT_FULL_SPEED; exports.PAINT_GRADIENT_JSON_SCHEMA = _chunkIFWLZZCWcjs.PAINT_GRADIENT_JSON_SCHEMA; exports.PAINT_GRADIENT_KIT = _chunkIFWLZZCWcjs.PAINT_GRADIENT_KIT; exports.PAINT_GRADIENT_MAPPINGS = _chunkIFWLZZCWcjs.PAINT_GRADIENT_MAPPINGS; exports.PAINT_GRADIENT_MAPPING_LABELS = _chunkIFWLZZCWcjs.PAINT_GRADIENT_MAPPING_LABELS; exports.PAINT_GRADIENT_PRESETS = _chunkIFWLZZCWcjs.PAINT_GRADIENT_PRESETS; exports.PAINT_GRADIENT_REPEATS = _chunkIFWLZZCWcjs.PAINT_GRADIENT_REPEATS; exports.PAINT_GRADIENT_REPEAT_LABELS = _chunkIFWLZZCWcjs.PAINT_GRADIENT_REPEAT_LABELS; exports.PAINT_GRADIENT_SPACES = _chunkIFWLZZCWcjs.PAINT_GRADIENT_SPACES; exports.PAINT_GRADIENT_SPACE_LABELS = _chunkIFWLZZCWcjs.PAINT_GRADIENT_SPACE_LABELS; exports.PAINT_SCHEMA_VERSION = PAINT_SCHEMA_VERSION; exports.PAINT_SHORTCUTS = PAINT_SHORTCUTS; exports.PAINT_SOURCE_JSON_SCHEMA = _chunkIFWLZZCWcjs.PAINT_SOURCE_JSON_SCHEMA; exports.PAINT_TARGET = PAINT_TARGET; exports.PAINT_TOOLS = PAINT_TOOLS; exports.PAPER_EFFECT_BLENDS = PAPER_EFFECT_BLENDS; exports.PAPER_EFFECT_NODE_ID = PAPER_EFFECT_NODE_ID; exports.PAPER_FAMILIES = _chunkWZYRYYXNcjs.PAPER_FAMILIES; exports.PAPER_LIBRARY = _chunkWZYRYYXNcjs.PAPER_LIBRARY; exports.PAPER_NODE_ID = PAPER_NODE_ID; exports.PAPER_SLIDERS = PAPER_SLIDERS; exports.PAPER_TARGET = PAPER_TARGET; exports.PARTICLE_KINDS = _chunkHRUK5TFWcjs.PARTICLE_KINDS; exports.PARTICLE_KIND_LABELS = PARTICLE_KIND_LABELS; exports.PARTICLE_RENDERS = _chunkHRUK5TFWcjs.PARTICLE_RENDERS; exports.PARTICLE_RENDER_LABELS = PARTICLE_RENDER_LABELS; exports.PATH_STROKE_TAPERS = PATH_STROKE_TAPERS; exports.PaintCanvasPresenter = PaintCanvasPresenter; exports.PaintDabStroke = _chunkWZYRYYXNcjs.PaintDabStroke; exports.PaintDirector = PaintDirector; exports.PaintDocumentError = PaintDocumentError; exports.PaintEditorController = PaintEditorController; exports.PaintEditorError = PaintEditorError; exports.PaintEffectsRenderer = PaintEffectsRenderer; exports.PaintGesture = PaintGesture; exports.PaintGradientSampler = _chunkIFWLZZCWcjs.PaintGradientSampler; exports.PaintPresence = PaintPresence; exports.PaintSourceError = _chunkIFWLZZCWcjs.PaintSourceError; exports.PaintStrokeSession = PaintStrokeSession; exports.PaintWetLayers = _chunkWZYRYYXNcjs.PaintWetLayers; exports.PaperGrain = _chunkIFWLZZCWcjs.PaperGrain; exports.ParticleStroke = ParticleStroke; exports.PenDabWalker = _chunkWZYRYYXNcjs.PenDabWalker; exports.PenSmoother = _chunkWZYRYYXNcjs.PenSmoother; exports.PerspectiveSnapper = PerspectiveSnapper; exports.RIBBON_PAIRS = _chunkHRUK5TFWcjs.RIBBON_PAIRS; exports.RIBBON_PAIR_LABELS = RIBBON_PAIR_LABELS; exports.SNAP_DECIDE_DISTANCE = SNAP_DECIDE_DISTANCE; exports.STAMP_KINDS = _chunkRDFHWAHLcjs.STAMP_KINDS; exports.STAMP_LABELS = STAMP_LABELS; exports.STENCIL_KINDS = STENCIL_KINDS; exports.STENCIL_SHAPES = STENCIL_SHAPES; exports.STICKER_ART_SIZE = STICKER_ART_SIZE; exports.STICKER_SLIDERS = STICKER_SLIDERS; exports.STROKE_SLIDERS = STROKE_SLIDERS; exports.SYMMETRY_MODES = SYMMETRY_MODES; exports.StencilSnapper = StencilSnapper; exports.StickerArtCache = StickerArtCache; exports.StickerBrowser = _chunk3VHH6V67cjs.StickerBrowser; exports.StickerSpray = StickerSpray; exports.TIP_GRAIN_MODES = _chunkHRUK5TFWcjs.TIP_GRAIN_MODES; exports.TRACING_NODE_ID = TRACING_NODE_ID; exports.ThermoCache = ThermoCache; exports.ThickStrokeDriver = ThickStrokeDriver; exports.TileableNoise = _chunk3K6HWEXZcjs.TileableNoise; exports.TipGrain = _chunkWZYRYYXNcjs.TipGrain; exports.UV_LIGHT_SLIDERS = UV_LIGHT_SLIDERS; exports.UvCache = UvCache; exports.VIEW_TILT_SLIDERS = VIEW_TILT_SLIDERS; exports.WET_FLOW_KINDS = _chunk4BMRQSPBcjs.WET_FLOW_KINDS; exports.WET_GPU_MODES = _chunkWZYRYYXNcjs.WET_GPU_MODES; exports.WET_GPU_OPTIONS = WET_GPU_OPTIONS; exports.WET_MEDIA = _chunkHRUK5TFWcjs.WET_MEDIA; exports.WET_MEDIUM_LABELS = WET_MEDIUM_LABELS; exports.WET_MEDIUM_PARAMS = _chunkWZYRYYXNcjs.WET_MEDIUM_PARAMS; exports.WET_PARAM_KEYS = _chunk4BMRQSPBcjs.WET_PARAM_KEYS; exports.WET_PARAM_SCHEMA = WET_PARAM_SCHEMA; exports.WET_PARAM_SLIDERS = WET_PARAM_SLIDERS; exports.WET_SPEED_SLIDER = WET_SPEED_SLIDER; exports.WET_TILT_SLIDERS = WET_TILT_SLIDERS; exports.WET_TOOLS = _chunkHRUK5TFWcjs.WET_TOOLS; exports.WET_TOOL_LABELS = WET_TOOL_LABELS; exports.WetStrokeDriver = _chunkWZYRYYXNcjs.WetStrokeDriver; exports.addPaintGradientStop = _chunkIFWLZZCWcjs.addPaintGradientStop; exports.addPolygonArea = addPolygonArea; exports.advanceHeatField = advanceHeatField; exports.advectFerro = advectFerro; exports.affineCopy = affineCopy; exports.applyAffine = applyAffine; exports.backlightOf = backlightOf; exports.bakeFerroIntoThick = bakeFerroIntoThick; exports.brushEngineControls = _chunkJVFGK3DKcjs.brushEngineControls; exports.brushLoadColor = brushLoadColor; exports.brushLoadForStroke = brushLoadForStroke; exports.brushTakesPaint = _chunkHRUK5TFWcjs.brushTakesPaint; exports.brushToJSON = _chunkHRUK5TFWcjs.brushToJSON; exports.buildTimeLapse = buildTimeLapse; exports.checkEvolutionStrokes = checkEvolutionStrokes; exports.checkPaintEffectPlace = checkPaintEffectPlace; exports.clearHeatField = clearHeatField; exports.cloneHeatField = cloneHeatField; exports.clonePaper = _chunkWZYRYYXNcjs.clonePaper; exports.colorHarmony = colorHarmony2; exports.composeAffine = composeAffine; exports.computeUvSpill = computeUvSpill; exports.contactSheet = contactSheet; exports.createEvolutionTools = createEvolutionTools; exports.createFerroTools = createFerroTools; exports.createHeatField = createHeatField; exports.createMutationTools = createMutationTools; exports.createPaintAgentStrokes = createPaintAgentStrokes; exports.createPaintBrushLibraryToolProvider = createPaintBrushLibraryToolProvider; exports.createPaintChangeFeed = createPaintChangeFeed; exports.createPaintCompositor = createPaintCompositor; exports.createPaintConformanceHost = createPaintConformanceHost; exports.createPaintDocument = createPaintDocument; exports.createPaintEditorDocument = createPaintEditorDocument; exports.createPaintEditorToolProvider = createPaintEditorToolProvider; exports.createPaintEffectsToolProvider = createPaintEffectsToolProvider; exports.createPaintEvolutionToolProvider = createPaintEvolutionToolProvider; exports.createPaintEvolutionTools = createPaintEvolutionTools; exports.createPaintLayer = createPaintLayer; exports.createPaintProposalToolProvider = createPaintProposalToolProvider; exports.createPaintProposals = createPaintProposals; exports.createPaintReplayTools = createPaintReplayTools; exports.createPaintStickerTools = createPaintStickerTools; exports.createPaintThickTools = createPaintThickTools; exports.createPaintWetTools = createPaintWetTools; exports.crossoverBrushes = crossoverBrushes; exports.crossoverGenomes = crossoverGenomes; exports.crossoverStrokes = crossoverStrokes; exports.decodeImageBlob = decodeImageBlob; exports.defaultGuides = defaultGuides; exports.defaultImageEncoder = defaultImageEncoder; exports.defaultStickerRasterizer = defaultStickerRasterizer; exports.describeGenomeDiff = describeGenomeDiff; exports.deserializePaintDocument = deserializePaintDocument; exports.deserializePaintDocumentAsync = deserializePaintDocumentAsync; exports.deviceOrientationToViewTilt = deviceOrientationToViewTilt; exports.documentExtensions = documentExtensions; exports.documentToScreen = documentToScreen; exports.downloadBytes = downloadBytes; exports.downsampleRgba = downsampleRgba; exports.drawSticker = drawSticker; exports.drawWaterOverlay = drawWaterOverlay; exports.driftBrushFacets = driftBrushFacets; exports.driftColorOklch = driftColorOklch; exports.effectDabField = _chunkWZYRYYXNcjs.effectDabField; exports.effectLayersToJSON = effectLayersToJSON; exports.effectPaintKey = _chunkWZYRYYXNcjs.effectPaintKey; exports.effectPaintSize = _chunkWZYRYYXNcjs.effectPaintSize; exports.emptiedLayers = emptiedLayers; exports.emptyFerro = emptyFerro; exports.emptyFluor = emptyFluor; exports.emptyThermo = emptyThermo; exports.emptyThickChannels = emptyThickChannels; exports.engineBrushSourceIds = engineBrushSourceIds; exports.exportProposalContactSheetPng = exportProposalContactSheetPng; exports.ferroCacheKey = ferroCacheKey; exports.ferroFieldAt = ferroFieldAt; exports.ferroFromJSON = ferroFromJSON; exports.ferroInfo = ferroInfo; exports.ferroSpikeHeightAt = ferroSpikeHeightAt; exports.ferroToJSON = ferroToJSON; exports.ferroToShadow = ferroToShadow; exports.ferroTwinBrush = ferroTwinBrush; exports.fillRegionMask = _chunkYH6SKC7Pcjs.fillRegionMask; exports.finalizeThermoStroke = finalizeThermoStroke; exports.findUnfilledRegionsMask = _chunkYH6SKC7Pcjs.findUnfilledRegionsMask; exports.fitZoom = fitZoom; exports.fluorFromJSON = fluorFromJSON; exports.fluorToJSON = fluorToJSON; exports.fluorTwinBrush = fluorTwinBrush; exports.grainCatch = _chunkIFWLZZCWcjs.grainCatch; exports.grainHeights = _chunkIFWLZZCWcjs.grainHeights; exports.guideOverlay = guideOverlay; exports.handlePaintShortcut = handlePaintShortcut; exports.hasThickChannels = hasThickChannels; exports.hash2 = _chunk3K6HWEXZcjs.hash2; exports.heatFromJSON = heatFromJSON; exports.heatStats = heatStats; exports.heatToJSON = heatToJSON; exports.hexToPaintRgb = _chunkIFWLZZCWcjs.hexToPaintRgb; exports.hexToRgb8 = _chunkWZYRYYXNcjs.hexToRgb8; exports.hotCellsBounds = hotCellsBounds; exports.hslToRgb = hslToRgb; exports.hsvToRgb = hsvToRgb; exports.hueToWheel = _chunkI3Y2Q3PMcjs.hueToWheel; exports.inferEffectPathControl = _chunkWZYRYYXNcjs.inferEffectPathControl; exports.invertAffine = invertAffine; exports.isBlendMode = _chunk2VX55NFMcjs.isBlendMode; exports.isGradientPaint = _chunkIFWLZZCWcjs.isGradientPaint; exports.isPaintEffectPaint = _chunkWZYRYYXNcjs.isPaintEffectPaint; exports.isPainterlyBlendMode = _chunk2VX55NFMcjs.isPainterlyBlendMode; exports.isPalmTouch = isPalmTouch; exports.isWetBrush = _chunkHRUK5TFWcjs.isWetBrush; exports.isWetCapable = _chunkHRUK5TFWcjs.isWetCapable; exports.jitterStrokePoints = jitterStrokePoints; exports.lightTile = lightTile; exports.lightingKey = lightingKey; exports.liveStrokeBounds = liveStrokeBounds; exports.liveStrokeRefusal = liveStrokeRefusal; exports.magnetsFromJSON = magnetsFromJSON; exports.mapPenPoint = mapPenPoint; exports.mergeFerro = mergeFerro; exports.mergeFourChannel = mergeFourChannel; exports.mix32 = _chunk3K6HWEXZcjs.mix32; exports.mixColorOklch = mixColorOklch; exports.mixPixels = mixPixels; exports.mixerLoadForStroke = mixerLoadForStroke; exports.mixerTip = _chunkWZYRYYXNcjs.mixerTip; exports.multiColorForDab = _chunkWZYRYYXNcjs.multiColorForDab; exports.multiColorGradient = _chunkWZYRYYXNcjs.multiColorGradient; exports.multiColorPalette = _chunkWZYRYYXNcjs.multiColorPalette; exports.multiColorSliders = _chunkJVFGK3DKcjs.multiColorSliders; exports.multiColorToPaint = _chunkHRUK5TFWcjs.multiColorToPaint; exports.mutateGenome = mutateGenome; exports.mutateStroke = mutateStroke; exports.mutationBrushRefusal = mutationBrushRefusal; exports.newPaintLayerId = newPaintLayerId; exports.nextPaperEffectVersion = nextPaperEffectVersion; exports.normalizeBehavior = _chunkHRUK5TFWcjs.normalizeBehavior; exports.normalizeBristle = _chunkHRUK5TFWcjs.normalizeBristle; exports.normalizeBrushStroke = normalizeBrushStroke; exports.normalizeCanvas = normalizeCanvas; exports.normalizeDynamics = _chunkHRUK5TFWcjs.normalizeDynamics; exports.normalizeFerro = _chunkHRUK5TFWcjs.normalizeFerro; exports.normalizeFerroSettings = _chunkHRUK5TFWcjs.normalizeFerro; exports.normalizeFlow = _chunk4BMRQSPBcjs.normalizeFlow; exports.normalizeFluorescence = _chunkHRUK5TFWcjs.normalizeFluorescence; exports.normalizeGhost = _chunkHRUK5TFWcjs.normalizeGhost; exports.normalizeHexColor = _chunkIFWLZZCWcjs.normalizeHexColor; exports.normalizeImpasto = _chunkHRUK5TFWcjs.normalizeImpasto; exports.normalizeLight = _chunkHRUK5TFWcjs.normalizeLight; exports.normalizeLighting = normalizeLighting; exports.normalizeLivePatterns = _chunkIFWLZZCWcjs.normalizeLivePatterns; exports.normalizeMagnet = normalizeMagnet; exports.normalizeMultiColor = _chunkHRUK5TFWcjs.normalizeMultiColor; exports.normalizeMutation = _chunkHRUK5TFWcjs.normalizeMutation; exports.normalizeMutationRates = normalizeMutationRates; exports.normalizePaintBrush = _chunkHRUK5TFWcjs.normalizePaintBrush; exports.normalizePaper = _chunkWZYRYYXNcjs.normalizePaper; exports.normalizeParticle = _chunkHRUK5TFWcjs.normalizeParticle; exports.normalizePerspective = normalizePerspective; exports.normalizeRotation = normalizeRotation; exports.normalizeStencil = normalizeStencil; exports.normalizeStickerSettings = _chunkHRUK5TFWcjs.normalizeStickerSettings; exports.normalizeStickerUpdate = normalizeStickerUpdate; exports.normalizeSymmetry = normalizeSymmetry; exports.normalizeThermochromic = _chunkHRUK5TFWcjs.normalizeThermochromic; exports.normalizeUvLight = normalizeUvLight; exports.normalizeView = normalizeView; exports.normalizeViewTilt = normalizeViewTilt; exports.normalizeWetBrush = _chunkHRUK5TFWcjs.normalizeWetBrush; exports.normalizeWetParams = _chunk4BMRQSPBcjs.normalizeWetParams; exports.overPixels = overPixels; exports.padSampleRadius = padSampleRadius; exports.paintAgentStrokePoints = paintAgentStrokePoints; exports.paintBrushPreviewRenderer = paintBrushPreviewRenderer; exports.paintContracts = paintContracts; exports.paintGradientMappingFor = _chunkIFWLZZCWcjs.paintGradientMappingFor; exports.paintHeatField = paintHeatField; exports.paintPlaybackPanel = paintPlaybackPanel; exports.paintProposalGhost = paintProposalGhost; exports.paintShortcutFor = paintShortcutFor; exports.paintSourceColor = _chunkIFWLZZCWcjs.paintSourceColor; exports.paintSourceCss = _chunkIFWLZZCWcjs.paintSourceCss; exports.paintToMultiColor = _chunkHRUK5TFWcjs.paintToMultiColor; exports.paperEffectFromJSON = paperEffectFromJSON; exports.paperEffectToJSON = paperEffectToJSON; exports.paperGrain = paperGrain; exports.paperKey = paperKey; exports.paperNode = paperNode; exports.paperPreset = _chunkWZYRYYXNcjs.paperPreset; exports.parseBrushLibrary = _chunkHRUK5TFWcjs.parseBrushLibrary; exports.parseHexColor = parseHexColor; exports.parsePaintSource = _chunkIFWLZZCWcjs.parsePaintSource; exports.patchBrushValue = _chunkJVFGK3DKcjs.patchBrushValue; exports.patchPath = patchPath; exports.penOrientation = _chunkWZYRYYXNcjs.penOrientation; exports.perspectiveDirections = perspectiveDirections; exports.perspectiveGuideLines = perspectiveGuideLines; exports.planPaintToolPlayback = planPaintToolPlayback; exports.pointerToPenPoint = pointerToPenPoint; exports.proposalGenomeStrokes = proposalGenomeStrokes; exports.quickStencil = quickStencil; exports.rand01 = _chunk3K6HWEXZcjs.rand01; exports.randSigned = _chunk3K6HWEXZcjs.randSigned; exports.readEffectStrokeMap = _chunkWZYRYYXNcjs.readEffectStrokeMap; exports.readPaintEffectPaint = _chunkWZYRYYXNcjs.readPaintEffectPaint; exports.readPaintEffectSource = readPaintEffectSource; exports.readPaintSource = _chunkIFWLZZCWcjs.readPaintSource; exports.readPath = readPath; exports.readSwatch = readSwatch; exports.reliefInfo = reliefInfo; exports.removePaintGradientStop = _chunkIFWLZZCWcjs.removePaintGradientStop; exports.renderBrushThumbnail = renderBrushThumbnail; exports.renderColorWheel = renderColorWheel; exports.renderPaper = _chunkWZYRYYXNcjs.renderPaper; exports.renderProposalContactSheet = renderProposalContactSheet; exports.renderStickers = renderStickers; exports.replayFrame = replayFrame; exports.replayItems = replayItems; exports.replayPainting = replayPainting; exports.requestDeviceTiltPermission = requestDeviceTiltPermission; exports.rerollStrokeSeed = rerollStrokeSeed; exports.resampleStrokePoints = resampleStrokePoints; exports.resolvePaintGradient = _chunkIFWLZZCWcjs.resolvePaintGradient; exports.reversePaintGradient = _chunkIFWLZZCWcjs.reversePaintGradient; exports.rgbToHexColor = rgbToHexColor; exports.rgbToHsl = rgbToHsl; exports.rgbToHsv = rgbToHsv; exports.sampleArt = sampleArt; exports.sampleEffectAt = _chunkWZYRYYXNcjs.sampleEffectAt; exports.sampleEffectField = _chunkWZYRYYXNcjs.sampleEffectField; exports.sampleHeatAt = sampleHeatAt; exports.samplePath = samplePath; exports.samplePressure = samplePressure; exports.scaleFerro = scaleFerro; exports.scaleFluor = scaleFluor; exports.scalePaintGradient = _chunkIFWLZZCWcjs.scalePaintGradient; exports.scaleStencil = scaleStencil; exports.screenToDocument = screenToDocument; exports.seedFromString = _chunk3K6HWEXZcjs.seedFromString; exports.seededStrokeVariation = seededStrokeVariation; exports.serializePaintDocument = serializePaintDocument; exports.serializePaintDocumentExternal = serializePaintDocumentExternal; exports.shadowToFerro = shadowToFerro; exports.shiftHeatField = shiftHeatField; exports.solidPaint = _chunkIFWLZZCWcjs.solidPaint; exports.squaredDistanceTransform = _chunkYH6SKC7Pcjs.squaredDistanceTransform; exports.stampCoverage = _chunkRDFHWAHLcjs.stampCoverage; exports.standardBlendMode = _chunk2VX55NFMcjs.standardBlendMode; exports.startDeviceTilt = startDeviceTilt; exports.startWetClock = startWetClock; exports.stencilMask = stencilMask; exports.stencilOutline = stencilOutline; exports.stickerAt = stickerAt; exports.stickerRect = stickerRect; exports.stickerRefLabel = stickerRefLabel; exports.stickerStamp = stickerStamp; exports.stickerSurface = stickerSurface; exports.strokeBounds = strokeBounds; exports.strokeDuration = strokeDuration; exports.strokePathPoints = _chunkWZYRYYXNcjs.strokePathPoints; exports.strokeSchedule = strokeSchedule; exports.strokeToJSON = strokeToJSON; exports.sweepPath = sweepPath; exports.symmetryAxisAngles = symmetryAxisAngles; exports.symmetryAxisSegments = symmetryAxisSegments; exports.symmetryCopies = symmetryCopies; exports.thermoFromJSON = thermoFromJSON; exports.thermoToJSON = thermoToJSON; exports.thermoTwinBrush = thermoTwinBrush; exports.thickFromJSON = thickFromJSON; exports.thickToJSON = thickToJSON; exports.thinFilmRgb = thinFilmRgb; exports.thumbnailStroke = thumbnailStroke; exports.tiltToOrientation = _chunkWZYRYYXNcjs.tiltToOrientation; exports.timeLapseVideo = timeLapseVideo; exports.timeLapseZip = timeLapseZip; exports.toStrokePoint = _chunkWZYRYYXNcjs.toStrokePoint; exports.toggleDotTexture = toggleDotTexture; exports.toggleStamp = toggleStamp; exports.toggleStickerRef = toggleStickerRef; exports.translateStencil = translateStencil; exports.updatePaintGradientStop = _chunkIFWLZZCWcjs.updatePaintGradientStop; exports.usesPaintExchange = _chunkHRUK5TFWcjs.usesPaintExchange; exports.uvLightKey = uvLightKey; exports.uvPaper = uvPaper; exports.variationAffine = variationAffine; exports.varyStroke = varyStroke; exports.viewCssTransform = viewCssTransform; exports.viewMatrix = viewMatrix; exports.viewPenToDocument = viewPenToDocument; exports.viewTiltKey = viewTiltKey; exports.wetEngineSummary = wetEngineSummary; exports.wetPaperInput = _chunkWZYRYYXNcjs.wetPaperInput; exports.wetPigmentOf = _chunkWZYRYYXNcjs.wetPigmentOf; exports.wetSupport = _chunk4BMRQSPBcjs.wetSupport; exports.wheelAngle = wheelAngle; exports.wheelPick = wheelPick; exports.wheelPoint = wheelPoint; exports.wheelToHue = _chunkI3Y2Q3PMcjs.wheelToHue; exports.withPaintPlayback = withPaintPlayback; exports.withStrokePath = _chunkWZYRYYXNcjs.withStrokePath;
|