use core::ffi::CStr;
use crate::{resource::FontKey, sys};
pub struct Font {
ptr: sys::GFont,
custom: bool,
}
impl Font {
pub fn system(key: &CStr) -> Self {
Self {
ptr: unsafe { sys::fonts_get_system_font(key.as_ptr()) },
custom: false,
}
}
pub fn load(key: FontKey) -> Self {
let ptr = unsafe { sys::fonts_load_custom_font(sys::resource_get_handle(key.0.get())) };
Self { ptr, custom: true }
}
pub fn as_ptr(&self) -> sys::GFont {
self.ptr
}
}
impl Drop for Font {
fn drop(&mut self) {
if self.custom {
unsafe { sys::fonts_unload_custom_font(self.ptr) };
}
}
}