Last active
November 18, 2023 13:56
-
-
Save flysand7/82fa206dbb0d4267b5c15ccd092fe68d to your computer and use it in GitHub Desktop.
Raylib v4.5.0 -> v5.0 diff
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/raylib.h b/src/raylib.h | |
index 4cd9e434..1c4c4a09 100644 | |
--- a/src/raylib.h | |
+++ b/src/raylib.h | |
@@ -1,6 +1,6 @@ | |
/********************************************************************************************** | |
* | |
-* raylib v4.5 - A simple and easy-to-use library to enjoy videogames programming (www.raylib.com) | |
+* raylib v5.0 - A simple and easy-to-use library to enjoy videogames programming (www.raylib.com) | |
* | |
* FEATURES: | |
* - NO external dependencies, all required libraries included with raylib | |
@@ -81,10 +81,10 @@ | |
#include <stdarg.h> // Required for: va_list - Only used by TraceLogCallback | |
-#define RAYLIB_VERSION_MAJOR 4 | |
-#define RAYLIB_VERSION_MINOR 5 | |
+#define RAYLIB_VERSION_MAJOR 5 | |
+#define RAYLIB_VERSION_MINOR 0 | |
#define RAYLIB_VERSION_PATCH 0 | |
-#define RAYLIB_VERSION "4.5" | |
+#define RAYLIB_VERSION "5.0" | |
// Function specifiers in case library is build/used as a shared library (Windows) | |
// NOTE: Microsoft specifiers to tell compiler that symbols are imported/exported from a .dll | |
@@ -133,12 +133,20 @@ | |
// NOTE: MSVC C++ compiler does not support compound literals (C99 feature) | |
// Plain structures in C++ (without constructors) can be initialized with { } | |
+// This is called aggregate initialization (C++11 feature) | |
#if defined(__cplusplus) | |
#define CLITERAL(type) type | |
#else | |
#define CLITERAL(type) (type) | |
#endif | |
+// Some compilers (mostly macos clang) default to C++98, | |
+// where aggregate initialization can't be used | |
+// So, give a more clear error stating how to fix this | |
+#if !defined(_MSC_VER) && (defined(__cplusplus) && __cplusplus < 201103L) | |
+ #error "C++11 or later is required. Add -std=c++11" | |
+#endif | |
+ | |
// NOTE: We set some defines with some data types declared by raylib | |
// Other modules (raymath, rlgl) also require some of those types, so, | |
// to be able to use those other modules as standalone (not depending on raylib) | |
@@ -402,6 +410,7 @@ typedef struct ModelAnimation { | |
int frameCount; // Number of animation frames | |
BoneInfo *bones; // Bones information (skeleton) | |
Transform **framePoses; // Poses array by frame | |
+ char name[32]; // Animation name | |
} ModelAnimation; | |
// Ray, ray for raycasting | |
@@ -497,6 +506,20 @@ typedef struct FilePathList { | |
char **paths; // Filepaths entries | |
} FilePathList; | |
+// Automation event | |
+typedef struct AutomationEvent { | |
+ unsigned int frame; // Event frame | |
+ unsigned int type; // Event type (AutomationEventType) | |
+ int params[4]; // Event parameters (if required) | |
+} AutomationEvent; | |
+ | |
+// Automation event list | |
+typedef struct AutomationEventList { | |
+ unsigned int capacity; // Events max entries (MAX_AUTOMATION_EVENTS) | |
+ unsigned int count; // Events entries count | |
+ AutomationEvent *events; // Events entries | |
+} AutomationEventList; | |
+ | |
//---------------------------------------------------------------------------------- | |
// Enumerators Definition | |
//---------------------------------------------------------------------------------- | |
@@ -517,6 +540,7 @@ typedef enum { | |
FLAG_WINDOW_TRANSPARENT = 0x00000010, // Set to allow transparent framebuffer | |
FLAG_WINDOW_HIGHDPI = 0x00002000, // Set to support HighDPI | |
FLAG_WINDOW_MOUSE_PASSTHROUGH = 0x00004000, // Set to support mouse passthrough, only supported when FLAG_WINDOW_UNDECORATED | |
+ FLAG_BORDERLESS_WINDOWED_MODE = 0x00008000, // Set to run program in borderless windowed mode | |
FLAG_MSAA_4X_HINT = 0x00000020, // Set to try enabling MSAA 4X | |
FLAG_INTERLACED_HINT = 0x00010000 // Set to try enabling interlaced video format (for V3D) | |
} ConfigFlags; | |
@@ -802,6 +826,9 @@ typedef enum { | |
PIXELFORMAT_UNCOMPRESSED_R32, // 32 bpp (1 channel - float) | |
PIXELFORMAT_UNCOMPRESSED_R32G32B32, // 32*3 bpp (3 channels - float) | |
PIXELFORMAT_UNCOMPRESSED_R32G32B32A32, // 32*4 bpp (4 channels - float) | |
+ PIXELFORMAT_UNCOMPRESSED_R16, // 16 bpp (1 channel - half float) | |
+ PIXELFORMAT_UNCOMPRESSED_R16G16B16, // 16*3 bpp (3 channels - half float) | |
+ PIXELFORMAT_UNCOMPRESSED_R16G16B16A16, // 16*4 bpp (4 channels - half float) | |
PIXELFORMAT_COMPRESSED_DXT1_RGB, // 4 bpp (no alpha) | |
PIXELFORMAT_COMPRESSED_DXT1_RGBA, // 4 bpp (1 bit alpha) | |
PIXELFORMAT_COMPRESSED_DXT3_RGBA, // 8 bpp | |
@@ -905,8 +932,8 @@ typedef enum { | |
// Callbacks to hook some internal functions | |
// WARNING: These callbacks are intended for advance users | |
typedef void (*TraceLogCallback)(int logLevel, const char *text, va_list args); // Logging: Redirect trace log messages | |
-typedef unsigned char *(*LoadFileDataCallback)(const char *fileName, unsigned int *bytesRead); // FileIO: Load binary data | |
-typedef bool (*SaveFileDataCallback)(const char *fileName, void *data, unsigned int bytesToWrite); // FileIO: Save binary data | |
+typedef unsigned char *(*LoadFileDataCallback)(const char *fileName, int *dataSize); // FileIO: Load binary data | |
+typedef bool (*SaveFileDataCallback)(const char *fileName, void *data, int dataSize); // FileIO: Save binary data | |
typedef char *(*LoadFileTextCallback)(const char *fileName); // FileIO: Load text data | |
typedef bool (*SaveFileTextCallback)(const char *fileName, char *text); // FileIO: Save text data | |
@@ -925,8 +952,8 @@ extern "C" { // Prevents name mangling of functions | |
// Window-related functions | |
RLAPI void InitWindow(int width, int height, const char *title); // Initialize window and OpenGL context | |
-RLAPI bool WindowShouldClose(void); // Check if KEY_ESCAPE pressed or Close icon pressed | |
RLAPI void CloseWindow(void); // Close window and unload OpenGL context | |
+RLAPI bool WindowShouldClose(void); // Check if application should close (KEY_ESCAPE pressed or windows close icon clicked) | |
RLAPI bool IsWindowReady(void); // Check if window has been initialized successfully | |
RLAPI bool IsWindowFullscreen(void); // Check if window is currently fullscreen | |
RLAPI bool IsWindowHidden(void); // Check if window is currently hidden (only PLATFORM_DESKTOP) | |
@@ -938,17 +965,20 @@ RLAPI bool IsWindowState(unsigned int flag); // Check if on | |
RLAPI void SetWindowState(unsigned int flags); // Set window configuration state using flags (only PLATFORM_DESKTOP) | |
RLAPI void ClearWindowState(unsigned int flags); // Clear window configuration state flags | |
RLAPI void ToggleFullscreen(void); // Toggle window state: fullscreen/windowed (only PLATFORM_DESKTOP) | |
+RLAPI void ToggleBorderlessWindowed(void); // Toggle window state: borderless windowed (only PLATFORM_DESKTOP) | |
RLAPI void MaximizeWindow(void); // Set window state: maximized, if resizable (only PLATFORM_DESKTOP) | |
RLAPI void MinimizeWindow(void); // Set window state: minimized, if resizable (only PLATFORM_DESKTOP) | |
RLAPI void RestoreWindow(void); // Set window state: not minimized/maximized (only PLATFORM_DESKTOP) | |
RLAPI void SetWindowIcon(Image image); // Set icon for window (single image, RGBA 32bit, only PLATFORM_DESKTOP) | |
RLAPI void SetWindowIcons(Image *images, int count); // Set icon for window (multiple images, RGBA 32bit, only PLATFORM_DESKTOP) | |
-RLAPI void SetWindowTitle(const char *title); // Set title for window (only PLATFORM_DESKTOP) | |
+RLAPI void SetWindowTitle(const char *title); // Set title for window (only PLATFORM_DESKTOP and PLATFORM_WEB) | |
RLAPI void SetWindowPosition(int x, int y); // Set window position on screen (only PLATFORM_DESKTOP) | |
-RLAPI void SetWindowMonitor(int monitor); // Set monitor for the current window (fullscreen mode) | |
+RLAPI void SetWindowMonitor(int monitor); // Set monitor for the current window | |
RLAPI void SetWindowMinSize(int width, int height); // Set window minimum dimensions (for FLAG_WINDOW_RESIZABLE) | |
+RLAPI void SetWindowMaxSize(int width, int height); // Set window maximum dimensions (for FLAG_WINDOW_RESIZABLE) | |
RLAPI void SetWindowSize(int width, int height); // Set window dimensions | |
RLAPI void SetWindowOpacity(float opacity); // Set window opacity [0.0f..1.0f] (only PLATFORM_DESKTOP) | |
+RLAPI void SetWindowFocused(void); // Set window focused (only PLATFORM_DESKTOP) | |
RLAPI void *GetWindowHandle(void); // Get native window handle | |
RLAPI int GetScreenWidth(void); // Get current screen width | |
RLAPI int GetScreenHeight(void); // Get current screen height | |
@@ -964,20 +994,12 @@ RLAPI int GetMonitorPhysicalHeight(int monitor); // Get specifi | |
RLAPI int GetMonitorRefreshRate(int monitor); // Get specified monitor refresh rate | |
RLAPI Vector2 GetWindowPosition(void); // Get window position XY on monitor | |
RLAPI Vector2 GetWindowScaleDPI(void); // Get window scale DPI factor | |
-RLAPI const char *GetMonitorName(int monitor); // Get the human-readable, UTF-8 encoded name of the primary monitor | |
+RLAPI const char *GetMonitorName(int monitor); // Get the human-readable, UTF-8 encoded name of the specified monitor | |
RLAPI void SetClipboardText(const char *text); // Set clipboard text content | |
RLAPI const char *GetClipboardText(void); // Get clipboard text content | |
RLAPI void EnableEventWaiting(void); // Enable waiting for events on EndDrawing(), no automatic event polling | |
RLAPI void DisableEventWaiting(void); // Disable waiting for events on EndDrawing(), automatic events polling | |
-// Custom frame control functions | |
-// NOTE: Those functions are intended for advance users that want full control over the frame processing | |
-// By default EndDrawing() does this job: draws everything + SwapScreenBuffer() + manage frame timing + PollInputEvents() | |
-// To avoid that behaviour and control frame processes manually, enable in config.h: SUPPORT_CUSTOM_FRAME_CONTROL | |
-RLAPI void SwapScreenBuffer(void); // Swap back buffer with front buffer (screen drawing) | |
-RLAPI void PollInputEvents(void); // Register all input events | |
-RLAPI void WaitTime(double seconds); // Wait for some time (halt program execution) | |
- | |
// Cursor-related functions | |
RLAPI void ShowCursor(void); // Shows cursor | |
RLAPI void HideCursor(void); // Hides cursor | |
@@ -1033,24 +1055,37 @@ RLAPI Vector2 GetWorldToScreen2D(Vector2 position, Camera2D camera); // Get the | |
// Timing-related functions | |
RLAPI void SetTargetFPS(int fps); // Set target FPS (maximum) | |
-RLAPI int GetFPS(void); // Get current FPS | |
RLAPI float GetFrameTime(void); // Get time in seconds for last frame drawn (delta time) | |
RLAPI double GetTime(void); // Get elapsed time in seconds since InitWindow() | |
+RLAPI int GetFPS(void); // Get current FPS | |
-// Misc. functions | |
-RLAPI int GetRandomValue(int min, int max); // Get a random value between min and max (both included) | |
+// Custom frame control functions | |
+// NOTE: Those functions are intended for advance users that want full control over the frame processing | |
+// By default EndDrawing() does this job: draws everything + SwapScreenBuffer() + manage frame timing + PollInputEvents() | |
+// To avoid that behaviour and control frame processes manually, enable in config.h: SUPPORT_CUSTOM_FRAME_CONTROL | |
+RLAPI void SwapScreenBuffer(void); // Swap back buffer with front buffer (screen drawing) | |
+RLAPI void PollInputEvents(void); // Register all input events | |
+RLAPI void WaitTime(double seconds); // Wait for some time (halt program execution) | |
+ | |
+// Random values generation functions | |
RLAPI void SetRandomSeed(unsigned int seed); // Set the seed for the random number generator | |
+RLAPI int GetRandomValue(int min, int max); // Get a random value between min and max (both included) | |
+RLAPI int *LoadRandomSequence(unsigned int count, int min, int max); // Load random values sequence, no values repeated | |
+RLAPI void UnloadRandomSequence(int *sequence); // Unload random values sequence | |
+ | |
+// Misc. functions | |
RLAPI void TakeScreenshot(const char *fileName); // Takes a screenshot of current screen (filename extension defines format) | |
RLAPI void SetConfigFlags(unsigned int flags); // Setup init configuration flags (view FLAGS) | |
+RLAPI void OpenURL(const char *url); // Open URL with default system browser (if available) | |
+// NOTE: Following functions implemented in module [utils] | |
+//------------------------------------------------------------------ | |
RLAPI void TraceLog(int logLevel, const char *text, ...); // Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR...) | |
RLAPI void SetTraceLogLevel(int logLevel); // Set the current threshold (minimum) log level | |
RLAPI void *MemAlloc(unsigned int size); // Internal memory allocator | |
RLAPI void *MemRealloc(void *ptr, unsigned int size); // Internal memory reallocator | |
RLAPI void MemFree(void *ptr); // Internal memory free | |
-RLAPI void OpenURL(const char *url); // Open URL with default system browser (if available) | |
- | |
// Set custom callbacks | |
// WARNING: Callbacks setup is intended for advance users | |
RLAPI void SetTraceLogCallback(TraceLogCallback callback); // Set custom trace log | |
@@ -1060,13 +1095,16 @@ RLAPI void SetLoadFileTextCallback(LoadFileTextCallback callback); // Set custom | |
RLAPI void SetSaveFileTextCallback(SaveFileTextCallback callback); // Set custom file text data saver | |
// Files management functions | |
-RLAPI unsigned char *LoadFileData(const char *fileName, unsigned int *bytesRead); // Load file data as byte array (read) | |
+RLAPI unsigned char *LoadFileData(const char *fileName, int *dataSize); // Load file data as byte array (read) | |
RLAPI void UnloadFileData(unsigned char *data); // Unload file data allocated by LoadFileData() | |
-RLAPI bool SaveFileData(const char *fileName, void *data, unsigned int bytesToWrite); // Save data to file from byte array (write), returns true on success | |
-RLAPI bool ExportDataAsCode(const unsigned char *data, unsigned int size, const char *fileName); // Export data to code (.h), returns true on success | |
+RLAPI bool SaveFileData(const char *fileName, void *data, int dataSize); // Save data to file from byte array (write), returns true on success | |
+RLAPI bool ExportDataAsCode(const unsigned char *data, int dataSize, const char *fileName); // Export data to code (.h), returns true on success | |
RLAPI char *LoadFileText(const char *fileName); // Load text data from file (read), returns a '\0' terminated string | |
RLAPI void UnloadFileText(char *text); // Unload file text data allocated by LoadFileText() | |
RLAPI bool SaveFileText(const char *fileName, char *text); // Save text data to file (write), string must be '\0' terminated, returns true on success | |
+//------------------------------------------------------------------ | |
+ | |
+// File system functions | |
RLAPI bool FileExists(const char *fileName); // Check if file exists | |
RLAPI bool DirectoryExists(const char *dirPath); // Check if a directory path exists | |
RLAPI bool IsFileExtension(const char *fileName, const char *ext); // Check file extension (including point: .png, .wav) | |
@@ -1077,7 +1115,7 @@ RLAPI const char *GetFileNameWithoutExt(const char *filePath); // Get filenam | |
RLAPI const char *GetDirectoryPath(const char *filePath); // Get full path for a given fileName with path (uses static string) | |
RLAPI const char *GetPrevDirectoryPath(const char *dirPath); // Get previous directory path for a given path (uses static string) | |
RLAPI const char *GetWorkingDirectory(void); // Get current working directory (uses static string) | |
-RLAPI const char *GetApplicationDirectory(void); // Get the directory if the running application (uses static string) | |
+RLAPI const char *GetApplicationDirectory(void); // Get the directory of the running application (uses static string) | |
RLAPI bool ChangeDirectory(const char *dir); // Change working directory, return true on success | |
RLAPI bool IsPathFile(const char *path); // Check if a given path is a file or a directory | |
RLAPI FilePathList LoadDirectoryFiles(const char *dirPath); // Load directory filepaths | |
@@ -1094,18 +1132,29 @@ RLAPI unsigned char *DecompressData(const unsigned char *compData, int compDataS | |
RLAPI char *EncodeDataBase64(const unsigned char *data, int dataSize, int *outputSize); // Encode data to Base64 string, memory must be MemFree() | |
RLAPI unsigned char *DecodeDataBase64(const unsigned char *data, int *outputSize); // Decode Base64 string data, memory must be MemFree() | |
+// Automation events functionality | |
+RLAPI AutomationEventList LoadAutomationEventList(const char *fileName); // Load automation events list from file, NULL for empty list, capacity = MAX_AUTOMATION_EVENTS | |
+RLAPI void UnloadAutomationEventList(AutomationEventList *list); // Unload automation events list from file | |
+RLAPI bool ExportAutomationEventList(AutomationEventList list, const char *fileName); // Export automation events list as text file | |
+RLAPI void SetAutomationEventList(AutomationEventList *list); // Set automation event list to record to | |
+RLAPI void SetAutomationEventBaseFrame(int frame); // Set automation event internal base frame to start recording | |
+RLAPI void StartAutomationEventRecording(void); // Start recording automation events (AutomationEventList must be set) | |
+RLAPI void StopAutomationEventRecording(void); // Stop recording automation events | |
+RLAPI void PlayAutomationEvent(AutomationEvent event); // Play a recorded automation event | |
+ | |
//------------------------------------------------------------------------------------ | |
// Input Handling Functions (Module: core) | |
//------------------------------------------------------------------------------------ | |
// Input-related functions: keyboard | |
RLAPI bool IsKeyPressed(int key); // Check if a key has been pressed once | |
+RLAPI bool IsKeyPressedRepeat(int key); // Check if a key has been pressed again (Only PLATFORM_DESKTOP) | |
RLAPI bool IsKeyDown(int key); // Check if a key is being pressed | |
RLAPI bool IsKeyReleased(int key); // Check if a key has been released once | |
RLAPI bool IsKeyUp(int key); // Check if a key is NOT being pressed | |
-RLAPI void SetExitKey(int key); // Set a custom key to exit program (default is ESC) | |
RLAPI int GetKeyPressed(void); // Get key pressed (keycode), call it multiple times for keys queued, returns 0 when the queue is empty | |
RLAPI int GetCharPressed(void); // Get char pressed (unicode), call it multiple times for chars queued, returns 0 when the queue is empty | |
+RLAPI void SetExitKey(int key); // Set a custom key to exit program (default is ESC) | |
// Input-related functions: gamepads | |
RLAPI bool IsGamepadAvailable(int gamepad); // Check if a gamepad is available | |
@@ -1146,7 +1195,7 @@ RLAPI int GetTouchPointCount(void); // Get number of t | |
// Gestures and Touch Handling Functions (Module: rgestures) | |
//------------------------------------------------------------------------------------ | |
RLAPI void SetGesturesEnabled(unsigned int flags); // Enable a set of gestures using flags | |
-RLAPI bool IsGestureDetected(int gesture); // Check if a gesture have been detected | |
+RLAPI bool IsGestureDetected(unsigned int gesture); // Check if a gesture have been detected | |
RLAPI int GetGestureDetected(void); // Get latest detected gesture | |
RLAPI float GetGestureHoldDuration(void); // Get gesture hold time in milliseconds | |
RLAPI Vector2 GetGestureDragVector(void); // Get gesture drag vector | |
@@ -1172,18 +1221,17 @@ RLAPI void SetShapesTexture(Texture2D texture, Rectangle source); // Set t | |
RLAPI void DrawPixel(int posX, int posY, Color color); // Draw a pixel | |
RLAPI void DrawPixelV(Vector2 position, Color color); // Draw a pixel (Vector version) | |
RLAPI void DrawLine(int startPosX, int startPosY, int endPosX, int endPosY, Color color); // Draw a line | |
-RLAPI void DrawLineV(Vector2 startPos, Vector2 endPos, Color color); // Draw a line (Vector version) | |
-RLAPI void DrawLineEx(Vector2 startPos, Vector2 endPos, float thick, Color color); // Draw a line defining thickness | |
-RLAPI void DrawLineBezier(Vector2 startPos, Vector2 endPos, float thick, Color color); // Draw a line using cubic-bezier curves in-out | |
-RLAPI void DrawLineBezierQuad(Vector2 startPos, Vector2 endPos, Vector2 controlPos, float thick, Color color); // Draw line using quadratic bezier curves with a control point | |
-RLAPI void DrawLineBezierCubic(Vector2 startPos, Vector2 endPos, Vector2 startControlPos, Vector2 endControlPos, float thick, Color color); // Draw line using cubic bezier curves with 2 control points | |
-RLAPI void DrawLineStrip(Vector2 *points, int pointCount, Color color); // Draw lines sequence | |
+RLAPI void DrawLineV(Vector2 startPos, Vector2 endPos, Color color); // Draw a line (using gl lines) | |
+RLAPI void DrawLineEx(Vector2 startPos, Vector2 endPos, float thick, Color color); // Draw a line (using triangles/quads) | |
+RLAPI void DrawLineStrip(Vector2 *points, int pointCount, Color color); // Draw lines sequence (using gl lines) | |
+RLAPI void DrawLineBezier(Vector2 startPos, Vector2 endPos, float thick, Color color); // Draw line segment cubic-bezier in-out interpolation | |
RLAPI void DrawCircle(int centerX, int centerY, float radius, Color color); // Draw a color-filled circle | |
RLAPI void DrawCircleSector(Vector2 center, float radius, float startAngle, float endAngle, int segments, Color color); // Draw a piece of a circle | |
RLAPI void DrawCircleSectorLines(Vector2 center, float radius, float startAngle, float endAngle, int segments, Color color); // Draw circle sector outline | |
RLAPI void DrawCircleGradient(int centerX, int centerY, float radius, Color color1, Color color2); // Draw a gradient-filled circle | |
RLAPI void DrawCircleV(Vector2 center, float radius, Color color); // Draw a color-filled circle (Vector version) | |
RLAPI void DrawCircleLines(int centerX, int centerY, float radius, Color color); // Draw circle outline | |
+RLAPI void DrawCircleLinesV(Vector2 center, float radius, Color color); // Draw circle outline (Vector version) | |
RLAPI void DrawEllipse(int centerX, int centerY, float radiusH, float radiusV, Color color); // Draw ellipse | |
RLAPI void DrawEllipseLines(int centerX, int centerY, float radiusH, float radiusV, Color color); // Draw ellipse outline | |
RLAPI void DrawRing(Vector2 center, float innerRadius, float outerRadius, float startAngle, float endAngle, int segments, Color color); // Draw ring | |
@@ -1207,6 +1255,25 @@ RLAPI void DrawPoly(Vector2 center, int sides, float radius, float rotation, Col | |
RLAPI void DrawPolyLines(Vector2 center, int sides, float radius, float rotation, Color color); // Draw a polygon outline of n sides | |
RLAPI void DrawPolyLinesEx(Vector2 center, int sides, float radius, float rotation, float lineThick, Color color); // Draw a polygon outline of n sides with extended parameters | |
+// Splines drawing functions | |
+RLAPI void DrawSplineLinear(Vector2 *points, int pointCount, float thick, Color color); // Draw spline: Linear, minimum 2 points | |
+RLAPI void DrawSplineBasis(Vector2 *points, int pointCount, float thick, Color color); // Draw spline: B-Spline, minimum 4 points | |
+RLAPI void DrawSplineCatmullRom(Vector2 *points, int pointCount, float thick, Color color); // Draw spline: Catmull-Rom, minimum 4 points | |
+RLAPI void DrawSplineBezierQuadratic(Vector2 *points, int pointCount, float thick, Color color); // Draw spline: Quadratic Bezier, minimum 3 points (1 control point): [p1, c2, p3, c4...] | |
+RLAPI void DrawSplineBezierCubic(Vector2 *points, int pointCount, float thick, Color color); // Draw spline: Cubic Bezier, minimum 4 points (2 control points): [p1, c2, c3, p4, c5, c6...] | |
+RLAPI void DrawSplineSegmentLinear(Vector2 p1, Vector2 p2, float thick, Color color); // Draw spline segment: Linear, 2 points | |
+RLAPI void DrawSplineSegmentBasis(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float thick, Color color); // Draw spline segment: B-Spline, 4 points | |
+RLAPI void DrawSplineSegmentCatmullRom(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float thick, Color color); // Draw spline segment: Catmull-Rom, 4 points | |
+RLAPI void DrawSplineSegmentBezierQuadratic(Vector2 p1, Vector2 c2, Vector2 p3, float thick, Color color); // Draw spline segment: Quadratic Bezier, 2 points, 1 control point | |
+RLAPI void DrawSplineSegmentBezierCubic(Vector2 p1, Vector2 c2, Vector2 c3, Vector2 p4, float thick, Color color); // Draw spline segment: Cubic Bezier, 2 points, 2 control points | |
+ | |
+// Spline segment point evaluation functions, for a given t [0.0f .. 1.0f] | |
+RLAPI Vector2 GetSplinePointLinear(Vector2 startPos, Vector2 endPos, float t); // Get (evaluate) spline point: Linear | |
+RLAPI Vector2 GetSplinePointBasis(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float t); // Get (evaluate) spline point: B-Spline | |
+RLAPI Vector2 GetSplinePointCatmullRom(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float t); // Get (evaluate) spline point: Catmull-Rom | |
+RLAPI Vector2 GetSplinePointBezierQuad(Vector2 p1, Vector2 c2, Vector2 p3, float t); // Get (evaluate) spline point: Quadratic Bezier | |
+RLAPI Vector2 GetSplinePointBezierCubic(Vector2 p1, Vector2 c2, Vector2 c3, Vector2 p4, float t); // Get (evaluate) spline point: Cubic Bezier | |
+ | |
// Basic shapes collision detection functions | |
RLAPI bool CheckCollisionRecs(Rectangle rec1, Rectangle rec2); // Check collision between two rectangles | |
RLAPI bool CheckCollisionCircles(Vector2 center1, float radius1, Vector2 center2, float radius2); // Check collision between two circles | |
@@ -1227,6 +1294,7 @@ RLAPI Rectangle GetCollisionRec(Rectangle rec1, Rectangle rec2); | |
// NOTE: These functions do not require GPU access | |
RLAPI Image LoadImage(const char *fileName); // Load image from file into CPU memory (RAM) | |
RLAPI Image LoadImageRaw(const char *fileName, int width, int height, int format, int headerSize); // Load image from RAW file data | |
+RLAPI Image LoadImageSvg(const char *fileNameOrString, int width, int height); // Load image from SVG file data or string with specified size | |
RLAPI Image LoadImageAnim(const char *fileName, int *frames); // Load image sequence from file (frames appended to image.data) | |
RLAPI Image LoadImageFromMemory(const char *fileType, const unsigned char *fileData, int dataSize); // Load image from memory buffer, fileType refers to extension: i.e. '.png' | |
RLAPI Image LoadImageFromTexture(Texture2D texture); // Load image from GPU texture data | |
@@ -1234,13 +1302,14 @@ RLAPI Image LoadImageFromScreen(void); | |
RLAPI bool IsImageReady(Image image); // Check if an image is ready | |
RLAPI void UnloadImage(Image image); // Unload image from CPU memory (RAM) | |
RLAPI bool ExportImage(Image image, const char *fileName); // Export image data to file, returns true on success | |
+RLAPI unsigned char *ExportImageToMemory(Image image, const char *fileType, int *fileSize); // Export image to memory buffer | |
RLAPI bool ExportImageAsCode(Image image, const char *fileName); // Export image as code file defining an array of bytes, returns true on success | |
// Image generation functions | |
RLAPI Image GenImageColor(int width, int height, Color color); // Generate image: plain color | |
-RLAPI Image GenImageGradientV(int width, int height, Color top, Color bottom); // Generate image: vertical gradient | |
-RLAPI Image GenImageGradientH(int width, int height, Color left, Color right); // Generate image: horizontal gradient | |
+RLAPI Image GenImageGradientLinear(int width, int height, int direction, Color start, Color end); // Generate image: linear gradient, direction in degrees [0..360], 0=Vertical gradient | |
RLAPI Image GenImageGradientRadial(int width, int height, float density, Color inner, Color outer); // Generate image: radial gradient | |
+RLAPI Image GenImageGradientSquare(int width, int height, float density, Color inner, Color outer); // Generate image: square gradient | |
RLAPI Image GenImageChecked(int width, int height, int checksX, int checksY, Color col1, Color col2); // Generate image: checked | |
RLAPI Image GenImageWhiteNoise(int width, int height, float factor); // Generate image: white noise | |
RLAPI Image GenImagePerlinNoise(int width, int height, int offsetX, int offsetY, float scale); // Generate image: perlin noise | |
@@ -1267,6 +1336,7 @@ RLAPI void ImageMipmaps(Image *image); | |
RLAPI void ImageDither(Image *image, int rBpp, int gBpp, int bBpp, int aBpp); // Dither image data to 16bpp or lower (Floyd-Steinberg dithering) | |
RLAPI void ImageFlipVertical(Image *image); // Flip image vertically | |
RLAPI void ImageFlipHorizontal(Image *image); // Flip image horizontally | |
+RLAPI void ImageRotate(Image *image, int degrees); // Rotate image by input angle in degrees (-359 to 359) | |
RLAPI void ImageRotateCW(Image *image); // Rotate image clockwise 90deg | |
RLAPI void ImageRotateCCW(Image *image); // Rotate image counter-clockwise 90deg | |
RLAPI void ImageColorTint(Image *image, Color color); // Modify image color: tint | |
@@ -1309,7 +1379,7 @@ RLAPI TextureCubemap LoadTextureCubemap(Image image, int layout); | |
RLAPI RenderTexture2D LoadRenderTexture(int width, int height); // Load texture for rendering (framebuffer) | |
RLAPI bool IsTextureReady(Texture2D texture); // Check if a texture is ready | |
RLAPI void UnloadTexture(Texture2D texture); // Unload texture from GPU memory (VRAM) | |
-RLAPI bool IsRenderTextureReady(RenderTexture2D target); // Check if a render texture is ready | |
+RLAPI bool IsRenderTextureReady(RenderTexture2D target); // Check if a render texture is ready | |
RLAPI void UnloadRenderTexture(RenderTexture2D target); // Unload render texture from GPU memory (VRAM) | |
RLAPI void UpdateTexture(Texture2D texture, const void *pixels); // Update GPU texture with new data | |
RLAPI void UpdateTextureRec(Texture2D texture, Rectangle rec, const void *pixels); // Update GPU texture rectangle with new data | |
@@ -1351,13 +1421,13 @@ RLAPI int GetPixelDataSize(int width, int height, int format); // G | |
// Font loading/unloading functions | |
RLAPI Font GetFontDefault(void); // Get the default Font | |
RLAPI Font LoadFont(const char *fileName); // Load font from file into GPU memory (VRAM) | |
-RLAPI Font LoadFontEx(const char *fileName, int fontSize, int *fontChars, int glyphCount); // Load font from file with extended parameters, use NULL for fontChars and 0 for glyphCount to load the default character set | |
+RLAPI Font LoadFontEx(const char *fileName, int fontSize, int *codepoints, int codepointCount); // Load font from file with extended parameters, use NULL for codepoints and 0 for codepointCount to load the default character set | |
RLAPI Font LoadFontFromImage(Image image, Color key, int firstChar); // Load font from Image (XNA style) | |
-RLAPI Font LoadFontFromMemory(const char *fileType, const unsigned char *fileData, int dataSize, int fontSize, int *fontChars, int glyphCount); // Load font from memory buffer, fileType refers to extension: i.e. '.ttf' | |
+RLAPI Font LoadFontFromMemory(const char *fileType, const unsigned char *fileData, int dataSize, int fontSize, int *codepoints, int codepointCount); // Load font from memory buffer, fileType refers to extension: i.e. '.ttf' | |
RLAPI bool IsFontReady(Font font); // Check if a font is ready | |
-RLAPI GlyphInfo *LoadFontData(const unsigned char *fileData, int dataSize, int fontSize, int *fontChars, int glyphCount, int type); // Load font data for further use | |
-RLAPI Image GenImageFontAtlas(const GlyphInfo *chars, Rectangle **recs, int glyphCount, int fontSize, int padding, int packMethod); // Generate image font atlas using chars info | |
-RLAPI void UnloadFontData(GlyphInfo *chars, int glyphCount); // Unload font chars info data (RAM) | |
+RLAPI GlyphInfo *LoadFontData(const unsigned char *fileData, int dataSize, int fontSize, int *codepoints, int codepointCount, int type); // Load font data for further use | |
+RLAPI Image GenImageFontAtlas(const GlyphInfo *glyphs, Rectangle **glyphRecs, int glyphCount, int fontSize, int padding, int packMethod); // Generate image font atlas using chars info | |
+RLAPI void UnloadFontData(GlyphInfo *glyphs, int glyphCount); // Unload font chars info data (RAM) | |
RLAPI void UnloadFont(Font font); // Unload font from GPU memory (VRAM) | |
RLAPI bool ExportFontAsCode(Font font, const char *fileName); // Export font as code file, returns true on success | |
@@ -1367,9 +1437,10 @@ RLAPI void DrawText(const char *text, int posX, int posY, int fontSize, Color co | |
RLAPI void DrawTextEx(Font font, const char *text, Vector2 position, float fontSize, float spacing, Color tint); // Draw text using font and additional parameters | |
RLAPI void DrawTextPro(Font font, const char *text, Vector2 position, Vector2 origin, float rotation, float fontSize, float spacing, Color tint); // Draw text using Font and pro parameters (rotation) | |
RLAPI void DrawTextCodepoint(Font font, int codepoint, Vector2 position, float fontSize, Color tint); // Draw one character (codepoint) | |
-RLAPI void DrawTextCodepoints(Font font, const int *codepoints, int count, Vector2 position, float fontSize, float spacing, Color tint); // Draw multiple character (codepoint) | |
+RLAPI void DrawTextCodepoints(Font font, const int *codepoints, int codepointCount, Vector2 position, float fontSize, float spacing, Color tint); // Draw multiple character (codepoint) | |
// Text font info functions | |
+RLAPI void SetTextLineSpacing(int spacing); // Set vertical line spacing when drawing with line-breaks | |
RLAPI int MeasureText(const char *text, int fontSize); // Measure string width for default font | |
RLAPI Vector2 MeasureTextEx(Font font, const char *text, float fontSize, float spacing); // Measure string size for Font | |
RLAPI int GetGlyphIndex(Font font, int codepoint); // Get glyph index position in font for a codepoint (unicode character), fallback to '?' if not found | |
@@ -1485,10 +1556,10 @@ RLAPI void SetMaterialTexture(Material *material, int mapType, Texture2D texture | |
RLAPI void SetModelMeshMaterial(Model *model, int meshId, int materialId); // Set material for a mesh | |
// Model animations loading/unloading functions | |
-RLAPI ModelAnimation *LoadModelAnimations(const char *fileName, unsigned int *animCount); // Load model animations from file | |
+RLAPI ModelAnimation *LoadModelAnimations(const char *fileName, int *animCount); // Load model animations from file | |
RLAPI void UpdateModelAnimation(Model model, ModelAnimation anim, int frame); // Update model animation pose | |
RLAPI void UnloadModelAnimation(ModelAnimation anim); // Unload animation data | |
-RLAPI void UnloadModelAnimations(ModelAnimation *animations, unsigned int count); // Unload animation array data | |
+RLAPI void UnloadModelAnimations(ModelAnimation *animations, int animCount); // Unload animation array data | |
RLAPI bool IsModelAnimationValid(Model model, ModelAnimation anim); // Check model animation skeleton match | |
// Collision detection functions | |
@@ -1511,6 +1582,7 @@ RLAPI void InitAudioDevice(void); // Initial | |
RLAPI void CloseAudioDevice(void); // Close the audio device and context | |
RLAPI bool IsAudioDeviceReady(void); // Check if audio device has been initialized successfully | |
RLAPI void SetMasterVolume(float volume); // Set master volume (listener) | |
+RLAPI float GetMasterVolume(void); // Get master volume (listener) | |
// Wave/Sound loading/unloading functions | |
RLAPI Wave LoadWave(const char *fileName); // Load wave data from file | |
@@ -1518,10 +1590,12 @@ RLAPI Wave LoadWaveFromMemory(const char *fileType, const unsigned char *fileDat | |
RLAPI bool IsWaveReady(Wave wave); // Checks if wave data is ready | |
RLAPI Sound LoadSound(const char *fileName); // Load sound from file | |
RLAPI Sound LoadSoundFromWave(Wave wave); // Load sound from wave data | |
+RLAPI Sound LoadSoundAlias(Sound source); // Create a new sound that shares the same sample data as the source sound, does not own the sound data | |
RLAPI bool IsSoundReady(Sound sound); // Checks if a sound is ready | |
RLAPI void UpdateSound(Sound sound, const void *data, int sampleCount); // Update sound buffer with new data | |
RLAPI void UnloadWave(Wave wave); // Unload wave data | |
RLAPI void UnloadSound(Sound sound); // Unload sound | |
+RLAPI void UnloadSoundAlias(Sound alias); // Unload a sound alias (does not deallocate sample data) | |
RLAPI bool ExportWave(Wave wave, const char *fileName); // Export wave data to file, returns true on success | |
RLAPI bool ExportWaveAsCode(Wave wave, const char *fileName); // Export wave sample data to code (.h), returns true on success | |
@@ -1573,12 +1647,12 @@ RLAPI void SetAudioStreamVolume(AudioStream stream, float volume); // Set vol | |
RLAPI void SetAudioStreamPitch(AudioStream stream, float pitch); // Set pitch for audio stream (1.0 is base level) | |
RLAPI void SetAudioStreamPan(AudioStream stream, float pan); // Set pan for audio stream (0.5 is centered) | |
RLAPI void SetAudioStreamBufferSizeDefault(int size); // Default size for new audio streams | |
-RLAPI void SetAudioStreamCallback(AudioStream stream, AudioCallback callback); // Audio thread callback to request new data | |
+RLAPI void SetAudioStreamCallback(AudioStream stream, AudioCallback callback); // Audio thread callback to request new data | |
-RLAPI void AttachAudioStreamProcessor(AudioStream stream, AudioCallback processor); // Attach audio stream processor to stream | |
+RLAPI void AttachAudioStreamProcessor(AudioStream stream, AudioCallback processor); // Attach audio stream processor to stream, receives the samples as <float>s | |
RLAPI void DetachAudioStreamProcessor(AudioStream stream, AudioCallback processor); // Detach audio stream processor from stream | |
-RLAPI void AttachAudioMixedProcessor(AudioCallback processor); // Attach audio stream processor to the entire audio pipeline | |
+RLAPI void AttachAudioMixedProcessor(AudioCallback processor); // Attach audio stream processor to the entire audio pipeline, receives the samples as <float>s | |
RLAPI void DetachAudioMixedProcessor(AudioCallback processor); // Detach audio stream processor from the entire audio pipeline | |
#if defined(__cplusplus) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment