@pixerate/editor 0.103.0 → 0.104.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/THIRD_PARTY_NOTICES.md +2 -0
- package/dist/paint-editor/index.cjs +1209 -122
- package/dist/paint-editor/index.cjs.map +1 -1
- package/dist/paint-editor/index.d.cts +308 -2
- package/dist/paint-editor/index.d.ts +308 -2
- package/dist/paint-editor/index.js +1162 -75
- package/dist/paint-editor/index.js.map +1 -1
- package/package.json +1 -1
- package/skills/pixerate-image-editor/SKILL.md +14 -5
- package/skills/pixerate-paint-editor/SKILL.md +49 -8
|
@@ -517,6 +517,8 @@ interface StrokeSessionInit {
|
|
|
517
517
|
/** The stroke's extra copies as affine maps (recorded with the stroke); `copies` holds all of them as engine copies. */
|
|
518
518
|
affineCopies: readonly Affine[];
|
|
519
519
|
copies: readonly StrokeCopy[];
|
|
520
|
+
/** Applied to each raw sample before it is painted and recorded (perspective snapping). */
|
|
521
|
+
inputFilter?: (p: PenPoint) => PenPoint;
|
|
520
522
|
/** Mixer engine: the brush load at the start of the stroke. */
|
|
521
523
|
mixerLoad: MixerLoad;
|
|
522
524
|
}
|
|
@@ -657,6 +659,9 @@ interface SerializeOptions {
|
|
|
657
659
|
strokes?: boolean;
|
|
658
660
|
/** Later-phase fields to write as they were read. */
|
|
659
661
|
extensions?: PaintDocumentExtensions;
|
|
662
|
+
/** Painting guides (symmetry, perspective, tracing and reference images as PNG data URLs). */
|
|
663
|
+
guides?: unknown;
|
|
664
|
+
swatches?: unknown;
|
|
660
665
|
}
|
|
661
666
|
/** The document as JSON with inline PNG data URLs. */
|
|
662
667
|
declare function serializePaintDocument(state: PaintDocumentState, options?: SerializeOptions): SerializedPaintDocument;
|
|
@@ -665,6 +670,9 @@ declare function serializePaintDocumentExternal(state: PaintDocumentState, store
|
|
|
665
670
|
interface LoadedPaintDocument {
|
|
666
671
|
state: PaintDocumentState;
|
|
667
672
|
extensions: PaintDocumentExtensions;
|
|
673
|
+
/** The saved guides and swatches, as stored (the controller validates them). */
|
|
674
|
+
guides?: unknown;
|
|
675
|
+
swatches?: unknown;
|
|
668
676
|
/** What could not be read (the rest still loads). */
|
|
669
677
|
problems: string[];
|
|
670
678
|
}
|
|
@@ -837,6 +845,213 @@ declare function renderBrushThumbnail(brush: PaintBrush, options: {
|
|
|
837
845
|
color: string;
|
|
838
846
|
}): BrushThumbnail;
|
|
839
847
|
|
|
848
|
+
/**
|
|
849
|
+
* Painting guides: mirror and kaleidoscope symmetry (every stroke paints its reflected or rotated
|
|
850
|
+
* copies as one stroke), perspective guides with one to three vanishing points that strokes snap
|
|
851
|
+
* to, a tracing image under the paint (optionally the source of the stroke colour), and floating
|
|
852
|
+
* reference images to pick colours from. Geometry only: no pixels, no DOM.
|
|
853
|
+
*/
|
|
854
|
+
|
|
855
|
+
type SymmetryMode = 'off' | 'vertical' | 'horizontal' | 'dual' | 'diagonal' | 'kaleidoscope';
|
|
856
|
+
declare const SYMMETRY_MODES: readonly SymmetryMode[];
|
|
857
|
+
interface SymmetryGuide {
|
|
858
|
+
mode: SymmetryMode;
|
|
859
|
+
/** Centre of the axes in document pixels (default the canvas centre). */
|
|
860
|
+
center: {
|
|
861
|
+
x: number;
|
|
862
|
+
y: number;
|
|
863
|
+
};
|
|
864
|
+
/** Turns the axes, degrees clockwise (default 0). */
|
|
865
|
+
rotation: number;
|
|
866
|
+
/** Kaleidoscope: number of segments, 2..32 (default 6). */
|
|
867
|
+
segments: number;
|
|
868
|
+
/** Kaleidoscope: reflect every other segment as well as rotating (default true), like a real kaleidoscope. */
|
|
869
|
+
mirror: boolean;
|
|
870
|
+
}
|
|
871
|
+
interface Point2 {
|
|
872
|
+
x: number;
|
|
873
|
+
y: number;
|
|
874
|
+
}
|
|
875
|
+
interface PerspectiveGuide {
|
|
876
|
+
enabled: boolean;
|
|
877
|
+
/** One to three vanishing points in document pixels (they may lie outside the canvas). */
|
|
878
|
+
points: Point2[];
|
|
879
|
+
/** Strokes snap to the guide lines (default true when enabled). */
|
|
880
|
+
snap: boolean;
|
|
881
|
+
}
|
|
882
|
+
/** A view-only image under the paint, placed over the canvas. */
|
|
883
|
+
interface TracingImage {
|
|
884
|
+
/** PNG or JPEG data URL. */
|
|
885
|
+
src: string;
|
|
886
|
+
/** Natural size of the image in pixels. */
|
|
887
|
+
width: number;
|
|
888
|
+
height: number;
|
|
889
|
+
/** Where it is drawn, in document pixels (default: fitted to the canvas). */
|
|
890
|
+
rect: {
|
|
891
|
+
x: number;
|
|
892
|
+
y: number;
|
|
893
|
+
width: number;
|
|
894
|
+
height: number;
|
|
895
|
+
};
|
|
896
|
+
/** 0..1 (default 0.35). */
|
|
897
|
+
opacity: number;
|
|
898
|
+
visible: boolean;
|
|
899
|
+
/** Strokes without an explicit colour take the tracing image's colour where they start. */
|
|
900
|
+
sampleColors: boolean;
|
|
901
|
+
}
|
|
902
|
+
/** A floating image to look at and pick colours from (shown beside the canvas, never painted). */
|
|
903
|
+
interface ReferenceImage {
|
|
904
|
+
id: string;
|
|
905
|
+
name: string;
|
|
906
|
+
src: string;
|
|
907
|
+
width: number;
|
|
908
|
+
height: number;
|
|
909
|
+
/** Where the panel floats over the viewport, in screen pixels, and its displayed width. */
|
|
910
|
+
x: number;
|
|
911
|
+
y: number;
|
|
912
|
+
displayWidth: number;
|
|
913
|
+
visible: boolean;
|
|
914
|
+
}
|
|
915
|
+
interface PaintGuides {
|
|
916
|
+
symmetry: SymmetryGuide;
|
|
917
|
+
perspective: PerspectiveGuide;
|
|
918
|
+
tracing: TracingImage | null;
|
|
919
|
+
references: ReferenceImage[];
|
|
920
|
+
}
|
|
921
|
+
declare function defaultGuides(canvas: {
|
|
922
|
+
width: number;
|
|
923
|
+
height: number;
|
|
924
|
+
}): PaintGuides;
|
|
925
|
+
declare const MAX_COORDINATE = 1000000;
|
|
926
|
+
declare function normalizeSymmetry(raw: Partial<SymmetryGuide> | Record<string, unknown>, base: SymmetryGuide): SymmetryGuide;
|
|
927
|
+
/** The axis directions of a mirror mode (radians), as photocraft's `directions`. */
|
|
928
|
+
declare function symmetryAxisAngles(g: SymmetryGuide): number[];
|
|
929
|
+
/**
|
|
930
|
+
* The extra copies a stroke paints under the symmetry guide, as affine maps (the stroke itself is
|
|
931
|
+
* not included). Vertical, horizontal and diagonal: one reflection. Dual: two reflections and the
|
|
932
|
+
* point reflection. Kaleidoscope: rotations by 360°/n, and with `mirror` the reflections between them.
|
|
933
|
+
*/
|
|
934
|
+
declare function symmetryCopies(g: SymmetryGuide): Affine[];
|
|
935
|
+
/** The axes clipped to the canvas, for drawing (photocraft's `segments`). */
|
|
936
|
+
declare function symmetryAxisSegments(g: SymmetryGuide, size: {
|
|
937
|
+
width: number;
|
|
938
|
+
height: number;
|
|
939
|
+
}): Array<[Point2, Point2]>;
|
|
940
|
+
declare function normalizePerspective(raw: Partial<PerspectiveGuide> | Record<string, unknown>, base: PerspectiveGuide): PerspectiveGuide;
|
|
941
|
+
/** The line families a perspective guide snaps to at `p`: unit directions. */
|
|
942
|
+
declare function perspectiveDirections(g: PerspectiveGuide, p: Point2): Point2[];
|
|
943
|
+
/** How far the pen must move before a stroke chooses its perspective line (document pixels). */
|
|
944
|
+
declare const SNAP_DECIDE_DISTANCE = 6;
|
|
945
|
+
/**
|
|
946
|
+
* Snaps one stroke to a perspective guide: once the pen has moved `SNAP_DECIDE_DISTANCE` from
|
|
947
|
+
* where it started, the stroke picks the guide line through its start that best matches its
|
|
948
|
+
* direction, and every sample after that is projected onto the line.
|
|
949
|
+
*/
|
|
950
|
+
declare class PerspectiveSnapper {
|
|
951
|
+
private readonly guide;
|
|
952
|
+
private start;
|
|
953
|
+
private dir;
|
|
954
|
+
constructor(guide: PerspectiveGuide);
|
|
955
|
+
/** The line the stroke follows, once chosen. */
|
|
956
|
+
get line(): {
|
|
957
|
+
from: Point2;
|
|
958
|
+
direction: Point2;
|
|
959
|
+
} | null;
|
|
960
|
+
snap<P extends Point2>(p: P): P;
|
|
961
|
+
}
|
|
962
|
+
/** Guide lines to draw for a perspective guide: rays from each vanishing point through the canvas. */
|
|
963
|
+
declare function perspectiveGuideLines(g: PerspectiveGuide, size: {
|
|
964
|
+
width: number;
|
|
965
|
+
height: number;
|
|
966
|
+
}, count?: number): Array<[Point2, Point2]>;
|
|
967
|
+
|
|
968
|
+
/**
|
|
969
|
+
* Colour for painters: hex / RGB / HSV / HSL conversions, a colour wheel that is either the
|
|
970
|
+
* painter's red-yellow-blue wheel (where red's complement is green) or the RGB wheel (where it is
|
|
971
|
+
* cyan), harmonies on it, and swatches.
|
|
972
|
+
*/
|
|
973
|
+
type Rgb255 = [number, number, number];
|
|
974
|
+
declare function parseHexColor(value: unknown, what?: string): Rgb255;
|
|
975
|
+
declare function rgbToHexColor(r: number, g: number, b: number): string;
|
|
976
|
+
/** RGB 0..255 → HSV with h in degrees 0..360, s and v 0..1. */
|
|
977
|
+
declare function rgbToHsv(r: number, g: number, b: number): {
|
|
978
|
+
h: number;
|
|
979
|
+
s: number;
|
|
980
|
+
v: number;
|
|
981
|
+
};
|
|
982
|
+
declare function hsvToRgb(h: number, s: number, v: number): Rgb255;
|
|
983
|
+
/** RGB 0..255 → HSL with h in degrees, s and l 0..1. */
|
|
984
|
+
declare function rgbToHsl(r: number, g: number, b: number): {
|
|
985
|
+
h: number;
|
|
986
|
+
s: number;
|
|
987
|
+
l: number;
|
|
988
|
+
};
|
|
989
|
+
declare function hslToRgb(h: number, s: number, l: number): Rgb255;
|
|
990
|
+
/** Which wheel hues live on: `ryb` (painter's: red ↔ green complements) or `rgb` (red ↔ cyan). */
|
|
991
|
+
type ColorWheel = 'ryb' | 'rgb';
|
|
992
|
+
/** A wheel angle (degrees) → an RGB hue. */
|
|
993
|
+
declare function wheelToHue(angle: number, wheel: ColorWheel): number;
|
|
994
|
+
/** An RGB hue → its wheel angle (degrees). */
|
|
995
|
+
declare function hueToWheel(hue: number, wheel: ColorWheel): number;
|
|
996
|
+
type HarmonyKind = 'complementary' | 'split-complementary' | 'analogous' | 'triadic' | 'tetradic' | 'square' | 'monochromatic';
|
|
997
|
+
declare const HARMONY_KINDS: readonly HarmonyKind[];
|
|
998
|
+
interface HarmonyColor {
|
|
999
|
+
color: string;
|
|
1000
|
+
/** Position on the wheel, degrees. */
|
|
1001
|
+
angle: number;
|
|
1002
|
+
}
|
|
1003
|
+
/**
|
|
1004
|
+
* The colours of a harmony around `base`, the base first. Hue-based harmonies keep the base's
|
|
1005
|
+
* saturation and value and turn it around the wheel; `analogous` spreads by `spread` degrees
|
|
1006
|
+
* (default 30); `monochromatic` keeps the hue and steps the lightness.
|
|
1007
|
+
*/
|
|
1008
|
+
declare function colorHarmony(base: string, kind: HarmonyKind, options?: {
|
|
1009
|
+
wheel?: ColorWheel;
|
|
1010
|
+
spread?: number;
|
|
1011
|
+
}): HarmonyColor[];
|
|
1012
|
+
interface Swatch {
|
|
1013
|
+
color: string;
|
|
1014
|
+
name?: string;
|
|
1015
|
+
}
|
|
1016
|
+
/** A starting palette of our own generic paint colours. */
|
|
1017
|
+
declare const DEFAULT_SWATCHES: readonly Swatch[];
|
|
1018
|
+
|
|
1019
|
+
/**
|
|
1020
|
+
* The mixing pad: a small canvas beside the painting to put paint on, smear it with a palette
|
|
1021
|
+
* knife and pick the mixed colour from. Paint is laid with the Mixer Brush in pigment mode and the
|
|
1022
|
+
* knife is a pigment smudge, so blue and yellow pushed together make green. It is scratch space:
|
|
1023
|
+
* not part of the painting and not in its undo history.
|
|
1024
|
+
*/
|
|
1025
|
+
|
|
1026
|
+
type MixingPadTool = 'paint' | 'knife';
|
|
1027
|
+
declare const MIXING_PAD_WIDTH = 360;
|
|
1028
|
+
declare const MIXING_PAD_HEIGHT = 220;
|
|
1029
|
+
declare class MixingPad {
|
|
1030
|
+
readonly width = 360;
|
|
1031
|
+
readonly height = 220;
|
|
1032
|
+
private surface;
|
|
1033
|
+
/** Increments on every change (for redrawing). */
|
|
1034
|
+
version: number;
|
|
1035
|
+
/** Paints (`paint`, with `color`) or smears (`knife`) through `points` in pad pixels. */
|
|
1036
|
+
stroke(points: readonly PenPoint[], options: {
|
|
1037
|
+
tool: MixingPadTool;
|
|
1038
|
+
color: string;
|
|
1039
|
+
size?: number;
|
|
1040
|
+
}): {
|
|
1041
|
+
bounds: {
|
|
1042
|
+
x: number;
|
|
1043
|
+
y: number;
|
|
1044
|
+
width: number;
|
|
1045
|
+
height: number;
|
|
1046
|
+
} | null;
|
|
1047
|
+
};
|
|
1048
|
+
/** The average colour within `radius` pixels of (x, y), or `null` where the pad is bare. */
|
|
1049
|
+
pick(x: number, y: number, radius?: number): string | null;
|
|
1050
|
+
clear(): void;
|
|
1051
|
+
/** The pad over white, `width × height` RGBA. */
|
|
1052
|
+
pixels(): Uint8ClampedArray;
|
|
1053
|
+
}
|
|
1054
|
+
|
|
840
1055
|
/**
|
|
841
1056
|
* `PaintEditorController`: the natural-media paint editor's state, framework-free.
|
|
842
1057
|
*
|
|
@@ -887,6 +1102,12 @@ interface PaintEditorState {
|
|
|
887
1102
|
canRedo: boolean;
|
|
888
1103
|
undoLabel: string | null;
|
|
889
1104
|
redoLabel: string | null;
|
|
1105
|
+
/** Mirror / kaleidoscope, perspective, tracing image and reference images (saved with the document, not undo steps). */
|
|
1106
|
+
guides: PaintGuides;
|
|
1107
|
+
/** The colour swatches (saved with the document, not undo steps). */
|
|
1108
|
+
swatches: readonly Swatch[];
|
|
1109
|
+
/** Changes whenever the mixing pad does. */
|
|
1110
|
+
mixingPadVersion: number;
|
|
890
1111
|
/** A stroke is in progress. */
|
|
891
1112
|
stroking: boolean;
|
|
892
1113
|
/** Increments on every change. */
|
|
@@ -919,8 +1140,15 @@ interface PaintStrokeInit {
|
|
|
919
1140
|
brush?: Parameters<typeof normalizePaintBrush>[0];
|
|
920
1141
|
/** Jitter seed (default: a new one per stroke). */
|
|
921
1142
|
seed?: number;
|
|
922
|
-
/** Extra copies of the stroke as affine maps (
|
|
1143
|
+
/** Extra copies of the stroke as affine maps (default: the symmetry guide's). */
|
|
923
1144
|
copies?: readonly Affine[];
|
|
1145
|
+
/** Snap the samples to the perspective guide (default true for `beginStroke`, false for `paintStroke`). */
|
|
1146
|
+
snapToPerspective?: boolean;
|
|
1147
|
+
/** Where the stroke starts, for taking its colour from the tracing image before the first sample (`beginStroke`). */
|
|
1148
|
+
start?: {
|
|
1149
|
+
x: number;
|
|
1150
|
+
y: number;
|
|
1151
|
+
};
|
|
924
1152
|
}
|
|
925
1153
|
interface LayerUpdate {
|
|
926
1154
|
name?: string;
|
|
@@ -988,6 +1216,13 @@ declare class PaintEditorController {
|
|
|
988
1216
|
private dirty;
|
|
989
1217
|
private seedCounter;
|
|
990
1218
|
private strokeCounter;
|
|
1219
|
+
private guides;
|
|
1220
|
+
private swatches;
|
|
1221
|
+
private readonly pad;
|
|
1222
|
+
private tracingVersion;
|
|
1223
|
+
private tracingCache;
|
|
1224
|
+
private readonly imagePixels;
|
|
1225
|
+
private nextReferenceId;
|
|
991
1226
|
private readonly viewCompositor;
|
|
992
1227
|
private readonly exportCompositor;
|
|
993
1228
|
constructor(options?: PaintEditorOptions);
|
|
@@ -1154,6 +1389,8 @@ declare class PaintEditorController {
|
|
|
1154
1389
|
private currentLayers;
|
|
1155
1390
|
/** View-only layers between the paper and the paint (the painting guides add the tracing image). */
|
|
1156
1391
|
protected underlayLayers(): ViewLayer[];
|
|
1392
|
+
/** The tracing image resampled onto the canvas (cached until it or the canvas changes). */
|
|
1393
|
+
private tracingNode;
|
|
1157
1394
|
private renderLayers;
|
|
1158
1395
|
/**
|
|
1159
1396
|
* Composites the viewport stack (paper, view-only underlays, layers with the live stroke) tile by
|
|
@@ -1210,10 +1447,79 @@ declare class PaintEditorController {
|
|
|
1210
1447
|
width: number;
|
|
1211
1448
|
height: number;
|
|
1212
1449
|
};
|
|
1450
|
+
private setGuides;
|
|
1451
|
+
/** Mirror and kaleidoscope painting: every new stroke paints its copies too (one stroke, one undo step). */
|
|
1452
|
+
setSymmetry(update: Partial<SymmetryGuide>): SymmetryGuide;
|
|
1453
|
+
/** Perspective guides with one to three vanishing points that pointer strokes snap to. */
|
|
1454
|
+
setPerspective(update: Partial<PerspectiveGuide>): PerspectiveGuide;
|
|
1455
|
+
/** An image from a PNG (base64 or data URL) or from RGBA pixels, stored as a PNG data URL. */
|
|
1456
|
+
private importImage;
|
|
1457
|
+
private decodeImage;
|
|
1458
|
+
/**
|
|
1459
|
+
* Puts an image under the paint to trace over: view only, never in exports. Placed to fit the
|
|
1460
|
+
* canvas unless `rect` is given; `sampleColors` makes strokes take their colour from it.
|
|
1461
|
+
*/
|
|
1462
|
+
setTracingImage(options: {
|
|
1463
|
+
png?: string;
|
|
1464
|
+
pixels?: PixelImage;
|
|
1465
|
+
rect?: TracingImage['rect'];
|
|
1466
|
+
opacity?: number;
|
|
1467
|
+
sampleColors?: boolean;
|
|
1468
|
+
}): TracingImage;
|
|
1469
|
+
/** Changes the tracing image's opacity, visibility, placement or colour sampling. */
|
|
1470
|
+
updateTracing(update: Partial<Pick<TracingImage, 'opacity' | 'visible' | 'sampleColors' | 'rect'>>, base?: TracingImage | null): TracingImage;
|
|
1471
|
+
clearTracingImage(): void;
|
|
1472
|
+
/** The tracing image's colour at a document pixel, or `null` outside it or where it is clear. */
|
|
1473
|
+
sampleTracingColor(x: number, y: number): string | null;
|
|
1474
|
+
/** Adds a floating reference image to look at and pick colours from. */
|
|
1475
|
+
addReferenceImage(options: {
|
|
1476
|
+
png?: string;
|
|
1477
|
+
pixels?: PixelImage;
|
|
1478
|
+
name?: string;
|
|
1479
|
+
x?: number;
|
|
1480
|
+
y?: number;
|
|
1481
|
+
displayWidth?: number;
|
|
1482
|
+
}): ReferenceImage;
|
|
1483
|
+
private requireReference;
|
|
1484
|
+
/** Moves, resizes, renames, shows or hides a reference image. */
|
|
1485
|
+
updateReferenceImage(id: string, update: Partial<Pick<ReferenceImage, 'name' | 'x' | 'y' | 'displayWidth' | 'visible'>>): ReferenceImage;
|
|
1486
|
+
removeReferenceImage(id: string): void;
|
|
1487
|
+
/** A reference image's pixels (decoded once). */
|
|
1488
|
+
referencePixels(id: string): PixelImage;
|
|
1489
|
+
/** The colour of a reference image at its pixel (x, y). */
|
|
1490
|
+
pickReferenceColor(id: string, x: number, y: number): string;
|
|
1491
|
+
private readGuides;
|
|
1492
|
+
/** Colour harmonies around a colour (default the paint colour) on the painter's RYB wheel or the RGB wheel. */
|
|
1493
|
+
harmony(kind: HarmonyKind, options?: {
|
|
1494
|
+
color?: string;
|
|
1495
|
+
wheel?: ColorWheel;
|
|
1496
|
+
spread?: number;
|
|
1497
|
+
}): HarmonyColor[];
|
|
1498
|
+
addSwatch(color: string, name?: string): Swatch[];
|
|
1499
|
+
removeSwatch(index: number): Swatch[];
|
|
1500
|
+
setSwatches(swatches: readonly Swatch[]): Swatch[];
|
|
1501
|
+
get mixingPad(): MixingPad;
|
|
1502
|
+
/** Paints (`paint`) or smears with the palette knife (`knife`) on the mixing pad, in pad pixels. */
|
|
1503
|
+
mixingPadStroke(points: readonly PenPoint[], options?: {
|
|
1504
|
+
tool?: MixingPadTool;
|
|
1505
|
+
color?: string;
|
|
1506
|
+
size?: number;
|
|
1507
|
+
}): {
|
|
1508
|
+
bounds: RasterRect | null;
|
|
1509
|
+
};
|
|
1510
|
+
/** Picks the mixed colour on the pad (averaged over `radius` px); with `setColor` it becomes the paint colour. */
|
|
1511
|
+
mixingPadPick(x: number, y: number, options?: {
|
|
1512
|
+
radius?: number;
|
|
1513
|
+
setColor?: boolean;
|
|
1514
|
+
}): string | null;
|
|
1515
|
+
clearMixingPad(): void;
|
|
1213
1516
|
/** A layer's tile surface (live while stroking), for thumbnails. */
|
|
1214
1517
|
layerSurface(id: string): TiledSurface | null;
|
|
1215
1518
|
}
|
|
1216
1519
|
|
|
1520
|
+
/** Largest tracing or reference image side, in pixels. */
|
|
1521
|
+
declare const MAX_IMAGE_SIDE = 8192;
|
|
1522
|
+
|
|
1217
1523
|
/**
|
|
1218
1524
|
* Agent tools for the paint editor (`createPaintEditorToolProvider`). Strict schemas, every
|
|
1219
1525
|
* argument described, all four annotations. Each write is one undo step (or editor state, said so)
|
|
@@ -1230,4 +1536,4 @@ interface PaintEditorToolProviderOptions {
|
|
|
1230
1536
|
/** Agent tools for one paint editor. */
|
|
1231
1537
|
declare function createPaintEditorToolProvider(controller: PaintEditorController, options?: PaintEditorToolProviderOptions): AgentToolProvider;
|
|
1232
1538
|
|
|
1233
|
-
export { type Affine, BRUSH_ID, BRUSH_ROTATIONS, BUILTIN_BRUSHES, type BrushDynamics, type BrushLibraryFile, type BrushRotation, type BrushThumbnail, DEFAULT_BRUSH_ID, DEFAULT_DPI, DEFAULT_DYNAMICS, DEFAULT_PAPER, DEFAULT_VIEW, DryStroke, type DryStrokeOptions, type FillLayerOptions, GRAIN_PATTERNS, GRAIN_TILE, type GrainPattern, type GrainTuning, type Hand, IDENTITY_AFFINE, IDENTITY_COPY, type ImageEncoder, type ImageFormat, type ImageNode, type LayerUpdate, type Linear2, type LoadedPaintDocument, MAX_CANVAS_SIDE, MAX_ZOOM, MIN_CANVAS_SIDE, MIN_ZOOM, PAINT_BRUSH_CATEGORIES, PAINT_BRUSH_ENGINES, PAINT_FORMAT, PAINT_SCHEMA_VERSION, PAPER_FAMILIES, PAPER_LIBRARY, PAPER_NODE_ID, type PaintAssetStore, type PaintBrush, type PaintBrushCategory, type PaintBrushEngine, type PaintCanvas, PaintDocumentError, type PaintDocumentExtensions, type PaintDocumentState, PaintEditorController, PaintEditorError, type PaintEditorOptions, type PaintEditorState, type PaintEditorToolProviderOptions, type PaintGroupLayer, type PaintLayer, type PaintLayerInfo, type PaintPixelLayer, type PaintStrokeInit, type PaintStrokeResult, PaintStrokeSession, type PaintView, type PaperFamily, PaperGrain, type PaperNode, type PaperSettings, type PaperTiling, type PenDab, PenDabWalker, type PenPoint, PenSmoother, type PixelImage, type PointerSample, type RecordedStroke, type RenderOptions, type ReplayOptions, type SerializeOptions, type SerializedPaintDocument, type StrokeCopy, type StrokeSessionHost, type StrokeSessionInit, type StrokeVariation, TRACING_NODE_ID, TileableNoise, type ViewLayer, affineCopy, applyAffine, brushToJSON, clonePaper, composeAffine, createPaintCompositor, createPaintDocument, createPaintEditorToolProvider, createPaintLayer, defaultImageEncoder, deserializePaintDocument, deserializePaintDocumentAsync, documentExtensions, documentToScreen, downsampleRgba, fitZoom, grainCatch, grainHeights, hash2, hexToRgb8, invertAffine, isPalmTouch, mapPenPoint, mix32, mixerLoadForStroke, mixerTip, newPaintLayerId, normalizeBrushStroke, normalizeCanvas, normalizeDynamics, normalizePaintBrush, normalizePaper, normalizeRotation, normalizeView, paperGrain, paperKey, paperNode, paperPreset, parseBrushLibrary, penOrientation, pointerToPenPoint, rand01, randSigned, renderBrushThumbnail, renderPaper, samplePressure, screenToDocument, seedFromString, serializePaintDocument, serializePaintDocumentExternal, strokeBounds, thumbnailStroke, tiltToOrientation, toStrokePoint, variationAffine, varyStroke, viewCssTransform, viewMatrix, viewPenToDocument };
|
|
1539
|
+
export { type Affine, BRUSH_ID, BRUSH_ROTATIONS, BUILTIN_BRUSHES, type BrushDynamics, type BrushLibraryFile, type BrushRotation, type BrushThumbnail, type ColorWheel, DEFAULT_BRUSH_ID, DEFAULT_DPI, DEFAULT_DYNAMICS, DEFAULT_PAPER, DEFAULT_SWATCHES, DEFAULT_VIEW, DryStroke, type DryStrokeOptions, type FillLayerOptions, GRAIN_PATTERNS, GRAIN_TILE, type GrainPattern, type GrainTuning, HARMONY_KINDS, type Hand, type HarmonyColor, type HarmonyKind, IDENTITY_AFFINE, IDENTITY_COPY, type ImageEncoder, type ImageFormat, type ImageNode, type LayerUpdate, type Linear2, type LoadedPaintDocument, MAX_CANVAS_SIDE, MAX_COORDINATE, MAX_IMAGE_SIDE, MAX_ZOOM, MIN_CANVAS_SIDE, MIN_ZOOM, MIXING_PAD_HEIGHT, MIXING_PAD_WIDTH, MixingPad, type MixingPadTool, PAINT_BRUSH_CATEGORIES, PAINT_BRUSH_ENGINES, PAINT_FORMAT, PAINT_SCHEMA_VERSION, PAPER_FAMILIES, PAPER_LIBRARY, PAPER_NODE_ID, type PaintAssetStore, type PaintBrush, type PaintBrushCategory, type PaintBrushEngine, type PaintCanvas, PaintDocumentError, type PaintDocumentExtensions, type PaintDocumentState, PaintEditorController, PaintEditorError, type PaintEditorOptions, type PaintEditorState, type PaintEditorToolProviderOptions, type PaintGroupLayer, type PaintGuides, type PaintLayer, type PaintLayerInfo, type PaintPixelLayer, type PaintStrokeInit, type PaintStrokeResult, PaintStrokeSession, type PaintView, type PaperFamily, PaperGrain, type PaperNode, type PaperSettings, type PaperTiling, type PenDab, PenDabWalker, type PenPoint, PenSmoother, type PerspectiveGuide, PerspectiveSnapper, type PixelImage, type Point2, type PointerSample, type RecordedStroke, type ReferenceImage, type RenderOptions, type ReplayOptions, type Rgb255, SNAP_DECIDE_DISTANCE, SYMMETRY_MODES, type SerializeOptions, type SerializedPaintDocument, type StrokeCopy, type StrokeSessionHost, type StrokeSessionInit, type StrokeVariation, type Swatch, type SymmetryGuide, type SymmetryMode, TRACING_NODE_ID, TileableNoise, type TracingImage, type ViewLayer, affineCopy, applyAffine, brushToJSON, clonePaper, colorHarmony, composeAffine, createPaintCompositor, createPaintDocument, createPaintEditorToolProvider, createPaintLayer, defaultGuides, defaultImageEncoder, deserializePaintDocument, deserializePaintDocumentAsync, documentExtensions, documentToScreen, downsampleRgba, fitZoom, grainCatch, grainHeights, hash2, hexToRgb8, hslToRgb, hsvToRgb, hueToWheel, invertAffine, isPalmTouch, mapPenPoint, mix32, mixerLoadForStroke, mixerTip, newPaintLayerId, normalizeBrushStroke, normalizeCanvas, normalizeDynamics, normalizePaintBrush, normalizePaper, normalizePerspective, normalizeRotation, normalizeSymmetry, normalizeView, paperGrain, paperKey, paperNode, paperPreset, parseBrushLibrary, parseHexColor, penOrientation, perspectiveDirections, perspectiveGuideLines, pointerToPenPoint, rand01, randSigned, renderBrushThumbnail, renderPaper, rgbToHexColor, rgbToHsl, rgbToHsv, samplePressure, screenToDocument, seedFromString, serializePaintDocument, serializePaintDocumentExternal, strokeBounds, symmetryAxisAngles, symmetryAxisSegments, symmetryCopies, thumbnailStroke, tiltToOrientation, toStrokePoint, variationAffine, varyStroke, viewCssTransform, viewMatrix, viewPenToDocument, wheelToHue };
|