1
0
Fork 0
forked from wry/wry

render: simplify construction of RendererBase

This commit is contained in:
Julian Orth 2024-02-27 23:52:47 +01:00
parent 2dc2dc1123
commit 85c11448fb
2 changed files with 15 additions and 31 deletions

View file

@ -173,15 +173,19 @@ impl dyn GfxFramebuffer {
self.render(ops, Some(&Color { r, g, b, a })); self.render(ops, Some(&Color { r, g, b, a }));
} }
pub fn renderer_base<'a>(&self, ops: &'a mut Vec<GfxApiOpt>, scale: Scale) -> RendererBase<'a> {
RendererBase {
ops,
scaled: scale != 1,
scale,
scalef: scale.to_f64(),
}
}
pub fn copy_texture(&self, texture: &Rc<dyn GfxTexture>, x: i32, y: i32) { pub fn copy_texture(&self, texture: &Rc<dyn GfxTexture>, x: i32, y: i32) {
let mut ops = self.take_render_ops(); let mut ops = self.take_render_ops();
let scale = Scale::from_int(1); let scale = Scale::from_int(1);
let mut renderer = RendererBase { let mut renderer = self.renderer_base(&mut ops, scale);
ops: &mut ops,
scaled: false,
scale,
scalef: 1.0,
};
renderer.render_texture(texture, x, y, None, None, scale, None); renderer.render_texture(texture, x, y, None, None, scale, None);
let clear = self.format().has_alpha.then_some(&Color::TRANSPARENT); let clear = self.format().has_alpha.then_some(&Color::TRANSPARENT);
self.render(ops, clear); self.render(ops, clear);
@ -194,12 +198,7 @@ impl dyn GfxFramebuffer {
f: &mut dyn FnMut(&mut RendererBase), f: &mut dyn FnMut(&mut RendererBase),
) { ) {
let mut ops = self.take_render_ops(); let mut ops = self.take_render_ops();
let mut renderer = RendererBase { let mut renderer = self.renderer_base(&mut ops, scale);
ops: &mut ops,
scaled: scale != 1,
scale,
scalef: scale.to_f64(),
};
f(&mut renderer); f(&mut renderer);
self.render(ops, clear); self.render(ops, clear);
} }
@ -217,12 +216,7 @@ impl dyn GfxFramebuffer {
let mut ops = self.take_render_ops(); let mut ops = self.take_render_ops();
let (width, height) = self.size(); let (width, height) = self.size();
let mut renderer = Renderer { let mut renderer = Renderer {
base: RendererBase { base: self.renderer_base(&mut ops, scale),
ops: &mut ops,
scaled: scale != 1,
scale,
scalef: scale.to_f64(),
},
state, state,
result, result,
logical_extents: node.node_absolute_position().at_point(0, 0), 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 mut ops = self.take_render_ops();
let (width, height) = self.size(); let (width, height) = self.size();
let mut renderer = Renderer { let mut renderer = Renderer {
base: RendererBase { base: self.renderer_base(&mut ops, scale),
ops: &mut ops,
scaled: scale != 1,
scale,
scalef: scale.to_f64(),
},
state, state,
result: None, result: None,
logical_extents: Rect::new_empty(0, 0), logical_extents: Rect::new_empty(0, 0),

View file

@ -40,7 +40,7 @@ use {
leaks::Tracker, leaks::Tracker,
logger::Logger, logger::Logger,
rect::Rect, rect::Rect,
renderer::{renderer_base::RendererBase, RenderResult, Renderer}, renderer::{RenderResult, Renderer},
scale::Scale, scale::Scale,
theme::{Color, Theme}, theme::{Color, Theme},
tree::{ tree::{
@ -771,12 +771,7 @@ impl State {
let mut ops = target.take_render_ops(); let mut ops = target.take_render_ops();
let (width, height) = target.size(); let (width, height) = target.size();
let mut renderer = Renderer { let mut renderer = Renderer {
base: RendererBase { base: target.renderer_base(&mut ops, Scale::from_int(1)),
ops: &mut ops,
scaled: false,
scale: Scale::from_int(1),
scalef: 1.0,
},
state: self, state: self,
result: None, result: None,
logical_extents: position.at_point(0, 0), logical_extents: position.at_point(0, 0),