Skip to content

Commit 1802973

Browse files
committed
adam changes
1 parent 809a009 commit 1802973

37 files changed

+2896
-4455
lines changed

Cargo.lock

Lines changed: 628 additions & 3822 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,9 @@
11
[workspace]
22
members = [
3-
"editor",
43
"desktop",
5-
"proc-macros",
6-
"frontend/wasm",
7-
"node-graph/gapplication-io",
8-
"node-graph/gbrush",
9-
"node-graph/gcore",
10-
"node-graph/gstd",
11-
"node-graph/gmath-nodes",
12-
"node-graph/gpath-bool",
13-
"node-graph/graph-craft",
14-
"node-graph/graphene-cli",
15-
"node-graph/graster-nodes",
16-
"node-graph/gsvg-renderer",
17-
"node-graph/interpreted-executor",
18-
"node-graph/node-macro",
19-
"node-graph/preprocessor",
20-
"libraries/dyn-any",
21-
"libraries/path-bool",
22-
"libraries/bezier-rs",
23-
"libraries/math-parser",
24-
"website/other/bezier-rs-demos/wasm",
25-
]
26-
default-members = [
27-
"editor",
28-
"frontend/wasm",
29-
"node-graph/gbrush",
30-
"node-graph/gcore",
31-
"node-graph/gstd",
32-
"node-graph/gmath-nodes",
33-
"node-graph/gpath-bool",
34-
"node-graph/graph-craft",
35-
"node-graph/graphene-cli",
36-
"node-graph/graster-nodes",
37-
"node-graph/gsvg-renderer",
38-
"node-graph/interpreted-executor",
39-
"node-graph/node-macro",
404
]
415
resolver = "2"
42-
436
[workspace.dependencies]
44-
# Local dependencies
45-
bezier-rs = { path = "libraries/bezier-rs", features = ["dyn-any", "serde"] }
46-
dyn-any = { path = "libraries/dyn-any", features = ["derive", "glam", "reqwest", "log-bad-types", "rc"] }
47-
preprocessor = { path = "node-graph/preprocessor"}
48-
math-parser = { path = "libraries/math-parser" }
49-
path-bool = { path = "libraries/path-bool" }
50-
graphene-application-io = { path = "node-graph/gapplication-io" }
51-
graphene-brush = { path = "node-graph/gbrush" }
52-
graphene-core = { path = "node-graph/gcore" }
53-
graphene-math-nodes = { path = "node-graph/gmath-nodes" }
54-
graphene-path-bool = { path = "node-graph/gpath-bool" }
55-
graph-craft = { path = "node-graph/graph-craft" }
56-
graphene-raster-nodes = { path = "node-graph/graster-nodes" }
57-
graphene-std = { path = "node-graph/gstd" }
58-
graphene-svg-renderer = { path = "node-graph/gsvg-renderer" }
59-
interpreted-executor = { path = "node-graph/interpreted-executor" }
60-
node-macro = { path = "node-graph/node-macro" }
61-
wgpu-executor = { path = "node-graph/wgpu-executor" }
62-
graphite-proc-macros = { path = "proc-macros" }
63-
647
# Workspace dependencies
658
rustc-hash = "2.0"
669
bytemuck = { version = "1.13", features = ["derive"] }
@@ -69,6 +12,8 @@ serde_json = "1.0"
6912
serde-wasm-bindgen = "0.6"
7013
reqwest = { version = "0.12", features = ["blocking", "rustls-tls", "json"] }
7114
futures = "0.3"
15+
cef = "138.5.0"
16+
include_dir = "0.7.4"
7217
env_logger = "0.11"
7318
log = "0.4"
7419
bitflags = { version = "2.4", features = ["serde"] }

desktop/Cargo.toml

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,10 @@ repository = ""
88
edition = "2021"
99
rust-version = "1.79"
1010

11-
[features]
12-
default = ["gpu"]
13-
gpu = ["graphite-editor/gpu"]
14-
1511
[dependencies]
16-
# Local dependencies
17-
graphite-editor = { path = "../editor", features = [
18-
"gpu",
19-
"ron",
20-
"vello",
21-
"decouple-execution",
22-
] }
2312
wgpu = { workspace = true }
2413
winit = { workspace = true, features = ["serde"] }
25-
base64.workspace = true
26-
thiserror.workspace = true
27-
pollster = "0.3"
28-
cef = "138.5.0"
29-
tracing-subscriber = { version = "0.3.19", features = ["env-filter"] }
30-
tracing = "0.1.41"
31-
bytemuck = { version = "1.23.1", features = ["derive"] }
32-
include_dir = "0.7.4"
14+
thiserror = { workspace = true }
15+
futures = { workspace = true }
16+
cef = { workspace = true }
17+
include_dir = { workspace = true }

desktop/build.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
use std::fs::metadata;
22

33
fn main() {
4-
let frontend_dir = format!("{}/../frontend/dist", env!("CARGO_MANIFEST_DIR"));
4+
let frontend_dir = format!("{}/../frontend-native/dist", env!("CARGO_MANIFEST_DIR"));
5+
println!("frontend_dir: {}", frontend_dir);
56
metadata(&frontend_dir).expect("Failed to find frontend directory. Please build the frontend first.");
67
metadata(format!("{}/index.html", &frontend_dir)).expect("Failed to find index.html in frontend directory.");
78

desktop/src/cef/context.rs

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,14 @@ use cef::{browser_host_create_browser_sync, initialize, BrowserSettings, Diction
44
use thiserror::Error;
55
use winit::event::WindowEvent;
66

7+
use crate::cef::internal::OffscreenRenderHandler;
8+
use crate::render::FrameBufferHandle;
9+
use crate::WindowStateHandle;
10+
711
use super::input::{handle_window_event, InputState};
812
use super::EventHandler;
913

10-
use super::internal::{AppImpl, ClientImpl, NonBrowserAppImpl, RenderHandlerImpl};
14+
use super::internal::{AppImpl, ClientImpl, OffscreenApp, RenderHandlerImpl};
1115

1216
pub(crate) struct Setup {}
1317
pub(crate) struct Initialized {}
@@ -37,7 +41,7 @@ impl Context<Setup> {
3741
let is_browser_process = cmd.has_switch(Some(&switch)) != 1;
3842
if !is_browser_process {
3943
let process_type = CefString::from(&cmd.switch_value(Some(&switch)));
40-
let mut app = NonBrowserAppImpl::new();
44+
let mut app = OffscreenApp::new();
4145
let ret = execute_process(Some(args.as_main_args()), Some(&mut app), std::ptr::null_mut());
4246
if ret >= 0 {
4347
return Err(SetupError::SubprocessFailed(process_type.to_string()));
@@ -53,19 +57,8 @@ impl Context<Setup> {
5357
})
5458
}
5559

56-
pub(crate) fn init(self, event_handler: impl EventHandler) -> Result<Context<Initialized>, InitError> {
57-
let mut settings = Settings::default();
58-
settings.windowless_rendering_enabled = 1;
59-
settings.multi_threaded_message_loop = 0;
60-
61-
let mut cef_app = AppImpl::new(event_handler.clone());
62-
63-
let res = initialize(Some(self.args.as_main_args()), Some(&settings), Some(&mut cef_app), std::ptr::null_mut());
64-
if res != 1 {
65-
return Err(InitError::InitializationFailed);
66-
}
67-
68-
let render_handler = RenderHandlerImpl::new(event_handler.clone());
60+
pub(crate) fn init(self, frame_buffer: FrameBufferHandle) -> Result<Context<Initialized>, InitError> {
61+
let render_handler = OffscreenRenderHandler::new(frame_buffer);
6962
let mut client = ClientImpl::new(render_handler);
7063

7164
let url = CefString::from("graphite://frontend/");

desktop/src/cef/input/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ pub(crate) fn handle_window_event(context: &mut Context<Initialized>, event: &Wi
2323

2424
context.input_state.update_mouse_position(position);
2525
let mouse_event: MouseEvent = (&context.input_state).into();
26-
browser.host().unwrap().send_mouse_move_event(Some(&mouse_event), 0);
26+
// browser.host().unwrap().send_mouse_move_event(Some(&mouse_event), 0);
2727
}
2828
}
2929
WindowEvent::MouseInput { state, button, .. } => {

desktop/src/cef/internal/app.rs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,35 @@
11
use cef::rc::{Rc, RcImpl};
22
use cef::sys::{_cef_app_t, cef_base_ref_counted_t};
3-
use cef::{App, BrowserProcessHandler, ImplApp, SchemeRegistrar, WrapApp};
3+
use cef::{App, BrowserProcessHandler, Frame, ImplApp, SchemeRegistrar, WrapApp};
44

55
use crate::cef::scheme_handler::GraphiteSchemeHandlerFactory;
66
use crate::cef::EventHandler;
7+
use crate::render::{FrameBuffer, FrameBufferHandle};
78

8-
use super::browser_process_handler::BrowserProcessHandlerImpl;
9+
use super::browser_process_handler::OffscreenBrowserProcessHandler;
910

10-
pub(crate) struct AppImpl<H: EventHandler> {
11-
object: *mut RcImpl<_cef_app_t, Self>,
12-
event_handler: H,
11+
struct OffscreenApp {
12+
object: *mut RcImpl<cef_dll_sys::_cef_app_t, Self>,
13+
frame_buffer: Arc<Mutex<FrameBuffer>>,
1314
}
14-
impl<H: EventHandler> AppImpl<H> {
15-
pub(crate) fn new(event_handler: H) -> App {
15+
16+
impl OffscreenApp {
17+
fn new(frame_buffer: Arc<Mutex<FrameBuffer>>) -> App {
1618
App::new(Self {
1719
object: std::ptr::null_mut(),
18-
event_handler,
20+
frame_buffer,
1921
})
2022
}
2123
}
2224

23-
impl<H: EventHandler> ImplApp for AppImpl<H> {
25+
impl ImplApp for OffscreenApp {
2426
fn browser_process_handler(&self) -> Option<BrowserProcessHandler> {
25-
Some(BrowserProcessHandlerImpl::new(self.event_handler.clone()))
27+
println!("browser_process_handler");
28+
Some(OffscreenBrowserProcessHandler::new(self.frame_buffer.clone()))
2629
}
2730

2831
fn on_register_custom_schemes(&self, registrar: Option<&mut SchemeRegistrar>) {
32+
println!("on_register_custom_schemes");
2933
GraphiteSchemeHandlerFactory::register_schemes(registrar);
3034
}
3135

desktop/src/cef/internal/browser_process_handler.rs

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,17 @@ use cef::sys::{_cef_browser_process_handler_t, cef_base_ref_counted_t, cef_brows
33
use cef::{BrowserProcessHandler, CefString, ImplBrowserProcessHandler, SchemeHandlerFactory, WrapBrowserProcessHandler};
44

55
use crate::cef::scheme_handler::GraphiteSchemeHandlerFactory;
6-
use crate::cef::EventHandler;
76

8-
pub(crate) struct BrowserProcessHandlerImpl<H: EventHandler> {
7+
pub(crate) struct OffscreenBrowserProcessHandler {
98
object: *mut RcImpl<cef_browser_process_handler_t, Self>,
10-
event_handler: H,
119
}
12-
impl<H: EventHandler> BrowserProcessHandlerImpl<H> {
13-
pub(crate) fn new(event_handler: H) -> BrowserProcessHandler {
14-
BrowserProcessHandler::new(Self {
15-
object: std::ptr::null_mut(),
16-
event_handler,
17-
})
10+
impl OffscreenBrowserProcessHandler {
11+
pub(crate) fn new() -> BrowserProcessHandler {
12+
BrowserProcessHandler::new(Self { object: std::ptr::null_mut() })
1813
}
1914
}
2015

21-
impl<H: EventHandler> ImplBrowserProcessHandler for BrowserProcessHandlerImpl<H> {
16+
impl ImplBrowserProcessHandler for OffscreenBrowserProcessHandler {
2217
fn on_context_initialized(&self) {
2318
cef::register_scheme_handler_factory(Some(&CefString::from("graphite")), None, Some(&mut SchemeHandlerFactory::new(GraphiteSchemeHandlerFactory::new())));
2419
}
@@ -28,27 +23,24 @@ impl<H: EventHandler> ImplBrowserProcessHandler for BrowserProcessHandlerImpl<H>
2823
}
2924
}
3025

31-
impl<H: EventHandler> Clone for BrowserProcessHandlerImpl<H> {
26+
impl Clone for OffscreenBrowserProcessHandler {
3227
fn clone(&self) -> Self {
3328
unsafe {
3429
let rc_impl = &mut *self.object;
3530
rc_impl.interface.add_ref();
3631
}
37-
Self {
38-
object: self.object,
39-
event_handler: self.event_handler.clone(),
40-
}
32+
Self { object: self.object }
4133
}
4234
}
43-
impl<H: EventHandler> Rc for BrowserProcessHandlerImpl<H> {
35+
impl Rc for OffscreenBrowserProcessHandler {
4436
fn as_base(&self) -> &cef_base_ref_counted_t {
4537
unsafe {
4638
let base = &*self.object;
4739
std::mem::transmute(&base.cef_object)
4840
}
4941
}
5042
}
51-
impl<H: EventHandler> WrapBrowserProcessHandler for BrowserProcessHandlerImpl<H> {
43+
impl WrapBrowserProcessHandler for OffscreenBrowserProcessHandler {
5244
fn wrap_rc(&mut self, object: *mut RcImpl<_cef_browser_process_handler_t, Self>) {
5345
self.object = object;
5446
}

desktop/src/cef/internal/client.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use cef::rc::{Rc, RcImpl};
22
use cef::sys::{_cef_client_t, cef_base_ref_counted_t};
33
use cef::{Client, ImplClient, RenderHandler, WrapClient};
44

5+
56
pub(crate) struct ClientImpl {
67
object: *mut RcImpl<_cef_client_t, Self>,
78
render_handler: RenderHandler,

desktop/src/cef/internal/mod.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
mod app;
21
mod browser_process_handler;
32
mod client;
4-
mod non_browser_app;
3+
mod offscreen_app;
54
mod render_handler;
65

7-
pub(crate) use app::AppImpl;
86
pub(crate) use client::ClientImpl;
9-
pub(crate) use non_browser_app::NonBrowserAppImpl;
10-
pub(crate) use render_handler::RenderHandlerImpl;
7+
pub(crate) use offscreen_app::OffscreenApp;
8+
pub(crate) use render_handler::OffscreenRenderHandler;

0 commit comments

Comments
 (0)