diff --git a/editor/src/messages/frontend/frontend_message.rs b/editor/src/messages/frontend/frontend_message.rs index 30cff95c..0276cdf4 100644 --- a/editor/src/messages/frontend/frontend_message.rs +++ b/editor/src/messages/frontend/frontend_message.rs @@ -56,7 +56,7 @@ pub enum FrontendMessage { #[serde(rename = "blobUrl")] blob_url: String, }, - TriggerDownloadRaster { + TriggerDownloadImage { svg: String, name: String, mime: String, diff --git a/editor/src/messages/portfolio/document/document_message_handler.rs b/editor/src/messages/portfolio/document/document_message_handler.rs index aab2c63a..73c389c5 100644 --- a/editor/src/messages/portfolio/document/document_message_handler.rs +++ b/editor/src/messages/portfolio/document/document_message_handler.rs @@ -388,7 +388,7 @@ impl MessageHandler> for DocumentMessageHand } else { let mime = file_type.to_mime().to_string(); let size = (size * scale_factor).into(); - responses.add(FrontendMessage::TriggerDownloadRaster { svg: document, name, mime, size }); + responses.add(FrontendMessage::TriggerDownloadImage { svg: document, name, mime, size }); } } FlipSelectedLayers { flip_axis } => { diff --git a/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler/node_properties.rs b/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler/node_properties.rs index 7a16b3c9..4149e942 100644 --- a/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler/node_properties.rs +++ b/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler/node_properties.rs @@ -742,9 +742,8 @@ pub fn load_image_properties(document_node: &DocumentNode, node_id: NodeId, _con pub fn output_properties(_document_node: &DocumentNode, _node_id: NodeId, context: &mut NodePropertiesContext) -> Vec { let output_type = context.executor.previous_output_type(context.layer_path); - let raster_output_type = concrete!(ImageFrame); let disabled = match output_type { - Some(output_type) => output_type != raster_output_type, + Some(output_type) => output_type != concrete!(ImageFrame), None => true, }; diff --git a/frontend/src/state-providers/portfolio.ts b/frontend/src/state-providers/portfolio.ts index 467b7848..52d6c10f 100644 --- a/frontend/src/state-providers/portfolio.ts +++ b/frontend/src/state-providers/portfolio.ts @@ -11,7 +11,7 @@ import { TriggerCopyToClipboardBlobUrl, TriggerFetchAndOpenDocument, TriggerDownloadBlobUrl, - TriggerDownloadRaster, + TriggerDownloadImage, TriggerDownloadTextFile, TriggerImport, TriggerOpenDocument, @@ -83,8 +83,8 @@ export function createPortfolioState(editor: Editor) { editor.subscriptions.subscribeJsMessage(TriggerCopyToClipboardBlobUrl, (triggerDownloadBlobUrl) => { copyToClipboardFileURL(triggerDownloadBlobUrl.blobUrl); }); - editor.subscriptions.subscribeJsMessage(TriggerDownloadRaster, async (triggerRasterDownload) => { - const { svg, name, mime, size } = triggerRasterDownload; + editor.subscriptions.subscribeJsMessage(TriggerDownloadImage, async (triggerDownloadImage) => { + const { svg, name, mime, size } = triggerDownloadImage; // Fill the canvas with white if it'll be a JPEG (which does not support transparency and defaults to black) const backgroundColor = mime.endsWith("jpeg") ? "white" : undefined; diff --git a/frontend/src/wasm-communication/messages.ts b/frontend/src/wasm-communication/messages.ts index 017ac400..ac3d4fa8 100644 --- a/frontend/src/wasm-communication/messages.ts +++ b/frontend/src/wasm-communication/messages.ts @@ -541,7 +541,7 @@ export class TriggerDownloadBlobUrl extends JsMessage { readonly blobUrl!: string; } -export class TriggerDownloadRaster extends JsMessage { +export class TriggerDownloadImage extends JsMessage { readonly svg!: string; readonly name!: string; @@ -1402,7 +1402,7 @@ export const messageMakers: Record = { TriggerCopyToClipboardBlobUrl, TriggerFetchAndOpenDocument, TriggerDownloadBlobUrl, - TriggerDownloadRaster, + TriggerDownloadImage, TriggerDownloadTextFile, TriggerFontLoad, TriggerGraphViewOverlay, diff --git a/node-graph/gcore/src/raster.rs b/node-graph/gcore/src/raster.rs index 20fc49d6..765989f1 100644 --- a/node-graph/gcore/src/raster.rs +++ b/node-graph/gcore/src/raster.rs @@ -222,15 +222,14 @@ impl<'i, T: Sample> Sample for &'i T { } } -// TODO: We might rename this to Bitmap at some point -pub trait Raster { +pub trait Bitmap { type Pixel: Pixel; fn width(&self) -> u32; fn height(&self) -> u32; fn get_pixel(&self, x: u32, y: u32) -> Option; } -impl<'i, T: Raster> Raster for &'i T { +impl<'i, T: Bitmap> Bitmap for &'i T { type Pixel = T::Pixel; fn width(&self) -> u32 { @@ -246,7 +245,7 @@ impl<'i, T: Raster> Raster for &'i T { } } -impl<'i, T: Raster> Raster for &'i mut T { +impl<'i, T: Bitmap> Bitmap for &'i mut T { type Pixel = T::Pixel; fn width(&self) -> u32 { @@ -262,7 +261,7 @@ impl<'i, T: Raster> Raster for &'i mut T { } } -pub trait RasterMut: Raster { +pub trait BitmapMut: Bitmap { fn get_pixel_mut(&mut self, x: u32, y: u32) -> Option<&mut Self::Pixel>; fn set_pixel(&mut self, x: u32, y: u32, pixel: Self::Pixel) { *self.get_pixel_mut(x, y).unwrap() = pixel; @@ -277,7 +276,7 @@ pub trait RasterMut: Raster { } } -impl<'i, T: RasterMut + Raster> RasterMut for &'i mut T { +impl<'i, T: BitmapMut + Bitmap> BitmapMut for &'i mut T { fn get_pixel_mut(&mut self, x: u32, y: u32) -> Option<&mut Self::Pixel> { (*self).get_pixel_mut(x, y) } @@ -567,7 +566,7 @@ impl<'a, P> Default for ImageSlice<'a, P> { } #[cfg(not(target_arch = "spirv"))] -impl Raster for ImageSlice<'_, P> { +impl Bitmap for ImageSlice<'_, P> { type Pixel = P; fn get_pixel(&self, x: u32, y: u32) -> Option

{ self.data.get((x + y * self.width) as usize).copied() diff --git a/node-graph/gcore/src/raster/image.rs b/node-graph/gcore/src/raster/image.rs index 26ecf9a9..0afa16dd 100644 --- a/node-graph/gcore/src/raster/image.rs +++ b/node-graph/gcore/src/raster/image.rs @@ -66,7 +66,7 @@ where type Static = Image; } -impl Raster for Image

{ +impl Bitmap for Image

{ type Pixel = P; #[inline(always)] fn get_pixel(&self, x: u32, y: u32) -> Option

{ @@ -82,7 +82,7 @@ impl Raster for Image

{ } } -impl RasterMut for Image

{ +impl BitmapMut for Image

{ fn get_pixel_mut(&mut self, x: u32, y: u32) -> Option<&mut P> { self.data.get_mut((x + y * self.width) as usize) } @@ -278,7 +278,7 @@ impl Sample for ImageFrame

{ } } -impl Raster for ImageFrame

{ +impl Bitmap for ImageFrame

{ type Pixel = P; fn width(&self) -> u32 { @@ -294,7 +294,7 @@ impl Raster for ImageFrame

{ } } -impl RasterMut for ImageFrame

{ +impl BitmapMut for ImageFrame

{ fn get_pixel_mut(&mut self, x: u32, y: u32) -> Option<&mut Self::Pixel> { self.image.get_pixel_mut(x, y) } diff --git a/node-graph/graph-craft/src/document/value.rs b/node-graph/graph-craft/src/document/value.rs index ce71f71f..5ec8deb4 100644 --- a/node-graph/graph-craft/src/document/value.rs +++ b/node-graph/graph-craft/src/document/value.rs @@ -352,5 +352,5 @@ impl UpcastNode { pub enum RenderOutput { CanvasFrame(graphene_core::SurfaceFrame), Svg(String), - Raster(Vec), + Image(Vec), } diff --git a/node-graph/gstd/src/raster.rs b/node-graph/gstd/src/raster.rs index 65d0d806..37791380 100644 --- a/node-graph/gstd/src/raster.rs +++ b/node-graph/gstd/src/raster.rs @@ -2,7 +2,7 @@ use dyn_any::{DynAny, StaticType}; use glam::{DAffine2, DVec2, Vec2}; use graph_craft::imaginate_input::{ImaginateController, ImaginateMaskStartingFill, ImaginateSamplingMethod}; use graph_craft::proto::DynFuture; -use graphene_core::raster::{Alpha, BlendMode, BlendNode, Image, ImageFrame, Linear, LinearChannel, Luminance, NoiseType, Pixel, RGBMut, Raster, RasterMut, RedGreenBlue, Sample}; +use graphene_core::raster::{Alpha, Bitmap, BitmapMut, BlendMode, BlendNode, Image, ImageFrame, Linear, LinearChannel, Luminance, NoiseType, Pixel, RGBMut, RedGreenBlue, Sample}; use graphene_core::transform::{Footprint, Transform}; use crate::wasm_application_io::WasmEditorApi; @@ -126,7 +126,7 @@ pub struct MapImageNode { } #[node_macro::node_fn(MapImageNode<_P>)] -fn map_image>(image: Img, map_fn: &'input MapFn) -> Img +fn map_image>(image: Img, map_fn: &'input MapFn) -> Img where MapFn: for<'any_input> Node<'any_input, _P, Output = _P> + 'input, { @@ -150,8 +150,8 @@ fn insert_channel_node< _P: RGBMut, _S: Pixel + Luminance, // Input image - Input: RasterMut, - Insertion: Raster, + Input: BitmapMut, + Insertion: Bitmap, >( mut image: Input, insertion: Insertion, @@ -200,7 +200,7 @@ fn mask_imge< // mask the input image _S: Luminance, // Input image - Input: Transform + RasterMut, + Input: Transform + BitmapMut, // Stencil Stencil: Transform + Sample, >( @@ -316,7 +316,7 @@ where blend_image(foreground, new_background, map_fn) } -fn blend_image<'input, _P: Alpha + Pixel + Debug, MapFn, Frame: Sample + Transform, Background: RasterMut + Transform + Sample>( +fn blend_image<'input, _P: Alpha + Pixel + Debug, MapFn, Frame: Sample + Transform, Background: BitmapMut + Transform + Sample>( foreground: Frame, background: Background, map_fn: &'input MapFn, @@ -327,7 +327,7 @@ where blend_image_closure(foreground, background, |a, b| map_fn.eval((a, b))) } -pub fn blend_image_closure<_P: Alpha + Pixel + Debug, MapFn, Frame: Sample + Transform, Background: RasterMut + Transform + Sample>( +pub fn blend_image_closure<_P: Alpha + Pixel + Debug, MapFn, Frame: Sample + Transform, Background: BitmapMut + Transform + Sample>( foreground: Frame, mut background: Background, map_fn: MapFn,