minesweeper

A minewseeper implementation to play around with Hare and Raylib
git clone https://git.tronto.net/minesweeper
Download | Log | Files | Refs | README | LICENSE

config.h (16722B)


      1 /**********************************************************************************************
      2 *
      3 *   raylib configuration flags
      4 *
      5 *   This file defines all the configuration flags for the different raylib modules
      6 *
      7 *   LICENSE: zlib/libpng
      8 *
      9 *   Copyright (c) 2018-2024 Ahmad Fatoum & Ramon Santamaria (@raysan5)
     10 *
     11 *   This software is provided "as-is", without any express or implied warranty. In no event
     12 *   will the authors be held liable for any damages arising from the use of this software.
     13 *
     14 *   Permission is granted to anyone to use this software for any purpose, including commercial
     15 *   applications, and to alter it and redistribute it freely, subject to the following restrictions:
     16 *
     17 *     1. The origin of this software must not be misrepresented; you must not claim that you
     18 *     wrote the original software. If you use this software in a product, an acknowledgment
     19 *     in the product documentation would be appreciated but is not required.
     20 *
     21 *     2. Altered source versions must be plainly marked as such, and must not be misrepresented
     22 *     as being the original software.
     23 *
     24 *     3. This notice may not be removed or altered from any source distribution.
     25 *
     26 **********************************************************************************************/
     27 
     28 #ifndef CONFIG_H
     29 #define CONFIG_H
     30 
     31 //------------------------------------------------------------------------------------
     32 // Module selection - Some modules could be avoided
     33 // Mandatory modules: rcore, rlgl, utils
     34 //------------------------------------------------------------------------------------
     35 #define SUPPORT_MODULE_RSHAPES          1
     36 #define SUPPORT_MODULE_RTEXTURES        1
     37 #define SUPPORT_MODULE_RTEXT            1       // WARNING: It requires SUPPORT_MODULE_RTEXTURES to load sprite font textures
     38 #define SUPPORT_MODULE_RMODELS          1
     39 #define SUPPORT_MODULE_RAUDIO           1
     40 
     41 //------------------------------------------------------------------------------------
     42 // Module: rcore - Configuration Flags
     43 //------------------------------------------------------------------------------------
     44 // Camera module is included (rcamera.h) and multiple predefined cameras are available: free, 1st/3rd person, orbital
     45 #define SUPPORT_CAMERA_SYSTEM           1
     46 // Gestures module is included (rgestures.h) to support gestures detection: tap, hold, swipe, drag
     47 #define SUPPORT_GESTURES_SYSTEM         1
     48 // Include pseudo-random numbers generator (rprand.h), based on Xoshiro128** and SplitMix64
     49 #define SUPPORT_RPRAND_GENERATOR        1
     50 // Mouse gestures are directly mapped like touches and processed by gestures system
     51 #define SUPPORT_MOUSE_GESTURES          1
     52 // Reconfigure standard input to receive key inputs, works with SSH connection.
     53 #define SUPPORT_SSH_KEYBOARD_RPI        1
     54 // Setting a higher resolution can improve the accuracy of time-out intervals in wait functions.
     55 // However, it can also reduce overall system performance, because the thread scheduler switches tasks more often.
     56 #define SUPPORT_WINMM_HIGHRES_TIMER     1
     57 // Use busy wait loop for timing sync, if not defined, a high-resolution timer is set up and used
     58 //#define SUPPORT_BUSY_WAIT_LOOP          1
     59 // Use a partial-busy wait loop, in this case frame sleeps for most of the time, but then runs a busy loop at the end for accuracy
     60 #define SUPPORT_PARTIALBUSY_WAIT_LOOP    1
     61 // Allow automatic screen capture of current screen pressing F12, defined in KeyCallback()
     62 #define SUPPORT_SCREEN_CAPTURE          1
     63 // Allow automatic gif recording of current screen pressing CTRL+F12, defined in KeyCallback()
     64 #define SUPPORT_GIF_RECORDING           1
     65 // Support CompressData() and DecompressData() functions
     66 #define SUPPORT_COMPRESSION_API         1
     67 // Support automatic generated events, loading and recording of those events when required
     68 #define SUPPORT_AUTOMATION_EVENTS       1
     69 // Support custom frame control, only for advanced users
     70 // By default EndDrawing() does this job: draws everything + SwapScreenBuffer() + manage frame timing + PollInputEvents()
     71 // Enabling this flag allows manual control of the frame processes, use at your own risk
     72 //#define SUPPORT_CUSTOM_FRAME_CONTROL    1
     73 
     74 
     75 // rcore: Configuration values
     76 //------------------------------------------------------------------------------------
     77 #define MAX_FILEPATH_CAPACITY        8192       // Maximum file paths capacity
     78 #define MAX_FILEPATH_LENGTH          4096       // Maximum length for filepaths (Linux PATH_MAX default value)
     79 
     80 #define MAX_KEYBOARD_KEYS             512       // Maximum number of keyboard keys supported
     81 #define MAX_MOUSE_BUTTONS               8       // Maximum number of mouse buttons supported
     82 #define MAX_GAMEPADS                    4       // Maximum number of gamepads supported
     83 #define MAX_GAMEPAD_AXIS                8       // Maximum number of axis supported (per gamepad)
     84 #define MAX_GAMEPAD_BUTTONS            32       // Maximum number of buttons supported (per gamepad)
     85 #define MAX_GAMEPAD_VIBRATION_TIME      2.0f    // Maximum vibration time in seconds
     86 #define MAX_TOUCH_POINTS                8       // Maximum number of touch points supported
     87 #define MAX_KEY_PRESSED_QUEUE          16       // Maximum number of keys in the key input queue
     88 #define MAX_CHAR_PRESSED_QUEUE         16       // Maximum number of characters in the char input queue
     89 
     90 #define MAX_DECOMPRESSION_SIZE         64       // Max size allocated for decompression in MB
     91 
     92 #define MAX_AUTOMATION_EVENTS       16384       // Maximum number of automation events to record
     93 
     94 //------------------------------------------------------------------------------------
     95 // Module: rlgl - Configuration values
     96 //------------------------------------------------------------------------------------
     97 
     98 // Enable OpenGL Debug Context (only available on OpenGL 4.3)
     99 //#define RLGL_ENABLE_OPENGL_DEBUG_CONTEXT       1
    100 
    101 // Show OpenGL extensions and capabilities detailed logs on init
    102 //#define RLGL_SHOW_GL_DETAILS_INFO              1
    103 
    104 #define RL_SUPPORT_MESH_GPU_SKINNING           1      // GPU skinning, comment if your GPU does not support more than 8 VBOs
    105 
    106 //#define RL_DEFAULT_BATCH_BUFFER_ELEMENTS    4096    // Default internal render batch elements limits
    107 #define RL_DEFAULT_BATCH_BUFFERS               1      // Default number of batch buffers (multi-buffering)
    108 #define RL_DEFAULT_BATCH_DRAWCALLS           256      // Default number of batch draw calls (by state changes: mode, texture)
    109 #define RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS     4      // Maximum number of textures units that can be activated on batch drawing (SetShaderValueTexture())
    110 
    111 #define RL_MAX_MATRIX_STACK_SIZE              32      // Maximum size of internal Matrix stack
    112 
    113 #define RL_MAX_SHADER_LOCATIONS               32      // Maximum number of shader locations supported
    114 
    115 #define RL_CULL_DISTANCE_NEAR               0.01      // Default projection matrix near cull distance
    116 #define RL_CULL_DISTANCE_FAR              1000.0      // Default projection matrix far cull distance
    117 
    118 // Default shader vertex attribute locations
    119 #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_POSITION    0
    120 #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD    1
    121 #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_NORMAL      2
    122 #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_COLOR       3
    123 #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_TANGENT     4
    124 #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD2   5
    125 #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_INDICES     6
    126 #if defined(RL_SUPPORT_MESH_GPU_SKINNING)
    127     #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_BONEIDS     7
    128     #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_BONEWEIGHTS 8
    129 #endif
    130 
    131 // Default shader vertex attribute names to set location points
    132 // NOTE: When a new shader is loaded, the following locations are tried to be set for convenience
    133 #define RL_DEFAULT_SHADER_ATTRIB_NAME_POSITION     "vertexPosition"    // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_POSITION
    134 #define RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD     "vertexTexCoord"    // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD
    135 #define RL_DEFAULT_SHADER_ATTRIB_NAME_NORMAL       "vertexNormal"      // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_NORMAL
    136 #define RL_DEFAULT_SHADER_ATTRIB_NAME_COLOR        "vertexColor"       // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_COLOR
    137 #define RL_DEFAULT_SHADER_ATTRIB_NAME_TANGENT      "vertexTangent"     // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_TANGENT
    138 #define RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD2    "vertexTexCoord2"   // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD2
    139 
    140 #define RL_DEFAULT_SHADER_UNIFORM_NAME_MVP         "mvp"               // model-view-projection matrix
    141 #define RL_DEFAULT_SHADER_UNIFORM_NAME_VIEW        "matView"           // view matrix
    142 #define RL_DEFAULT_SHADER_UNIFORM_NAME_PROJECTION  "matProjection"     // projection matrix
    143 #define RL_DEFAULT_SHADER_UNIFORM_NAME_MODEL       "matModel"          // model matrix
    144 #define RL_DEFAULT_SHADER_UNIFORM_NAME_NORMAL      "matNormal"         // normal matrix (transpose(inverse(matModelView))
    145 #define RL_DEFAULT_SHADER_UNIFORM_NAME_COLOR       "colDiffuse"        // color diffuse (base tint color, multiplied by texture color)
    146 #define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE0  "texture0"          // texture0 (texture slot active 0)
    147 #define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE1  "texture1"          // texture1 (texture slot active 1)
    148 #define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE2  "texture2"          // texture2 (texture slot active 2)
    149 
    150 
    151 //------------------------------------------------------------------------------------
    152 // Module: rshapes - Configuration Flags
    153 //------------------------------------------------------------------------------------
    154 // Use QUADS instead of TRIANGLES for drawing when possible
    155 // Some lines-based shapes could still use lines
    156 #define SUPPORT_QUADS_DRAW_MODE         1
    157 
    158 // rshapes: Configuration values
    159 //------------------------------------------------------------------------------------
    160 #define SPLINE_SEGMENT_DIVISIONS       24       // Spline segments subdivisions
    161 
    162 
    163 //------------------------------------------------------------------------------------
    164 // Module: rtextures - Configuration Flags
    165 //------------------------------------------------------------------------------------
    166 // Selecte desired fileformats to be supported for image data loading
    167 #define SUPPORT_FILEFORMAT_PNG      1
    168 //#define SUPPORT_FILEFORMAT_BMP      1
    169 //#define SUPPORT_FILEFORMAT_TGA      1
    170 //#define SUPPORT_FILEFORMAT_JPG      1
    171 #define SUPPORT_FILEFORMAT_GIF      1
    172 #define SUPPORT_FILEFORMAT_QOI      1
    173 //#define SUPPORT_FILEFORMAT_PSD      1
    174 #define SUPPORT_FILEFORMAT_DDS      1
    175 //#define SUPPORT_FILEFORMAT_HDR      1
    176 //#define SUPPORT_FILEFORMAT_PIC          1
    177 //#define SUPPORT_FILEFORMAT_KTX      1
    178 //#define SUPPORT_FILEFORMAT_ASTC     1
    179 //#define SUPPORT_FILEFORMAT_PKM      1
    180 //#define SUPPORT_FILEFORMAT_PVR      1
    181 
    182 // Support image export functionality (.png, .bmp, .tga, .jpg, .qoi)
    183 #define SUPPORT_IMAGE_EXPORT            1
    184 // Support procedural image generation functionality (gradient, spot, perlin-noise, cellular)
    185 #define SUPPORT_IMAGE_GENERATION        1
    186 // Support multiple image editing functions to scale, adjust colors, flip, draw on images, crop...
    187 // If not defined, still some functions are supported: ImageFormat(), ImageCrop(), ImageToPOT()
    188 #define SUPPORT_IMAGE_MANIPULATION      1
    189 
    190 
    191 //------------------------------------------------------------------------------------
    192 // Module: rtext - Configuration Flags
    193 //------------------------------------------------------------------------------------
    194 // Default font is loaded on window initialization to be available for the user to render simple text
    195 // NOTE: If enabled, uses external module functions to load default raylib font
    196 #define SUPPORT_DEFAULT_FONT            1
    197 // Selected desired font fileformats to be supported for loading
    198 #define SUPPORT_FILEFORMAT_TTF          1
    199 #define SUPPORT_FILEFORMAT_FNT          1
    200 //#define SUPPORT_FILEFORMAT_BDF          1
    201 
    202 // Support text management functions
    203 // If not defined, still some functions are supported: TextLength(), TextFormat()
    204 #define SUPPORT_TEXT_MANIPULATION       1
    205 
    206 // On font atlas image generation [GenImageFontAtlas()], add a 3x3 pixels white rectangle
    207 // at the bottom-right corner of the atlas. It can be useful to for shapes drawing, to allow
    208 // drawing text and shapes with a single draw call [SetShapesTexture()].
    209 #define SUPPORT_FONT_ATLAS_WHITE_REC    1
    210 
    211 // rtext: Configuration values
    212 //------------------------------------------------------------------------------------
    213 #define MAX_TEXT_BUFFER_LENGTH       1024       // Size of internal static buffers used on some functions:
    214                                                 // TextFormat(), TextSubtext(), TextToUpper(), TextToLower(), TextToPascal(), TextSplit()
    215 #define MAX_TEXTSPLIT_COUNT           128       // Maximum number of substrings to split: TextSplit()
    216 
    217 
    218 //------------------------------------------------------------------------------------
    219 // Module: rmodels - Configuration Flags
    220 //------------------------------------------------------------------------------------
    221 // Selected desired model fileformats to be supported for loading
    222 #define SUPPORT_FILEFORMAT_OBJ          1
    223 #define SUPPORT_FILEFORMAT_MTL          1
    224 #define SUPPORT_FILEFORMAT_IQM          1
    225 #define SUPPORT_FILEFORMAT_GLTF         1
    226 #define SUPPORT_FILEFORMAT_VOX          1
    227 #define SUPPORT_FILEFORMAT_M3D          1
    228 // Support procedural mesh generation functions, uses external par_shapes.h library
    229 // NOTE: Some generated meshes DO NOT include generated texture coordinates
    230 #define SUPPORT_MESH_GENERATION         1
    231 
    232 // rmodels: Configuration values
    233 //------------------------------------------------------------------------------------
    234 #define MAX_MATERIAL_MAPS              12       // Maximum number of shader maps supported
    235 
    236 #ifdef RL_SUPPORT_MESH_GPU_SKINNING
    237 #define MAX_MESH_VERTEX_BUFFERS         9       // Maximum vertex buffers (VBO) per mesh
    238 #else
    239 #define MAX_MESH_VERTEX_BUFFERS         7       // Maximum vertex buffers (VBO) per mesh
    240 #endif
    241 
    242 //------------------------------------------------------------------------------------
    243 // Module: raudio - Configuration Flags
    244 //------------------------------------------------------------------------------------
    245 // Desired audio fileformats to be supported for loading
    246 #define SUPPORT_FILEFORMAT_WAV          1
    247 #define SUPPORT_FILEFORMAT_OGG          1
    248 #define SUPPORT_FILEFORMAT_MP3          1
    249 #define SUPPORT_FILEFORMAT_QOA          1
    250 //#define SUPPORT_FILEFORMAT_FLAC         1
    251 #define SUPPORT_FILEFORMAT_XM           1
    252 #define SUPPORT_FILEFORMAT_MOD          1
    253 
    254 // raudio: Configuration values
    255 //------------------------------------------------------------------------------------
    256 #define AUDIO_DEVICE_FORMAT    ma_format_f32    // Device output format (miniaudio: float-32bit)
    257 #define AUDIO_DEVICE_CHANNELS              2    // Device output channels: stereo
    258 #define AUDIO_DEVICE_SAMPLE_RATE           0    // Device sample rate (device default)
    259 
    260 #define MAX_AUDIO_BUFFER_POOL_CHANNELS    16    // Maximum number of audio pool channels
    261 
    262 //------------------------------------------------------------------------------------
    263 // Module: utils - Configuration Flags
    264 //------------------------------------------------------------------------------------
    265 // Standard file io library (stdio.h) included
    266 #define SUPPORT_STANDARD_FILEIO         1
    267 // Show TRACELOG() output messages
    268 // NOTE: By default LOG_DEBUG traces not shown
    269 #define SUPPORT_TRACELOG                1
    270 //#define SUPPORT_TRACELOG_DEBUG          1
    271 
    272 // utils: Configuration values
    273 //------------------------------------------------------------------------------------
    274 #define MAX_TRACELOG_MSG_LENGTH       256       // Max length of one trace-log message
    275 
    276 
    277 // Enable partial support for clipboard image, only working on SDL3 or
    278 // being on both Windows OS + GLFW or Windows OS + RGFW
    279 #define SUPPORT_CLIPBOARD_IMAGE    1
    280 
    281 #if defined(SUPPORT_CLIPBOARD_IMAGE)
    282     #ifndef STBI_REQUIRED
    283         #define STBI_REQUIRED
    284     #endif
    285 
    286     #ifndef SUPPORT_FILEFORMAT_BMP // For clipboard image on Windows
    287         #define SUPPORT_FILEFORMAT_BMP 1
    288     #endif
    289 
    290     #ifndef SUPPORT_FILEFORMAT_PNG // Wayland uses png for prints, at least it was on 22 LTS ubuntu
    291         #define SUPPORT_FILEFORMAT_PNG 1
    292     #endif
    293 
    294     #ifndef SUPPORT_FILEFORMAT_JPG
    295         #define SUPPORT_FILEFORMAT_JPG 1
    296     #endif
    297 
    298     #ifndef SUPPORT_MODULE_RTEXTURES
    299         #define SUPPORT_MODULE_RTEXTURES 1
    300     #endif
    301 #endif
    302 
    303 #endif // CONFIG_H