1
0
Fork 0
forked from wry/wry

renderer: move boxes before scaling them

This commit is contained in:
Julian Orth 2026-03-13 15:30:20 +01:00
parent 479d2171b7
commit c9a348337c
2 changed files with 15 additions and 17 deletions

View file

@ -90,16 +90,14 @@ impl Renderer<'_> {
let non_exclusive_rect_rel = output.non_exclusive_rect_rel.get(); let non_exclusive_rect_rel = output.non_exclusive_rect_rel.get();
let (mut x, mut y) = non_exclusive_rect_rel.translate_inv(x, y); let (mut x, mut y) = non_exclusive_rect_rel.translate_inv(x, y);
let bar_rect = output.bar_rect_rel.get(); let bar_rect = output.bar_rect_rel.get();
let bar_bg = let bar_bg = bar_rect.move_(
bar_rect.move_(-non_exclusive_rect_rel.x1(), -non_exclusive_rect_rel.y1()); x - non_exclusive_rect_rel.x1(),
y - non_exclusive_rect_rel.y1(),
);
let bar_bg = self.base.scale_rect(bar_bg); let bar_bg = self.base.scale_rect(bar_bg);
let bar_bg_abs = {
let (x, y) = self.base.scale_point(x, y);
bar_bg.move_(x, y)
};
let c = theme.colors.bar_background.get(); let c = theme.colors.bar_background.get();
self.base self.base
.fill_boxes3(slice::from_ref(&bar_bg), &c, None, srgb, x, y, true); .fill_scaled_boxes(slice::from_ref(&bar_bg), &c, None, srgb);
self.base.sync(); self.base.sync();
let rd = output.render_data.borrow_mut(); let rd = output.render_data.borrow_mut();
if let Some(aw) = &rd.active_workspace { if let Some(aw) = &rd.active_workspace {
@ -139,7 +137,7 @@ impl Renderer<'_> {
None, None,
None, None,
scale, scale,
Some(&bar_bg_abs), Some(&bar_bg),
None, None,
AcquireSync::None, AcquireSync::None,
ReleaseSync::None, ReleaseSync::None,
@ -162,7 +160,7 @@ impl Renderer<'_> {
None, None,
None, None,
scale, scale,
Some(&bar_bg_abs), Some(&bar_bg),
None, None,
AcquireSync::None, AcquireSync::None,
ReleaseSync::None, ReleaseSync::None,

View file

@ -89,7 +89,7 @@ impl RendererBase<'_> {
self.fill_boxes3(boxes, color, None, cd, dx, dy, false); self.fill_boxes3(boxes, color, None, cd, dx, dy, false);
} }
pub fn fill_boxes3( fn fill_boxes3(
&mut self, &mut self,
boxes: &[Rect], boxes: &[Rect],
color: &Color, color: &Color,
@ -102,18 +102,18 @@ impl RendererBase<'_> {
if boxes.is_empty() || *color == Color::TRANSPARENT { if boxes.is_empty() || *color == Color::TRANSPARENT {
return; return;
} }
let (dx, dy) = self.scale_point(dx, dy);
for bx in boxes { for bx in boxes {
let bx = bx.move_(dx, dy);
let bx = match scaled { let bx = match scaled {
false => self.scale_rect(*bx), false => self.scale_rect(bx),
true => *bx, true => bx,
}; };
self.ops.push(GfxApiOpt::FillRect(FillRect { self.ops.push(GfxApiOpt::FillRect(FillRect {
rect: FramebufferRect::new( rect: FramebufferRect::new(
(bx.x1() + dx) as f32, bx.x1() as f32,
(bx.y1() + dy) as f32, bx.y1() as f32,
(bx.x2() + dx) as f32, bx.x2() as f32,
(bx.y2() + dy) as f32, bx.y2() as f32,
self.transform, self.transform,
self.fb_width, self.fb_width,
self.fb_height, self.fb_height,