2
0
Эх сурвалжийг харах

Replaced #defines by enums

Ray 6 жил өмнө
parent
commit
5086c60e2f
1 өөрчлөгдсөн 240 нэмэгдсэн , 227 устгасан
  1. 240 227
      src/raylib.h

+ 240 - 227
src/raylib.h

@@ -91,223 +91,11 @@
 #define DEG2RAD (PI/180.0f)
 #define RAD2DEG (180.0f/PI)
 
-// raylib Config Flags
-#define FLAG_SHOW_LOGO              1       // Set to show raylib logo at startup
-#define FLAG_FULLSCREEN_MODE        2       // Set to run program in fullscreen
-#define FLAG_WINDOW_RESIZABLE       4       // Set to allow resizable window
-#define FLAG_WINDOW_UNDECORATED     8       // Set to disable window decoration (frame and buttons)
-#define FLAG_WINDOW_TRANSPARENT    16       // Set to allow transparent window
-#define FLAG_MSAA_4X_HINT          32       // Set to try enabling MSAA 4X
-#define FLAG_VSYNC_HINT            64       // Set to try enabling V-Sync on GPU
-
-// Keyboard Function Keys
-#define KEY_SPACE            32
-#define KEY_ESCAPE          256
-#define KEY_ENTER           257
-#define KEY_TAB             258
-#define KEY_BACKSPACE       259
-#define KEY_INSERT          260
-#define KEY_DELETE          261
-#define KEY_RIGHT           262
-#define KEY_LEFT            263
-#define KEY_DOWN            264
-#define KEY_UP              265
-#define KEY_PAGE_UP         266
-#define KEY_PAGE_DOWN       267
-#define KEY_HOME            268
-#define KEY_END             269
-#define KEY_CAPS_LOCK       280
-#define KEY_SCROLL_LOCK     281
-#define KEY_NUM_LOCK        282
-#define KEY_PRINT_SCREEN    283
-#define KEY_PAUSE           284
-#define KEY_F1              290
-#define KEY_F2              291
-#define KEY_F3              292
-#define KEY_F4              293
-#define KEY_F5              294
-#define KEY_F6              295
-#define KEY_F7              296
-#define KEY_F8              297
-#define KEY_F9              298
-#define KEY_F10             299
-#define KEY_F11             300
-#define KEY_F12             301
-#define KEY_LEFT_SHIFT      340
-#define KEY_LEFT_CONTROL    341
-#define KEY_LEFT_ALT        342
-#define KEY_LEFT_SUPER      343
-#define KEY_RIGHT_SHIFT     344
-#define KEY_RIGHT_CONTROL   345
-#define KEY_RIGHT_ALT       346
-#define KEY_RIGHT_SUPER     347
-#define KEY_KB_MENU         348
-#define KEY_LEFT_BRACKET     91
-#define KEY_BACKSLASH        92
-#define KEY_RIGHT_BRACKET    93
-#define KEY_GRAVE            96
-
-// Keyboard Number Pad Keys
-#define KEY_KP_0            320
-#define KEY_KP_1            321
-#define KEY_KP_2            322
-#define KEY_KP_3            323
-#define KEY_KP_4            324
-#define KEY_KP_5            325
-#define KEY_KP_6            326
-#define KEY_KP_7            327
-#define KEY_KP_8            328
-#define KEY_KP_9            329
-#define KEY_KP_DECIMAL      330
-#define KEY_KP_DIVIDE       331
-#define KEY_KP_MULTIPLY     332
-#define KEY_KP_SUBTRACT     333
-#define KEY_KP_ADD          334
-#define KEY_KP_ENTER        335
-#define KEY_KP_EQUAL        336
-
-// Keyboard Alpha Numeric Keys
-#define KEY_APOSTROPHE       39
-#define KEY_COMMA            44
-#define KEY_MINUS            45
-#define KEY_PERIOD           46
-#define KEY_SLASH            47
-#define KEY_ZERO             48
-#define KEY_ONE              49
-#define KEY_TWO              50
-#define KEY_THREE            51
-#define KEY_FOUR             52
-#define KEY_FIVE             53
-#define KEY_SIX              54
-#define KEY_SEVEN            55
-#define KEY_EIGHT            56
-#define KEY_NINE             57
-#define KEY_SEMICOLON        59
-#define KEY_EQUAL            61
-#define KEY_A                65
-#define KEY_B                66
-#define KEY_C                67
-#define KEY_D                68
-#define KEY_E                69
-#define KEY_F                70
-#define KEY_G                71
-#define KEY_H                72
-#define KEY_I                73
-#define KEY_J                74
-#define KEY_K                75
-#define KEY_L                76
-#define KEY_M                77
-#define KEY_N                78
-#define KEY_O                79
-#define KEY_P                80
-#define KEY_Q                81
-#define KEY_R                82
-#define KEY_S                83
-#define KEY_T                84
-#define KEY_U                85
-#define KEY_V                86
-#define KEY_W                87
-#define KEY_X                88
-#define KEY_Y                89
-#define KEY_Z                90
-
-// Android Physical Buttons
-#define KEY_BACK              4
-#define KEY_MENU             82
-#define KEY_VOLUME_UP        24
-#define KEY_VOLUME_DOWN      25
-
-// Mouse Buttons
-#define MOUSE_LEFT_BUTTON     0
-#define MOUSE_RIGHT_BUTTON    1
-#define MOUSE_MIDDLE_BUTTON   2
-
-// Touch points registered
-#define MAX_TOUCH_POINTS      10
-
-// Gamepad Number
-#define GAMEPAD_PLAYER1       0
-#define GAMEPAD_PLAYER2       1
-#define GAMEPAD_PLAYER3       2
-#define GAMEPAD_PLAYER4       3
-
-// Gamepad Buttons/Axis
+#define MAX_TOUCH_POINTS        10      // Maximum number of touch points supported
 
-// PS3 USB Controller Buttons
-#define GAMEPAD_PS3_BUTTON_TRIANGLE 0
-#define GAMEPAD_PS3_BUTTON_CIRCLE   1
-#define GAMEPAD_PS3_BUTTON_CROSS    2
-#define GAMEPAD_PS3_BUTTON_SQUARE   3
-#define GAMEPAD_PS3_BUTTON_L1       6
-#define GAMEPAD_PS3_BUTTON_R1       7
-#define GAMEPAD_PS3_BUTTON_L2       4
-#define GAMEPAD_PS3_BUTTON_R2       5
-#define GAMEPAD_PS3_BUTTON_START    8
-#define GAMEPAD_PS3_BUTTON_SELECT   9
-#define GAMEPAD_PS3_BUTTON_UP      24
-#define GAMEPAD_PS3_BUTTON_RIGHT   25
-#define GAMEPAD_PS3_BUTTON_DOWN    26
-#define GAMEPAD_PS3_BUTTON_LEFT    27
-#define GAMEPAD_PS3_BUTTON_PS      12
-
-// PS3 USB Controller Axis
-#define GAMEPAD_PS3_AXIS_LEFT_X     0
-#define GAMEPAD_PS3_AXIS_LEFT_Y     1
-#define GAMEPAD_PS3_AXIS_RIGHT_X    2
-#define GAMEPAD_PS3_AXIS_RIGHT_Y    5
-#define GAMEPAD_PS3_AXIS_L2         3       // [1..-1] (pressure-level)
-#define GAMEPAD_PS3_AXIS_R2         4       // [1..-1] (pressure-level)
-
-// Xbox360 USB Controller Buttons
-#define GAMEPAD_XBOX_BUTTON_A       0
-#define GAMEPAD_XBOX_BUTTON_B       1
-#define GAMEPAD_XBOX_BUTTON_X       2
-#define GAMEPAD_XBOX_BUTTON_Y       3
-#define GAMEPAD_XBOX_BUTTON_LB      4
-#define GAMEPAD_XBOX_BUTTON_RB      5
-#define GAMEPAD_XBOX_BUTTON_SELECT  6
-#define GAMEPAD_XBOX_BUTTON_START   7
-#define GAMEPAD_XBOX_BUTTON_UP      10
-#define GAMEPAD_XBOX_BUTTON_RIGHT   11
-#define GAMEPAD_XBOX_BUTTON_DOWN    12
-#define GAMEPAD_XBOX_BUTTON_LEFT    13
-#define GAMEPAD_XBOX_BUTTON_HOME    8
-
-// Android Gamepad Controller (SNES CLASSIC)
-#define GAMEPAD_ANDROID_DPAD_UP        19
-#define GAMEPAD_ANDROID_DPAD_DOWN      20
-#define GAMEPAD_ANDROID_DPAD_LEFT      21
-#define GAMEPAD_ANDROID_DPAD_RIGHT     22
-#define GAMEPAD_ANDROID_DPAD_CENTER    23
-
-#define GAMEPAD_ANDROID_BUTTON_A       96
-#define GAMEPAD_ANDROID_BUTTON_B       97
-#define GAMEPAD_ANDROID_BUTTON_C       98
-#define GAMEPAD_ANDROID_BUTTON_X       99
-#define GAMEPAD_ANDROID_BUTTON_Y       100
-#define GAMEPAD_ANDROID_BUTTON_Z       101
-#define GAMEPAD_ANDROID_BUTTON_L1      102
-#define GAMEPAD_ANDROID_BUTTON_R1      103
-#define GAMEPAD_ANDROID_BUTTON_L2      104
-#define GAMEPAD_ANDROID_BUTTON_R2      105
-
-// Xbox360 USB Controller Axis
-// NOTE: For Raspberry Pi, axis must be reconfigured
-#if defined(PLATFORM_RPI)
-    #define GAMEPAD_XBOX_AXIS_LEFT_X    0   // [-1..1] (left->right)
-    #define GAMEPAD_XBOX_AXIS_LEFT_Y    1   // [-1..1] (up->down)
-    #define GAMEPAD_XBOX_AXIS_RIGHT_X   3   // [-1..1] (left->right)
-    #define GAMEPAD_XBOX_AXIS_RIGHT_Y   4   // [-1..1] (up->down)
-    #define GAMEPAD_XBOX_AXIS_LT        2   // [-1..1] (pressure-level)
-    #define GAMEPAD_XBOX_AXIS_RT        5   // [-1..1] (pressure-level)
-#else
-    #define GAMEPAD_XBOX_AXIS_LEFT_X    0   // [-1..1] (left->right)
-    #define GAMEPAD_XBOX_AXIS_LEFT_Y    1   // [1..-1] (up->down)
-    #define GAMEPAD_XBOX_AXIS_RIGHT_X   2   // [-1..1] (left->right)
-    #define GAMEPAD_XBOX_AXIS_RIGHT_Y   3   // [1..-1] (up->down)
-    #define GAMEPAD_XBOX_AXIS_LT        4   // [-1..1] (pressure-level)
-    #define GAMEPAD_XBOX_AXIS_RT        5   // [-1..1] (pressure-level)
-#endif
+// Shader and material limits
+#define MAX_SHADER_LOCATIONS    32      // Maximum number of predefined locations stored in shader struct
+#define MAX_MATERIAL_MAPS       12      // Maximum number of texture maps stored in shader struct
 
 // NOTE: MSC C++ compiler does not support compound literals (C99 feature)
 // Plain structures in C++ (without constructors) can be initialized from { } initializers.
@@ -347,10 +135,6 @@
 #define MAGENTA    CLITERAL{ 255, 0, 255, 255 }     // Magenta
 #define RAYWHITE   CLITERAL{ 245, 245, 245, 255 }   // My own White (raylib logo)
 
-// Shader and material limits
-#define MAX_SHADER_LOCATIONS        32      // Maximum number of predefined locations stored in shader struct
-#define MAX_MATERIAL_MAPS           12      // Maximum number of texture maps stored in shader struct
-
 //----------------------------------------------------------------------------------
 // Structures Definition
 //----------------------------------------------------------------------------------
@@ -617,14 +401,243 @@ typedef struct VrDeviceInfo {
 //----------------------------------------------------------------------------------
 // Enumerators Definition
 //----------------------------------------------------------------------------------
+
+// System config flags
+// NOTE: Used for bit masks
+typedef enum {
+    FLAG_SHOW_LOGO          = 1,       // Set to show raylib logo at startup
+    FLAG_FULLSCREEN_MODE    = 2,       // Set to run program in fullscreen
+    FLAG_WINDOW_RESIZABLE   = 4,       // Set to allow resizable window
+    FLAG_WINDOW_UNDECORATED = 8,       // Set to disable window decoration (frame and buttons)
+    FLAG_WINDOW_TRANSPARENT = 16,      // Set to allow transparent window
+    FLAG_MSAA_4X_HINT       = 32,      // Set to try enabling MSAA 4X
+    FLAG_VSYNC_HINT         = 64       // Set to try enabling V-Sync on GPU
+} ConfigFlag;
+
 // Trace log type
+// NOTE: Used for bit masks
+typedef enum {
+    LOG_INFO            = 1,
+    LOG_WARNING         = 2,
+    LOG_ERROR           = 4,
+    LOG_DEBUG           = 8,
+    LOG_OTHER           = 16
+} TraceLogType;
+
+// Keyboard keys
+typedef enum {
+    // Alphanumeric keys
+    KEY_APOSTROPHE      = 39,
+    KEY_COMMA           = 44,
+    KEY_MINUS           = 45,
+    KEY_PERIOD          = 46,
+    KEY_SLASH           = 47,
+    KEY_ZERO            = 48,
+    KEY_ONE             = 49,
+    KEY_TWO             = 50,
+    KEY_THREE           = 51,
+    KEY_FOUR            = 52,
+    KEY_FIVE            = 53,
+    KEY_SIX             = 54,
+    KEY_SEVEN           = 55,
+    KEY_EIGHT           = 56,
+    KEY_NINE            = 57,
+    KEY_SEMICOLON       = 59,
+    KEY_EQUAL           = 61,
+    KEY_A               = 65,
+    KEY_B               = 66,
+    KEY_C               = 67,
+    KEY_D               = 68,
+    KEY_E               = 69,
+    KEY_F               = 70,
+    KEY_G               = 71,
+    KEY_H               = 72,
+    KEY_I               = 73,
+    KEY_J               = 74,
+    KEY_K               = 75,
+    KEY_L               = 76,
+    KEY_M               = 77,
+    KEY_N               = 78,
+    KEY_O               = 79,
+    KEY_P               = 80,
+    KEY_Q               = 81,
+    KEY_R               = 82,
+    KEY_S               = 83,
+    KEY_T               = 84,
+    KEY_U               = 85,
+    KEY_V               = 86,
+    KEY_W               = 87,
+    KEY_X               = 88,
+    KEY_Y               = 89,
+    KEY_Z               = 90,
+    
+    // Function keys
+    KEY_SPACE           = 32,
+    KEY_ESCAPE          = 256,
+    KEY_ENTER           = 257,
+    KEY_TAB             = 258,
+    KEY_BACKSPACE       = 259,
+    KEY_INSERT          = 260,
+    KEY_DELETE          = 261,
+    KEY_RIGHT           = 262,
+    KEY_LEFT            = 263,
+    KEY_DOWN            = 264,
+    KEY_UP              = 265,
+    KEY_PAGE_UP         = 266,
+    KEY_PAGE_DOWN       = 267,
+    KEY_HOME            = 268,
+    KEY_END             = 269,
+    KEY_CAPS_LOCK       = 280,
+    KEY_SCROLL_LOCK     = 281,
+    KEY_NUM_LOCK        = 282,
+    KEY_PRINT_SCREEN    = 283,
+    KEY_PAUSE           = 284,
+    KEY_F1              = 290,
+    KEY_F2              = 291,
+    KEY_F3              = 292,
+    KEY_F4              = 293,
+    KEY_F5              = 294,
+    KEY_F6              = 295,
+    KEY_F7              = 296,
+    KEY_F8              = 297,
+    KEY_F9              = 298,
+    KEY_F10             = 299,
+    KEY_F11             = 300,
+    KEY_F12             = 301,
+    KEY_LEFT_SHIFT      = 340,
+    KEY_LEFT_CONTROL    = 341,
+    KEY_LEFT_ALT        = 342,
+    KEY_LEFT_SUPER      = 343,
+    KEY_RIGHT_SHIFT     = 344,
+    KEY_RIGHT_CONTROL   = 345,
+    KEY_RIGHT_ALT       = 346,
+    KEY_RIGHT_SUPER     = 347,
+    KEY_KB_MENU         = 348,
+    KEY_LEFT_BRACKET    = 91,
+    KEY_BACKSLASH       = 92,
+    KEY_RIGHT_BRACKET   = 93,
+    KEY_GRAVE           = 96,
+    
+    // Keypad keys
+    KEY_KP_0            = 320,
+    KEY_KP_1            = 321,
+    KEY_KP_2            = 322,
+    KEY_KP_3            = 323,
+    KEY_KP_4            = 324,
+    KEY_KP_5            = 325,
+    KEY_KP_6            = 326,
+    KEY_KP_7            = 327,
+    KEY_KP_8            = 328,
+    KEY_KP_9            = 329,
+    KEY_KP_DECIMAL      = 330,
+    KEY_KP_DIVIDE       = 331,
+    KEY_KP_MULTIPLY     = 332,
+    KEY_KP_SUBTRACT     = 333,
+    KEY_KP_ADD          = 334,
+    KEY_KP_ENTER        = 335,
+    KEY_KP_EQUAL        = 336
+} KeyboardKey;
+
+// Android buttons
+typedef enum {
+    KEY_BACK            = 4,
+    KEY_MENU            = 82,
+    KEY_VOLUME_UP       = 24,
+    KEY_VOLUME_DOWN     = 25
+} AndroidButton;
+
+// Mouse buttons
+typedef enum {
+    MOUSE_LEFT_BUTTON   = 0,
+    MOUSE_RIGHT_BUTTON  = 1,
+    MOUSE_MIDDLE_BUTTON = 2
+} MouseButton;
+
+// Gamepad number
+typedef enum {
+    GAMEPAD_PLAYER1     = 0,
+    GAMEPAD_PLAYER2     = 1,
+    GAMEPAD_PLAYER3     = 2,
+    GAMEPAD_PLAYER4     = 3
+} GamepadNumber;
+
+// PS3 USB Controller Buttons
+// TODO: Provide a generic way to list gamepad controls schemes,
+// defining specific controls schemes is not a good option
+typedef enum {
+    GAMEPAD_PS3_BUTTON_TRIANGLE = 0,
+    GAMEPAD_PS3_BUTTON_CIRCLE   = 1,
+    GAMEPAD_PS3_BUTTON_CROSS    = 2,
+    GAMEPAD_PS3_BUTTON_SQUARE   = 3,
+    GAMEPAD_PS3_BUTTON_L1       = 6,
+    GAMEPAD_PS3_BUTTON_R1       = 7,
+    GAMEPAD_PS3_BUTTON_L2       = 4,
+    GAMEPAD_PS3_BUTTON_R2       = 5,
+    GAMEPAD_PS3_BUTTON_START    = 8,
+    GAMEPAD_PS3_BUTTON_SELECT   = 9,
+    GAMEPAD_PS3_BUTTON_PS       = 12,
+    GAMEPAD_PS3_BUTTON_UP       = 24,
+    GAMEPAD_PS3_BUTTON_RIGHT    = 25,
+    GAMEPAD_PS3_BUTTON_DOWN     = 26,
+    GAMEPAD_PS3_BUTTON_LEFT     = 27
+} GamepadPS3Button;
+
+// PS3 USB Controller Axis
+typedef enum {
+    GAMEPAD_PS3_AXIS_LEFT_X     = 0,
+    GAMEPAD_PS3_AXIS_LEFT_Y     = 1,
+    GAMEPAD_PS3_AXIS_RIGHT_X    = 2,
+    GAMEPAD_PS3_AXIS_RIGHT_Y    = 5,
+    GAMEPAD_PS3_AXIS_L2         = 3,    // [1..-1] (pressure-level)
+    GAMEPAD_PS3_AXIS_R2         = 4     // [1..-1] (pressure-level)
+} GamepadPS3Axis;
+
+// Xbox360 USB Controller Buttons
+typedef enum {
+    GAMEPAD_XBOX_BUTTON_A       = 0,
+    GAMEPAD_XBOX_BUTTON_B       = 1,
+    GAMEPAD_XBOX_BUTTON_X       = 2,
+    GAMEPAD_XBOX_BUTTON_Y       = 3,
+    GAMEPAD_XBOX_BUTTON_LB      = 4,
+    GAMEPAD_XBOX_BUTTON_RB      = 5,
+    GAMEPAD_XBOX_BUTTON_SELECT  = 6,
+    GAMEPAD_XBOX_BUTTON_START   = 7,
+    GAMEPAD_XBOX_BUTTON_HOME    = 8,
+    GAMEPAD_XBOX_BUTTON_UP      = 10,
+    GAMEPAD_XBOX_BUTTON_RIGHT   = 11,
+    GAMEPAD_XBOX_BUTTON_DOWN    = 12,
+    GAMEPAD_XBOX_BUTTON_LEFT    = 13
+} GamepadXbox360Button;
+
+// Xbox360 USB Controller Axis,
+// NOTE: For Raspberry Pi, axis must be reconfigured
+typedef enum {
+    GAMEPAD_XBOX_AXIS_LEFT_X    = 0,    // [-1..1] (left->right)
+    GAMEPAD_XBOX_AXIS_LEFT_Y    = 1,    // [1..-1] (up->down)
+    GAMEPAD_XBOX_AXIS_RIGHT_X   = 2,    // [-1..1] (left->right)
+    GAMEPAD_XBOX_AXIS_RIGHT_Y   = 3,    // [1..-1] (up->down)
+    GAMEPAD_XBOX_AXIS_LT        = 4,    // [-1..1] (pressure-level)
+    GAMEPAD_XBOX_AXIS_RT        = 5     // [-1..1] (pressure-level)
+} GamepadXbox360Axis;
+
+// Android Gamepad Controller (SNES CLASSIC)
 typedef enum {
-    LOG_INFO    = 1,
-    LOG_WARNING = 2,
-    LOG_ERROR   = 4,
-    LOG_DEBUG   = 8,
-    LOG_OTHER   = 16
-} LogType;
+    GAMEPAD_ANDROID_DPAD_UP     = 19,
+    GAMEPAD_ANDROID_DPAD_DOWN   = 20,
+    GAMEPAD_ANDROID_DPAD_LEFT   = 21,
+    GAMEPAD_ANDROID_DPAD_RIGHT  = 22,
+    GAMEPAD_ANDROID_DPAD_CENTER = 23,
+    GAMEPAD_ANDROID_BUTTON_A    = 96,
+    GAMEPAD_ANDROID_BUTTON_B    = 97,
+    GAMEPAD_ANDROID_BUTTON_C    = 98,
+    GAMEPAD_ANDROID_BUTTON_X    = 99,
+    GAMEPAD_ANDROID_BUTTON_Y    = 100,
+    GAMEPAD_ANDROID_BUTTON_Z    = 101,
+    GAMEPAD_ANDROID_BUTTON_L1   = 102,
+    GAMEPAD_ANDROID_BUTTON_R1   = 103,
+    GAMEPAD_ANDROID_BUTTON_L2   = 104,
+    GAMEPAD_ANDROID_BUTTON_R2   = 105
+} GamepadAndroid;
 
 // Shader location point type
 typedef enum {
@@ -749,7 +762,7 @@ typedef enum {
     GESTURE_SWIPE_DOWN  = 128,
     GESTURE_PINCH_IN    = 256,
     GESTURE_PINCH_OUT   = 512
-} Gestures;
+} GestureType;
 
 // Camera system modes
 typedef enum {