diff options
| author | 2023-10-24 05:34:03 +0200 | |
|---|---|---|
| committer | 2024-02-02 02:24:45 +0100 | |
| commit | f4d66486016076bb339a338bc589645119962d1e (patch) | |
| tree | bbb9c4d996216893296cf4323857323542d6e757 /widget/src | |
| parent | a6e91d13d5d43796d0e6bb570fb4f010cf27921a (diff) | |
| download | iced-f4d66486016076bb339a338bc589645119962d1e.tar.gz iced-f4d66486016076bb339a338bc589645119962d1e.tar.bz2 iced-f4d66486016076bb339a338bc589645119962d1e.zip | |
Introduce `with_transformation` to `Renderer` trait
Diffstat (limited to '')
| -rw-r--r-- | widget/src/canvas.rs | 7 | ||||
| -rw-r--r-- | widget/src/image/viewer.rs | 29 | ||||
| -rw-r--r-- | widget/src/pane_grid.rs | 10 | ||||
| -rw-r--r-- | widget/src/qr_code.rs | 12 | 
4 files changed, 33 insertions, 25 deletions
| diff --git a/widget/src/canvas.rs b/widget/src/canvas.rs index 3e4a0928..0eda0191 100644 --- a/widget/src/canvas.rs +++ b/widget/src/canvas.rs @@ -7,7 +7,6 @@ pub use event::Event;  pub use program::Program;  pub use crate::graphics::geometry::*; -pub use crate::graphics::Transformation;  pub use crate::renderer::geometry::*;  use crate::core; @@ -16,7 +15,7 @@ use crate::core::mouse;  use crate::core::renderer;  use crate::core::widget::tree::{self, Tree};  use crate::core::{ -    Clipboard, Element, Length, Rectangle, Shell, Size, Vector, Widget, +    Clipboard, Element, Length, Rectangle, Shell, Size, Transformation, Widget,  };  use crate::graphics::geometry; @@ -208,8 +207,8 @@ where          let state = tree.state.downcast_ref::<P::State>(); -        renderer.with_translation( -            Vector::new(bounds.x, bounds.y), +        renderer.with_transformation( +            Transformation::translate(bounds.x, bounds.y),              |renderer| {                  renderer.draw(                      self.program.draw(state, renderer, theme, bounds, cursor), diff --git a/widget/src/image/viewer.rs b/widget/src/image/viewer.rs index 9666ff9f..0006f978 100644 --- a/widget/src/image/viewer.rs +++ b/widget/src/image/viewer.rs @@ -7,7 +7,7 @@ use crate::core::renderer;  use crate::core::widget::tree::{self, Tree};  use crate::core::{      Clipboard, Element, Layout, Length, Pixels, Point, Rectangle, Shell, Size, -    Vector, Widget, +    Transformation, Vector, Widget,  };  use std::hash::Hash; @@ -328,18 +328,21 @@ where          };          renderer.with_layer(bounds, |renderer| { -            renderer.with_translation(translation, |renderer| { -                image::Renderer::draw( -                    renderer, -                    self.handle.clone(), -                    self.filter_method, -                    Rectangle { -                        x: bounds.x, -                        y: bounds.y, -                        ..Rectangle::with_size(image_size) -                    }, -                ); -            }); +            renderer.with_transformation( +                Transformation::translate(translation.x, translation.y), +                |renderer| { +                    image::Renderer::draw( +                        renderer, +                        self.handle.clone(), +                        self.filter_method, +                        Rectangle { +                            x: bounds.x, +                            y: bounds.y, +                            ..Rectangle::with_size(image_size) +                        }, +                    ); +                }, +            );          });      }  } diff --git a/widget/src/pane_grid.rs b/widget/src/pane_grid.rs index f76c6088..24389462 100644 --- a/widget/src/pane_grid.rs +++ b/widget/src/pane_grid.rs @@ -43,7 +43,7 @@ use crate::core::widget;  use crate::core::widget::tree::{self, Tree};  use crate::core::{      Clipboard, Element, Layout, Length, Pixels, Point, Rectangle, Shell, Size, -    Vector, Widget, +    Transformation, Vector, Widget,  };  /// A collection of panes distributed using either vertical or horizontal splits @@ -962,9 +962,11 @@ pub fn draw<Theme, Renderer, T>(          if let Some(cursor_position) = cursor.position() {              let bounds = layout.bounds(); -            renderer.with_translation( -                cursor_position -                    - Point::new(bounds.x + origin.x, bounds.y + origin.y), +            let translation = cursor_position +                - Point::new(bounds.x + origin.x, bounds.y + origin.y); + +            renderer.with_transformation( +                Transformation::translate(translation.x, translation.y),                  |renderer| {                      renderer.with_layer(bounds, |renderer| {                          draw_pane( diff --git a/widget/src/qr_code.rs b/widget/src/qr_code.rs index 91c0a97b..da63d949 100644 --- a/widget/src/qr_code.rs +++ b/widget/src/qr_code.rs @@ -5,7 +5,8 @@ use crate::core::mouse;  use crate::core::renderer::{self, Renderer as _};  use crate::core::widget::Tree;  use crate::core::{ -    Color, Element, Layout, Length, Point, Rectangle, Size, Vector, Widget, +    Color, Element, Layout, Length, Point, Rectangle, Size, Transformation, +    Vector, Widget,  };  use crate::graphics::geometry::Renderer as _;  use crate::Renderer; @@ -121,9 +122,12 @@ impl<'a, Message, Theme> Widget<Message, Theme, Renderer> for QRCode<'a> {          let translation = Vector::new(bounds.x, bounds.y); -        renderer.with_translation(translation, |renderer| { -            renderer.draw(vec![geometry]); -        }); +        renderer.with_transformation( +            Transformation::translate(translation.x, translation.y), +            |renderer| { +                renderer.draw(vec![geometry]); +            }, +        );      }  } | 
