rotation feature to plot images (#3121)
This commit is contained in:
parent
f2a58244c8
commit
01b1b2da76
|
|
@ -1132,6 +1132,7 @@ pub struct PlotImage {
|
||||||
pub(super) tint: Color32,
|
pub(super) tint: Color32,
|
||||||
pub(super) highlight: bool,
|
pub(super) highlight: bool,
|
||||||
pub(super) name: String,
|
pub(super) name: String,
|
||||||
|
pub(crate) rotation: Option<(f32, Vec2)>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl PlotImage {
|
impl PlotImage {
|
||||||
|
|
@ -1150,6 +1151,7 @@ impl PlotImage {
|
||||||
size: size.into(),
|
size: size.into(),
|
||||||
bg_fill: Default::default(),
|
bg_fill: Default::default(),
|
||||||
tint: Color32::WHITE,
|
tint: Color32::WHITE,
|
||||||
|
rotation: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1188,6 +1190,17 @@ impl PlotImage {
|
||||||
self.name = name.to_string();
|
self.name = name.to_string();
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Rotate the image about an origin by some angle
|
||||||
|
///
|
||||||
|
/// Positive angle is clockwise.
|
||||||
|
/// Origin is a vector in normalized UV space ((0,0) in top-left, (1,1) bottom right).
|
||||||
|
///
|
||||||
|
/// To rotate about the center you can pass `Vec2::splat(0.5)` as the origin.
|
||||||
|
pub fn rotate(mut self, angle: f32, origin: Vec2) -> Self {
|
||||||
|
self.rotation = Some((angle, origin));
|
||||||
|
self
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl PlotItem for PlotImage {
|
impl PlotItem for PlotImage {
|
||||||
|
|
@ -1215,11 +1228,14 @@ impl PlotItem for PlotImage {
|
||||||
let right_bottom_tf = transform.position_from_point(&right_bottom);
|
let right_bottom_tf = transform.position_from_point(&right_bottom);
|
||||||
Rect::from_two_pos(left_top_tf, right_bottom_tf)
|
Rect::from_two_pos(left_top_tf, right_bottom_tf)
|
||||||
};
|
};
|
||||||
Image::new(*texture_id, *size)
|
let mut image = Image::new(*texture_id, *size)
|
||||||
.bg_fill(*bg_fill)
|
.bg_fill(*bg_fill)
|
||||||
.tint(*tint)
|
.tint(*tint)
|
||||||
.uv(*uv)
|
.uv(*uv);
|
||||||
.paint_at(ui, rect);
|
if let Some((angle, origin)) = self.rotation {
|
||||||
|
image = image.rotate(angle, origin);
|
||||||
|
}
|
||||||
|
image.paint_at(ui, rect);
|
||||||
if *highlight {
|
if *highlight {
|
||||||
shapes.push(Shape::rect_stroke(
|
shapes.push(Shape::rect_stroke(
|
||||||
rect,
|
rect,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue