[package] name = "op-pen-loader" version.workspace = true edition.workspace = true rust-version.workspace = true license.workspace = true description = "Canonical .op (PenDocument) → shell Document loader / adapter" [dependencies] # Canonical `.op` / `.pen` schema — the `PenDocument` this crate # converts from. jian-ops-schema = { path = "../../vendor/jian/crates/jian-ops-schema" } # jian-core ships the taffy-backed `LayoutEngine` — the canonical # flex solver for `.op` files. jian-core = { path = "../../vendor/jian/crates/jian-core" } # jian-skia ships `SkiaMeasure` — a real skia paragraph-shaper # `MeasureBackend` plugged into the layout engine. Desktop-side, so # depending on skia is fine; this crate does NOT need to be wasm-clean. jian-skia = { path = "../../vendor/jian/crates/jian-skia", features = ["textlayout"] } # Phase 7.3 reorg: openpencil-shell-core dissolved. The layout scene / # scene-var / render-backend facade this crate converts INTO now # resolves through the op-editor-ui crate. op-editor-ui = { path = "../op-editor-ui" } # `EditorState` — the canonical editor-state superset this crate # derives a paint-only `Document` (incl. its `var_table`) FROM. Lives # in op-pen-loader, NOT op-editor-core, so op-editor-core stays free of # any shell-core (`VariableTable`) dependency and wasm-clean. op-editor-core = { path = "../op-editor-core" } # Payload DTOs round-trip through serde JSON. serde = { workspace = true } serde_json = { workspace = true }