@@ -21,7 +21,6 @@ pub struct OverlaysMessageHandler {
2121impl 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