Skip to content

Commit 00cfa07

Browse files
authored
Stub vello based overlay implementation (#2956)
* Stub vello based overlay implementation * Fix warnings * Don't panic on non implemented functions to allow the tests to pass * Don't draw overlays for tests
1 parent b348fab commit 00cfa07

File tree

5 files changed

+799
-3
lines changed

5 files changed

+799
-3
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

editor/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ usvg = { workspace = true }
4646
once_cell = { workspace = true }
4747
web-sys = { workspace = true }
4848
bytemuck = { workspace = true }
49+
vello = { workspace = true }
4950

5051
# Required dependencies
5152
spin = "0.9.8"

editor/src/messages/portfolio/document/overlays/mod.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@ pub mod grid_overlays;
22
mod overlays_message;
33
mod overlays_message_handler;
44
pub mod utility_functions;
5+
#[cfg(target_arch = "wasm32")]
56
pub mod utility_types;
7+
#[cfg(not(target_arch = "wasm32"))]
8+
pub mod utility_types_vello;
9+
#[cfg(not(target_arch = "wasm32"))]
10+
pub use utility_types_vello as utility_types;
611

712
#[doc(inline)]
813
pub use overlays_message::{OverlaysMessage, OverlaysMessageDiscriminant};

editor/src/messages/portfolio/document/overlays/overlays_message_handler.rs

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ pub struct OverlaysMessageHandler {
2121
impl MessageHandler<OverlaysMessage, OverlaysMessageContext<'_>> for OverlaysMessageHandler {
2222
fn process_message(&mut self, message: OverlaysMessage, responses: &mut VecDeque<Message>, context: OverlaysMessageContext) {
2323
let OverlaysMessageContext { visibility_settings, ipp, .. } = context;
24-
#[cfg(target_arch = "wasm32")]
2524
let device_pixel_ratio = context.device_pixel_ratio;
2625

2726
match message {
@@ -69,9 +68,39 @@ impl MessageHandler<OverlaysMessage, OverlaysMessageContext<'_>> for OverlaysMes
6968
}
7069
}
7170
}
72-
#[cfg(not(target_arch = "wasm32"))]
71+
#[cfg(test)]
72+
OverlaysMessage::Draw => {}
73+
#[cfg(all(not(target_arch = "wasm32"), not(test)))]
7374
OverlaysMessage::Draw => {
74-
warn!("Cannot render overlays on non-Wasm targets.\n{responses:?} {visibility_settings:?} {ipp:?}",);
75+
use super::utility_types::OverlayContext;
76+
use vello::Scene;
77+
78+
let size = ipp.viewport_bounds.size().as_uvec2();
79+
80+
let scene = Scene::new();
81+
82+
if visibility_settings.all() {
83+
let overlay_context = OverlayContext {
84+
scene,
85+
size: size.as_dvec2(),
86+
device_pixel_ratio,
87+
visibility_settings,
88+
};
89+
90+
responses.add(DocumentMessage::GridOverlays(overlay_context.clone()));
91+
92+
for provider in &self.overlay_providers {
93+
let overlay_context = OverlayContext {
94+
scene: Scene::new(),
95+
size: size.as_dvec2(),
96+
device_pixel_ratio,
97+
visibility_settings,
98+
};
99+
responses.add(provider(overlay_context));
100+
}
101+
}
102+
103+
// TODO: Render the Vello scene to a texture and display it
75104
}
76105
OverlaysMessage::AddProvider(message) => {
77106
self.overlay_providers.insert(message);

0 commit comments

Comments
 (0)