use rust_on_rails::prelude::*;
#[derive(Clone)]
pub struct FontResources {
pub fonts: Fonts,
pub size: FontSize,
}
impl FontResources {
pub fn new(fonts: Fonts, size: FontSize) -> Self {
Self { fonts, size }
}
pub fn default(ctx: &mut Context) -> Self {
FontResources{
fonts: Fonts::default(ctx),
size: FontSize::default()
}
}
}
#[derive(Clone)]
pub struct Fonts {
pub heading: resources::Font,
pub text: resources::Font,
pub label: resources::Font,
pub keyboard: resources::Font,
pub emoji: resources::Font,
}
impl Fonts {
pub fn new(
heading: resources::Font,
text: resources::Font,
label: resources::Font,
keyboard: resources::Font,
emoji: resources::Font
) -> Self {
Self { heading, text, label, keyboard, emoji }
}
pub fn default(ctx: &mut Context) -> Self {
println!("loading font resources");
let bold = ctx.load_font("fonts/outfit_bold.ttf").unwrap();
let medium = ctx.load_font("fonts/outfit_medium.ttf").unwrap();
let regular = ctx.load_font("fonts/outfit_regular.ttf").unwrap();
let emoji = ctx.load_font("fonts/noto_color_emoji.ttf").unwrap();
Self {
heading: bold.clone(),
text: regular,
label: bold,
keyboard: medium,
emoji
}
}
}
#[derive(Copy, Clone)]
pub struct FontSize {
pub title: f32,
pub h1: f32,
pub h2: f32,
pub h3: f32,
pub h4: f32,
pub h5: f32,
pub h6: f32,
pub xl: f32,
pub lg: f32,
pub md: f32,
pub sm: f32,
pub xs: f32
}
impl Default for FontSize {
fn default() -> Self {
FontSize {
title: 72.0,
h1: 48.0,
h2: 32.0,
h3: 24.0,
h4: 20.0,
h5: 16.0,
h6: 14.0,
xl: 24.0,
lg: 20.0,
md: 16.0,
sm: 14.0,
xs: 12.0
}
}
}