move close_button to ui/widgets.rs as x_button
Signed-off-by: kernelkind <kernelkind@gmail.com>
This commit is contained in:
36
crates/notedeck_columns/src/ui/widgets.rs
Normal file
36
crates/notedeck_columns/src/ui/widgets.rs
Normal file
@@ -0,0 +1,36 @@
|
||||
use egui::{emath::GuiRounding, Pos2, Stroke};
|
||||
|
||||
use super::anim::{AnimationHelper, ICON_EXPANSION_MULTIPLE};
|
||||
|
||||
pub fn x_button(rect: egui::Rect) -> impl egui::Widget {
|
||||
move |ui: &mut egui::Ui| -> egui::Response {
|
||||
let max_width = rect.width();
|
||||
let helper = AnimationHelper::new_from_rect(ui, "user_search_close", rect);
|
||||
|
||||
let fill_color = ui.visuals().text_color();
|
||||
|
||||
let radius = max_width / (2.0 * ICON_EXPANSION_MULTIPLE);
|
||||
|
||||
let painter = ui.painter();
|
||||
let ppp = ui.ctx().pixels_per_point();
|
||||
let nw_edge = helper
|
||||
.scale_pos_from_center(Pos2::new(-radius, radius))
|
||||
.round_to_pixel_center(ppp);
|
||||
let se_edge = helper
|
||||
.scale_pos_from_center(Pos2::new(radius, -radius))
|
||||
.round_to_pixel_center(ppp);
|
||||
let sw_edge = helper
|
||||
.scale_pos_from_center(Pos2::new(-radius, -radius))
|
||||
.round_to_pixel_center(ppp);
|
||||
let ne_edge = helper
|
||||
.scale_pos_from_center(Pos2::new(radius, radius))
|
||||
.round_to_pixel_center(ppp);
|
||||
|
||||
let line_width = helper.scale_1d_pos(2.0);
|
||||
|
||||
painter.line_segment([nw_edge, se_edge], Stroke::new(line_width, fill_color));
|
||||
painter.line_segment([ne_edge, sw_edge], Stroke::new(line_width, fill_color));
|
||||
|
||||
helper.take_animation_response()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user