From 099e41bf3f343982ca03bfcf218a40e79441e6fe Mon Sep 17 00:00:00 2001 From: charburgx Date: Mon, 19 Dec 2022 03:58:38 -0600 Subject: [PATCH] add example --- Cargo.lock | 9 ++++ examples/z_order/Cargo.toml | 16 +++++++ examples/z_order/README.md | 7 +++ examples/z_order/screenshot.png | Bin 0 -> 13962 bytes examples/z_order/src/main.rs | 82 ++++++++++++++++++++++++++++++++ 5 files changed, 114 insertions(+) create mode 100644 examples/z_order/Cargo.toml create mode 100644 examples/z_order/README.md create mode 100644 examples/z_order/screenshot.png create mode 100644 examples/z_order/src/main.rs diff --git a/Cargo.lock b/Cargo.lock index 36a4872b..721da6cc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4983,6 +4983,15 @@ dependencies = [ "linked-hash-map", ] +[[package]] +name = "z_order" +version = "0.1.0" +dependencies = [ + "eframe", + "log", + "tracing-subscriber", +] + [[package]] name = "zbus" version = "3.6.0" diff --git a/examples/z_order/Cargo.toml b/examples/z_order/Cargo.toml new file mode 100644 index 00000000..e3040f40 --- /dev/null +++ b/examples/z_order/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "z_order" +version = "0.1.0" +authors = ["Max Stoumen "] +license = "MIT OR Apache-2.0" +edition = "2021" +rust-version = "1.65" +publish = false + + +[dependencies] +eframe = { path = "../../crates/eframe", features = [ + "__screenshot", # __screenshot is so we can dump a screenshot using EFRAME_SCREENSHOT_TO +] } +log = "0.4.17" +tracing-subscriber = "0.3" diff --git a/examples/z_order/README.md b/examples/z_order/README.md new file mode 100644 index 00000000..23e7a6b1 --- /dev/null +++ b/examples/z_order/README.md @@ -0,0 +1,7 @@ +Example for how to set Z-order for drawing and interaction. + +```sh +cargo run -p z_order +``` + +![](screenshot.png) diff --git a/examples/z_order/screenshot.png b/examples/z_order/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..50f2453771fe2a03648597d6feef4266788197e2 GIT binary patch literal 13962 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 Zg31r3-2c+RZ_MtfC}_%8KQ#;e{{XfFvh4r> literal 0 HcmV?d00001 diff --git a/examples/z_order/src/main.rs b/examples/z_order/src/main.rs new file mode 100644 index 00000000..033d20f1 --- /dev/null +++ b/examples/z_order/src/main.rs @@ -0,0 +1,82 @@ +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] // hide console window on Windows in release + +use eframe::{ + egui::{self, layers::ZOrder, Sense, Ui}, + epaint::{Color32, Rect, Rounding, Vec2}, +}; + +fn main() -> Result<(), eframe::Error> { + // Log to stdout (if you run with `RUST_LOG=debug`). + tracing_subscriber::fmt::init(); + + let options = eframe::NativeOptions { + initial_window_size: Some(egui::vec2(220.0, 150.0)), + ..Default::default() + }; + eframe::run_native( + "Z Order Test", + options, + Box::new(|_cc| Box::new(MyApp::default())), + ) +} + +#[derive(Default)] +struct MyApp {} + +impl eframe::App for MyApp { + fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { + egui::CentralPanel::default().show(ctx, |ui| { + ui.label("The left example should show blue over green. The right should show green over blue."); + + egui::Frame::default() + .fill(ui.style().visuals.window_fill) + .inner_margin(10.0) + .show(ui, |ui| { + const SIZE: Vec2 = Vec2::new(50.0, 50.0); + const DELTA: Vec2 = Vec2::new(20.0, 20.0); + + fn draw_squares( + ui: &mut Ui, + shift: Vec2, + order1: ZOrder, + order2: ZOrder, + ) { + let pos = ui.max_rect().left_top(); + + ui.with_z(order1, |ui| { + let response = ui.allocate_rect( + Rect::from_min_size(pos + shift, SIZE), + Sense::click(), + ); + + let painter = ui.painter_at(response.rect); + painter.rect_filled(response.rect, Rounding::none(), Color32::GREEN); + + if response.clicked() { + log::info!("Clicked green"); + } + }); + + ui.with_z(order2, |ui| { + let response = ui.allocate_rect( + Rect::from_min_size(pos + DELTA + shift, SIZE), + Sense::click(), + ); + let painter = ui.painter_at(response.rect); + painter.rect_filled(response.rect, Rounding::none(), Color32::BLUE); + + if response.clicked() { + log::info!("Clicked blue"); + } + }); + } + + let base = ZOrder::base(); + let above = base.above(); + + draw_squares(ui, Vec2::new(0.0, 0.0), base, above); + draw_squares(ui, Vec2::new(100.0, 0.0), above, base); + }) + }); + } +}