-- @docconsts @{
OsUnknown                    = 0
OsWindows                    = 1
OsLinux                      = 2
OsMacOS                      = 3
OsAndroid                    = 4
OsiOS                        = 5

DeviceUnknown                = 0
DeviceDesktop                = 1
DeviceMobile                 = 2
DeviceConsole                = 3

AnchorNone                   = 0
AnchorTop                    = 1
AnchorBottom                 = 2
AnchorLeft                   = 3
AnchorRight                  = 4
AnchorVerticalCenter         = 5
AnchorHorizontalCenter       = 6

LogFine                      = 0
LogDebug                     = 1
LogInfo                      = 2
LogWarning                   = 3
LogError                     = 4
LogFatal                     = 5

MouseFocusReason             = 0
KeyboardFocusReason          = 1
ActiveFocusReason            = 2
OtherFocusReason             = 3

AutoFocusNone                = 0
AutoFocusFirst               = 1
AutoFocusLast                = 2

KeyboardNoModifier           = 0
KeyboardCtrlModifier         = 1
KeyboardAltModifier          = 2
KeyboardCtrlAltModifier      = 3
KeyboardShiftModifier        = 4
KeyboardCtrlShiftModifier    = 5
KeyboardAltShiftModifier     = 6
KeyboardCtrlAltShiftModifier = 7
KeyboardMetaModifier         = 8
KeyboardPrimaryModifier      = 16

MouseNoButton                = 0
MouseLeftButton              = 1
MouseRightButton             = 2
MouseMidButton               = 3

MouseNoWheel                 = 0
MouseWheelUp                 = 1
MouseWheelDown               = 2

AlignNone                    = 0
AlignLeft                    = 1
AlignRight                   = 2
AlignTop                     = 4
AlignBottom                  = 8
AlignHorizontalCenter        = 16
AlignVerticalCenter          = 32
AlignTopLeft                 = 5
AlignTopRight                = 6
AlignBottomLeft              = 9
AlignBottomRight             = 10
AlignLeftCenter              = 33
AlignRightCenter             = 34
AlignTopCenter               = 20
AlignBottomCenter            = 24
AlignCenter                  = 48

KeyUnknown                   = 0
KeyEscape                    = 1
KeyTab                       = 2
KeyBackspace                 = 3
KeyEnter                     = 5
KeyInsert                    = 6
KeyDelete                    = 7
KeyPause                     = 8
KeyPrintScreen               = 9
KeyHome                      = 10
KeyEnd                       = 11
KeyPageUp                    = 12
KeyPageDown                  = 13
KeyUp                        = 14
KeyDown                      = 15
KeyLeft                      = 16
KeyRight                     = 17
KeyNumLock                   = 18
KeyScrollLock                = 19
KeyCapsLock                  = 20
KeyCtrlCmd                   = 21
KeyShift                     = 22
KeyAltOpt                    = 23
KeyControl                   = 24
KeyMeta                      = 25
KeyMenu                      = 26
KeySpace                     = 32 -- ' '
KeyExclamation               = 33 -- !
KeyQuote                     = 34 -- "
KeyNumberSign                = 35 -- #
KeyDollar                    = 36 -- $
KeyPercent                   = 37 -- %
KeyAmpersand                 = 38 -- &
KeyApostrophe                = 39 -- '
KeyLeftParen                 = 40 -- (
KeyRightParen                = 41 -- )
KeyAsterisk                  = 42 -- *
KeyPlus                      = 43 -- +
KeyComma                     = 44 -- ,
KeyMinus                     = 45 -- -
KeyPeriod                    = 46 -- .
KeySlash                     = 47 -- /
Key0                         = 48 -- 0
Key1                         = 49 -- 1
Key2                         = 50 -- 2
Key3                         = 51 -- 3
Key4                         = 52 -- 4
Key5                         = 53 -- 5
Key6                         = 54 -- 6
Key7                         = 55 -- 7
Key8                         = 56 -- 8
Key9                         = 57 -- 9
KeyColon                     = 58 -- :
KeySemicolon                 = 59 -- ;
KeyLess                      = 60 -- <
KeyEqual                     = 61 -- =
KeyGreater                   = 62 -- >
KeyQuestion                  = 63 -- ?
KeyAtSign                    = 64 -- @
KeyA                         = 65 -- a
KeyB                         = 66 -- b
KeyC                         = 67 -- c
KeyD                         = 68 -- d
KeyE                         = 69 -- e
KeyF                         = 70 -- f
KeyG                         = 71 -- g
KeyH                         = 72 -- h
KeyI                         = 73 -- i
KeyJ                         = 74 -- j
KeyK                         = 75 -- k
KeyL                         = 76 -- l
KeyM                         = 77 -- m
KeyN                         = 78 -- n
KeyO                         = 79 -- o
KeyP                         = 80 -- p
KeyQ                         = 81 -- q
KeyR                         = 82 -- r
KeyS                         = 83 -- s
KeyT                         = 84 -- t
KeyU                         = 85 -- u
KeyV                         = 86 -- v
KeyW                         = 87 -- w
KeyX                         = 88 -- x
KeyY                         = 89 -- y
KeyZ                         = 90 -- z
KeyLeftBracket               = 91 -- [
KeyBackslash                 = 92 -- '\'
KeyRightBracket              = 93 -- ]
KeyCaret                     = 94 -- ^
KeyUnderscore                = 95 -- _
KeyGrave                     = 96 -- `
KeyLeftCurly                 = 123 -- {
KeyBar                       = 124 -- |
KeyRightCurly                = 125 -- }
KeyTilde                     = 126 -- ~
KeyF1                        = 128
KeyF2                        = 129
KeyF3                        = 130
KeyF4                        = 131
KeyF5                        = 132
KeyF6                        = 134
KeyF7                        = 135
KeyF8                        = 136
KeyF9                        = 137
KeyF10                       = 138
KeyF11                       = 139
KeyF12                       = 140
KeyNumpad0                   = 141
KeyNumpad1                   = 142
KeyNumpad2                   = 143
KeyNumpad3                   = 144
KeyNumpad4                   = 145
KeyNumpad5                   = 146
KeyNumpad6                   = 147
KeyNumpad7                   = 148
KeyNumpad8                   = 149
KeyNumpad9                   = 150

FirstKey                     = KeyUnknown
LastKey                      = KeyNumpad9

ExtendedActivate             = 0
ExtendedLocales              = 1
ExtendedParticles            = 2

-- @}

KeyCodeDescs                 = {
    [KeyUnknown] = 'Unknown',
    [KeyEscape] = 'Escape',
    [KeyTab] = 'Tab',
    [KeyBackspace] = 'Backspace',
    [KeyEnter] = 'Enter',
    [KeyInsert] = 'Insert',
    [KeyDelete] = 'Delete',
    [KeyPause] = 'Pause',
    [KeyPrintScreen] = 'PrintScreen',
    [KeyHome] = 'Home',
    [KeyEnd] = 'End',
    [KeyPageUp] = 'PageUp',
    [KeyPageDown] = 'PageDown',
    [KeyUp] = 'Up',
    [KeyDown] = 'Down',
    [KeyLeft] = 'Left',
    [KeyRight] = 'Right',
    [KeyNumLock] = 'NumLock',
    [KeyScrollLock] = 'ScrollLock',
    [KeyCapsLock] = 'CapsLock',
    [KeyCtrlCmd] = 'Ctrl',
    [KeyShift] = 'Shift',
    [KeyAltOpt] = 'Alt',
    [KeyControl] = 'Control',
    [KeyMeta] = 'Meta',
    [KeyMenu] = 'Menu',
    [KeySpace] = 'Space',
    [KeyExclamation] = '!',
    [KeyQuote] = '\"',
    [KeyNumberSign] = '#',
    [KeyDollar] = '$',
    [KeyPercent] = '%',
    [KeyAmpersand] = '&',
    [KeyApostrophe] = '\'',
    [KeyLeftParen] = '(',
    [KeyRightParen] = ')',
    [KeyAsterisk] = '*',
    [KeyPlus] = 'Plus',
    [KeyComma] = ',',
    [KeyMinus] = '-',
    [KeyPeriod] = '.',
    [KeySlash] = '/',
    [Key0] = '0',
    [Key1] = '1',
    [Key2] = '2',
    [Key3] = '3',
    [Key4] = '4',
    [Key5] = '5',
    [Key6] = '6',
    [Key7] = '7',
    [Key8] = '8',
    [Key9] = '9',
    [KeyColon] = ':',
    [KeySemicolon] = ';',
    [KeyLess] = '<',
    [KeyEqual] = '=',
    [KeyGreater] = '>',
    [KeyQuestion] = '?',
    [KeyAtSign] = '@',
    [KeyA] = 'A',
    [KeyB] = 'B',
    [KeyC] = 'C',
    [KeyD] = 'D',
    [KeyE] = 'E',
    [KeyF] = 'F',
    [KeyG] = 'G',
    [KeyH] = 'H',
    [KeyI] = 'I',
    [KeyJ] = 'J',
    [KeyK] = 'K',
    [KeyL] = 'L',
    [KeyM] = 'M',
    [KeyN] = 'N',
    [KeyO] = 'O',
    [KeyP] = 'P',
    [KeyQ] = 'Q',
    [KeyR] = 'R',
    [KeyS] = 'S',
    [KeyT] = 'T',
    [KeyU] = 'U',
    [KeyV] = 'V',
    [KeyW] = 'W',
    [KeyX] = 'X',
    [KeyY] = 'Y',
    [KeyZ] = 'Z',
    [KeyLeftBracket] = '[',
    [KeyBackslash] = '\\',
    [KeyRightBracket] = ']',
    [KeyCaret] = '^',
    [KeyUnderscore] = '_',
    [KeyGrave] = '`',
    [KeyLeftCurly] = '{',
    [KeyBar] = '|',
    [KeyRightCurly] = '}',
    [KeyTilde] = '~',
    [KeyF1] = 'F1',
    [KeyF2] = 'F2',
    [KeyF3] = 'F3',
    [KeyF4] = 'F4',
    [KeyF5] = 'F5',
    [KeyF6] = 'F6',
    [KeyF7] = 'F7',
    [KeyF8] = 'F8',
    [KeyF9] = 'F9',
    [KeyF10] = 'F10',
    [KeyF11] = 'F11',
    [KeyF12] = 'F12',
    [KeyNumpad0] = 'Numpad0',
    [KeyNumpad1] = 'Numpad1',
    [KeyNumpad2] = 'Numpad2',
    [KeyNumpad3] = 'Numpad3',
    [KeyNumpad4] = 'Numpad4',
    [KeyNumpad5] = 'Numpad5',
    [KeyNumpad6] = 'Numpad6',
    [KeyNumpad7] = 'Numpad7',
    [KeyNumpad8] = 'Numpad8',
    [KeyNumpad9] = 'Numpad9'
}

NetworkMessageTypes          = {
    Boolean = 1,
    U8 = 2,
    U16 = 3,
    U32 = 4,
    U64 = 5,
    NumberString = 6,
    String = 7,
    Table = 8
}

SoundChannels                = {
    Music = 1,
    Ambient = 2,
    Effect = 3
}

DisplayNone                  = 0
DisplayBlock                 = 1
DisplayInline                = 2
DisplayInlineBlock           = 3
DisplayFlex                  = 4
DisplayInlineFlex            = 5
DisplayGrid                  = 6
DisplayInlineGrid            = 7
DisplayTable                 = 8
DisplayTableRowGroup         = 9
DisplayTableHeaderGroup      = 10
DisplayTableFooterGroup      = 11
DisplayTableRow              = 12
DisplayTableCell             = 13
DisplayTableColumnGroup      = 14
DisplayTableColumn           = 15
DisplayTableCaption          = 16
DisplayListItem              = 17
DisplayRunIn                 = 18
DisplayContents              = 19
DisplayInitial               = 20
DisplayInherit               = 21

EVENT_TEXT_NONE = 0
EVENT_TEXT_CLICK = 1
EVENT_TEXT_HOVER = 2

function initPlatformKeyDescs()
    local platformType = g_window.getPlatformType()
    local isMacOS = platformType:find("MACOS") ~= nil
    local isWindows = platformType:find("WIN32") ~= nil
    local isX11 = platformType:find("X11") ~= nil

    if isMacOS then
        KeyCodeDescs[KeyCtrlCmd] = 'Cmd'
        KeyCodeDescs[KeyAltOpt] = 'Option'
        KeyCodeDescs[KeyControl] = 'Ctrl'
        KeyCodeDescs[KeyMeta] = 'Cmd'
    elseif isWindows then
        KeyCodeDescs[KeyControl] = 'Ctrl'
        KeyCodeDescs[KeyMeta] = 'Win'
    elseif isX11 then
        KeyCodeDescs[KeyControl] = 'Ctrl'
        KeyCodeDescs[KeyMeta] = 'Super'
    end
end
