image_format.rs
1 #[derive(serde::Serialize, serde::Deserialize)] 2 #[serde(default)] 3 pub struct ImageFormatSelector { 4 image_format: image::ImageFormat, 5 } 6 7 impl Default for ImageFormatSelector { 8 fn default() -> Self { 9 Self { 10 image_format: image::ImageFormat::Png, 11 } 12 } 13 } 14 15 impl ImageFormatSelector { 16 pub fn show(&mut self, ui: &mut egui::Ui) { 17 egui::ComboBox::from_label("Export format") 18 .selected_text(format!("{:?}", self.image_format)) 19 .show_ui(ui, |ui| { 20 ui.selectable_value(&mut self.image_format, image::ImageFormat::Png, "png"); 21 ui.selectable_value(&mut self.image_format, image::ImageFormat::Jpeg, "jpeg"); 22 ui.selectable_value(&mut self.image_format, image::ImageFormat::Bmp, "bmp"); 23 ui.selectable_value(&mut self.image_format, image::ImageFormat::WebP, "webp"); 24 ui.selectable_value(&mut self.image_format, image::ImageFormat::Tiff, "tiff"); 25 ui.selectable_value(&mut self.image_format, image::ImageFormat::Gif, "gif"); 26 ui.selectable_value(&mut self.image_format, image::ImageFormat::Avif, "avif"); 27 }); 28 29 if self.image_format != image::ImageFormat::Png { 30 let warning_color = ui.style().visuals.warn_fg_color; 31 32 let warning_text = 33 egui::RichText::new("Image will be downloaded in this format").color(warning_color); 34 35 ui.add(egui::Label::new(warning_text)); 36 } 37 } 38 39 pub fn get(&self) -> image::ImageFormat { 40 self.image_format 41 } 42 }