diff --git a/src/fde.rs b/src/fde.rs index 72f691d..6ab9bd6 100644 --- a/src/fde.rs +++ b/src/fde.rs @@ -15,7 +15,7 @@ use std::uefi::hii::{AnimationId, ImageId, StringId}; use std::uefi::text::TextInputKey; use crate::display::{Display, Output}; -use crate::key::{raw_key, Key}; +use crate::key::{Key, raw_key}; use crate::ui::Ui; // TODO: Move to uefi library { @@ -399,6 +399,26 @@ fn form_display_inner(form: &Form, user_input: &mut UserInput) -> Result<()> { let ui = Ui::new()?; + let draw_value_box = |display: &mut Display, + x: i32, + y: i32, + value: &IfrTypeValueEnum, + highlighted: bool| + -> i32 { + let value_string = match value { + IfrTypeValueEnum::U8(value) => format!("{value}"), + IfrTypeValueEnum::U16(value) => format!("{value}"), + IfrTypeValueEnum::U32(value) => format!("{value}"), + IfrTypeValueEnum::U64(value) => format!("{value}"), + IfrTypeValueEnum::Bool(value) => return ui.draw_check_box(display, x, y, *value), + other => format!("{other:?}"), + }; + + let rendered = ui.font.render(&value_string, font_size); + ui.draw_text_box(display, x, y, &rendered, true, highlighted); + rendered.height() as i32 + }; + 'render: loop { let mut hotkey_helps = Vec::new(); for hotkey in form.HotKeyListHead.iter() { @@ -511,9 +531,7 @@ fn form_display_inner(form: &Form, user_input: &mut UserInput) -> Result<()> { if let Some(op) = statement.OpCode() { macro_rules! cast { - ($type:ty) => {{ - op.cast::<$type>() - }}; + ($type:ty) => {{ op.cast::<$type>() }}; } match op.OpCode { IfrOpCode::Action => { @@ -561,30 +579,6 @@ fn form_display_inner(form: &Form, user_input: &mut UserInput) -> Result<()> { 'display: loop { display.set(ui.background_color); - let draw_value_box = |display: &mut Display, - x: i32, - y: i32, - value: &IfrTypeValueEnum, - highlighted: bool| - -> i32 { - //TODO: Do not format in drawing loop - let value_string = match value { - IfrTypeValueEnum::U8(value) => format!("{value}"), - IfrTypeValueEnum::U16(value) => format!("{value}"), - IfrTypeValueEnum::U32(value) => format!("{value}"), - IfrTypeValueEnum::U64(value) => format!("{value}"), - IfrTypeValueEnum::Bool(value) => { - return ui.draw_check_box(display, x, y, *value) - } - other => format!("{other:?}"), - }; - - // TODO: Do not render in drawing loop - let rendered = ui.font.render(&value_string, font_size); - ui.draw_text_box(display, x, y, &rendered, true, highlighted); - rendered.height() as i32 - }; - let draw_options_box = |display: &mut Display, x: i32, mut y: i32, element: &Element| { let mut w = 0; diff --git a/src/security.rs b/src/security.rs index 013e727..1bdb164 100644 --- a/src/security.rs +++ b/src/security.rs @@ -9,7 +9,7 @@ use std::proto::Protocol; use std::uefi::{boot::InterfaceType, reset::ResetType}; use crate::display::{Display, Output}; -use crate::key::{key, Key}; +use crate::key::{Key, key}; use crate::rng::Rng; use crate::ui::Ui;