51 lines
1.1 KiB
Rust
51 lines
1.1 KiB
Rust
//! A rectangle with certain styled properties.
|
|
|
|
use bytemuck::{Pod, Zeroable};
|
|
|
|
/// The properties of a quad.
|
|
#[derive(Clone, Copy, Debug, Pod, Zeroable)]
|
|
#[repr(C)]
|
|
pub struct Quad {
|
|
/// The position of the [`Quad`].
|
|
pub position: [f32; 2],
|
|
|
|
/// The size of the [`Quad`].
|
|
pub size: [f32; 2],
|
|
|
|
/// The border color of the [`Quad`], in __linear RGB__.
|
|
pub border_color: [f32; 4],
|
|
|
|
/// The border radii of the [`Quad`].
|
|
pub border_radius: [f32; 4],
|
|
|
|
/// The border width of the [`Quad`].
|
|
pub border_width: f32,
|
|
}
|
|
|
|
/// A quad filled with a solid color.
|
|
#[derive(Clone, Copy, Debug, Pod, Zeroable)]
|
|
#[repr(C)]
|
|
pub struct Solid {
|
|
/// The background color data of the quad.
|
|
pub color: [f32; 4],
|
|
|
|
/// The [`Quad`] data of the [`Solid`].
|
|
pub quad: Quad,
|
|
}
|
|
|
|
/// A quad filled with interpolated colors.
|
|
#[derive(Clone, Copy, Debug)]
|
|
#[repr(C)]
|
|
pub struct Gradient {
|
|
/// The background gradient data of the quad.
|
|
pub gradient: [f32; 44],
|
|
|
|
/// The [`Quad`] data of the [`Gradient`].
|
|
pub quad: Quad,
|
|
}
|
|
|
|
#[allow(unsafe_code)]
|
|
unsafe impl Pod for Gradient {}
|
|
|
|
#[allow(unsafe_code)]
|
|
unsafe impl Zeroable for Gradient {}
|