mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-08 22:28:09 +00:00
File › Open and File › Place read HEIC and HEIF still images (.heic, .heif) through heic-rs 0.1.4, the pure-Rust decoder photocraft-heif uses, and store the pixels as PNG. Single pictures and grids of tiles, 8 to 10 bits, with or without an alpha image, are read with the container's rotation, mirror and crop applied. A grid without a color box of its own takes its tiles'. When neither the image nor its tiles have an nclx box, the HEVC stream's video signal type gives the samples' matrix and range. An RGB ICC profile, or Display P3 with the sRGB curve named by an nclx box or, without a color box, by the stream, is converted to sRGB. The EXIF resolution tags size the image; without them it is 72 ppi. When the container's rotations turn the image an odd number of quarter turns, the resolution's axes swap with the pixels'. Image sequences, images that aren't HEVC-coded, grids of cropped tiles and images past the pixel allowance are refused with a message before the pixels are decoded. The allowance counts each coded picture at the size its sequence parameter sets give it. The decoder is in the engine's `heif` feature, which is on by default and listed by the desktop, CLI and web apps. A build without it still recognizes the files and refuses them with a message.
82 lines
3.4 KiB
TOML
82 lines
3.4 KiB
TOML
[package]
|
|
name = "vectorcraft-engine"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
description = "VectorCraft engine: sessions, history, selection, the command registry"
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[features]
|
|
default = ["bundled-fonts", "heif"]
|
|
# The fonts vectorcraft-text bundles (see its `bundled-fonts`). Embedders that supply every font at
|
|
# run time (`vectorcraft_text::FontDb::add_font`) build with `default-features = false`.
|
|
bundled-fonts = ["vectorcraft-text/bundled-fonts"]
|
|
# HEIC and HEIF images open and place, decoded by heic-rs (an HEVC decoder). A build without this
|
|
# feature still recognizes the files and refuses them with a message. The apps list it beside
|
|
# `bundled-fonts`.
|
|
heif = ["dep:heic-rs", "dep:rayon"]
|
|
|
|
[dependencies]
|
|
# Which paths stored in documents may be opened.
|
|
craft-docpath = { workspace = true }
|
|
vectorcraft-geom = { workspace = true }
|
|
vectorcraft-color = { workspace = true }
|
|
vectorcraft-doc = { workspace = true }
|
|
vectorcraft-tools = { workspace = true }
|
|
vectorcraft-text = { workspace = true }
|
|
vectorcraft-render = { workspace = true }
|
|
vectorcraft-pathops = { workspace = true }
|
|
vectorcraft-brush = { workspace = true }
|
|
vectorcraft-trace = { workspace = true }
|
|
vectorcraft-svg = { workspace = true }
|
|
vectorcraft-format = { workspace = true }
|
|
vectorcraft-pdf = { workspace = true }
|
|
vectorcraft-cad = { workspace = true }
|
|
vectorcraft-eps = { workspace = true }
|
|
vectorcraft-metafile = { workspace = true }
|
|
vectorcraft-plugins = { workspace = true }
|
|
vectorcraft-affinity = { workspace = true }
|
|
vectorcraft-scriptcheck = { workspace = true }
|
|
image = { workspace = true }
|
|
hayro-jpeg2000 = { version = "=0.3.5", default-features = false, features = ["std", "simd"] }
|
|
# Pure Rust, no unsafe; pinned at the version photocraft-heif uses.
|
|
heic-rs = { version = "=0.1.4", default-features = false, features = ["std"], optional = true }
|
|
flate2 = { workspace = true }
|
|
chrono = { workspace = true }
|
|
# The XML parts of Word documents placed as type (place/docx.rs).
|
|
roxmltree = "0.21"
|
|
# The compound file that holds a Word 97-2003 document placed as type (place/doc.rs).
|
|
cfb = "0.15"
|
|
kurbo = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
log = { workspace = true }
|
|
|
|
# Whether a recovery area folder is this account's own (`FolderStore::own_area`). Already in
|
|
# Cargo.lock (tempfile, ui-egui), so this adds no new crate.
|
|
[target.'cfg(unix)'.dependencies]
|
|
rustix = { workspace = true, features = ["std", "process"] }
|
|
|
|
# The tiles of a HEIC photo decode in parallel on native; wasm stays single-threaded.
|
|
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
|
heic-rs = { version = "=0.1.4", default-features = false, features = ["std", "parallel"], optional = true }
|
|
rayon = { version = "1.12", optional = true }
|
|
|
|
[dev-dependencies]
|
|
vectorcraft-affinity = { workspace = true, features = ["synth"] }
|
|
crc32fast = { workspace = true }
|
|
vectorcraft-testkit = { workspace = true }
|
|
proptest = { workspace = true }
|
|
# A variable font built in code (no font file is committed).
|
|
vectorcraft-text = { workspace = true, features = ["test-fonts"] }
|
|
# How many times an open reads a PDF.
|
|
vectorcraft-pdf = { workspace = true, features = ["read-count"] }
|
|
wat = { workspace = true }
|
|
# Zstandard streams for the Illustrator editing data fuzz tests.
|
|
ruzstd = { workspace = true }
|
|
# The JavaScript parser's lexer, compared with the script checker's on the same scripts.
|
|
vectorcraft-js = { workspace = true }
|