tui_lib 0.1.8

A Library to Be the base of a Tui Operation
Documentation
#[repr(C)]
#[derive(Clone, Copy)]
pub union char_union {
    pub unicode_char: u16,
    pub ascii_char: u8,
}

#[repr(C)]
#[derive(Clone, Copy)]
pub struct KEY_EVENT_RECORD {
    pub key_down: BOOL,
    pub repeat_count: u16,
    pub virtual_key_code: u16,
    pub virtual_scan_code: u16,
    pub u_char: char_union,
    pub control_key_state: u32,
}

#[repr(C)]
#[derive(Clone, Copy, Default)]
pub struct COORD {
    pub x: u16,
    pub y: u16,
}

#[repr(C)]
#[derive(Clone, Copy, Default)]
pub struct MOUSE_EVENT_RECORD {
    pub mouse_position: COORD,
    pub button_state: u32,
    pub control_key_state: u32,
    pub event_flags: u32,
}

#[repr(C)]
#[derive(Clone, Copy, Default)]
pub struct WINDOW_BUFFER_SIZE_RECORD {
    pub size: COORD,
}

#[repr(C)]
#[derive(Clone, Copy, Default)]
pub struct MENU_EVENT_RECORD {
    pub command_id: u32,
}

#[repr(C)]
#[derive(Clone, Copy, Default)]
pub struct FOCUS_EVENT_RECORD {
    pub set_focus: BOOL,
}

#[repr(C)]
#[derive(Clone, Copy)]
pub union EventRecord {
    pub key_event: KEY_EVENT_RECORD,
    pub mouse_event: MOUSE_EVENT_RECORD,
    pub window_buffer_size_event: WINDOW_BUFFER_SIZE_RECORD,
    pub menu_event: MENU_EVENT_RECORD,
    pub focus_event: FOCUS_EVENT_RECORD,
}

#[repr(C)]
#[derive(Clone, Copy)]
pub struct INPUT_RECORD {
    pub event_type: u16,
    pub event: EventRecord,
}

impl Default for INPUT_RECORD {
    fn default() -> Self {
        Self {
            event_type: Default::default(),
            event: EventRecord {
                key_event: KEY_EVENT_RECORD {
                    key_down: BOOL(0),
                    repeat_count: 0,
                    virtual_key_code: 0,
                    virtual_scan_code: 0,
                    u_char: char_union { unicode_char: 0 },
                    control_key_state: 0,
                },
            },
        }
    }
}

#[repr(C)]
#[derive(Clone, Copy, Default)]
pub struct SMALL_RECT {
    pub left: u16,
    pub top: u16,
    pub right: u16,
    pub bottom: u16,
}

#[repr(C)]
#[derive(Clone, Copy, Default)]
pub struct CONSOLE_SCREEN_BUFFER_INFO {
    pub size: COORD,
    pub cursor_position: COORD,
    pub attributes: u16,
    pub window: SMALL_RECT,
    pub max_window_size: COORD,
}

#[repr(C)]
#[derive(Clone, Copy, Default)]
pub struct BOOL(pub i32);
impl BOOL {
    pub fn as_bool(&self) -> bool {
        if self.0 == 0 {
            return false;
        }
        return true;
    }
}

#[repr(C)]
#[derive(Clone, Copy, Debug, Default)]
pub struct CONSOLE_MODE(pub u32);

#[repr(C)]
#[derive(Clone, Copy, Debug, Default)]
pub struct HANDLE(pub isize);