diff options
author | 2022-11-03 18:57:09 +0100 | |
---|---|---|
committer | 2022-11-03 18:57:09 +0100 | |
commit | d222b5c8b0befab665c20ba0112b28199df0ae44 (patch) | |
tree | 0ac3a59f04e1c1ca89ff43800efbefd825b015ea /graphics/src/layer/mesh.rs | |
parent | a8f510c39917b2ac42fcc854f0a7eff13aee9838 (diff) | |
parent | f31c8f2504ea7c004c5caed8913e5da28d2e50e2 (diff) | |
download | iced-d222b5c8b0befab665c20ba0112b28199df0ae44.tar.gz iced-d222b5c8b0befab665c20ba0112b28199df0ae44.tar.bz2 iced-d222b5c8b0befab665c20ba0112b28199df0ae44.zip |
Merge pull request #1448 from bungoboingo/fear/linear-gradients
Add linear gradient support to canvas widget
Diffstat (limited to 'graphics/src/layer/mesh.rs')
-rw-r--r-- | graphics/src/layer/mesh.rs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/graphics/src/layer/mesh.rs b/graphics/src/layer/mesh.rs new file mode 100644 index 00000000..979081f1 --- /dev/null +++ b/graphics/src/layer/mesh.rs @@ -0,0 +1,31 @@ +//! A collection of triangle primitives. +use crate::triangle; +use crate::{Point, Rectangle}; + +/// A mesh of triangles. +#[derive(Debug, Clone, Copy)] +pub struct Mesh<'a> { + /// The origin of the vertices of the [`Mesh`]. + pub origin: Point, + + /// The vertex and index buffers of the [`Mesh`]. + pub buffers: &'a triangle::Mesh2D, + + /// The clipping bounds of the [`Mesh`]. + pub clip_bounds: Rectangle<f32>, + + /// The shader of the [`Mesh`]. + pub style: &'a triangle::Style, +} + +/// Returns the number of total vertices & total indices of all [`Mesh`]es. +pub fn attribute_count_of<'a>(meshes: &'a [Mesh<'a>]) -> (usize, usize) { + meshes + .iter() + .map(|Mesh { buffers, .. }| { + (buffers.vertices.len(), buffers.indices.len()) + }) + .fold((0, 0), |(total_v, total_i), (v, i)| { + (total_v + v, total_i + i) + }) +} |