[package] name = "epiphany-editor-gui" version = "0.0.0" edition.workspace = true authors.workspace = true repository.workspace = true description = "A thin native (egui) GUI shell over epiphany-editor-core: renders the score with epiphany-render-svg (rasterized by resvg), click to select, a pencil mode that clicks notes onto the staff, undo/redo, and a toolbar/keys for the note-editing intents and a duration palette. A vertical slice proving the editor seam." # A demo binary, not a library other crates build on, so it carries the heavy GUI # dependency tree (eframe/winit/wgpu, resvg/usvg/tiny-skia) the rest of the # workspace deliberately avoids. It opts out of the workspace MSRV claim because # those crates require a newer toolchain than the core crates pin. [dependencies] # The headless editor this GUI drives. epiphany-editor-core.workspace = true # Musical-duration / note-value types, for the duration palette. epiphany-core.workspace = true # The real constraint solver (so the GUI shows a genuinely engraved score). epiphany-engrave.workspace = true # SVG rendering of the resolved layout, and the layout/hit-test geometry types. epiphany-render-svg.workspace = true epiphany-layout-ir.workspace = true # Operation payload types, to label the last applied op in the debug panel. epiphany-ops.workspace = true # A clean score fixture to open. epiphany-testkit.workspace = true # Native GUI shell (window, event loop, immediate-mode UI). Pinned to the classic # `App::update(ctx, frame)` + panel API (egui 0.35 redesigned `App` around `ui()`). eframe = "0.29" # Rasterizes the rendered SVG to a pixmap for display (bundles usvg + tiny-skia). resvg = "0.45" [dev-dependencies] # Used only by `goldens.rs`'s own comparator unit tests, to produce two # byte-different PNG encodings of identical pixels (different filter/compression # settings) and prove the golden comparator's decoded-pixel contract ignores # that difference. A caret requirement on the version `tiny-skia` already # resolves (Cargo.lock), so this is a dev-only edge that unifies with the # existing dependency-tree node — today and after any future `tiny-skia` bump # (an exact `=` pin would fork a duplicate node the day `tiny-skia` moves). # The comparator's own encode/decode path uses # `resvg::tiny_skia::Pixmap::{encode_png,decode_png}` exclusively; `png` is # never used at runtime. png = "0.17.16"