From 92bda1231ef3b42df052acfa8bfd43c27b5a48a3 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Thu, 5 Oct 2023 12:11:28 +0200 Subject: [PATCH] Use content mask for quad as well --- crates/gpui3/src/platform/mac/shaders.metal | 3 ++- crates/gpui3/src/scene.rs | 5 ++--- crates/gpui3/src/style.rs | 6 ++---- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/crates/gpui3/src/platform/mac/shaders.metal b/crates/gpui3/src/platform/mac/shaders.metal index b4614bef4d58fc08f8f8a24008e0ae79b86e8f02..f71f849438f428e69994e39473088ad13a545185 100644 --- a/crates/gpui3/src/platform/mac/shaders.metal +++ b/crates/gpui3/src/platform/mac/shaders.metal @@ -30,7 +30,8 @@ vertex QuadVertexOutput quad_vertex(uint unit_vertex_id [[vertex_id]], float2 unit_vertex = unit_vertices[unit_vertex_id]; Quad quad = quads[quad_id]; float4 device_position = to_device_position(unit_vertex, quad.bounds, - quad.clip_bounds, viewport_size); + quad.content_mask.bounds, + viewport_size); float4 background_color = hsla_to_rgba(quad.background); float4 border_color = hsla_to_rgba(quad.border_color); return QuadVertexOutput{device_position, background_color, border_color, diff --git a/crates/gpui3/src/scene.rs b/crates/gpui3/src/scene.rs index 742317da42ccd5167648af46b7875f42fbb40551..8d34d0d3cfdecdff2cad01244cbdaf31a886cba7 100644 --- a/crates/gpui3/src/scene.rs +++ b/crates/gpui3/src/scene.rs @@ -191,13 +191,12 @@ pub(crate) enum PrimitiveBatch<'a> { }, } -#[derive(Debug, Copy, Clone, Eq, PartialEq)] +#[derive(Debug, Clone, Eq, PartialEq)] #[repr(C)] pub struct Quad { pub order: u32, pub bounds: Bounds, - pub clip_bounds: Bounds, - pub clip_corner_radii: Corners, + pub content_mask: ScaledContentMask, pub background: Hsla, pub border_color: Hsla, pub corner_radii: Corners, diff --git a/crates/gpui3/src/style.rs b/crates/gpui3/src/style.rs index 1f874807488b01374f4517273518127f9460d787..19c9c31b48baf11f2acd0a9a7ec8956ed39bca2b 100644 --- a/crates/gpui3/src/style.rs +++ b/crates/gpui3/src/style.rs @@ -236,15 +236,13 @@ impl Style { let background_color = self.fill.as_ref().and_then(Fill::color); if background_color.is_some() || self.is_border_visible() { let layer_id = cx.current_layer_id(); + let content_mask = cx.content_mask(); cx.scene().insert( layer_id, Quad { order, bounds: bounds.scale(scale), - clip_bounds: bounds.scale(scale), // todo! - clip_corner_radii: self - .corner_radii - .map(|length| length.to_pixels(rem_size).scale(scale)), + content_mask: content_mask.scale(scale), background: background_color.unwrap_or_default(), border_color: self.border_color.unwrap_or_default(), corner_radii: self