From 85c11448fb8c77109b76ae08f0ea441ba8c54043 Mon Sep 17 00:00:00 2001 From: Julian Orth Date: Tue, 27 Feb 2024 23:52:47 +0100 Subject: [PATCH] render: simplify construction of RendererBase --- src/gfx_api.rs | 37 +++++++++++++------------------------ src/state.rs | 9 ++------- 2 files changed, 15 insertions(+), 31 deletions(-) diff --git a/src/gfx_api.rs b/src/gfx_api.rs index 9c417662..85a283de 100644 --- a/src/gfx_api.rs +++ b/src/gfx_api.rs @@ -173,15 +173,19 @@ impl dyn GfxFramebuffer { self.render(ops, Some(&Color { r, g, b, a })); } + pub fn renderer_base<'a>(&self, ops: &'a mut Vec, scale: Scale) -> RendererBase<'a> { + RendererBase { + ops, + scaled: scale != 1, + scale, + scalef: scale.to_f64(), + } + } + pub fn copy_texture(&self, texture: &Rc, x: i32, y: i32) { let mut ops = self.take_render_ops(); let scale = Scale::from_int(1); - let mut renderer = RendererBase { - ops: &mut ops, - scaled: false, - scale, - scalef: 1.0, - }; + let mut renderer = self.renderer_base(&mut ops, scale); renderer.render_texture(texture, x, y, None, None, scale, None); let clear = self.format().has_alpha.then_some(&Color::TRANSPARENT); self.render(ops, clear); @@ -194,12 +198,7 @@ impl dyn GfxFramebuffer { f: &mut dyn FnMut(&mut RendererBase), ) { let mut ops = self.take_render_ops(); - let mut renderer = RendererBase { - ops: &mut ops, - scaled: scale != 1, - scale, - scalef: scale.to_f64(), - }; + let mut renderer = self.renderer_base(&mut ops, scale); f(&mut renderer); self.render(ops, clear); } @@ -217,12 +216,7 @@ impl dyn GfxFramebuffer { let mut ops = self.take_render_ops(); let (width, height) = self.size(); let mut renderer = Renderer { - base: RendererBase { - ops: &mut ops, - scaled: scale != 1, - scale, - scalef: scale.to_f64(), - }, + base: self.renderer_base(&mut ops, scale), state, result, logical_extents: node.node_absolute_position().at_point(0, 0), @@ -313,12 +307,7 @@ impl dyn GfxFramebuffer { let mut ops = self.take_render_ops(); let (width, height) = self.size(); let mut renderer = Renderer { - base: RendererBase { - ops: &mut ops, - scaled: scale != 1, - scale, - scalef: scale.to_f64(), - }, + base: self.renderer_base(&mut ops, scale), state, result: None, logical_extents: Rect::new_empty(0, 0), diff --git a/src/state.rs b/src/state.rs index b226e3e2..ede10acf 100644 --- a/src/state.rs +++ b/src/state.rs @@ -40,7 +40,7 @@ use { leaks::Tracker, logger::Logger, rect::Rect, - renderer::{renderer_base::RendererBase, RenderResult, Renderer}, + renderer::{RenderResult, Renderer}, scale::Scale, theme::{Color, Theme}, tree::{ @@ -771,12 +771,7 @@ impl State { let mut ops = target.take_render_ops(); let (width, height) = target.size(); let mut renderer = Renderer { - base: RendererBase { - ops: &mut ops, - scaled: false, - scale: Scale::from_int(1), - scalef: 1.0, - }, + base: target.renderer_base(&mut ops, Scale::from_int(1)), state: self, result: None, logical_extents: position.at_point(0, 0),