1 module bindbc.raylib.bindstatic;
2 
3 version(BindBC_Static) version = BindRaylib_Static;
4 version(BindRaylib_Static):
5 
6 import bindbc.raylib.types;
7 extern (C) @nogc nothrow {
8    /**
9     * Initialize window and OpenGL context
10     */
11    void InitWindow(int width, int height, const(char)* title);
12    /**
13     * Close window and unload OpenGL context
14     */
15    void CloseWindow();
16    /**
17     * Check if application should close (KEY_ESCAPE pressed or windows close icon clicked)
18     */
19    bool WindowShouldClose();
20    /**
21     * Check if window has been initialized successfully
22     */
23    bool IsWindowReady();
24    /**
25     * Check if window is currently fullscreen
26     */
27    bool IsWindowFullscreen();
28    /**
29     * Check if window is currently hidden (only PLATFORM_DESKTOP)
30     */
31    bool IsWindowHidden();
32    /**
33     * Check if window is currently minimized (only PLATFORM_DESKTOP)
34     */
35    bool IsWindowMinimized();
36    /**
37     * Check if window is currently maximized (only PLATFORM_DESKTOP)
38     */
39    bool IsWindowMaximized();
40    /**
41     * Check if window is currently focused (only PLATFORM_DESKTOP)
42     */
43    bool IsWindowFocused();
44    /**
45     * Check if window has been resized last frame
46     */
47    bool IsWindowResized();
48    /**
49     * Check if one specific window flag is enabled
50     */
51    bool IsWindowState(uint flag);
52    /**
53     * Set window configuration state using flags (only PLATFORM_DESKTOP)
54     */
55    void SetWindowState(uint flags);
56    /**
57     * Clear window configuration state flags
58     */
59    void ClearWindowState(uint flags);
60    /**
61     * Toggle window state: fullscreen/windowed (only PLATFORM_DESKTOP)
62     */
63    void ToggleFullscreen();
64    /**
65     * Toggle window state: borderless windowed (only PLATFORM_DESKTOP)
66     */
67    void ToggleBorderlessWindowed();
68    /**
69     * Set window state: maximized, if resizable (only PLATFORM_DESKTOP)
70     */
71    void MaximizeWindow();
72    /**
73     * Set window state: minimized, if resizable (only PLATFORM_DESKTOP)
74     */
75    void MinimizeWindow();
76    /**
77     * Set window state: not minimized/maximized (only PLATFORM_DESKTOP)
78     */
79    void RestoreWindow();
80    /**
81     * Set icon for window (single image, RGBA 32bit, only PLATFORM_DESKTOP)
82     */
83    void SetWindowIcon(Image image);
84    /**
85     * Set icon for window (multiple images, RGBA 32bit, only PLATFORM_DESKTOP)
86     */
87    void SetWindowIcons(Image* images, int count);
88    /**
89     * Set title for window (only PLATFORM_DESKTOP and PLATFORM_WEB)
90     */
91    void SetWindowTitle(const(char)* title);
92    /**
93     * Set window position on screen (only PLATFORM_DESKTOP)
94     */
95    void SetWindowPosition(int x, int y);
96    /**
97     * Set monitor for the current window
98     */
99    void SetWindowMonitor(int monitor);
100    /**
101     * Set window minimum dimensions (for FLAG_WINDOW_RESIZABLE)
102     */
103    void SetWindowMinSize(int width, int height);
104    /**
105     * Set window maximum dimensions (for FLAG_WINDOW_RESIZABLE)
106     */
107    void SetWindowMaxSize(int width, int height);
108    /**
109     * Set window dimensions
110     */
111    void SetWindowSize(int width, int height);
112    /**
113     * Set window opacity [0.0f..1.0f] (only PLATFORM_DESKTOP)
114     */
115    void SetWindowOpacity(float opacity);
116    /**
117     * Set window focused (only PLATFORM_DESKTOP)
118     */
119    void SetWindowFocused();
120    /**
121     * Get native window handle
122     */
123    void* GetWindowHandle();
124    /**
125     * Get current screen width
126     */
127    int GetScreenWidth();
128    /**
129     * Get current screen height
130     */
131    int GetScreenHeight();
132    /**
133     * Get current render width (it considers HiDPI)
134     */
135    int GetRenderWidth();
136    /**
137     * Get current render height (it considers HiDPI)
138     */
139    int GetRenderHeight();
140    /**
141     * Get number of connected monitors
142     */
143    int GetMonitorCount();
144    /**
145     * Get current connected monitor
146     */
147    int GetCurrentMonitor();
148    /**
149     * Get specified monitor position
150     */
151    Vector2 GetMonitorPosition(int monitor);
152    /**
153     * Get specified monitor width (current video mode used by monitor)
154     */
155    int GetMonitorWidth(int monitor);
156    /**
157     * Get specified monitor height (current video mode used by monitor)
158     */
159    int GetMonitorHeight(int monitor);
160    /**
161     * Get specified monitor physical width in millimetres
162     */
163    int GetMonitorPhysicalWidth(int monitor);
164    /**
165     * Get specified monitor physical height in millimetres
166     */
167    int GetMonitorPhysicalHeight(int monitor);
168    /**
169     * Get specified monitor refresh rate
170     */
171    int GetMonitorRefreshRate(int monitor);
172    /**
173     * Get window position XY on monitor
174     */
175    Vector2 GetWindowPosition();
176    /**
177     * Get window scale DPI factor
178     */
179    Vector2 GetWindowScaleDPI();
180    /**
181     * Get the human-readable, UTF-8 encoded name of the specified monitor
182     */
183    const(char)* GetMonitorName(int monitor);
184    /**
185     * Set clipboard text content
186     */
187    void SetClipboardText(const(char)* text);
188    /**
189     * Get clipboard text content
190     */
191    const(char)* GetClipboardText();
192    /**
193     * Enable waiting for events on EndDrawing(), no automatic event polling
194     */
195    void EnableEventWaiting();
196    /**
197     * Disable waiting for events on EndDrawing(), automatic events polling
198     */
199    void DisableEventWaiting();
200    /**
201     * Shows cursor
202     */
203    void ShowCursor();
204    /**
205     * Hides cursor
206     */
207    void HideCursor();
208    /**
209     * Check if cursor is not visible
210     */
211    bool IsCursorHidden();
212    /**
213     * Enables cursor (unlock cursor)
214     */
215    void EnableCursor();
216    /**
217     * Disables cursor (lock cursor)
218     */
219    void DisableCursor();
220    /**
221     * Check if cursor is on the screen
222     */
223    bool IsCursorOnScreen();
224    /**
225     * Set background color (framebuffer clear color)
226     */
227    void ClearBackground(Color color);
228    /**
229     * Setup canvas (framebuffer) to start drawing
230     */
231    void BeginDrawing();
232    /**
233     * End canvas drawing and swap buffers (double buffering)
234     */
235    void EndDrawing();
236    /**
237     * Begin 2D mode with custom camera (2D)
238     */
239    void BeginMode2D(Camera2D camera);
240    /**
241     * Ends 2D mode with custom camera
242     */
243    void EndMode2D();
244    /**
245     * Begin 3D mode with custom camera (3D)
246     */
247    void BeginMode3D(Camera3D camera);
248    /**
249     * Ends 3D mode and returns to default 2D orthographic mode
250     */
251    void EndMode3D();
252    /**
253     * Begin drawing to render texture
254     */
255    void BeginTextureMode(RenderTexture2D target);
256    /**
257     * Ends drawing to render texture
258     */
259    void EndTextureMode();
260    /**
261     * Begin custom shader drawing
262     */
263    void BeginShaderMode(Shader shader);
264    /**
265     * End custom shader drawing (use default shader)
266     */
267    void EndShaderMode();
268    /**
269     * Begin blending mode (alpha, additive, multiplied, subtract, custom)
270     */
271    void BeginBlendMode(int mode);
272    /**
273     * End blending mode (reset to default: alpha blending)
274     */
275    void EndBlendMode();
276    /**
277     * Begin scissor mode (define screen area for following drawing)
278     */
279    void BeginScissorMode(int x, int y, int width, int height);
280    /**
281     * End scissor mode
282     */
283    void EndScissorMode();
284    /**
285     * Begin stereo rendering (requires VR simulator)
286     */
287    void BeginVrStereoMode(VrStereoConfig config);
288    /**
289     * End stereo rendering (requires VR simulator)
290     */
291    void EndVrStereoMode();
292    /**
293     * Load VR stereo config for VR simulator device parameters
294     */
295    VrStereoConfig LoadVrStereoConfig(VrDeviceInfo device);
296    /**
297     * Unload VR stereo config
298     */
299    void UnloadVrStereoConfig(VrStereoConfig config);
300    /**
301     * Load shader from files and bind default locations
302     */
303    Shader LoadShader(const(char)* vsFileName, const(char)* fsFileName);
304    /**
305     * Load shader from code strings and bind default locations
306     */
307    Shader LoadShaderFromMemory(const(char)* vsCode, const(char)* fsCode);
308    /**
309     * Check if a shader is ready
310     */
311    bool IsShaderReady(Shader shader);
312    /**
313     * Get shader uniform location
314     */
315    int GetShaderLocation(Shader shader, const(char)* uniformName);
316    /**
317     * Get shader attribute location
318     */
319    int GetShaderLocationAttrib(Shader shader, const(char)* attribName);
320    /**
321     * Set shader uniform value
322     */
323    void SetShaderValue(Shader shader, int locIndex, const(void)* value, int uniformType);
324    /**
325     * Set shader uniform value vector
326     */
327    void SetShaderValueV(Shader shader, int locIndex, const(void)* value, int uniformType, int count);
328    /**
329     * Set shader uniform value (matrix 4x4)
330     */
331    void SetShaderValueMatrix(Shader shader, int locIndex, Matrix mat);
332    /**
333     * Set shader uniform value for texture (sampler2d)
334     */
335    void SetShaderValueTexture(Shader shader, int locIndex, Texture2D texture);
336    /**
337     * Unload shader from GPU memory (VRAM)
338     */
339    void UnloadShader(Shader shader);
340    /**
341     * Get a ray trace from mouse position
342     */
343    Ray GetMouseRay(Vector2 mousePosition, Camera camera);
344    /**
345     * Get camera transform matrix (view matrix)
346     */
347    Matrix GetCameraMatrix(Camera camera);
348    /**
349     * Get camera 2d transform matrix
350     */
351    Matrix GetCameraMatrix2D(Camera2D camera);
352    /**
353     * Get the screen space position for a 3d world space position
354     */
355    Vector2 GetWorldToScreen(Vector3 position, Camera camera);
356    /**
357     * Get the world space position for a 2d camera screen space position
358     */
359    Vector2 GetScreenToWorld2D(Vector2 position, Camera2D camera);
360    /**
361     * Get size position for a 3d world space position
362     */
363    Vector2 GetWorldToScreenEx(Vector3 position, Camera camera, int width, int height);
364    /**
365     * Get the screen space position for a 2d camera world space position
366     */
367    Vector2 GetWorldToScreen2D(Vector2 position, Camera2D camera);
368    /**
369     * Set target FPS (maximum)
370     */
371    void SetTargetFPS(int fps);
372    /**
373     * Get time in seconds for last frame drawn (delta time)
374     */
375    float GetFrameTime();
376    /**
377     * Get elapsed time in seconds since InitWindow()
378     */
379    double GetTime();
380    /**
381     * Get current FPS
382     */
383    int GetFPS();
384    /**
385     * Swap back buffer with front buffer (screen drawing)
386     */
387    void SwapScreenBuffer();
388    /**
389     * Register all input events
390     */
391    void PollInputEvents();
392    /**
393     * Wait for some time (halt program execution)
394     */
395    void WaitTime(double seconds);
396    /**
397     * Set the seed for the random number generator
398     */
399    void SetRandomSeed(uint seed);
400    /**
401     * Get a random value between min and max (both included)
402     */
403    int GetRandomValue(int min, int max);
404    /**
405     * Load random values sequence, no values repeated
406     */
407    int* LoadRandomSequence(uint count, int min, int max);
408    /**
409     * Unload random values sequence
410     */
411    void UnloadRandomSequence(int* sequence);
412    /**
413     * Takes a screenshot of current screen (filename extension defines format)
414     */
415    void TakeScreenshot(const(char)* fileName);
416    /**
417     * Setup init configuration flags (view FLAGS)
418     */
419    void SetConfigFlags(uint flags);
420    /**
421     * Open URL with default system browser (if available)
422     */
423    void OpenURL(const(char)* url);
424    /**
425     * Set the current threshold (minimum) log level
426     */
427    void SetTraceLogLevel(int logLevel);
428    /**
429     * Internal memory allocator
430     */
431    void* MemAlloc(uint size);
432    /**
433     * Internal memory reallocator
434     */
435    void* MemRealloc(void* ptr, uint size);
436    /**
437     * Internal memory free
438     */
439    void MemFree(void* ptr);
440    /**
441     * Load file data as byte array (read)
442     */
443    ubyte* LoadFileData(const(char)* fileName, int* dataSize);
444    /**
445     * Unload file data allocated by LoadFileData()
446     */
447    void UnloadFileData(ubyte* data);
448    /**
449     * Save data to file from byte array (write), returns true on success
450     */
451    bool SaveFileData(const(char)* fileName, void* data, int dataSize);
452    /**
453     * Export data to code (.h), returns true on success
454     */
455    bool ExportDataAsCode(const(ubyte)* data, int dataSize, const(char)* fileName);
456    /**
457     * Load text data from file (read), returns a '\0' terminated string
458     */
459    char* LoadFileText(const(char)* fileName);
460    /**
461     * Unload file text data allocated by LoadFileText()
462     */
463    void UnloadFileText(char* text);
464    /**
465     * Save text data to file (write), string must be '\0' terminated, returns true on success
466     */
467    bool SaveFileText(const(char)* fileName, char* text);
468    /**
469     * Check if file exists
470     */
471    bool FileExists(const(char)* fileName);
472    /**
473     * Check if a directory path exists
474     */
475    bool DirectoryExists(const(char)* dirPath);
476    /**
477     * Check file extension (including point: .png, .wav)
478     */
479    bool IsFileExtension(const(char)* fileName, const(char)* ext);
480    /**
481     * Get file length in bytes (NOTE: GetFileSize() conflicts with windows.h)
482     */
483    int GetFileLength(const(char)* fileName);
484    /**
485     * Get pointer to extension for a filename string (includes dot: '.png')
486     */
487    const(char)* GetFileExtension(const(char)* fileName);
488    /**
489     * Get pointer to filename for a path string
490     */
491    const(char)* GetFileName(const(char)* filePath);
492    /**
493     * Get filename string without extension (uses static string)
494     */
495    const(char)* GetFileNameWithoutExt(const(char)* filePath);
496    /**
497     * Get full path for a given fileName with path (uses static string)
498     */
499    const(char)* GetDirectoryPath(const(char)* filePath);
500    /**
501     * Get previous directory path for a given path (uses static string)
502     */
503    const(char)* GetPrevDirectoryPath(const(char)* dirPath);
504    /**
505     * Get current working directory (uses static string)
506     */
507    const(char)* GetWorkingDirectory();
508    /**
509     * Get the directory of the running application (uses static string)
510     */
511    const(char)* GetApplicationDirectory();
512    /**
513     * Change working directory, return true on success
514     */
515    bool ChangeDirectory(const(char)* dir);
516    /**
517     * Check if a given path is a file or a directory
518     */
519    bool IsPathFile(const(char)* path);
520    /**
521     * Load directory filepaths
522     */
523    FilePathList LoadDirectoryFiles(const(char)* dirPath);
524    /**
525     * Load directory filepaths with extension filtering and recursive directory scan
526     */
527    FilePathList LoadDirectoryFilesEx(const(char)* basePath, const(char)* filter, bool scanSubdirs);
528    /**
529     * Unload filepaths
530     */
531    void UnloadDirectoryFiles(FilePathList files);
532    /**
533     * Check if a file has been dropped into window
534     */
535    bool IsFileDropped();
536    /**
537     * Load dropped filepaths
538     */
539    FilePathList LoadDroppedFiles();
540    /**
541     * Unload dropped filepaths
542     */
543    void UnloadDroppedFiles(FilePathList files);
544    /**
545     * Get file modification time (last write time)
546     */
547    long GetFileModTime(const(char)* fileName);
548    /**
549     * Compress data (DEFLATE algorithm), memory must be MemFree()
550     */
551    ubyte* CompressData(const(ubyte)* data, int dataSize, int* compDataSize);
552    /**
553     * Decompress data (DEFLATE algorithm), memory must be MemFree()
554     */
555    ubyte* DecompressData(const(ubyte)* compData, int compDataSize, int* dataSize);
556    /**
557     * Encode data to Base64 string, memory must be MemFree()
558     */
559    char* EncodeDataBase64(const(ubyte)* data, int dataSize, int* outputSize);
560    /**
561     * Decode Base64 string data, memory must be MemFree()
562     */
563    ubyte* DecodeDataBase64(const(ubyte)* data, int* outputSize);
564    /**
565     * Load automation events list from file, NULL for empty list, capacity = MAX_AUTOMATION_EVENTS
566     */
567    AutomationEventList LoadAutomationEventList(const(char)* fileName);
568    /**
569     * Unload automation events list from file
570     */
571    void UnloadAutomationEventList(AutomationEventList* list);
572    /**
573     * Export automation events list as text file
574     */
575    bool ExportAutomationEventList(AutomationEventList list, const(char)* fileName);
576    /**
577     * Set automation event list to record to
578     */
579    void SetAutomationEventList(AutomationEventList* list);
580    /**
581     * Set automation event internal base frame to start recording
582     */
583    void SetAutomationEventBaseFrame(int frame);
584    /**
585     * Start recording automation events (AutomationEventList must be set)
586     */
587    void StartAutomationEventRecording();
588    /**
589     * Stop recording automation events
590     */
591    void StopAutomationEventRecording();
592    /**
593     * Play a recorded automation event
594     */
595    void PlayAutomationEvent(AutomationEvent event);
596    /**
597     * Check if a key has been pressed once
598     */
599    bool IsKeyPressed(int key);
600    /**
601     * Check if a key has been pressed again (Only PLATFORM_DESKTOP)
602     */
603    bool IsKeyPressedRepeat(int key);
604    /**
605     * Check if a key is being pressed
606     */
607    bool IsKeyDown(int key);
608    /**
609     * Check if a key has been released once
610     */
611    bool IsKeyReleased(int key);
612    /**
613     * Check if a key is NOT being pressed
614     */
615    bool IsKeyUp(int key);
616    /**
617     * Get key pressed (keycode), call it multiple times for keys queued, returns 0 when the queue is empty
618     */
619    int GetKeyPressed();
620    /**
621     * Get char pressed (unicode), call it multiple times for chars queued, returns 0 when the queue is empty
622     */
623    int GetCharPressed();
624    /**
625     * Set a custom key to exit program (default is ESC)
626     */
627    void SetExitKey(int key);
628    /**
629     * Check if a gamepad is available
630     */
631    bool IsGamepadAvailable(int gamepad);
632    /**
633     * Get gamepad internal name id
634     */
635    const(char)* GetGamepadName(int gamepad);
636    /**
637     * Check if a gamepad button has been pressed once
638     */
639    bool IsGamepadButtonPressed(int gamepad, int button);
640    /**
641     * Check if a gamepad button is being pressed
642     */
643    bool IsGamepadButtonDown(int gamepad, int button);
644    /**
645     * Check if a gamepad button has been released once
646     */
647    bool IsGamepadButtonReleased(int gamepad, int button);
648    /**
649     * Check if a gamepad button is NOT being pressed
650     */
651    bool IsGamepadButtonUp(int gamepad, int button);
652    /**
653     * Get the last gamepad button pressed
654     */
655    int GetGamepadButtonPressed();
656    /**
657     * Get gamepad axis count for a gamepad
658     */
659    int GetGamepadAxisCount(int gamepad);
660    /**
661     * Get axis movement value for a gamepad axis
662     */
663    float GetGamepadAxisMovement(int gamepad, int axis);
664    /**
665     * Set internal gamepad mappings (SDL_GameControllerDB)
666     */
667    int SetGamepadMappings(const(char)* mappings);
668    /**
669     * Check if a mouse button has been pressed once
670     */
671    bool IsMouseButtonPressed(int button);
672    /**
673     * Check if a mouse button is being pressed
674     */
675    bool IsMouseButtonDown(int button);
676    /**
677     * Check if a mouse button has been released once
678     */
679    bool IsMouseButtonReleased(int button);
680    /**
681     * Check if a mouse button is NOT being pressed
682     */
683    bool IsMouseButtonUp(int button);
684    /**
685     * Get mouse position X
686     */
687    int GetMouseX();
688    /**
689     * Get mouse position Y
690     */
691    int GetMouseY();
692    /**
693     * Get mouse position XY
694     */
695    Vector2 GetMousePosition();
696    /**
697     * Get mouse delta between frames
698     */
699    Vector2 GetMouseDelta();
700    /**
701     * Set mouse position XY
702     */
703    void SetMousePosition(int x, int y);
704    /**
705     * Set mouse offset
706     */
707    void SetMouseOffset(int offsetX, int offsetY);
708    /**
709     * Set mouse scaling
710     */
711    void SetMouseScale(float scaleX, float scaleY);
712    /**
713     * Get mouse wheel movement for X or Y, whichever is larger
714     */
715    float GetMouseWheelMove();
716    /**
717     * Get mouse wheel movement for both X and Y
718     */
719    Vector2 GetMouseWheelMoveV();
720    /**
721     * Set mouse cursor
722     */
723    void SetMouseCursor(int cursor);
724    /**
725     * Get touch position X for touch point 0 (relative to screen size)
726     */
727    int GetTouchX();
728    /**
729     * Get touch position Y for touch point 0 (relative to screen size)
730     */
731    int GetTouchY();
732    /**
733     * Get touch position XY for a touch point index (relative to screen size)
734     */
735    Vector2 GetTouchPosition(int index);
736    /**
737     * Get touch point identifier for given index
738     */
739    int GetTouchPointId(int index);
740    /**
741     * Get number of touch points
742     */
743    int GetTouchPointCount();
744    /**
745     * Enable a set of gestures using flags
746     */
747    void SetGesturesEnabled(uint flags);
748    /**
749     * Check if a gesture have been detected
750     */
751    bool IsGestureDetected(uint gesture);
752    /**
753     * Get latest detected gesture
754     */
755    int GetGestureDetected();
756    /**
757     * Get gesture hold time in milliseconds
758     */
759    float GetGestureHoldDuration();
760    /**
761     * Get gesture drag vector
762     */
763    Vector2 GetGestureDragVector();
764    /**
765     * Get gesture drag angle
766     */
767    float GetGestureDragAngle();
768    /**
769     * Get gesture pinch delta
770     */
771    Vector2 GetGesturePinchVector();
772    /**
773     * Get gesture pinch angle
774     */
775    float GetGesturePinchAngle();
776    /**
777     * Update camera position for selected mode
778     */
779    void UpdateCamera(Camera* camera, int mode);
780    /**
781     * Update camera movement/rotation
782     */
783    void UpdateCameraPro(Camera* camera, Vector3 movement, Vector3 rotation, float zoom);
784    /**
785     * Set texture and rectangle to be used on shapes drawing
786     */
787    void SetShapesTexture(Texture2D texture, Rectangle source);
788    /**
789     * Draw a pixel
790     */
791    void DrawPixel(int posX, int posY, Color color);
792    /**
793     * Draw a pixel (Vector version)
794     */
795    void DrawPixelV(Vector2 position, Color color);
796    /**
797     * Draw a line
798     */
799    void DrawLine(int startPosX, int startPosY, int endPosX, int endPosY, Color color);
800    /**
801     * Draw a line (using gl lines)
802     */
803    void DrawLineV(Vector2 startPos, Vector2 endPos, Color color);
804    /**
805     * Draw a line (using triangles/quads)
806     */
807    void DrawLineEx(Vector2 startPos, Vector2 endPos, float thick, Color color);
808    /**
809     * Draw lines sequence (using gl lines)
810     */
811    void DrawLineStrip(Vector2* points, int pointCount, Color color);
812    /**
813     * Draw line segment cubic-bezier in-out interpolation
814     */
815    void DrawLineBezier(Vector2 startPos, Vector2 endPos, float thick, Color color);
816    /**
817     * Draw a color-filled circle
818     */
819    void DrawCircle(int centerX, int centerY, float radius, Color color);
820    /**
821     * Draw a piece of a circle
822     */
823    void DrawCircleSector(Vector2 center, float radius, float startAngle, float endAngle, int segments, Color color);
824    /**
825     * Draw circle sector outline
826     */
827    void DrawCircleSectorLines(Vector2 center, float radius, float startAngle, float endAngle, int segments, Color color);
828    /**
829     * Draw a gradient-filled circle
830     */
831    void DrawCircleGradient(int centerX, int centerY, float radius, Color color1, Color color2);
832    /**
833     * Draw a color-filled circle (Vector version)
834     */
835    void DrawCircleV(Vector2 center, float radius, Color color);
836    /**
837     * Draw circle outline
838     */
839    void DrawCircleLines(int centerX, int centerY, float radius, Color color);
840    /**
841     * Draw circle outline (Vector version)
842     */
843    void DrawCircleLinesV(Vector2 center, float radius, Color color);
844    /**
845     * Draw ellipse
846     */
847    void DrawEllipse(int centerX, int centerY, float radiusH, float radiusV, Color color);
848    /**
849     * Draw ellipse outline
850     */
851    void DrawEllipseLines(int centerX, int centerY, float radiusH, float radiusV, Color color);
852    /**
853     * Draw ring
854     */
855    void DrawRing(Vector2 center, float innerRadius, float outerRadius, float startAngle, float endAngle, int segments, Color color);
856    /**
857     * Draw ring outline
858     */
859    void DrawRingLines(Vector2 center, float innerRadius, float outerRadius, float startAngle, float endAngle, int segments, Color color);
860    /**
861     * Draw a color-filled rectangle
862     */
863    void DrawRectangle(int posX, int posY, int width, int height, Color color);
864    /**
865     * Draw a color-filled rectangle (Vector version)
866     */
867    void DrawRectangleV(Vector2 position, Vector2 size, Color color);
868    /**
869     * Draw a color-filled rectangle
870     */
871    void DrawRectangleRec(Rectangle rec, Color color);
872    /**
873     * Draw a color-filled rectangle with pro parameters
874     */
875    void DrawRectanglePro(Rectangle rec, Vector2 origin, float rotation, Color color);
876    /**
877     * Draw a vertical-gradient-filled rectangle
878     */
879    void DrawRectangleGradientV(int posX, int posY, int width, int height, Color color1, Color color2);
880    /**
881     * Draw a horizontal-gradient-filled rectangle
882     */
883    void DrawRectangleGradientH(int posX, int posY, int width, int height, Color color1, Color color2);
884    /**
885     * Draw a gradient-filled rectangle with custom vertex colors
886     */
887    void DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4);
888    /**
889     * Draw rectangle outline
890     */
891    void DrawRectangleLines(int posX, int posY, int width, int height, Color color);
892    /**
893     * Draw rectangle outline with extended parameters
894     */
895    void DrawRectangleLinesEx(Rectangle rec, float lineThick, Color color);
896    /**
897     * Draw rectangle with rounded edges
898     */
899    void DrawRectangleRounded(Rectangle rec, float roundness, int segments, Color color);
900    /**
901     * Draw rectangle with rounded edges outline
902     */
903    void DrawRectangleRoundedLines(Rectangle rec, float roundness, int segments, float lineThick, Color color);
904    /**
905     * Draw a color-filled triangle (vertex in counter-clockwise order!)
906     */
907    void DrawTriangle(Vector2 v1, Vector2 v2, Vector2 v3, Color color);
908    /**
909     * Draw triangle outline (vertex in counter-clockwise order!)
910     */
911    void DrawTriangleLines(Vector2 v1, Vector2 v2, Vector2 v3, Color color);
912    /**
913     * Draw a triangle fan defined by points (first vertex is the center)
914     */
915    void DrawTriangleFan(Vector2* points, int pointCount, Color color);
916    /**
917     * Draw a triangle strip defined by points
918     */
919    void DrawTriangleStrip(Vector2* points, int pointCount, Color color);
920    /**
921     * Draw a regular polygon (Vector version)
922     */
923    void DrawPoly(Vector2 center, int sides, float radius, float rotation, Color color);
924    /**
925     * Draw a polygon outline of n sides
926     */
927    void DrawPolyLines(Vector2 center, int sides, float radius, float rotation, Color color);
928    /**
929     * Draw a polygon outline of n sides with extended parameters
930     */
931    void DrawPolyLinesEx(Vector2 center, int sides, float radius, float rotation, float lineThick, Color color);
932    /**
933     * Draw spline: Linear, minimum 2 points
934     */
935    void DrawSplineLinear(Vector2* points, int pointCount, float thick, Color color);
936    /**
937     * Draw spline: B-Spline, minimum 4 points
938     */
939    void DrawSplineBasis(Vector2* points, int pointCount, float thick, Color color);
940    /**
941     * Draw spline: Catmull-Rom, minimum 4 points
942     */
943    void DrawSplineCatmullRom(Vector2* points, int pointCount, float thick, Color color);
944    /**
945     * Draw spline: Quadratic Bezier, minimum 3 points (1 control point): [p1, c2, p3, c4...]
946     */
947    void DrawSplineBezierQuadratic(Vector2* points, int pointCount, float thick, Color color);
948    /**
949     * Draw spline: Cubic Bezier, minimum 4 points (2 control points): [p1, c2, c3, p4, c5, c6...]
950     */
951    void DrawSplineBezierCubic(Vector2* points, int pointCount, float thick, Color color);
952    /**
953     * Draw spline segment: Linear, 2 points
954     */
955    void DrawSplineSegmentLinear(Vector2 p1, Vector2 p2, float thick, Color color);
956    /**
957     * Draw spline segment: B-Spline, 4 points
958     */
959    void DrawSplineSegmentBasis(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float thick, Color color);
960    /**
961     * Draw spline segment: Catmull-Rom, 4 points
962     */
963    void DrawSplineSegmentCatmullRom(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float thick, Color color);
964    /**
965     * Draw spline segment: Quadratic Bezier, 2 points, 1 control point
966     */
967    void DrawSplineSegmentBezierQuadratic(Vector2 p1, Vector2 c2, Vector2 p3, float thick, Color color);
968    /**
969     * Draw spline segment: Cubic Bezier, 2 points, 2 control points
970     */
971    void DrawSplineSegmentBezierCubic(Vector2 p1, Vector2 c2, Vector2 c3, Vector2 p4, float thick, Color color);
972    /**
973     * Get (evaluate) spline point: Linear
974     */
975    Vector2 GetSplinePointLinear(Vector2 startPos, Vector2 endPos, float t);
976    /**
977     * Get (evaluate) spline point: B-Spline
978     */
979    Vector2 GetSplinePointBasis(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float t);
980    /**
981     * Get (evaluate) spline point: Catmull-Rom
982     */
983    Vector2 GetSplinePointCatmullRom(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float t);
984    /**
985     * Get (evaluate) spline point: Quadratic Bezier
986     */
987    Vector2 GetSplinePointBezierQuad(Vector2 p1, Vector2 c2, Vector2 p3, float t);
988    /**
989     * Get (evaluate) spline point: Cubic Bezier
990     */
991    Vector2 GetSplinePointBezierCubic(Vector2 p1, Vector2 c2, Vector2 c3, Vector2 p4, float t);
992    /**
993     * Check collision between two rectangles
994     */
995    bool CheckCollisionRecs(Rectangle rec1, Rectangle rec2);
996    /**
997     * Check collision between two circles
998     */
999    bool CheckCollisionCircles(Vector2 center1, float radius1, Vector2 center2, float radius2);
1000    /**
1001     * Check collision between circle and rectangle
1002     */
1003    bool CheckCollisionCircleRec(Vector2 center, float radius, Rectangle rec);
1004    /**
1005     * Check if point is inside rectangle
1006     */
1007    bool CheckCollisionPointRec(Vector2 point, Rectangle rec);
1008    /**
1009     * Check if point is inside circle
1010     */
1011    bool CheckCollisionPointCircle(Vector2 point, Vector2 center, float radius);
1012    /**
1013     * Check if point is inside a triangle
1014     */
1015    bool CheckCollisionPointTriangle(Vector2 point, Vector2 p1, Vector2 p2, Vector2 p3);
1016    /**
1017     * Check if point is within a polygon described by array of vertices
1018     */
1019    bool CheckCollisionPointPoly(Vector2 point, Vector2* points, int pointCount);
1020    /**
1021     * Check the collision between two lines defined by two points each, returns collision point by reference
1022     */
1023    bool CheckCollisionLines(Vector2 startPos1, Vector2 endPos1, Vector2 startPos2, Vector2 endPos2, Vector2* collisionPoint);
1024    /**
1025     * Check if point belongs to line created between two points [p1] and [p2] with defined margin in pixels [threshold]
1026     */
1027    bool CheckCollisionPointLine(Vector2 point, Vector2 p1, Vector2 p2, int threshold);
1028    /**
1029     * Get collision rectangle for two rectangles collision
1030     */
1031    Rectangle GetCollisionRec(Rectangle rec1, Rectangle rec2);
1032    /**
1033     * Load image from file into CPU memory (RAM)
1034     */
1035    Image LoadImage(const(char)* fileName);
1036    /**
1037     * Load image from RAW file data
1038     */
1039    Image LoadImageRaw(const(char)* fileName, int width, int height, int format, int headerSize);
1040    /**
1041     * Load image from SVG file data or string with specified size
1042     */
1043    Image LoadImageSvg(const(char)* fileNameOrString, int width, int height);
1044    /**
1045     * Load image sequence from file (frames appended to image.data)
1046     */
1047    Image LoadImageAnim(const(char)* fileName, int* frames);
1048    /**
1049     * Load image from memory buffer, fileType refers to extension: i.e. '.png'
1050     */
1051    Image LoadImageFromMemory(const(char)* fileType, const(ubyte)* fileData, int dataSize);
1052    /**
1053     * Load image from GPU texture data
1054     */
1055    Image LoadImageFromTexture(Texture2D texture);
1056    /**
1057     * Load image from screen buffer and (screenshot)
1058     */
1059    Image LoadImageFromScreen();
1060    /**
1061     * Check if an image is ready
1062     */
1063    bool IsImageReady(Image image);
1064    /**
1065     * Unload image from CPU memory (RAM)
1066     */
1067    void UnloadImage(Image image);
1068    /**
1069     * Export image data to file, returns true on success
1070     */
1071    bool ExportImage(Image image, const(char)* fileName);
1072    /**
1073     * Export image to memory buffer
1074     */
1075    ubyte* ExportImageToMemory(Image image, const(char)* fileType, int* fileSize);
1076    /**
1077     * Export image as code file defining an array of bytes, returns true on success
1078     */
1079    bool ExportImageAsCode(Image image, const(char)* fileName);
1080    /**
1081     * Generate image: plain color
1082     */
1083    Image GenImageColor(int width, int height, Color color);
1084    /**
1085     * Generate image: linear gradient, direction in degrees [0..360], 0=Vertical gradient
1086     */
1087    Image GenImageGradientLinear(int width, int height, int direction, Color start, Color end);
1088    /**
1089     * Generate image: radial gradient
1090     */
1091    Image GenImageGradientRadial(int width, int height, float density, Color inner, Color outer);
1092    /**
1093     * Generate image: square gradient
1094     */
1095    Image GenImageGradientSquare(int width, int height, float density, Color inner, Color outer);
1096    /**
1097     * Generate image: checked
1098     */
1099    Image GenImageChecked(int width, int height, int checksX, int checksY, Color col1, Color col2);
1100    /**
1101     * Generate image: white noise
1102     */
1103    Image GenImageWhiteNoise(int width, int height, float factor);
1104    /**
1105     * Generate image: perlin noise
1106     */
1107    Image GenImagePerlinNoise(int width, int height, int offsetX, int offsetY, float scale);
1108    /**
1109     * Generate image: cellular algorithm, bigger tileSize means bigger cells
1110     */
1111    Image GenImageCellular(int width, int height, int tileSize);
1112    /**
1113     * Generate image: grayscale image from text data
1114     */
1115    Image GenImageText(int width, int height, const(char)* text);
1116    /**
1117     * Create an image duplicate (useful for transformations)
1118     */
1119    Image ImageCopy(Image image);
1120    /**
1121     * Create an image from another image piece
1122     */
1123    Image ImageFromImage(Image image, Rectangle rec);
1124    /**
1125     * Create an image from text (default font)
1126     */
1127    Image ImageText(const(char)* text, int fontSize, Color color);
1128    /**
1129     * Create an image from text (custom sprite font)
1130     */
1131    Image ImageTextEx(Font font, const(char)* text, float fontSize, float spacing, Color tint);
1132    /**
1133     * Convert image data to desired format
1134     */
1135    void ImageFormat(Image* image, int newFormat);
1136    /**
1137     * Convert image to POT (power-of-two)
1138     */
1139    void ImageToPOT(Image* image, Color fill);
1140    /**
1141     * Crop an image to a defined rectangle
1142     */
1143    void ImageCrop(Image* image, Rectangle crop);
1144    /**
1145     * Crop image depending on alpha value
1146     */
1147    void ImageAlphaCrop(Image* image, float threshold);
1148    /**
1149     * Clear alpha channel to desired color
1150     */
1151    void ImageAlphaClear(Image* image, Color color, float threshold);
1152    /**
1153     * Apply alpha mask to image
1154     */
1155    void ImageAlphaMask(Image* image, Image alphaMask);
1156    /**
1157     * Premultiply alpha channel
1158     */
1159    void ImageAlphaPremultiply(Image* image);
1160    /**
1161     * Apply Gaussian blur using a box blur approximation
1162     */
1163    void ImageBlurGaussian(Image* image, int blurSize);
1164    /**
1165     * Resize image (Bicubic scaling algorithm)
1166     */
1167    void ImageResize(Image* image, int newWidth, int newHeight);
1168    /**
1169     * Resize image (Nearest-Neighbor scaling algorithm)
1170     */
1171    void ImageResizeNN(Image* image, int newWidth, int newHeight);
1172    /**
1173     * Resize canvas and fill with color
1174     */
1175    void ImageResizeCanvas(Image* image, int newWidth, int newHeight, int offsetX, int offsetY, Color fill);
1176    /**
1177     * Compute all mipmap levels for a provided image
1178     */
1179    void ImageMipmaps(Image* image);
1180    /**
1181     * Dither image data to 16bpp or lower (Floyd-Steinberg dithering)
1182     */
1183    void ImageDither(Image* image, int rBpp, int gBpp, int bBpp, int aBpp);
1184    /**
1185     * Flip image vertically
1186     */
1187    void ImageFlipVertical(Image* image);
1188    /**
1189     * Flip image horizontally
1190     */
1191    void ImageFlipHorizontal(Image* image);
1192    /**
1193     * Rotate image by input angle in degrees (-359 to 359)
1194     */
1195    void ImageRotate(Image* image, int degrees);
1196    /**
1197     * Rotate image clockwise 90deg
1198     */
1199    void ImageRotateCW(Image* image);
1200    /**
1201     * Rotate image counter-clockwise 90deg
1202     */
1203    void ImageRotateCCW(Image* image);
1204    /**
1205     * Modify image color: tint
1206     */
1207    void ImageColorTint(Image* image, Color color);
1208    /**
1209     * Modify image color: invert
1210     */
1211    void ImageColorInvert(Image* image);
1212    /**
1213     * Modify image color: grayscale
1214     */
1215    void ImageColorGrayscale(Image* image);
1216    /**
1217     * Modify image color: contrast (-100 to 100)
1218     */
1219    void ImageColorContrast(Image* image, float contrast);
1220    /**
1221     * Modify image color: brightness (-255 to 255)
1222     */
1223    void ImageColorBrightness(Image* image, int brightness);
1224    /**
1225     * Modify image color: replace color
1226     */
1227    void ImageColorReplace(Image* image, Color color, Color replace);
1228    /**
1229     * Load color data from image as a Color array (RGBA - 32bit)
1230     */
1231    Color* LoadImageColors(Image image);
1232    /**
1233     * Load colors palette from image as a Color array (RGBA - 32bit)
1234     */
1235    Color* LoadImagePalette(Image image, int maxPaletteSize, int* colorCount);
1236    /**
1237     * Unload color data loaded with LoadImageColors()
1238     */
1239    void UnloadImageColors(Color* colors);
1240    /**
1241     * Unload colors palette loaded with LoadImagePalette()
1242     */
1243    void UnloadImagePalette(Color* colors);
1244    /**
1245     * Get image alpha border rectangle
1246     */
1247    Rectangle GetImageAlphaBorder(Image image, float threshold);
1248    /**
1249     * Get image pixel color at (x, y) position
1250     */
1251    Color GetImageColor(Image image, int x, int y);
1252    /**
1253     * Clear image background with given color
1254     */
1255    void ImageClearBackground(Image* dst, Color color);
1256    /**
1257     * Draw pixel within an image
1258     */
1259    void ImageDrawPixel(Image* dst, int posX, int posY, Color color);
1260    /**
1261     * Draw pixel within an image (Vector version)
1262     */
1263    void ImageDrawPixelV(Image* dst, Vector2 position, Color color);
1264    /**
1265     * Draw line within an image
1266     */
1267    void ImageDrawLine(Image* dst, int startPosX, int startPosY, int endPosX, int endPosY, Color color);
1268    /**
1269     * Draw line within an image (Vector version)
1270     */
1271    void ImageDrawLineV(Image* dst, Vector2 start, Vector2 end, Color color);
1272    /**
1273     * Draw a filled circle within an image
1274     */
1275    void ImageDrawCircle(Image* dst, int centerX, int centerY, int radius, Color color);
1276    /**
1277     * Draw a filled circle within an image (Vector version)
1278     */
1279    void ImageDrawCircleV(Image* dst, Vector2 center, int radius, Color color);
1280    /**
1281     * Draw circle outline within an image
1282     */
1283    void ImageDrawCircleLines(Image* dst, int centerX, int centerY, int radius, Color color);
1284    /**
1285     * Draw circle outline within an image (Vector version)
1286     */
1287    void ImageDrawCircleLinesV(Image* dst, Vector2 center, int radius, Color color);
1288    /**
1289     * Draw rectangle within an image
1290     */
1291    void ImageDrawRectangle(Image* dst, int posX, int posY, int width, int height, Color color);
1292    /**
1293     * Draw rectangle within an image (Vector version)
1294     */
1295    void ImageDrawRectangleV(Image* dst, Vector2 position, Vector2 size, Color color);
1296    /**
1297     * Draw rectangle within an image
1298     */
1299    void ImageDrawRectangleRec(Image* dst, Rectangle rec, Color color);
1300    /**
1301     * Draw rectangle lines within an image
1302     */
1303    void ImageDrawRectangleLines(Image* dst, Rectangle rec, int thick, Color color);
1304    /**
1305     * Draw a source image within a destination image (tint applied to source)
1306     */
1307    void ImageDraw(Image* dst, Image src, Rectangle srcRec, Rectangle dstRec, Color tint);
1308    /**
1309     * Draw text (using default font) within an image (destination)
1310     */
1311    void ImageDrawText(Image* dst, const(char)* text, int posX, int posY, int fontSize, Color color);
1312    /**
1313     * Draw text (custom sprite font) within an image (destination)
1314     */
1315    void ImageDrawTextEx(Image* dst, Font font, const(char)* text, Vector2 position, float fontSize, float spacing, Color tint);
1316    /**
1317     * Load texture from file into GPU memory (VRAM)
1318     */
1319    Texture2D LoadTexture(const(char)* fileName);
1320    /**
1321     * Load texture from image data
1322     */
1323    Texture2D LoadTextureFromImage(Image image);
1324    /**
1325     * Load cubemap from image, multiple image cubemap layouts supported
1326     */
1327    TextureCubemap LoadTextureCubemap(Image image, int layout);
1328    /**
1329     * Load texture for rendering (framebuffer)
1330     */
1331    RenderTexture2D LoadRenderTexture(int width, int height);
1332    /**
1333     * Check if a texture is ready
1334     */
1335    bool IsTextureReady(Texture2D texture);
1336    /**
1337     * Unload texture from GPU memory (VRAM)
1338     */
1339    void UnloadTexture(Texture2D texture);
1340    /**
1341     * Check if a render texture is ready
1342     */
1343    bool IsRenderTextureReady(RenderTexture2D target);
1344    /**
1345     * Unload render texture from GPU memory (VRAM)
1346     */
1347    void UnloadRenderTexture(RenderTexture2D target);
1348    /**
1349     * Update GPU texture with new data
1350     */
1351    void UpdateTexture(Texture2D texture, const(void)* pixels);
1352    /**
1353     * Update GPU texture rectangle with new data
1354     */
1355    void UpdateTextureRec(Texture2D texture, Rectangle rec, const(void)* pixels);
1356    /**
1357     * Generate GPU mipmaps for a texture
1358     */
1359    void GenTextureMipmaps(Texture2D* texture);
1360    /**
1361     * Set texture scaling filter mode
1362     */
1363    void SetTextureFilter(Texture2D texture, int filter);
1364    /**
1365     * Set texture wrapping mode
1366     */
1367    void SetTextureWrap(Texture2D texture, int wrap);
1368    /**
1369     * Draw a Texture2D
1370     */
1371    void DrawTexture(Texture2D texture, int posX, int posY, Color tint);
1372    /**
1373     * Draw a Texture2D with position defined as Vector2
1374     */
1375    void DrawTextureV(Texture2D texture, Vector2 position, Color tint);
1376    /**
1377     * Draw a Texture2D with extended parameters
1378     */
1379    void DrawTextureEx(Texture2D texture, Vector2 position, float rotation, float scale, Color tint);
1380    /**
1381     * Draw a part of a texture defined by a rectangle
1382     */
1383    void DrawTextureRec(Texture2D texture, Rectangle source, Vector2 position, Color tint);
1384    /**
1385     * Draw a part of a texture defined by a rectangle with 'pro' parameters
1386     */
1387    void DrawTexturePro(Texture2D texture, Rectangle source, Rectangle dest, Vector2 origin, float rotation, Color tint);
1388    /**
1389     * Draws a texture (or part of it) that stretches or shrinks nicely
1390     */
1391    void DrawTextureNPatch(Texture2D texture, NPatchInfo nPatchInfo, Rectangle dest, Vector2 origin, float rotation, Color tint);
1392    /**
1393     * Get color with alpha applied, alpha goes from 0.0f to 1.0f
1394     */
1395    Color Fade(Color color, float alpha);
1396    /**
1397     * Get hexadecimal value for a Color
1398     */
1399    int ColorToInt(Color color);
1400    /**
1401     * Get Color normalized as float [0..1]
1402     */
1403    Vector4 ColorNormalize(Color color);
1404    /**
1405     * Get Color from normalized values [0..1]
1406     */
1407    Color ColorFromNormalized(Vector4 normalized);
1408    /**
1409     * Get HSV values for a Color, hue [0..360], saturation/value [0..1]
1410     */
1411    Vector3 ColorToHSV(Color color);
1412    /**
1413     * Get a Color from HSV values, hue [0..360], saturation/value [0..1]
1414     */
1415    Color ColorFromHSV(float hue, float saturation, float value);
1416    /**
1417     * Get color multiplied with another color
1418     */
1419    Color ColorTint(Color color, Color tint);
1420    /**
1421     * Get color with brightness correction, brightness factor goes from -1.0f to 1.0f
1422     */
1423    Color ColorBrightness(Color color, float factor);
1424    /**
1425     * Get color with contrast correction, contrast values between -1.0f and 1.0f
1426     */
1427    Color ColorContrast(Color color, float contrast);
1428    /**
1429     * Get color with alpha applied, alpha goes from 0.0f to 1.0f
1430     */
1431    Color ColorAlpha(Color color, float alpha);
1432    /**
1433     * Get src alpha-blended into dst color with tint
1434     */
1435    Color ColorAlphaBlend(Color dst, Color src, Color tint);
1436    /**
1437     * Get Color structure from hexadecimal value
1438     */
1439    Color GetColor(uint hexValue);
1440    /**
1441     * Get Color from a source pixel pointer of certain format
1442     */
1443    Color GetPixelColor(void* srcPtr, int format);
1444    /**
1445     * Set color formatted into destination pixel pointer
1446     */
1447    void SetPixelColor(void* dstPtr, Color color, int format);
1448    /**
1449     * Get pixel data size in bytes for certain format
1450     */
1451    int GetPixelDataSize(int width, int height, int format);
1452    /**
1453     * Get the default Font
1454     */
1455    Font GetFontDefault();
1456    /**
1457     * Load font from file into GPU memory (VRAM)
1458     */
1459    Font LoadFont(const(char)* fileName);
1460    /**
1461     * Load font from file with extended parameters, use NULL for codepoints and 0 for codepointCount to load the default character setFont
1462     */
1463    Font LoadFontEx(const(char)* fileName, int fontSize, int* codepoints, int codepointCount);
1464    /**
1465     * Load font from Image (XNA style)
1466     */
1467    Font LoadFontFromImage(Image image, Color key, int firstChar);
1468    /**
1469     * Load font from memory buffer, fileType refers to extension: i.e. '.ttf'
1470     */
1471    Font LoadFontFromMemory(const(char)* fileType, const(ubyte)* fileData, int dataSize, int fontSize, int* codepoints, int codepointCount);
1472    /**
1473     * Check if a font is ready
1474     */
1475    bool IsFontReady(Font font);
1476    /**
1477     * Load font data for further use
1478     */
1479    GlyphInfo* LoadFontData(const(ubyte)* fileData, int dataSize, int fontSize, int* codepoints, int codepointCount, int type);
1480    /**
1481     * Generate image font atlas using chars info
1482     */
1483    Image GenImageFontAtlas(const GlyphInfo* glyphs, Rectangle** glyphRecs, int glyphCount, int fontSize, int padding, int packMethod);
1484    /**
1485     * Unload font chars info data (RAM)
1486     */
1487    void UnloadFontData(GlyphInfo* glyphs, int glyphCount);
1488    /**
1489     * Unload font from GPU memory (VRAM)
1490     */
1491    void UnloadFont(Font font);
1492    /**
1493     * Export font as code file, returns true on success
1494     */
1495    bool ExportFontAsCode(Font font, const(char)* fileName);
1496    /**
1497     * Draw current FPS
1498     */
1499    void DrawFPS(int posX, int posY);
1500    /**
1501     * Draw text (using default font)
1502     */
1503    void DrawText(const(char)* text, int posX, int posY, int fontSize, Color color);
1504    /**
1505     * Draw text using font and additional parameters
1506     */
1507    void DrawTextEx(Font font, const(char)* text, Vector2 position, float fontSize, float spacing, Color tint);
1508    /**
1509     * Draw text using Font and pro parameters (rotation)
1510     */
1511    void DrawTextPro(Font font, const(char)* text, Vector2 position, Vector2 origin, float rotation, float fontSize, float spacing, Color tint);
1512    /**
1513     * Draw one character (codepoint)
1514     */
1515    void DrawTextCodepoint(Font font, int codepoint, Vector2 position, float fontSize, Color tint);
1516    /**
1517     * Draw multiple character (codepoint)
1518     */
1519    void DrawTextCodepoints(Font font, const(int)* codepoints, int codepointCount, Vector2 position, float fontSize, float spacing, Color tint);
1520    /**
1521     * Set vertical line spacing when drawing with line-breaks
1522     */
1523    void SetTextLineSpacing(int spacing);
1524    /**
1525     * Measure string width for default font
1526     */
1527    int MeasureText(const(char)* text, int fontSize);
1528    /**
1529     * Measure string size for Font
1530     */
1531    Vector2 MeasureTextEx(Font font, const(char)* text, float fontSize, float spacing);
1532    /**
1533     * Get glyph index position in font for a codepoint (unicode character), fallback to '?' if not found
1534     */
1535    int GetGlyphIndex(Font font, int codepoint);
1536    /**
1537     * Get glyph font info data for a codepoint (unicode character), fallback to '?' if not found
1538     */
1539    GlyphInfo GetGlyphInfo(Font font, int codepoint);
1540    /**
1541     * Get glyph rectangle in font atlas for a codepoint (unicode character), fallback to '?' if not found
1542     */
1543    Rectangle GetGlyphAtlasRec(Font font, int codepoint);
1544    /**
1545     * Load UTF-8 text encoded from codepoints array
1546     */
1547    char* LoadUTF8(const(int)* codepoints, int length);
1548    /**
1549     * Unload UTF-8 text encoded from codepoints array
1550     */
1551    void UnloadUTF8(char* text);
1552    /**
1553     * Load all codepoints from a UTF-8 text string, codepoints count returned by parameter
1554     */
1555    int* LoadCodepoints(const(char)* text, int* count);
1556    /**
1557     * Unload codepoints data from memory
1558     */
1559    void UnloadCodepoints(int* codepoints);
1560    /**
1561     * Get total number of codepoints in a UTF-8 encoded string
1562     */
1563    int GetCodepointCount(const(char)* text);
1564    /**
1565     * Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure
1566     */
1567    int GetCodepoint(const(char)* text, int* codepointSize);
1568    /**
1569     * Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure
1570     */
1571    int GetCodepointNext(const(char)* text, int* codepointSize);
1572    /**
1573     * Get previous codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure
1574     */
1575    int GetCodepointPrevious(const(char)* text, int* codepointSize);
1576    /**
1577     * Encode one codepoint into UTF-8 byte array (array length returned as parameter)
1578     */
1579    const(char)* CodepointToUTF8(int codepoint, int* utf8Size);
1580    /**
1581     * Copy one string to another, returns bytes copied
1582     */
1583    int TextCopy(char* dst, const(char)* src);
1584    /**
1585     * Check if two text string are equal
1586     */
1587    bool TextIsEqual(const(char)* text1, const(char)* text2);
1588    /**
1589     * Get text length, checks for '\0' ending
1590     */
1591    uint TextLength(const(char)* text);
1592    /**
1593     * Get a piece of a text string
1594     */
1595    const(char)* TextSubtext(const(char)* text, int position, int length);
1596    /**
1597     * Replace text string (WARNING: memory must be freed!)
1598     */
1599    char* TextReplace(char* text, const(char)* replace, const(char)* by);
1600    /**
1601     * Insert text in a position (WARNING: memory must be freed!)
1602     */
1603    char* TextInsert(const(char)* text, const(char)* insert, int position);
1604    /**
1605     * Join text strings with delimiter
1606     */
1607    const(char)* TextJoin(const(char*)* textList, int count, const(char)* delimiter);
1608    /**
1609     * Split text into multiple strings
1610     */
1611    const(char*)* TextSplit(const(char)* text, char delimiter, int* count);
1612    /**
1613     * Append text at specific position and move cursor!
1614     */
1615    void TextAppend(char* text, const(char)* append, int* position);
1616    /**
1617     * Find first text occurrence within a string
1618     */
1619    int TextFindIndex(const(char)* text, const(char)* find);
1620    /**
1621     * Get upper case version of provided string
1622     */
1623    const(char)* TextToUpper(const(char)* text);
1624    /**
1625     * Get lower case version of provided string
1626     */
1627    const(char)* TextToLower(const(char)* text);
1628    /**
1629     * Get Pascal case notation version of provided string
1630     */
1631    const(char)* TextToPascal(const(char)* text);
1632    /**
1633     * Get integer value from text (negative values not supported)
1634     */
1635    int TextToInteger(const(char)* text);
1636    /**
1637     * Draw a line in 3D world space
1638     */
1639    void DrawLine3D(Vector3 startPos, Vector3 endPos, Color color);
1640    /**
1641     * Draw a point in 3D space, actually a small line
1642     */
1643    void DrawPoint3D(Vector3 position, Color color);
1644    /**
1645     * Draw a circle in 3D world space
1646     */
1647    void DrawCircle3D(Vector3 center, float radius, Vector3 rotationAxis, float rotationAngle, Color color);
1648    /**
1649     * Draw a color-filled triangle (vertex in counter-clockwise order!)
1650     */
1651    void DrawTriangle3D(Vector3 v1, Vector3 v2, Vector3 v3, Color color);
1652    /**
1653     * Draw a triangle strip defined by points
1654     */
1655    void DrawTriangleStrip3D(Vector3* points, int pointCount, Color color);
1656    /**
1657     * Draw cube
1658     */
1659    void DrawCube(Vector3 position, float width, float height, float length, Color color);
1660    /**
1661     * Draw cube (Vector version)
1662     */
1663    void DrawCubeV(Vector3 position, Vector3 size, Color color);
1664    /**
1665     * Draw cube wires
1666     */
1667    void DrawCubeWires(Vector3 position, float width, float height, float length, Color color);
1668    /**
1669     * Draw cube wires (Vector version)
1670     */
1671    void DrawCubeWiresV(Vector3 position, Vector3 size, Color color);
1672    /**
1673     * Draw sphere
1674     */
1675    void DrawSphere(Vector3 centerPos, float radius, Color color);
1676    /**
1677     * Draw sphere with extended parameters
1678     */
1679    void DrawSphereEx(Vector3 centerPos, float radius, int rings, int slices, Color color);
1680    /**
1681     * Draw sphere wires
1682     */
1683    void DrawSphereWires(Vector3 centerPos, float radius, int rings, int slices, Color color);
1684    /**
1685     * Draw a cylinder/cone
1686     */
1687    void DrawCylinder(Vector3 position, float radiusTop, float radiusBottom, float height, int slices, Color color);
1688    /**
1689     * Draw a cylinder with base at startPos and top at endPos
1690     */
1691    void DrawCylinderEx(Vector3 startPos, Vector3 endPos, float startRadius, float endRadius, int sides, Color color);
1692    /**
1693     * Draw a cylinder/cone wires
1694     */
1695    void DrawCylinderWires(Vector3 position, float radiusTop, float radiusBottom, float height, int slices, Color color);
1696    /**
1697     * Draw a cylinder wires with base at startPos and top at endPos
1698     */
1699    void DrawCylinderWiresEx(Vector3 startPos, Vector3 endPos, float startRadius, float endRadius, int sides, Color color);
1700    /**
1701     * Draw a capsule with the center of its sphere caps at startPos and endPos
1702     */
1703    void DrawCapsule(Vector3 startPos, Vector3 endPos, float radius, int slices, int rings, Color color);
1704    /**
1705     * Draw capsule wireframe with the center of its sphere caps at startPos and endPos
1706     */
1707    void DrawCapsuleWires(Vector3 startPos, Vector3 endPos, float radius, int slices, int rings, Color color);
1708    /**
1709     * Draw a plane XZ
1710     */
1711    void DrawPlane(Vector3 centerPos, Vector2 size, Color color);
1712    /**
1713     * Draw a ray line
1714     */
1715    void DrawRay(Ray ray, Color color);
1716    /**
1717     * Draw a grid (centered at (0, 0, 0))
1718     */
1719    void DrawGrid(int slices, float spacing);
1720    /**
1721     * Load model from files (meshes and materials)
1722     */
1723    Model LoadModel(const(char)* fileName);
1724    /**
1725     * Load model from generated mesh (default material)
1726     */
1727    Model LoadModelFromMesh(Mesh mesh);
1728    /**
1729     * Check if a model is ready
1730     */
1731    bool IsModelReady(Model model);
1732    /**
1733     * Unload model (including meshes) from memory (RAM and/or VRAM)
1734     */
1735    void UnloadModel(Model model);
1736    /**
1737     * Compute model bounding box limits (considers all meshes)
1738     */
1739    BoundingBox GetModelBoundingBox(Model model);
1740    /**
1741     * Draw a model (with texture if set)
1742     */
1743    void DrawModel(Model model, Vector3 position, float scale, Color tint);
1744    /**
1745     * Draw a model with extended parameters
1746     */
1747    void DrawModelEx(Model model, Vector3 position, Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color tint);
1748    /**
1749     * Draw a model wires (with texture if set)
1750     */
1751    void DrawModelWires(Model model, Vector3 position, float scale, Color tint);
1752    /**
1753     * Draw a model wires (with texture if set) with extended parameters
1754     */
1755    void DrawModelWiresEx(Model model, Vector3 position, Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color tint);
1756    /**
1757     * Draw bounding box (wires)
1758     */
1759    void DrawBoundingBox(BoundingBox box, Color color);
1760    /**
1761     * Draw a billboard texture
1762     */
1763    void DrawBillboard(Camera camera, Texture2D texture, Vector3 position, float size, Color tint);
1764    /**
1765     * Draw a billboard texture defined by source
1766     */
1767    void DrawBillboardRec(Camera camera, Texture2D texture, Rectangle source, Vector3 position, Vector2 size, Color tint);
1768    /**
1769     * Draw a billboard texture defined by source and rotation
1770     */
1771    void DrawBillboardPro(Camera camera, Texture2D texture, Rectangle source, Vector3 position, Vector3 up, Vector2 size, Vector2 origin, float rotation, Color tint);
1772    /**
1773     * Upload mesh vertex data in GPU and provide VAO/VBO ids
1774     */
1775    void UploadMesh(Mesh* mesh, bool dynamic);
1776    /**
1777     * Update mesh vertex data in GPU for a specific buffer index
1778     */
1779    void UpdateMeshBuffer(Mesh mesh, int index, const(void)* data, int dataSize, int offset);
1780    /**
1781     * Unload mesh data from CPU and GPU
1782     */
1783    void UnloadMesh(Mesh mesh);
1784    /**
1785     * Draw a 3d mesh with material and transform
1786     */
1787    void DrawMesh(Mesh mesh, Material material, Matrix transform);
1788    /**
1789     * Draw multiple mesh instances with material and different transforms
1790     */
1791    void DrawMeshInstanced(Mesh mesh, Material material, const Matrix* transforms, int instances);
1792    /**
1793     * Export mesh data to file, returns true on success
1794     */
1795    bool ExportMesh(Mesh mesh, const(char)* fileName);
1796    /**
1797     * Compute mesh bounding box limits
1798     */
1799    BoundingBox GetMeshBoundingBox(Mesh mesh);
1800    /**
1801     * Compute mesh tangents
1802     */
1803    void GenMeshTangents(Mesh* mesh);
1804    /**
1805     * Generate polygonal mesh
1806     */
1807    Mesh GenMeshPoly(int sides, float radius);
1808    /**
1809     * Generate plane mesh (with subdivisions)
1810     */
1811    Mesh GenMeshPlane(float width, float length, int resX, int resZ);
1812    /**
1813     * Generate cuboid mesh
1814     */
1815    Mesh GenMeshCube(float width, float height, float length);
1816    /**
1817     * Generate sphere mesh (standard sphere)
1818     */
1819    Mesh GenMeshSphere(float radius, int rings, int slices);
1820    /**
1821     * Generate half-sphere mesh (no bottom cap)
1822     */
1823    Mesh GenMeshHemiSphere(float radius, int rings, int slices);
1824    /**
1825     * Generate cylinder mesh
1826     */
1827    Mesh GenMeshCylinder(float radius, float height, int slices);
1828    /**
1829     * Generate cone/pyramid mesh
1830     */
1831    Mesh GenMeshCone(float radius, float height, int slices);
1832    /**
1833     * Generate torus mesh
1834     */
1835    Mesh GenMeshTorus(float radius, float size, int radSeg, int sides);
1836    /**
1837     * Generate trefoil knot mesh
1838     */
1839    Mesh GenMeshKnot(float radius, float size, int radSeg, int sides);
1840    /**
1841     * Generate heightmap mesh from image data
1842     */
1843    Mesh GenMeshHeightmap(Image heightmap, Vector3 size);
1844    /**
1845     * Generate cubes-based map mesh from image data
1846     */
1847    Mesh GenMeshCubicmap(Image cubicmap, Vector3 cubeSize);
1848    /**
1849     * Load materials from model file
1850     */
1851    Material* LoadMaterials(const(char)* fileName, int* materialCount);
1852    /**
1853     * Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps)
1854     */
1855    Material LoadMaterialDefault();
1856    /**
1857     * Check if a material is ready
1858     */
1859    bool IsMaterialReady(Material material);
1860    /**
1861     * Unload material from GPU memory (VRAM)
1862     */
1863    void UnloadMaterial(Material material);
1864    /**
1865     * Set texture for a material map type (MATERIAL_MAP_DIFFUSE, MATERIAL_MAP_SPECULAR...)
1866     */
1867    void SetMaterialTexture(Material* material, int mapType, Texture2D texture);
1868    /**
1869     * Set material for a mesh
1870     */
1871    void SetModelMeshMaterial(Model* model, int meshId, int materialId);
1872    /**
1873     * Load model animations from file
1874     */
1875    ModelAnimation* LoadModelAnimations(const(char)* fileName, int* animCount);
1876    /**
1877     * Update model animation pose
1878     */
1879    void UpdateModelAnimation(Model model, ModelAnimation anim, int frame);
1880    /**
1881     * Unload animation data
1882     */
1883    void UnloadModelAnimation(ModelAnimation anim);
1884    /**
1885     * Unload animation array data
1886     */
1887    void UnloadModelAnimations(ModelAnimation* animations, int animCount);
1888    /**
1889     * Check model animation skeleton match
1890     */
1891    bool IsModelAnimationValid(Model model, ModelAnimation anim);
1892    /**
1893     * Check collision between two spheres
1894     */
1895    bool CheckCollisionSpheres(Vector3 center1, float radius1, Vector3 center2, float radius2);
1896    /**
1897     * Check collision between two bounding boxes
1898     */
1899    bool CheckCollisionBoxes(BoundingBox box1, BoundingBox box2);
1900    /**
1901     * Check collision between box and sphere
1902     */
1903    bool CheckCollisionBoxSphere(BoundingBox box, Vector3 center, float radius);
1904    /**
1905     * Get collision info between ray and sphere
1906     */
1907    RayCollision GetRayCollisionSphere(Ray ray, Vector3 center, float radius);
1908    /**
1909     * Get collision info between ray and box
1910     */
1911    RayCollision GetRayCollisionBox(Ray ray, BoundingBox box);
1912    /**
1913     * Get collision info between ray and mesh
1914     */
1915    RayCollision GetRayCollisionMesh(Ray ray, Mesh mesh, Matrix transform);
1916    /**
1917     * Get collision info between ray and triangle
1918     */
1919    RayCollision GetRayCollisionTriangle(Ray ray, Vector3 p1, Vector3 p2, Vector3 p3);
1920    /**
1921     * Get collision info between ray and quad
1922     */
1923    RayCollision GetRayCollisionQuad(Ray ray, Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4);
1924    /**
1925     * Initialize audio device and context
1926     */
1927    void InitAudioDevice();
1928    /**
1929     * Close the audio device and context
1930     */
1931    void CloseAudioDevice();
1932    /**
1933     * Check if audio device has been initialized successfully
1934     */
1935    bool IsAudioDeviceReady();
1936    /**
1937     * Set master volume (listener)
1938     */
1939    void SetMasterVolume(float volume);
1940    /**
1941     * Get master volume (listener)
1942     */
1943    float GetMasterVolume();
1944    /**
1945     * Load wave data from file
1946     */
1947    Wave LoadWave(const(char)* fileName);
1948    /**
1949     * Load wave from memory buffer, fileType refers to extension: i.e. '.wav'
1950     */
1951    Wave LoadWaveFromMemory(const(char)* fileType, const(ubyte)* fileData, int dataSize);
1952    /**
1953     * Checks if wave data is ready
1954     */
1955    bool IsWaveReady(Wave wave);
1956    /**
1957     * Load sound from file
1958     */
1959    Sound LoadSound(const(char)* fileName);
1960    /**
1961     * Load sound from wave data
1962     */
1963    Sound LoadSoundFromWave(Wave wave);
1964    /**
1965     * Create a new sound that shares the same sample data as the source sound, does not own the sound data
1966     */
1967    Sound LoadSoundAlias(Sound source);
1968    /**
1969     * Checks if a sound is ready
1970     */
1971    bool IsSoundReady(Sound sound);
1972    /**
1973     * Update sound buffer with new data
1974     */
1975    void UpdateSound(Sound sound, const(void)* data, int sampleCount);
1976    /**
1977     * Unload wave data
1978     */
1979    void UnloadWave(Wave wave);
1980    /**
1981     * Unload sound
1982     */
1983    void UnloadSound(Sound sound);
1984    /**
1985     * Unload a sound alias (does not deallocate sample data)
1986     */
1987    void UnloadSoundAlias(Sound aka);
1988    /**
1989     * Export wave data to file, returns true on success
1990     */
1991    bool ExportWave(Wave wave, const(char)* fileName);
1992    /**
1993     * Export wave sample data to code (.h), returns true on success
1994     */
1995    bool ExportWaveAsCode(Wave wave, const(char)* fileName);
1996    /**
1997     * Play a sound
1998     */
1999    void PlaySound(Sound sound);
2000    /**
2001     * Stop playing a sound
2002     */
2003    void StopSound(Sound sound);
2004    /**
2005     * Pause a sound
2006     */
2007    void PauseSound(Sound sound);
2008    /**
2009     * Resume a paused sound
2010     */
2011    void ResumeSound(Sound sound);
2012    /**
2013     * Check if a sound is currently playing
2014     */
2015    bool IsSoundPlaying(Sound sound);
2016    /**
2017     * Set volume for a sound (1.0 is max level)
2018     */
2019    void SetSoundVolume(Sound sound, float volume);
2020    /**
2021     * Set pitch for a sound (1.0 is base level)
2022     */
2023    void SetSoundPitch(Sound sound, float pitch);
2024    /**
2025     * Set pan for a sound (0.5 is center)
2026     */
2027    void SetSoundPan(Sound sound, float pan);
2028    /**
2029     * Copy a wave to a new wave
2030     */
2031    Wave WaveCopy(Wave wave);
2032    /**
2033     * Crop a wave to defined samples range
2034     */
2035    void WaveCrop(Wave* wave, int initSample, int finalSample);
2036    /**
2037     * Convert wave data to desired format
2038     */
2039    void WaveFormat(Wave* wave, int sampleRate, int sampleSize, int channels);
2040    /**
2041     * Load samples data from wave as a 32bit float data array
2042     */
2043    float* LoadWaveSamples(Wave wave);
2044    /**
2045     * Unload samples data loaded with LoadWaveSamples()
2046     */
2047    void UnloadWaveSamples(float* samples);
2048    /**
2049     * Load music stream from file
2050     */
2051    Music LoadMusicStream(const(char)* fileName);
2052    /**
2053     * Load music stream from data
2054     */
2055    Music LoadMusicStreamFromMemory(const(char)* fileType, const(ubyte)* data, int dataSize);
2056    /**
2057     * Checks if a music stream is ready
2058     */
2059    bool IsMusicReady(Music music);
2060    /**
2061     * Unload music stream
2062     */
2063    void UnloadMusicStream(Music music);
2064    /**
2065     * Start music playing
2066     */
2067    void PlayMusicStream(Music music);
2068    /**
2069     * Check if music is playing
2070     */
2071    bool IsMusicStreamPlaying(Music music);
2072    /**
2073     * Updates buffers for music streaming
2074     */
2075    void UpdateMusicStream(Music music);
2076    /**
2077     * Stop music playing
2078     */
2079    void StopMusicStream(Music music);
2080    /**
2081     * Pause music playing
2082     */
2083    void PauseMusicStream(Music music);
2084    /**
2085     * Resume playing paused music
2086     */
2087    void ResumeMusicStream(Music music);
2088    /**
2089     * Seek music to a position (in seconds)
2090     */
2091    void SeekMusicStream(Music music, float position);
2092    /**
2093     * Set volume for music (1.0 is max level)
2094     */
2095    void SetMusicVolume(Music music, float volume);
2096    /**
2097     * Set pitch for a music (1.0 is base level)
2098     */
2099    void SetMusicPitch(Music music, float pitch);
2100    /**
2101     * Set pan for a music (0.5 is center)
2102     */
2103    void SetMusicPan(Music music, float pan);
2104    /**
2105     * Get music time length (in seconds)
2106     */
2107    float GetMusicTimeLength(Music music);
2108    /**
2109     * Get current music time played (in seconds)
2110     */
2111    float GetMusicTimePlayed(Music music);
2112    /**
2113     * Load audio stream (to stream raw audio pcm data)
2114     */
2115    AudioStream LoadAudioStream(uint sampleRate, uint sampleSize, uint channels);
2116    /**
2117     * Checks if an audio stream is ready
2118     */
2119    bool IsAudioStreamReady(AudioStream stream);
2120    /**
2121     * Unload audio stream and free memory
2122     */
2123    void UnloadAudioStream(AudioStream stream);
2124    /**
2125     * Update audio stream buffers with data
2126     */
2127    void UpdateAudioStream(AudioStream stream, const(void)* data, int frameCount);
2128    /**
2129     * Check if any audio stream buffers requires refill
2130     */
2131    bool IsAudioStreamProcessed(AudioStream stream);
2132    /**
2133     * Play audio stream
2134     */
2135    void PlayAudioStream(AudioStream stream);
2136    /**
2137     * Pause audio stream
2138     */
2139    void PauseAudioStream(AudioStream stream);
2140    /**
2141     * Resume audio stream
2142     */
2143    void ResumeAudioStream(AudioStream stream);
2144    /**
2145     * Check if audio stream is playing
2146     */
2147    bool IsAudioStreamPlaying(AudioStream stream);
2148    /**
2149     * Stop audio stream
2150     */
2151    void StopAudioStream(AudioStream stream);
2152    /**
2153     * Set volume for audio stream (1.0 is max level)
2154     */
2155    void SetAudioStreamVolume(AudioStream stream, float volume);
2156    /**
2157     * Set pitch for audio stream (1.0 is base level)
2158     */
2159    void SetAudioStreamPitch(AudioStream stream, float pitch);
2160    /**
2161     * Set pan for audio stream (0.5 is centered)
2162     */
2163    void SetAudioStreamPan(AudioStream stream, float pan);
2164    /**
2165     * Default size for new audio streams
2166     */
2167    void SetAudioStreamBufferSizeDefault(int size);
2168    /**
2169     * Audio thread callback to request new data
2170     */
2171    void SetAudioStreamCallback(AudioStream stream, AudioCallback callback);
2172    /**
2173     * Attach audio stream processor to stream, receives the samples as <float>s
2174     */
2175    void AttachAudioStreamProcessor(AudioStream stream, AudioCallback processor);
2176    /**
2177     * Detach audio stream processor from stream
2178     */
2179    void DetachAudioStreamProcessor(AudioStream stream, AudioCallback processor);
2180    /**
2181     * Attach audio stream processor to the entire audio pipeline, receives the samples as <float>s
2182     */
2183    void AttachAudioMixedProcessor(AudioCallback processor);
2184    /**
2185     * Detach audio stream processor from the entire audio pipeline
2186     */
2187    void DetachAudioMixedProcessor(AudioCallback processor);
2188 }
2189