]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/raylib/raylib.factor
Harmonize spelling
[factor.git] / extra / raylib / raylib.factor
index 1cb90573bb87bb07456f8de69f07f84a86cf3b3a..fe339568ad54c539bd3a776557eacb343badb612 100644 (file)
@@ -21,6 +21,365 @@ FROM: alien.c-types => float ;
 
 LIBRARY: raylib
 
+! Enumerations ---------------------------------------------------------
+
+! Putting some of the #define's as enums.
+ENUM: ConfigFlags
+    { FLAG_VSYNC_HINT         0x00000040 }   ! Set to try enabling V-Sync on GPU
+    { FLAG_FULLSCREEN_MODE    0x00000002 }   ! Set to run program in fullscreen
+    { FLAG_WINDOW_RESIZABLE   0x00000004 }   ! Set to allow resizable window
+    { FLAG_WINDOW_UNDECORATED 0x00000008 }   ! Set to disable window decoration (frame and buttons)
+    { FLAG_WINDOW_HIDDEN      0x00000080 }   ! Set to hide window
+    { FLAG_WINDOW_MINIMIZED   0x00000200 }   ! Set to minimize window (iconify)
+    { FLAG_WINDOW_MAXIMIZED   0x00000400 }   ! Set to maximize window (expanded to monitor)
+    { FLAG_WINDOW_UNFOCUSED   0x00000800 }   ! Set to window non focused
+    { FLAG_WINDOW_TOPMOST     0x00001000 }   ! Set to window always on top
+    { FLAG_WINDOW_ALWAYS_RUN  0x00000100 }   ! Set to allow windows running while minimized
+    { FLAG_WINDOW_TRANSPARENT 0x00000010 }   ! Set to allow transparent framebuffer
+    { FLAG_WINDOW_HIGHDPI     0x00002000 }   ! Set to support HighDPI
+    { FLAG_MSAA_4X_HINT       0x00000020 }   ! Set to try enabling MSAA 4X
+    { FLAG_INTERLACED_HINT    0x00010000 } ; ! Set to try enabling interlaced video format (for V3D)
+
+ENUM: TraceLogLevel
+    LOG_ALL
+    LOG_TRACE
+    LOG_DEBUG
+    LOG_INFO
+    LOG_WARNING
+    LOG_ERROR
+    LOG_FATAL
+    LOG_NONE ;
+
+ENUM: KeyboardKey
+    { KEY_NULL            0 }      ! Key: NULL, used for no key pressed
+    ! Alphanumeric keys
+    { KEY_APOSTROPHE      39 }     ! Key: '
+    { KEY_COMMA           44 }     ! Key: ,
+    { KEY_MINUS           45 }     ! Key: -
+    { KEY_PERIOD          46 }     ! Key: .
+    { KEY_SLASH           47 }     ! Key: /
+    { KEY_ZERO            48 }     ! Key: 0
+    { KEY_ONE             49 }     ! Key: 1
+    { KEY_TWO             50 }     ! Key: 2
+    { KEY_THREE           51 }     ! Key: 3
+    { KEY_FOUR            52 }     ! Key: 4
+    { KEY_FIVE            53 }     ! Key: 5
+    { KEY_SIX             54 }     ! Key: 6
+    { KEY_SEVEN           55 }     ! Key: 7
+    { KEY_EIGHT           56 }     ! Key: 8
+    { KEY_NINE            57 }     ! Key: 9
+    { KEY_SEMICOLON       59 }     ! Key: ;
+    { KEY_EQUAL           61 }     ! Key: =
+    { KEY_A               65 }     ! Key: A | a
+    { KEY_B               66 }     ! Key: B | b
+    { KEY_C               67 }     ! Key: C | c
+    { KEY_D               68 }     ! Key: D | d
+    { KEY_E               69 }     ! Key: E | e
+    { KEY_F               70 }     ! Key: F | f
+    { KEY_G               71 }     ! Key: G | g
+    { KEY_H               72 }     ! Key: H | h
+    { KEY_I               73 }     ! Key: I | i
+    { KEY_J               74 }     ! Key: J | j
+    { KEY_K               75 }     ! Key: K | k
+    { KEY_L               76 }     ! Key: L | l
+    { KEY_M               77 }     ! Key: M | m
+    { KEY_N               78 }     ! Key: N | n
+    { KEY_O               79 }     ! Key: O | o
+    { KEY_P               80 }     ! Key: P | p
+    { KEY_Q               81 }     ! Key: Q | q
+    { KEY_R               82 }     ! Key: R | r
+    { KEY_S               83 }     ! Key: S | s
+    { KEY_T               84 }     ! Key: T | t
+    { KEY_U               85 }     ! Key: U | u
+    { KEY_V               86 }     ! Key: V | v
+    { KEY_W               87 }     ! Key: W | w
+    { KEY_X               88 }     ! Key: X | x
+    { KEY_Y               89 }     ! Key: Y | y
+    { KEY_Z               90 }     ! Key: Z | z
+    { KEY_LEFT_BRACKET    91 }     ! Key: [
+    { KEY_BACKSLASH       92 }     ! Key: '\'
+    { KEY_RIGHT_BRACKET   93 }     ! Key: ]
+    { KEY_GRAVE           96 }     ! Key: `
+    ! Function keys
+    { KEY_SPACE           32 }     ! Key: Space
+    { KEY_ESCAPE          256 }    ! Key: Esc
+    { KEY_ENTER           257 }    ! Key: Enter
+    { KEY_TAB             258 }    ! Key: Tab
+    { KEY_BACKSPACE       259 }    ! Key: Backspace
+    { KEY_INSERT          260 }    ! Key: Ins
+    { KEY_DELETE          261 }    ! Key: Del
+    { KEY_RIGHT           262 }    ! Key: Cursor right
+    { KEY_LEFT            263 }    ! Key: Cursor left
+    { KEY_DOWN            264 }    ! Key: Cursor down
+    { KEY_UP              265 }    ! Key: Cursor up
+    { KEY_PAGE_UP         266 }    ! Key: Page up
+    { KEY_PAGE_DOWN       267 }    ! Key: Page down
+    { KEY_HOME            268 }    ! Key: Home
+    { KEY_END             269 }    ! Key: End
+    { KEY_CAPS_LOCK       280 }    ! Key: Caps lock
+    { KEY_SCROLL_LOCK     281 }    ! Key: Scroll down
+    { KEY_NUM_LOCK        282 }    ! Key: Num lock
+    { KEY_PRINT_SCREEN    283 }    ! Key: Print screen
+    { KEY_PAUSE           284 }    ! Key: Pause
+    { KEY_F1              290 }    ! Key: F1
+    { KEY_F2              291 }    ! Key: F2
+    { KEY_F3              292 }    ! Key: F3
+    { KEY_F4              293 }    ! Key: F4
+    { KEY_F5              294 }    ! Key: F5
+    { KEY_F6              295 }    ! Key: F6
+    { KEY_F7              296 }    ! Key: F7
+    { KEY_F8              297 }    ! Key: F8
+    { KEY_F9              298 }    ! Key: F9
+    { KEY_F10             299 }    ! Key: F10
+    { KEY_F11             300 }    ! Key: F11
+    { KEY_F12             301 }    ! Key: F12
+    { KEY_LEFT_SHIFT      340 }    ! Key: Shift left
+    { KEY_LEFT_CONTROL    341 }    ! Key: Control left
+    { KEY_LEFT_ALT        342 }    ! Key: Alt left
+    { KEY_LEFT_SUPER      343 }    ! Key: Super left
+    { KEY_RIGHT_SHIFT     344 }    ! Key: Shift right
+    { KEY_RIGHT_CONTROL   345 }    ! Key: Control right
+    { KEY_RIGHT_ALT       346 }    ! Key: Alt right
+    { KEY_RIGHT_SUPER     347 }    ! Key: Super right
+    { KEY_KB_MENU         348 }    ! Key: KB menu
+    ! Keypad keys
+    { KEY_KP_0            320 }    ! Key: Keypad 0
+    { KEY_KP_1            321 }    ! Key: Keypad 1
+    { KEY_KP_2            322 }    ! Key: Keypad 2
+    { KEY_KP_3            323 }    ! Key: Keypad 3
+    { KEY_KP_4            324 }    ! Key: Keypad 4
+    { KEY_KP_5            325 }    ! Key: Keypad 5
+    { KEY_KP_6            326 }    ! Key: Keypad 6
+    { KEY_KP_7            327 }    ! Key: Keypad 7
+    { KEY_KP_8            328 }    ! Key: Keypad 8
+    { KEY_KP_9            329 }    ! Key: Keypad 9
+    { KEY_KP_DECIMAL      330 }    ! Key: Keypad .
+    { KEY_KP_DIVIDE       331 }    ! Key: Keypad /
+    { KEY_KP_MULTIPLY     332 }    ! Key: Keypad *
+    { KEY_KP_SUBTRACT     333 }    ! Key: Keypad -
+    { KEY_KP_ADD          334 }    ! Key: Keypad +
+    { KEY_KP_ENTER        335 }    ! Key: Keypad Enter
+    { KEY_KP_EQUAL        336 }    ! Key: Keypad =
+    ! Android key buttons
+    { KEY_BACK            4 }      ! Key: Android back button
+    { KEY_MENU            82 }     ! Key: Android menu button
+    { KEY_VOLUME_UP       24 }     ! Key: Android volume up button
+    { KEY_VOLUME_DOWN     25 } ;   ! Key: Android volume down button
+
+ENUM: MouseButton
+    MOUSE_BUTTON_LEFT        ! Mouse button left
+    MOUSE_BUTTON_RIGHT       ! Mouse button right
+    MOUSE_BUTTON_MIDDLE      ! Mouse button middle (pressed wheel)
+    MOUSE_BUTTON_SIDE        ! Mouse button side (advanced mouse device)
+    MOUSE_BUTTON_EXTRA       ! Mouse button extra (advanced mouse device)
+    MOUSE_BUTTON_FORWARD     ! Mouse button fordward (advanced mouse device)
+    MOUSE_BUTTON_BACK ;      ! Mouse button back (advanced mouse device)
+
+ENUM: MouseCursor
+    MOUSE_CURSOR_DEFAULT        ! Default pointer shape
+    MOUSE_CURSOR_ARROW          ! Arrow shape
+    MOUSE_CURSOR_IBEAM          ! Text writing cursor shape
+    MOUSE_CURSOR_CROSSHAIR      ! Cross shape
+    MOUSE_CURSOR_POINTING_HAND  ! Pointing hand cursor
+    MOUSE_CURSOR_RESIZE_EW      ! Horizontal resize/move arrow shape
+    MOUSE_CURSOR_RESIZE_NS      ! Vertical resize/move arrow shape
+    MOUSE_CURSOR_RESIZE_NWSE    ! Top-left to bottom-right diagonal resize/move arrow shape
+    MOUSE_CURSOR_RESIZE_NESW    ! The top-right to bottom-left diagonal resize/move arrow shape
+    MOUSE_CURSOR_RESIZE_ALL     ! The omni-directional resize/move cursor shape
+    MOUSE_CURSOR_NOT_ALLOWED ;  ! The operation-not-allowed shape
+
+ENUM: GamepadButton
+    GAMEPAD_BUTTON_UNKNOWN             ! Unknown button, just for error checking
+    GAMEPAD_BUTTON_LEFT_FACE_UP        ! Gamepad left DPAD up button
+    GAMEPAD_BUTTON_LEFT_FACE_RIGHT     ! Gamepad left DPAD right button
+    GAMEPAD_BUTTON_LEFT_FACE_DOWN      ! Gamepad left DPAD down button
+    GAMEPAD_BUTTON_LEFT_FACE_LEFT      ! Gamepad left DPAD left button
+    GAMEPAD_BUTTON_RIGHT_FACE_UP       ! Gamepad right button up (i.e. PS3: Triangle, Xbox: Y)
+    GAMEPAD_BUTTON_RIGHT_FACE_RIGHT    ! Gamepad right button right (i.e. PS3: Square, Xbox: X)
+    GAMEPAD_BUTTON_RIGHT_FACE_DOWN     ! Gamepad right button down (i.e. PS3: Cross, Xbox: A)
+    GAMEPAD_BUTTON_RIGHT_FACE_LEFT     ! Gamepad right button left (i.e. PS3: Circle, Xbox: B)
+    GAMEPAD_BUTTON_LEFT_TRIGGER_1      ! Gamepad top/back trigger left (first), it could be a trailing button
+    GAMEPAD_BUTTON_LEFT_TRIGGER_2      ! Gamepad top/back trigger left (second), it could be a trailing button
+    GAMEPAD_BUTTON_RIGHT_TRIGGER_1     ! Gamepad top/back trigger right (one), it could be a trailing button
+    GAMEPAD_BUTTON_RIGHT_TRIGGER_2     ! Gamepad top/back trigger right (second), it could be a trailing button
+    GAMEPAD_BUTTON_MIDDLE_LEFT         ! Gamepad center buttons, left one (i.e. PS3: Select)
+    GAMEPAD_BUTTON_MIDDLE              ! Gamepad center buttons, middle one (i.e. PS3: PS, Xbox: XBOX)
+    GAMEPAD_BUTTON_MIDDLE_RIGHT        ! Gamepad center buttons, right one (i.e. PS3: Start)
+    GAMEPAD_BUTTON_LEFT_THUMB          ! Gamepad joystick pressed button left
+    GAMEPAD_BUTTON_RIGHT_THUMB ;       ! Gamepad joystick pressed button right
+
+ENUM: GamepadAxis
+    GAMEPAD_AXIS_LEFT_X                ! Gamepad left stick X axis
+    GAMEPAD_AXIS_LEFT_Y                ! Gamepad left stick Y axis
+    GAMEPAD_AXIS_RIGHT_X               ! Gamepad right stick X axis
+    GAMEPAD_AXIS_RIGHT_Y               ! Gamepad right stick Y axis
+    GAMEPAD_AXIS_LEFT_TRIGGER          ! Gamepad back trigger left, pressure level: [1..-1]
+    GAMEPAD_AXIS_RIGHT_TRIGGER ;       ! Gamepad back trigger right, pressure level: [1..-1]
+
+ENUM: MaterialMapIndex
+    MATERIAL_MAP_ALBEDO            ! Albedo material (same as: MATERIAL_MAP_DIFFUSE)
+    MATERIAL_MAP_METALNESS         ! Metalness material (same as: MATERIAL_MAP_SPECULAR)
+    MATERIAL_MAP_NORMAL            ! Normal material
+    MATERIAL_MAP_ROUGHNESS         ! Roughness material
+    MATERIAL_MAP_OCCLUSION         ! Ambient occlusion material
+    MATERIAL_MAP_EMISSION          ! Emission material
+    MATERIAL_MAP_HEIGHT            ! Heightmap material
+    MATERIAL_MAP_CUBEMAP           ! Cubemap material (NOTE: Uses GL_TEXTURE_CUBE_MAP)
+    MATERIAL_MAP_IRRADIANCE        ! Irradiance material (NOTE: Uses GL_TEXTURE_CUBE_MAP)
+    MATERIAL_MAP_PREFILTER         ! Prefilter material (NOTE: Uses GL_TEXTURE_CUBE_MAP)
+    MATERIAL_MAP_BRDF ;            ! Brdf material
+
+ALIAS: MATERIAL_MAP_DIFFUSE MATERIAL_MAP_ALBEDO
+ALIAS: MATERIAL_MAP_SPECULAR MATERIAL_MAP_METALNESS
+
+ENUM: ShaderLocationIndex
+    SHADER_LOC_VERTEX_POSITION     ! Shader location: vertex attribute: position
+    SHADER_LOC_VERTEX_TEXCOORD01   ! Shader location: vertex attribute: texcoord01
+    SHADER_LOC_VERTEX_TEXCOORD02   ! Shader location: vertex attribute: texcoord02
+    SHADER_LOC_VERTEX_NORMAL       ! Shader location: vertex attribute: normal
+    SHADER_LOC_VERTEX_TANGENT      ! Shader location: vertex attribute: tangent
+    SHADER_LOC_VERTEX_COLOR        ! Shader location: vertex attribute: color
+    SHADER_LOC_MATRIX_MVP          ! Shader location: matrix uniform: model-view-projection
+    SHADER_LOC_MATRIX_VIEW         ! Shader location: matrix uniform: view (camera transform)
+    SHADER_LOC_MATRIX_PROJECTION   ! Shader location: matrix uniform: projection
+    SHADER_LOC_MATRIX_MODEL        ! Shader location: matrix uniform: model (transform)
+    SHADER_LOC_MATRIX_NORMAL       ! Shader location: matrix uniform: normal
+    SHADER_LOC_VECTOR_VIEW         ! Shader location: vector uniform: view
+    SHADER_LOC_COLOR_DIFFUSE       ! Shader location: vector uniform: diffuse color
+    SHADER_LOC_COLOR_SPECULAR      ! Shader location: vector uniform: specular color
+    SHADER_LOC_COLOR_AMBIENT       ! Shader location: vector uniform: ambient color
+    SHADER_LOC_MAP_ALBEDO          ! Shader location: sampler2d texture: albedo (same as: SHADER_LOC_MAP_DIFFUSE)
+    SHADER_LOC_MAP_METALNESS       ! Shader location: sampler2d texture: metalness (same as: SHADER_LOC_MAP_SPECULAR)
+    SHADER_LOC_MAP_NORMAL          ! Shader location: sampler2d texture: normal
+    SHADER_LOC_MAP_ROUGHNESS       ! Shader location: sampler2d texture: roughness
+    SHADER_LOC_MAP_OCCLUSION       ! Shader location: sampler2d texture: occlusion
+    SHADER_LOC_MAP_EMISSION        ! Shader location: sampler2d texture: emission
+    SHADER_LOC_MAP_HEIGHT          ! Shader location: sampler2d texture: height
+    SHADER_LOC_MAP_CUBEMAP         ! Shader location: samplerCube texture: cubemap
+    SHADER_LOC_MAP_IRRADIANCE      ! Shader location: samplerCube texture: irradiance
+    SHADER_LOC_MAP_PREFILTER       ! Shader location: samplerCube texture: prefilter
+    SHADER_LOC_MAP_BRDF ;          ! Shader location: sampler2d texture: brdf
+
+ENUM: ShaderUniformDataType
+    SHADER_UNIFORM_FLOAT           ! Shader uniform type: float
+    SHADER_UNIFORM_VEC2            ! Shader uniform type: vec2 (2 float)
+    SHADER_UNIFORM_VEC3            ! Shader uniform type: vec3 (3 float)
+    SHADER_UNIFORM_VEC4            ! Shader uniform type: vec4 (4 float)
+    SHADER_UNIFORM_INT             ! Shader uniform type: int
+    SHADER_UNIFORM_IVEC2           ! Shader uniform type: ivec2 (2 int)
+    SHADER_UNIFORM_IVEC3           ! Shader uniform type: ivec3 (3 int)
+    SHADER_UNIFORM_IVEC4           ! Shader uniform type: ivec4 (4 int)
+    SHADER_UNIFORM_SAMPLER2D ;     ! Shader uniform type: sampler2d
+
+ALIAS: SHADER_LOC_MAP_DIFFUSE SHADER_LOC_MAP_ALBEDO
+ALIAS: SHADER_LOC_MAP_SPECULAR SHADER_LOC_MAP_METALNESS
+
+ENUM: ShaderAttributeDataType
+    SHADER_ATTRIB_FLOAT            ! Shader attribute type: float
+    SHADER_ATTRIB_VEC2             ! Shader attribute type: vec2 (2 float)
+    SHADER_ATTRIB_VEC3             ! Shader attribute type: vec3 (3 float)
+    SHADER_ATTRIB_VEC4 ;           ! Shader attribute type: vec4 (4 float)
+
+! Pixel formats
+! NOTE: Support depends on OpenGL version and platform
+ENUM: PixelFormat
+    { PIXELFORMAT_UNCOMPRESSED_GRAYSCALE 1 } ! 8 bit per pixel (no alpha)
+    PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA      ! 8*2 bpp (2 channels)
+    PIXELFORMAT_UNCOMPRESSED_R5G6B5          ! 16 bpp
+    PIXELFORMAT_UNCOMPRESSED_R8G8B8          ! 24 bpp
+    PIXELFORMAT_UNCOMPRESSED_R5G5B5A1        ! 16 bpp (1 bit alpha)
+    PIXELFORMAT_UNCOMPRESSED_R4G4B4A4        ! 16 bpp (4 bit alpha)
+    PIXELFORMAT_UNCOMPRESSED_R8G8B8A8        ! 32 bpp
+    PIXELFORMAT_UNCOMPRESSED_R32             ! 32 bpp (1 channel - float)
+    PIXELFORMAT_UNCOMPRESSED_R32G32B32       ! 32*3 bpp (3 channels - float)
+    PIXELFORMAT_UNCOMPRESSED_R32G32B32A32    ! 32*4 bpp (4 channels - float)
+    PIXELFORMAT_COMPRESSED_DXT1_RGB          ! 4 bpp (no alpha)
+    PIXELFORMAT_COMPRESSED_DXT1_RGBA         ! 4 bpp (1 bit alpha)
+    PIXELFORMAT_COMPRESSED_DXT3_RGBA         ! 8 bpp
+    PIXELFORMAT_COMPRESSED_DXT5_RGBA         ! 8 bpp
+    PIXELFORMAT_COMPRESSED_ETC1_RGB          ! 4 bpp
+    PIXELFORMAT_COMPRESSED_ETC2_RGB          ! 4 bpp
+    PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA     ! 8 bpp
+    PIXELFORMAT_COMPRESSED_PVRT_RGB          ! 4 bpp
+    PIXELFORMAT_COMPRESSED_PVRT_RGBA         ! 4 bpp
+    PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA     ! 8 bpp
+    PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA ;   ! 2 bpp
+
+! Texture parameters: filter mode
+! NOTE 1: Filtering considers mipmaps if available in the texture
+! NOTE 2: Filter is accordingly set for minification and magnification
+ENUM: TextureFilterMode
+    TEXTURE_FILTER_POINT                   ! No filter just pixel aproximation
+    TEXTURE_FILTER_BILINEAR                ! Linear filtering
+    TEXTURE_FILTER_TRILINEAR               ! Trilinear filtering (linear with mipmaps)
+    TEXTURE_FILTER_ANISOTROPIC_4X          ! Anisotropic filtering 4x
+    TEXTURE_FILTER_ANISOTROPIC_8X          ! Anisotropic filtering 8x
+    TEXTURE_FILTER_ANISOTROPIC_16X ;       ! Anisotropic filtering 16x
+
+! Texture parameters: wrap mode
+ENUM: TextureWrapMode
+    TEXTURE_WRAP_REPEAT
+    TEXTURE_WRAP_CLAMP
+    TEXTURE_WRAP_MIRROR_REPEAT
+    TEXTURE_WRAP_MIRROR_CLAMP ;
+
+! Cubemap layouts
+ENUM: CubemapLayout
+    CUBEMAP_LAYOUT_AUTO_DETECT             ! Automatically detect layout type
+    CUBEMAP_LAYOUT_LINE_VERTICAL           ! Layout is defined by a vertical line with faces
+    CUBEMAP_LAYOUT_LINE_HORIZONTAL         ! Layout is defined by an horizontal line with faces
+    CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR     ! Layout is defined by a 3x4 cross with cubemap faces
+    CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE     ! Layout is defined by a 4x3 cross with cubemap faces
+    CUBEMAP_LAYOUT_PANORAMA ;              ! Layout is defined by a panorama image (equirectangular map)
+
+! Font type, defines generation method
+ENUM: FontType
+    FONT_DEFAULT               ! Default font generation, anti-aliased
+    FONT_BITMAP                ! Bitmap font generation, no anti-aliasing
+    FONT_SDF ;                 ! SDF font generation, requires external shader
+
+! Color blending modes (pre-defined)
+ENUM: BlendMode
+    BLEND_ALPHA                    ! Blend textures considering alpha (default)
+    BLEND_ADDITIVE                 ! Blend textures adding colors
+    BLEND_MULTIPLIED               ! Blend textures multiplying colors
+    BLEND_ADD_COLORS               ! Blend textures adding colors (alternative)
+    BLEND_SUBTRACT_COLORS          ! Blend textures subtracting colors (alternative)
+    BLEND_CUSTOM ;                 ! Belnd textures using custom src/dst factors (use rlSetBlendMode())
+
+! Gestures type
+! NOTE: IT could be used as flags to enable only some gestures
+ENUM: Gestures
+    { GESTURE_NONE          0 }
+    { GESTURE_TAP           1 }
+    { GESTURE_DOUBLETAP     2 }
+    { GESTURE_HOLD          4 }
+    { GESTURE_DRAG          8 }
+    { GESTURE_SWIPE_RIGHT   16 }
+    { GESTURE_SWIPE_LEFT    32 }
+    { GESTURE_SWIPE_UP      64 }
+    { GESTURE_SWIPE_DOWN    128 }
+    { GESTURE_PINCH_IN      256 }
+    { GESTURE_PINCH_OUT     512 } ;
+
+! Camera system modes
+ENUM: CameraMode
+    CAMERA_CUSTOM
+    CAMERA_FREE
+    CAMERA_ORBITAL
+    CAMERA_FIRST_PERSON
+    CAMERA_THIRD_PERSON ;
+
+! Camera projection
+ENUM: CameraProjection
+    CAMERA_PERSPECTIVE
+    CAMERA_ORTHOGRAPHIC ;
+
+ENUM: NPatchLayout
+    NPATCH_NINE_PATCH               ! Npatch layout: 3x3 tiles
+    NPATCH_THREE_PATCH_VERTICAL     ! Npatch layout: 1x3 tiles
+    NPATCH_THREE_PATCH_HORIZONTAL ; ! Npatch layout: 3x1 tiles
+
 ! Structs ----------------------------------------------------------------
 
 STRUCT: Vector2
@@ -129,14 +488,14 @@ STRUCT: Image
     { width int }                      ! Image base width
     { height int }                     ! Image base height
     { mipmaps int }                    ! Mipmap levels, 1 by default
-    { format int } ;                   ! Data format (PixelFormat type)
+    { format PixelFormat } ;           ! Data format (PixelFormat type)
 
 STRUCT: Texture2D
     { id uint }                        ! OpenGL Texture ID
     { width int }                      ! Texture Base Width
     { height int }                     ! Texture Base Height
     { mipmaps int }                    ! Mipmap Levels, 1 by default
-    { format int } ;                   ! Data Format (PixelFormat type)
+    { format PixelFormat } ;           ! Data Format (PixelFormat type)
 TYPEDEF: Texture2D Texture             ! Texture type same as Texture2D
 TYPEDEF: Texture2D TextureCubemap      ! Actually same as Texture2D
 
@@ -177,7 +536,7 @@ STRUCT: Camera3D
     { target Vector3 }    ! Camera target it looks-at
     { up Vector3 }        ! Camera up vector (rotation over its axis)
     { fovy float }        ! Camera field-of-view apperature in Y (degrees) in perspective, used as near plane width in orthographic
-    { projection int } ;  ! Camera projection: CAMERA_PERSPECTIVE or CAMERA_ORTHOGRAPHIC
+    { projection CameraProjection } ;  ! Camera projection: CAMERA_PERSPECTIVE or CAMERA_ORTHOGRAPHIC
 
 STRUCT: Camera2D
     { offset Vector2 }    ! Camera offset (displacement from target)
@@ -187,21 +546,21 @@ STRUCT: Camera2D
 TYPEDEF: Camera3D Camera  ! Default to 3D Camera
 
 STRUCT: Mesh
-    { vertexCount int }   ! Number of vertices stored in arrays
-    { triangleCount int } ! Number of triangles stored (indexed or not )
-    { _vertices float* }  ! Vertex position (XYZ - 3 components per vertex)
+    { vertexCount int }    ! Number of vertices stored in arrays
+    { triangleCount int }  ! Number of triangles stored (indexed or not )
+    { _vertices float* }   ! Vertex position (XYZ - 3 components per vertex)
     { _texcoords float* }  ! Vertex texture coordinates (UV - 2 components per vertex )
     { _texcoords2 float* } ! Vertex second texture coordinates (useful for lightmaps)
     { _normals float* }    ! Vertex normals (XYZ - 3 components per vertex)
-    { tangents float* }   ! Vertex tangents (XYZW - 4 components per vertex )
-    { colors uchar* }     ! Vertex colors (RGBA - 4 components per vertex)
-    { indices ushort* }   ! Vertex indices (in case vertex data comes indexed)
+    { tangents float* }    ! Vertex tangents (XYZW - 4 components per vertex )
+    { colors uchar* }      ! Vertex colors (RGBA - 4 components per vertex)
+    { indices ushort* }    ! Vertex indices (in case vertex data comes indexed)
     { animVertices float* }
     { animNormals float* }
     { boneIds int* }
     { boneWeights float* }
-    { vaoId uint }        ! OpenGL Vertex Array Object id
-    { vboId uint* } ;     ! OpenGL Vertex Buffer Objects id (7  types of vertex data)
+    { vaoId uint }         ! OpenGL Vertex Array Object id
+    { vboId uint* } ;      ! OpenGL Vertex Buffer Objects id (7  types of vertex data)
 
 ARRAY-SLOT: Mesh Vector3 _vertices [ vertexCount>> ] vertices
 ARRAY-SLOT: Mesh Vector2 _texcoords [ vertexCount>> ] texcoords
@@ -220,8 +579,8 @@ STRUCT: MaterialMap
 CONSTANT: MAX_MATERIAL_MAPS 12 ! NOTE: This seems to be a compile-time constant!
 STRUCT: Material
     { shader Shader }        ! Material shader
-    { _maps MaterialMap* }    ! Material maps.  Uses MAX_MATERIAL_MAPS.
-    { params float[4] } ;      ! Material generic parameters (if required)
+    { _maps MaterialMap* }   ! Material maps.  Uses MAX_MATERIAL_MAPS.
+    { params float[4] } ;    ! Material generic parameters (if required)
 
 ARRAY-SLOT: Material MaterialMap _maps [ drop 12 ] maps
 
@@ -274,194 +633,50 @@ STRUCT: BoundingBox
 STRUCT: Wave
     { frameCount uint }     ! Total number of frames (considering channels)
     { sampleRate uint }     ! Frequency (samples per second)
-    { sampleSize uint }     ! Bit depth (bits per sample): 8,16,32
-    { channels uint }       ! Number of channels (1-mono, 2-stereo)
-    { data void* } ;        ! Buffer data pointer
-
-STRUCT: AudioStream
-    { buffer void* }    ! Pointer to internal data used by the audio system
-    { sampleRate uint } ! Frequency (samples per second)
-    { sampleSize uint } ! Bit depth (bits per sample): 8, 16, 32 (24 not supported)
-    { channels uint } ; ! Number of channels (1-mono, 2-stereo)
-
-STRUCT: Sound
-    { stream AudioStream } ! Audio stream
-    { frameCount uint } ;  ! Total number of frames (considering channels)
-
-STRUCT: Music
-    { stream  AudioStream }     ! Audio stream
-    { frameCount uint }         ! Total number of frames (considering channels)
-    { looping bool }            ! Music looping enable
-    { ctxType int }             ! Type of music context (audio filetype)
-    { ctxData void* } ;         ! Audio context data, depends on type
-
-STRUCT: VrDeviceInfo
-    { hResolution int }               ! HMD horizontal resolution in pixels
-    { vResolution int }               ! HMD verticle resolution in pixels
-    { hScreenSize float }             ! HMD horizontal size in meters
-    { vScreenSize float }             ! HMD verticle size in meters
-    { vScreenCenter float }           ! HMD screen center in meters
-    { eyeToScreenDistance float }     ! HMD distance between eye and display in meters
-    { lensSeparationDistance float }  ! HMD lens separation distance in meters
-    { interpupillaryDistance float }  ! HMD IPD in meters
-    { lensDistortionValues float[4] } ! HMD lens distortion constant parameters
-    { chromaAbCorrection float[4] } ; ! HMD chromatic abberation correction parameters
-
-STRUCT: VrStereoConfig
-    { projection Matrix[2] }          ! VR projection matrices (per eye)
-    { viewOffset Matrix[2] }          ! VR view offset matrices (per eye)
-    { leftLensCenter float[2] }       ! VR left lens center
-    { rightLensCenter float[2] }      ! VR right lens center
-    { leftScreenCenter float[2] }     ! VR left screen center
-    { rightScreenCenter float[2] }    ! VR right screen center
-    { scale float[2] }                ! VR distortion scale
-    { scaleIn float[2] } ;            ! VR distortion scale in
-
-! Enumerations ---------------------------------------------------------
-
-! Putting some of the #define's as enums.
-ENUM: ConfigFlags
-    { FLAG_VSYNC_HINT         0x00000040 }   ! Set to try enabling V-Sync on GPU
-    { FLAG_FULLSCREEN_MODE    0x00000002 }   ! Set to run program in fullscreen
-    { FLAG_WINDOW_RESIZABLE   0x00000004 }   ! Set to allow resizable window
-    { FLAG_WINDOW_UNDECORATED 0x00000008 }   ! Set to disable window decoration (frame and buttons)
-    { FLAG_WINDOW_HIDDEN      0x00000080 }   ! Set to hide window
-    { FLAG_WINDOW_MINIMIZED   0x00000200 }   ! Set to minimize window (iconify)
-    { FLAG_WINDOW_MAXIMIZED   0x00000400 }   ! Set to maximize window (expanded to monitor)
-    { FLAG_WINDOW_UNFOCUSED   0x00000800 }   ! Set to window non focused
-    { FLAG_WINDOW_TOPMOST     0x00001000 }   ! Set to window always on top
-    { FLAG_WINDOW_ALWAYS_RUN  0x00000100 }   ! Set to allow windows running while minimized
-    { FLAG_WINDOW_TRANSPARENT 0x00000010 }   ! Set to allow transparent framebuffer
-    { FLAG_WINDOW_HIGHDPI     0x00002000 }   ! Set to support HighDPI
-    { FLAG_MSAA_4X_HINT       0x00000020 }   ! Set to try enabling MSAA 4X
-    { FLAG_INTERLACED_HINT    0x00010000 } ; ! Set to try enabling interlaced video format (for V3D)
-
-ENUM: TraceLogLevel
-    LOG_ALL
-    LOG_TRACE
-    LOG_DEBUG
-    LOG_INFO
-    LOG_WARNING
-    LOG_ERROR
-    LOG_FATAL
-    LOG_NONE ;
-
-ENUM: KeyboardKey
-    { KEY_NULL            0 }      ! Key: NULL, used for no key pressed
-    ! Alphanumeric keys
-    { KEY_APOSTROPHE      39 }     ! Key: '
-    { KEY_COMMA           44 }     ! Key: ,
-    { KEY_MINUS           45 }     ! Key: -
-    { KEY_PERIOD          46 }     ! Key: .
-    { KEY_SLASH           47 }     ! Key: /
-    { KEY_ZERO            48 }     ! Key: 0
-    { KEY_ONE             49 }     ! Key: 1
-    { KEY_TWO             50 }     ! Key: 2
-    { KEY_THREE           51 }     ! Key: 3
-    { KEY_FOUR            52 }     ! Key: 4
-    { KEY_FIVE            53 }     ! Key: 5
-    { KEY_SIX             54 }     ! Key: 6
-    { KEY_SEVEN           55 }     ! Key: 7
-    { KEY_EIGHT           56 }     ! Key: 8
-    { KEY_NINE            57 }     ! Key: 9
-    { KEY_SEMICOLON       59 }     ! Key: ;
-    { KEY_EQUAL           61 }     ! Key: =
-    { KEY_A               65 }     ! Key: A | a
-    { KEY_B               66 }     ! Key: B | b
-    { KEY_C               67 }     ! Key: C | c
-    { KEY_D               68 }     ! Key: D | d
-    { KEY_E               69 }     ! Key: E | e
-    { KEY_F               70 }     ! Key: F | f
-    { KEY_G               71 }     ! Key: G | g
-    { KEY_H               72 }     ! Key: H | h
-    { KEY_I               73 }     ! Key: I | i
-    { KEY_J               74 }     ! Key: J | j
-    { KEY_K               75 }     ! Key: K | k
-    { KEY_L               76 }     ! Key: L | l
-    { KEY_M               77 }     ! Key: M | m
-    { KEY_N               78 }     ! Key: N | n
-    { KEY_O               79 }     ! Key: O | o
-    { KEY_P               80 }     ! Key: P | p
-    { KEY_Q               81 }     ! Key: Q | q
-    { KEY_R               82 }     ! Key: R | r
-    { KEY_S               83 }     ! Key: S | s
-    { KEY_T               84 }     ! Key: T | t
-    { KEY_U               85 }     ! Key: U | u
-    { KEY_V               86 }     ! Key: V | v
-    { KEY_W               87 }     ! Key: W | w
-    { KEY_X               88 }     ! Key: X | x
-    { KEY_Y               89 }     ! Key: Y | y
-    { KEY_Z               90 }     ! Key: Z | z
-    { KEY_LEFT_BRACKET    91 }     ! Key: [
-    { KEY_BACKSLASH       92 }     ! Key: '\'
-    { KEY_RIGHT_BRACKET   93 }     ! Key: ]
-    { KEY_GRAVE           96 }     ! Key: `
-    ! Function keys
-    { KEY_SPACE           32 }     ! Key: Space
-    { KEY_ESCAPE          256 }    ! Key: Esc
-    { KEY_ENTER           257 }    ! Key: Enter
-    { KEY_TAB             258 }    ! Key: Tab
-    { KEY_BACKSPACE       259 }    ! Key: Backspace
-    { KEY_INSERT          260 }    ! Key: Ins
-    { KEY_DELETE          261 }    ! Key: Del
-    { KEY_RIGHT           262 }    ! Key: Cursor right
-    { KEY_LEFT            263 }    ! Key: Cursor left
-    { KEY_DOWN            264 }    ! Key: Cursor down
-    { KEY_UP              265 }    ! Key: Cursor up
-    { KEY_PAGE_UP         266 }    ! Key: Page up
-    { KEY_PAGE_DOWN       267 }    ! Key: Page down
-    { KEY_HOME            268 }    ! Key: Home
-    { KEY_END             269 }    ! Key: End
-    { KEY_CAPS_LOCK       280 }    ! Key: Caps lock
-    { KEY_SCROLL_LOCK     281 }    ! Key: Scroll down
-    { KEY_NUM_LOCK        282 }    ! Key: Num lock
-    { KEY_PRINT_SCREEN    283 }    ! Key: Print screen
-    { KEY_PAUSE           284 }    ! Key: Pause
-    { KEY_F1              290 }    ! Key: F1
-    { KEY_F2              291 }    ! Key: F2
-    { KEY_F3              292 }    ! Key: F3
-    { KEY_F4              293 }    ! Key: F4
-    { KEY_F5              294 }    ! Key: F5
-    { KEY_F6              295 }    ! Key: F6
-    { KEY_F7              296 }    ! Key: F7
-    { KEY_F8              297 }    ! Key: F8
-    { KEY_F9              298 }    ! Key: F9
-    { KEY_F10             299 }    ! Key: F10
-    { KEY_F11             300 }    ! Key: F11
-    { KEY_F12             301 }    ! Key: F12
-    { KEY_LEFT_SHIFT      340 }    ! Key: Shift left
-    { KEY_LEFT_CONTROL    341 }    ! Key: Control left
-    { KEY_LEFT_ALT        342 }    ! Key: Alt left
-    { KEY_LEFT_SUPER      343 }    ! Key: Super left
-    { KEY_RIGHT_SHIFT     344 }    ! Key: Shift right
-    { KEY_RIGHT_CONTROL   345 }    ! Key: Control right
-    { KEY_RIGHT_ALT       346 }    ! Key: Alt right
-    { KEY_RIGHT_SUPER     347 }    ! Key: Super right
-    { KEY_KB_MENU         348 }    ! Key: KB menu
-    ! Keypad keys
-    { KEY_KP_0            320 }    ! Key: Keypad 0
-    { KEY_KP_1            321 }    ! Key: Keypad 1
-    { KEY_KP_2            322 }    ! Key: Keypad 2
-    { KEY_KP_3            323 }    ! Key: Keypad 3
-    { KEY_KP_4            324 }    ! Key: Keypad 4
-    { KEY_KP_5            325 }    ! Key: Keypad 5
-    { KEY_KP_6            326 }    ! Key: Keypad 6
-    { KEY_KP_7            327 }    ! Key: Keypad 7
-    { KEY_KP_8            328 }    ! Key: Keypad 8
-    { KEY_KP_9            329 }    ! Key: Keypad 9
-    { KEY_KP_DECIMAL      330 }    ! Key: Keypad .
-    { KEY_KP_DIVIDE       331 }    ! Key: Keypad /
-    { KEY_KP_MULTIPLY     332 }    ! Key: Keypad *
-    { KEY_KP_SUBTRACT     333 }    ! Key: Keypad -
-    { KEY_KP_ADD          334 }    ! Key: Keypad +
-    { KEY_KP_ENTER        335 }    ! Key: Keypad Enter
-    { KEY_KP_EQUAL        336 }    ! Key: Keypad =
-    ! Android key buttons
-    { KEY_BACK            4 }      ! Key: Android back button
-    { KEY_MENU            82 }     ! Key: Android menu button
-    { KEY_VOLUME_UP       24 }     ! Key: Android volume up button
-    { KEY_VOLUME_DOWN     25 } ;   ! Key: Android volume down button
+    { sampleSize uint }     ! Bit depth (bits per sample): 8,16,32
+    { channels uint }       ! Number of channels (1-mono, 2-stereo)
+    { data void* } ;        ! Buffer data pointer
+
+STRUCT: AudioStream
+    { buffer void* }    ! Pointer to internal data used by the audio system
+    { sampleRate uint } ! Frequency (samples per second)
+    { sampleSize uint } ! Bit depth (bits per sample): 8, 16, 32 (24 not supported)
+    { channels uint } ; ! Number of channels (1-mono, 2-stereo)
+
+STRUCT: Sound
+    { stream AudioStream } ! Audio stream
+    { frameCount uint } ;  ! Total number of frames (considering channels)
+
+STRUCT: Music
+    { stream  AudioStream }     ! Audio stream
+    { frameCount uint }         ! Total number of frames (considering channels)
+    { looping bool }            ! Music looping enable
+    { ctxType int }             ! Type of music context (audio filetype)
+    { ctxData void* } ;         ! Audio context data, depends on type
+
+STRUCT: VrDeviceInfo
+    { hResolution int }               ! HMD horizontal resolution in pixels
+    { vResolution int }               ! HMD verticle resolution in pixels
+    { hScreenSize float }             ! HMD horizontal size in meters
+    { vScreenSize float }             ! HMD verticle size in meters
+    { vScreenCenter float }           ! HMD screen center in meters
+    { eyeToScreenDistance float }     ! HMD distance between eye and display in meters
+    { lensSeparationDistance float }  ! HMD lens separation distance in meters
+    { interpupillaryDistance float }  ! HMD IPD in meters
+    { lensDistortionValues float[4] } ! HMD lens distortion constant parameters
+    { chromaAbCorrection float[4] } ; ! HMD chromatic abberation correction parameters
 
+STRUCT: VrStereoConfig
+    { projection Matrix[2] }          ! VR projection matrices (per eye)
+    { viewOffset Matrix[2] }          ! VR view offset matrices (per eye)
+    { leftLensCenter float[2] }       ! VR left lens center
+    { rightLensCenter float[2] }      ! VR right lens center
+    { leftScreenCenter float[2] }     ! VR left screen center
+    { rightScreenCenter float[2] }    ! VR right screen center
+    { scale float[2] }                ! VR distortion scale
+    { scaleIn float[2] } ;            ! VR distortion scale in
+
+! Constants ----------------------------------------------------------------
 
 CONSTANT: LIGHTGRAY  S{ Color f 200  200  200  255  } ! Light Gray
 CONSTANT: GRAY       S{ Color f 130  130  130  255  } ! Gray
@@ -491,220 +706,6 @@ CONSTANT: BLANK      S{ Color f 0  0  0  0          } ! Blank (Transparent)
 CONSTANT: MAGENTA    S{ Color f 255  0  255  255    } ! Magenta
 CONSTANT: RAYWHITE   S{ Color f 245  245  245  255  } ! My own White (raylib logo)
 
-ENUM: MouseButton
-    MOUSE_BUTTON_LEFT        ! Mouse button left
-    MOUSE_BUTTON_RIGHT       ! Mouse button right
-    MOUSE_BUTTON_MIDDLE      ! Mouse button middle (pressed wheel)
-    MOUSE_BUTTON_SIDE        ! Mouse button side (advanced mouse device)
-    MOUSE_BUTTON_EXTRA       ! Mouse button extra (advanced mouse device)
-    MOUSE_BUTTON_FORWARD     ! Mouse button fordward (advanced mouse device)
-    MOUSE_BUTTON_BACK ;      ! Mouse button back (advanced mouse device)
-
-ENUM: MouseCursor
-    MOUSE_CURSOR_DEFAULT        ! Default pointer shape
-    MOUSE_CURSOR_ARROW          ! Arrow shape
-    MOUSE_CURSOR_IBEAM          ! Text writing cursor shape
-    MOUSE_CURSOR_CROSSHAIR      ! Cross shape
-    MOUSE_CURSOR_POINTING_HAND  ! Pointing hand cursor
-    MOUSE_CURSOR_RESIZE_EW      ! Horizontal resize/move arrow shape
-    MOUSE_CURSOR_RESIZE_NS      ! Vertical resize/move arrow shape
-    MOUSE_CURSOR_RESIZE_NWSE    ! Top-left to bottom-right diagonal resize/move arrow shape
-    MOUSE_CURSOR_RESIZE_NESW    ! The top-right to bottom-left diagonal resize/move arrow shape
-    MOUSE_CURSOR_RESIZE_ALL     ! The omni-directional resize/move cursor shape
-    MOUSE_CURSOR_NOT_ALLOWED ;  ! The operation-not-allowed shape
-
-ENUM: GamepadButton
-    GAMEPAD_BUTTON_UNKNOWN             ! Unknown button, just for error checking
-    GAMEPAD_BUTTON_LEFT_FACE_UP        ! Gamepad left DPAD up button
-    GAMEPAD_BUTTON_LEFT_FACE_RIGHT     ! Gamepad left DPAD right button
-    GAMEPAD_BUTTON_LEFT_FACE_DOWN      ! Gamepad left DPAD down button
-    GAMEPAD_BUTTON_LEFT_FACE_LEFT      ! Gamepad left DPAD left button
-    GAMEPAD_BUTTON_RIGHT_FACE_UP       ! Gamepad right button up (i.e. PS3: Triangle, Xbox: Y)
-    GAMEPAD_BUTTON_RIGHT_FACE_RIGHT    ! Gamepad right button right (i.e. PS3: Square, Xbox: X)
-    GAMEPAD_BUTTON_RIGHT_FACE_DOWN     ! Gamepad right button down (i.e. PS3: Cross, Xbox: A)
-    GAMEPAD_BUTTON_RIGHT_FACE_LEFT     ! Gamepad right button left (i.e. PS3: Circle, Xbox: B)
-    GAMEPAD_BUTTON_LEFT_TRIGGER_1      ! Gamepad top/back trigger left (first), it could be a trailing button
-    GAMEPAD_BUTTON_LEFT_TRIGGER_2      ! Gamepad top/back trigger left (second), it could be a trailing button
-    GAMEPAD_BUTTON_RIGHT_TRIGGER_1     ! Gamepad top/back trigger right (one), it could be a trailing button
-    GAMEPAD_BUTTON_RIGHT_TRIGGER_2     ! Gamepad top/back trigger right (second), it could be a trailing button
-    GAMEPAD_BUTTON_MIDDLE_LEFT         ! Gamepad center buttons, left one (i.e. PS3: Select)
-    GAMEPAD_BUTTON_MIDDLE              ! Gamepad center buttons, middle one (i.e. PS3: PS, Xbox: XBOX)
-    GAMEPAD_BUTTON_MIDDLE_RIGHT        ! Gamepad center buttons, right one (i.e. PS3: Start)
-    GAMEPAD_BUTTON_LEFT_THUMB          ! Gamepad joystick pressed button left
-    GAMEPAD_BUTTON_RIGHT_THUMB ;       ! Gamepad joystick pressed button right
-
-ENUM: GamepadAxis
-    GAMEPAD_AXIS_LEFT_X                ! Gamepad left stick X axis
-    GAMEPAD_AXIS_LEFT_Y                ! Gamepad left stick Y axis
-    GAMEPAD_AXIS_RIGHT_X               ! Gamepad right stick X axis
-    GAMEPAD_AXIS_RIGHT_Y               ! Gamepad right stick Y axis
-    GAMEPAD_AXIS_LEFT_TRIGGER          ! Gamepad back trigger left, pressure level: [1..-1]
-    GAMEPAD_AXIS_RIGHT_TRIGGER ;       ! Gamepad back trigger right, pressure level: [1..-1]
-
-ENUM: MaterialMapIndex
-    MATERIAL_MAP_ALBEDO            ! Albedo material (same as: MATERIAL_MAP_DIFFUSE)
-    MATERIAL_MAP_METALNESS         ! Metalness material (same as: MATERIAL_MAP_SPECULAR)
-    MATERIAL_MAP_NORMAL            ! Normal material
-    MATERIAL_MAP_ROUGHNESS         ! Roughness material
-    MATERIAL_MAP_OCCLUSION         ! Ambient occlusion material
-    MATERIAL_MAP_EMISSION          ! Emission material
-    MATERIAL_MAP_HEIGHT            ! Heightmap material
-    MATERIAL_MAP_CUBEMAP           ! Cubemap material (NOTE: Uses GL_TEXTURE_CUBE_MAP)
-    MATERIAL_MAP_IRRADIANCE        ! Irradiance material (NOTE: Uses GL_TEXTURE_CUBE_MAP)
-    MATERIAL_MAP_PREFILTER         ! Prefilter material (NOTE: Uses GL_TEXTURE_CUBE_MAP)
-    MATERIAL_MAP_BRDF ;            ! Brdf material
-
-ALIAS: MATERIAL_MAP_DIFFUSE MATERIAL_MAP_ALBEDO
-ALIAS: MATERIAL_MAP_SPECULAR MATERIAL_MAP_METALNESS
-
-ENUM: ShaderLocationIndex
-    SHADER_LOC_VERTEX_POSITION     ! Shader location: vertex attribute: position
-    SHADER_LOC_VERTEX_TEXCOORD01   ! Shader location: vertex attribute: texcoord01
-    SHADER_LOC_VERTEX_TEXCOORD02   ! Shader location: vertex attribute: texcoord02
-    SHADER_LOC_VERTEX_NORMAL       ! Shader location: vertex attribute: normal
-    SHADER_LOC_VERTEX_TANGENT      ! Shader location: vertex attribute: tangent
-    SHADER_LOC_VERTEX_COLOR        ! Shader location: vertex attribute: color
-    SHADER_LOC_MATRIX_MVP          ! Shader location: matrix uniform: model-view-projection
-    SHADER_LOC_MATRIX_VIEW         ! Shader location: matrix uniform: view (camera transform)
-    SHADER_LOC_MATRIX_PROJECTION   ! Shader location: matrix uniform: projection
-    SHADER_LOC_MATRIX_MODEL        ! Shader location: matrix uniform: model (transform)
-    SHADER_LOC_MATRIX_NORMAL       ! Shader location: matrix uniform: normal
-    SHADER_LOC_VECTOR_VIEW         ! Shader location: vector uniform: view
-    SHADER_LOC_COLOR_DIFFUSE       ! Shader location: vector uniform: diffuse color
-    SHADER_LOC_COLOR_SPECULAR      ! Shader location: vector uniform: specular color
-    SHADER_LOC_COLOR_AMBIENT       ! Shader location: vector uniform: ambient color
-    SHADER_LOC_MAP_ALBEDO          ! Shader location: sampler2d texture: albedo (same as: SHADER_LOC_MAP_DIFFUSE)
-    SHADER_LOC_MAP_METALNESS       ! Shader location: sampler2d texture: metalness (same as: SHADER_LOC_MAP_SPECULAR)
-    SHADER_LOC_MAP_NORMAL          ! Shader location: sampler2d texture: normal
-    SHADER_LOC_MAP_ROUGHNESS       ! Shader location: sampler2d texture: roughness
-    SHADER_LOC_MAP_OCCLUSION       ! Shader location: sampler2d texture: occlusion
-    SHADER_LOC_MAP_EMISSION        ! Shader location: sampler2d texture: emission
-    SHADER_LOC_MAP_HEIGHT          ! Shader location: sampler2d texture: height
-    SHADER_LOC_MAP_CUBEMAP         ! Shader location: samplerCube texture: cubemap
-    SHADER_LOC_MAP_IRRADIANCE      ! Shader location: samplerCube texture: irradiance
-    SHADER_LOC_MAP_PREFILTER       ! Shader location: samplerCube texture: prefilter
-    SHADER_LOC_MAP_BRDF ;          ! Shader location: sampler2d texture: brdf
-
-ENUM: ShaderUniformDataType
-    SHADER_UNIFORM_FLOAT           ! Shader uniform type: float
-    SHADER_UNIFORM_VEC2            ! Shader uniform type: vec2 (2 float)
-    SHADER_UNIFORM_VEC3            ! Shader uniform type: vec3 (3 float)
-    SHADER_UNIFORM_VEC4            ! Shader uniform type: vec4 (4 float)
-    SHADER_UNIFORM_INT             ! Shader uniform type: int
-    SHADER_UNIFORM_IVEC2           ! Shader uniform type: ivec2 (2 int)
-    SHADER_UNIFORM_IVEC3           ! Shader uniform type: ivec3 (3 int)
-    SHADER_UNIFORM_IVEC4           ! Shader uniform type: ivec4 (4 int)
-    SHADER_UNIFORM_SAMPLER2D ;     ! Shader uniform type: sampler2d
-
-ALIAS: SHADER_LOC_MAP_DIFFUSE SHADER_LOC_MAP_ALBEDO
-ALIAS: SHADER_LOC_MAP_SPECULAR SHADER_LOC_MAP_METALNESS
-
-ENUM: ShaderAttributeDataType
-    SHADER_ATTRIB_FLOAT            ! Shader attribute type: float
-    SHADER_ATTRIB_VEC2             ! Shader attribute type: vec2 (2 float)
-    SHADER_ATTRIB_VEC3             ! Shader attribute type: vec3 (3 float)
-    SHADER_ATTRIB_VEC4 ;           ! Shader attribute type: vec4 (4 float)
-
-! Pixel formats
-! NOTE: Support depends on OpenGL version and platform
-ENUM: PixelFormat
-    { PIXELFORMAT_UNCOMPRESSED_GRAYSCALE 1 } ! 8 bit per pixel (no alpha)
-    PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA      ! 8*2 bpp (2 channels)
-    PIXELFORMAT_UNCOMPRESSED_R5G6B5          ! 16 bpp
-    PIXELFORMAT_UNCOMPRESSED_R8G8B8          ! 24 bpp
-    PIXELFORMAT_UNCOMPRESSED_R5G5B5A1        ! 16 bpp (1 bit alpha)
-    PIXELFORMAT_UNCOMPRESSED_R4G4B4A4        ! 16 bpp (4 bit alpha)
-    PIXELFORMAT_UNCOMPRESSED_R8G8B8A8        ! 32 bpp
-    PIXELFORMAT_UNCOMPRESSED_R32             ! 32 bpp (1 channel - float)
-    PIXELFORMAT_UNCOMPRESSED_R32G32B32       ! 32*3 bpp (3 channels - float)
-    PIXELFORMAT_UNCOMPRESSED_R32G32B32A32    ! 32*4 bpp (4 channels - float)
-    PIXELFORMAT_COMPRESSED_DXT1_RGB          ! 4 bpp (no alpha)
-    PIXELFORMAT_COMPRESSED_DXT1_RGBA         ! 4 bpp (1 bit alpha)
-    PIXELFORMAT_COMPRESSED_DXT3_RGBA         ! 8 bpp
-    PIXELFORMAT_COMPRESSED_DXT5_RGBA         ! 8 bpp
-    PIXELFORMAT_COMPRESSED_ETC1_RGB          ! 4 bpp
-    PIXELFORMAT_COMPRESSED_ETC2_RGB          ! 4 bpp
-    PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA     ! 8 bpp
-    PIXELFORMAT_COMPRESSED_PVRT_RGB          ! 4 bpp
-    PIXELFORMAT_COMPRESSED_PVRT_RGBA         ! 4 bpp
-    PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA     ! 8 bpp
-    PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA ;   ! 2 bpp
-
-! Texture parameters: filter mode
-! NOTE 1: Filtering considers mipmaps if available in the texture
-! NOTE 2: Filter is accordingly set for minification and magnification
-ENUM: TextureFilterMode
-    TEXTURE_FILTER_POINT                   ! No filter just pixel aproximation
-    TEXTURE_FILTER_BILINEAR                ! Linear filtering
-    TEXTURE_FILTER_TRILINEAR               ! Trilinear filtering (linear with mipmaps)
-    TEXTURE_FILTER_ANISOTROPIC_4X          ! Anisotropic filtering 4x
-    TEXTURE_FILTER_ANISOTROPIC_8X          ! Anisotropic filtering 8x
-    TEXTURE_FILTER_ANISOTROPIC_16X ;       ! Anisotropic filtering 16x
-
-! Texture parameters: wrap mode
-ENUM: TextureWrapMode
-    TEXTURE_WRAP_REPEAT
-    TEXTURE_WRAP_CLAMP
-    TEXTURE_WRAP_MIRROR_REPEAT
-    TEXTURE_WRAP_MIRROR_CLAMP ;
-
-! Cubemap layouts
-ENUM: CubemapLayout
-    CUBEMAP_LAYOUT_AUTO_DETECT             ! Automatically detect layout type
-    CUBEMAP_LAYOUT_LINE_VERTICAL           ! Layout is defined by a vertical line with faces
-    CUBEMAP_LAYOUT_LINE_HORIZONTAL         ! Layout is defined by an horizontal line with faces
-    CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR     ! Layout is defined by a 3x4 cross with cubemap faces
-    CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE     ! Layout is defined by a 4x3 cross with cubemap faces
-    CUBEMAP_LAYOUT_PANORAMA ;              ! Layout is defined by a panorama image (equirectangular map)
-
-! Font type, defines generation method
-ENUM: FontType
-    FONT_DEFAULT               ! Default font generation, anti-aliased
-    FONT_BITMAP                ! Bitmap font generation, no anti-aliasing
-    FONT_SDF ;                 ! SDF font generation, requires external shader
-
-! Color blending modes (pre-defined)
-ENUM: BlendMode
-    BLEND_ALPHA                    ! Blend textures considering alpha (default)
-    BLEND_ADDITIVE                 ! Blend textures adding colors
-    BLEND_MULTIPLIED               ! Blend textures multiplying colors
-    BLEND_ADD_COLORS               ! Blend textures adding colors (alternative)
-    BLEND_SUBTRACT_COLORS          ! Blend textures subtracting colors (alternative)
-    BLEND_CUSTOM ;                 ! Belnd textures using custom src/dst factors (use rlSetBlendMode())
-
-! Gestures type
-! NOTE: IT could be used as flags to enable only some gestures
-ENUM: Gestures
-    { GESTURE_NONE          0 }
-    { GESTURE_TAP           1 }
-    { GESTURE_DOUBLETAP     2 }
-    { GESTURE_HOLD          4 }
-    { GESTURE_DRAG          8 }
-    { GESTURE_SWIPE_RIGHT   16 }
-    { GESTURE_SWIPE_LEFT    32 }
-    { GESTURE_SWIPE_UP      64 }
-    { GESTURE_SWIPE_DOWN    128 }
-    { GESTURE_PINCH_IN      256 }
-    { GESTURE_PINCH_OUT     512 } ;
-
-! Camera system modes
-ENUM: CameraMode
-    CAMERA_CUSTOM
-    CAMERA_FREE
-    CAMERA_ORBITAL
-    CAMERA_FIRST_PERSON
-    CAMERA_THIRD_PERSON ;
-
-! Camera projection
-ENUM: CameraProjection
-    CAMERA_PERSPECTIVE
-    CAMERA_ORTHOGRAPHIC ;
-
-ENUM: NPatchLayout
-    NPATCH_NINE_PATCH               ! Npatch layout: 3x3 tiles
-    NPATCH_THREE_PATCH_VERTICAL     ! Npatch layout: 1x3 tiles
-    NPATCH_THREE_PATCH_HORIZONTAL ; ! Npatch layout: 3x1 tiles
-
 ! Functions ---------------------------------------------------------------
 
 ! Window-related functions
@@ -753,7 +754,7 @@ FUNCTION-ALIAS: get-clipboard-text c-string GetClipboardText ( )
 ! Custom frame control functions
 ! NOTE: Those functions are intended for advance users that want full control over the frame processing
 ! By default EndDrawing() does this job: draws everything + SwapScreenBuffer() + manage frame timming + PollInputEvents()
-! To avoid that behaviour and control frame processes manually, enable in config.h: SUPPORT_CUSTOM_FRAME_CONTROL
+! To avoid that behavior and control frame processes manually, enable in config.h: SUPPORT_CUSTOM_FRAME_CONTROL
 FUNCTION-ALIAS: swap-screen-buffer void SwapScreenBuffer ( )                             ! Swap back buffer with front buffer (screen drawing)
 FUNCTION-ALIAS: poll-input-events void PollInputEvents ( )                               ! Register all input events
 FUNCTION-ALIAS: wait-time void WaitTime ( float ms )                                     ! Wait for some milliseconds (halt program execution)
@@ -778,7 +779,7 @@ FUNCTION-ALIAS: begin-texture-mode void BeginTextureMode ( RenderTexture2D targe
 FUNCTION-ALIAS: end-texture-mode void EndTextureMode ( )                                 ! Ends drawing to render texture
 FUNCTION-ALIAS: begin-shader-mode void BeginShaderMode ( Shader shader )                 ! Begin custom shader drawing
 FUNCTION-ALIAS: end-shader-mode void EndShaderMode ( )                                   ! End custom shader drawing (use default shader)
-FUNCTION-ALIAS: begin-blend-mode void BeginBlendMode ( int mode )                        ! Begin blending mode (alpha, additive, multiplied, subtract, custom)
+FUNCTION-ALIAS: begin-blend-mode void BeginBlendMode ( BlendMode mode )                  ! Begin blending mode (alpha, additive, multiplied, subtract, custom)
 FUNCTION-ALIAS: end-blend-mode void EndBlendMode ( )                                     ! End blending mode (reset to default: alpha blending)
 FUNCTION-ALIAS: begin-scissor-mode void BeginScissorMode ( int x, int y, int width, int height ) ! Begin scissor mode (define screen area for following drawing)
 FUNCTION-ALIAS: end-scissor-mode void EndScissorMode ( )                                 ! End scissor mode
@@ -795,8 +796,8 @@ FUNCTION-ALIAS: load-shader Shader LoadShader ( c-string vsFileName, c-string fs
 FUNCTION-ALIAS: load-shader-from-memory Shader LoadShaderFromMemory ( c-string vsCode, c-string fsCode )                         ! Load shader from code strings and bind default locations
 FUNCTION-ALIAS: get-shader-location int GetShaderLocation ( Shader shader, c-string uniformName )                                ! Get shader uniform location
 FUNCTION-ALIAS: get-shader-location-attrib int GetShaderLocationAttrib ( Shader shader, c-string attribName )                    ! Get shader attribute location
-FUNCTION-ALIAS: set-shader-value void SetShaderValue ( Shader shader, int locIndex, void* value, int uniformType )               ! Set shader uniform value
-FUNCTION-ALIAS: set-shader-value-v void SetShaderValueV ( Shader shader, int locIndex, void* value, int uniformType, int count ) ! Set shader uniform value vector
+FUNCTION-ALIAS: set-shader-value void SetShaderValue ( Shader shader, int locIndex, void* value, ShaderUniformDataType uniformType ) ! Set shader uniform value
+FUNCTION-ALIAS: set-shader-value-v void SetShaderValueV ( Shader shader, int locIndex, void* value, ShaderUniformDataType uniformType, int count ) ! Set shader uniform value vector
 FUNCTION-ALIAS: set-shader-value-matrix void SetShaderValueMatrix ( Shader shader, int locIndex, Matrix mat )                    ! Set shader uniform value (matrix 4x4)
 FUNCTION-ALIAS: set-shader-value-texture void SetShaderValueTexture ( Shader shader, int locIndex, Texture2D texture )           ! Set shader uniform value for texture (sampler2d)
 FUNCTION-ALIAS: unload-shader void UnloadShader ( Shader shader )                                                                ! Unload shader from GPU memory (VRAM)
@@ -861,10 +862,10 @@ FUNCTION-ALIAS: clear-dropped-files void ClearDroppedFiles ( )
 FUNCTION-ALIAS: get-file-mod-time long GetFileModTime ( c-string fileName )                           ! Get file modification time (last write time)
 
 ! Compression/Encoding functionality
-FUNCTION-ALIAS: compress-data uchar* CompressData ( uchar* data, int dataLength, int* compDataLength )          ! Compress data (DEFLATE algorithm)
-FUNCTION-ALIAS: decompress-data uchar* DecompressData ( uchar* compData, int compDataLength, int* dataLength )  ! Decompress data (DEFLATE algorithm)
-FUNCTION-ALIAS: encode-data-base-6-4 uchar* EncodeDataBase64 ( uchar* data, int dataLength, int* outputLength ) ! Encode data to Base64 string
-FUNCTION-ALIAS: decode-data-base-6-4 uchar* DecodeDataBase64 ( uchar* data, int* outputLength )                 ! Decode Base64 string data
+FUNCTION-ALIAS: compress-data uchar* CompressData ( uchar* data, int dataLength, int* compDataLength )         ! Compress data (DEFLATE algorithm)
+FUNCTION-ALIAS: decompress-data uchar* DecompressData ( uchar* compData, int compDataLength, int* dataLength ) ! Decompress data (DEFLATE algorithm)
+FUNCTION-ALIAS: encode-data-base64 uchar* EncodeDataBase64 ( uchar* data, int dataLength, int* outputLength )  ! Encode data to Base64 string
+FUNCTION-ALIAS: decode-data-base64 uchar* DecodeDataBase64 ( uchar* data, int* outputLength )                  ! Decode Base64 string data
 
 ! Persistent storage management
 FUNCTION-ALIAS: save-storage-value bool SaveStorageValue ( uint position, int value )    ! Save integer value to storage file (to defined position), returns true on success
@@ -877,40 +878,40 @@ FUNCTION-ALIAS: open-url void OpenURL ( c-string url )
 ! ------------------------------------------------------------------------------------
 
 ! Input-related functions: keyboard
-FUNCTION-ALIAS: is-key-pressed bool IsKeyPressed ( int key )                             ! Check if a key has been pressed once
-FUNCTION-ALIAS: is-key-down bool IsKeyDown ( int key )                                   ! Check if a key is being pressed
-FUNCTION-ALIAS: is-key-released bool IsKeyReleased ( int key )                           ! Check if a key has been released once
-FUNCTION-ALIAS: is-key-up bool IsKeyUp ( int key )                                       ! Check if a key is NOT being pressed
-FUNCTION-ALIAS: set-exit-key void SetExitKey ( int key )                                 ! Set a custom key to exit program (default is ESC)
-FUNCTION-ALIAS: get-key-pressed int GetKeyPressed ( )                                    ! Get key pressed (keycode), call it multiple times for keys queued, returns 0 when the queue is empty
+FUNCTION-ALIAS: is-key-pressed bool IsKeyPressed ( KeyboardKey key )                     ! Check if a key has been pressed once
+FUNCTION-ALIAS: is-key-down bool IsKeyDown ( KeyboardKey key )                           ! Check if a key is being pressed
+FUNCTION-ALIAS: is-key-released bool IsKeyReleased ( KeyboardKey key )                   ! Check if a key has been released once
+FUNCTION-ALIAS: is-key-up bool IsKeyUp ( KeyboardKey key )                               ! Check if a key is NOT being pressed
+FUNCTION-ALIAS: set-exit-key void SetExitKey ( KeyboardKey key )                         ! Set a custom key to exit program (default is ESC)
+FUNCTION-ALIAS: get-key-pressed KeyboardKey GetKeyPressed ( )                            ! Get key pressed (keycode), call it multiple times for keys queued, returns 0 when the queue is empty
 FUNCTION-ALIAS: get-char-pressed int GetCharPressed ( )                                  ! Get char pressed (unicode), call it multiple times for chars queued, returns 0 when the queue is empty
 
 ! Input-related functions: gamepads
-FUNCTION-ALIAS: is-gamepad-available bool IsGamepadAvailable ( int gamepad )                        ! Check if a gamepad is available
-FUNCTION-ALIAS: get-gamepad-name c-string GetGamepadName ( int gamepad )                            ! Get gamepad internal name id
-FUNCTION-ALIAS: is-gamepad-button-pressed bool IsGamepadButtonPressed ( int gamepad, int button )   ! Check if a gamepad button has been pressed once
-FUNCTION-ALIAS: is-gamepad-button-down bool IsGamepadButtonDown ( int gamepad, int button )         ! Check if a gamepad button is being pressed
-FUNCTION-ALIAS: is-gamepad-button-released bool IsGamepadButtonReleased ( int gamepad, int button ) ! Check if a gamepad button has been released once
-FUNCTION-ALIAS: is-gamepad-button-up bool IsGamepadButtonUp ( int gamepad, int button )             ! Check if a gamepad button is NOT being pressed
-FUNCTION-ALIAS: get-gamepad-button-pressed int GetGamepadButtonPressed ( )                          ! Get the last gamepad button pressed
-FUNCTION-ALIAS: get-gamepad-axis-count int GetGamepadAxisCount ( int gamepad )                      ! Get gamepad axis count for a gamepad
-FUNCTION-ALIAS: get-gamepad-axis-movement float GetGamepadAxisMovement ( int gamepad, int axis )    ! Get axis movement value for a gamepad axis
-FUNCTION-ALIAS: set-gamepad-mappings int SetGamepadMappings ( c-string mappings )                   ! Set internal gamepad mappings (SDL_GameControllerDB)
+FUNCTION-ALIAS: is-gamepad-available bool IsGamepadAvailable ( int gamepad )                                  ! Check if a gamepad is available
+FUNCTION-ALIAS: get-gamepad-name c-string GetGamepadName ( int gamepad )                                      ! Get gamepad internal name id
+FUNCTION-ALIAS: is-gamepad-button-pressed bool IsGamepadButtonPressed ( int gamepad, GamepadButton button )   ! Check if a gamepad button has been pressed once
+FUNCTION-ALIAS: is-gamepad-button-down bool IsGamepadButtonDown ( int gamepad, GamepadButton button )         ! Check if a gamepad button is being pressed
+FUNCTION-ALIAS: is-gamepad-button-released bool IsGamepadButtonReleased ( int gamepad, GamepadButton button ) ! Check if a gamepad button has been released once
+FUNCTION-ALIAS: is-gamepad-button-up bool IsGamepadButtonUp ( int gamepad, GamepadButton button )             ! Check if a gamepad button is NOT being pressed
+FUNCTION-ALIAS: get-gamepad-button-pressed int GetGamepadButtonPressed ( )                                    ! Get the last gamepad button pressed
+FUNCTION-ALIAS: get-gamepad-axis-count int GetGamepadAxisCount ( int gamepad )                                ! Get gamepad axis count for a gamepad
+FUNCTION-ALIAS: get-gamepad-axis-movement float GetGamepadAxisMovement ( int gamepad, GamepadAxis axis )      ! Get axis movement value for a gamepad axis
+FUNCTION-ALIAS: set-gamepad-mappings int SetGamepadMappings ( c-string mappings )                             ! Set internal gamepad mappings (SDL_GameControllerDB)
 
 ! Input-related functions: mouse
-FUNCTION-ALIAS: is-mouse-button-pressed bool IsMouseButtonPressed ( int button )         ! Check if a mouse button has been pressed once
-FUNCTION-ALIAS: is-mouse-button-down bool IsMouseButtonDown ( int button )               ! Check if a mouse button is being pressed
-FUNCTION-ALIAS: is-mouse-button-released bool IsMouseButtonReleased ( int button )       ! Check if a mouse button has been released once
-FUNCTION-ALIAS: is-mouse-button-up bool IsMouseButtonUp ( int button )                   ! Check if a mouse button is NOT being pressed
-FUNCTION-ALIAS: get-mouse-x int GetMouseX ( )                                            ! Get mouse position X
-FUNCTION-ALIAS: get-mouse-y int GetMouseY ( )                                            ! Get mouse position Y
-FUNCTION-ALIAS: get-mouse-position Vector2 GetMousePosition ( )                          ! Get mouse position XY
-FUNCTION-ALIAS: get-mouse-delta Vector2 GetMouseDelta ( )                                ! Get mouse delta between frames
-FUNCTION-ALIAS: set-mouse-position void SetMousePosition ( int x, int y )                ! Set mouse position XY
-FUNCTION-ALIAS: set-mouse-offset void SetMouseOffset ( int offsetX, int offsetY )        ! Set mouse offset
-FUNCTION-ALIAS: set-mouse-scale void SetMouseScale ( float scaleX, float scaleY )        ! Set mouse scaling
-FUNCTION-ALIAS: get-mouse-wheel-move float GetMouseWheelMove ( )                         ! Get mouse wheel movement Y
-FUNCTION-ALIAS: set-mouse-cursor void SetMouseCursor ( int cursor )                      ! Set mouse cursor
+FUNCTION-ALIAS: is-mouse-button-pressed bool IsMouseButtonPressed ( MouseButton button )   ! Check if a mouse button has been pressed once
+FUNCTION-ALIAS: is-mouse-button-down bool IsMouseButtonDown ( MouseButton button )         ! Check if a mouse button is being pressed
+FUNCTION-ALIAS: is-mouse-button-released bool IsMouseButtonReleased ( MouseButton button ) ! Check if a mouse button has been released once
+FUNCTION-ALIAS: is-mouse-button-up bool IsMouseButtonUp ( MouseButton button )             ! Check if a mouse button is NOT being pressed
+FUNCTION-ALIAS: get-mouse-x int GetMouseX ( )                                              ! Get mouse position X
+FUNCTION-ALIAS: get-mouse-y int GetMouseY ( )                                              ! Get mouse position Y
+FUNCTION-ALIAS: get-mouse-position Vector2 GetMousePosition ( )                            ! Get mouse position XY
+FUNCTION-ALIAS: get-mouse-delta Vector2 GetMouseDelta ( )                                  ! Get mouse delta between frames
+FUNCTION-ALIAS: set-mouse-position void SetMousePosition ( int x, int y )                  ! Set mouse position XY
+FUNCTION-ALIAS: set-mouse-offset void SetMouseOffset ( int offsetX, int offsetY )          ! Set mouse offset
+FUNCTION-ALIAS: set-mouse-scale void SetMouseScale ( float scaleX, float scaleY )          ! Set mouse scaling
+FUNCTION-ALIAS: get-mouse-wheel-move float GetMouseWheelMove ( )                           ! Get mouse wheel movement Y
+FUNCTION-ALIAS: set-mouse-cursor void SetMouseCursor ( MouseCursor cursor )                ! Set mouse cursor
 
 ! Input-related functions: touch
 FUNCTION-ALIAS: get-touch-x int GetTouchX ( )                                            ! Get touch position X for touch point 0 (relative to screen size)
@@ -923,7 +924,7 @@ FUNCTION-ALIAS: get-touch-point-count int GetTouchPointCount ( )
 ! Gestures and Touch Handling Functions (Module: rgestures)
 ! ------------------------------------------------------------------------------------
 FUNCTION-ALIAS: set-gestures-enabled void SetGesturesEnabled ( uint flags )              ! Enable a set of gestures using flags
-FUNCTION-ALIAS: is-gesture-detected bool IsGestureDetected ( int gesture )               ! Check if a gesture have been detected
+FUNCTION-ALIAS: is-gesture-detected bool IsGestureDetected ( Gestures gesture )          ! Check if a gesture have been detected
 FUNCTION-ALIAS: get-gesture-detected int GetGestureDetected ( )                          ! Get latest detected gesture
 FUNCTION-ALIAS: get-gesture-hold-duration float GetGestureHoldDuration ( )               ! Get gesture hold time in milliseconds
 FUNCTION-ALIAS: get-gesture-drag-vector Vector2 GetGestureDragVector ( )                 ! Get gesture drag vector
@@ -934,7 +935,7 @@ FUNCTION-ALIAS: get-gesture-pinch-angle float GetGesturePinchAngle ( )
 ! ------------------------------------------------------------------------------------
 ! Camera System Functions (Module: rcamera)
 ! ------------------------------------------------------------------------------------
-FUNCTION-ALIAS: set-camera-mode void SetCameraMode ( Camera camera, int mode )           ! Set camera mode (multiple camera modes available)
+FUNCTION-ALIAS: set-camera-mode void SetCameraMode ( Camera camera, CameraMode mode )    ! Set camera mode (multiple camera modes available)
 FUNCTION-ALIAS: update-camera void UpdateCamera ( Camera* camera )                       ! Update camera position for selected mode
 
 FUNCTION-ALIAS: set-camera-pan-control void SetCameraPanControl ( int keyPan )           ! Set camera pan key to combine with mouse movement (free camera)
@@ -1079,7 +1080,7 @@ FUNCTION-ALIAS: image-draw-text-ex void ImageDrawTextEx ( Image* dst, Font font,
 ! NOTE: These functions require GPU access
 FUNCTION-ALIAS: load-texture Texture2D LoadTexture ( c-string fileName )                                                         ! Load texture from file into GPU memory (VRAM)
 FUNCTION-ALIAS: load-texture-from-image Texture2D LoadTextureFromImage ( Image image )                                           ! Load texture from image data
-FUNCTION-ALIAS: load-texture-cubemap TextureCubemap LoadTextureCubemap ( Image image, int layout )                               ! Load cubemap from image, multiple image cubemap layouts supported
+FUNCTION-ALIAS: load-texture-cubemap TextureCubemap LoadTextureCubemap ( Image image, CubemapLayout layout )                     ! Load cubemap from image, multiple image cubemap layouts supported
 FUNCTION-ALIAS: load-render-texture RenderTexture2D LoadRenderTexture ( int width, int height )                                  ! Load texture for rendering (framebuffer)
 FUNCTION-ALIAS: unload-texture void UnloadTexture ( Texture2D texture )                                                          ! Unload texture from GPU memory (VRAM)
 FUNCTION-ALIAS: unload-render-texture void UnloadRenderTexture ( RenderTexture2D target )                                        ! Unload render texture from GPU memory (VRAM)
@@ -1088,8 +1089,8 @@ FUNCTION-ALIAS: update-texture-rec void UpdateTextureRec ( Texture2D texture, Re
 
 ! Texture configuration functions
 FUNCTION-ALIAS: gen-texture-mipmaps void GenTextureMipmaps ( Texture2D* texture )                                                ! Generate GPU mipmaps for a texture
-FUNCTION-ALIAS: set-texture-filter void SetTextureFilter ( Texture2D texture, int filter )                                       ! Set texture scaling filter mode
-FUNCTION-ALIAS: set-texture-wrap void SetTextureWrap ( Texture2D texture, int wrap )                                             ! Set texture wrapping mode
+FUNCTION-ALIAS: set-texture-filter void SetTextureFilter ( Texture2D texture, TextureFilterMode filter )                         ! Set texture scaling filter mode
+FUNCTION-ALIAS: set-texture-wrap void SetTextureWrap ( Texture2D texture, TextureWrapMode wrap )                                 ! Set texture wrapping mode
 
 ! Texture drawing functions
 FUNCTION-ALIAS: draw-texture void DrawTexture ( Texture2D texture, int posX, int posY, Color tint )                              ! Draw a Texture2D
@@ -1112,9 +1113,9 @@ FUNCTION-ALIAS: color-from-hsv Color ColorFromHSV ( float hue, float saturation,
 FUNCTION-ALIAS: color-alpha Color ColorAlpha ( Color color, float alpha )                      ! Get color with alpha applied, alpha goes from 0.0f to 1.0f
 FUNCTION-ALIAS: color-alpha-blend Color ColorAlphaBlend ( Color dst, Color src, Color tint )   ! Get src alpha-blended into dst color with tint
 FUNCTION-ALIAS: get-color Color GetColor ( uint hexValue )                                     ! Get Color structure from hexadecimal value
-FUNCTION-ALIAS: get-pixel-color Color GetPixelColor ( void* srcPtr, int format )               ! Get Color from a source pixel pointer of certain format
-FUNCTION-ALIAS: set-pixel-color void SetPixelColor ( void* dstPtr, Color color, int format )   ! Set color formatted into destination pixel pointer
-FUNCTION-ALIAS: get-pixel-data-size int GetPixelDataSize ( int width, int height, int format ) ! Get pixel data size in bytes for certain format
+FUNCTION-ALIAS: get-pixel-color Color GetPixelColor ( void* srcPtr, PixelFormat format )               ! Get Color from a source pixel pointer of certain format
+FUNCTION-ALIAS: set-pixel-color void SetPixelColor ( void* dstPtr, Color color, PixelFormat format )   ! Set color formatted into destination pixel pointer
+FUNCTION-ALIAS: get-pixel-data-size int GetPixelDataSize ( int width, int height, PixelFormat format ) ! Get pixel data size in bytes for certain format
 
 ! ------------------------------------------------------------------------------------
 ! Font Loading and Text Drawing Functions (Module: text)
@@ -1126,7 +1127,7 @@ FUNCTION-ALIAS: load-font Font LoadFont ( c-string fileName )
 FUNCTION-ALIAS: load-font-ex Font LoadFontEx ( c-string fileName, int fontSize, int* fontChars, int glyphCount )     ! Load font from file with extended parameters, use NULL for fontChars and 0 for glyphCount to load the default character set
 FUNCTION-ALIAS: load-font-from-image Font LoadFontFromImage ( Image image, Color key, int firstChar )                ! Load font from Image (XNA style)
 FUNCTION-ALIAS: load-font-from-memory Font LoadFontFromMemory ( c-string fileType, c-string fileData, int dataSize, int fontSize, int* fontChars, int glyphCount )  ! Load font from memory buffer, fileType refers to extension: i.e. '.ttf'
-FUNCTION-ALIAS: load-font-data GlyphInfo* LoadFontData ( c-string  fileData, int dataSize, int fontSize, int* fontChars, int glyphCount, int type )  ! Load font data for further use
+FUNCTION-ALIAS: load-font-data GlyphInfo* LoadFontData ( c-string  fileData, int dataSize, int fontSize, int* fontChars, int glyphCount, FontType type )  ! Load font data for further use
 FUNCTION-ALIAS: gen-image-font-atlas Image GenImageFontAtlas ( GlyphInfo* chars, Rectangle** recs, int glyphCount, int fontSize, int padding, int packMethod )  ! Generate image font atlas using chars info
 FUNCTION-ALIAS: unload-font-data void UnloadFontData ( GlyphInfo* chars, int glyphCount )                            ! Unload font chars info data (RAM)
 FUNCTION-ALIAS: unload-font void UnloadFont ( Font font )                                                            ! Unload Font from GPU memory (VRAM)