diff options
| author | 2024-01-20 13:52:15 +0100 | |
|---|---|---|
| committer | 2024-01-20 13:52:15 +0100 | |
| commit | 545cc909c9f356dd733d273173694db9b8c28594 (patch) | |
| tree | c8132edab4386bbccb07a372c3776f22abefbda3 /graphics | |
| parent | b3e3f6e3c9fc6879e6681810f54d7eaa7c0f3d30 (diff) | |
| parent | 1c1667c3c99fa9b1009ef416b9b3c7e5a1d53a97 (diff) | |
| download | iced-545cc909c9f356dd733d273173694db9b8c28594.tar.gz iced-545cc909c9f356dd733d273173694db9b8c28594.tar.bz2 iced-545cc909c9f356dd733d273173694db9b8c28594.zip  | |
Merge pull request #1882 from nicksenger/shadows
Quad shadows
Diffstat (limited to 'graphics')
| -rw-r--r-- | graphics/src/damage.rs | 14 | ||||
| -rw-r--r-- | graphics/src/primitive.rs | 14 | ||||
| -rw-r--r-- | graphics/src/renderer.rs | 5 | 
3 files changed, 23 insertions, 10 deletions
diff --git a/graphics/src/damage.rs b/graphics/src/damage.rs index 59e9f5b4..ba9192ef 100644 --- a/graphics/src/damage.rs +++ b/graphics/src/damage.rs @@ -78,6 +78,20 @@ impl<T: Damage> Damage for Primitive<T> {                  // damage bounds (?)                  raw.clip_bounds.expand(1.5)              } +            Self::Quad { bounds, shadow, .. } if shadow.color.a > 0.0 => { +                let bounds_with_shadow = Rectangle { +                    x: bounds.x + shadow.offset.x.min(0.0) - shadow.blur_radius, +                    y: bounds.y + shadow.offset.y.min(0.0) - shadow.blur_radius, +                    width: bounds.width +                        + shadow.offset.x.abs() +                        + shadow.blur_radius * 2.0, +                    height: bounds.height +                        + shadow.offset.y.abs() +                        + shadow.blur_radius * 2.0, +                }; + +                bounds_with_shadow.expand(1.0) +            }              Self::Quad { bounds, .. }              | Self::Image { bounds, .. }              | Self::Svg { bounds, .. } => bounds.expand(1.0), diff --git a/graphics/src/primitive.rs b/graphics/src/primitive.rs index 20affaaf..aed59e1a 100644 --- a/graphics/src/primitive.rs +++ b/graphics/src/primitive.rs @@ -3,7 +3,9 @@ use crate::core::alignment;  use crate::core::image;  use crate::core::svg;  use crate::core::text; -use crate::core::{Background, Color, Font, Pixels, Point, Rectangle, Vector}; +use crate::core::{ +    Background, Border, Color, Font, Pixels, Point, Rectangle, Shadow, Vector, +};  use crate::text::editor;  use crate::text::paragraph; @@ -65,12 +67,10 @@ pub enum Primitive<T> {          bounds: Rectangle,          /// The background of the quad          background: Background, -        /// The border radii of the quad -        border_radius: [f32; 4], -        /// The border width of the quad -        border_width: f32, -        /// The border color of the quad -        border_color: Color, +        /// The [`Border`] of the quad +        border: Border, +        /// The [`Shadow`] of the quad +        shadow: Shadow,      },      /// An image primitive      Image { diff --git a/graphics/src/renderer.rs b/graphics/src/renderer.rs index 1b0f5c5b..3ba41c3f 100644 --- a/graphics/src/renderer.rs +++ b/graphics/src/renderer.rs @@ -124,9 +124,8 @@ impl<B: Backend, T> iced_core::Renderer for Renderer<B, T> {          self.primitives.push(Primitive::Quad {              bounds: quad.bounds,              background: background.into(), -            border_radius: quad.border_radius.into(), -            border_width: quad.border_width, -            border_color: quad.border_color, +            border: quad.border, +            shadow: quad.shadow,          });      }  | 
