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),          }  | 
