summaryrefslogtreecommitdiffstats
path: root/glow/src/backend.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-05-20 20:28:35 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-05-20 20:28:35 +0200
commita1a5fcfd46622d5b18d1716aa2adb4659835ccf3 (patch)
tree8c9c2468151ebcc517688edc6d0d4867c11c441c /glow/src/backend.rs
parent720e7756f2afe30706b6b1a7fbde86b9f15e1d8c (diff)
downloadiced-a1a5fcfd46622d5b18d1716aa2adb4659835ccf3.tar.gz
iced-a1a5fcfd46622d5b18d1716aa2adb4659835ccf3.tar.bz2
iced-a1a5fcfd46622d5b18d1716aa2adb4659835ccf3.zip
Refactor `Viewport` and `Compositor`
Diffstat (limited to 'glow/src/backend.rs')
-rw-r--r--glow/src/backend.rs23
1 files changed, 9 insertions, 14 deletions
diff --git a/glow/src/backend.rs b/glow/src/backend.rs
index fb6782e6..5e2aa837 100644
--- a/glow/src/backend.rs
+++ b/glow/src/backend.rs
@@ -47,12 +47,10 @@ impl Backend {
gl: &glow::Context,
viewport: &Viewport,
(primitive, mouse_interaction): &(Primitive, mouse::Interaction),
- scale_factor: f64,
overlay_text: &[T],
) -> mouse::Interaction {
- let (width, height) = viewport.dimensions();
- let scale_factor = scale_factor as f32;
- let transformation = viewport.transformation();
+ let viewport_size = viewport.physical_size();
+ let projection = viewport.projection();
let mut layers = Layer::generate(primitive, viewport);
layers.push(Layer::overlay(overlay_text, viewport));
@@ -60,12 +58,11 @@ impl Backend {
for layer in layers {
self.flush(
gl,
- viewport,
- scale_factor,
- transformation,
+ viewport.scale_factor() as f32,
+ projection,
&layer,
- width,
- height,
+ viewport_size.width,
+ viewport_size.height,
);
}
@@ -75,19 +72,18 @@ impl Backend {
fn flush(
&mut self,
gl: &glow::Context,
- viewport: &Viewport,
scale_factor: f32,
transformation: Transformation,
layer: &Layer<'_>,
target_width: u32,
target_height: u32,
) {
- let bounds = layer.bounds * scale_factor;
+ let bounds = (layer.bounds * scale_factor).round();
if !layer.quads.is_empty() {
self.quad_pipeline.draw(
gl,
- viewport,
+ target_height,
&layer.quads,
transformation,
scale_factor,
@@ -175,8 +171,7 @@ impl Backend {
transformation,
glow_glyph::Region {
x: bounds.x,
- y: viewport.height()
- - (bounds.y + bounds.height).min(viewport.height()),
+ y: target_height - (bounds.y + bounds.height),
width: bounds.width,
height: bounds.height,
},