From 3001c30fb2fe734f20971ff1eec1522b3fdde39d Mon Sep 17 00:00:00 2001 From: Timon Schelling Date: Wed, 20 Aug 2025 15:22:38 +0000 Subject: [PATCH] Move desktop wrapper to separate crate --- Cargo.lock | 24 +++++++++++--- Cargo.toml | 1 + desktop/Cargo.toml | 12 ++----- desktop/src/app.rs | 10 ++---- desktop/src/cef.rs | 4 +-- desktop/src/main.rs | 9 +++-- desktop/src/render/graphics_state.rs | 4 +-- desktop/wrapper/Cargo.toml | 33 +++++++++++++++++++ .../src}/handle_desktop_wrapper_message.rs | 0 .../src}/intercept_editor_message.rs | 0 .../src}/intercept_frontend_message.rs | 0 .../desktop_wrapper.rs => wrapper/src/lib.rs} | 10 ++++++ .../src}/message_dispatcher.rs | 0 .../src}/messages.rs | 0 14 files changed, 75 insertions(+), 32 deletions(-) create mode 100644 desktop/wrapper/Cargo.toml rename desktop/{src/desktop_wrapper => wrapper/src}/handle_desktop_wrapper_message.rs (100%) rename desktop/{src/desktop_wrapper => wrapper/src}/intercept_editor_message.rs (100%) rename desktop/{src/desktop_wrapper => wrapper/src}/intercept_frontend_message.rs (100%) rename desktop/{src/desktop_wrapper.rs => wrapper/src/lib.rs} (89%) rename desktop/{src/desktop_wrapper => wrapper/src}/message_dispatcher.rs (100%) rename desktop/{src/desktop_wrapper => wrapper/src}/messages.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index 376385d18c..9eab3f3b59 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2083,10 +2083,7 @@ dependencies = [ "dirs", "futures", "glam", - "graph-craft", - "graphene-std", - "graphite-editor", - "image", + "graphite-desktop-wrapper", "include_dir", "open", "rfd", @@ -2096,10 +2093,27 @@ dependencies = [ "tracing-subscriber", "vello", "wgpu", - "wgpu-executor", "winit", ] +[[package]] +name = "graphite-desktop-wrapper" +version = "0.1.0" +dependencies = [ + "dirs", + "futures", + "graph-craft", + "graphene-std", + "graphite-editor", + "image", + "ron", + "thiserror 2.0.12", + "tracing", + "vello", + "wgpu", + "wgpu-executor", +] + [[package]] name = "graphite-editor" version = "0.0.0" diff --git a/Cargo.toml b/Cargo.toml index 1e8868526d..62f086609f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,6 +2,7 @@ members = [ "editor", "desktop", + "desktop/wrapper", "proc-macros", "frontend/wasm", "node-graph/gapplication-io", diff --git a/desktop/Cargo.toml b/desktop/Cargo.toml index ee27130810..8c4e3000b1 100644 --- a/desktop/Cargo.toml +++ b/desktop/Cargo.toml @@ -10,18 +10,11 @@ rust-version = "1.87" [features] default = ["gpu"] -gpu = ["graphite-editor/gpu"] +gpu = ["graphite-desktop-wrapper/gpu"] [dependencies] # # Local dependencies -graphite-editor = { path = "../editor", features = [ - "gpu", - "ron", - "vello", -] } -graphene-std = { workspace = true } -graph-craft = { workspace = true } -wgpu-executor = { workspace = true } +graphite-desktop-wrapper = { path = "wrapper" } wgpu = { workspace = true } winit = { workspace = true, features = ["serde"] } @@ -39,4 +32,3 @@ vello = { workspace = true } derivative = { workspace = true } rfd = { workspace = true } open = { workspace = true } -image = { workspace = true } diff --git a/desktop/src/app.rs b/desktop/src/app.rs index 8ca0fccc06..c12a9c72e7 100644 --- a/desktop/src/app.rs +++ b/desktop/src/app.rs @@ -1,13 +1,9 @@ use crate::CustomEvent; -use crate::WindowSize; +use crate::cef::WindowSize; use crate::consts::APP_NAME; -use crate::desktop_wrapper::DesktopWrapper; -use crate::desktop_wrapper::NodeGraphExecutionResult; -use crate::desktop_wrapper::WgpuContext; -use crate::desktop_wrapper::messages::DesktopFrontendMessage; -use crate::desktop_wrapper::messages::DesktopWrapperMessage; -use crate::desktop_wrapper::serialize_frontend_messages; use crate::render::GraphicsState; +use graphite_desktop_wrapper::messages::{DesktopFrontendMessage, DesktopWrapperMessage}; +use graphite_desktop_wrapper::{DesktopWrapper, NodeGraphExecutionResult, WgpuContext, serialize_frontend_messages}; use rfd::AsyncFileDialog; use std::sync::Arc; use std::sync::mpsc::Sender; diff --git a/desktop/src/cef.rs b/desktop/src/cef.rs index 26a8e0f241..d8a4d99576 100644 --- a/desktop/src/cef.rs +++ b/desktop/src/cef.rs @@ -1,6 +1,6 @@ -use crate::desktop_wrapper::WgpuContext; +use crate::CustomEvent; use crate::render::FrameBufferRef; -use crate::{CustomEvent, desktop_wrapper::deserialize_editor_message}; +use graphite_desktop_wrapper::{WgpuContext, deserialize_editor_message}; use std::sync::mpsc::Receiver; use std::sync::{Arc, Mutex}; use std::time::Instant; diff --git a/desktop/src/main.rs b/desktop/src/main.rs index 653b559d70..afcff648e3 100644 --- a/desktop/src/main.rs +++ b/desktop/src/main.rs @@ -6,7 +6,7 @@ use winit::event_loop::EventLoop; pub(crate) mod consts; mod cef; -use cef::{Setup, WindowSize}; +use cef::Setup; mod render; @@ -15,9 +15,8 @@ use app::WinitApp; mod dirs; -mod desktop_wrapper; -use desktop_wrapper::messages::DesktopWrapperMessage; -use desktop_wrapper::{DesktopWrapper, NodeGraphExecutionResult}; +use graphite_desktop_wrapper::messages::DesktopWrapperMessage; +use graphite_desktop_wrapper::{DesktopWrapper, NodeGraphExecutionResult, WgpuContext}; pub(crate) enum CustomEvent { UiUpdate(wgpu::Texture), @@ -42,7 +41,7 @@ fn main() { let (window_size_sender, window_size_receiver) = std::sync::mpsc::channel(); - let wgpu_context = futures::executor::block_on(desktop_wrapper::WgpuContext::new()).unwrap(); + let wgpu_context = futures::executor::block_on(WgpuContext::new()).unwrap(); let cef_context = match cef_context.init(cef::CefHandler::new(window_size_receiver, event_loop.create_proxy(), wgpu_context.clone())) { Ok(c) => c, Err(cef::InitError::AlreadyRunning) => { diff --git a/desktop/src/render/graphics_state.rs b/desktop/src/render/graphics_state.rs index 8404bce453..b93ec7a829 100644 --- a/desktop/src/render/graphics_state.rs +++ b/desktop/src/render/graphics_state.rs @@ -1,9 +1,7 @@ -use graphene_std::Color; use std::sync::Arc; -use wgpu_executor::WgpuExecutor; use winit::window::Window; -use crate::desktop_wrapper::WgpuContext; +use graphite_desktop_wrapper::{Color, WgpuContext, WgpuExecutor}; #[derive(derivative::Derivative)] #[derivative(Debug)] diff --git a/desktop/wrapper/Cargo.toml b/desktop/wrapper/Cargo.toml new file mode 100644 index 0000000000..0a8704978a --- /dev/null +++ b/desktop/wrapper/Cargo.toml @@ -0,0 +1,33 @@ +[package] +name = "graphite-desktop-wrapper" +version = "0.1.0" +description = "Graphite Desktop Wrapper" +authors = ["Graphite Authors "] +license = "Apache-2.0" +repository = "" +edition = "2024" +rust-version = "1.87" + +[features] +default = ["gpu"] +gpu = ["graphite-editor/gpu"] + +[dependencies] +# Local dependencies +graphite-editor = { path = "../../editor", features = [ + "gpu", + "ron", + "vello", +] } +graphene-std = { workspace = true } +graph-craft = { workspace = true } +wgpu-executor = { workspace = true } + +wgpu = { workspace = true } +thiserror = { workspace = true } +futures = { workspace = true } +tracing = { workspace = true } +dirs = { workspace = true } +ron = { workspace = true} +vello = { workspace = true } +image = { workspace = true } diff --git a/desktop/src/desktop_wrapper/handle_desktop_wrapper_message.rs b/desktop/wrapper/src/handle_desktop_wrapper_message.rs similarity index 100% rename from desktop/src/desktop_wrapper/handle_desktop_wrapper_message.rs rename to desktop/wrapper/src/handle_desktop_wrapper_message.rs diff --git a/desktop/src/desktop_wrapper/intercept_editor_message.rs b/desktop/wrapper/src/intercept_editor_message.rs similarity index 100% rename from desktop/src/desktop_wrapper/intercept_editor_message.rs rename to desktop/wrapper/src/intercept_editor_message.rs diff --git a/desktop/src/desktop_wrapper/intercept_frontend_message.rs b/desktop/wrapper/src/intercept_frontend_message.rs similarity index 100% rename from desktop/src/desktop_wrapper/intercept_frontend_message.rs rename to desktop/wrapper/src/intercept_frontend_message.rs diff --git a/desktop/src/desktop_wrapper.rs b/desktop/wrapper/src/lib.rs similarity index 89% rename from desktop/src/desktop_wrapper.rs rename to desktop/wrapper/src/lib.rs index 8832f6db99..0410f153bb 100644 --- a/desktop/src/desktop_wrapper.rs +++ b/desktop/wrapper/src/lib.rs @@ -2,7 +2,11 @@ use graph_craft::wasm_application_io::WasmApplicationIo; use graphite_editor::application::Editor; use graphite_editor::messages::prelude::{FrontendMessage, Message}; +// TODO: Remove usage of this reexport in desktop create and remove this line +pub use graphene_std::Color; + pub use wgpu_executor::Context as WgpuContext; +pub use wgpu_executor::WgpuExecutor; pub mod messages; use messages::{DesktopFrontendMessage, DesktopWrapperMessage}; @@ -43,6 +47,12 @@ impl DesktopWrapper { } } +impl Default for DesktopWrapper { + fn default() -> Self { + Self::new() + } +} + pub enum NodeGraphExecutionResult { HasRun(Option), NotRun, diff --git a/desktop/src/desktop_wrapper/message_dispatcher.rs b/desktop/wrapper/src/message_dispatcher.rs similarity index 100% rename from desktop/src/desktop_wrapper/message_dispatcher.rs rename to desktop/wrapper/src/message_dispatcher.rs diff --git a/desktop/src/desktop_wrapper/messages.rs b/desktop/wrapper/src/messages.rs similarity index 100% rename from desktop/src/desktop_wrapper/messages.rs rename to desktop/wrapper/src/messages.rs