@pixerate/editor 0.110.0 → 0.111.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.
@@ -205,6 +205,9 @@ GridCraft. Apache POI is © The Apache Software Foundation, licensed under the A
205
205
  - `crates/doc/src/lib.rs` (`SmartObject`: contents shared by an identity that ordinary duplicates keep and New Smart Object via Copy renews, the embedded or linked `SmartSource`, the placement transform with a warp applied first in source pixels and a projective override, the ordered `smart_filters` with blend, opacity and visibility, the stack-wide `filters_enabled` switch and the one `filter_mask`, the rendered `cache`) → `SmartContents`, `SmartPlacement`, `SmartFilterStack` and `SmartObjectLayer` in `packages/core/src/image-editor/layers/model.ts` and the operations in `layers/smart.ts`; the placement is our Free Transform geometry (corners plus a Bézier mesh), the smart filters are our `develop` / `blur` layer filters, and rendering, caching and Edit Contents as a nested document are our own; test cases re-expressed → `packages/core/tests/image-smart-objects.test.ts`
206
206
  - `crates/io/src/smart_map.rs` (the `soLD` descriptor keys `Idnt`, `placed`, `Trnf`, `nonAffineTransform`, `Sz `, `warp`, `filterFX`; `sold_bytes` with a template descriptor and a fresh one, `plld_bytes`, `warp_desc` for single-patch custom warps, `filter_from_item` / `item_for_filter` with neutral blending for unmodelled filters, `filter_fx`, `filter_mask_item`), `crates/io/src/blocks.rs` (`placed_frame`: a custom warp's control-point box as the quad's frame, `corners_affine` / `corners_perspective`, `parse_plld`, `warp_of`), `crates/io/src/linked.rs` (`liFD` items, `encode_linked_file`) and `crates/psd/src/filter_effects.rs` (`FEid` / `FXid` items, planes and masks) → `packages/core/src/image-editor/psd/smart.ts` and the smart-object parts of `psd/import.ts` and `psd/export.ts`; Box Blur is the one filter we draw (Camera Raw and the rest are kept, not drawn), warps are refitted onto the contents' rectangle, linked (`liFE`) contents come in as the stored pixels, and filter masks are written without the unfiltered cache; test cases re-expressed → `packages/core/tests/image-psd-smart.test.ts`
207
207
  - `crates/doc/src/vector.rs` (shape layers: subpaths folded in order with their path operation, the first always combining, components filled with the path's fill rule; `ShapeStroke` width / alignment / caps / joins / Photoshop's miter limit 100 / dashes in multiples of the width; `LiveShape` rectangle with four corner radii, ellipse, polygon and star, and line as a filled bar) → `packages/core/src/image-editor/layers/model.ts` and `layers/shape.ts`; components hold several subpaths instead of photocraft's per-subpath `Join` operation, paths reuse the vector editor's anchors, shape factories and curve booleans, live shapes keep an affine transform, line arrowheads are our own, and shapes render through our own coverage rasterizer; test cases re-expressed → `packages/core/tests/image-shape-layers.test.ts`
208
+ - `crates/doc/src/text.rs` (type layers: character runs and paragraph runs covering the text by length and normalised so edits never leave text unstyled, the Character panel fields in pixels with tracking in 1/1000 em and auto leading as a multiple of the size (1.2), the Paragraph panel's alignment, indents and spacing, point text growing from its first baseline and paragraph text in a box) → `packages/core/src/image-editor/layers/model.ts` and `layers/text.ts`; runs count UTF-16 code units instead of UTF-8 bytes, sizes are pixels instead of points, layout is our own over a pluggable shaper (Canvas 2D in browsers, outline fonts elsewhere) instead of parley, without vertical type, text on a path, OpenType features or warp; run and layout test cases re-expressed → `packages/core/tests/image-type-layers.test.ts`
209
+ - `crates/psd/src/path.rs` (path records: 26-byte records, 8.24 fixed-point fractions stored vertical first, the path operation in bytes 2–3 of a subpath length record, lenient knots without a length record, the initial-fill record, `vmsk` / `vsms` flags) and `crates/io/src/vector_map.rs` (Photoshop's reading of layer paths: operation -1 joins the previous component, a leading subtract inverts the shape with dual operations; `vscg` fill content, `vstk` stroke with units, `vogk` live rectangles, rounded rectangles, ellipses and lines, blocks written back while they still describe the shape) → `packages/core/src/image-editor/psd/paths.ts` and `psd/shapes.ts`; line arrowheads, the live shape transform and the signature comparison are ours; test cases re-expressed → `packages/core/tests/image-psd-shapes-type.test.ts`
210
+ - `crates/text/src/engine_data.rs` (EngineData syntax: dictionaries, arrays, UTF-16 strings with escapes, names, numbers; the bare `/key value` form) and `crates/text/src/psd.rs` (the `TySh` layout; EngineData style resolution through run data, named sheets, the paragraph's default style and the normal sheets; `FillColor` values; `Justification`; box text from `BoxBounds`; patching the file's EngineData when writing; the descriptor's `Txt `, `AntA`, `bounds`) with `guess_from_postscript` from `crates/text/src/fonts.rs` → `packages/core/src/image-editor/psd/engine-data.ts` and `psd/type.ts`; sizes stay text-space pixels instead of points, and kerning pairs, `Txt2`, OpenType features, vertical type and warps are not modelled; test cases re-expressed → `packages/core/tests/image-psd-shapes-type.test.ts`
208
211
 
209
212
  ## soundcraft
210
213