Skip to content

Commit f5e4f25

Browse files
mTvare6Keavon
authored andcommitted
fix: remove the old message
1 parent bff0690 commit f5e4f25

9 files changed

Lines changed: 16 additions & 131 deletions

File tree

editor/src/messages/frontend/frontend_message.rs

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,10 @@ use crate::messages::portfolio::document::utility_types::wires::{WirePath, WireP
88
use crate::messages::prelude::*;
99
use crate::messages::tool::utility_types::HintData;
1010
use graph_craft::document::NodeId;
11-
use graphene_std::application_io;
11+
use graphene_std::raster::Image;
12+
use graphene_std::raster::TransformImage;
1213
use graphene_std::raster::color::Color;
1314
use graphene_std::text::Font;
14-
use web_sys::HtmlCanvasElement;
15-
16-
#[derive(Debug, Clone, dyn_any::DynAny, Default, PartialEq)]
17-
pub struct FrontendHtmlCanvases(pub Vec<application_io::SurfaceHandleFrame<HtmlCanvasElement>>);
18-
19-
unsafe impl Send for FrontendHtmlCanvases {}
20-
unsafe impl Sync for FrontendHtmlCanvases {}
2115

2216
#[impl_message(Message, Frontend)]
2317
#[derive(PartialEq, Clone, Debug, serde::Serialize, serde::Deserialize, specta::Type)]
@@ -187,9 +181,8 @@ pub enum FrontendMessage {
187181
UpdateDocumentArtwork {
188182
svg: String,
189183
},
190-
UpdateCanvasImage {
191-
#[serde(skip)]
192-
canvases: FrontendHtmlCanvases,
184+
UpdateImageData {
185+
image_data: Vec<(u64, Image<Color>, TransformImage)>,
193186
},
194187
UpdateDocumentBarLayout {
195188
#[serde(rename = "layoutTarget")]

editor/src/messages/frontend/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ mod frontend_message;
33
pub mod utility_types;
44

55
#[doc(inline)]
6-
pub use frontend_message::{FrontendMessage, FrontendMessageDiscriminant, FrontendHtmlCanvases};
6+
pub use frontend_message::{FrontendMessage, FrontendMessageDiscriminant};

editor/src/messages/prelude.rs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,7 @@ pub use crate::messages::input_mapper::key_mapping::{KeyMappingMessage, KeyMappi
1515
pub use crate::messages::input_mapper::{InputMapperMessage, InputMapperMessageContext, InputMapperMessageDiscriminant, InputMapperMessageHandler};
1616
pub use crate::messages::input_preprocessor::{InputPreprocessorMessage, InputPreprocessorMessageContext, InputPreprocessorMessageDiscriminant, InputPreprocessorMessageHandler};
1717
pub use crate::messages::layout::{LayoutMessage, LayoutMessageDiscriminant, LayoutMessageHandler};
18-
pub use crate::messages::portfolio::document::graph_operation::{GraphOperationMessage, GraphOperationMessageContext, GraphOperationMessageDiscriminant, GraphOperationMessageHandler};
19-
pub use crate::messages::portfolio::document::navigation::{NavigationMessage, NavigationMessageContext, NavigationMessageDiscriminant, NavigationMessageHandler};
20-
pub use crate::messages::portfolio::document::node_graph::{NodeGraphMessage, NodeGraphMessageDiscriminant, NodeGraphMessageHandler};
21-
pub use crate::messages::portfolio::document::overlays::{OverlaysMessage, OverlaysMessageContext, OverlaysMessageDiscriminant, OverlaysMessageHandler};
22-
pub use crate::messages::portfolio::document::properties_panel::{PropertiesPanelMessage, PropertiesPanelMessageDiscriminant, PropertiesPanelMessageHandler};
23-
pub use crate::messages::portfolio::document::{DocumentMessage, DocumentMessageContext, DocumentMessageDiscriminant, DocumentMessageHandler};
24-
pub use crate::messages::portfolio::menu_bar::{MenuBarMessage, MenuBarMessageDiscriminant, MenuBarMessageHandler};
18+
pub use crate::messages::portfolio::document::graph_operation::{GraphOperationMessage, GraphOperationMessageContext, GraphOperationMessageDiscriminant, GraphOperationMessageHandler}; pub use crate::messages::portfolio::document::navigation::{NavigationMessage, NavigationMessageContext, NavigationMessageDiscriminant, NavigationMessageHandler}; pub use crate::messages::portfolio::document::node_graph::{NodeGraphMessage, NodeGraphMessageDiscriminant, NodeGraphMessageHandler}; pub use crate::messages::portfolio::document::overlays::{OverlaysMessage, OverlaysMessageContext, OverlaysMessageDiscriminant, OverlaysMessageHandler}; pub use crate::messages::portfolio::document::properties_panel::{PropertiesPanelMessage, PropertiesPanelMessageDiscriminant, PropertiesPanelMessageHandler}; pub use crate::messages::portfolio::document::{DocumentMessage, DocumentMessageContext, DocumentMessageDiscriminant, DocumentMessageHandler}; pub use crate::messages::portfolio::menu_bar::{MenuBarMessage, MenuBarMessageDiscriminant, MenuBarMessageHandler};
2519
pub use crate::messages::portfolio::spreadsheet::{SpreadsheetMessage, SpreadsheetMessageDiscriminant};
2620
pub use crate::messages::portfolio::{PortfolioMessage, PortfolioMessageContext, PortfolioMessageDiscriminant, PortfolioMessageHandler};
2721
pub use crate::messages::preferences::{PreferencesMessage, PreferencesMessageDiscriminant, PreferencesMessageHandler};
@@ -49,7 +43,6 @@ pub use crate::messages::tool::tool_messages::text_tool::{TextToolMessage, TextT
4943
// Helper
5044
pub use crate::messages::globals::global_variables::*;
5145
pub use crate::messages::portfolio::document::utility_types::misc::DocumentId;
52-
pub use crate::messages::frontend::FrontendHtmlCanvases;
5346
pub use graphite_proc_macros::*;
5447
pub use std::collections::{HashMap, HashSet, VecDeque};
5548

editor/src/node_graph_executor.rs

Lines changed: 2 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -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)]
470399
pub use test::Instrumented;

frontend/src/messages.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -689,8 +689,6 @@ export class UpdateDocumentArtwork extends JsMessage {
689689
readonly svg!: string;
690690
}
691691

692-
export class UpdateCanvasImage extends JsMessage {}
693-
694692
export class UpdateDocumentScrollbars extends JsMessage {
695693
@TupleToVec2
696694
readonly position!: XY;
@@ -1658,7 +1656,6 @@ export const messageMakers: Record<string, MessageMaker> = {
16581656
UpdateDialogColumn1,
16591657
UpdateDialogColumn2,
16601658
UpdateDocumentArtwork,
1661-
UpdateCanvasImage,
16621659
UpdateDocumentBarLayout,
16631660
UpdateDocumentLayerDetails,
16641661
UpdateDocumentLayerStructureJs,

node-graph/gcore/src/raster/image.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ pub struct Image<P: Pixel> {
5050
// TODO: Currently it is always anchored at the top left corner at (0, 0). The bottom right corner of the new origin field would correspond to (1, 1).
5151
}
5252

53-
#[derive(Debug, Clone, dyn_any::DynAny, Default, PartialEq, serde::Serialize, serde::Deserialize)]
53+
#[derive(Debug, Clone, dyn_any::DynAny, Default, PartialEq, serde::Serialize, serde::Deserialize, specta::Type)]
5454
pub struct TransformImage(pub DAffine2);
5555

5656
impl Hash for TransformImage {

node-graph/graph-craft/src/document/value.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use super::DocumentNode;
22
use crate::proto::{Any as DAny, FutureAny};
3-
use crate::wasm_application_io::{WasmCanvas, WasmEditorApi};
3+
use crate::wasm_application_io::WasmEditorApi;
44
use dyn_any::DynAny;
55
pub use dyn_any::StaticType;
66
pub use glam::{DAffine2, DVec2, IVec2, UVec2};
@@ -429,12 +429,7 @@ pub struct RenderOutput {
429429
#[derive(Debug, Clone, Hash, PartialEq, dyn_any::DynAny, serde::Serialize, serde::Deserialize)]
430430
pub enum RenderOutputType {
431431
CanvasFrame(SurfaceFrame),
432-
Svg {
433-
svg: String,
434-
image_data: Vec<(u64, Image<Color>, TransformImage)>,
435-
#[serde(skip)]
436-
canvas: WasmCanvas,
437-
},
432+
Svg { svg: String, image_data: Vec<(u64, Image<Color>, TransformImage)> },
438433
Image(Vec<u8>),
439434
}
440435

node-graph/graph-craft/src/wasm_application_io.rs

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -314,33 +314,13 @@ impl ApplicationIo for WasmApplicationIo {
314314
#[cfg(feature = "wgpu")]
315315
pub type WasmSurfaceHandle = SurfaceHandle<wgpu_executor::Window>;
316316
#[cfg(feature = "wgpu")]
317-
#[derive(Debug, Clone, dyn_any::DynAny, Default)]
318-
pub struct WasmCanvas(pub Option<Arc<WasmSurfaceHandle>>);
319-
#[cfg(feature = "wgpu")]
320317
pub type WasmSurfaceHandleFrame = graphene_application_io::SurfaceHandleFrame<wgpu_executor::Window>;
321318

322-
#[cfg(feature = "wgpu")]
323-
unsafe impl Send for WasmCanvas {}
324-
#[cfg(feature = "wgpu")]
325-
unsafe impl Sync for WasmCanvas {}
326-
327319
#[derive(Clone, Debug, PartialEq, Hash, specta::Type, serde::Serialize, serde::Deserialize)]
328320
pub struct EditorPreferences {
329321
pub use_vello: bool,
330322
}
331323

332-
#[cfg(feature = "wgpu")]
333-
impl Hash for WasmCanvas {
334-
fn hash<H: std::hash::Hasher>(&self, _: &mut H) {}
335-
}
336-
337-
#[cfg(feature = "wgpu")]
338-
impl PartialEq for WasmCanvas {
339-
fn eq(&self, _: &Self) -> bool {
340-
true
341-
}
342-
}
343-
344324
impl graphene_application_io::GetEditorPreferences for EditorPreferences {
345325
fn use_vello(&self) -> bool {
346326
self.use_vello

node-graph/gstd/src/wasm_application_io.rs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ fn decode_image(_: impl Ctx, data: Arc<[u8]>) -> RasterDataTable<CPU> {
6464
RasterDataTable::new(Raster::new_cpu(image))
6565
}
6666

67-
fn render_svg(data: impl GraphicElementRendered, mut render: SvgRender, render_params: RenderParams, footprint: Footprint, editor: &WasmEditorApi) -> RenderOutputType {
67+
fn render_svg(data: impl GraphicElementRendered, mut render: SvgRender, render_params: RenderParams, footprint: Footprint) -> RenderOutputType {
6868
if !data.contains_artboard() && !render_params.hide_artboards {
6969
render.leaf_tag("rect", |attributes| {
7070
attributes.push("x", "0");
@@ -85,9 +85,7 @@ fn render_svg(data: impl GraphicElementRendered, mut render: SvgRender, render_p
8585

8686
let svg = render.svg.to_svg_string();
8787
let image_data = render.image_data;
88-
let canvas = (!image_data.is_empty()).then_some(Arc::new(editor.application_io.as_ref().unwrap().create_window()));
89-
let canvas = WasmCanvas(canvas);
90-
RenderOutputType::Svg { svg, image_data, canvas }
88+
RenderOutputType::Svg { svg, image_data }
9189
}
9290

9391
#[cfg(feature = "vello")]
@@ -257,7 +255,7 @@ async fn render<'a: 'n, T: 'n + GraphicElementRendered + WasmNotSend>(
257255

258256
let output_format = render_config.export_format;
259257
let data = match output_format {
260-
ExportFormat::Svg => render_svg(data, SvgRender::new(), render_params, footprint, editor_api),
258+
ExportFormat::Svg => render_svg(data, SvgRender::new(), render_params, footprint),
261259
ExportFormat::Canvas => {
262260
if use_vello && editor_api.application_io.as_ref().unwrap().gpu_executor().is_some() {
263261
#[cfg(all(feature = "vello", not(test)))]
@@ -266,9 +264,9 @@ async fn render<'a: 'n, T: 'n + GraphicElementRendered + WasmNotSend>(
266264
metadata,
267265
};
268266
#[cfg(any(not(feature = "vello"), test))]
269-
render_svg(data, SvgRender::new(), render_params, footprint, editor_api)
267+
render_svg(data, SvgRender::new(), render_params, footprint)
270268
} else {
271-
render_svg(data, SvgRender::new(), render_params, footprint, editor_api)
269+
render_svg(data, SvgRender::new(), render_params, footprint)
272270
}
273271
}
274272
_ => todo!("Non-SVG render output for {output_format:?}"),

0 commit comments

Comments
 (0)