mirror of
https://github.com/storytold/photocraft.git
synced 2026-10-27 03:17:05 -06:00
A linked smart object's path comes from the document. Every place that follows it now goes through one resolver (photocraft_io::doc_path, built on craft-docpath): a relative path is taken from the document's folder, and only local files or files on the share the document itself is on are opened. Paths to other computers, device paths and URLs are treated like a missing file: the layer keeps its last rendering. - Link watch: such links are not stamped, and no background look starts when no link of the document is followed. - Update Modified Content and other re-renders read only followed files; the error names why a link is not followed. - Package lists such links as missing instead of copying them. - Reveal in Finder for a linked layer shows only a followed file; the document's own Reveal is unchanged. The macOS invocation ends options with `--`, and Explorer is not asked to select a path containing a comma or a quotation mark. - Place Linked stores a relative path as an absolute one. The document path travels to smart-object renders in a thread-local scope entered by Session::edit, command dispatch and background jobs. Co-authored-by: David Mann <daaavid.mann@gmail.com>
58 lines
2.3 KiB
TOML
58 lines
2.3 KiB
TOML
[package]
|
|
name = "photocraft-io"
|
|
description = "Import/export between photocraft documents and PSD/PSB and flat raster formats"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
rust-version.workspace = true
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[features]
|
|
# Real-file corpus tests (opt-in; `cargo xtask test-corpus`). Fail when the corpus is missing.
|
|
corpus = []
|
|
# HEIC/HEIF decode (forwarded to photocraft-codecs; see its `heif` feature).
|
|
heif = ["photocraft-codecs/heif"]
|
|
|
|
[dependencies]
|
|
photocraft-geom = { workspace = true }
|
|
photocraft-color = { workspace = true }
|
|
photocraft-cms = { workspace = true }
|
|
photocraft-raster = { workspace = true }
|
|
photocraft-doc = { workspace = true }
|
|
photocraft-compose = { workspace = true }
|
|
photocraft-algo = { workspace = true }
|
|
photocraft-psd = { workspace = true }
|
|
photocraft-codecs = { workspace = true }
|
|
photocraft-raw = { workspace = true }
|
|
photocraft-affinity = { workspace = true }
|
|
photocraft-text = { workspace = true }
|
|
photocraft-paint = { workspace = true }
|
|
photocraft-vector = { workspace = true }
|
|
photocraft-format = { path = "../format" }
|
|
craft-docpath = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
blake3 = { version = "1.8", default-features = false, features = ["pure"] }
|
|
# svg.rs inflates `.svgz` itself (with a size cap) so the XML can be checked before it is parsed;
|
|
# pdn.rs inflates Paint.NET's gzip pixel chunks.
|
|
flate2 = { workspace = true }
|
|
# ora.rs reads OpenRaster's stack.xml (already in the tree through usvg).
|
|
roxmltree = "0.20"
|
|
# SVG import (svg.rs): usvg parses, resvg rasterises what the shape model can't hold. Both are
|
|
# already in the tree through the UI's icon loader; text shaping needs the fonts feature set.
|
|
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
|
resvg = { version = "0.45", default-features = false, features = ["text", "system-fonts", "raster-images"] }
|
|
|
|
[target.'cfg(target_arch = "wasm32")'.dependencies]
|
|
resvg = { version = "0.45", default-features = false, features = ["text", "raster-images"] }
|
|
|
|
[dev-dependencies]
|
|
crc32fast = "1.5"
|
|
photocraft-affinity = { workspace = true, features = ["synth"] }
|
|
flate2 = { workspace = true }
|
|
photocraft-psd = { workspace = true, features = ["testgen"] }
|
|
photocraft-raw = { workspace = true, features = ["testgen"] }
|
|
proptest = { workspace = true }
|