diff options
author | 2024-08-04 04:30:12 +0200 | |
---|---|---|
committer | 2024-08-04 04:30:12 +0200 | |
commit | 92bd3ecd6b4a6618f0fc725dea3694c3b40e5314 (patch) | |
tree | 8040fe0f758eb41cbf587119c5d972f5ebaa8567 /graphics | |
parent | 974ae6d1e7cd9df6967762a6d308106f4fe03edc (diff) | |
download | iced-92bd3ecd6b4a6618f0fc725dea3694c3b40e5314.tar.gz iced-92bd3ecd6b4a6618f0fc725dea3694c3b40e5314.tar.bz2 iced-92bd3ecd6b4a6618f0fc725dea3694c3b40e5314.zip |
Introduce `Image` struct in `core::image`
Diffstat (limited to 'graphics')
-rw-r--r-- | graphics/src/geometry.rs | 1 | ||||
-rw-r--r-- | graphics/src/geometry/frame.rs | 39 | ||||
-rw-r--r-- | graphics/src/image.rs | 28 |
3 files changed, 9 insertions, 59 deletions
diff --git a/graphics/src/geometry.rs b/graphics/src/geometry.rs index ab4a7a36..c7515e46 100644 --- a/graphics/src/geometry.rs +++ b/graphics/src/geometry.rs @@ -16,6 +16,7 @@ pub use stroke::{LineCap, LineDash, LineJoin, Stroke}; pub use style::Style; pub use text::Text; +pub use crate::core::Image; pub use crate::gradient::{self, Gradient}; use crate::cache::Cached; diff --git a/graphics/src/geometry/frame.rs b/graphics/src/geometry/frame.rs index d53d1331..1a7af8e6 100644 --- a/graphics/src/geometry/frame.rs +++ b/graphics/src/geometry/frame.rs @@ -1,8 +1,7 @@ //! Draw and generate geometry. -use crate::core::image; use crate::core::svg; use crate::core::{Color, Point, Radians, Rectangle, Size, Vector}; -use crate::geometry::{self, Fill, Path, Stroke, Text}; +use crate::geometry::{self, Fill, Image, Path, Stroke, Text}; /// The region of a surface that can be used to draw geometry. #[allow(missing_debug_implementations)] @@ -79,21 +78,8 @@ where /// Draws the given image on the [`Frame`] inside the given bounds. #[cfg(feature = "image")] - pub fn draw_image( - &mut self, - handle: &image::Handle, - bounds: Rectangle, - filter_method: image::FilterMethod, - rotation: impl Into<Radians>, - opacity: f32, - ) { - self.raw.draw_image( - handle, - bounds, - filter_method, - rotation.into(), - opacity, - ); + pub fn draw_image(&mut self, bounds: Rectangle, image: impl Into<Image>) { + self.raw.draw_image(bounds, image); } /// Stores the current transform of the [`Frame`] and executes the given @@ -219,14 +205,7 @@ pub trait Backend: Sized { fill: impl Into<Fill>, ); - fn draw_image( - &mut self, - handle: &image::Handle, - bounds: Rectangle, - filter_method: image::FilterMethod, - rotation: Radians, - opacity: f32, - ); + fn draw_image(&mut self, bounds: Rectangle, image: impl Into<Image>); fn draw_svg( &mut self, @@ -285,15 +264,7 @@ impl Backend for () { fn into_geometry(self) -> Self::Geometry {} - fn draw_image( - &mut self, - _handle: &image::Handle, - _bounds: Rectangle, - _filter_method: image::FilterMethod, - _rotation: Radians, - _opacity: f32, - ) { - } + fn draw_image(&mut self, _bounds: Rectangle, _image: impl Into<Image>) {} fn draw_svg( &mut self, diff --git a/graphics/src/image.rs b/graphics/src/image.rs index 0e8f2fe3..2e4f4b5a 100644 --- a/graphics/src/image.rs +++ b/graphics/src/image.rs @@ -8,28 +8,8 @@ use crate::core::{image, svg, Color, Radians, Rectangle}; #[derive(Debug, Clone, PartialEq)] pub enum Image { /// A raster image. - Raster { - /// The handle of a raster image. - handle: image::Handle, + Raster(image::Image, Rectangle), - /// The filter method of a raster image. - filter_method: image::FilterMethod, - - /// The bounds of the image. - bounds: Rectangle, - - /// The rotation of the image. - rotation: Radians, - - /// The opacity of the image. - opacity: f32, - - /// If set to `true`, the image will be snapped to the pixel grid. - /// - /// This can avoid graphical glitches, specially when using a - /// [`image::FilterMethod::Nearest`]. - snap: bool, - }, /// A vector image. Vector { /// The handle of a vector image. @@ -53,10 +33,8 @@ impl Image { /// Returns the bounds of the [`Image`]. pub fn bounds(&self) -> Rectangle { match self { - Image::Raster { - bounds, rotation, .. - } - | Image::Vector { + Image::Raster(image, bounds) => bounds.rotate(image.rotation), + Image::Vector { bounds, rotation, .. } => bounds.rotate(*rotation), } |