foxtk 0.0.2

Rust bindings for the FOX Toolkit
#[repr(C)]
#[derive(Default)]
pub enum ButtonState {
    #[default]
    Up = 0,
    Down,
    Engaged,
}

#[repr(C)]
#[derive(Default)]
pub enum ListStyle {
    #[default]
    Extended = 0,
    Single = 0x00100000,
    Browse = 0x00200000,
    Multiple = 0x00300000,
    Auto = 0x00400000,
}

#[repr(C)]
#[derive(Default)]
pub enum ButtonStyle {
    #[default]
    Default = 0x04000000,
    Autogray = 0x00800000,
    Autohide = 0x01000000,
    Toolbar = 0x02000000,
    Initial = 0x08000000,
}

#[repr(C)]
#[derive(Default)]
pub enum GroupBoxStyle {
    #[default]
    Left = 0,
    Center = 0x00020000,
    Right = 0x00040000,
}

#[repr(C)]
#[derive(Default)]
pub enum Message {
    Error = 0,
    Warning,
    Question,
    #[default]
    Information,
}

#[repr(C)]
#[derive(Default)]
pub enum MessageBox {
    #[default]
    Ok = 0x10000000,
    OkCancel = 0x20000000,
}

#[repr(C)]
#[derive(Default)]
pub enum Justify {
    #[default]
    Normal = 0,
    Left = 0x00008000,
    Right = 0x00010000,
    Top = 0x00020000,
    Bottom = 0x00040000,
    HzApart = 0x00008000 | 0x00010000,
    VtApart = 0x00020000 | 0x00040000,
}

#[repr(C)]
#[derive(Default)]
pub enum Decor {
    #[default]
    NONE = 0,
    Title = 0x00020000,
    Minimize = 0x00040000,
    Maximize = 0x00080000,
    Close = 0x00100000,
    Border = 0x00200000,
    Shrinkable = 0x00400000,
    Stretchable = 0x00800000,
    Resize = 0x00400000 | 0x00800000,
    Menu = 0x01000000,
    All = 0x00020000
        | 0x00040000
        | 0x00080000
        | 0x00100000
        | 0x00200000
        | 0x00400000
        | 0x00800000
        | 0x01000000,
}

#[repr(C)]
#[derive(Default)]
pub enum Layout {
    #[default]
    Normal = 0,
    FillX = 0x00000400,
    FillY = 0x00000800,
    Fill = 0x00000400 | 0x00000800,
    FixWidth = 0x00000100,
    FixHeight = 0x00000200,
}

#[repr(C)]
#[derive(Default)]
pub enum FrameStyle {
    #[default]
    None = 0,
    Sunken = 0x00001000,
    Raised = 0x00002000,
    Thick = 0x00004000,
    Ridge = 0x00004000 | 0x00002000 | 0x00001000,
    Line = 0x00002000 | 0x00001000,
    Normal = 0x00000800 | 0x00004000,
}

#[repr(C)]
#[derive(Default)]
pub enum Selector {
    #[default]
    COMMAND = 0,
    CHANGED,
}

#[derive(Default)]
pub struct Color(u32);
impl Color {
    pub fn from_rgb(r: u32, g: u32, b: u32) -> Self {
        Self(unsafe { foxtk_sys::fx_rgb(r, g, b) })
    }
    pub fn from_rgba(r: u32, g: u32, b: u32, a: u32) -> Self {
        Self(unsafe { foxtk_sys::fx_rgba(r, g, b, a) })
    }
    pub fn from_hex(hex: u32) -> Self {
        Self::from_rgb((hex >> 16) & 0xff, (hex >> 8) & 0xff, hex & 0xff)
    }
    pub fn bits(&self) -> u32 {
        self.0
    }
}