Skip to content

Commit 0126b00

Browse files
ogoffarttronical
authored andcommitted
Femtovg: Align the layer on the pixel grid
So that layer rendering is not blury
1 parent 1b5f443 commit 0126b00

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

internal/renderers/femtovg/itemrenderer.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1060,9 +1060,8 @@ impl<'a, R: femtovg::Renderer + TextureImporter> GLItemRenderer<'a, R> {
10601060
});
10611061

10621062
let cache_entry = self.graphics_cache.get_or_update_cache_entry(item_rc, || {
1063-
let bounding_rect = layer_bounding_rect_fn();
1064-
let origin = bounding_rect.origin * self.scale_factor;
1065-
let size = (bounding_rect.size * self.scale_factor).ceil().try_cast()?;
1063+
let bounding_rect = (layer_bounding_rect_fn() * self.scale_factor).round_out();
1064+
let size = bounding_rect.size.cast();
10661065

10671066
let layer_image = existing_layer_texture
10681067
.and_then(|layer_texture| {
@@ -1094,11 +1093,11 @@ impl<'a, R: femtovg::Renderer + TextureImporter> GLItemRenderer<'a, R> {
10941093

10951094
canvas.clear_rect(0, 0, size.width, size.height, femtovg::Color::rgba(0, 0, 0, 0));
10961095

1097-
canvas.translate(-origin.x, -origin.y);
1096+
canvas.translate(-bounding_rect.origin.x, -bounding_rect.origin.y);
10981097
}
10991098

11001099
*self.state.last_mut().unwrap() = State {
1101-
scissor: bounding_rect,
1100+
scissor: bounding_rect / self.scale_factor,
11021101
global_alpha: 1.,
11031102
current_render_target: layer_image.as_render_target(),
11041103
};
@@ -1119,7 +1118,10 @@ impl<'a, R: femtovg::Renderer + TextureImporter> GLItemRenderer<'a, R> {
11191118
canvas.set_render_target(previous_render_target);
11201119
}
11211120

1122-
Some(ItemGraphicsCacheEntry::TextureWithOrigin { texture: layer_image, origin })
1121+
Some(ItemGraphicsCacheEntry::TextureWithOrigin {
1122+
texture: layer_image,
1123+
origin: bounding_rect.origin,
1124+
})
11231125
});
11241126

11251127
cache_entry.and_then(|item_cache_entry| match item_cache_entry {

0 commit comments

Comments
 (0)