From 3fafaff04f6a8b6118bd2274fd16b508a6248886 Mon Sep 17 00:00:00 2001 From: Alan Jeffrey Date: Thu, 21 Mar 2019 16:06:52 -0500 Subject: [PATCH] Option to disable the UI --- demo/common/src/lib.rs | 66 +++++++++++++++++++++++++----------------- 1 file changed, 40 insertions(+), 26 deletions(-) diff --git a/demo/common/src/lib.rs b/demo/common/src/lib.rs index 86d53d07..d5c8ec7d 100644 --- a/demo/common/src/lib.rs +++ b/demo/common/src/lib.rs @@ -78,6 +78,7 @@ mod ui; pub struct DemoApp where W: Window { pub window: W, pub should_exit: bool, + pub options: Options, window_size: WindowSize, @@ -147,13 +148,14 @@ impl DemoApp where W: Window { let ground_line_vertex_array = GroundLineVertexArray::new(&renderer.device, &ground_program); - let mut ui = DemoUI::new(&renderer.device, resources, options); + let mut ui = DemoUI::new(&renderer.device, resources, options.clone()); let mut message_epoch = 0; emit_message::(&mut ui, &mut message_epoch, expire_message_event_id, message); DemoApp { window, should_exit: false, + options, window_size, @@ -405,31 +407,33 @@ impl DemoApp where W: Window { self.take_screenshot(); } - if let Some(render_stats) = frame.render_stats.take() { - self.renderer.debug_ui.add_sample(render_stats.stats, - frame.render_msg.tile_time, - render_stats.rendering_time); - self.renderer.draw_debug_ui(); + if self.options.ui { + if let Some(render_stats) = frame.render_stats.take() { + self.renderer.debug_ui.add_sample(render_stats.stats, + frame.render_msg.tile_time, + render_stats.rendering_time); + self.renderer.draw_debug_ui(); + } + + for ui_event in &frame.ui_events { + self.dirty = true; + self.renderer.debug_ui.ui.event_queue.push(*ui_event); + } + + self.renderer.debug_ui.ui.mouse_position = + get_mouse_position(&self.window, self.window_size.backing_scale_factor); + self.ui.show_text_effects = self.monochrome_scene_color.is_some(); + + let mut ui_action = UIAction::None; + self.ui.update(&self.renderer.device, + &mut self.window, + &mut self.renderer.debug_ui, + &mut ui_action); + + frame.ui_events = self.renderer.debug_ui.ui.event_queue.drain(); + self.handle_ui_action(&mut ui_action); } - for ui_event in &frame.ui_events { - self.dirty = true; - self.renderer.debug_ui.ui.event_queue.push(*ui_event); - } - - self.renderer.debug_ui.ui.mouse_position = - get_mouse_position(&self.window, self.window_size.backing_scale_factor); - self.ui.show_text_effects = self.monochrome_scene_color.is_some(); - - let mut ui_action = UIAction::None; - self.ui.update(&self.renderer.device, - &mut self.window, - &mut self.renderer.debug_ui, - &mut ui_action); - - frame.ui_events = self.renderer.debug_ui.ui.event_queue.drain(); - self.handle_ui_action(&mut ui_action); - // Switch camera mode (2D/3D) if requested. // // FIXME(pcwalton): This mess should really be an MVC setup. @@ -721,6 +725,7 @@ pub struct Options { pub jobs: Option, pub mode: Mode, pub input_path: SVGPath, + pub ui: bool, hidden_field_for_future_proofing: (), } @@ -730,8 +735,9 @@ impl Default for Options { jobs: None, mode: Mode::TwoD, input_path: SVGPath::Default, + ui: true, hidden_field_for_future_proofing: (), - } + } } } @@ -748,11 +754,13 @@ impl Options { ) .arg(Arg::with_name("3d").short("3").long("3d").help("Run in 3D").conflicts_with("vr")) .arg(Arg::with_name("vr").short("V").long("vr").help("Run in VR").conflicts_with("3d")) + .arg(Arg::with_name("ui").short("U").long("ui").help("Show UI").conflicts_with("no-ui")) + .arg(Arg::with_name("no-ui").short("u").long("no-ui").help("Hide UI").conflicts_with("ui")) .arg(Arg::with_name("INPUT").help("Path to the SVG file to render").index(1)) .get_matches(); if let Some(jobs) = matches.value_of("jobs") { - self.jobs = jobs.parse().ok(); + self.jobs = jobs.parse().ok(); } if matches.is_present("3d") { @@ -761,6 +769,12 @@ impl Options { self.mode = Mode::VR; } + if matches.is_present("ui") { + self.ui = true; + } else if matches.is_present("no-ui") { + self.ui = false; + } + if let Some(path) = matches.value_of("INPUT") { self.input_path = SVGPath::Path(PathBuf::from(path)); };