diff options
author | 2022-11-14 00:02:42 +0100 | |
---|---|---|
committer | 2022-11-16 09:24:16 +0100 | |
commit | 33c3c0c0aa774bb7462e3c42aa04c591a66376a7 (patch) | |
tree | 08ea046e6ac8a9ad43a7ef1f56256a056a4a4d6c /graphics/src/primitive.rs | |
parent | 5b0dfcd0b0a9f25a3004dbc2cad3dea8220a76a1 (diff) | |
download | iced-33c3c0c0aa774bb7462e3c42aa04c591a66376a7.tar.gz iced-33c3c0c0aa774bb7462e3c42aa04c591a66376a7.tar.bz2 iced-33c3c0c0aa774bb7462e3c42aa04c591a66376a7.zip |
Group all solid triangles independently of color
Diffstat (limited to 'graphics/src/primitive.rs')
-rw-r--r-- | graphics/src/primitive.rs | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/graphics/src/primitive.rs b/graphics/src/primitive.rs index b481ac0b..9759d97a 100644 --- a/graphics/src/primitive.rs +++ b/graphics/src/primitive.rs @@ -3,6 +3,7 @@ use iced_native::svg; use iced_native::{Background, Color, Font, Rectangle, Size, Vector}; use crate::alignment; +use crate::gradient::Gradient; use crate::triangle; use std::sync::Arc; @@ -77,20 +78,32 @@ pub enum Primitive { /// The primitive to translate content: Box<Primitive>, }, - /// A low-level primitive to render a mesh of triangles. + /// A low-level primitive to render a mesh of triangles with a solid color. /// /// It can be used to render many kinds of geometry freely. - Mesh2D { - /// The vertex and index buffers of the mesh - buffers: triangle::Mesh2D, + SolidMesh { + /// The vertices and indices of the mesh. + buffers: triangle::Mesh2D<triangle::ColoredVertex2D>, + + /// The size of the drawable region of the mesh. + /// + /// Any geometry that falls out of this region will be clipped. + size: Size, + }, + /// A low-level primitive to render a mesh of triangles with a gradient. + /// + /// It can be used to render many kinds of geometry freely. + GradientMesh { + /// The vertices and indices of the mesh. + buffers: triangle::Mesh2D<triangle::Vertex2D>, /// The size of the drawable region of the mesh. /// /// Any geometry that falls out of this region will be clipped. size: Size, - /// The shader of the mesh - style: triangle::Style, + /// The [`Gradient`] to apply to the mesh. + gradient: Gradient, }, /// A cached primitive. /// |