summaryrefslogtreecommitdiffstats
path: root/glow
diff options
context:
space:
mode:
authorLibravatar Ashley Wulber <ashley@system76.com>2022-11-23 13:37:59 -0500
committerLibravatar Ashley Wulber <ashley@system76.com>2022-11-23 13:37:59 -0500
commit751ffb590053d713ea376893a1d9050514b8ffe1 (patch)
tree31c31c64038e8875118e8e9c0f78038f5810e28a /glow
parentb4aedceac6f3937eabec90fc84d5eda61a000575 (diff)
downloadiced-751ffb590053d713ea376893a1d9050514b8ffe1.tar.gz
iced-751ffb590053d713ea376893a1d9050514b8ffe1.tar.bz2
iced-751ffb590053d713ea376893a1d9050514b8ffe1.zip
fix: scissor layout bounds for images
Diffstat (limited to 'glow')
-rw-r--r--glow/src/backend.rs2
-rw-r--r--glow/src/image.rs11
2 files changed, 12 insertions, 1 deletions
diff --git a/glow/src/backend.rs b/glow/src/backend.rs
index 1a41d540..c663869e 100644
--- a/glow/src/backend.rs
+++ b/glow/src/backend.rs
@@ -129,7 +129,7 @@ impl Backend {
* Transformation::scale(scale_factor, scale_factor);
self.image_pipeline
- .draw(gl, scaled, scale_factor, &layer.images);
+ .draw(gl, scaled, scale_factor, &layer.images, bounds);
}
if !layer.text.is_empty() {
diff --git a/glow/src/image.rs b/glow/src/image.rs
index f906cd4c..234583e9 100644
--- a/glow/src/image.rs
+++ b/glow/src/image.rs
@@ -14,6 +14,7 @@ use iced_graphics::image::raster;
use iced_graphics::image::vector;
use iced_graphics::layer;
+use iced_graphics::Rectangle;
use iced_graphics::Size;
use glow::HasContext;
@@ -144,11 +145,13 @@ impl Pipeline {
transformation: Transformation,
_scale_factor: f32,
images: &[layer::Image],
+ layer_bounds: Rectangle<u32>,
) {
unsafe {
gl.use_program(Some(self.program));
gl.bind_vertex_array(Some(self.vertex_array));
gl.bind_buffer(glow::ARRAY_BUFFER, Some(self.vertex_buffer));
+ gl.enable(glow::SCISSOR_TEST);
}
#[cfg(feature = "image")]
@@ -187,6 +190,13 @@ impl Pipeline {
};
unsafe {
+ gl.scissor(
+ layer_bounds.x as i32,
+ layer_bounds.y as i32,
+ layer_bounds.width as i32,
+ layer_bounds.height as i32,
+ );
+
if let Some(storage::Entry { texture, .. }) = entry {
gl.bind_texture(glow::TEXTURE_2D, Some(*texture))
} else {
@@ -213,6 +223,7 @@ impl Pipeline {
gl.bind_buffer(glow::ARRAY_BUFFER, None);
gl.bind_vertex_array(None);
gl.use_program(None);
+ gl.disable(glow::SCISSOR_TEST);
}
}