diff --git a/crates/egui_demo_lib/Cargo.toml b/crates/egui_demo_lib/Cargo.toml index 013e2d24..a86f3dcd 100644 --- a/crates/egui_demo_lib/Cargo.toml +++ b/crates/egui_demo_lib/Cargo.toml @@ -16,7 +16,7 @@ include = [ "../LICENSE-MIT", "**/*.rs", "Cargo.toml", - "data/icon.png", + "data/*", ] [lints] @@ -43,7 +43,7 @@ syntect = ["egui_extras/syntect"] [dependencies] egui = { workspace = true, default-features = false, features = ["color-hex"] } -egui_extras = { workspace = true, features = ["default"] } +egui_extras = { workspace = true, features = ["default", "file", "svg"] } unicode_names2 = { version = "0.6.0", default-features = false } # this old version has fewer dependencies diff --git a/crates/egui_demo_lib/data/peace.svg b/crates/egui_demo_lib/data/peace.svg new file mode 100644 index 00000000..4bf3e33a --- /dev/null +++ b/crates/egui_demo_lib/data/peace.svg @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/crates/egui_demo_lib/src/demo/demo_app_windows.rs b/crates/egui_demo_lib/src/demo/demo_app_windows.rs index 7b897278..892c6f40 100644 --- a/crates/egui_demo_lib/src/demo/demo_app_windows.rs +++ b/crates/egui_demo_lib/src/demo/demo_app_windows.rs @@ -100,6 +100,7 @@ impl Default for DemoGroups { Box::::default(), Box::::default(), Box::::default(), + Box::::default(), Box::::default(), Box::::default(), ]), diff --git a/crates/egui_demo_lib/src/demo/tests/mod.rs b/crates/egui_demo_lib/src/demo/tests/mod.rs index d9fad538..dc69cca7 100644 --- a/crates/egui_demo_lib/src/demo/tests/mod.rs +++ b/crates/egui_demo_lib/src/demo/tests/mod.rs @@ -6,6 +6,7 @@ mod input_event_history; mod input_test; mod layout_test; mod manual_layout_test; +mod svg_test; mod tessellation_test; mod window_resize_test; @@ -17,5 +18,6 @@ pub use input_event_history::InputEventHistory; pub use input_test::InputTest; pub use layout_test::LayoutTest; pub use manual_layout_test::ManualLayoutTest; +pub use svg_test::SvgTest; pub use tessellation_test::TessellationTest; pub use window_resize_test::WindowResizeTest; diff --git a/crates/egui_demo_lib/src/demo/tests/svg_test.rs b/crates/egui_demo_lib/src/demo/tests/svg_test.rs new file mode 100644 index 00000000..a75c29d7 --- /dev/null +++ b/crates/egui_demo_lib/src/demo/tests/svg_test.rs @@ -0,0 +1,32 @@ +pub struct SvgTest { + color: egui::Color32, +} + +impl Default for SvgTest { + fn default() -> Self { + Self { + color: egui::Color32::LIGHT_RED, + } + } +} + +impl crate::Demo for SvgTest { + fn name(&self) -> &'static str { + "SVG Test" + } + + fn show(&mut self, ctx: &egui::Context, open: &mut bool) { + egui::Window::new(self.name()).open(open).show(ctx, |ui| { + use crate::View as _; + self.ui(ui); + }); + } +} + +impl crate::View for SvgTest { + fn ui(&mut self, ui: &mut egui::Ui) { + let Self { color } = self; + ui.color_edit_button_srgba(color); + ui.add(egui::Image::new(egui::include_image!("../../../data/peace.svg")).tint(*color)); + } +} diff --git a/crates/egui_extras/src/image.rs b/crates/egui_extras/src/image.rs index d7aa3126..fd97fb87 100644 --- a/crates/egui_extras/src/image.rs +++ b/crates/egui_extras/src/image.rs @@ -295,7 +295,7 @@ pub fn load_svg_bytes_with_size( &mut pixmap.as_mut(), ); - let image = egui::ColorImage::from_rgba_unmultiplied([w as _, h as _], pixmap.data()); + let image = egui::ColorImage::from_rgba_premultiplied([w as _, h as _], pixmap.data()); Ok(image) }