diff options
| author | Isaac Freund <mail@isaacfreund.com> | 2023-01-08 15:25:16 +0100 |
|---|---|---|
| committer | Isaac Freund <mail@isaacfreund.com> | 2023-01-08 15:25:16 +0100 |
| commit | f370202b685eb9e9ddeda50acfb06179f9fc82c4 (patch) | |
| tree | 052bf7b83e859bf304d30605b0f6a57edeab735e | |
| parent | 4dd02358d92050ad55f7b3c095d8a2ea0f94f607 (diff) | |
| download | river-f370202b685eb9e9ddeda50acfb06179f9fc82c4.tar.gz river-f370202b685eb9e9ddeda50acfb06179f9fc82c4.tar.xz | |
render: fix rounding for fractional scaling
We currently scale the width/height of rectangles based on the scaled
x/y instead of the unscaled x/y. This however leads to inconsistent
width/height due to rounding. Fix this bug by basing width/height
scaling off of the original x/y.
Furthermore, fix a typo where we scaled the height off of the x
coordinate instead of the y coordinate.
| -rw-r--r-- | river/render.zig | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/river/render.zig b/river/render.zig index 6c1280c..9642eac 100644 --- a/river/render.zig +++ b/river/render.zig @@ -418,10 +418,10 @@ fn renderRect(output: *const Output, box: wlr.Box, color: *const [4]f32) void { /// Scale a wlr_box, taking the possibility of fractional scaling into account. fn scaleBox(box: *wlr.Box, scale: f64) void { + box.width = scaleLength(box.width, box.x, scale); + box.height = scaleLength(box.height, box.y, scale); box.x = @floatToInt(c_int, @round(@intToFloat(f64, box.x) * scale)); box.y = @floatToInt(c_int, @round(@intToFloat(f64, box.y) * scale)); - box.width = scaleLength(box.width, box.x, scale); - box.height = scaleLength(box.height, box.x, scale); } /// Scales a width/height. |
