mirror of
https://github.com/aljazceru/notedeck.git
synced 2026-01-14 13:54:19 +01:00
anim: smoothly animate delete button from 0 size
This is a much cleaner animation Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
@@ -377,13 +377,12 @@ fn delete_column_button(
|
||||
|
||||
let helper = AnimationHelper::new_from_rect(ui, "delete-column-button", button_rect);
|
||||
|
||||
let cur_img_size = helper.scale_1d_pos(img_size);
|
||||
let cur_img_size = helper.scale_1d_pos_min_max(0.0, img_size);
|
||||
|
||||
let animation_rect = helper.get_animation_rect();
|
||||
let animation_resp = helper.take_animation_response();
|
||||
if allocation_response.union(animation_resp.clone()).hovered() {
|
||||
img.paint_at(ui, animation_rect.shrink((max_size - cur_img_size) / 2.0));
|
||||
}
|
||||
|
||||
img.paint_at(ui, animation_rect.shrink((max_size - cur_img_size) / 2.0));
|
||||
|
||||
animation_resp
|
||||
}
|
||||
|
||||
@@ -130,4 +130,9 @@ impl AnimationHelper {
|
||||
pub fn scale_pos_from_center(&self, min_pos: Pos2) -> Pos2 {
|
||||
self.scale_from_center(min_pos.x, min_pos.y)
|
||||
}
|
||||
|
||||
/// New method for min/max scaling when needed
|
||||
pub fn scale_1d_pos_min_max(&self, min_object_size: f32, max_object_size: f32) -> f32 {
|
||||
min_object_size + ((max_object_size - min_object_size) * self.animation_progress)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user