From ce45b81e8e04d2adf6f7ac7224b51d9d09ce30a3 Mon Sep 17 00:00:00 2001 From: Brendan Zabarauskas Date: Mon, 13 Jun 2016 20:20:14 +1000 Subject: [PATCH] Pass Ui struct to render closure instead of raw hidpi factor --- src/glium_renderer.rs | 9 ++++----- src/lib.rs | 4 ++-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/glium_renderer.rs b/src/glium_renderer.rs index 0f11c6a..a93a5c2 100644 --- a/src/glium_renderer.rs +++ b/src/glium_renderer.rs @@ -71,17 +71,15 @@ impl Renderer { pub fn render<'a, S: Surface>(&mut self, surface: &mut S, ui: Ui<'a>) -> RendererResult<()> { let _ = self.ctx.insert_debug_marker("imgui-rs: starting rendering"); - let result = ui.render(|draw_list, hidpi_factor| { - self.render_draw_list(surface, draw_list, hidpi_factor) - }); + let result = ui.render(|ui, draw_list| self.render_draw_list(surface, ui, draw_list)); let _ = self.ctx.insert_debug_marker("imgui-rs: rendering finished"); result } fn render_draw_list<'a, S: Surface>(&mut self, surface: &mut S, - draw_list: DrawList<'a>, - hidpi_factor: f32) + ui: &'a Ui<'a>, + draw_list: DrawList<'a>) -> RendererResult<()> { use glium::{Blend, DrawParameters, Rect}; use glium::uniforms::MagnifySamplerFilter; @@ -89,6 +87,7 @@ impl Renderer { try!(self.device_objects.upload_vertex_buffer(&self.ctx, draw_list.vtx_buffer)); try!(self.device_objects.upload_index_buffer(&self.ctx, draw_list.idx_buffer)); + let hidpi_factor = ui.imgui().hidpi_factor(); let (width, height) = surface.get_dimensions(); let matrix = [[2.0 / (width as f32 / hidpi_factor), 0.0, 0.0, 0.0], diff --git a/src/lib.rs b/src/lib.rs index 986b979..bd928e3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -343,7 +343,7 @@ impl<'ui> Ui<'ui> { io.metrics_active_windows } pub fn render(self, mut f: F) -> Result<(), E> - where F: FnMut(DrawList<'ui>, f32) -> Result<(), E> + where F: FnMut(&Ui, DrawList) -> Result<(), E> { unsafe { imgui_sys::igRender(); @@ -355,7 +355,7 @@ impl<'ui> Ui<'ui> { idx_buffer: (*cmd_list).idx_buffer.as_slice(), vtx_buffer: (*cmd_list).vtx_buffer.as_slice(), }; - try!(f(draw_list, self.imgui.hidpi_factor)); + try!(f(&self, draw_list)); } CURRENT_UI = None; }