mirror of
https://github.com/emilk/egui.git
synced 2026-08-31 05:40:03 -04:00
Clean up viewports example slightly
This commit is contained in:
@@ -115,6 +115,20 @@ impl AsyncViewport {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct SyncViewport<'a> {
|
||||||
|
name: String,
|
||||||
|
init: Box<dyn FnMut(&egui::Context) + 'a>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a> SyncViewport<'a> {
|
||||||
|
fn new(name: impl Into<String>, init: impl FnMut(&egui::Context) + 'a) -> Self {
|
||||||
|
Self {
|
||||||
|
name: name.into(),
|
||||||
|
init: Box::new(init),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn show_async_viewport(
|
fn show_async_viewport(
|
||||||
ctx: &egui::Context,
|
ctx: &egui::Context,
|
||||||
name: impl Into<String>,
|
name: impl Into<String>,
|
||||||
@@ -151,9 +165,6 @@ fn show_async_viewport(
|
|||||||
}
|
}
|
||||||
|
|
||||||
ui.add(egui::DragValue::new(&mut *count).prefix("Count: "));
|
ui.add(egui::DragValue::new(&mut *count).prefix("Count: "));
|
||||||
if ui.button("Add").clicked() {
|
|
||||||
*count += 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i, viewport) in viewports.iter().enumerate() {
|
for (i, viewport) in viewports.iter().enumerate() {
|
||||||
if state.active[i] {
|
if state.active[i] {
|
||||||
@@ -171,20 +182,6 @@ fn show_async_viewport(
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct SyncViewport<'a> {
|
|
||||||
name: String,
|
|
||||||
init: Box<dyn FnMut(&egui::Context) + 'a>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a> SyncViewport<'a> {
|
|
||||||
fn new(name: impl Into<String>, init: impl FnMut(&egui::Context) + 'a) -> Self {
|
|
||||||
Self {
|
|
||||||
name: name.into(),
|
|
||||||
init: Box::new(init),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn show_sync_viewport(
|
fn show_sync_viewport(
|
||||||
ctx: &egui::Context,
|
ctx: &egui::Context,
|
||||||
name: impl Into<String>,
|
name: impl Into<String>,
|
||||||
@@ -216,10 +213,8 @@ fn show_sync_viewport(
|
|||||||
ui.checkbox(&mut state.active[i], &viewport.name);
|
ui.checkbox(&mut state.active[i], &viewport.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
ui.add(egui::DragValue::new(&mut *count).prefix("Count: "));
|
ui.add(egui::DragValue::new(count).prefix("Count: "));
|
||||||
if ui.button("Add").clicked() {
|
|
||||||
*count += 1;
|
|
||||||
}
|
|
||||||
for (i, viewport) in viewports.iter_mut().enumerate() {
|
for (i, viewport) in viewports.iter_mut().enumerate() {
|
||||||
if state.active[i] {
|
if state.active[i] {
|
||||||
(viewport.init)(&ctx);
|
(viewport.init)(&ctx);
|
||||||
@@ -316,37 +311,43 @@ fn show_as_popup(ctx: &egui::Context, name: &str, content: impl FnOnce(&mut egui
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn generic_ui(ui: &mut egui::Ui, container_id: impl Into<Id>) {
|
fn generic_ui(ui: &mut egui::Ui, container_id: impl Into<Id>) {
|
||||||
|
let container_id = container_id.into();
|
||||||
|
|
||||||
let ctx = ui.ctx().clone();
|
let ctx = ui.ctx().clone();
|
||||||
ui.label(format!(
|
ui.label(format!(
|
||||||
"Frame nr: {} (this increases when this viewport is being rendered)",
|
"Frame nr: {} (this increases when this viewport is being rendered)",
|
||||||
ctx.frame_nr()
|
ctx.frame_nr()
|
||||||
));
|
));
|
||||||
ui.label(format!("Current Viewport Id: {}", ctx.viewport_id()));
|
ui.horizontal(|ui| {
|
||||||
ui.label(format!("Current Parent Viewport Id: {}", ctx.viewport_id()));
|
let mut show_spinner =
|
||||||
|
ui.data_mut(|data| *data.get_temp_mut_or(container_id.with("show_spinner"), false));
|
||||||
|
ui.checkbox(&mut show_spinner, "Show Spinner (forces repaint)");
|
||||||
|
if show_spinner {
|
||||||
|
ui.spinner();
|
||||||
|
}
|
||||||
|
ui.data_mut(|data| data.insert_temp(container_id.with("show_spinner"), show_spinner));
|
||||||
|
});
|
||||||
|
|
||||||
|
ui.add_space(8.0);
|
||||||
|
|
||||||
|
ui.label(format!("Viewport Id: {}", ctx.viewport_id()));
|
||||||
|
ui.label(format!("Parent Viewport Id: {}", ctx.parent_viewport_id()));
|
||||||
|
|
||||||
|
ui.add_space(8.0);
|
||||||
|
|
||||||
let inner_rect = ctx.inner_rect();
|
let inner_rect = ctx.inner_rect();
|
||||||
let outer_rect = ctx.outer_rect();
|
|
||||||
ui.label(format!(
|
ui.label(format!(
|
||||||
"Inner Rect: Pos: {:?}, Size: {:?}",
|
"Inner Rect: Pos: {:?}, Size: {:?}",
|
||||||
inner_rect.min,
|
inner_rect.min,
|
||||||
inner_rect.size()
|
inner_rect.size()
|
||||||
));
|
));
|
||||||
|
let outer_rect = ctx.outer_rect();
|
||||||
ui.label(format!(
|
ui.label(format!(
|
||||||
"Outer Rect: Pos: {:?}, Size: {:?}",
|
"Outer Rect: Pos: {:?}, Size: {:?}",
|
||||||
outer_rect.min,
|
outer_rect.min,
|
||||||
outer_rect.size()
|
outer_rect.size()
|
||||||
));
|
));
|
||||||
|
|
||||||
let container_id = container_id.into();
|
|
||||||
let ctx = ui.ctx().clone();
|
|
||||||
|
|
||||||
let mut show_spinner =
|
|
||||||
ui.data_mut(|data| *data.get_temp_mut_or(container_id.with("show_spinner"), false));
|
|
||||||
ui.checkbox(&mut show_spinner, "Show Spinner");
|
|
||||||
if show_spinner {
|
|
||||||
ui.spinner();
|
|
||||||
}
|
|
||||||
ui.data_mut(|data| data.insert_temp(container_id.with("show_spinner"), show_spinner));
|
|
||||||
|
|
||||||
let tmp_pixels_per_point = ctx.pixels_per_point();
|
let tmp_pixels_per_point = ctx.pixels_per_point();
|
||||||
let mut pixels_per_point = ui.data_mut(|data| {
|
let mut pixels_per_point = ui.data_mut(|data| {
|
||||||
*data.get_temp_mut_or(container_id.with("pixels_per_point"), tmp_pixels_per_point)
|
*data.get_temp_mut_or(container_id.with("pixels_per_point"), tmp_pixels_per_point)
|
||||||
|
|||||||
Reference in New Issue
Block a user