mirror of
https://github.com/emilk/egui.git
synced 2026-09-02 23:00:04 -04:00
Add WidgetType::Image and Image::alt_text (#5534)
This adds `WidgetType::Image` and correctly sets it in the Image widget. This allows us to query for images in kittest tests and tells accesskit that a node is an image. It also adds `Image::alt_text` to set a text that will be shown if the image fails to load and will be read via screen readers. This also allows us to query images by label in kittest. * [x] I have followed the instructions in the PR template --------- Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
This commit is contained in:
@@ -14,6 +14,7 @@ pub struct ImageViewer {
|
||||
fit: ImageFit,
|
||||
maintain_aspect_ratio: bool,
|
||||
max_size: Vec2,
|
||||
alt_text: String,
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, PartialEq, Eq)]
|
||||
@@ -44,6 +45,7 @@ impl Default for ImageViewer {
|
||||
fit: ImageFit::Fraction(Vec2::splat(1.0)),
|
||||
maintain_aspect_ratio: true,
|
||||
max_size: Vec2::splat(2048.0),
|
||||
alt_text: "My Image".to_owned(),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -185,6 +187,11 @@ impl eframe::App for ImageViewer {
|
||||
ui.label("Aspect ratio is maintained by scaling both sides as necessary");
|
||||
ui.checkbox(&mut self.maintain_aspect_ratio, "Maintain aspect ratio");
|
||||
|
||||
// alt text
|
||||
ui.add_space(5.0);
|
||||
ui.label("Alt text");
|
||||
ui.text_edit_singleline(&mut self.alt_text);
|
||||
|
||||
// forget all images
|
||||
if ui.button("Forget all images").clicked() {
|
||||
ui.ctx().forget_all_images();
|
||||
@@ -211,6 +218,9 @@ impl eframe::App for ImageViewer {
|
||||
}
|
||||
image = image.maintain_aspect_ratio(self.maintain_aspect_ratio);
|
||||
image = image.max_size(self.max_size);
|
||||
if !self.alt_text.is_empty() {
|
||||
image = image.alt_text(&self.alt_text);
|
||||
}
|
||||
|
||||
ui.add_sized(ui.available_size(), image);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user