diff --git a/src/gui.rs b/src/gui.rs index f1c0253..f80a586 100644 --- a/src/gui.rs +++ b/src/gui.rs @@ -19,15 +19,15 @@ const FRESHENER_FRAME_WIDTH: f32 = 73.0; const FRESHENER_FRAME_HEIGHT: f32 = 144.0; pub struct PluginGui { - font: Option, + font: Result, params: Arc, canvas: Option>, _gui_context: Arc, scaling_factor: f32, - freshener_image: Option, - not_so_fresh_image: Option, - fresh_dumbledore_image: Option, + freshener_image: Result, + not_so_fresh_image: Result, + fresh_dumbledore_image: Result, freshener_bounds: Rect, @@ -59,7 +59,7 @@ impl PluginGui { scaling_factor: f32, ) -> Self { let mut this = Self { - font: None, + font: Err("Not loaded".to_owned()), params: params.clone(), canvas: None, _gui_context: gui_context, @@ -69,9 +69,9 @@ impl PluginGui { drag_start_mouse_pos: (0.0, 0.0), drag_start_parameter_value: 0.0, dragging: false, - freshener_image: None, - fresh_dumbledore_image: None, - not_so_fresh_image: None, + freshener_image: Err("Not loaded".to_owned()), + fresh_dumbledore_image: Err("Not loaded".to_owned()), + not_so_fresh_image: Err("Not loaded".to_owned()), freshener_bounds: Rect { x: 120.0, y: 20.0, @@ -85,21 +85,18 @@ impl PluginGui { context.make_current(); } if let Ok(mut canvas) = create_canvas(context, ¶ms, scaling_factor) { - if let Ok(font) = canvas.add_font_mem(DROID_SANS_FONT) { - this.font = Some(font); - } - if let Ok(image) = canvas.load_image_mem(FRESHENER_IMAGE, ImageFlags::empty()) { - this.freshener_image = Some(image); - } - if let Ok(image) = - canvas.load_image_mem(FRESH_DUMBLEDORE_BG_IMAGE, ImageFlags::empty()) - { - this.fresh_dumbledore_image = Some(image); - } - if let Ok(image) = canvas.load_image_mem(NOT_SO_FRESH_BG_IMAGE, ImageFlags::empty()) - { - this.not_so_fresh_image = Some(image); - } + this.font = canvas + .add_font_mem(DROID_SANS_FONT) + .map_err(|err| err.to_string()); + this.freshener_image = canvas + .load_image_mem(FRESHENER_IMAGE, ImageFlags::empty()) + .map_err(|err| err.to_string()); + this.fresh_dumbledore_image = canvas + .load_image_mem(FRESH_DUMBLEDORE_BG_IMAGE, ImageFlags::empty()) + .map_err(|err| err.to_string()); + this.not_so_fresh_image = canvas + .load_image_mem(NOT_SO_FRESH_BG_IMAGE, ImageFlags::empty()) + .map_err(|err| err.to_string()); this.canvas = Some(canvas); } unsafe { @@ -175,7 +172,7 @@ impl WindowHandler for PluginGui { let frame_x = (frame_index % FRESHENER_FRAMES_X as f32).floor(); let frame_y = (frame_index / FRESHENER_FRAMES_X as f32).floor(); - if let Some(not_so_fresh) = self.not_so_fresh_image { + if let Ok(not_so_fresh) = self.not_so_fresh_image { canvas.fill_path( &full_window_path, &Paint::image( @@ -189,7 +186,7 @@ impl WindowHandler for PluginGui { ), ); } - if let Some(fresh_dumbledore) = self.fresh_dumbledore_image { + if let Ok(fresh_dumbledore) = self.fresh_dumbledore_image { canvas.fill_path( &full_window_path, &Paint::image( @@ -204,7 +201,7 @@ impl WindowHandler for PluginGui { ); } - if let Some(freshener) = self.freshener_image { + if let Ok(freshener) = self.freshener_image { canvas.fill_path( &freshener_path, &Paint::image( @@ -222,18 +219,34 @@ impl WindowHandler for PluginGui { #[cfg(debug_assertions)] { use femtovg::Baseline; - if let Some(font) = self.font { - canvas - .fill_text( - 5.0, - 5.0, - "Debug version", - &Paint::color(Color::white()) - .with_font(&[font]) - .with_font_size(12.0) - .with_text_baseline(Baseline::Top), - ) - .ok(); + if let Ok(font) = self.font { + let mut y = 5.0; + let mut print = |str: &str| { + canvas + .fill_text( + 5.0, + y, + str, + &Paint::color(Color::white()) + .with_font(&[font]) + .with_font_size(12.0) + .with_text_baseline(Baseline::Top), + ) + .ok(); + y += 12.0; + }; + + print("Debug version"); + + if let Err(e) = &self.freshener_image { + print(e); + } + if let Err(e) = &self.fresh_dumbledore_image { + print(e); + } + if let Err(e) = &self.not_so_fresh_image { + print(e); + } } }