This commit is contained in:
Simon Gardling 2022-03-09 08:51:38 -05:00
parent 451238e975
commit d17f49b7c0

View File

@ -46,10 +46,14 @@ const DEFAULT_INTEGRAL_NUM: usize = 100;
// Font Data // Font Data
flate!(static DATA_FILE: [u8] from "data.tar"); flate!(static DATA_FILE: [u8] from "data.tar");
// Stores data loaded from files
struct FileData { struct FileData {
// Stores fonts
pub font_ubuntu_light: FontData, pub font_ubuntu_light: FontData,
pub font_notoemoji: FontData, pub font_notoemoji: FontData,
pub font_hack: FontData, pub font_hack: FontData,
// Stores text
pub text_help_expr: String, pub text_help_expr: String,
pub text_help_vars: String, pub text_help_vars: String,
pub text_help_panel: String, pub text_help_panel: String,
@ -58,13 +62,16 @@ struct FileData {
} }
lazy_static::lazy_static! { lazy_static::lazy_static! {
// Load all of the data from the compressed tarballe
static ref FILE_DATA: FileData = { static ref FILE_DATA: FileData = {
let mut tar_archive = tar::Archive::new(&**DATA_FILE); let mut tar_archive = tar::Archive::new(&**DATA_FILE);
// Stores fonts
let mut font_ubuntu_light: Option<FontData> = None; let mut font_ubuntu_light: Option<FontData> = None;
let mut font_notoemoji: Option<FontData> = None; let mut font_notoemoji: Option<FontData> = None;
let mut font_hack: Option<FontData> = None; let mut font_hack: Option<FontData> = None;
// Stores text
let mut text_help_expr: Option<String> = None; let mut text_help_expr: Option<String> = None;
let mut text_help_vars: Option<String> = None; let mut text_help_vars: Option<String> = None;
let mut text_help_panel: Option<String> = None; let mut text_help_panel: Option<String> = None;
@ -72,12 +79,15 @@ lazy_static::lazy_static! {
let mut text_help_other: Option<String> = None; let mut text_help_other: Option<String> = None;
// Iterate through all entries in the tarball
for file in tar_archive.entries().unwrap() { for file in tar_archive.entries().unwrap() {
let mut file = file.unwrap(); let mut file = file.unwrap();
let mut data: Vec<u8> = Vec::new(); let mut data: Vec<u8> = Vec::new();
file.read_to_end(&mut data).unwrap(); file.read_to_end(&mut data).unwrap();
let path = file.header().path().unwrap(); let path = file.header().path().unwrap();
let path_string = path.to_string_lossy(); let path_string = path.to_string_lossy();
// Match the filename
match path_string.as_ref() { match path_string.as_ref() {
"Hack-Regular.ttf" => { "Hack-Regular.ttf" => {
font_hack = Some(FontData::from_owned(data)) font_hack = Some(FontData::from_owned(data))
@ -109,6 +119,7 @@ lazy_static::lazy_static! {
} }
} }
// Create and return FileData struct
FileData { FileData {
font_ubuntu_light: font_ubuntu_light.expect("Ubuntu Light font not found!"), font_ubuntu_light: font_ubuntu_light.expect("Ubuntu Light font not found!"),
font_notoemoji: font_notoemoji.expect("Noto Emoji font not found!"), font_notoemoji: font_notoemoji.expect("Noto Emoji font not found!"),
@ -121,6 +132,7 @@ lazy_static::lazy_static! {
} }
}; };
// Stores the FontDefinitions used by egui
static ref FONT_DEFINITIONS: FontDefinitions = { static ref FONT_DEFINITIONS: FontDefinitions = {
let mut font_data: BTreeMap<String, FontData> = BTreeMap::new(); let mut font_data: BTreeMap<String, FontData> = BTreeMap::new();
let mut families = BTreeMap::new(); let mut families = BTreeMap::new();