From 0174aba93afe1983bd60087bf02ea073b4dc51a8 Mon Sep 17 00:00:00 2001 From: Kayshen-X Date: Sat, 16 May 2026 14:36:09 +0800 Subject: [PATCH] refactor(render): move RenderBackend trait into op-editor-core --- Cargo.lock | 2 ++ crates/op-editor-core/Cargo.toml | 4 ++++ crates/op-editor-core/src/lib.rs | 3 +++ .../src/render_backend.rs | 0 crates/openpencil-shell-core/Cargo.toml | 5 +++++ crates/openpencil-shell-core/src/lib.rs | 7 +++++-- 6 files changed, 19 insertions(+), 2 deletions(-) rename crates/{openpencil-shell-core => op-editor-core}/src/render_backend.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index d80aa0522..8f6933b51 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2278,6 +2278,7 @@ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" name = "op-editor-core" version = "0.1.0" dependencies = [ + "glam", "jian-core", "jian-ops-schema", ] @@ -2319,6 +2320,7 @@ dependencies = [ "bitflags 2.11.1", "glam", "jian-core", + "op-editor-core", "op-i18n", "serde", "thiserror 1.0.69", diff --git a/crates/op-editor-core/Cargo.toml b/crates/op-editor-core/Cargo.toml index 1fb55d4bc..f2de4e79f 100644 --- a/crates/op-editor-core/Cargo.toml +++ b/crates/op-editor-core/Cargo.toml @@ -9,3 +9,7 @@ description = "OpenPencil editor state — selection/tool/history/viewport on ji [dependencies] jian-ops-schema = { path = "../../vendor/jian/crates/jian-ops-schema" } jian-core = { path = "../../vendor/jian/crates/jian-core" } + +# render_backend.rs uses glam::Vec2 as Point2D (spec §5.2). Pinned to the +# same version openpencil-shell-core uses so both crates resolve one glam. +glam = { version = "0.29", default-features = false, features = ["std"] } diff --git a/crates/op-editor-core/src/lib.rs b/crates/op-editor-core/src/lib.rs index 1593bf3cb..cbdd5b19d 100644 --- a/crates/op-editor-core/src/lib.rs +++ b/crates/op-editor-core/src/lib.rs @@ -1 +1,4 @@ //! OpenPencil editor core. + +pub mod render_backend; +pub use render_backend::*; diff --git a/crates/openpencil-shell-core/src/render_backend.rs b/crates/op-editor-core/src/render_backend.rs similarity index 100% rename from crates/openpencil-shell-core/src/render_backend.rs rename to crates/op-editor-core/src/render_backend.rs diff --git a/crates/openpencil-shell-core/Cargo.toml b/crates/openpencil-shell-core/Cargo.toml index 711f28682..b74d4511f 100644 --- a/crates/openpencil-shell-core/Cargo.toml +++ b/crates/openpencil-shell-core/Cargo.toml @@ -36,6 +36,11 @@ jian-core = { path = "../../vendor/jian/crates/jian-core", version = "0.0.1" } # resolving `crate::i18n::*` / `crate::document::Locale` unchanged. op-i18n = { path = "../op-i18n" } +# Phase 4 strangler reorg: the wasm-clean RenderBackend trait moved into +# op-editor-core; shell-core re-exports it as `render_backend` so downstream +# callers keep resolving `crate::render_backend::*` / `crate::RenderBackend`. +op-editor-core = { path = "../op-editor-core" } + [features] default = [] serde = ["dep:serde"] diff --git a/crates/openpencil-shell-core/src/lib.rs b/crates/openpencil-shell-core/src/lib.rs index e15373ab2..07e962073 100644 --- a/crates/openpencil-shell-core/src/lib.rs +++ b/crates/openpencil-shell-core/src/lib.rs @@ -28,12 +28,15 @@ pub use op_i18n as i18n; pub mod jian; pub mod mcp; #[cfg(test)] mod mcp_tests; -pub mod render_backend; +// Phase 4 strangler reorg: the wasm-clean RenderBackend trait moved into the +// op-editor-core crate. Re-exported as `render_backend` so `crate::render_backend::*` +// paths still resolve. +pub use op_editor_core::render_backend; pub mod theme; pub mod widgets; // Re-export the primary API for upstream crates / widgets / tests. -pub use render_backend::{Color, Point2D, Rect, RenderBackend, TextLayout}; +pub use op_editor_core::render_backend::{Color, Point2D, Rect, RenderBackend, TextLayout}; pub use theme::Theme; /// Re-exports of Jian gesture / event types so shell consumers can use the