1use crate::prelude::*;
2
3#[derive(Clone, Copy, Debug, Default)]
4#[repr(C)]
5pub struct TextInputKey {
6    pub ScanCode: u16,
7    pub UnicodeChar: u16,
8}
9
10#[repr(C)]
11pub struct TextInput {
12    pub Reset: extern "efiapi" fn(&TextInput, bool) -> Status,
13    pub ReadKeyStroke: extern "efiapi" fn(&TextInput, &mut TextInputKey) -> Status,
14    pub WaitForKey: Event,
15}
16
17#[derive(Clone, Copy, Debug)]
18#[repr(C)]
19pub struct TextOutputMode {
20    pub MaxMode: i32,
21    pub Mode: i32,
22    pub Attribute: i32,
23    pub CursorColumn: i32,
24    pub CursorRow: i32,
25    pub CursorVisible: bool,
26}
27
28#[repr(C)]
29pub struct TextOutput {
30    pub Reset: extern "efiapi" fn(&TextOutput, bool) -> Status,
31    pub OutputString: extern "efiapi" fn(&TextOutput, *const u16) -> Status,
32    pub TestString: extern "efiapi" fn(&TextOutput, *const u16) -> Status,
33    pub QueryMode: extern "efiapi" fn(&TextOutput, usize, &mut usize, &mut usize) -> Status,
34    pub SetMode: extern "efiapi" fn(&TextOutput, usize) -> Status,
35    pub SetAttribute: extern "efiapi" fn(&TextOutput, usize) -> Status,
36    pub ClearScreen: extern "efiapi" fn(&TextOutput) -> Status,
37    pub SetCursorPosition: extern "efiapi" fn(&TextOutput, usize, usize) -> Status,
38    pub EnableCursor: extern "efiapi" fn(&TextOutput, bool) -> Status,
39    pub Mode: &'static TextOutputMode,
40}
41
42impl TextOutput {
43    pub const GUID: Guid = guid!("387477c2-69c7-11d2-8e39-00a0c969723b");
44}