Skip to main content

nightshade_renderer/
text_data.rs

1//! Generated text geometry owned by the render layer.
2
3use nalgebra_glm::{Vec2, Vec3};
4
5#[derive(Clone, Debug, Default)]
6pub struct TextMesh {
7    pub vertices: Vec<TextVertex>,
8    pub indices: Vec<u32>,
9    pub bounds: Vec2,
10}
11
12#[repr(C)]
13#[derive(Copy, Clone, Debug, bytemuck::Pod, bytemuck::Zeroable)]
14pub struct TextVertex {
15    pub position: Vec3,
16    pub tex_coords: Vec2,
17    pub character_index: u32,
18    pub _padding: u32,
19}
20
21#[derive(
22    Clone,
23    Copy,
24    Debug,
25    Default,
26    PartialEq,
27    Eq,
28    Hash,
29    serde::Serialize,
30    serde::Deserialize,
31    enum2schema::Schema,
32)]
33#[schema(string_enum)]
34pub enum FontKind {
35    #[default]
36    Default,
37    Mono,
38    IconsMaterial,
39    IconsLucide,
40}
41
42#[derive(
43    Clone, Copy, Debug, PartialEq, serde::Serialize, serde::Deserialize, enum2schema::Schema,
44)]
45#[schema(string_enum)]
46pub enum TextAlignment {
47    Left,
48    Center,
49    Right,
50}
51
52#[derive(
53    Clone, Copy, Debug, PartialEq, serde::Serialize, serde::Deserialize, enum2schema::Schema,
54)]
55#[schema(string_enum)]
56pub enum VerticalAlignment {
57    Top,
58    Middle,
59    Bottom,
60    Baseline,
61}