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