raylib 4.5.0.alpha1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +16 -0
  3. data/README.md +97 -0
  4. data/lib/raylib/core/callbacks.rb +19 -0
  5. data/lib/raylib/core/colors.rb +32 -0
  6. data/lib/raylib/core/enums.rb +694 -0
  7. data/lib/raylib/core/functions.rb +1552 -0
  8. data/lib/raylib/core/structs/audio_stream.rb +71 -0
  9. data/lib/raylib/core/structs/bone_info.rb +38 -0
  10. data/lib/raylib/core/structs/bounding_box.rb +38 -0
  11. data/lib/raylib/core/structs/camera2_d.rb +60 -0
  12. data/lib/raylib/core/structs/camera3_d.rb +74 -0
  13. data/lib/raylib/core/structs/color.rb +60 -0
  14. data/lib/raylib/core/structs/file_path_list.rb +51 -0
  15. data/lib/raylib/core/structs/font.rb +82 -0
  16. data/lib/raylib/core/structs/glyph_info.rb +71 -0
  17. data/lib/raylib/core/structs/image.rb +71 -0
  18. data/lib/raylib/core/structs/material.rb +49 -0
  19. data/lib/raylib/core/structs/material_map.rb +49 -0
  20. data/lib/raylib/core/structs/matrix.rb +192 -0
  21. data/lib/raylib/core/structs/mesh.rb +181 -0
  22. data/lib/raylib/core/structs/model.rb +115 -0
  23. data/lib/raylib/core/structs/model_animation.rb +60 -0
  24. data/lib/raylib/core/structs/music.rb +71 -0
  25. data/lib/raylib/core/structs/n_patch_info.rb +82 -0
  26. data/lib/raylib/core/structs/ray.rb +38 -0
  27. data/lib/raylib/core/structs/ray_collision.rb +60 -0
  28. data/lib/raylib/core/structs/rectangle.rb +60 -0
  29. data/lib/raylib/core/structs/render_texture.rb +52 -0
  30. data/lib/raylib/core/structs/shader.rb +38 -0
  31. data/lib/raylib/core/structs/sound.rb +38 -0
  32. data/lib/raylib/core/structs/texture.rb +77 -0
  33. data/lib/raylib/core/structs/transform.rb +49 -0
  34. data/lib/raylib/core/structs/vector2.rb +38 -0
  35. data/lib/raylib/core/structs/vector3.rb +49 -0
  36. data/lib/raylib/core/structs/vector4.rb +63 -0
  37. data/lib/raylib/core/structs/vr_device_info.rb +126 -0
  38. data/lib/raylib/core/structs/vr_stereo_config.rb +104 -0
  39. data/lib/raylib/core/structs/wave.rb +71 -0
  40. data/lib/raylib/core/structs.rb +32 -0
  41. data/lib/raylib/core.rb +5 -0
  42. data/lib/raylib/dsl.rb +2 -0
  43. data/lib/raylib/raymath/functions.rb +337 -0
  44. data/lib/raylib/raymath/structs/float16.rb +27 -0
  45. data/lib/raylib/raymath/structs/float3.rb +27 -0
  46. data/lib/raylib/raymath/structs.rb +2 -0
  47. data/lib/raylib/raymath.rb +2 -0
  48. data/lib/raylib/rlgl/callbacks.rb +4 -0
  49. data/lib/raylib/rlgl/enums.rb +270 -0
  50. data/lib/raylib/rlgl/functions.rb +448 -0
  51. data/lib/raylib/rlgl/structs/rl_draw_call.rb +60 -0
  52. data/lib/raylib/rlgl/structs/rl_render_batch.rb +82 -0
  53. data/lib/raylib/rlgl/structs/rl_vertex_buffer.rb +93 -0
  54. data/lib/raylib/rlgl/structs.rb +3 -0
  55. data/lib/raylib/rlgl.rb +4 -0
  56. data/lib/raylib/version.rb +5 -0
  57. data/lib/raylib.rb +12 -0
  58. metadata +162 -0
@@ -0,0 +1,1552 @@
1
+ module Raylib
2
+ # Initialize window and OpenGL context
3
+ attach_function :init_window, :InitWindow, [:int, :int, :pointer], :void
4
+
5
+ # Check if KEY_ESCAPE pressed or Close icon pressed
6
+ attach_function :window_should_close, :WindowShouldClose, [], :bool
7
+
8
+ # Close window and unload OpenGL context
9
+ attach_function :close_window, :CloseWindow, [], :void
10
+
11
+ # Check if window has been initialized successfully
12
+ attach_function :is_window_ready, :IsWindowReady, [], :bool
13
+
14
+ # Check if window is currently fullscreen
15
+ attach_function :is_window_fullscreen, :IsWindowFullscreen, [], :bool
16
+
17
+ # Check if window is currently hidden (only PLATFORM_DESKTOP)
18
+ attach_function :is_window_hidden, :IsWindowHidden, [], :bool
19
+
20
+ # Check if window is currently minimized (only PLATFORM_DESKTOP)
21
+ attach_function :is_window_minimized, :IsWindowMinimized, [], :bool
22
+
23
+ # Check if window is currently maximized (only PLATFORM_DESKTOP)
24
+ attach_function :is_window_maximized, :IsWindowMaximized, [], :bool
25
+
26
+ # Check if window is currently focused (only PLATFORM_DESKTOP)
27
+ attach_function :is_window_focused, :IsWindowFocused, [], :bool
28
+
29
+ # Check if window has been resized last frame
30
+ attach_function :is_window_resized, :IsWindowResized, [], :bool
31
+
32
+ # Check if one specific window flag is enabled
33
+ attach_function :is_window_state, :IsWindowState, [:uint], :bool
34
+
35
+ # Set window configuration state using flags (only PLATFORM_DESKTOP)
36
+ attach_function :set_window_state, :SetWindowState, [:uint], :void
37
+
38
+ # Clear window configuration state flags
39
+ attach_function :clear_window_state, :ClearWindowState, [:uint], :void
40
+
41
+ # Toggle window state: fullscreen/windowed (only PLATFORM_DESKTOP)
42
+ attach_function :toggle_fullscreen, :ToggleFullscreen, [], :void
43
+
44
+ # Set window state: maximized, if resizable (only PLATFORM_DESKTOP)
45
+ attach_function :maximize_window, :MaximizeWindow, [], :void
46
+
47
+ # Set window state: minimized, if resizable (only PLATFORM_DESKTOP)
48
+ attach_function :minimize_window, :MinimizeWindow, [], :void
49
+
50
+ # Set window state: not minimized/maximized (only PLATFORM_DESKTOP)
51
+ attach_function :restore_window, :RestoreWindow, [], :void
52
+
53
+ # Set icon for window (single image, RGBA 32bit, only PLATFORM_DESKTOP)
54
+ attach_function :set_window_icon, :SetWindowIcon, [Image.by_value], :void
55
+
56
+ # Set icon for window (multiple images, RGBA 32bit, only PLATFORM_DESKTOP)
57
+ attach_function :set_window_icons, :SetWindowIcons, [:pointer, :int], :void
58
+
59
+ # Set title for window (only PLATFORM_DESKTOP)
60
+ attach_function :set_window_title, :SetWindowTitle, [:pointer], :void
61
+
62
+ # Set window position on screen (only PLATFORM_DESKTOP)
63
+ attach_function :set_window_position, :SetWindowPosition, [:int, :int], :void
64
+
65
+ # Set monitor for the current window (fullscreen mode)
66
+ attach_function :set_window_monitor, :SetWindowMonitor, [:int], :void
67
+
68
+ # Set window minimum dimensions (for FLAG_WINDOW_RESIZABLE)
69
+ attach_function :set_window_min_size, :SetWindowMinSize, [:int, :int], :void
70
+
71
+ # Set window dimensions
72
+ attach_function :set_window_size, :SetWindowSize, [:int, :int], :void
73
+
74
+ # Set window opacity [0.0f..1.0f] (only PLATFORM_DESKTOP)
75
+ attach_function :set_window_opacity, :SetWindowOpacity, [:float], :void
76
+
77
+ # Get native window handle
78
+ attach_function :get_window_handle, :GetWindowHandle, [], :pointer
79
+
80
+ # Get current screen width
81
+ attach_function :get_screen_width, :GetScreenWidth, [], :int
82
+
83
+ # Get current screen height
84
+ attach_function :get_screen_height, :GetScreenHeight, [], :int
85
+
86
+ # Get current render width (it considers HiDPI)
87
+ attach_function :get_render_width, :GetRenderWidth, [], :int
88
+
89
+ # Get current render height (it considers HiDPI)
90
+ attach_function :get_render_height, :GetRenderHeight, [], :int
91
+
92
+ # Get number of connected monitors
93
+ attach_function :get_monitor_count, :GetMonitorCount, [], :int
94
+
95
+ # Get current connected monitor
96
+ attach_function :get_current_monitor, :GetCurrentMonitor, [], :int
97
+
98
+ # Get specified monitor position
99
+ attach_function :get_monitor_position, :GetMonitorPosition, [:int], Vector2.by_value
100
+
101
+ # Get specified monitor width (current video mode used by monitor)
102
+ attach_function :get_monitor_width, :GetMonitorWidth, [:int], :int
103
+
104
+ # Get specified monitor height (current video mode used by monitor)
105
+ attach_function :get_monitor_height, :GetMonitorHeight, [:int], :int
106
+
107
+ # Get specified monitor physical width in millimetres
108
+ attach_function :get_monitor_physical_width, :GetMonitorPhysicalWidth, [:int], :int
109
+
110
+ # Get specified monitor physical height in millimetres
111
+ attach_function :get_monitor_physical_height, :GetMonitorPhysicalHeight, [:int], :int
112
+
113
+ # Get specified monitor refresh rate
114
+ attach_function :get_monitor_refresh_rate, :GetMonitorRefreshRate, [:int], :int
115
+
116
+ # Get window position XY on monitor
117
+ attach_function :get_window_position, :GetWindowPosition, [], Vector2.by_value
118
+
119
+ # Get window scale DPI factor
120
+ attach_function :get_window_scale_dpi, :GetWindowScaleDPI, [], Vector2.by_value
121
+
122
+ # Get the human-readable, UTF-8 encoded name of the primary monitor
123
+ attach_function :get_monitor_name, :GetMonitorName, [:int], :pointer
124
+
125
+ # Set clipboard text content
126
+ attach_function :set_clipboard_text, :SetClipboardText, [:pointer], :void
127
+
128
+ # Get clipboard text content
129
+ attach_function :get_clipboard_text, :GetClipboardText, [], :pointer
130
+
131
+ # Enable waiting for events on EndDrawing(), no automatic event polling
132
+ attach_function :enable_event_waiting, :EnableEventWaiting, [], :void
133
+
134
+ # Disable waiting for events on EndDrawing(), automatic events polling
135
+ attach_function :disable_event_waiting, :DisableEventWaiting, [], :void
136
+
137
+ # Swap back buffer with front buffer (screen drawing)
138
+ attach_function :swap_screen_buffer, :SwapScreenBuffer, [], :void
139
+
140
+ # Register all input events
141
+ attach_function :poll_input_events, :PollInputEvents, [], :void
142
+
143
+ # Wait for some time (halt program execution)
144
+ attach_function :wait_time, :WaitTime, [:double], :void
145
+
146
+ # Shows cursor
147
+ attach_function :show_cursor, :ShowCursor, [], :void
148
+
149
+ # Hides cursor
150
+ attach_function :hide_cursor, :HideCursor, [], :void
151
+
152
+ # Check if cursor is not visible
153
+ attach_function :is_cursor_hidden, :IsCursorHidden, [], :bool
154
+
155
+ # Enables cursor (unlock cursor)
156
+ attach_function :enable_cursor, :EnableCursor, [], :void
157
+
158
+ # Disables cursor (lock cursor)
159
+ attach_function :disable_cursor, :DisableCursor, [], :void
160
+
161
+ # Check if cursor is on the screen
162
+ attach_function :is_cursor_on_screen, :IsCursorOnScreen, [], :bool
163
+
164
+ # Set background color (framebuffer clear color)
165
+ attach_function :clear_background, :ClearBackground, [Color.by_value], :void
166
+
167
+ # Setup canvas (framebuffer) to start drawing
168
+ attach_function :begin_drawing, :BeginDrawing, [], :void
169
+
170
+ # End canvas drawing and swap buffers (double buffering)
171
+ attach_function :end_drawing, :EndDrawing, [], :void
172
+
173
+ # Begin 2D mode with custom camera (2D)
174
+ attach_function :begin_mode_2d, :BeginMode2D, [Camera2D.by_value], :void
175
+
176
+ # Ends 2D mode with custom camera
177
+ attach_function :end_mode_2d, :EndMode2D, [], :void
178
+
179
+ # Begin 3D mode with custom camera (3D)
180
+ attach_function :begin_mode_3d, :BeginMode3D, [Camera3D.by_value], :void
181
+
182
+ # Ends 3D mode and returns to default 2D orthographic mode
183
+ attach_function :end_mode_3d, :EndMode3D, [], :void
184
+
185
+ # Begin drawing to render texture
186
+ attach_function :begin_texture_mode, :BeginTextureMode, [RenderTexture2D.by_value], :void
187
+
188
+ # Ends drawing to render texture
189
+ attach_function :end_texture_mode, :EndTextureMode, [], :void
190
+
191
+ # Begin custom shader drawing
192
+ attach_function :begin_shader_mode, :BeginShaderMode, [Shader.by_value], :void
193
+
194
+ # End custom shader drawing (use default shader)
195
+ attach_function :end_shader_mode, :EndShaderMode, [], :void
196
+
197
+ # Begin blending mode (alpha, additive, multiplied, subtract, custom)
198
+ attach_function :begin_blend_mode, :BeginBlendMode, [:int], :void
199
+
200
+ # End blending mode (reset to default: alpha blending)
201
+ attach_function :end_blend_mode, :EndBlendMode, [], :void
202
+
203
+ # Begin scissor mode (define screen area for following drawing)
204
+ attach_function :begin_scissor_mode, :BeginScissorMode, [:int, :int, :int, :int], :void
205
+
206
+ # End scissor mode
207
+ attach_function :end_scissor_mode, :EndScissorMode, [], :void
208
+
209
+ # Begin stereo rendering (requires VR simulator)
210
+ attach_function :begin_vr_stereo_mode, :BeginVrStereoMode, [VrStereoConfig.by_value], :void
211
+
212
+ # End stereo rendering (requires VR simulator)
213
+ attach_function :end_vr_stereo_mode, :EndVrStereoMode, [], :void
214
+
215
+ # Load VR stereo config for VR simulator device parameters
216
+ attach_function :load_vr_stereo_config, :LoadVrStereoConfig, [VrDeviceInfo.by_value], VrStereoConfig.by_value
217
+
218
+ # Unload VR stereo config
219
+ attach_function :unload_vr_stereo_config, :UnloadVrStereoConfig, [VrStereoConfig.by_value], :void
220
+
221
+ # Load shader from files and bind default locations
222
+ attach_function :load_shader, :LoadShader, [:pointer, :pointer], Shader.by_value
223
+
224
+ # Load shader from code strings and bind default locations
225
+ attach_function :load_shader_from_memory, :LoadShaderFromMemory, [:pointer, :pointer], Shader.by_value
226
+
227
+ # Check if a shader is ready
228
+ attach_function :is_shader_ready, :IsShaderReady, [Shader.by_value], :bool
229
+
230
+ # Get shader uniform location
231
+ attach_function :get_shader_location, :GetShaderLocation, [Shader.by_value, :pointer], :int
232
+
233
+ # Get shader attribute location
234
+ attach_function :get_shader_location_attrib, :GetShaderLocationAttrib, [Shader.by_value, :pointer], :int
235
+
236
+ # Set shader uniform value
237
+ attach_function :set_shader_value, :SetShaderValue, [Shader.by_value, :int, :pointer, :int], :void
238
+
239
+ # Set shader uniform value vector
240
+ attach_function :set_shader_value_v, :SetShaderValueV, [Shader.by_value, :int, :pointer, :int, :int], :void
241
+
242
+ # Set shader uniform value (matrix 4x4)
243
+ attach_function :set_shader_value_matrix, :SetShaderValueMatrix, [Shader.by_value, :int, Matrix.by_value], :void
244
+
245
+ # Set shader uniform value for texture (sampler2d)
246
+ attach_function :set_shader_value_texture, :SetShaderValueTexture, [Shader.by_value, :int, Texture2D.by_value], :void
247
+
248
+ # Unload shader from GPU memory (VRAM)
249
+ attach_function :unload_shader, :UnloadShader, [Shader.by_value], :void
250
+
251
+ # Get a ray trace from mouse position
252
+ attach_function :get_mouse_ray, :GetMouseRay, [Vector2.by_value, Camera.by_value], Ray.by_value
253
+
254
+ # Get camera transform matrix (view matrix)
255
+ attach_function :get_camera_matrix, :GetCameraMatrix, [Camera.by_value], Matrix.by_value
256
+
257
+ # Get camera 2d transform matrix
258
+ attach_function :get_camera_matrix_2d, :GetCameraMatrix2D, [Camera2D.by_value], Matrix.by_value
259
+
260
+ # Get the screen space position for a 3d world space position
261
+ attach_function :get_world_to_screen, :GetWorldToScreen, [Vector3.by_value, Camera.by_value], Vector2.by_value
262
+
263
+ # Get the world space position for a 2d camera screen space position
264
+ attach_function :get_screen_to_world_2d, :GetScreenToWorld2D, [Vector2.by_value, Camera2D.by_value], Vector2.by_value
265
+
266
+ # Get size position for a 3d world space position
267
+ attach_function :get_world_to_screen_ex, :GetWorldToScreenEx, [Vector3.by_value, Camera.by_value, :int, :int], Vector2.by_value
268
+
269
+ # Get the screen space position for a 2d camera world space position
270
+ attach_function :get_world_to_screen_2d, :GetWorldToScreen2D, [Vector2.by_value, Camera2D.by_value], Vector2.by_value
271
+
272
+ # Set target FPS (maximum)
273
+ attach_function :set_target_fps, :SetTargetFPS, [:int], :void
274
+
275
+ # Get current FPS
276
+ attach_function :get_fps, :GetFPS, [], :int
277
+
278
+ # Get time in seconds for last frame drawn (delta time)
279
+ attach_function :get_frame_time, :GetFrameTime, [], :float
280
+
281
+ # Get elapsed time in seconds since InitWindow()
282
+ attach_function :get_time, :GetTime, [], :double
283
+
284
+ # Get a random value between min and max (both included)
285
+ attach_function :get_random_value, :GetRandomValue, [:int, :int], :int
286
+
287
+ # Set the seed for the random number generator
288
+ attach_function :set_random_seed, :SetRandomSeed, [:uint], :void
289
+
290
+ # Takes a screenshot of current screen (filename extension defines format)
291
+ attach_function :take_screenshot, :TakeScreenshot, [:pointer], :void
292
+
293
+ # Setup init configuration flags (view FLAGS)
294
+ attach_function :set_config_flags, :SetConfigFlags, [:uint], :void
295
+
296
+ # Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR...)
297
+ attach_function :trace_log, :TraceLog, [:int, :pointer, :varargs], :void
298
+
299
+ # Set the current threshold (minimum) log level
300
+ attach_function :set_trace_log_level, :SetTraceLogLevel, [:int], :void
301
+
302
+ # Internal memory allocator
303
+ attach_function :mem_alloc, :MemAlloc, [:uint], :pointer
304
+
305
+ # Internal memory reallocator
306
+ attach_function :mem_realloc, :MemRealloc, [:pointer, :uint], :pointer
307
+
308
+ # Internal memory free
309
+ attach_function :mem_free, :MemFree, [:pointer], :void
310
+
311
+ # Open URL with default system browser (if available)
312
+ attach_function :open_url, :OpenURL, [:pointer], :void
313
+
314
+ # Set custom trace log
315
+ attach_function :set_trace_log_callback, :SetTraceLogCallback, [:TraceLogCallback], :void
316
+
317
+ # Set custom file binary data loader
318
+ attach_function :set_load_file_data_callback, :SetLoadFileDataCallback, [:LoadFileDataCallback], :void
319
+
320
+ # Set custom file binary data saver
321
+ attach_function :set_save_file_data_callback, :SetSaveFileDataCallback, [:SaveFileDataCallback], :void
322
+
323
+ # Set custom file text data loader
324
+ attach_function :set_load_file_text_callback, :SetLoadFileTextCallback, [:LoadFileTextCallback], :void
325
+
326
+ # Set custom file text data saver
327
+ attach_function :set_save_file_text_callback, :SetSaveFileTextCallback, [:SaveFileTextCallback], :void
328
+
329
+ # Load file data as byte array (read)
330
+ attach_function :load_file_data, :LoadFileData, [:pointer, :pointer], :pointer
331
+
332
+ # Unload file data allocated by LoadFileData()
333
+ attach_function :unload_file_data, :UnloadFileData, [:pointer], :void
334
+
335
+ # Save data to file from byte array (write), returns true on success
336
+ attach_function :save_file_data, :SaveFileData, [:pointer, :pointer, :uint], :bool
337
+
338
+ # Export data to code (.h), returns true on success
339
+ attach_function :export_data_as_code, :ExportDataAsCode, [:pointer, :uint, :pointer], :bool
340
+
341
+ # Load text data from file (read), returns a '\0' terminated string
342
+ attach_function :load_file_text, :LoadFileText, [:pointer], :pointer
343
+
344
+ # Unload file text data allocated by LoadFileText()
345
+ attach_function :unload_file_text, :UnloadFileText, [:pointer], :void
346
+
347
+ # Save text data to file (write), string must be '\0' terminated, returns true on success
348
+ attach_function :save_file_text, :SaveFileText, [:pointer, :pointer], :bool
349
+
350
+ # Check if file exists
351
+ attach_function :file_exists, :FileExists, [:pointer], :bool
352
+
353
+ # Check if a directory path exists
354
+ attach_function :directory_exists, :DirectoryExists, [:pointer], :bool
355
+
356
+ # Check file extension (including point: .png, .wav)
357
+ attach_function :is_file_extension, :IsFileExtension, [:pointer, :pointer], :bool
358
+
359
+ # Get file length in bytes (NOTE: GetFileSize() conflicts with windows.h)
360
+ attach_function :get_file_length, :GetFileLength, [:pointer], :int
361
+
362
+ # Get pointer to extension for a filename string (includes dot: '.png')
363
+ attach_function :get_file_extension, :GetFileExtension, [:pointer], :pointer
364
+
365
+ # Get pointer to filename for a path string
366
+ attach_function :get_file_name, :GetFileName, [:pointer], :pointer
367
+
368
+ # Get filename string without extension (uses static string)
369
+ attach_function :get_file_name_without_ext, :GetFileNameWithoutExt, [:pointer], :pointer
370
+
371
+ # Get full path for a given fileName with path (uses static string)
372
+ attach_function :get_directory_path, :GetDirectoryPath, [:pointer], :pointer
373
+
374
+ # Get previous directory path for a given path (uses static string)
375
+ attach_function :get_prev_directory_path, :GetPrevDirectoryPath, [:pointer], :pointer
376
+
377
+ # Get current working directory (uses static string)
378
+ attach_function :get_working_directory, :GetWorkingDirectory, [], :pointer
379
+
380
+ # Get the directory if the running application (uses static string)
381
+ attach_function :get_application_directory, :GetApplicationDirectory, [], :pointer
382
+
383
+ # Change working directory, return true on success
384
+ attach_function :change_directory, :ChangeDirectory, [:pointer], :bool
385
+
386
+ # Check if a given path is a file or a directory
387
+ attach_function :is_path_file, :IsPathFile, [:pointer], :bool
388
+
389
+ # Load directory filepaths
390
+ attach_function :load_directory_files, :LoadDirectoryFiles, [:pointer], FilePathList.by_value
391
+
392
+ # Load directory filepaths with extension filtering and recursive directory scan
393
+ attach_function :load_directory_files_ex, :LoadDirectoryFilesEx, [:pointer, :pointer, :bool], FilePathList.by_value
394
+
395
+ # Unload filepaths
396
+ attach_function :unload_directory_files, :UnloadDirectoryFiles, [FilePathList.by_value], :void
397
+
398
+ # Check if a file has been dropped into window
399
+ attach_function :is_file_dropped, :IsFileDropped, [], :bool
400
+
401
+ # Load dropped filepaths
402
+ attach_function :load_dropped_files, :LoadDroppedFiles, [], FilePathList.by_value
403
+
404
+ # Unload dropped filepaths
405
+ attach_function :unload_dropped_files, :UnloadDroppedFiles, [FilePathList.by_value], :void
406
+
407
+ # Get file modification time (last write time)
408
+ attach_function :get_file_mod_time, :GetFileModTime, [:pointer], :long
409
+
410
+ # Compress data (DEFLATE algorithm), memory must be MemFree()
411
+ attach_function :compress_data, :CompressData, [:pointer, :int, :pointer], :pointer
412
+
413
+ # Decompress data (DEFLATE algorithm), memory must be MemFree()
414
+ attach_function :decompress_data, :DecompressData, [:pointer, :int, :pointer], :pointer
415
+
416
+ # Encode data to Base64 string, memory must be MemFree()
417
+ attach_function :encode_data_base64, :EncodeDataBase64, [:pointer, :int, :pointer], :pointer
418
+
419
+ # Decode Base64 string data, memory must be MemFree()
420
+ attach_function :decode_data_base64, :DecodeDataBase64, [:pointer, :pointer], :pointer
421
+
422
+ # Check if a key has been pressed once
423
+ attach_function :is_key_pressed, :IsKeyPressed, [:int], :bool
424
+
425
+ # Check if a key is being pressed
426
+ attach_function :is_key_down, :IsKeyDown, [:int], :bool
427
+
428
+ # Check if a key has been released once
429
+ attach_function :is_key_released, :IsKeyReleased, [:int], :bool
430
+
431
+ # Check if a key is NOT being pressed
432
+ attach_function :is_key_up, :IsKeyUp, [:int], :bool
433
+
434
+ # Set a custom key to exit program (default is ESC)
435
+ attach_function :set_exit_key, :SetExitKey, [:int], :void
436
+
437
+ # Get key pressed (keycode), call it multiple times for keys queued, returns 0 when the queue is empty
438
+ attach_function :get_key_pressed, :GetKeyPressed, [], :int
439
+
440
+ # Get char pressed (unicode), call it multiple times for chars queued, returns 0 when the queue is empty
441
+ attach_function :get_char_pressed, :GetCharPressed, [], :int
442
+
443
+ # Check if a gamepad is available
444
+ attach_function :is_gamepad_available, :IsGamepadAvailable, [:int], :bool
445
+
446
+ # Get gamepad internal name id
447
+ attach_function :get_gamepad_name, :GetGamepadName, [:int], :string
448
+
449
+ # Check if a gamepad button has been pressed once
450
+ attach_function :is_gamepad_button_pressed, :IsGamepadButtonPressed, [:int, :int], :bool
451
+
452
+ # Check if a gamepad button is being pressed
453
+ attach_function :is_gamepad_button_down, :IsGamepadButtonDown, [:int, :int], :bool
454
+
455
+ # Check if a gamepad button has been released once
456
+ attach_function :is_gamepad_button_released, :IsGamepadButtonReleased, [:int, :int], :bool
457
+
458
+ # Check if a gamepad button is NOT being pressed
459
+ attach_function :is_gamepad_button_up, :IsGamepadButtonUp, [:int, :int], :bool
460
+
461
+ # Get the last gamepad button pressed
462
+ attach_function :get_gamepad_button_pressed, :GetGamepadButtonPressed, [], :int
463
+
464
+ # Get gamepad axis count for a gamepad
465
+ attach_function :get_gamepad_axis_count, :GetGamepadAxisCount, [:int], :int
466
+
467
+ # Get axis movement value for a gamepad axis
468
+ attach_function :get_gamepad_axis_movement, :GetGamepadAxisMovement, [:int, :int], :float
469
+
470
+ # Set internal gamepad mappings (SDL_GameControllerDB)
471
+ attach_function :set_gamepad_mappings, :SetGamepadMappings, [:pointer], :int
472
+
473
+ # Check if a mouse button has been pressed once
474
+ attach_function :is_mouse_button_pressed, :IsMouseButtonPressed, [:int], :bool
475
+
476
+ # Check if a mouse button is being pressed
477
+ attach_function :is_mouse_button_down, :IsMouseButtonDown, [:int], :bool
478
+
479
+ # Check if a mouse button has been released once
480
+ attach_function :is_mouse_button_released, :IsMouseButtonReleased, [:int], :bool
481
+
482
+ # Check if a mouse button is NOT being pressed
483
+ attach_function :is_mouse_button_up, :IsMouseButtonUp, [:int], :bool
484
+
485
+ # Get mouse position X
486
+ attach_function :get_mouse_x, :GetMouseX, [], :int
487
+
488
+ # Get mouse position Y
489
+ attach_function :get_mouse_y, :GetMouseY, [], :int
490
+
491
+ # Get mouse position XY
492
+ attach_function :get_mouse_position, :GetMousePosition, [], Vector2.by_value
493
+
494
+ # Get mouse delta between frames
495
+ attach_function :get_mouse_delta, :GetMouseDelta, [], Vector2.by_value
496
+
497
+ # Set mouse position XY
498
+ attach_function :set_mouse_position, :SetMousePosition, [:int, :int], :void
499
+
500
+ # Set mouse offset
501
+ attach_function :set_mouse_offset, :SetMouseOffset, [:int, :int], :void
502
+
503
+ # Set mouse scaling
504
+ attach_function :set_mouse_scale, :SetMouseScale, [:float, :float], :void
505
+
506
+ # Get mouse wheel movement for X or Y, whichever is larger
507
+ attach_function :get_mouse_wheel_move, :GetMouseWheelMove, [], :float
508
+
509
+ # Get mouse wheel movement for both X and Y
510
+ attach_function :get_mouse_wheel_move_v, :GetMouseWheelMoveV, [], Vector2.by_value
511
+
512
+ # Set mouse cursor
513
+ attach_function :set_mouse_cursor, :SetMouseCursor, [:int], :void
514
+
515
+ # Get touch position X for touch point 0 (relative to screen size)
516
+ attach_function :get_touch_x, :GetTouchX, [], :int
517
+
518
+ # Get touch position Y for touch point 0 (relative to screen size)
519
+ attach_function :get_touch_y, :GetTouchY, [], :int
520
+
521
+ # Get touch position XY for a touch point index (relative to screen size)
522
+ attach_function :get_touch_position, :GetTouchPosition, [:int], Vector2.by_value
523
+
524
+ # Get touch point identifier for given index
525
+ attach_function :get_touch_point_id, :GetTouchPointId, [:int], :int
526
+
527
+ # Get number of touch points
528
+ attach_function :get_touch_point_count, :GetTouchPointCount, [], :int
529
+
530
+ # Enable a set of gestures using flags
531
+ attach_function :set_gestures_enabled, :SetGesturesEnabled, [:uint], :void
532
+
533
+ # Check if a gesture have been detected
534
+ attach_function :is_gesture_detected, :IsGestureDetected, [:int], :bool
535
+
536
+ # Get latest detected gesture
537
+ attach_function :get_gesture_detected, :GetGestureDetected, [], :int
538
+
539
+ # Get gesture hold time in milliseconds
540
+ attach_function :get_gesture_hold_duration, :GetGestureHoldDuration, [], :float
541
+
542
+ # Get gesture drag vector
543
+ attach_function :get_gesture_drag_vector, :GetGestureDragVector, [], Vector2.by_value
544
+
545
+ # Get gesture drag angle
546
+ attach_function :get_gesture_drag_angle, :GetGestureDragAngle, [], :float
547
+
548
+ # Get gesture pinch delta
549
+ attach_function :get_gesture_pinch_vector, :GetGesturePinchVector, [], Vector2.by_value
550
+
551
+ # Get gesture pinch angle
552
+ attach_function :get_gesture_pinch_angle, :GetGesturePinchAngle, [], :float
553
+
554
+ # Update camera position for selected mode
555
+ attach_function :update_camera, :UpdateCamera, [:pointer, :int], :void
556
+
557
+ # Update camera movement/rotation
558
+ attach_function :update_camera_pro, :UpdateCameraPro, [:pointer, Vector3.by_value, Vector3.by_value, :float], :void
559
+
560
+ # Set texture and rectangle to be used on shapes drawing
561
+ attach_function :set_shapes_texture, :SetShapesTexture, [Texture2D.by_value, Rectangle.by_value], :void
562
+
563
+ # Draw a pixel
564
+ attach_function :draw_pixel, :DrawPixel, [:int, :int, Color.by_value], :void
565
+
566
+ # Draw a pixel (Vector version)
567
+ attach_function :draw_pixel_v, :DrawPixelV, [Vector2.by_value, Color.by_value], :void
568
+
569
+ # Draw a line
570
+ attach_function :draw_line, :DrawLine, [:int, :int, :int, :int, Color.by_value], :void
571
+
572
+ # Draw a line (Vector version)
573
+ attach_function :draw_line_v, :DrawLineV, [Vector2.by_value, Vector2.by_value, Color.by_value], :void
574
+
575
+ # Draw a line defining thickness
576
+ attach_function :draw_line_ex, :DrawLineEx, [Vector2.by_value, Vector2.by_value, :float, Color.by_value], :void
577
+
578
+ # Draw a line using cubic-bezier curves in-out
579
+ attach_function :draw_line_bezier, :DrawLineBezier, [Vector2.by_value, Vector2.by_value, :float, Color.by_value], :void
580
+
581
+ # Draw line using quadratic bezier curves with a control point
582
+ attach_function :draw_line_bezier_quad, :DrawLineBezierQuad, [Vector2.by_value, Vector2.by_value, Vector2.by_value, :float, Color.by_value], :void
583
+
584
+ # Draw line using cubic bezier curves with 2 control points
585
+ attach_function :draw_line_bezier_cubic, :DrawLineBezierCubic, [Vector2.by_value, Vector2.by_value, Vector2.by_value, Vector2.by_value, :float, Color.by_value], :void
586
+
587
+ # Draw lines sequence
588
+ attach_function :draw_line_strip, :DrawLineStrip, [:pointer, :int, Color.by_value], :void
589
+
590
+ # Draw a color-filled circle
591
+ attach_function :draw_circle, :DrawCircle, [:int, :int, :float, Color.by_value], :void
592
+
593
+ # Draw a piece of a circle
594
+ attach_function :draw_circle_sector, :DrawCircleSector, [Vector2.by_value, :float, :float, :float, :int, Color.by_value], :void
595
+
596
+ # Draw circle sector outline
597
+ attach_function :draw_circle_sector_lines, :DrawCircleSectorLines, [Vector2.by_value, :float, :float, :float, :int, Color.by_value], :void
598
+
599
+ # Draw a gradient-filled circle
600
+ attach_function :draw_circle_gradient, :DrawCircleGradient, [:int, :int, :float, Color.by_value, Color.by_value], :void
601
+
602
+ # Draw a color-filled circle (Vector version)
603
+ attach_function :draw_circle_v, :DrawCircleV, [Vector2.by_value, :float, Color.by_value], :void
604
+
605
+ # Draw circle outline
606
+ attach_function :draw_circle_lines, :DrawCircleLines, [:int, :int, :float, Color.by_value], :void
607
+
608
+ # Draw ellipse
609
+ attach_function :draw_ellipse, :DrawEllipse, [:int, :int, :float, :float, Color.by_value], :void
610
+
611
+ # Draw ellipse outline
612
+ attach_function :draw_ellipse_lines, :DrawEllipseLines, [:int, :int, :float, :float, Color.by_value], :void
613
+
614
+ # Draw ring
615
+ attach_function :draw_ring, :DrawRing, [Vector2.by_value, :float, :float, :float, :float, :int, Color.by_value], :void
616
+
617
+ # Draw ring outline
618
+ attach_function :draw_ring_lines, :DrawRingLines, [Vector2.by_value, :float, :float, :float, :float, :int, Color.by_value], :void
619
+
620
+ # Draw a color-filled rectangle
621
+ attach_function :draw_rectangle, :DrawRectangle, [:int, :int, :int, :int, Color.by_value], :void
622
+
623
+ # Draw a color-filled rectangle (Vector version)
624
+ attach_function :draw_rectangle_v, :DrawRectangleV, [Vector2.by_value, Vector2.by_value, Color.by_value], :void
625
+
626
+ # Draw a color-filled rectangle
627
+ attach_function :draw_rectangle_rec, :DrawRectangleRec, [Rectangle.by_value, Color.by_value], :void
628
+
629
+ # Draw a color-filled rectangle with pro parameters
630
+ attach_function :draw_rectangle_pro, :DrawRectanglePro, [Rectangle.by_value, Vector2.by_value, :float, Color.by_value], :void
631
+
632
+ # Draw a vertical-gradient-filled rectangle
633
+ attach_function :draw_rectangle_gradient_v, :DrawRectangleGradientV, [:int, :int, :int, :int, Color.by_value, Color.by_value], :void
634
+
635
+ # Draw a horizontal-gradient-filled rectangle
636
+ attach_function :draw_rectangle_gradient_h, :DrawRectangleGradientH, [:int, :int, :int, :int, Color.by_value, Color.by_value], :void
637
+
638
+ # Draw a gradient-filled rectangle with custom vertex colors
639
+ attach_function :draw_rectangle_gradient_ex, :DrawRectangleGradientEx, [Rectangle.by_value, Color.by_value, Color.by_value, Color.by_value, Color.by_value], :void
640
+
641
+ # Draw rectangle outline
642
+ attach_function :draw_rectangle_lines, :DrawRectangleLines, [:int, :int, :int, :int, Color.by_value], :void
643
+
644
+ # Draw rectangle outline with extended parameters
645
+ attach_function :draw_rectangle_lines_ex, :DrawRectangleLinesEx, [Rectangle.by_value, :float, Color.by_value], :void
646
+
647
+ # Draw rectangle with rounded edges
648
+ attach_function :draw_rectangle_rounded, :DrawRectangleRounded, [Rectangle.by_value, :float, :int, Color.by_value], :void
649
+
650
+ # Draw rectangle with rounded edges outline
651
+ attach_function :draw_rectangle_rounded_lines, :DrawRectangleRoundedLines, [Rectangle.by_value, :float, :int, :float, Color.by_value], :void
652
+
653
+ # Draw a color-filled triangle (vertex in counter-clockwise order!)
654
+ attach_function :draw_triangle, :DrawTriangle, [Vector2.by_value, Vector2.by_value, Vector2.by_value, Color.by_value], :void
655
+
656
+ # Draw triangle outline (vertex in counter-clockwise order!)
657
+ attach_function :draw_triangle_lines, :DrawTriangleLines, [Vector2.by_value, Vector2.by_value, Vector2.by_value, Color.by_value], :void
658
+
659
+ # Draw a triangle fan defined by points (first vertex is the center)
660
+ attach_function :draw_triangle_fan, :DrawTriangleFan, [:pointer, :int, Color.by_value], :void
661
+
662
+ # Draw a triangle strip defined by points
663
+ attach_function :draw_triangle_strip, :DrawTriangleStrip, [:pointer, :int, Color.by_value], :void
664
+
665
+ # Draw a regular polygon (Vector version)
666
+ attach_function :draw_poly, :DrawPoly, [Vector2.by_value, :int, :float, :float, Color.by_value], :void
667
+
668
+ # Draw a polygon outline of n sides
669
+ attach_function :draw_poly_lines, :DrawPolyLines, [Vector2.by_value, :int, :float, :float, Color.by_value], :void
670
+
671
+ # Draw a polygon outline of n sides with extended parameters
672
+ attach_function :draw_poly_lines_ex, :DrawPolyLinesEx, [Vector2.by_value, :int, :float, :float, :float, Color.by_value], :void
673
+
674
+ # Check collision between two rectangles
675
+ attach_function :check_collision_recs, :CheckCollisionRecs, [Rectangle.by_value, Rectangle.by_value], :bool
676
+
677
+ # Check collision between two circles
678
+ attach_function :check_collision_circles, :CheckCollisionCircles, [Vector2.by_value, :float, Vector2.by_value, :float], :bool
679
+
680
+ # Check collision between circle and rectangle
681
+ attach_function :check_collision_circle_rec, :CheckCollisionCircleRec, [Vector2.by_value, :float, Rectangle.by_value], :bool
682
+
683
+ # Check if point is inside rectangle
684
+ attach_function :check_collision_point_rec, :CheckCollisionPointRec, [Vector2.by_value, Rectangle.by_value], :bool
685
+
686
+ # Check if point is inside circle
687
+ attach_function :check_collision_point_circle, :CheckCollisionPointCircle, [Vector2.by_value, Vector2.by_value, :float], :bool
688
+
689
+ # Check if point is inside a triangle
690
+ attach_function :check_collision_point_triangle, :CheckCollisionPointTriangle, [Vector2.by_value, Vector2.by_value, Vector2.by_value, Vector2.by_value], :bool
691
+
692
+ # Check if point is within a polygon described by array of vertices
693
+ attach_function :check_collision_point_poly, :CheckCollisionPointPoly, [Vector2.by_value, :pointer, :int], :bool
694
+
695
+ # Check the collision between two lines defined by two points each, returns collision point by reference
696
+ attach_function :check_collision_lines, :CheckCollisionLines, [Vector2.by_value, Vector2.by_value, Vector2.by_value, Vector2.by_value, :pointer], :bool
697
+
698
+ # Check if point belongs to line created between two points [p1] and [p2] with defined margin in pixels [threshold]
699
+ attach_function :check_collision_point_line, :CheckCollisionPointLine, [Vector2.by_value, Vector2.by_value, Vector2.by_value, :int], :bool
700
+
701
+ # Get collision rectangle for two rectangles collision
702
+ attach_function :get_collision_rec, :GetCollisionRec, [Rectangle.by_value, Rectangle.by_value], Rectangle.by_value
703
+
704
+ # Load image from file into CPU memory (RAM)
705
+ attach_function :load_image, :LoadImage, [:pointer], Image.by_value
706
+
707
+ # Load image from RAW file data
708
+ attach_function :load_image_raw, :LoadImageRaw, [:pointer, :int, :int, :int, :int], Image.by_value
709
+
710
+ # Load image sequence from file (frames appended to image.data)
711
+ attach_function :load_image_anim, :LoadImageAnim, [:pointer, :pointer], Image.by_value
712
+
713
+ # Load image from memory buffer, fileType refers to extension: i.e. '.png'
714
+ attach_function :load_image_from_memory, :LoadImageFromMemory, [:pointer, :pointer, :int], Image.by_value
715
+
716
+ # Load image from GPU texture data
717
+ attach_function :load_image_from_texture, :LoadImageFromTexture, [Texture2D.by_value], Image.by_value
718
+
719
+ # Load image from screen buffer and (screenshot)
720
+ attach_function :load_image_from_screen, :LoadImageFromScreen, [], Image.by_value
721
+
722
+ # Check if an image is ready
723
+ attach_function :is_image_ready, :IsImageReady, [Image.by_value], :bool
724
+
725
+ # Unload image from CPU memory (RAM)
726
+ attach_function :unload_image, :UnloadImage, [Image.by_value], :void
727
+
728
+ # Export image data to file, returns true on success
729
+ attach_function :export_image, :ExportImage, [Image.by_value, :pointer], :bool
730
+
731
+ # Export image as code file defining an array of bytes, returns true on success
732
+ attach_function :export_image_as_code, :ExportImageAsCode, [Image.by_value, :pointer], :bool
733
+
734
+ # Generate image: plain color
735
+ attach_function :gen_image_color, :GenImageColor, [:int, :int, Color.by_value], Image.by_value
736
+
737
+ # Generate image: vertical gradient
738
+ attach_function :gen_image_gradient_v, :GenImageGradientV, [:int, :int, Color.by_value, Color.by_value], Image.by_value
739
+
740
+ # Generate image: horizontal gradient
741
+ attach_function :gen_image_gradient_h, :GenImageGradientH, [:int, :int, Color.by_value, Color.by_value], Image.by_value
742
+
743
+ # Generate image: radial gradient
744
+ attach_function :gen_image_gradient_radial, :GenImageGradientRadial, [:int, :int, :float, Color.by_value, Color.by_value], Image.by_value
745
+
746
+ # Generate image: checked
747
+ attach_function :gen_image_checked, :GenImageChecked, [:int, :int, :int, :int, Color.by_value, Color.by_value], Image.by_value
748
+
749
+ # Generate image: white noise
750
+ attach_function :gen_image_white_noise, :GenImageWhiteNoise, [:int, :int, :float], Image.by_value
751
+
752
+ # Generate image: perlin noise
753
+ attach_function :gen_image_perlin_noise, :GenImagePerlinNoise, [:int, :int, :int, :int, :float], Image.by_value
754
+
755
+ # Generate image: cellular algorithm, bigger tileSize means bigger cells
756
+ attach_function :gen_image_cellular, :GenImageCellular, [:int, :int, :int], Image.by_value
757
+
758
+ # Generate image: grayscale image from text data
759
+ attach_function :gen_image_text, :GenImageText, [:int, :int, :pointer], Image.by_value
760
+
761
+ # Create an image duplicate (useful for transformations)
762
+ attach_function :image_copy, :ImageCopy, [Image.by_value], Image.by_value
763
+
764
+ # Create an image from another image piece
765
+ attach_function :image_from_image, :ImageFromImage, [Image.by_value, Rectangle.by_value], Image.by_value
766
+
767
+ # Create an image from text (default font)
768
+ attach_function :image_text, :ImageText, [:pointer, :int, Color.by_value], Image.by_value
769
+
770
+ # Create an image from text (custom sprite font)
771
+ attach_function :image_text_ex, :ImageTextEx, [Font.by_value, :pointer, :float, :float, Color.by_value], Image.by_value
772
+
773
+ # Convert image data to desired format
774
+ attach_function :image_format, :ImageFormat, [:pointer, :int], :void
775
+
776
+ # Convert image to POT (power-of-two)
777
+ attach_function :image_to_pot, :ImageToPOT, [:pointer, Color.by_value], :void
778
+
779
+ # Crop an image to a defined rectangle
780
+ attach_function :image_crop, :ImageCrop, [:pointer, Rectangle.by_value], :void
781
+
782
+ # Crop image depending on alpha value
783
+ attach_function :image_alpha_crop, :ImageAlphaCrop, [:pointer, :float], :void
784
+
785
+ # Clear alpha channel to desired color
786
+ attach_function :image_alpha_clear, :ImageAlphaClear, [:pointer, Color.by_value, :float], :void
787
+
788
+ # Apply alpha mask to image
789
+ attach_function :image_alpha_mask, :ImageAlphaMask, [:pointer, Image.by_value], :void
790
+
791
+ # Premultiply alpha channel
792
+ attach_function :image_alpha_premultiply, :ImageAlphaPremultiply, [:pointer], :void
793
+
794
+ # Apply Gaussian blur using a box blur approximation
795
+ attach_function :image_blur_gaussian, :ImageBlurGaussian, [:pointer, :int], :void
796
+
797
+ # Resize image (Bicubic scaling algorithm)
798
+ attach_function :image_resize, :ImageResize, [:pointer, :int, :int], :void
799
+
800
+ # Resize image (Nearest-Neighbor scaling algorithm)
801
+ attach_function :image_resize_nn, :ImageResizeNN, [:pointer, :int, :int], :void
802
+
803
+ # Resize canvas and fill with color
804
+ attach_function :image_resize_canvas, :ImageResizeCanvas, [:pointer, :int, :int, :int, :int, Color.by_value], :void
805
+
806
+ # Compute all mipmap levels for a provided image
807
+ attach_function :image_mipmaps, :ImageMipmaps, [:pointer], :void
808
+
809
+ # Dither image data to 16bpp or lower (Floyd-Steinberg dithering)
810
+ attach_function :image_dither, :ImageDither, [:pointer, :int, :int, :int, :int], :void
811
+
812
+ # Flip image vertically
813
+ attach_function :image_flip_vertical, :ImageFlipVertical, [:pointer], :void
814
+
815
+ # Flip image horizontally
816
+ attach_function :image_flip_horizontal, :ImageFlipHorizontal, [:pointer], :void
817
+
818
+ # Rotate image clockwise 90deg
819
+ attach_function :image_rotate_cw, :ImageRotateCW, [:pointer], :void
820
+
821
+ # Rotate image counter-clockwise 90deg
822
+ attach_function :image_rotate_ccw, :ImageRotateCCW, [:pointer], :void
823
+
824
+ # Modify image color: tint
825
+ attach_function :image_color_tint, :ImageColorTint, [:pointer, Color.by_value], :void
826
+
827
+ # Modify image color: invert
828
+ attach_function :image_color_invert, :ImageColorInvert, [:pointer], :void
829
+
830
+ # Modify image color: grayscale
831
+ attach_function :image_color_grayscale, :ImageColorGrayscale, [:pointer], :void
832
+
833
+ # Modify image color: contrast (-100 to 100)
834
+ attach_function :image_color_contrast, :ImageColorContrast, [:pointer, :float], :void
835
+
836
+ # Modify image color: brightness (-255 to 255)
837
+ attach_function :image_color_brightness, :ImageColorBrightness, [:pointer, :int], :void
838
+
839
+ # Modify image color: replace color
840
+ attach_function :image_color_replace, :ImageColorReplace, [:pointer, Color.by_value, Color.by_value], :void
841
+
842
+ # Load color data from image as a Color array (RGBA - 32bit)
843
+ attach_function :load_image_colors, :LoadImageColors, [Image.by_value], :pointer
844
+
845
+ # Load colors palette from image as a Color array (RGBA - 32bit)
846
+ attach_function :load_image_palette, :LoadImagePalette, [Image.by_value, :int, :pointer], :pointer
847
+
848
+ # Unload color data loaded with LoadImageColors()
849
+ attach_function :unload_image_colors, :UnloadImageColors, [:pointer], :void
850
+
851
+ # Unload colors palette loaded with LoadImagePalette()
852
+ attach_function :unload_image_palette, :UnloadImagePalette, [:pointer], :void
853
+
854
+ # Get image alpha border rectangle
855
+ attach_function :get_image_alpha_border, :GetImageAlphaBorder, [Image.by_value, :float], Rectangle.by_value
856
+
857
+ # Get image pixel color at (x, y) position
858
+ attach_function :get_image_color, :GetImageColor, [Image.by_value, :int, :int], Color.by_value
859
+
860
+ # Clear image background with given color
861
+ attach_function :image_clear_background, :ImageClearBackground, [:pointer, Color.by_value], :void
862
+
863
+ # Draw pixel within an image
864
+ attach_function :image_draw_pixel, :ImageDrawPixel, [:pointer, :int, :int, Color.by_value], :void
865
+
866
+ # Draw pixel within an image (Vector version)
867
+ attach_function :image_draw_pixel_v, :ImageDrawPixelV, [:pointer, Vector2.by_value, Color.by_value], :void
868
+
869
+ # Draw line within an image
870
+ attach_function :image_draw_line, :ImageDrawLine, [:pointer, :int, :int, :int, :int, Color.by_value], :void
871
+
872
+ # Draw line within an image (Vector version)
873
+ attach_function :image_draw_line_v, :ImageDrawLineV, [:pointer, Vector2.by_value, Vector2.by_value, Color.by_value], :void
874
+
875
+ # Draw a filled circle within an image
876
+ attach_function :image_draw_circle, :ImageDrawCircle, [:pointer, :int, :int, :int, Color.by_value], :void
877
+
878
+ # Draw a filled circle within an image (Vector version)
879
+ attach_function :image_draw_circle_v, :ImageDrawCircleV, [:pointer, Vector2.by_value, :int, Color.by_value], :void
880
+
881
+ # Draw circle outline within an image
882
+ attach_function :image_draw_circle_lines, :ImageDrawCircleLines, [:pointer, :int, :int, :int, Color.by_value], :void
883
+
884
+ # Draw circle outline within an image (Vector version)
885
+ attach_function :image_draw_circle_lines_v, :ImageDrawCircleLinesV, [:pointer, Vector2.by_value, :int, Color.by_value], :void
886
+
887
+ # Draw rectangle within an image
888
+ attach_function :image_draw_rectangle, :ImageDrawRectangle, [:pointer, :int, :int, :int, :int, Color.by_value], :void
889
+
890
+ # Draw rectangle within an image (Vector version)
891
+ attach_function :image_draw_rectangle_v, :ImageDrawRectangleV, [:pointer, Vector2.by_value, Vector2.by_value, Color.by_value], :void
892
+
893
+ # Draw rectangle within an image
894
+ attach_function :image_draw_rectangle_rec, :ImageDrawRectangleRec, [:pointer, Rectangle.by_value, Color.by_value], :void
895
+
896
+ # Draw rectangle lines within an image
897
+ attach_function :image_draw_rectangle_lines, :ImageDrawRectangleLines, [:pointer, Rectangle.by_value, :int, Color.by_value], :void
898
+
899
+ # Draw a source image within a destination image (tint applied to source)
900
+ attach_function :image_draw, :ImageDraw, [:pointer, Image.by_value, Rectangle.by_value, Rectangle.by_value, Color.by_value], :void
901
+
902
+ # Draw text (using default font) within an image (destination)
903
+ attach_function :image_draw_text, :ImageDrawText, [:pointer, :pointer, :int, :int, :int, Color.by_value], :void
904
+
905
+ # Draw text (custom sprite font) within an image (destination)
906
+ attach_function :image_draw_text_ex, :ImageDrawTextEx, [:pointer, Font.by_value, :pointer, Vector2.by_value, :float, :float, Color.by_value], :void
907
+
908
+ # Load texture from file into GPU memory (VRAM)
909
+ attach_function :load_texture, :LoadTexture, [:pointer], Texture2D.by_value
910
+
911
+ # Load texture from image data
912
+ attach_function :load_texture_from_image, :LoadTextureFromImage, [Image.by_value], Texture2D.by_value
913
+
914
+ # Load cubemap from image, multiple image cubemap layouts supported
915
+ attach_function :load_texture_cubemap, :LoadTextureCubemap, [Image.by_value, :int], TextureCubemap.by_value
916
+
917
+ # Load texture for rendering (framebuffer)
918
+ attach_function :load_render_texture, :LoadRenderTexture, [:int, :int], RenderTexture2D.by_value
919
+
920
+ # Check if a texture is ready
921
+ attach_function :is_texture_ready, :IsTextureReady, [Texture2D.by_value], :bool
922
+
923
+ # Unload texture from GPU memory (VRAM)
924
+ attach_function :unload_texture, :UnloadTexture, [Texture2D.by_value], :void
925
+
926
+ # Check if a render texture is ready
927
+ attach_function :is_render_texture_ready, :IsRenderTextureReady, [RenderTexture2D.by_value], :bool
928
+
929
+ # Unload render texture from GPU memory (VRAM)
930
+ attach_function :unload_render_texture, :UnloadRenderTexture, [RenderTexture2D.by_value], :void
931
+
932
+ # Update GPU texture with new data
933
+ attach_function :update_texture, :UpdateTexture, [Texture2D.by_value, :pointer], :void
934
+
935
+ # Update GPU texture rectangle with new data
936
+ attach_function :update_texture_rec, :UpdateTextureRec, [Texture2D.by_value, Rectangle.by_value, :pointer], :void
937
+
938
+ # Generate GPU mipmaps for a texture
939
+ attach_function :gen_texture_mipmaps, :GenTextureMipmaps, [:pointer], :void
940
+
941
+ # Set texture scaling filter mode
942
+ attach_function :set_texture_filter, :SetTextureFilter, [Texture2D.by_value, :int], :void
943
+
944
+ # Set texture wrapping mode
945
+ attach_function :set_texture_wrap, :SetTextureWrap, [Texture2D.by_value, :int], :void
946
+
947
+ # Draw a Texture2D
948
+ attach_function :draw_texture, :DrawTexture, [Texture2D.by_value, :int, :int, Color.by_value], :void
949
+
950
+ # Draw a Texture2D with position defined as Vector2
951
+ attach_function :draw_texture_v, :DrawTextureV, [Texture2D.by_value, Vector2.by_value, Color.by_value], :void
952
+
953
+ # Draw a Texture2D with extended parameters
954
+ attach_function :draw_texture_ex, :DrawTextureEx, [Texture2D.by_value, Vector2.by_value, :float, :float, Color.by_value], :void
955
+
956
+ # Draw a part of a texture defined by a rectangle
957
+ attach_function :draw_texture_rec, :DrawTextureRec, [Texture2D.by_value, Rectangle.by_value, Vector2.by_value, Color.by_value], :void
958
+
959
+ # Draw a part of a texture defined by a rectangle with 'pro' parameters
960
+ attach_function :draw_texture_pro, :DrawTexturePro, [Texture2D.by_value, Rectangle.by_value, Rectangle.by_value, Vector2.by_value, :float, Color.by_value], :void
961
+
962
+ # Draws a texture (or part of it) that stretches or shrinks nicely
963
+ attach_function :draw_texture_n_patch, :DrawTextureNPatch, [Texture2D.by_value, NPatchInfo.by_value, Rectangle.by_value, Vector2.by_value, :float, Color.by_value], :void
964
+
965
+ # Get color with alpha applied, alpha goes from 0.0f to 1.0f
966
+ attach_function :fade, :Fade, [Color.by_value, :float], Color.by_value
967
+
968
+ # Get hexadecimal value for a Color
969
+ attach_function :color_to_int, :ColorToInt, [Color.by_value], :int
970
+
971
+ # Get Color normalized as float [0..1]
972
+ attach_function :color_normalize, :ColorNormalize, [Color.by_value], Vector4.by_value
973
+
974
+ # Get Color from normalized values [0..1]
975
+ attach_function :color_from_normalized, :ColorFromNormalized, [Vector4.by_value], Color.by_value
976
+
977
+ # Get HSV values for a Color, hue [0..360], saturation/value [0..1]
978
+ attach_function :color_to_hsv, :ColorToHSV, [Color.by_value], Vector3.by_value
979
+
980
+ # Get a Color from HSV values, hue [0..360], saturation/value [0..1]
981
+ attach_function :color_from_hsv, :ColorFromHSV, [:float, :float, :float], Color.by_value
982
+
983
+ # Get color multiplied with another color
984
+ attach_function :color_tint, :ColorTint, [Color.by_value, Color.by_value], Color.by_value
985
+
986
+ # Get color with brightness correction, brightness factor goes from -1.0f to 1.0f
987
+ attach_function :color_brightness, :ColorBrightness, [Color.by_value, :float], Color.by_value
988
+
989
+ # Get color with contrast correction, contrast values between -1.0f and 1.0f
990
+ attach_function :color_contrast, :ColorContrast, [Color.by_value, :float], Color.by_value
991
+
992
+ # Get color with alpha applied, alpha goes from 0.0f to 1.0f
993
+ attach_function :color_alpha, :ColorAlpha, [Color.by_value, :float], Color.by_value
994
+
995
+ # Get src alpha-blended into dst color with tint
996
+ attach_function :color_alpha_blend, :ColorAlphaBlend, [Color.by_value, Color.by_value, Color.by_value], Color.by_value
997
+
998
+ # Get Color structure from hexadecimal value
999
+ attach_function :get_color, :GetColor, [:uint], Color.by_value
1000
+
1001
+ # Get Color from a source pixel pointer of certain format
1002
+ attach_function :get_pixel_color, :GetPixelColor, [:pointer, :int], Color.by_value
1003
+
1004
+ # Set color formatted into destination pixel pointer
1005
+ attach_function :set_pixel_color, :SetPixelColor, [:pointer, Color.by_value, :int], :void
1006
+
1007
+ # Get pixel data size in bytes for certain format
1008
+ attach_function :get_pixel_data_size, :GetPixelDataSize, [:int, :int, :int], :int
1009
+
1010
+ # Get the default Font
1011
+ attach_function :get_font_default, :GetFontDefault, [], Font.by_value
1012
+
1013
+ # Load font from file into GPU memory (VRAM)
1014
+ attach_function :load_font, :LoadFont, [:pointer], Font.by_value
1015
+
1016
+ # Load font from file with extended parameters, use NULL for fontChars and 0 for glyphCount to load the default character set
1017
+ attach_function :load_font_ex, :LoadFontEx, [:pointer, :int, :pointer, :int], Font.by_value
1018
+
1019
+ # Load font from Image (XNA style)
1020
+ attach_function :load_font_from_image, :LoadFontFromImage, [Image.by_value, Color.by_value, :int], Font.by_value
1021
+
1022
+ # Load font from memory buffer, fileType refers to extension: i.e. '.ttf'
1023
+ attach_function :load_font_from_memory, :LoadFontFromMemory, [:pointer, :pointer, :int, :int, :pointer, :int], Font.by_value
1024
+
1025
+ # Check if a font is ready
1026
+ attach_function :is_font_ready, :IsFontReady, [Font.by_value], :bool
1027
+
1028
+ # Load font data for further use
1029
+ attach_function :load_font_data, :LoadFontData, [:pointer, :int, :int, :pointer, :int, :int], :pointer
1030
+
1031
+ # Generate image font atlas using chars info
1032
+ attach_function :gen_image_font_atlas, :GenImageFontAtlas, [:pointer, :pointer, :int, :int, :int, :int], Image.by_value
1033
+
1034
+ # Unload font chars info data (RAM)
1035
+ attach_function :unload_font_data, :UnloadFontData, [:pointer, :int], :void
1036
+
1037
+ # Unload font from GPU memory (VRAM)
1038
+ attach_function :unload_font, :UnloadFont, [Font.by_value], :void
1039
+
1040
+ # Export font as code file, returns true on success
1041
+ attach_function :export_font_as_code, :ExportFontAsCode, [Font.by_value, :pointer], :bool
1042
+
1043
+ # Draw current FPS
1044
+ attach_function :draw_fps, :DrawFPS, [:int, :int], :void
1045
+
1046
+ # Draw text (using default font)
1047
+ attach_function :draw_text, :DrawText, [:pointer, :int, :int, :int, Color.by_value], :void
1048
+
1049
+ # Draw text using font and additional parameters
1050
+ attach_function :draw_text_ex, :DrawTextEx, [Font.by_value, :pointer, Vector2.by_value, :float, :float, Color.by_value], :void
1051
+
1052
+ # Draw text using Font and pro parameters (rotation)
1053
+ attach_function :draw_text_pro, :DrawTextPro, [Font.by_value, :pointer, Vector2.by_value, Vector2.by_value, :float, :float, :float, Color.by_value], :void
1054
+
1055
+ # Draw one character (codepoint)
1056
+ attach_function :draw_text_codepoint, :DrawTextCodepoint, [Font.by_value, :int, Vector2.by_value, :float, Color.by_value], :void
1057
+
1058
+ # Draw multiple character (codepoint)
1059
+ attach_function :draw_text_codepoints, :DrawTextCodepoints, [Font.by_value, :pointer, :int, Vector2.by_value, :float, :float, Color.by_value], :void
1060
+
1061
+ # Measure string width for default font
1062
+ attach_function :measure_text, :MeasureText, [:pointer, :int], :int
1063
+
1064
+ # Measure string size for Font
1065
+ attach_function :measure_text_ex, :MeasureTextEx, [Font.by_value, :pointer, :float, :float], Vector2.by_value
1066
+
1067
+ # Get glyph index position in font for a codepoint (unicode character), fallback to '?' if not found
1068
+ attach_function :get_glyph_index, :GetGlyphIndex, [Font.by_value, :int], :int
1069
+
1070
+ # Get glyph font info data for a codepoint (unicode character), fallback to '?' if not found
1071
+ attach_function :get_glyph_info, :GetGlyphInfo, [Font.by_value, :int], GlyphInfo.by_value
1072
+
1073
+ # Get glyph rectangle in font atlas for a codepoint (unicode character), fallback to '?' if not found
1074
+ attach_function :get_glyph_atlas_rec, :GetGlyphAtlasRec, [Font.by_value, :int], Rectangle.by_value
1075
+
1076
+ # Load UTF-8 text encoded from codepoints array
1077
+ attach_function :load_utf8, :LoadUTF8, [:pointer, :int], :pointer
1078
+
1079
+ # Unload UTF-8 text encoded from codepoints array
1080
+ attach_function :unload_utf8, :UnloadUTF8, [:pointer], :void
1081
+
1082
+ # Load all codepoints from a UTF-8 text string, codepoints count returned by parameter
1083
+ attach_function :load_codepoints, :LoadCodepoints, [:pointer, :pointer], :pointer
1084
+
1085
+ # Unload codepoints data from memory
1086
+ attach_function :unload_codepoints, :UnloadCodepoints, [:pointer], :void
1087
+
1088
+ # Get total number of codepoints in a UTF-8 encoded string
1089
+ attach_function :get_codepoint_count, :GetCodepointCount, [:pointer], :int
1090
+
1091
+ # Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure
1092
+ attach_function :get_codepoint, :GetCodepoint, [:pointer, :pointer], :int
1093
+
1094
+ # Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure
1095
+ attach_function :get_codepoint_next, :GetCodepointNext, [:pointer, :pointer], :int
1096
+
1097
+ # Get previous codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure
1098
+ attach_function :get_codepoint_previous, :GetCodepointPrevious, [:pointer, :pointer], :int
1099
+
1100
+ # Encode one codepoint into UTF-8 byte array (array length returned as parameter)
1101
+ attach_function :codepoint_to_utf8, :CodepointToUTF8, [:int, :pointer], :pointer
1102
+
1103
+ # Copy one string to another, returns bytes copied
1104
+ attach_function :text_copy, :TextCopy, [:pointer, :pointer], :int
1105
+
1106
+ # Check if two text string are equal
1107
+ attach_function :text_is_equal, :TextIsEqual, [:pointer, :pointer], :bool
1108
+
1109
+ # Get text length, checks for '\0' ending
1110
+ attach_function :text_length, :TextLength, [:pointer], :uint
1111
+
1112
+ # Text formatting with variables (sprintf() style)
1113
+ attach_function :text_format, :TextFormat, [:pointer, :varargs], :pointer
1114
+
1115
+ # Get a piece of a text string
1116
+ attach_function :text_subtext, :TextSubtext, [:pointer, :int, :int], :pointer
1117
+
1118
+ # Replace text string (WARNING: memory must be freed!)
1119
+ attach_function :text_replace, :TextReplace, [:pointer, :pointer, :pointer], :pointer
1120
+
1121
+ # Insert text in a position (WARNING: memory must be freed!)
1122
+ attach_function :text_insert, :TextInsert, [:pointer, :pointer, :int], :pointer
1123
+
1124
+ # Join text strings with delimiter
1125
+ attach_function :text_join, :TextJoin, [:pointer, :int, :pointer], :pointer
1126
+
1127
+ # Split text into multiple strings
1128
+ attach_function :text_split, :TextSplit, [:pointer, :char, :pointer], :pointer
1129
+
1130
+ # Append text at specific position and move cursor!
1131
+ attach_function :text_append, :TextAppend, [:pointer, :pointer, :pointer], :void
1132
+
1133
+ # Find first text occurrence within a string
1134
+ attach_function :text_find_index, :TextFindIndex, [:pointer, :pointer], :int
1135
+
1136
+ # Get upper case version of provided string
1137
+ attach_function :text_to_upper, :TextToUpper, [:pointer], :pointer
1138
+
1139
+ # Get lower case version of provided string
1140
+ attach_function :text_to_lower, :TextToLower, [:pointer], :pointer
1141
+
1142
+ # Get Pascal case notation version of provided string
1143
+ attach_function :text_to_pascal, :TextToPascal, [:pointer], :pointer
1144
+
1145
+ # Get integer value from text (negative values not supported)
1146
+ attach_function :text_to_integer, :TextToInteger, [:pointer], :int
1147
+
1148
+ # Draw a line in 3D world space
1149
+ attach_function :draw_line3_d, :DrawLine3D, [Vector3.by_value, Vector3.by_value, Color.by_value], :void
1150
+
1151
+ # Draw a point in 3D space, actually a small line
1152
+ attach_function :draw_point3_d, :DrawPoint3D, [Vector3.by_value, Color.by_value], :void
1153
+
1154
+ # Draw a circle in 3D world space
1155
+ attach_function :draw_circle3_d, :DrawCircle3D, [Vector3.by_value, :float, Vector3.by_value, :float, Color.by_value], :void
1156
+
1157
+ # Draw a color-filled triangle (vertex in counter-clockwise order!)
1158
+ attach_function :draw_triangle3_d, :DrawTriangle3D, [Vector3.by_value, Vector3.by_value, Vector3.by_value, Color.by_value], :void
1159
+
1160
+ # Draw a triangle strip defined by points
1161
+ attach_function :draw_triangle_strip3_d, :DrawTriangleStrip3D, [:pointer, :int, Color.by_value], :void
1162
+
1163
+ # Draw cube
1164
+ attach_function :draw_cube, :DrawCube, [Vector3.by_value, :float, :float, :float, Color.by_value], :void
1165
+
1166
+ # Draw cube (Vector version)
1167
+ attach_function :draw_cube_v, :DrawCubeV, [Vector3.by_value, Vector3.by_value, Color.by_value], :void
1168
+
1169
+ # Draw cube wires
1170
+ attach_function :draw_cube_wires, :DrawCubeWires, [Vector3.by_value, :float, :float, :float, Color.by_value], :void
1171
+
1172
+ # Draw cube wires (Vector version)
1173
+ attach_function :draw_cube_wires_v, :DrawCubeWiresV, [Vector3.by_value, Vector3.by_value, Color.by_value], :void
1174
+
1175
+ # Draw sphere
1176
+ attach_function :draw_sphere, :DrawSphere, [Vector3.by_value, :float, Color.by_value], :void
1177
+
1178
+ # Draw sphere with extended parameters
1179
+ attach_function :draw_sphere_ex, :DrawSphereEx, [Vector3.by_value, :float, :int, :int, Color.by_value], :void
1180
+
1181
+ # Draw sphere wires
1182
+ attach_function :draw_sphere_wires, :DrawSphereWires, [Vector3.by_value, :float, :int, :int, Color.by_value], :void
1183
+
1184
+ # Draw a cylinder/cone
1185
+ attach_function :draw_cylinder, :DrawCylinder, [Vector3.by_value, :float, :float, :float, :int, Color.by_value], :void
1186
+
1187
+ # Draw a cylinder with base at startPos and top at endPos
1188
+ attach_function :draw_cylinder_ex, :DrawCylinderEx, [Vector3.by_value, Vector3.by_value, :float, :float, :int, Color.by_value], :void
1189
+
1190
+ # Draw a cylinder/cone wires
1191
+ attach_function :draw_cylinder_wires, :DrawCylinderWires, [Vector3.by_value, :float, :float, :float, :int, Color.by_value], :void
1192
+
1193
+ # Draw a cylinder wires with base at startPos and top at endPos
1194
+ attach_function :draw_cylinder_wires_ex, :DrawCylinderWiresEx, [Vector3.by_value, Vector3.by_value, :float, :float, :int, Color.by_value], :void
1195
+
1196
+ # Draw a capsule with the center of its sphere caps at startPos and endPos
1197
+ attach_function :draw_capsule, :DrawCapsule, [Vector3.by_value, Vector3.by_value, :float, :int, :int, Color.by_value], :void
1198
+
1199
+ # Draw capsule wireframe with the center of its sphere caps at startPos and endPos
1200
+ attach_function :draw_capsule_wires, :DrawCapsuleWires, [Vector3.by_value, Vector3.by_value, :float, :int, :int, Color.by_value], :void
1201
+
1202
+ # Draw a plane XZ
1203
+ attach_function :draw_plane, :DrawPlane, [Vector3.by_value, Vector2.by_value, Color.by_value], :void
1204
+
1205
+ # Draw a ray line
1206
+ attach_function :draw_ray, :DrawRay, [Ray.by_value, Color.by_value], :void
1207
+
1208
+ # Draw a grid (centered at (0, 0, 0))
1209
+ attach_function :draw_grid, :DrawGrid, [:int, :float], :void
1210
+
1211
+ # Load model from files (meshes and materials)
1212
+ attach_function :load_model, :LoadModel, [:pointer], Model.by_value
1213
+
1214
+ # Load model from generated mesh (default material)
1215
+ attach_function :load_model_from_mesh, :LoadModelFromMesh, [Mesh.by_value], Model.by_value
1216
+
1217
+ # Check if a model is ready
1218
+ attach_function :is_model_ready, :IsModelReady, [Model.by_value], :bool
1219
+
1220
+ # Unload model (including meshes) from memory (RAM and/or VRAM)
1221
+ attach_function :unload_model, :UnloadModel, [Model.by_value], :void
1222
+
1223
+ # Compute model bounding box limits (considers all meshes)
1224
+ attach_function :get_model_bounding_box, :GetModelBoundingBox, [Model.by_value], BoundingBox.by_value
1225
+
1226
+ # Draw a model (with texture if set)
1227
+ attach_function :draw_model, :DrawModel, [Model.by_value, Vector3.by_value, :float, Color.by_value], :void
1228
+
1229
+ # Draw a model with extended parameters
1230
+ attach_function :draw_model_ex, :DrawModelEx, [Model.by_value, Vector3.by_value, Vector3.by_value, :float, Vector3.by_value, Color.by_value], :void
1231
+
1232
+ # Draw a model wires (with texture if set)
1233
+ attach_function :draw_model_wires, :DrawModelWires, [Model.by_value, Vector3.by_value, :float, Color.by_value], :void
1234
+
1235
+ # Draw a model wires (with texture if set) with extended parameters
1236
+ attach_function :draw_model_wires_ex, :DrawModelWiresEx, [Model.by_value, Vector3.by_value, Vector3.by_value, :float, Vector3.by_value, Color.by_value], :void
1237
+
1238
+ # Draw bounding box (wires)
1239
+ attach_function :draw_bounding_box, :DrawBoundingBox, [BoundingBox.by_value, Color.by_value], :void
1240
+
1241
+ # Draw a billboard texture
1242
+ attach_function :draw_billboard, :DrawBillboard, [Camera.by_value, Texture2D.by_value, Vector3.by_value, :float, Color.by_value], :void
1243
+
1244
+ # Draw a billboard texture defined by source
1245
+ attach_function :draw_billboard_rec, :DrawBillboardRec, [Camera.by_value, Texture2D.by_value, Rectangle.by_value, Vector3.by_value, Vector2.by_value, Color.by_value], :void
1246
+
1247
+ # Draw a billboard texture defined by source and rotation
1248
+ attach_function :draw_billboard_pro, :DrawBillboardPro, [Camera.by_value, Texture2D.by_value, Rectangle.by_value, Vector3.by_value, Vector3.by_value, Vector2.by_value, Vector2.by_value, :float, Color.by_value], :void
1249
+
1250
+ # Upload mesh vertex data in GPU and provide VAO/VBO ids
1251
+ attach_function :upload_mesh, :UploadMesh, [:pointer, :bool], :void
1252
+
1253
+ # Update mesh vertex data in GPU for a specific buffer index
1254
+ attach_function :update_mesh_buffer, :UpdateMeshBuffer, [Mesh.by_value, :int, :pointer, :int, :int], :void
1255
+
1256
+ # Unload mesh data from CPU and GPU
1257
+ attach_function :unload_mesh, :UnloadMesh, [Mesh.by_value], :void
1258
+
1259
+ # Draw a 3d mesh with material and transform
1260
+ attach_function :draw_mesh, :DrawMesh, [Mesh.by_value, Material.by_value, Matrix.by_value], :void
1261
+
1262
+ # Draw multiple mesh instances with material and different transforms
1263
+ attach_function :draw_mesh_instanced, :DrawMeshInstanced, [Mesh.by_value, Material.by_value, :pointer, :int], :void
1264
+
1265
+ # Export mesh data to file, returns true on success
1266
+ attach_function :export_mesh, :ExportMesh, [Mesh.by_value, :pointer], :bool
1267
+
1268
+ # Compute mesh bounding box limits
1269
+ attach_function :get_mesh_bounding_box, :GetMeshBoundingBox, [Mesh.by_value], BoundingBox.by_value
1270
+
1271
+ # Compute mesh tangents
1272
+ attach_function :gen_mesh_tangents, :GenMeshTangents, [:pointer], :void
1273
+
1274
+ # Generate polygonal mesh
1275
+ attach_function :gen_mesh_poly, :GenMeshPoly, [:int, :float], Mesh.by_value
1276
+
1277
+ # Generate plane mesh (with subdivisions)
1278
+ attach_function :gen_mesh_plane, :GenMeshPlane, [:float, :float, :int, :int], Mesh.by_value
1279
+
1280
+ # Generate cuboid mesh
1281
+ attach_function :gen_mesh_cube, :GenMeshCube, [:float, :float, :float], Mesh.by_value
1282
+
1283
+ # Generate sphere mesh (standard sphere)
1284
+ attach_function :gen_mesh_sphere, :GenMeshSphere, [:float, :int, :int], Mesh.by_value
1285
+
1286
+ # Generate half-sphere mesh (no bottom cap)
1287
+ attach_function :gen_mesh_hemi_sphere, :GenMeshHemiSphere, [:float, :int, :int], Mesh.by_value
1288
+
1289
+ # Generate cylinder mesh
1290
+ attach_function :gen_mesh_cylinder, :GenMeshCylinder, [:float, :float, :int], Mesh.by_value
1291
+
1292
+ # Generate cone/pyramid mesh
1293
+ attach_function :gen_mesh_cone, :GenMeshCone, [:float, :float, :int], Mesh.by_value
1294
+
1295
+ # Generate torus mesh
1296
+ attach_function :gen_mesh_torus, :GenMeshTorus, [:float, :float, :int, :int], Mesh.by_value
1297
+
1298
+ # Generate trefoil knot mesh
1299
+ attach_function :gen_mesh_knot, :GenMeshKnot, [:float, :float, :int, :int], Mesh.by_value
1300
+
1301
+ # Generate heightmap mesh from image data
1302
+ attach_function :gen_mesh_heightmap, :GenMeshHeightmap, [Image.by_value, Vector3.by_value], Mesh.by_value
1303
+
1304
+ # Generate cubes-based map mesh from image data
1305
+ attach_function :gen_mesh_cubicmap, :GenMeshCubicmap, [Image.by_value, Vector3.by_value], Mesh.by_value
1306
+
1307
+ # Load materials from model file
1308
+ attach_function :load_materials, :LoadMaterials, [:pointer, :pointer], :pointer
1309
+
1310
+ # Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps)
1311
+ attach_function :load_material_default, :LoadMaterialDefault, [], Material.by_value
1312
+
1313
+ # Check if a material is ready
1314
+ attach_function :is_material_ready, :IsMaterialReady, [Material.by_value], :bool
1315
+
1316
+ # Unload material from GPU memory (VRAM)
1317
+ attach_function :unload_material, :UnloadMaterial, [Material.by_value], :void
1318
+
1319
+ # Set texture for a material map type (MATERIAL_MAP_DIFFUSE, MATERIAL_MAP_SPECULAR...)
1320
+ attach_function :set_material_texture, :SetMaterialTexture, [:pointer, :int, Texture2D.by_value], :void
1321
+
1322
+ # Set material for a mesh
1323
+ attach_function :set_model_mesh_material, :SetModelMeshMaterial, [:pointer, :int, :int], :void
1324
+
1325
+ # Load model animations from file
1326
+ attach_function :load_model_animations, :LoadModelAnimations, [:pointer, :pointer], :pointer
1327
+
1328
+ # Update model animation pose
1329
+ attach_function :update_model_animation, :UpdateModelAnimation, [Model.by_value, ModelAnimation.by_value, :int], :void
1330
+
1331
+ # Unload animation data
1332
+ attach_function :unload_model_animation, :UnloadModelAnimation, [ModelAnimation.by_value], :void
1333
+
1334
+ # Unload animation array data
1335
+ attach_function :unload_model_animations, :UnloadModelAnimations, [:pointer, :uint], :void
1336
+
1337
+ # Check model animation skeleton match
1338
+ attach_function :is_model_animation_valid, :IsModelAnimationValid, [Model.by_value, ModelAnimation.by_value], :bool
1339
+
1340
+ # Check collision between two spheres
1341
+ attach_function :check_collision_spheres, :CheckCollisionSpheres, [Vector3.by_value, :float, Vector3.by_value, :float], :bool
1342
+
1343
+ # Check collision between two bounding boxes
1344
+ attach_function :check_collision_boxes, :CheckCollisionBoxes, [BoundingBox.by_value, BoundingBox.by_value], :bool
1345
+
1346
+ # Check collision between box and sphere
1347
+ attach_function :check_collision_box_sphere, :CheckCollisionBoxSphere, [BoundingBox.by_value, Vector3.by_value, :float], :bool
1348
+
1349
+ # Get collision info between ray and sphere
1350
+ attach_function :get_ray_collision_sphere, :GetRayCollisionSphere, [Ray.by_value, Vector3.by_value, :float], RayCollision.by_value
1351
+
1352
+ # Get collision info between ray and box
1353
+ attach_function :get_ray_collision_box, :GetRayCollisionBox, [Ray.by_value, BoundingBox.by_value], RayCollision.by_value
1354
+
1355
+ # Get collision info between ray and mesh
1356
+ attach_function :get_ray_collision_mesh, :GetRayCollisionMesh, [Ray.by_value, Mesh.by_value, Matrix.by_value], RayCollision.by_value
1357
+
1358
+ # Get collision info between ray and triangle
1359
+ attach_function :get_ray_collision_triangle, :GetRayCollisionTriangle, [Ray.by_value, Vector3.by_value, Vector3.by_value, Vector3.by_value], RayCollision.by_value
1360
+
1361
+ # Get collision info between ray and quad
1362
+ attach_function :get_ray_collision_quad, :GetRayCollisionQuad, [Ray.by_value, Vector3.by_value, Vector3.by_value, Vector3.by_value, Vector3.by_value], RayCollision.by_value
1363
+
1364
+ # Initialize audio device and context
1365
+ attach_function :init_audio_device, :InitAudioDevice, [], :void
1366
+
1367
+ # Close the audio device and context
1368
+ attach_function :close_audio_device, :CloseAudioDevice, [], :void
1369
+
1370
+ # Check if audio device has been initialized successfully
1371
+ attach_function :is_audio_device_ready, :IsAudioDeviceReady, [], :bool
1372
+
1373
+ # Set master volume (listener)
1374
+ attach_function :set_master_volume, :SetMasterVolume, [:float], :void
1375
+
1376
+ # Load wave data from file
1377
+ attach_function :load_wave, :LoadWave, [:pointer], Wave.by_value
1378
+
1379
+ # Load wave from memory buffer, fileType refers to extension: i.e. '.wav'
1380
+ attach_function :load_wave_from_memory, :LoadWaveFromMemory, [:pointer, :pointer, :int], Wave.by_value
1381
+
1382
+ # Checks if wave data is ready
1383
+ attach_function :is_wave_ready, :IsWaveReady, [Wave.by_value], :bool
1384
+
1385
+ # Load sound from file
1386
+ attach_function :load_sound, :LoadSound, [:pointer], Sound.by_value
1387
+
1388
+ # Load sound from wave data
1389
+ attach_function :load_sound_from_wave, :LoadSoundFromWave, [Wave.by_value], Sound.by_value
1390
+
1391
+ # Checks if a sound is ready
1392
+ attach_function :is_sound_ready, :IsSoundReady, [Sound.by_value], :bool
1393
+
1394
+ # Update sound buffer with new data
1395
+ attach_function :update_sound, :UpdateSound, [Sound.by_value, :pointer, :int], :void
1396
+
1397
+ # Unload wave data
1398
+ attach_function :unload_wave, :UnloadWave, [Wave.by_value], :void
1399
+
1400
+ # Unload sound
1401
+ attach_function :unload_sound, :UnloadSound, [Sound.by_value], :void
1402
+
1403
+ # Export wave data to file, returns true on success
1404
+ attach_function :export_wave, :ExportWave, [Wave.by_value, :pointer], :bool
1405
+
1406
+ # Export wave sample data to code (.h), returns true on success
1407
+ attach_function :export_wave_as_code, :ExportWaveAsCode, [Wave.by_value, :pointer], :bool
1408
+
1409
+ # Play a sound
1410
+ attach_function :play_sound, :PlaySound, [Sound.by_value], :void
1411
+
1412
+ # Stop playing a sound
1413
+ attach_function :stop_sound, :StopSound, [Sound.by_value], :void
1414
+
1415
+ # Pause a sound
1416
+ attach_function :pause_sound, :PauseSound, [Sound.by_value], :void
1417
+
1418
+ # Resume a paused sound
1419
+ attach_function :resume_sound, :ResumeSound, [Sound.by_value], :void
1420
+
1421
+ # Check if a sound is currently playing
1422
+ attach_function :is_sound_playing, :IsSoundPlaying, [Sound.by_value], :bool
1423
+
1424
+ # Set volume for a sound (1.0 is max level)
1425
+ attach_function :set_sound_volume, :SetSoundVolume, [Sound.by_value, :float], :void
1426
+
1427
+ # Set pitch for a sound (1.0 is base level)
1428
+ attach_function :set_sound_pitch, :SetSoundPitch, [Sound.by_value, :float], :void
1429
+
1430
+ # Set pan for a sound (0.5 is center)
1431
+ attach_function :set_sound_pan, :SetSoundPan, [Sound.by_value, :float], :void
1432
+
1433
+ # Copy a wave to a new wave
1434
+ attach_function :wave_copy, :WaveCopy, [Wave.by_value], Wave.by_value
1435
+
1436
+ # Crop a wave to defined samples range
1437
+ attach_function :wave_crop, :WaveCrop, [:pointer, :int, :int], :void
1438
+
1439
+ # Convert wave data to desired format
1440
+ attach_function :wave_format, :WaveFormat, [:pointer, :int, :int, :int], :void
1441
+
1442
+ # Load samples data from wave as a 32bit float data array
1443
+ attach_function :load_wave_samples, :LoadWaveSamples, [Wave.by_value], :pointer
1444
+
1445
+ # Unload samples data loaded with LoadWaveSamples()
1446
+ attach_function :unload_wave_samples, :UnloadWaveSamples, [:pointer], :void
1447
+
1448
+ # Load music stream from file
1449
+ attach_function :load_music_stream, :LoadMusicStream, [:pointer], Music.by_value
1450
+
1451
+ # Load music stream from data
1452
+ attach_function :load_music_stream_from_memory, :LoadMusicStreamFromMemory, [:pointer, :pointer, :int], Music.by_value
1453
+
1454
+ # Checks if a music stream is ready
1455
+ attach_function :is_music_ready, :IsMusicReady, [Music.by_value], :bool
1456
+
1457
+ # Unload music stream
1458
+ attach_function :unload_music_stream, :UnloadMusicStream, [Music.by_value], :void
1459
+
1460
+ # Start music playing
1461
+ attach_function :play_music_stream, :PlayMusicStream, [Music.by_value], :void
1462
+
1463
+ # Check if music is playing
1464
+ attach_function :is_music_stream_playing, :IsMusicStreamPlaying, [Music.by_value], :bool
1465
+
1466
+ # Updates buffers for music streaming
1467
+ attach_function :update_music_stream, :UpdateMusicStream, [Music.by_value], :void
1468
+
1469
+ # Stop music playing
1470
+ attach_function :stop_music_stream, :StopMusicStream, [Music.by_value], :void
1471
+
1472
+ # Pause music playing
1473
+ attach_function :pause_music_stream, :PauseMusicStream, [Music.by_value], :void
1474
+
1475
+ # Resume playing paused music
1476
+ attach_function :resume_music_stream, :ResumeMusicStream, [Music.by_value], :void
1477
+
1478
+ # Seek music to a position (in seconds)
1479
+ attach_function :seek_music_stream, :SeekMusicStream, [Music.by_value, :float], :void
1480
+
1481
+ # Set volume for music (1.0 is max level)
1482
+ attach_function :set_music_volume, :SetMusicVolume, [Music.by_value, :float], :void
1483
+
1484
+ # Set pitch for a music (1.0 is base level)
1485
+ attach_function :set_music_pitch, :SetMusicPitch, [Music.by_value, :float], :void
1486
+
1487
+ # Set pan for a music (0.5 is center)
1488
+ attach_function :set_music_pan, :SetMusicPan, [Music.by_value, :float], :void
1489
+
1490
+ # Get music time length (in seconds)
1491
+ attach_function :get_music_time_length, :GetMusicTimeLength, [Music.by_value], :float
1492
+
1493
+ # Get current music time played (in seconds)
1494
+ attach_function :get_music_time_played, :GetMusicTimePlayed, [Music.by_value], :float
1495
+
1496
+ # Load audio stream (to stream raw audio pcm data)
1497
+ attach_function :load_audio_stream, :LoadAudioStream, [:uint, :uint, :uint], AudioStream.by_value
1498
+
1499
+ # Checks if an audio stream is ready
1500
+ attach_function :is_audio_stream_ready, :IsAudioStreamReady, [AudioStream.by_value], :bool
1501
+
1502
+ # Unload audio stream and free memory
1503
+ attach_function :unload_audio_stream, :UnloadAudioStream, [AudioStream.by_value], :void
1504
+
1505
+ # Update audio stream buffers with data
1506
+ attach_function :update_audio_stream, :UpdateAudioStream, [AudioStream.by_value, :pointer, :int], :void
1507
+
1508
+ # Check if any audio stream buffers requires refill
1509
+ attach_function :is_audio_stream_processed, :IsAudioStreamProcessed, [AudioStream.by_value], :bool
1510
+
1511
+ # Play audio stream
1512
+ attach_function :play_audio_stream, :PlayAudioStream, [AudioStream.by_value], :void
1513
+
1514
+ # Pause audio stream
1515
+ attach_function :pause_audio_stream, :PauseAudioStream, [AudioStream.by_value], :void
1516
+
1517
+ # Resume audio stream
1518
+ attach_function :resume_audio_stream, :ResumeAudioStream, [AudioStream.by_value], :void
1519
+
1520
+ # Check if audio stream is playing
1521
+ attach_function :is_audio_stream_playing, :IsAudioStreamPlaying, [AudioStream.by_value], :bool
1522
+
1523
+ # Stop audio stream
1524
+ attach_function :stop_audio_stream, :StopAudioStream, [AudioStream.by_value], :void
1525
+
1526
+ # Set volume for audio stream (1.0 is max level)
1527
+ attach_function :set_audio_stream_volume, :SetAudioStreamVolume, [AudioStream.by_value, :float], :void
1528
+
1529
+ # Set pitch for audio stream (1.0 is base level)
1530
+ attach_function :set_audio_stream_pitch, :SetAudioStreamPitch, [AudioStream.by_value, :float], :void
1531
+
1532
+ # Set pan for audio stream (0.5 is centered)
1533
+ attach_function :set_audio_stream_pan, :SetAudioStreamPan, [AudioStream.by_value, :float], :void
1534
+
1535
+ # Default size for new audio streams
1536
+ attach_function :set_audio_stream_buffer_size_default, :SetAudioStreamBufferSizeDefault, [:int], :void
1537
+
1538
+ # Audio thread callback to request new data
1539
+ attach_function :set_audio_stream_callback, :SetAudioStreamCallback, [AudioStream.by_value, :AudioCallback], :void
1540
+
1541
+ # Attach audio stream processor to stream
1542
+ attach_function :attach_audio_stream_processor, :AttachAudioStreamProcessor, [AudioStream.by_value, :AudioCallback], :void
1543
+
1544
+ # Detach audio stream processor from stream
1545
+ attach_function :detach_audio_stream_processor, :DetachAudioStreamProcessor, [AudioStream.by_value, :AudioCallback], :void
1546
+
1547
+ # Attach audio stream processor to the entire audio pipeline
1548
+ attach_function :attach_audio_mixed_processor, :AttachAudioMixedProcessor, [:AudioCallback], :void
1549
+
1550
+ # Detach audio stream processor from the entire audio pipeline
1551
+ attach_function :detach_audio_mixed_processor, :DetachAudioMixedProcessor, [:AudioCallback], :void
1552
+ end