use bytemuck::{Pod, Zeroable};
use crate::instances::pack_rgba_f32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Pod, Zeroable)]
pub struct GlyphInstance {
pub pos: [f32; 2],
pub size: [f32; 2],
pub uv_pos: [f32; 2],
pub uv_size: [f32; 2],
pub color: u32,
pub _pad0: f32,
pub clip_rect: [f32; 4],
}
impl GlyphInstance {
#[inline]
pub fn from_float_color(
pos: [f32; 2],
size: [f32; 2],
uv_pos: [f32; 2],
uv_size: [f32; 2],
color: [f32; 4],
clip_rect: [f32; 4],
) -> Self {
Self {
pos, size, uv_pos, uv_size,
color: pack_rgba_f32(color),
_pad0: 0.0,
clip_rect,
}
}
}
const _: () = assert!(
std::mem::size_of::<GlyphInstance>() == 56,
"GlyphInstance must be exactly 56 bytes"
);
const _: () = assert!(
std::mem::size_of::<GlyphInstance>() % 8 == 0,
"GlyphInstance size must be a multiple of 8"
);