summaryrefslogtreecommitdiffstats
path: root/widget/src
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2023-10-24 05:34:03 +0200
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-02-02 02:24:45 +0100
commitf4d66486016076bb339a338bc589645119962d1e (patch)
treebbb9c4d996216893296cf4323857323542d6e757 /widget/src
parenta6e91d13d5d43796d0e6bb570fb4f010cf27921a (diff)
downloadiced-f4d66486016076bb339a338bc589645119962d1e.tar.gz
iced-f4d66486016076bb339a338bc589645119962d1e.tar.bz2
iced-f4d66486016076bb339a338bc589645119962d1e.zip
Introduce `with_transformation` to `Renderer` trait
Diffstat (limited to 'widget/src')
-rw-r--r--widget/src/canvas.rs7
-rw-r--r--widget/src/image/viewer.rs29
-rw-r--r--widget/src/pane_grid.rs10
-rw-r--r--widget/src/qr_code.rs12
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]);
+ },
+ );
}
}