#ifndef NVK_ENUMS_
#define NVK_ENUMS_

#include <nvk_types.h>

namespace nv {

enum BasicEventType {
    EVT_GL_CONTEXT_MADE_CURRENT,
};

enum EventType {
    EVENT_MOUSE_MOTION,
    EVENT_MOUSE_BUTTON_PRESS,
    EVENT_MOUSE_BUTTON_RELEASE,
    EVENT_MOUSE_ENTER,
    EVENT_MOUSE_LEAVE,
    EVENT_MOUSE_WHEEL,
    EVENT_KEY_PRESS,
    EVENT_KEY_RELEASE,
    EVENT_FOCUS_OBTAINED,
    EVENT_FOCUS_LOST,
    EVENT_SCREEN_RESIZE,
    EVENT_WINDOW_CLOSING,
};

enum Alignment {
    ALIGN_NONE = 0,
    ALIGN_HCENTER = 1 << 0,
    ALIGN_VCENTER = 1 << 1,
    ALIGN_LEFT = 1 << 2,
    ALIGN_RIGHT = 1 << 3,
    ALIGN_TOP = 1 << 4,
    ALIGN_BOTTOM = 1 << 5,
    ALIGN_BASELINE = 1 << 6,
    ALIGN_FRONT = 1 << 7,
    ALIGN_BACK = 1 << 8,
    ALIGN_CENTER = ALIGN_HCENTER | ALIGN_VCENTER,
};

enum AnchorType {
    ANCHOR_NONE,
    ANCHOR_BOTTOM_LEFT,
    ANCHOR_BOTTOM_CENTER,
    ANCHOR_BOTTOM_RIGHT,
    ANCHOR_BASE_LEFT,
    ANCHOR_BASE_CENTER,
    ANCHOR_BASE_RIGHT,
    ANCHOR_CENTER_LEFT,
    ANCHOR_CENTER_CENTER,
    ANCHOR_CENTER_RIGHT,
    ANCHOR_TOP_LEFT,
    ANCHOR_TOP_CENTER,
    ANCHOR_TOP_RIGHT,
};

enum GLTFBufferViewType : U32 {
    BUFFER_VIEW_UNKNOWN = 0,
    BUFFER_VIEW_VERTICES = 34962,
    BUFFER_VIEW_INDICES = 34963,
};

enum GLTFComponentType : U32 {
    GLTF_COMP_UNKNOWN = 0,
    GLTF_COMP_I8 = 5120,
    GLTF_COMP_U8 = 5121,
    GLTF_COMP_I16 = 5122,
    GLTF_COMP_U16 = 5123,
    GLTF_COMP_U32 = 5125,
    GLTF_COMP_F32 = 5126,
};

enum GLTFElementType : U32 {
    GLTF_ELEM_UNKNOWN = 0,
    GLTF_ELEM_SCALAR,
    GLTF_ELEM_VEC2,
    GLTF_ELEM_VEC3,
    GLTF_ELEM_VEC4,
    GLTF_ELEM_MAT2,
    GLTF_ELEM_MAT3,
    GLTF_ELEM_MAT4,
};

// glTF primitive topology types
enum GLTFPrimitiveType : U32 {
    GLTF_PRIM_POINTS = 0,
    GLTF_PRIM_LINES = 1,
    GLTF_PRIM_LINE_LOOP = 2,
    GLTF_PRIM_LINE_STRIP = 3,
    GLTF_PRIM_TRIANGLES = 4,
    GLTF_PRIM_TRIANGLE_STRIP = 5,
    GLTF_PRIM_TRIANGLE_FAN = 6
};

enum GLTFAttributeType : U32 {
    GLTF_ATTR_UNKNOWN,
    GLTF_ATTR_POSITION,
    GLTF_ATTR_NORMAL,
    GLTF_ATTR_TANGENT,
    GLTF_ATTR_TEXCOORD0,
    GLTF_ATTR_TEXCOORD1,
    GLTF_ATTR_TEXCOORD2,
    GLTF_ATTR_TEXCOORD3,
    GLTF_ATTR_COLOR0,
    GLTF_ATTR_COLOR1,
    GLTF_ATTR_COLOR2,
    GLTF_ATTR_COLOR3,
    GLTF_ATTR_JOINTS0,
    GLTF_ATTR_JOINTS1,
    GLTF_ATTR_JOINTS2,
    GLTF_ATTR_JOINTS3,
    GLTF_ATTR_WEIGHTS0,
    GLTF_ATTR_WEIGHTS1,
    GLTF_ATTR_WEIGHTS2,
    GLTF_ATTR_WEIGHTS3,
};

} // namespace nv

#endif
