mirror of
https://github.com/storytold/lightcraft.git
synced 2026-10-27 03:27:14 -06:00
New crate `lightcraft-heif` (a port of PhotoCraft's photocraft-heif): a thin, panic-guarded wrapper around heic-rs (pure Rust, pinned =0.1.1) - 8/10-bit, alpha, grid tiles, container irot/imir/clap, ICC/EXIF/XMP. `lightcraft-codecs` decodes HEIF behind its non-default `heif` feature (HEVC patents are the distributor's call, the same policy as PhotoCraft); the apps forward it. HEIC files stay recognised without the feature: opening one is a clear "isn't included in this build" error. Fuzz-found heic-rs panics arrive as regression fixtures (inline bytes, no media committed). Verified end-to-end on real iPhone HEICs (lightcraft-cli render, rotation and metadata correct). Note for reviewers: measured here, the engine currently ignores the decoded image's source-space matrix on export for ANY format (a true Display-P3 PNG round-trips unchanged); the ICC and space are carried for all codecs, so this inherits - and does not worsen - existing behaviour. Co-Authored-By: opencode <noreply@opencode.ai>
21 lines
958 B
TOML
21 lines
958 B
TOML
[package]
|
|
name = "lightcraft-heif"
|
|
description = "Optional HEIF/HEIC still-image decoder for LightCraft (a thin, panic-guarded wrapper around heic-rs)"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
|
|
[dependencies]
|
|
# Pure Rust, no unsafe. Pinned exactly: a young, single-owner crate that parses untrusted files;
|
|
# moving the pin is a reviewed change (re-run the heif tests and the codecs corpus tests).
|
|
# Mirrors PhotoCraft's photocraft-heif (same team, same decision): heic-rs was chosen over the
|
|
# other permissive candidates (heif-oxide lacks 4:2:2; heifer was published the same week).
|
|
heic-rs = { version = "=0.1.1", default-features = false, features = ["std"] }
|
|
|
|
# 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.1", default-features = false, features = ["std", "parallel"] }
|
|
|
|
[lints]
|
|
workspace = true
|