icons.rs (1027B)
1 use egui::{vec2, Color32, Stroke}; 2 3 /// Creates a magnifying glass icon widget 4 pub fn search_icon(size: f32, height: f32) -> impl egui::Widget { 5 move |ui: &mut egui::Ui| { 6 // Use the provided height parameter 7 let desired_size = vec2(size, height); 8 let (rect, response) = ui.allocate_exact_size(desired_size, egui::Sense::hover()); 9 10 // Calculate center position - this ensures the icon is centered in its allocated space 11 let center_pos = rect.center(); 12 let stroke = Stroke::new(1.5, Color32::from_rgb(150, 150, 150)); 13 14 // Draw circle 15 let circle_radius = size * 0.35; 16 ui.painter() 17 .circle(center_pos, circle_radius, Color32::TRANSPARENT, stroke); 18 19 // Draw handle 20 let handle_start = center_pos + vec2(circle_radius * 0.7, circle_radius * 0.7); 21 let handle_end = handle_start + vec2(size * 0.25, size * 0.25); 22 ui.painter() 23 .line_segment([handle_start, handle_end], stroke); 24 25 response 26 } 27 }