From 751ffb590053d713ea376893a1d9050514b8ffe1 Mon Sep 17 00:00:00 2001 From: Ashley Wulber Date: Wed, 23 Nov 2022 13:37:59 -0500 Subject: fix: scissor layout bounds for images --- glow/src/image.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'glow/src/image.rs') 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, ) { 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); } } -- cgit From efc00b2f412865b975088002cbe3c927ef662e10 Mon Sep 17 00:00:00 2001 From: Ashley Wulber Date: Wed, 23 Nov 2022 14:46:57 -0500 Subject: fix: adjust y position of scissor rectangle --- glow/src/image.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'glow/src/image.rs') diff --git a/glow/src/image.rs b/glow/src/image.rs index 234583e9..955fd1ab 100644 --- a/glow/src/image.rs +++ b/glow/src/image.rs @@ -142,6 +142,7 @@ impl Pipeline { pub fn draw( &mut self, mut gl: &glow::Context, + target_height: u32, transformation: Transformation, _scale_factor: f32, images: &[layer::Image], @@ -192,7 +193,8 @@ impl Pipeline { unsafe { gl.scissor( layer_bounds.x as i32, - layer_bounds.y as i32, + (target_height - (layer_bounds.y + layer_bounds.height)) + as i32, layer_bounds.width as i32, layer_bounds.height as i32, ); -- cgit