Program Listing for File IoEnums.hpp

Return to documentation for file (include/ari/io/IoEnums.hpp)

#pragma once
#include "bx/bx.h"
#include "bx/filepath.h"

namespace ari
{
    struct WindowHandle  { uint16_t idx; };
    inline bool isValid(WindowHandle _handle)  { return UINT16_MAX != _handle.idx; }

    struct GamepadHandle { uint16_t idx; };
    inline bool isValid(GamepadHandle _handle) { return UINT16_MAX != _handle.idx; }

    struct MouseButton
    {
        enum Enum
        {
            None,
            Left,
            Middle,
            Right,

            Count
        };
    };

    struct GamepadAxis
    {
        enum Enum
        {
            LeftX,
            LeftY,
            LeftZ,
            RightX,
            RightY,
            RightZ,

            Count
        };
    };

    struct Modifier
    {
        enum Enum
        {
            None       = 0,
            LeftAlt    = 0x01,
            RightAlt   = 0x02,
            LeftCtrl   = 0x04,
            RightCtrl  = 0x08,
            LeftShift  = 0x10,
            RightShift = 0x20,
            LeftMeta   = 0x40,
            RightMeta  = 0x80,
        };
    };

    struct Key
    {
        enum Enum
        {
            None = 0,
            Esc,
            Return,
            Tab,
            Space,
            Backspace,
            Up,
            Down,
            Left,
            Right,
            Insert,
            Delete,
            Home,
            End,
            PageUp,
            PageDown,
            Print,
            Plus,
            Minus,
            LeftBracket,
            RightBracket,
            Semicolon,
            Quote,
            Comma,
            Period,
            Slash,
            Backslash,
            Tilde,
            F1,
            F2,
            F3,
            F4,
            F5,
            F6,
            F7,
            F8,
            F9,
            F10,
            F11,
            F12,
            NumPad0,
            NumPad1,
            NumPad2,
            NumPad3,
            NumPad4,
            NumPad5,
            NumPad6,
            NumPad7,
            NumPad8,
            NumPad9,
            Key0,
            Key1,
            Key2,
            Key3,
            Key4,
            Key5,
            Key6,
            Key7,
            Key8,
            Key9,
            KeyA,
            KeyB,
            KeyC,
            KeyD,
            KeyE,
            KeyF,
            KeyG,
            KeyH,
            KeyI,
            KeyJ,
            KeyK,
            KeyL,
            KeyM,
            KeyN,
            KeyO,
            KeyP,
            KeyQ,
            KeyR,
            KeyS,
            KeyT,
            KeyU,
            KeyV,
            KeyW,
            KeyX,
            KeyY,
            KeyZ,

            GamepadA,
            GamepadB,
            GamepadX,
            GamepadY,
            GamepadThumbL,
            GamepadThumbR,
            GamepadShoulderL,
            GamepadShoulderR,
            GamepadUp,
            GamepadDown,
            GamepadLeft,
            GamepadRight,
            GamepadBack,
            GamepadStart,
            GamepadGuide,

            Count
        };
    };

    struct Suspend
    {
        enum Enum
        {
            WillSuspend,
            DidSuspend,
            WillResume,
            DidResume,

            Count
        };
    };

    const char* getName(Key::Enum _key);

    struct MouseState
    {
        MouseState()
            : m_mx(0)
            , m_my(0)
            , m_mz(0)
        {
            for (unsigned char & m_button : m_buttons)
            {
                m_button = MouseButton::None;
            }
        }

        int32_t m_mx;
        int32_t m_my;
        int32_t m_mz;
        uint8_t m_buttons[MouseButton::Count];
    };

    struct GamepadState
    {
        GamepadState()
        {
            bx::memSet(m_axis, 0, sizeof(m_axis) );
        }

        int32_t m_axis[GamepadAxis::Count];
    };

    struct WindowState
    {
        WindowState()
            : m_width(0)
            , m_height(0)
            , m_nwh(NULL)
        {
            m_handle.idx = UINT16_MAX;
        }

        WindowHandle m_handle;
        uint32_t     m_width;
        uint32_t     m_height;
        MouseState   m_mouse;
        void*        m_nwh;
        bx::FilePath m_dropFile;
    };


} // ari