@pixerate/editor 0.260.0 → 0.262.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/agent/index.cjs +19 -3
- package/dist/agent/index.js +21 -5
- package/dist/bridge/cli.cjs +4 -3
- package/dist/bridge/cli.js +3 -2
- package/dist/bridge/index.cjs +4 -3
- package/dist/bridge/index.js +3 -2
- package/dist/{chunk-KBNCEZZB.cjs → chunk-5NRD76T7.cjs} +9 -7
- package/dist/{chunk-SPPDMY7T.js → chunk-6LWEL5DO.js} +4 -2
- package/dist/{chunk-RTPBM46F.cjs → chunk-7TD63DZP.cjs} +1 -294
- package/dist/{chunk-ABHOYBZD.js → chunk-K4BGRCSH.js} +1 -294
- package/dist/chunk-SYEOA5MS.js +301 -0
- package/dist/{chunk-5DLCOQOQ.cjs → chunk-YBC3RKT2.cjs} +177 -16
- package/dist/chunk-ZEKI6EPI.cjs +301 -0
- package/dist/{chunk-UCYW4M66.js → chunk-ZQI3WUPP.js} +163 -2
- package/dist/paint-editor/contract.d.cts +11 -0
- package/dist/paint-editor/contract.d.ts +11 -0
- package/dist/paint-editor/controller.d.cts +17 -0
- package/dist/paint-editor/controller.d.ts +17 -0
- package/dist/paint-editor/index.cjs +245 -84
- package/dist/paint-editor/index.d.cts +2 -1
- package/dist/paint-editor/index.d.ts +2 -1
- package/dist/paint-editor/index.js +163 -2
- package/dist/paint-editor/path-samples.d.cts +19 -0
- package/dist/paint-editor/path-samples.d.ts +19 -0
- package/dist/paint-editor/ui.d.cts +6 -0
- package/dist/paint-editor/ui.d.ts +6 -0
- package/dist/tools/conformance.d.cts +138 -0
- package/dist/tools/conformance.d.ts +138 -0
- package/dist/tools/index.cjs +19 -3
- package/dist/tools/index.d.cts +1 -0
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.js +21 -5
- package/package.json +1 -1
- package/skills/pixerate-paint-editor/SKILL.md +2 -0
- package/skills/pixerate-paint-sketch-to-finish/SKILL.md +5 -1
package/dist/tools/index.cjs
CHANGED
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
var _chunk5DLCOQOQcjs = require('../chunk-5DLCOQOQ.cjs');
|
|
18
17
|
|
|
19
18
|
|
|
20
19
|
|
|
@@ -22,6 +21,7 @@ var _chunk5DLCOQOQcjs = require('../chunk-5DLCOQOQ.cjs');
|
|
|
22
21
|
|
|
23
22
|
|
|
24
23
|
|
|
24
|
+
var _chunkYBC3RKT2cjs = require('../chunk-YBC3RKT2.cjs');
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
|
|
@@ -30,6 +30,7 @@ var _chunk5DLCOQOQcjs = require('../chunk-5DLCOQOQ.cjs');
|
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
|
|
33
|
+
var _chunkZEKI6EPIcjs = require('../chunk-ZEKI6EPI.cjs');
|
|
33
34
|
|
|
34
35
|
|
|
35
36
|
|
|
@@ -40,7 +41,15 @@ var _chunk5DLCOQOQcjs = require('../chunk-5DLCOQOQ.cjs');
|
|
|
40
41
|
|
|
41
42
|
|
|
42
43
|
|
|
43
|
-
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
var _chunk7TD63DZPcjs = require('../chunk-7TD63DZP.cjs');
|
|
44
53
|
|
|
45
54
|
|
|
46
55
|
|
|
@@ -201,4 +210,11 @@ var _chunk2BSBFBOAcjs = require('../chunk-2BSBFBOA.cjs');
|
|
|
201
210
|
|
|
202
211
|
|
|
203
212
|
|
|
204
|
-
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
exports.AgentPlayback = _chunk3SLBXKAWcjs.AgentPlayback; exports.CAPTURE_EXCLUDE_SELECTOR = _chunkSVFEVKLFcjs.CAPTURE_EXCLUDE_SELECTOR; exports.CAPTURE_OVERLAY_SELECTORS = _chunkSVFEVKLFcjs.CAPTURE_OVERLAY_SELECTORS; exports.CONFORMANCE_BINARY_MIN_LENGTH = _chunkYBC3RKT2cjs.CONFORMANCE_BINARY_MIN_LENGTH; exports.ConformanceIds = _chunkYBC3RKT2cjs.ConformanceIds; exports.EDITOR_CANVAS_TOOLS = _chunkSVFEVKLFcjs.EDITOR_CANVAS_TOOLS; exports.EDITOR_MCP_TOOLS = _chunkSVFEVKLFcjs.EDITOR_MCP_TOOLS; exports.EDITOR_PROMPT_TOOLS = _chunkSVFEVKLFcjs.EDITOR_PROMPT_TOOLS; exports.EDIT_OPERATION_REQUIRED_ARGUMENTS = _chunkSVFEVKLFcjs.EDIT_OPERATION_REQUIRED_ARGUMENTS; exports.EXPORT_EXCLUDED_SELECTORS = _chunkSVFEVKLFcjs.EXPORT_EXCLUDED_SELECTORS; exports.JSON_RPC_ERRORS = _chunkZEKI6EPIcjs.JSON_RPC_ERRORS; exports.MCP_PROTOCOL_VERSIONS = _chunkZEKI6EPIcjs.MCP_PROTOCOL_VERSIONS; exports.MCP_TOOL_CANVAS_ADD_NODE = _chunkSVFEVKLFcjs.MCP_TOOL_CANVAS_ADD_NODE; exports.MCP_TOOL_CANVAS_CONNECT = _chunkSVFEVKLFcjs.MCP_TOOL_CANVAS_CONNECT; exports.MCP_TOOL_CANVAS_HIGHLIGHT = _chunkSVFEVKLFcjs.MCP_TOOL_CANVAS_HIGHLIGHT; exports.MCP_TOOL_CANVAS_LAYOUT = _chunkSVFEVKLFcjs.MCP_TOOL_CANVAS_LAYOUT; exports.MCP_TOOL_CANVAS_REMOVE_NODES = _chunkSVFEVKLFcjs.MCP_TOOL_CANVAS_REMOVE_NODES; exports.MCP_TOOL_CANVAS_SELECT = _chunkSVFEVKLFcjs.MCP_TOOL_CANVAS_SELECT; exports.MCP_TOOL_CANVAS_UPDATE_NODE = _chunkSVFEVKLFcjs.MCP_TOOL_CANVAS_UPDATE_NODE; exports.MCP_TOOL_EDIT_CANVAS = _chunkSVFEVKLFcjs.MCP_TOOL_EDIT_CANVAS; exports.MCP_TOOL_EDIT_PROMPT = _chunkSVFEVKLFcjs.MCP_TOOL_EDIT_PROMPT; exports.MCP_TOOL_GET_EDITOR_STATE = _chunkSVFEVKLFcjs.MCP_TOOL_GET_EDITOR_STATE; exports.MCP_TOOL_PROMPT_INSERT_TEXT = _chunkSVFEVKLFcjs.MCP_TOOL_PROMPT_INSERT_TEXT; exports.MCP_TOOL_PROMPT_REPLACE_RANGE = _chunkSVFEVKLFcjs.MCP_TOOL_PROMPT_REPLACE_RANGE; exports.MCP_TOOL_PROMPT_SELECT = _chunkSVFEVKLFcjs.MCP_TOOL_PROMPT_SELECT; exports.MCP_TOOL_PROMPT_SET_VARIABLE = _chunkSVFEVKLFcjs.MCP_TOOL_PROMPT_SET_VARIABLE; exports.MCP_TOOL_VIEW_EDITOR = _chunkSVFEVKLFcjs.MCP_TOOL_VIEW_EDITOR; exports.PRESENCE_COLORS = _chunkK7ENM55Pcjs.PRESENCE_COLORS; exports.PerformanceQueue = _chunkK7ENM55Pcjs.PerformanceQueue; exports.PresenceStore = _chunkK7ENM55Pcjs.PresenceStore; exports.TOOL_BRIDGE_DEFAULT_PORT = _chunkZEKI6EPIcjs.TOOL_BRIDGE_DEFAULT_PORT; exports.TOOL_BRIDGE_PROTOCOL = _chunkZEKI6EPIcjs.TOOL_BRIDGE_PROTOCOL; exports.TOOL_DISCOVERY_TOOLS = _chunk7TD63DZPcjs.TOOL_DISCOVERY_TOOLS; exports.TOOL_NAMESPACE_SEPARATOR = _chunk7TD63DZPcjs.TOOL_NAMESPACE_SEPARATOR; exports.ToolRegistry = _chunk7TD63DZPcjs.ToolRegistry; exports.ToolRegistryError = _chunk7TD63DZPcjs.ToolRegistryError; exports.ToolRegistryView = _chunk7TD63DZPcjs.ToolRegistryView; exports.UNSAFE_JSON_KEYS = _chunk2BSBFBOAcjs.UNSAFE_JSON_KEYS; exports.baseToolName = _chunk7TD63DZPcjs.baseToolName; exports.callEvalTool = _chunkYBC3RKT2cjs.callEvalTool; exports.captureInputSchema = _chunkN2FGYZ4Qcjs.captureInputSchema; exports.captureOutputSize = _chunkN2FGYZ4Qcjs.captureOutputSize; exports.cloneElementWithStyles = _chunkSVFEVKLFcjs.cloneElementWithStyles; exports.conformanceResult = _chunkYBC3RKT2cjs.conformanceResult; exports.connectToolBridge = _chunkZEKI6EPIcjs.connectToolBridge; exports.createAgentPlayback = _chunk3SLBXKAWcjs.createAgentPlayback; exports.createCaptureTool = _chunkN2FGYZ4Qcjs.createCaptureTool; exports.createCaptureToolProvider = _chunkN2FGYZ4Qcjs.createCaptureToolProvider; exports.createElementCaptureSurface = _chunkSVFEVKLFcjs.createElementCaptureSurface; exports.createInstantPresenceClock = _chunkK7ENM55Pcjs.createInstantPresenceClock; exports.createMcpServer = _chunkZEKI6EPIcjs.createMcpServer; exports.createOriginMiddleware = _chunkYBC3RKT2cjs.createOriginMiddleware; exports.createPlaybackToolProvider = _chunk3SLBXKAWcjs.createPlaybackToolProvider; exports.createStyleResolver = _chunkYBC3RKT2cjs.createStyleResolver; exports.createStyleToolProvider = _chunkYBC3RKT2cjs.createStyleToolProvider; exports.createToolRegistry = _chunk7TD63DZPcjs.createToolRegistry; exports.derivePlaybackSteps = _chunk3SLBXKAWcjs.derivePlaybackSteps; exports.elementToSvg = _chunkSVFEVKLFcjs.elementToSvg; exports.errorResult = _chunk7TD63DZPcjs.errorResult; exports.failedEvalChecks = _chunkYBC3RKT2cjs.failedEvalChecks; exports.imageEvalFixturePixels = _chunkYBC3RKT2cjs.imageEvalFixturePixels; exports.isUnsafeJsonKey = _chunk2BSBFBOAcjs.isUnsafeJsonKey; exports.listSkillEvals = _chunkYBC3RKT2cjs.listSkillEvals; exports.listSkills = _chunk7TD63DZPcjs.listSkills; exports.locatePlaybackChrome = _chunk3SLBXKAWcjs.locatePlaybackChrome; exports.matchesEvalExpectation = _chunkYBC3RKT2cjs.matchesEvalExpectation; exports.memoryStyleStore = _chunkYBC3RKT2cjs.memoryStyleStore; exports.normalizeConformanceValue = _chunkYBC3RKT2cjs.normalizeConformanceValue; exports.omitConformancePaths = _chunkYBC3RKT2cjs.omitConformancePaths; exports.parseSkillFrontmatter = _chunk7TD63DZPcjs.parseSkillFrontmatter; exports.parseStyleDomains = _chunkYBC3RKT2cjs.parseStyleDomains; exports.playbackRectFromClient = _chunk3SLBXKAWcjs.playbackRectFromClient; exports.playbackRefsFromArgs = _chunk3SLBXKAWcjs.playbackRefsFromArgs; exports.playbackRefsFromResult = _chunk3SLBXKAWcjs.playbackRefsFromResult; exports.rasterizeElement = _chunkSVFEVKLFcjs.rasterizeElement; exports.readSkillFile = _chunk7TD63DZPcjs.readSkillFile; exports.readingTime = _chunk3SLBXKAWcjs.readingTime; exports.realPresenceClock = _chunkK7ENM55Pcjs.realPresenceClock; exports.renderStyle = _chunkYBC3RKT2cjs.renderStyle; exports.resolveCaptureRequest = _chunkN2FGYZ4Qcjs.resolveCaptureRequest; exports.resolveConformanceArguments = _chunkYBC3RKT2cjs.resolveConformanceArguments; exports.runConformanceScenario = _chunkYBC3RKT2cjs.runConformanceScenario; exports.runStyleChecks = _chunkYBC3RKT2cjs.runStyleChecks; exports.runToolScript = _chunkYBC3RKT2cjs.runToolScript; exports.searchTokens = _chunk7TD63DZPcjs.searchTokens; exports.searchTools = _chunk7TD63DZPcjs.searchTools; exports.stripPrototypeKeys = _chunk2BSBFBOAcjs.stripPrototypeKeys; exports.summarize = _chunk7TD63DZPcjs.summarize; exports.toCapturedImageData = _chunkN2FGYZ4Qcjs.toCapturedImageData; exports.toToolResult = _chunk7TD63DZPcjs.toToolResult; exports.toolResultError = _chunkYBC3RKT2cjs.toolResultError; exports.toolResultValue = _chunkYBC3RKT2cjs.toolResultValue; exports.toolsetInstructions = _chunkZEKI6EPIcjs.toolsetInstructions; exports.toolsetName = _chunk7TD63DZPcjs.toolsetName; exports.trackPresenceDrag = _chunkK7ENM55Pcjs.trackPresenceDrag; exports.tweenPresenceCursor = _chunkK7ENM55Pcjs.tweenPresenceCursor; exports.unionCaptureRects = _chunkN2FGYZ4Qcjs.unionCaptureRects; exports.unionRects = _chunk3SLBXKAWcjs.unionRects; exports.unknownToolMessage = _chunk7TD63DZPcjs.unknownToolMessage; exports.validateJsonSchema = _chunkWOFXZ3XUcjs.validateJsonSchema;
|
package/dist/tools/index.d.cts
CHANGED
package/dist/tools/index.d.ts
CHANGED
package/dist/tools/index.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
|
+
CONFORMANCE_BINARY_MIN_LENGTH,
|
|
3
|
+
ConformanceIds,
|
|
2
4
|
callEvalTool,
|
|
5
|
+
conformanceResult,
|
|
3
6
|
createOriginMiddleware,
|
|
4
7
|
createStyleResolver,
|
|
5
8
|
createStyleToolProvider,
|
|
@@ -8,26 +11,33 @@ import {
|
|
|
8
11
|
listSkillEvals,
|
|
9
12
|
matchesEvalExpectation,
|
|
10
13
|
memoryStyleStore,
|
|
14
|
+
normalizeConformanceValue,
|
|
15
|
+
omitConformancePaths,
|
|
11
16
|
parseStyleDomains,
|
|
12
17
|
renderStyle,
|
|
18
|
+
resolveConformanceArguments,
|
|
19
|
+
runConformanceScenario,
|
|
13
20
|
runStyleChecks,
|
|
14
21
|
runToolScript,
|
|
15
22
|
toolResultError,
|
|
16
23
|
toolResultValue
|
|
17
|
-
} from "../chunk-
|
|
24
|
+
} from "../chunk-ZQI3WUPP.js";
|
|
18
25
|
import {
|
|
19
26
|
JSON_RPC_ERRORS,
|
|
20
27
|
MCP_PROTOCOL_VERSIONS,
|
|
21
28
|
TOOL_BRIDGE_DEFAULT_PORT,
|
|
22
29
|
TOOL_BRIDGE_PROTOCOL,
|
|
30
|
+
connectToolBridge,
|
|
31
|
+
createMcpServer,
|
|
32
|
+
toolsetInstructions
|
|
33
|
+
} from "../chunk-SYEOA5MS.js";
|
|
34
|
+
import {
|
|
23
35
|
TOOL_DISCOVERY_TOOLS,
|
|
24
36
|
TOOL_NAMESPACE_SEPARATOR,
|
|
25
37
|
ToolRegistry,
|
|
26
38
|
ToolRegistryError,
|
|
27
39
|
ToolRegistryView,
|
|
28
40
|
baseToolName,
|
|
29
|
-
connectToolBridge,
|
|
30
|
-
createMcpServer,
|
|
31
41
|
createToolRegistry,
|
|
32
42
|
errorResult,
|
|
33
43
|
listSkills,
|
|
@@ -37,10 +47,9 @@ import {
|
|
|
37
47
|
searchTools,
|
|
38
48
|
summarize,
|
|
39
49
|
toToolResult,
|
|
40
|
-
toolsetInstructions,
|
|
41
50
|
toolsetName,
|
|
42
51
|
unknownToolMessage
|
|
43
|
-
} from "../chunk-
|
|
52
|
+
} from "../chunk-K4BGRCSH.js";
|
|
44
53
|
import {
|
|
45
54
|
AgentPlayback,
|
|
46
55
|
createAgentPlayback,
|
|
@@ -111,6 +120,8 @@ export {
|
|
|
111
120
|
AgentPlayback,
|
|
112
121
|
CAPTURE_EXCLUDE_SELECTOR,
|
|
113
122
|
CAPTURE_OVERLAY_SELECTORS,
|
|
123
|
+
CONFORMANCE_BINARY_MIN_LENGTH,
|
|
124
|
+
ConformanceIds,
|
|
114
125
|
EDITOR_CANVAS_TOOLS,
|
|
115
126
|
EDITOR_MCP_TOOLS,
|
|
116
127
|
EDITOR_PROMPT_TOOLS,
|
|
@@ -149,6 +160,7 @@ export {
|
|
|
149
160
|
captureInputSchema,
|
|
150
161
|
captureOutputSize,
|
|
151
162
|
cloneElementWithStyles,
|
|
163
|
+
conformanceResult,
|
|
152
164
|
connectToolBridge,
|
|
153
165
|
createAgentPlayback,
|
|
154
166
|
createCaptureTool,
|
|
@@ -172,6 +184,8 @@ export {
|
|
|
172
184
|
locatePlaybackChrome,
|
|
173
185
|
matchesEvalExpectation,
|
|
174
186
|
memoryStyleStore,
|
|
187
|
+
normalizeConformanceValue,
|
|
188
|
+
omitConformancePaths,
|
|
175
189
|
parseSkillFrontmatter,
|
|
176
190
|
parseStyleDomains,
|
|
177
191
|
playbackRectFromClient,
|
|
@@ -183,6 +197,8 @@ export {
|
|
|
183
197
|
realPresenceClock,
|
|
184
198
|
renderStyle,
|
|
185
199
|
resolveCaptureRequest,
|
|
200
|
+
resolveConformanceArguments,
|
|
201
|
+
runConformanceScenario,
|
|
186
202
|
runStyleChecks,
|
|
187
203
|
runToolScript,
|
|
188
204
|
searchTokens,
|
package/package.json
CHANGED
|
@@ -109,6 +109,7 @@ the pitfalls, and uses the tools below.
|
|
|
109
109
|
- **Give points a time `t`** (milliseconds, about 8..16 ms apart for natural speed) when using an ink or brush pen: velocity dynamics thin fast strokes. Without `t` there is no velocity effect.
|
|
110
110
|
- **Tilt** (`altitude` near 0.3..0.6 radians with an `azimuth`) turns a pencil into broad side shading; upright points draw a fine line.
|
|
111
111
|
- **Space points** about a third of the brush size apart or closer; the brush fills in dabs between them. Long smooth curves need more points than straight lines.
|
|
112
|
+
- **Brush geometry with `stroke_path`**: for clean curves, circles, outlines and lettering, give SVG path data and a `pressure` taper instead of hundreds of points; the brush keeps its grain and character. Send the shape as one path with several subpaths to keep it one undo step.
|
|
112
113
|
- **Use `rotation: "stroke"`** for flat tips (pastel, charcoal, chisel marker) so the mark turns with the path; `fixed` for calligraphic nibs.
|
|
113
114
|
- **Blending tools**:
|
|
114
115
|
- `blender`: `strength` 0.3..0.6 for soft transitions, `distance` 0.2..0.5 (fraction of the tip) for how far colours travel. Keep `mixing: "pigment"` for painterly blends; `rgb` blends like a soft blur. Work along an edge in short strokes rather than over everything.
|
|
@@ -320,6 +321,7 @@ Listing, saving, sharing and previewing brushes are the brush library's tools (`
|
|
|
320
321
|
| Tool | Use |
|
|
321
322
|
| --- | --- |
|
|
322
323
|
| `paint_stroke` | Paint one stroke through `points` (document px; `pressure` 0..1, `t` ms, `tiltX` / `tiltY` or `altitude` / `azimuth`, `twist`) with `brushId` (default the active brush), optional per-stroke `brush` facet changes (as `set_brush` takes), `color` or `paint` (a gradient for this stroke), `layerId`, `seed`, `snapToPerspective`. The symmetry guide adds its copies; a sampling tracing image supplies the colour when `color` is missing. Returns `layerId`, `bounds`, `dabs`, `strokeId` and, for brushes that pick up paint, `mixerLoad` (what the brush carries now). Refused on locked, hidden or group layers, with the fix in the message. |
|
|
324
|
+
| `stroke_path` | Brush SVG path data (`path`, document px; M, L, C, Q, A, Z…) with the active brush or `brushId` / `brush`, as if drawn along it by hand: each subpath one recorded stroke, sampled every `spacing` px (default 2), with a `pressure` profile spread along each subpath (`[0.2, 1, 0.2]` tapers both ends). One undo step. Returns `layerId`, `bounds`, `dabs` and `strokeIds` (for `replay_strokes`, `update_stroke`). Use it for clean curves, outlines of shapes and lettering guides instead of working out points; use `paint_stroke` when the marks need time or tilt. |
|
|
323
325
|
| `list_strokes` | Read the recorded strokes, oldest first (default the last 100): id, layer, brush, colour, point count, seed, bounds, `live`. With `ids`, their points too; with `layerId`, one layer's. With `live: true`, the editable strokes of stroke layers as they are now, bottom first: the ids for the stroke layer tools. |
|
|
324
326
|
| `get_live_stroke` | Read the stroke the user is painting right now (layer, brush, colour, samples so far; `live: false` when none). For painting along with the user; hosts stream the samples live. |
|
|
325
327
|
| `stroke_at` | Read the top-most stroke of a stroke layer that painted the pixel at `x`, `y`, or null. Use it to pick one stroke among overlapping ones. |
|
|
@@ -39,7 +39,9 @@ This skill is the method. `pixerate-paint-editor` has the full tool reference.
|
|
|
39
39
|
reference.
|
|
40
40
|
**Check:** `list_strokes` shows pencil strokes on the Sketch layer.
|
|
41
41
|
3. **Ink.** `add_layer` "Ink" above it; `ink-pen` or `brush-pen`, dark colour, long strokes with
|
|
42
|
-
points that carry `pressure` (lighter at the ends) and `t` for speed dynamics.
|
|
42
|
+
points that carry `pressure` (lighter at the ends) and `t` for speed dynamics. For clean
|
|
43
|
+
geometric lines (curves, circles, panel borders) use `stroke_path` with SVG path data and a
|
|
44
|
+
`pressure` taper such as `[0.3, 1, 0.3]`.
|
|
43
45
|
**Check:** `pick_color` on a line is dark.
|
|
44
46
|
4. **Hide the sketch.** `update_layer` the Sketch layer `visible: false` (or lower its `opacity`
|
|
45
47
|
while inking, then hide it).
|
|
@@ -61,6 +63,7 @@ This skill is the method. `pixerate-paint-editor` has the full tool reference.
|
|
|
61
63
|
| --- | --- |
|
|
62
64
|
| Sketch | `pencil-hb`, light colour, own layer, hidden at the end |
|
|
63
65
|
| Line art | `ink-pen` (even), `brush-pen` (swelling); own layer on top |
|
|
66
|
+
| Clean geometric lines (curves, circles, borders) | `stroke_path` with SVG path data and a `pressure` taper, on the Ink layer |
|
|
64
67
|
| Flats | `marker` or a flat brush on a layer under the ink |
|
|
65
68
|
| Patterned or textured flats (sky, gradient, galaxy) | `set_effect_paint` with a provider generator, then a flat dry brush on the Flats layer; `set_color` after |
|
|
66
69
|
| Shadows | Clipped layer, `multiply` or `shadow`, a cool colour |
|
|
@@ -98,6 +101,7 @@ clipped: true }` → `set_brush` `airbrush` → paint the shadow side.
|
|
|
98
101
|
- `set_paper`, `fill_layer`: the ground and backgrounds
|
|
99
102
|
- `add_layer`, `update_layer`, `move_layer`, `remove_layer`: one layer per pass; hide, clip, blend
|
|
100
103
|
- `set_brush`, `set_color`, `paint_stroke`, `replay_strokes`: sketch, ink, flats and shading
|
|
104
|
+
- `stroke_path`: clean geometric line art from SVG path data
|
|
101
105
|
- `search_effects`, `describe_effect`, `set_effect_paint`: flats painted with a provider effect
|
|
102
106
|
- `set_symmetry`, `set_perspective_guide`, `set_tracing_image`: construction guides
|
|
103
107
|
- `undo_paint`: take back a step
|