diff options
Diffstat (limited to 'examples/tour/src/iced_ggez/renderer.rs')
-rw-r--r-- | examples/tour/src/iced_ggez/renderer.rs | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/examples/tour/src/iced_ggez/renderer.rs b/examples/tour/src/iced_ggez/renderer.rs new file mode 100644 index 00000000..c0e6d559 --- /dev/null +++ b/examples/tour/src/iced_ggez/renderer.rs @@ -0,0 +1,77 @@ +mod button; +mod checkbox; +mod debugger; +mod image; +mod radio; +mod slider; +mod text; + +use ggez::graphics::{ + self, spritebatch::SpriteBatch, Font, Image, MeshBuilder, +}; +use ggez::Context; + +pub use image::Cache; + +pub struct Renderer<'a> { + pub context: &'a mut Context, + pub images: &'a mut image::Cache, + pub sprites: SpriteBatch, + pub spritesheet: Image, + pub font: Font, + font_size: f32, + debug_mesh: Option<MeshBuilder>, +} + +impl<'a> Renderer<'a> { + pub fn new( + context: &'a mut Context, + images: &'a mut image::Cache, + spritesheet: Image, + font: Font, + ) -> Renderer<'a> { + Renderer { + context, + images, + sprites: SpriteBatch::new(spritesheet.clone()), + spritesheet, + font, + font_size: 20.0, + debug_mesh: None, + } + } + + pub fn flush(&mut self) { + graphics::draw( + self.context, + &self.sprites, + graphics::DrawParam::default(), + ) + .expect("Draw sprites"); + + graphics::draw_queued_text( + self.context, + graphics::DrawParam::default(), + Default::default(), + graphics::FilterMode::Linear, + ) + .expect("Draw text"); + + if let Some(debug_mesh) = self.debug_mesh.take() { + let mesh = + debug_mesh.build(self.context).expect("Build debug mesh"); + + graphics::draw(self.context, &mesh, graphics::DrawParam::default()) + .expect("Draw debug mesh"); + } + } +} + +pub fn into_color(color: iced_native::Color) -> graphics::Color { + graphics::Color { + r: color.r, + g: color.g, + b: color.b, + a: color.a, + } +} |