From e0d1270833bc0367b8d3b90c48092bfea6946060 Mon Sep 17 00:00:00 2001 From: hypercube <0hypercube@gmail.com> Date: Wed, 29 Jan 2025 18:43:21 +0000 Subject: [PATCH 1/2] Use the identity matrix as the default for an image frame --- node-graph/gcore/src/raster/image.rs | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/node-graph/gcore/src/raster/image.rs b/node-graph/gcore/src/raster/image.rs index f4f89e0606..2a0ef632ca 100644 --- a/node-graph/gcore/src/raster/image.rs +++ b/node-graph/gcore/src/raster/image.rs @@ -236,7 +236,7 @@ pub fn migrate_image_frame<'de, D: serde::Deserializer<'de>>(deserializer: D) -> pub type ImageFrameTable

= Instances>; -#[derive(Clone, Debug, PartialEq, specta::Type)] +#[derive(Clone, Debug, Default, PartialEq, specta::Type)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct ImageFrame { pub image: Image

, @@ -253,17 +253,6 @@ pub struct ImageFrame { pub alpha_blending: AlphaBlending, } -impl Default for ImageFrame

{ - fn default() -> Self { - Self { - image: Image::empty(), - alpha_blending: AlphaBlending::new(), - // Different from DAffine2::default() which is IDENTITY - transform: DAffine2::ZERO, - } - } -} - impl Sample for ImageFrame

{ type Pixel = P; From 029aededbdae79eaefc4fc0952074a510e1bf5d3 Mon Sep 17 00:00:00 2001 From: Keavon Chambers Date: Wed, 29 Jan 2025 12:46:28 -0800 Subject: [PATCH 2/2] Fix all usages to be equivalent to their pre-refactor versions, opting to keep ZERO not IDENTITY as the default image size --- .../portfolio/document/document_message_handler.rs | 6 +++++- node-graph/gcore/src/raster/image.rs | 13 ++++++++++++- node-graph/gstd/src/brush.rs | 2 +- node-graph/gstd/src/raster.rs | 2 +- node-graph/gstd/src/wasm_application_io.rs | 3 ++- .../interpreted-executor/src/node_registry.rs | 2 +- 6 files changed, 22 insertions(+), 6 deletions(-) diff --git a/editor/src/messages/portfolio/document/document_message_handler.rs b/editor/src/messages/portfolio/document/document_message_handler.rs index 90e0f49be8..34ebb2acee 100644 --- a/editor/src/messages/portfolio/document/document_message_handler.rs +++ b/editor/src/messages/portfolio/document/document_message_handler.rs @@ -767,7 +767,11 @@ impl MessageHandler> for DocumentMessag responses.add(DocumentMessage::AddTransaction); - let image_frame = ImageFrame { image, ..Default::default() }; + let image_frame = ImageFrame { + image, + transform: DAffine2::IDENTITY, + alpha_blending: Default::default(), + }; let layer = graph_modification_utils::new_image_layer(image_frame, layer_node_id, self.new_layer_parent(true), responses); if let Some(name) = name { diff --git a/node-graph/gcore/src/raster/image.rs b/node-graph/gcore/src/raster/image.rs index 2a0ef632ca..f4f89e0606 100644 --- a/node-graph/gcore/src/raster/image.rs +++ b/node-graph/gcore/src/raster/image.rs @@ -236,7 +236,7 @@ pub fn migrate_image_frame<'de, D: serde::Deserializer<'de>>(deserializer: D) -> pub type ImageFrameTable

= Instances>; -#[derive(Clone, Debug, Default, PartialEq, specta::Type)] +#[derive(Clone, Debug, PartialEq, specta::Type)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct ImageFrame { pub image: Image

, @@ -253,6 +253,17 @@ pub struct ImageFrame { pub alpha_blending: AlphaBlending, } +impl Default for ImageFrame

{ + fn default() -> Self { + Self { + image: Image::empty(), + alpha_blending: AlphaBlending::new(), + // Different from DAffine2::default() which is IDENTITY + transform: DAffine2::ZERO, + } + } +} + impl Sample for ImageFrame

{ type Pixel = P; diff --git a/node-graph/gstd/src/brush.rs b/node-graph/gstd/src/brush.rs index 40876dd1ce..43f5b4c22a 100644 --- a/node-graph/gstd/src/brush.rs +++ b/node-graph/gstd/src/brush.rs @@ -272,7 +272,7 @@ fn brush(_: Footprint, image: ImageFrameTable, bounds: ImageFrameTable ImageFrameTable { ..Default::default() }, transform: DAffine2::from_translation(offset) * DAffine2::from_scale(size), - ..Default::default() + alpha_blending: Default::default(), }; ImageFrameTable::new(result) diff --git a/node-graph/gstd/src/wasm_application_io.rs b/node-graph/gstd/src/wasm_application_io.rs index bdbedda9e0..f5e31a713b 100644 --- a/node-graph/gstd/src/wasm_application_io.rs +++ b/node-graph/gstd/src/wasm_application_io.rs @@ -87,7 +87,8 @@ fn decode_image(_: (), data: Arc<[u8]>) -> ImageFrameTable { height: image.height(), ..Default::default() }, - ..Default::default() + transform: glam::DAffine2::IDENTITY, + alpha_blending: Default::default(), }; ImageFrameTable::new(image) diff --git a/node-graph/interpreted-executor/src/node_registry.rs b/node-graph/interpreted-executor/src/node_registry.rs index dda75861fe..c37c0eb2c1 100644 --- a/node-graph/interpreted-executor/src/node_registry.rs +++ b/node-graph/interpreted-executor/src/node_registry.rs @@ -161,7 +161,7 @@ fn node_registry() -> HashMap