@@ -350,13 +350,9 @@ impl NodeGraphExecutor {
350350 match node_graph_output {
351351 TaggedValue :: RenderOutput ( render_output) => {
352352 match render_output. data {
353- graphene_std:: wasm_application_io:: RenderOutputType :: Svg { svg, image_data, canvas } => {
353+ graphene_std:: wasm_application_io:: RenderOutputType :: Svg { svg, image_data } => {
354354 // Send to frontend
355- #[ cfg( target_arch = "wasm32" ) ]
356- if !image_data. is_empty ( ) {
357- let canvases = draw_image_frame ( image_data, canvas. 0 . unwrap ( ) ) ;
358- responses. add ( FrontendMessage :: UpdateCanvasImage { canvases } ) ;
359- }
355+ responses. add ( FrontendMessage :: UpdateImageData { image_data } ) ;
360356 responses. add ( FrontendMessage :: UpdateDocumentArtwork { svg } ) ;
361357 }
362358 graphene_std:: wasm_application_io:: RenderOutputType :: CanvasFrame ( frame) => {
@@ -398,73 +394,6 @@ impl NodeGraphExecutor {
398394 }
399395}
400396
401- #[ cfg( target_arch = "wasm32" ) ]
402- use graph_craft:: wasm_application_io:: WasmSurfaceHandle ;
403- #[ cfg( target_arch = "wasm32" ) ]
404- use graphene_std:: Color ;
405- #[ cfg( target_arch = "wasm32" ) ]
406- use graphene_std:: application_io;
407- #[ cfg( target_arch = "wasm32" ) ]
408- use graphene_std:: raster:: { Image , TransformImage } ;
409- #[ cfg( target_arch = "wasm32" ) ]
410- use js_sys:: { Object , Reflect } ;
411- #[ cfg( target_arch = "wasm32" ) ]
412- use std:: sync:: Arc ;
413- #[ cfg( target_arch = "wasm32" ) ]
414- use wasm_bindgen:: Clamped ;
415- #[ cfg( target_arch = "wasm32" ) ]
416- use wasm_bindgen:: JsCast ;
417- #[ cfg( target_arch = "wasm32" ) ]
418- use wasm_bindgen:: JsValue ;
419- #[ cfg( target_arch = "wasm32" ) ]
420- use web_sys:: CanvasRenderingContext2d ;
421- #[ cfg( target_arch = "wasm32" ) ]
422- use web_sys:: HtmlCanvasElement ;
423-
424- #[ cfg( target_arch = "wasm32" ) ]
425- fn draw_image_frame ( images : Vec < ( u64 , Image < Color > , TransformImage ) > , surface_handle : Arc < WasmSurfaceHandle > ) -> FrontendHtmlCanvases {
426- let mut canvases = Vec :: new ( ) ;
427- let window = web_sys:: window ( ) . expect ( "No window object exists" ) ;
428- let image_canvases_key = JsValue :: from_str ( "imageCanvases" ) ;
429- let image_canvases_obj = match Reflect :: get ( & window, & image_canvases_key) {
430- Ok ( obj) if !obj. is_undefined ( ) => obj. dyn_into :: < Object > ( ) . expect ( "window.imageCanvases is not an object" ) ,
431- _ => {
432- let new_obj = Object :: new ( ) ;
433- Reflect :: set ( & window, & image_canvases_key, & new_obj) . expect ( "Failed to set window.imageCanvases" ) ;
434- new_obj
435- }
436- } ;
437-
438- for ( id, image, transform) in images {
439- let image_data_rgba8: Vec < u8 > = image. data . iter ( ) . flat_map ( |color| color. to_rgba8_srgb ( ) ) . collect ( ) ;
440-
441- let array: Clamped < & [ u8 ] > = Clamped ( & image_data_rgba8) ;
442- if image. width > 0 && image. height > 0 {
443- let document = window. document ( ) . expect ( "should have a document on window" ) ;
444- let canvas_element = document
445- . create_element ( "canvas" )
446- . expect ( "failed to create canvas element" )
447- . dyn_into :: < HtmlCanvasElement > ( )
448- . expect ( "failed to cast to canvas element" ) ;
449-
450- canvas_element. set_width ( 1 ) ;
451- canvas_element. set_height ( 1 ) ;
452- let context = canvas_element. get_context ( "2d" ) . unwrap ( ) . unwrap ( ) . dyn_into :: < CanvasRenderingContext2d > ( ) . unwrap ( ) ;
453-
454- let image_data = web_sys:: ImageData :: new_with_u8_clamped_array_and_sh ( array, image. width , image. height ) . expect ( "Failed to construct ImageData" ) ;
455- context. put_image_data ( & image_data, 0. , 0. ) . unwrap ( ) ;
456- let canvas_name = format ! ( "canvas{}" , id) ;
457- Reflect :: set ( & image_canvases_obj, & JsValue :: from_str ( & canvas_name) , & canvas_element) . expect ( "Failed to set canvas on imageCanvases object" ) ;
458- }
459-
460- let transform = transform. 0 ;
461- let surface_handle = surface_handle. clone ( ) ;
462- let canvas_frame = application_io:: SurfaceHandleFrame { surface_handle, transform } ;
463- canvases. push ( canvas_frame) ;
464- }
465- FrontendHtmlCanvases ( canvases)
466- }
467-
468397// Re-export for usage by tests in other modules
469398#[ cfg( test) ]
470399pub use test:: Instrumented ;
0 commit comments