Files
photocraft/crates/io/Cargo.toml
T
David Mann 38609e5615 Merge PR #8885: PSD: spot channels in Photoshop's polarity; PSDs from earlier PhotoCraft versions keep their ink
Merged with our fix-up branch pr-8885-fixup (8f6863f53) on the author's head 996b55eb4.

Conflicts resolved:
- crates/io/src/tiff_layers.rs: #9148's tiff_source (an empty LMsk gets Photoshop's 14 bytes)
  gives way to #8885's tiff_image_source, which writes the same bytes for an empty or short
  LMsk; #9148's test stays.
- crates/io/src/flat.rs: #8776's DDS alpha step and #8885's TIFF channel stamp both run.
- crates/io/Cargo.toml, Cargo.lock: #8402's zune dev-deps and #8885's tiff dev-dep.
- crates/io/tests/it/tiff_layers.rs, docs: unions; docs/scorecard.md kept as is, regenerated at
  the batch gate.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 16:28:00 +01:00

63 lines
2.6 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.21"
# 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"] }
photocraft-testkit = { workspace = true }
proptest = { workspace = true }
# Lossless JPEG XL encoder for the JPEG XL DNG preview test (tests only), as in photocraft-raw.
zune-jpegxl = { version = "=0.5.2", default-features = false, features = ["std"] }
zune-core = { workspace = true }
tiff = { version = "0.11", default-features = false, features = ["deflate", "lzw"] }