@pixerate/editor 0.99.0 → 0.101.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 +4 -0
- package/dist/animation-editor/index.cjs +39 -39
- package/dist/animation-editor/index.d.cts +1 -1
- package/dist/animation-editor/index.d.ts +1 -1
- package/dist/animation-editor/index.js +1 -1
- package/dist/{chunk-YGZNGDIT.js → chunk-63EFQCT5.js} +807 -73
- package/dist/chunk-63EFQCT5.js.map +1 -0
- package/dist/{chunk-JF5PXN7W.cjs → chunk-KANRAHTL.cjs} +838 -104
- package/dist/chunk-KANRAHTL.cjs.map +1 -0
- package/dist/image-editor/index.cjs +321 -165
- package/dist/image-editor/index.cjs.map +1 -1
- package/dist/image-editor/index.d.cts +70 -11
- package/dist/image-editor/index.d.ts +70 -11
- package/dist/image-editor/index.js +165 -9
- package/dist/image-editor/index.js.map +1 -1
- package/dist/{svg-C9r284x8.d.cts → svg-Bj1MQFh6.d.cts} +395 -2
- package/dist/{svg-MVKBqwD4.d.ts → svg-vme0PLNo.d.ts} +395 -2
- package/dist/vector/index.cjs +1352 -584
- package/dist/vector/index.cjs.map +1 -1
- package/dist/vector/index.d.cts +302 -197
- package/dist/vector/index.d.ts +302 -197
- package/dist/vector/index.js +854 -86
- package/dist/vector/index.js.map +1 -1
- package/package.json +1 -1
- package/skills/pixerate-vector/SKILL.md +52 -2
- package/skills/pixerate-vector/references/commands.md +21 -0
- package/dist/chunk-JF5PXN7W.cjs.map +0 -1
- package/dist/chunk-YGZNGDIT.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pixerate-vector
|
|
3
|
-
description: How to draw and edit vector artwork in the Pixerate vector editor through its vector.* commands - adding shapes and SVG paths, fills, strokes, gradients (linear, radial, conic, Oklab interpolation), stroke alignment, arrowheads, variable-width and tapered strokes, live corner radii, boolean operations and Pathfinder (unite, subtract, divide, trim), Shape Builder, paint bucket, live path effects (trim paths, repeater, zig zag, offset), envelope warps and free distort, blends and morphing, anchor editing (join, smooth, simplify, scissors, knife, eraser), align, distribute, group, stacking order, and SVG import and export. Use when creating an icon, logo, illustration, glyph, badge or any Bezier path artwork, or editing an SVG in a Pixerate vector editor.
|
|
3
|
+
description: How to draw and edit vector artwork in the Pixerate vector editor through its vector.* commands - adding shapes and SVG paths, fills, strokes, stacked fills and strokes with blend modes, drop shadows, glows and blurs, gradients (linear, radial, conic, Oklab interpolation), stroke alignment, arrowheads, variable-width and tapered strokes, live corner radii, boolean operations and Pathfinder (unite, subtract, divide, trim), Shape Builder, paint bucket, live path effects (trim paths, repeater, zig zag, offset), envelope warps and free distort, blends and morphing, anchor editing (join, smooth, simplify, scissors, knife, eraser), align, distribute, group, stacking order, and SVG import and export. Use when creating an icon, logo, illustration, glyph, badge or any Bezier path artwork, or editing an SVG in a Pixerate vector editor.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Pixerate vector editor
|
|
@@ -17,6 +17,13 @@ effect stack. Every command is a `vector.*` command run with `run_command` / `ru
|
|
|
17
17
|
selected with the direct tool; those that take `ids` default to the selection.
|
|
18
18
|
- **Paint** is a CSS colour, `null` for none, or a gradient object
|
|
19
19
|
`{ type, stops: [{ offset, color, opacity?, midpoint? }], ... }`.
|
|
20
|
+
- **Appearance**: a path can stack several fills and several strokes (bottom to top; all fills
|
|
21
|
+
draw under all strokes), each with its own paint, `opacity`, `blendMode` and `visible`, and
|
|
22
|
+
each stroke with its own width, alignment, dashes, caps, joins, arrowheads and profile. Layers
|
|
23
|
+
are addressed by `index` in their stack, 0 at the bottom. `fill` / `stroke` and the stroke
|
|
24
|
+
settings of `vector.setStyle` are shorthands for the **top** layer; `null` clears the stack.
|
|
25
|
+
Any node can also have a `blendMode` and `filters` (drop / inner shadow, outer / inner glow,
|
|
26
|
+
layer blur, feather), which never change geometry.
|
|
20
27
|
- Coordinates are document units. A rotated node stores its geometry in its own space: the
|
|
21
28
|
`bounds` that `vector.list` reports are document-space, its `d` is the node's own.
|
|
22
29
|
|
|
@@ -26,7 +33,8 @@ Parameter details (gradient fields, effect parameters, width profiles, envelopes
|
|
|
26
33
|
## Working method
|
|
27
34
|
|
|
28
35
|
1. **Read.** `vector.list` gives the artboard size, every node depth first (id, type, name,
|
|
29
|
-
bounds, rotation, fill, stroke, `d`, effects, blend and boolean info
|
|
36
|
+
bounds, rotation, fill, stroke, `d`, effects, blend and boolean info, stacks, blend mode and
|
|
37
|
+
filters) and the selection. `vector.getAppearance` gives one node's full stacks and filters.
|
|
30
38
|
2. **Plan in layers.** Decide the shapes, their stacking (bottom to top) and their grouping
|
|
31
39
|
before drawing. Start from primitives (`vector.addShape`) and combine them; write raw `d`
|
|
32
40
|
only for curves primitives cannot make.
|
|
@@ -67,6 +75,17 @@ Parameter details (gradient fields, effect parameters, width profiles, envelopes
|
|
|
67
75
|
perceptually even blends without the grey or muddy midpoint sRGB gives between saturated hues;
|
|
68
76
|
`midpoint` to shift the half-way point instead of adding stops. Prefer linear or radial for
|
|
69
77
|
portability; conic and diamond export as SVG patterns.
|
|
78
|
+
- **Appearance stacks over duplicate shapes.** For a gradient over a texture, a tinted overlay,
|
|
79
|
+
an outline around an outline or a stroke inside and another outside, stack layers on one path
|
|
80
|
+
(`vector.addFill`, `vector.addStroke`) instead of copying the shape: the copies would drift
|
|
81
|
+
apart when edited. Give each stroke its own `strokeAlign` (outside under, inside or center on
|
|
82
|
+
top) and widths that step down towards the top. Use per-layer `opacity` and `blendMode`
|
|
83
|
+
(multiply to darken, screen to lighten, overlay for texture) rather than node opacity when only
|
|
84
|
+
one paint should fade.
|
|
85
|
+
- **Shadows and glows.** Keep drop shadows subtle: black at 0.15 to 0.3 opacity, `offsetY` 2 to 8,
|
|
86
|
+
`blur` about twice the offset. Use one light direction for every shadow in a design. Filters
|
|
87
|
+
export as SVG filters, which some tools (and older renderers) draw slightly differently or not
|
|
88
|
+
at all; a design that must look identical everywhere should avoid them or rasterize.
|
|
70
89
|
- **Grouping and naming.** Group the parts of one object (`vector.group` with a `name`), name
|
|
71
90
|
paths that matter (`name` on add), and keep the tree shallow.
|
|
72
91
|
- **SVG hygiene.** Export with `precision` 2 or 3 (default 3); higher only for tiny artboards.
|
|
@@ -103,6 +122,28 @@ Parameter details (gradient fields, effect parameters, width profiles, envelopes
|
|
|
103
122
|
| `vector.setWidthProfile` | Give strokes a variable width: a `preset` (uniform, taperStart, taperEnd, taperBoth, bulge, pinch, teardrop, wave, pressure; `uniform` removes it), explicit `points`, or a parametric `taper` and / or `wave`. Returns the profile points. |
|
|
104
123
|
| `vector.setWidthPoint` | Set one width point of path `id`: `index` of an existing point (from the profile `vector.setWidthProfile` returns) or none to add one at `t` (0 to 1); `left` / `right` are side widths in document units. Returns the profile. |
|
|
105
124
|
|
|
125
|
+
### Appearance: fill and stroke stacks, blend modes, filters
|
|
126
|
+
|
|
127
|
+
| Command | Use it to |
|
|
128
|
+
| --- | --- |
|
|
129
|
+
| `vector.getAppearance` | Read node `id`'s appearance: for paths `fills` and `strokes` (bottom to top, each with `paint`, `opacity`, `blendMode`, `visible`; strokes with their settings) and `fillRule`; for any node `blendMode`, `opacity` and `filters` (with ids). Call it before editing a layer by index. |
|
|
130
|
+
| `vector.addFill` | Add a fill layer (`paint`, default #808080; `opacity`, `blendMode`, `visible`) to `ids` (groups: every path inside), on top or at `index` (0 is the bottom). Returns each path's fill stack. |
|
|
131
|
+
| `vector.updateFill` | Change fill `index` of path `nodeId`: `paint`, `opacity`, `blendMode`, `visible`. Fails, changing nothing, on an index the path doesn't have. Returns the fill stack. |
|
|
132
|
+
| `vector.removeFill` | Remove fill `index` from path `nodeId`. Returns the remaining fills. |
|
|
133
|
+
| `vector.moveFill` | Move fill `index` of path `nodeId` to position `to` (0 is the bottom). Returns the fills. |
|
|
134
|
+
| `vector.addStroke` | Add a stroke layer to `ids`, on top or at `index`, with `paint` (default black), `opacity`, `blendMode`, `visible` and any stroke setting (`strokeWidth`, `strokeAlign`, `strokeLinecap`, `strokeLinejoin`, `strokeDasharray`, arrowheads, `strokeWidthProfile`); unset settings copy the current top stroke. Returns each path's stroke stack. |
|
|
135
|
+
| `vector.updateStroke` | Change stroke `index` of path `nodeId`: paint, opacity, blend mode, visibility, any stroke setting (`null` removes an arrowhead, dashes or a profile). Returns the stroke stack. |
|
|
136
|
+
| `vector.removeStroke` | Remove stroke `index` from path `nodeId`. Returns the remaining strokes. |
|
|
137
|
+
| `vector.moveStroke` | Move stroke `index` of path `nodeId` to position `to` (0 is the bottom, drawn first). Returns the strokes. |
|
|
138
|
+
| `vector.setBlendMode` | Set how whole nodes `ids` (paths or groups) mix with what is under them: `blendMode` normal, darken, multiply, color-burn, lighten, screen, color-dodge, linear-dodge, overlay, soft-light, hard-light, difference, exclusion, hue, saturation, color, luminosity. Returns each node's mode. |
|
|
139
|
+
| `vector.addFilter` | Add a filter `type` (dropShadow, innerShadow, outerGlow, innerGlow, layerBlur, feather) with `params` to `ids`, at `index` (default last). Returns `{ nodes: [{ id, filterId, filters }] }`. |
|
|
140
|
+
| `vector.updateFilter` | Change filter `filterId` of `nodeId`: `params` (merged; only the keys its type takes) and `enabled`. Returns the node's filters. |
|
|
141
|
+
| `vector.removeFilter` | Remove filter `filterId` from `nodeId`. Returns the remaining filters. |
|
|
142
|
+
| `vector.moveFilter` | Move filter `filterId` of `nodeId` to `index`; later shadows draw over earlier ones. Returns the filters. |
|
|
143
|
+
|
|
144
|
+
`vector.setStyle`, `vector.addShape` and `vector.addPath` also take whole `fills` / `strokes`
|
|
145
|
+
arrays, to build or replace a stack in one call.
|
|
146
|
+
|
|
106
147
|
### Transform and arrange
|
|
107
148
|
|
|
108
149
|
| Command | Use it to |
|
|
@@ -187,5 +228,14 @@ Parameter details (gradient fields, effect parameters, width profiles, envelopes
|
|
|
187
228
|
design should grow proportionally.
|
|
188
229
|
- `vector.importSvg` without `replace` adds on top; with `replace: true` it discards the current
|
|
189
230
|
document (undoable, but confirm with the user first).
|
|
231
|
+
- With a stack, `vector.setStyle` `fill` / `stroke` and the stroke settings edit only the top
|
|
232
|
+
layer, and `fill: null` / `stroke: null` remove every layer. Edit other layers with
|
|
233
|
+
`vector.updateFill` / `vector.updateStroke`, by the index `vector.getAppearance` reports.
|
|
234
|
+
- Layer indexes shift after a remove or a move: use the stack each write returns.
|
|
235
|
+
- Path effects apply to the whole node, every layer alike. Blend in-betweens mix the top fill and
|
|
236
|
+
stroke only.
|
|
237
|
+
- Filters and blend modes are drawn, not geometry: bounds, snapping, booleans and Outline Stroke
|
|
238
|
+
ignore them. A node's blend mode and filter isolate its layers, so layer blend modes inside a
|
|
239
|
+
node with a filter mix only with the node's own layers. Background blur is not available.
|
|
190
240
|
- A command that fails changes nothing; read its message (for example "Nothing is selected; pass
|
|
191
241
|
ids.") and retry with the missing input.
|
|
@@ -45,6 +45,27 @@ length over main axis length), `reverse: true` (flip stops and midpoints), and `
|
|
|
45
45
|
| startArrowScale, endArrowScale | Head weight as a multiple of the stroke width (default 1). |
|
|
46
46
|
| fillRule | `nonzero`, `evenodd`. |
|
|
47
47
|
|
|
48
|
+
## Fill and stroke stacks, blend modes and filters
|
|
49
|
+
|
|
50
|
+
- **Layers.** A fill layer is `{ paint, opacity?, blendMode?, visible? }` (opacity 0 to 1,
|
|
51
|
+
default 1; blend mode default normal; visible default true). A stroke layer adds the stroke
|
|
52
|
+
settings above (`strokeWidth`, `strokeAlign`, …). Stacks list bottom to top; fills draw under
|
|
53
|
+
strokes. A path with one plain layer of each stores them as `fill` / `stroke`, so
|
|
54
|
+
`vector.getAppearance` is the way to read a stack as layers.
|
|
55
|
+
- **Blend modes** (CSS `mix-blend-mode` names): normal, darken, multiply, color-burn, lighten,
|
|
56
|
+
screen, color-dodge, linear-dodge (drawn as plus-lighter), overlay, soft-light, hard-light,
|
|
57
|
+
difference, exclusion, hue, saturation, color, luminosity. The image editor's linear burn,
|
|
58
|
+
vivid light, pigment and the like have no SVG equivalent.
|
|
59
|
+
- **Filters** (lengths in document units, colours CSS):
|
|
60
|
+
- `dropShadow`: `color` (#000000), `opacity` (0.25), `offsetX` (0), `offsetY` (4), `blur` (4),
|
|
61
|
+
`spread` (0).
|
|
62
|
+
- `innerShadow`: the same; `spread` chokes inwards.
|
|
63
|
+
- `outerGlow` / `innerGlow`: `color` (#ffffbe), `opacity` (0.75), `blur` (10), `spread` (0).
|
|
64
|
+
- `layerBlur`: `radius` (4), blurring everything the node draws, shadows included.
|
|
65
|
+
- `feather`: `radius` (8), fading the edges inwards over that width.
|
|
66
|
+
Blur radii follow CSS: they reach about 1.5 times the radius. Inner effects draw over the body,
|
|
67
|
+
then feather, then shadows and glows under it, then layer blurs over everything.
|
|
68
|
+
|
|
48
69
|
## Variable-width strokes
|
|
49
70
|
|
|
50
71
|
A width profile is a list of `{ t, left, right }`: `t` is the position along each subpath by
|