[package] name = "dr-export" version.workspace = true edition.workspace = true rust-version.workspace = true license.workspace = true # No platform dependency and no filesystem, deliberately. This crate turns a # rendered frame into *bytes* and a *name*; where those bytes go is the # caller's problem, because the answer differs by more than a path. On Linux # it is a file, on Android a SAF document descriptor with no path at all # (ARCH §6.9), and on either it may be a `PUT` to the server. A crate that # took a `Path` would work on exactly one of the three. [dependencies] dr-types.workspace = true log.workspace = true thiserror.workspace = true # Encoders. All three are pure Rust and already in the tree, which is the same # criterion that chose rustls, bundled SQLite and the Lensfun port: a C # dependency here would be one more thing to satisfy under the Android NDK. # # AVIF and JPEG XL (FR-EXP-1) are deliberately absent. The mature encoders for # both are C or C++ — libaom and libjxl — and ravif, the pure-Rust AVIF path, # is slow enough to change what a batch export feels like. Neither belongs in # the first version; see `format` in lib.rs for what happens when one is asked # for. jpeg-encoder.workspace = true png = "0.18" tiff = "0.11" # The example runs the whole path — decode, GPU render, read back, encode, # write — so it needs what the library deliberately does not: a GPU, a # pipeline and a decoder. Dev-only, so none of it reaches a dependent. [dev-dependencies] dr-decode.workspace = true dr-gpu.workspace = true dr-pipeline.workspace = true env_logger.workspace = true pollster.workspace = true zune-jpeg.workspace = true