From e465ed0850106a3574d01363874ae49ef7e478c9 Mon Sep 17 00:00:00 2001 From: Dane Madsen Date: Wed, 24 May 2023 17:22:51 +1000 Subject: [PATCH] Added ImageRotate (#3078) * Added ImageRotate * Quick rename of the example * Update ImageRotate by changing doubles to floats and checking code convention * Update API --- examples/Makefile | 1 + examples/textures/textures_image_rotate.c | 79 +++ examples/textures/textures_image_rotate.png | Bin 0 -> 24060 bytes parser/output/raylib_api.json | 15 + parser/output/raylib_api.lua | 9 + parser/output/raylib_api.txt | 498 +++++++++--------- parser/output/raylib_api.xml | 6 +- projects/Geany/raylib.c.tags | 1 + .../raylib_npp_parser/raylib_npp.xml | 6 + .../raylib_npp_parser/raylib_to_parse.h | 1 + src/raylib.h | 1 + src/rtextures.c | 59 +++ 12 files changed, 429 insertions(+), 247 deletions(-) create mode 100644 examples/textures/textures_image_rotate.c create mode 100644 examples/textures/textures_image_rotate.png diff --git a/examples/Makefile b/examples/Makefile index cc9ef239..c2ea35bf 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -453,6 +453,7 @@ TEXTURES = \ textures/textures_image_generation \ textures/textures_image_loading \ textures/textures_image_processing \ + textures/textures_image_rotate \ textures/textures_image_text \ textures/textures_to_image \ textures/textures_raw_data \ diff --git a/examples/textures/textures_image_rotate.c b/examples/textures/textures_image_rotate.c new file mode 100644 index 00000000..a590e1e0 --- /dev/null +++ b/examples/textures/textures_image_rotate.c @@ -0,0 +1,79 @@ +/******************************************************************************************* +* +* raylib [textures] example - Image Rotation +* +* Example originally created with raylib 1.0, last time updated with raylib 1.0 +* +* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, +* BSD-like license that allows static linking with closed source software +* +* Copyright (c) 2014-2023 Ramon Santamaria (@raysan5) +* +********************************************************************************************/ + +#include "raylib.h" + +#define NUM_TEXTURES 3 + +//------------------------------------------------------------------------------------ +// Program main entry point +//------------------------------------------------------------------------------------ +int main(void) +{ + // Initialization + //-------------------------------------------------------------------------------------- + const int screenWidth = 800; + const int screenHeight = 450; + + InitWindow(screenWidth, screenHeight, "raylib [textures] example - texture rotation"); + + // NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required) + Image image45 = LoadImage("resources/raylib_logo.png"); + Image image90 = LoadImage("resources/raylib_logo.png"); + Image imageNeg90 = LoadImage("resources/raylib_logo.png"); + + ImageRotate(&image45, 45); + ImageRotate(&image90, 90); + ImageRotate(&imageNeg90, -90); + + Texture2D textures[NUM_TEXTURES] = { 0 }; + + textures[0] = LoadTextureFromImage(image45); + textures[1] = LoadTextureFromImage(image90); + textures[2] = LoadTextureFromImage(imageNeg90); + + int currentTexture = 0; + //--------------------------------------------------------------------------------------- + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + // Update + //---------------------------------------------------------------------------------- + if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT) || IsKeyPressed(KEY_RIGHT)) + { + currentTexture = (currentTexture + 1)%NUM_TEXTURES; // Cycle between the textures + } + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(RAYWHITE); + + DrawTexture(textures[currentTexture], screenWidth/2 - textures[currentTexture].width/2, screenHeight/2 - textures[currentTexture].height/2, WHITE); + + EndDrawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + for (int i = 0; i < NUM_TEXTURES; i++) UnloadTexture(textures[i]); + + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} \ No newline at end of file diff --git a/examples/textures/textures_image_rotate.png b/examples/textures/textures_image_rotate.png new file mode 100644 index 0000000000000000000000000000000000000000..64bbc54e496f4587e2609a58cea3ceee637123d1 GIT binary patch literal 24060 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 literal 0 HcmV?d00001 diff --git a/parser/output/raylib_api.json b/parser/output/raylib_api.json index 4438ab0d..b42f03a8 100644 --- a/parser/output/raylib_api.json +++ b/parser/output/raylib_api.json @@ -6757,6 +6757,21 @@ } ] }, + { + "name": "ImageRotate", + "description": "Rotate image by input angle in degrees (-359 to 359) ", + "returnType": "void", + "params": [ + { + "type": "Image *", + "name": "image" + }, + { + "type": "int", + "name": "degrees" + } + ] + }, { "name": "ImageRotateCW", "description": "Rotate image clockwise 90deg", diff --git a/parser/output/raylib_api.lua b/parser/output/raylib_api.lua index 79b3a928..ed11ac08 100644 --- a/parser/output/raylib_api.lua +++ b/parser/output/raylib_api.lua @@ -5266,6 +5266,15 @@ return { {type = "Image *", name = "image"} } }, + { + name = "ImageRotate", + description = "Rotate image by input angle in degrees (-359 to 359) ", + returnType = "void", + params = { + {type = "Image *", name = "image"}, + {type = "int", name = "degrees"} + } + }, { name = "ImageRotateCW", description = "Rotate image clockwise 90deg", diff --git a/parser/output/raylib_api.txt b/parser/output/raylib_api.txt index c53cb77e..0d0ccccf 100644 --- a/parser/output/raylib_api.txt +++ b/parser/output/raylib_api.txt @@ -964,7 +964,7 @@ Callback 006: AudioCallback() (2 input parameters) Param[1]: bufferData (type: void *) Param[2]: frames (type: unsigned int) -Functions found: 517 +Functions found: 518 Function 001: InitWindow() (3 input parameters) Name: InitWindow @@ -2606,93 +2606,99 @@ Function 272: ImageFlipHorizontal() (1 input parameters) Return type: void Description: Flip image horizontally Param[1]: image (type: Image *) -Function 273: ImageRotateCW() (1 input parameters) +Function 273: ImageRotate() (2 input parameters) + Name: ImageRotate + Return type: void + Description: Rotate image by input angle in degrees (-359 to 359) + Param[1]: image (type: Image *) + Param[2]: degrees (type: int) +Function 274: ImageRotateCW() (1 input parameters) Name: ImageRotateCW Return type: void Description: Rotate image clockwise 90deg Param[1]: image (type: Image *) -Function 274: ImageRotateCCW() (1 input parameters) +Function 275: ImageRotateCCW() (1 input parameters) Name: ImageRotateCCW Return type: void Description: Rotate image counter-clockwise 90deg Param[1]: image (type: Image *) -Function 275: ImageColorTint() (2 input parameters) +Function 276: ImageColorTint() (2 input parameters) Name: ImageColorTint Return type: void Description: Modify image color: tint Param[1]: image (type: Image *) Param[2]: color (type: Color) -Function 276: ImageColorInvert() (1 input parameters) +Function 277: ImageColorInvert() (1 input parameters) Name: ImageColorInvert Return type: void Description: Modify image color: invert Param[1]: image (type: Image *) -Function 277: ImageColorGrayscale() (1 input parameters) +Function 278: ImageColorGrayscale() (1 input parameters) Name: ImageColorGrayscale Return type: void Description: Modify image color: grayscale Param[1]: image (type: Image *) -Function 278: ImageColorContrast() (2 input parameters) +Function 279: ImageColorContrast() (2 input parameters) Name: ImageColorContrast Return type: void Description: Modify image color: contrast (-100 to 100) Param[1]: image (type: Image *) Param[2]: contrast (type: float) -Function 279: ImageColorBrightness() (2 input parameters) +Function 280: ImageColorBrightness() (2 input parameters) Name: ImageColorBrightness Return type: void Description: Modify image color: brightness (-255 to 255) Param[1]: image (type: Image *) Param[2]: brightness (type: int) -Function 280: ImageColorReplace() (3 input parameters) +Function 281: ImageColorReplace() (3 input parameters) Name: ImageColorReplace Return type: void Description: Modify image color: replace color Param[1]: image (type: Image *) Param[2]: color (type: Color) Param[3]: replace (type: Color) -Function 281: LoadImageColors() (1 input parameters) +Function 282: LoadImageColors() (1 input parameters) Name: LoadImageColors Return type: Color * Description: Load color data from image as a Color array (RGBA - 32bit) Param[1]: image (type: Image) -Function 282: LoadImagePalette() (3 input parameters) +Function 283: LoadImagePalette() (3 input parameters) Name: LoadImagePalette Return type: Color * Description: Load colors palette from image as a Color array (RGBA - 32bit) Param[1]: image (type: Image) Param[2]: maxPaletteSize (type: int) Param[3]: colorCount (type: int *) -Function 283: UnloadImageColors() (1 input parameters) +Function 284: UnloadImageColors() (1 input parameters) Name: UnloadImageColors Return type: void Description: Unload color data loaded with LoadImageColors() Param[1]: colors (type: Color *) -Function 284: UnloadImagePalette() (1 input parameters) +Function 285: UnloadImagePalette() (1 input parameters) Name: UnloadImagePalette Return type: void Description: Unload colors palette loaded with LoadImagePalette() Param[1]: colors (type: Color *) -Function 285: GetImageAlphaBorder() (2 input parameters) +Function 286: GetImageAlphaBorder() (2 input parameters) Name: GetImageAlphaBorder Return type: Rectangle Description: Get image alpha border rectangle Param[1]: image (type: Image) Param[2]: threshold (type: float) -Function 286: GetImageColor() (3 input parameters) +Function 287: GetImageColor() (3 input parameters) Name: GetImageColor Return type: Color Description: Get image pixel color at (x, y) position Param[1]: image (type: Image) Param[2]: x (type: int) Param[3]: y (type: int) -Function 287: ImageClearBackground() (2 input parameters) +Function 288: ImageClearBackground() (2 input parameters) Name: ImageClearBackground Return type: void Description: Clear image background with given color Param[1]: dst (type: Image *) Param[2]: color (type: Color) -Function 288: ImageDrawPixel() (4 input parameters) +Function 289: ImageDrawPixel() (4 input parameters) Name: ImageDrawPixel Return type: void Description: Draw pixel within an image @@ -2700,14 +2706,14 @@ Function 288: ImageDrawPixel() (4 input parameters) Param[2]: posX (type: int) Param[3]: posY (type: int) Param[4]: color (type: Color) -Function 289: ImageDrawPixelV() (3 input parameters) +Function 290: ImageDrawPixelV() (3 input parameters) Name: ImageDrawPixelV Return type: void Description: Draw pixel within an image (Vector version) Param[1]: dst (type: Image *) Param[2]: position (type: Vector2) Param[3]: color (type: Color) -Function 290: ImageDrawLine() (6 input parameters) +Function 291: ImageDrawLine() (6 input parameters) Name: ImageDrawLine Return type: void Description: Draw line within an image @@ -2717,7 +2723,7 @@ Function 290: ImageDrawLine() (6 input parameters) Param[4]: endPosX (type: int) Param[5]: endPosY (type: int) Param[6]: color (type: Color) -Function 291: ImageDrawLineV() (4 input parameters) +Function 292: ImageDrawLineV() (4 input parameters) Name: ImageDrawLineV Return type: void Description: Draw line within an image (Vector version) @@ -2725,7 +2731,7 @@ Function 291: ImageDrawLineV() (4 input parameters) Param[2]: start (type: Vector2) Param[3]: end (type: Vector2) Param[4]: color (type: Color) -Function 292: ImageDrawCircle() (5 input parameters) +Function 293: ImageDrawCircle() (5 input parameters) Name: ImageDrawCircle Return type: void Description: Draw a filled circle within an image @@ -2734,7 +2740,7 @@ Function 292: ImageDrawCircle() (5 input parameters) Param[3]: centerY (type: int) Param[4]: radius (type: int) Param[5]: color (type: Color) -Function 293: ImageDrawCircleV() (4 input parameters) +Function 294: ImageDrawCircleV() (4 input parameters) Name: ImageDrawCircleV Return type: void Description: Draw a filled circle within an image (Vector version) @@ -2742,7 +2748,7 @@ Function 293: ImageDrawCircleV() (4 input parameters) Param[2]: center (type: Vector2) Param[3]: radius (type: int) Param[4]: color (type: Color) -Function 294: ImageDrawCircleLines() (5 input parameters) +Function 295: ImageDrawCircleLines() (5 input parameters) Name: ImageDrawCircleLines Return type: void Description: Draw circle outline within an image @@ -2751,7 +2757,7 @@ Function 294: ImageDrawCircleLines() (5 input parameters) Param[3]: centerY (type: int) Param[4]: radius (type: int) Param[5]: color (type: Color) -Function 295: ImageDrawCircleLinesV() (4 input parameters) +Function 296: ImageDrawCircleLinesV() (4 input parameters) Name: ImageDrawCircleLinesV Return type: void Description: Draw circle outline within an image (Vector version) @@ -2759,7 +2765,7 @@ Function 295: ImageDrawCircleLinesV() (4 input parameters) Param[2]: center (type: Vector2) Param[3]: radius (type: int) Param[4]: color (type: Color) -Function 296: ImageDrawRectangle() (6 input parameters) +Function 297: ImageDrawRectangle() (6 input parameters) Name: ImageDrawRectangle Return type: void Description: Draw rectangle within an image @@ -2769,7 +2775,7 @@ Function 296: ImageDrawRectangle() (6 input parameters) Param[4]: width (type: int) Param[5]: height (type: int) Param[6]: color (type: Color) -Function 297: ImageDrawRectangleV() (4 input parameters) +Function 298: ImageDrawRectangleV() (4 input parameters) Name: ImageDrawRectangleV Return type: void Description: Draw rectangle within an image (Vector version) @@ -2777,14 +2783,14 @@ Function 297: ImageDrawRectangleV() (4 input parameters) Param[2]: position (type: Vector2) Param[3]: size (type: Vector2) Param[4]: color (type: Color) -Function 298: ImageDrawRectangleRec() (3 input parameters) +Function 299: ImageDrawRectangleRec() (3 input parameters) Name: ImageDrawRectangleRec Return type: void Description: Draw rectangle within an image Param[1]: dst (type: Image *) Param[2]: rec (type: Rectangle) Param[3]: color (type: Color) -Function 299: ImageDrawRectangleLines() (4 input parameters) +Function 300: ImageDrawRectangleLines() (4 input parameters) Name: ImageDrawRectangleLines Return type: void Description: Draw rectangle lines within an image @@ -2792,7 +2798,7 @@ Function 299: ImageDrawRectangleLines() (4 input parameters) Param[2]: rec (type: Rectangle) Param[3]: thick (type: int) Param[4]: color (type: Color) -Function 300: ImageDraw() (5 input parameters) +Function 301: ImageDraw() (5 input parameters) Name: ImageDraw Return type: void Description: Draw a source image within a destination image (tint applied to source) @@ -2801,7 +2807,7 @@ Function 300: ImageDraw() (5 input parameters) Param[3]: srcRec (type: Rectangle) Param[4]: dstRec (type: Rectangle) Param[5]: tint (type: Color) -Function 301: ImageDrawText() (6 input parameters) +Function 302: ImageDrawText() (6 input parameters) Name: ImageDrawText Return type: void Description: Draw text (using default font) within an image (destination) @@ -2811,7 +2817,7 @@ Function 301: ImageDrawText() (6 input parameters) Param[4]: posY (type: int) Param[5]: fontSize (type: int) Param[6]: color (type: Color) -Function 302: ImageDrawTextEx() (7 input parameters) +Function 303: ImageDrawTextEx() (7 input parameters) Name: ImageDrawTextEx Return type: void Description: Draw text (custom sprite font) within an image (destination) @@ -2822,79 +2828,79 @@ Function 302: ImageDrawTextEx() (7 input parameters) Param[5]: fontSize (type: float) Param[6]: spacing (type: float) Param[7]: tint (type: Color) -Function 303: LoadTexture() (1 input parameters) +Function 304: LoadTexture() (1 input parameters) Name: LoadTexture Return type: Texture2D Description: Load texture from file into GPU memory (VRAM) Param[1]: fileName (type: const char *) -Function 304: LoadTextureFromImage() (1 input parameters) +Function 305: LoadTextureFromImage() (1 input parameters) Name: LoadTextureFromImage Return type: Texture2D Description: Load texture from image data Param[1]: image (type: Image) -Function 305: LoadTextureCubemap() (2 input parameters) +Function 306: LoadTextureCubemap() (2 input parameters) Name: LoadTextureCubemap Return type: TextureCubemap Description: Load cubemap from image, multiple image cubemap layouts supported Param[1]: image (type: Image) Param[2]: layout (type: int) -Function 306: LoadRenderTexture() (2 input parameters) +Function 307: LoadRenderTexture() (2 input parameters) Name: LoadRenderTexture Return type: RenderTexture2D Description: Load texture for rendering (framebuffer) Param[1]: width (type: int) Param[2]: height (type: int) -Function 307: IsTextureReady() (1 input parameters) +Function 308: IsTextureReady() (1 input parameters) Name: IsTextureReady Return type: bool Description: Check if a texture is ready Param[1]: texture (type: Texture2D) -Function 308: UnloadTexture() (1 input parameters) +Function 309: UnloadTexture() (1 input parameters) Name: UnloadTexture Return type: void Description: Unload texture from GPU memory (VRAM) Param[1]: texture (type: Texture2D) -Function 309: IsRenderTextureReady() (1 input parameters) +Function 310: IsRenderTextureReady() (1 input parameters) Name: IsRenderTextureReady Return type: bool Description: Check if a render texture is ready Param[1]: target (type: RenderTexture2D) -Function 310: UnloadRenderTexture() (1 input parameters) +Function 311: UnloadRenderTexture() (1 input parameters) Name: UnloadRenderTexture Return type: void Description: Unload render texture from GPU memory (VRAM) Param[1]: target (type: RenderTexture2D) -Function 311: UpdateTexture() (2 input parameters) +Function 312: UpdateTexture() (2 input parameters) Name: UpdateTexture Return type: void Description: Update GPU texture with new data Param[1]: texture (type: Texture2D) Param[2]: pixels (type: const void *) -Function 312: UpdateTextureRec() (3 input parameters) +Function 313: UpdateTextureRec() (3 input parameters) Name: UpdateTextureRec Return type: void Description: Update GPU texture rectangle with new data Param[1]: texture (type: Texture2D) Param[2]: rec (type: Rectangle) Param[3]: pixels (type: const void *) -Function 313: GenTextureMipmaps() (1 input parameters) +Function 314: GenTextureMipmaps() (1 input parameters) Name: GenTextureMipmaps Return type: void Description: Generate GPU mipmaps for a texture Param[1]: texture (type: Texture2D *) -Function 314: SetTextureFilter() (2 input parameters) +Function 315: SetTextureFilter() (2 input parameters) Name: SetTextureFilter Return type: void Description: Set texture scaling filter mode Param[1]: texture (type: Texture2D) Param[2]: filter (type: int) -Function 315: SetTextureWrap() (2 input parameters) +Function 316: SetTextureWrap() (2 input parameters) Name: SetTextureWrap Return type: void Description: Set texture wrapping mode Param[1]: texture (type: Texture2D) Param[2]: wrap (type: int) -Function 316: DrawTexture() (4 input parameters) +Function 317: DrawTexture() (4 input parameters) Name: DrawTexture Return type: void Description: Draw a Texture2D @@ -2902,14 +2908,14 @@ Function 316: DrawTexture() (4 input parameters) Param[2]: posX (type: int) Param[3]: posY (type: int) Param[4]: tint (type: Color) -Function 317: DrawTextureV() (3 input parameters) +Function 318: DrawTextureV() (3 input parameters) Name: DrawTextureV Return type: void Description: Draw a Texture2D with position defined as Vector2 Param[1]: texture (type: Texture2D) Param[2]: position (type: Vector2) Param[3]: tint (type: Color) -Function 318: DrawTextureEx() (5 input parameters) +Function 319: DrawTextureEx() (5 input parameters) Name: DrawTextureEx Return type: void Description: Draw a Texture2D with extended parameters @@ -2918,7 +2924,7 @@ Function 318: DrawTextureEx() (5 input parameters) Param[3]: rotation (type: float) Param[4]: scale (type: float) Param[5]: tint (type: Color) -Function 319: DrawTextureRec() (4 input parameters) +Function 320: DrawTextureRec() (4 input parameters) Name: DrawTextureRec Return type: void Description: Draw a part of a texture defined by a rectangle @@ -2926,7 +2932,7 @@ Function 319: DrawTextureRec() (4 input parameters) Param[2]: source (type: Rectangle) Param[3]: position (type: Vector2) Param[4]: tint (type: Color) -Function 320: DrawTexturePro() (6 input parameters) +Function 321: DrawTexturePro() (6 input parameters) Name: DrawTexturePro Return type: void Description: Draw a part of a texture defined by a rectangle with 'pro' parameters @@ -2936,7 +2942,7 @@ Function 320: DrawTexturePro() (6 input parameters) Param[4]: origin (type: Vector2) Param[5]: rotation (type: float) Param[6]: tint (type: Color) -Function 321: DrawTextureNPatch() (6 input parameters) +Function 322: DrawTextureNPatch() (6 input parameters) Name: DrawTextureNPatch Return type: void Description: Draws a texture (or part of it) that stretches or shrinks nicely @@ -2946,106 +2952,106 @@ Function 321: DrawTextureNPatch() (6 input parameters) Param[4]: origin (type: Vector2) Param[5]: rotation (type: float) Param[6]: tint (type: Color) -Function 322: Fade() (2 input parameters) +Function 323: Fade() (2 input parameters) Name: Fade Return type: Color Description: Get color with alpha applied, alpha goes from 0.0f to 1.0f Param[1]: color (type: Color) Param[2]: alpha (type: float) -Function 323: ColorToInt() (1 input parameters) +Function 324: ColorToInt() (1 input parameters) Name: ColorToInt Return type: int Description: Get hexadecimal value for a Color Param[1]: color (type: Color) -Function 324: ColorNormalize() (1 input parameters) +Function 325: ColorNormalize() (1 input parameters) Name: ColorNormalize Return type: Vector4 Description: Get Color normalized as float [0..1] Param[1]: color (type: Color) -Function 325: ColorFromNormalized() (1 input parameters) +Function 326: ColorFromNormalized() (1 input parameters) Name: ColorFromNormalized Return type: Color Description: Get Color from normalized values [0..1] Param[1]: normalized (type: Vector4) -Function 326: ColorToHSV() (1 input parameters) +Function 327: ColorToHSV() (1 input parameters) Name: ColorToHSV Return type: Vector3 Description: Get HSV values for a Color, hue [0..360], saturation/value [0..1] Param[1]: color (type: Color) -Function 327: ColorFromHSV() (3 input parameters) +Function 328: ColorFromHSV() (3 input parameters) Name: ColorFromHSV Return type: Color Description: Get a Color from HSV values, hue [0..360], saturation/value [0..1] Param[1]: hue (type: float) Param[2]: saturation (type: float) Param[3]: value (type: float) -Function 328: ColorTint() (2 input parameters) +Function 329: ColorTint() (2 input parameters) Name: ColorTint Return type: Color Description: Get color multiplied with another color Param[1]: color (type: Color) Param[2]: tint (type: Color) -Function 329: ColorBrightness() (2 input parameters) +Function 330: ColorBrightness() (2 input parameters) Name: ColorBrightness Return type: Color Description: Get color with brightness correction, brightness factor goes from -1.0f to 1.0f Param[1]: color (type: Color) Param[2]: factor (type: float) -Function 330: ColorContrast() (2 input parameters) +Function 331: ColorContrast() (2 input parameters) Name: ColorContrast Return type: Color Description: Get color with contrast correction, contrast values between -1.0f and 1.0f Param[1]: color (type: Color) Param[2]: contrast (type: float) -Function 331: ColorAlpha() (2 input parameters) +Function 332: ColorAlpha() (2 input parameters) Name: ColorAlpha Return type: Color Description: Get color with alpha applied, alpha goes from 0.0f to 1.0f Param[1]: color (type: Color) Param[2]: alpha (type: float) -Function 332: ColorAlphaBlend() (3 input parameters) +Function 333: ColorAlphaBlend() (3 input parameters) Name: ColorAlphaBlend Return type: Color Description: Get src alpha-blended into dst color with tint Param[1]: dst (type: Color) Param[2]: src (type: Color) Param[3]: tint (type: Color) -Function 333: GetColor() (1 input parameters) +Function 334: GetColor() (1 input parameters) Name: GetColor Return type: Color Description: Get Color structure from hexadecimal value Param[1]: hexValue (type: unsigned int) -Function 334: GetPixelColor() (2 input parameters) +Function 335: GetPixelColor() (2 input parameters) Name: GetPixelColor Return type: Color Description: Get Color from a source pixel pointer of certain format Param[1]: srcPtr (type: void *) Param[2]: format (type: int) -Function 335: SetPixelColor() (3 input parameters) +Function 336: SetPixelColor() (3 input parameters) Name: SetPixelColor Return type: void Description: Set color formatted into destination pixel pointer Param[1]: dstPtr (type: void *) Param[2]: color (type: Color) Param[3]: format (type: int) -Function 336: GetPixelDataSize() (3 input parameters) +Function 337: GetPixelDataSize() (3 input parameters) Name: GetPixelDataSize Return type: int Description: Get pixel data size in bytes for certain format Param[1]: width (type: int) Param[2]: height (type: int) Param[3]: format (type: int) -Function 337: GetFontDefault() (0 input parameters) +Function 338: GetFontDefault() (0 input parameters) Name: GetFontDefault Return type: Font Description: Get the default Font No input parameters -Function 338: LoadFont() (1 input parameters) +Function 339: LoadFont() (1 input parameters) Name: LoadFont Return type: Font Description: Load font from file into GPU memory (VRAM) Param[1]: fileName (type: const char *) -Function 339: LoadFontEx() (4 input parameters) +Function 340: LoadFontEx() (4 input parameters) Name: LoadFontEx Return type: Font Description: Load font from file with extended parameters, use NULL for fontChars and 0 for glyphCount to load the default character set @@ -3053,14 +3059,14 @@ Function 339: LoadFontEx() (4 input parameters) Param[2]: fontSize (type: int) Param[3]: fontChars (type: int *) Param[4]: glyphCount (type: int) -Function 340: LoadFontFromImage() (3 input parameters) +Function 341: LoadFontFromImage() (3 input parameters) Name: LoadFontFromImage Return type: Font Description: Load font from Image (XNA style) Param[1]: image (type: Image) Param[2]: key (type: Color) Param[3]: firstChar (type: int) -Function 341: LoadFontFromMemory() (6 input parameters) +Function 342: LoadFontFromMemory() (6 input parameters) Name: LoadFontFromMemory Return type: Font Description: Load font from memory buffer, fileType refers to extension: i.e. '.ttf' @@ -3070,12 +3076,12 @@ Function 341: LoadFontFromMemory() (6 input parameters) Param[4]: fontSize (type: int) Param[5]: fontChars (type: int *) Param[6]: glyphCount (type: int) -Function 342: IsFontReady() (1 input parameters) +Function 343: IsFontReady() (1 input parameters) Name: IsFontReady Return type: bool Description: Check if a font is ready Param[1]: font (type: Font) -Function 343: LoadFontData() (6 input parameters) +Function 344: LoadFontData() (6 input parameters) Name: LoadFontData Return type: GlyphInfo * Description: Load font data for further use @@ -3085,7 +3091,7 @@ Function 343: LoadFontData() (6 input parameters) Param[4]: fontChars (type: int *) Param[5]: glyphCount (type: int) Param[6]: type (type: int) -Function 344: GenImageFontAtlas() (6 input parameters) +Function 345: GenImageFontAtlas() (6 input parameters) Name: GenImageFontAtlas Return type: Image Description: Generate image font atlas using chars info @@ -3095,30 +3101,30 @@ Function 344: GenImageFontAtlas() (6 input parameters) Param[4]: fontSize (type: int) Param[5]: padding (type: int) Param[6]: packMethod (type: int) -Function 345: UnloadFontData() (2 input parameters) +Function 346: UnloadFontData() (2 input parameters) Name: UnloadFontData Return type: void Description: Unload font chars info data (RAM) Param[1]: chars (type: GlyphInfo *) Param[2]: glyphCount (type: int) -Function 346: UnloadFont() (1 input parameters) +Function 347: UnloadFont() (1 input parameters) Name: UnloadFont Return type: void Description: Unload font from GPU memory (VRAM) Param[1]: font (type: Font) -Function 347: ExportFontAsCode() (2 input parameters) +Function 348: ExportFontAsCode() (2 input parameters) Name: ExportFontAsCode Return type: bool Description: Export font as code file, returns true on success Param[1]: font (type: Font) Param[2]: fileName (type: const char *) -Function 348: DrawFPS() (2 input parameters) +Function 349: DrawFPS() (2 input parameters) Name: DrawFPS Return type: void Description: Draw current FPS Param[1]: posX (type: int) Param[2]: posY (type: int) -Function 349: DrawText() (5 input parameters) +Function 350: DrawText() (5 input parameters) Name: DrawText Return type: void Description: Draw text (using default font) @@ -3127,7 +3133,7 @@ Function 349: DrawText() (5 input parameters) Param[3]: posY (type: int) Param[4]: fontSize (type: int) Param[5]: color (type: Color) -Function 350: DrawTextEx() (6 input parameters) +Function 351: DrawTextEx() (6 input parameters) Name: DrawTextEx Return type: void Description: Draw text using font and additional parameters @@ -3137,7 +3143,7 @@ Function 350: DrawTextEx() (6 input parameters) Param[4]: fontSize (type: float) Param[5]: spacing (type: float) Param[6]: tint (type: Color) -Function 351: DrawTextPro() (8 input parameters) +Function 352: DrawTextPro() (8 input parameters) Name: DrawTextPro Return type: void Description: Draw text using Font and pro parameters (rotation) @@ -3149,7 +3155,7 @@ Function 351: DrawTextPro() (8 input parameters) Param[6]: fontSize (type: float) Param[7]: spacing (type: float) Param[8]: tint (type: Color) -Function 352: DrawTextCodepoint() (5 input parameters) +Function 353: DrawTextCodepoint() (5 input parameters) Name: DrawTextCodepoint Return type: void Description: Draw one character (codepoint) @@ -3158,7 +3164,7 @@ Function 352: DrawTextCodepoint() (5 input parameters) Param[3]: position (type: Vector2) Param[4]: fontSize (type: float) Param[5]: tint (type: Color) -Function 353: DrawTextCodepoints() (7 input parameters) +Function 354: DrawTextCodepoints() (7 input parameters) Name: DrawTextCodepoints Return type: void Description: Draw multiple character (codepoint) @@ -3169,13 +3175,13 @@ Function 353: DrawTextCodepoints() (7 input parameters) Param[5]: fontSize (type: float) Param[6]: spacing (type: float) Param[7]: tint (type: Color) -Function 354: MeasureText() (2 input parameters) +Function 355: MeasureText() (2 input parameters) Name: MeasureText Return type: int Description: Measure string width for default font Param[1]: text (type: const char *) Param[2]: fontSize (type: int) -Function 355: MeasureTextEx() (4 input parameters) +Function 356: MeasureTextEx() (4 input parameters) Name: MeasureTextEx Return type: Vector2 Description: Measure string size for Font @@ -3183,180 +3189,180 @@ Function 355: MeasureTextEx() (4 input parameters) Param[2]: text (type: const char *) Param[3]: fontSize (type: float) Param[4]: spacing (type: float) -Function 356: GetGlyphIndex() (2 input parameters) +Function 357: GetGlyphIndex() (2 input parameters) Name: GetGlyphIndex Return type: int Description: Get glyph index position in font for a codepoint (unicode character), fallback to '?' if not found Param[1]: font (type: Font) Param[2]: codepoint (type: int) -Function 357: GetGlyphInfo() (2 input parameters) +Function 358: GetGlyphInfo() (2 input parameters) Name: GetGlyphInfo Return type: GlyphInfo Description: Get glyph font info data for a codepoint (unicode character), fallback to '?' if not found Param[1]: font (type: Font) Param[2]: codepoint (type: int) -Function 358: GetGlyphAtlasRec() (2 input parameters) +Function 359: GetGlyphAtlasRec() (2 input parameters) Name: GetGlyphAtlasRec Return type: Rectangle Description: Get glyph rectangle in font atlas for a codepoint (unicode character), fallback to '?' if not found Param[1]: font (type: Font) Param[2]: codepoint (type: int) -Function 359: LoadUTF8() (2 input parameters) +Function 360: LoadUTF8() (2 input parameters) Name: LoadUTF8 Return type: char * Description: Load UTF-8 text encoded from codepoints array Param[1]: codepoints (type: const int *) Param[2]: length (type: int) -Function 360: UnloadUTF8() (1 input parameters) +Function 361: UnloadUTF8() (1 input parameters) Name: UnloadUTF8 Return type: void Description: Unload UTF-8 text encoded from codepoints array Param[1]: text (type: char *) -Function 361: LoadCodepoints() (2 input parameters) +Function 362: LoadCodepoints() (2 input parameters) Name: LoadCodepoints Return type: int * Description: Load all codepoints from a UTF-8 text string, codepoints count returned by parameter Param[1]: text (type: const char *) Param[2]: count (type: int *) -Function 362: UnloadCodepoints() (1 input parameters) +Function 363: UnloadCodepoints() (1 input parameters) Name: UnloadCodepoints Return type: void Description: Unload codepoints data from memory Param[1]: codepoints (type: int *) -Function 363: GetCodepointCount() (1 input parameters) +Function 364: GetCodepointCount() (1 input parameters) Name: GetCodepointCount Return type: int Description: Get total number of codepoints in a UTF-8 encoded string Param[1]: text (type: const char *) -Function 364: GetCodepoint() (2 input parameters) +Function 365: GetCodepoint() (2 input parameters) Name: GetCodepoint Return type: int Description: Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure Param[1]: text (type: const char *) Param[2]: codepointSize (type: int *) -Function 365: GetCodepointNext() (2 input parameters) +Function 366: GetCodepointNext() (2 input parameters) Name: GetCodepointNext Return type: int Description: Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure Param[1]: text (type: const char *) Param[2]: codepointSize (type: int *) -Function 366: GetCodepointPrevious() (2 input parameters) +Function 367: GetCodepointPrevious() (2 input parameters) Name: GetCodepointPrevious Return type: int Description: Get previous codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure Param[1]: text (type: const char *) Param[2]: codepointSize (type: int *) -Function 367: CodepointToUTF8() (2 input parameters) +Function 368: CodepointToUTF8() (2 input parameters) Name: CodepointToUTF8 Return type: const char * Description: Encode one codepoint into UTF-8 byte array (array length returned as parameter) Param[1]: codepoint (type: int) Param[2]: utf8Size (type: int *) -Function 368: TextCopy() (2 input parameters) +Function 369: TextCopy() (2 input parameters) Name: TextCopy Return type: int Description: Copy one string to another, returns bytes copied Param[1]: dst (type: char *) Param[2]: src (type: const char *) -Function 369: TextIsEqual() (2 input parameters) +Function 370: TextIsEqual() (2 input parameters) Name: TextIsEqual Return type: bool Description: Check if two text string are equal Param[1]: text1 (type: const char *) Param[2]: text2 (type: const char *) -Function 370: TextLength() (1 input parameters) +Function 371: TextLength() (1 input parameters) Name: TextLength Return type: unsigned int Description: Get text length, checks for '\0' ending Param[1]: text (type: const char *) -Function 371: TextFormat() (2 input parameters) +Function 372: TextFormat() (2 input parameters) Name: TextFormat Return type: const char * Description: Text formatting with variables (sprintf() style) Param[1]: text (type: const char *) Param[2]: args (type: ...) -Function 372: TextSubtext() (3 input parameters) +Function 373: TextSubtext() (3 input parameters) Name: TextSubtext Return type: const char * Description: Get a piece of a text string Param[1]: text (type: const char *) Param[2]: position (type: int) Param[3]: length (type: int) -Function 373: TextReplace() (3 input parameters) +Function 374: TextReplace() (3 input parameters) Name: TextReplace Return type: char * Description: Replace text string (WARNING: memory must be freed!) Param[1]: text (type: char *) Param[2]: replace (type: const char *) Param[3]: by (type: const char *) -Function 374: TextInsert() (3 input parameters) +Function 375: TextInsert() (3 input parameters) Name: TextInsert Return type: char * Description: Insert text in a position (WARNING: memory must be freed!) Param[1]: text (type: const char *) Param[2]: insert (type: const char *) Param[3]: position (type: int) -Function 375: TextJoin() (3 input parameters) +Function 376: TextJoin() (3 input parameters) Name: TextJoin Return type: const char * Description: Join text strings with delimiter Param[1]: textList (type: const char **) Param[2]: count (type: int) Param[3]: delimiter (type: const char *) -Function 376: TextSplit() (3 input parameters) +Function 377: TextSplit() (3 input parameters) Name: TextSplit Return type: const char ** Description: Split text into multiple strings Param[1]: text (type: const char *) Param[2]: delimiter (type: char) Param[3]: count (type: int *) -Function 377: TextAppend() (3 input parameters) +Function 378: TextAppend() (3 input parameters) Name: TextAppend Return type: void Description: Append text at specific position and move cursor! Param[1]: text (type: char *) Param[2]: append (type: const char *) Param[3]: position (type: int *) -Function 378: TextFindIndex() (2 input parameters) +Function 379: TextFindIndex() (2 input parameters) Name: TextFindIndex Return type: int Description: Find first text occurrence within a string Param[1]: text (type: const char *) Param[2]: find (type: const char *) -Function 379: TextToUpper() (1 input parameters) +Function 380: TextToUpper() (1 input parameters) Name: TextToUpper Return type: const char * Description: Get upper case version of provided string Param[1]: text (type: const char *) -Function 380: TextToLower() (1 input parameters) +Function 381: TextToLower() (1 input parameters) Name: TextToLower Return type: const char * Description: Get lower case version of provided string Param[1]: text (type: const char *) -Function 381: TextToPascal() (1 input parameters) +Function 382: TextToPascal() (1 input parameters) Name: TextToPascal Return type: const char * Description: Get Pascal case notation version of provided string Param[1]: text (type: const char *) -Function 382: TextToInteger() (1 input parameters) +Function 383: TextToInteger() (1 input parameters) Name: TextToInteger Return type: int Description: Get integer value from text (negative values not supported) Param[1]: text (type: const char *) -Function 383: DrawLine3D() (3 input parameters) +Function 384: DrawLine3D() (3 input parameters) Name: DrawLine3D Return type: void Description: Draw a line in 3D world space Param[1]: startPos (type: Vector3) Param[2]: endPos (type: Vector3) Param[3]: color (type: Color) -Function 384: DrawPoint3D() (2 input parameters) +Function 385: DrawPoint3D() (2 input parameters) Name: DrawPoint3D Return type: void Description: Draw a point in 3D space, actually a small line Param[1]: position (type: Vector3) Param[2]: color (type: Color) -Function 385: DrawCircle3D() (5 input parameters) +Function 386: DrawCircle3D() (5 input parameters) Name: DrawCircle3D Return type: void Description: Draw a circle in 3D world space @@ -3365,7 +3371,7 @@ Function 385: DrawCircle3D() (5 input parameters) Param[3]: rotationAxis (type: Vector3) Param[4]: rotationAngle (type: float) Param[5]: color (type: Color) -Function 386: DrawTriangle3D() (4 input parameters) +Function 387: DrawTriangle3D() (4 input parameters) Name: DrawTriangle3D Return type: void Description: Draw a color-filled triangle (vertex in counter-clockwise order!) @@ -3373,14 +3379,14 @@ Function 386: DrawTriangle3D() (4 input parameters) Param[2]: v2 (type: Vector3) Param[3]: v3 (type: Vector3) Param[4]: color (type: Color) -Function 387: DrawTriangleStrip3D() (3 input parameters) +Function 388: DrawTriangleStrip3D() (3 input parameters) Name: DrawTriangleStrip3D Return type: void Description: Draw a triangle strip defined by points Param[1]: points (type: Vector3 *) Param[2]: pointCount (type: int) Param[3]: color (type: Color) -Function 388: DrawCube() (5 input parameters) +Function 389: DrawCube() (5 input parameters) Name: DrawCube Return type: void Description: Draw cube @@ -3389,14 +3395,14 @@ Function 388: DrawCube() (5 input parameters) Param[3]: height (type: float) Param[4]: length (type: float) Param[5]: color (type: Color) -Function 389: DrawCubeV() (3 input parameters) +Function 390: DrawCubeV() (3 input parameters) Name: DrawCubeV Return type: void Description: Draw cube (Vector version) Param[1]: position (type: Vector3) Param[2]: size (type: Vector3) Param[3]: color (type: Color) -Function 390: DrawCubeWires() (5 input parameters) +Function 391: DrawCubeWires() (5 input parameters) Name: DrawCubeWires Return type: void Description: Draw cube wires @@ -3405,21 +3411,21 @@ Function 390: DrawCubeWires() (5 input parameters) Param[3]: height (type: float) Param[4]: length (type: float) Param[5]: color (type: Color) -Function 391: DrawCubeWiresV() (3 input parameters) +Function 392: DrawCubeWiresV() (3 input parameters) Name: DrawCubeWiresV Return type: void Description: Draw cube wires (Vector version) Param[1]: position (type: Vector3) Param[2]: size (type: Vector3) Param[3]: color (type: Color) -Function 392: DrawSphere() (3 input parameters) +Function 393: DrawSphere() (3 input parameters) Name: DrawSphere Return type: void Description: Draw sphere Param[1]: centerPos (type: Vector3) Param[2]: radius (type: float) Param[3]: color (type: Color) -Function 393: DrawSphereEx() (5 input parameters) +Function 394: DrawSphereEx() (5 input parameters) Name: DrawSphereEx Return type: void Description: Draw sphere with extended parameters @@ -3428,7 +3434,7 @@ Function 393: DrawSphereEx() (5 input parameters) Param[3]: rings (type: int) Param[4]: slices (type: int) Param[5]: color (type: Color) -Function 394: DrawSphereWires() (5 input parameters) +Function 395: DrawSphereWires() (5 input parameters) Name: DrawSphereWires Return type: void Description: Draw sphere wires @@ -3437,7 +3443,7 @@ Function 394: DrawSphereWires() (5 input parameters) Param[3]: rings (type: int) Param[4]: slices (type: int) Param[5]: color (type: Color) -Function 395: DrawCylinder() (6 input parameters) +Function 396: DrawCylinder() (6 input parameters) Name: DrawCylinder Return type: void Description: Draw a cylinder/cone @@ -3447,7 +3453,7 @@ Function 395: DrawCylinder() (6 input parameters) Param[4]: height (type: float) Param[5]: slices (type: int) Param[6]: color (type: Color) -Function 396: DrawCylinderEx() (6 input parameters) +Function 397: DrawCylinderEx() (6 input parameters) Name: DrawCylinderEx Return type: void Description: Draw a cylinder with base at startPos and top at endPos @@ -3457,7 +3463,7 @@ Function 396: DrawCylinderEx() (6 input parameters) Param[4]: endRadius (type: float) Param[5]: sides (type: int) Param[6]: color (type: Color) -Function 397: DrawCylinderWires() (6 input parameters) +Function 398: DrawCylinderWires() (6 input parameters) Name: DrawCylinderWires Return type: void Description: Draw a cylinder/cone wires @@ -3467,7 +3473,7 @@ Function 397: DrawCylinderWires() (6 input parameters) Param[4]: height (type: float) Param[5]: slices (type: int) Param[6]: color (type: Color) -Function 398: DrawCylinderWiresEx() (6 input parameters) +Function 399: DrawCylinderWiresEx() (6 input parameters) Name: DrawCylinderWiresEx Return type: void Description: Draw a cylinder wires with base at startPos and top at endPos @@ -3477,7 +3483,7 @@ Function 398: DrawCylinderWiresEx() (6 input parameters) Param[4]: endRadius (type: float) Param[5]: sides (type: int) Param[6]: color (type: Color) -Function 399: DrawCapsule() (6 input parameters) +Function 400: DrawCapsule() (6 input parameters) Name: DrawCapsule Return type: void Description: Draw a capsule with the center of its sphere caps at startPos and endPos @@ -3487,7 +3493,7 @@ Function 399: DrawCapsule() (6 input parameters) Param[4]: slices (type: int) Param[5]: rings (type: int) Param[6]: color (type: Color) -Function 400: DrawCapsuleWires() (6 input parameters) +Function 401: DrawCapsuleWires() (6 input parameters) Name: DrawCapsuleWires Return type: void Description: Draw capsule wireframe with the center of its sphere caps at startPos and endPos @@ -3497,51 +3503,51 @@ Function 400: DrawCapsuleWires() (6 input parameters) Param[4]: slices (type: int) Param[5]: rings (type: int) Param[6]: color (type: Color) -Function 401: DrawPlane() (3 input parameters) +Function 402: DrawPlane() (3 input parameters) Name: DrawPlane Return type: void Description: Draw a plane XZ Param[1]: centerPos (type: Vector3) Param[2]: size (type: Vector2) Param[3]: color (type: Color) -Function 402: DrawRay() (2 input parameters) +Function 403: DrawRay() (2 input parameters) Name: DrawRay Return type: void Description: Draw a ray line Param[1]: ray (type: Ray) Param[2]: color (type: Color) -Function 403: DrawGrid() (2 input parameters) +Function 404: DrawGrid() (2 input parameters) Name: DrawGrid Return type: void Description: Draw a grid (centered at (0, 0, 0)) Param[1]: slices (type: int) Param[2]: spacing (type: float) -Function 404: LoadModel() (1 input parameters) +Function 405: LoadModel() (1 input parameters) Name: LoadModel Return type: Model Description: Load model from files (meshes and materials) Param[1]: fileName (type: const char *) -Function 405: LoadModelFromMesh() (1 input parameters) +Function 406: LoadModelFromMesh() (1 input parameters) Name: LoadModelFromMesh Return type: Model Description: Load model from generated mesh (default material) Param[1]: mesh (type: Mesh) -Function 406: IsModelReady() (1 input parameters) +Function 407: IsModelReady() (1 input parameters) Name: IsModelReady Return type: bool Description: Check if a model is ready Param[1]: model (type: Model) -Function 407: UnloadModel() (1 input parameters) +Function 408: UnloadModel() (1 input parameters) Name: UnloadModel Return type: void Description: Unload model (including meshes) from memory (RAM and/or VRAM) Param[1]: model (type: Model) -Function 408: GetModelBoundingBox() (1 input parameters) +Function 409: GetModelBoundingBox() (1 input parameters) Name: GetModelBoundingBox Return type: BoundingBox Description: Compute model bounding box limits (considers all meshes) Param[1]: model (type: Model) -Function 409: DrawModel() (4 input parameters) +Function 410: DrawModel() (4 input parameters) Name: DrawModel Return type: void Description: Draw a model (with texture if set) @@ -3549,7 +3555,7 @@ Function 409: DrawModel() (4 input parameters) Param[2]: position (type: Vector3) Param[3]: scale (type: float) Param[4]: tint (type: Color) -Function 410: DrawModelEx() (6 input parameters) +Function 411: DrawModelEx() (6 input parameters) Name: DrawModelEx Return type: void Description: Draw a model with extended parameters @@ -3559,7 +3565,7 @@ Function 410: DrawModelEx() (6 input parameters) Param[4]: rotationAngle (type: float) Param[5]: scale (type: Vector3) Param[6]: tint (type: Color) -Function 411: DrawModelWires() (4 input parameters) +Function 412: DrawModelWires() (4 input parameters) Name: DrawModelWires Return type: void Description: Draw a model wires (with texture if set) @@ -3567,7 +3573,7 @@ Function 411: DrawModelWires() (4 input parameters) Param[2]: position (type: Vector3) Param[3]: scale (type: float) Param[4]: tint (type: Color) -Function 412: DrawModelWiresEx() (6 input parameters) +Function 413: DrawModelWiresEx() (6 input parameters) Name: DrawModelWiresEx Return type: void Description: Draw a model wires (with texture if set) with extended parameters @@ -3577,13 +3583,13 @@ Function 412: DrawModelWiresEx() (6 input parameters) Param[4]: rotationAngle (type: float) Param[5]: scale (type: Vector3) Param[6]: tint (type: Color) -Function 413: DrawBoundingBox() (2 input parameters) +Function 414: DrawBoundingBox() (2 input parameters) Name: DrawBoundingBox Return type: void Description: Draw bounding box (wires) Param[1]: box (type: BoundingBox) Param[2]: color (type: Color) -Function 414: DrawBillboard() (5 input parameters) +Function 415: DrawBillboard() (5 input parameters) Name: DrawBillboard Return type: void Description: Draw a billboard texture @@ -3592,7 +3598,7 @@ Function 414: DrawBillboard() (5 input parameters) Param[3]: position (type: Vector3) Param[4]: size (type: float) Param[5]: tint (type: Color) -Function 415: DrawBillboardRec() (6 input parameters) +Function 416: DrawBillboardRec() (6 input parameters) Name: DrawBillboardRec Return type: void Description: Draw a billboard texture defined by source @@ -3602,7 +3608,7 @@ Function 415: DrawBillboardRec() (6 input parameters) Param[4]: position (type: Vector3) Param[5]: size (type: Vector2) Param[6]: tint (type: Color) -Function 416: DrawBillboardPro() (9 input parameters) +Function 417: DrawBillboardPro() (9 input parameters) Name: DrawBillboardPro Return type: void Description: Draw a billboard texture defined by source and rotation @@ -3615,13 +3621,13 @@ Function 416: DrawBillboardPro() (9 input parameters) Param[7]: origin (type: Vector2) Param[8]: rotation (type: float) Param[9]: tint (type: Color) -Function 417: UploadMesh() (2 input parameters) +Function 418: UploadMesh() (2 input parameters) Name: UploadMesh Return type: void Description: Upload mesh vertex data in GPU and provide VAO/VBO ids Param[1]: mesh (type: Mesh *) Param[2]: dynamic (type: bool) -Function 418: UpdateMeshBuffer() (5 input parameters) +Function 419: UpdateMeshBuffer() (5 input parameters) Name: UpdateMeshBuffer Return type: void Description: Update mesh vertex data in GPU for a specific buffer index @@ -3630,19 +3636,19 @@ Function 418: UpdateMeshBuffer() (5 input parameters) Param[3]: data (type: const void *) Param[4]: dataSize (type: int) Param[5]: offset (type: int) -Function 419: UnloadMesh() (1 input parameters) +Function 420: UnloadMesh() (1 input parameters) Name: UnloadMesh Return type: void Description: Unload mesh data from CPU and GPU Param[1]: mesh (type: Mesh) -Function 420: DrawMesh() (3 input parameters) +Function 421: DrawMesh() (3 input parameters) Name: DrawMesh Return type: void Description: Draw a 3d mesh with material and transform Param[1]: mesh (type: Mesh) Param[2]: material (type: Material) Param[3]: transform (type: Matrix) -Function 421: DrawMeshInstanced() (4 input parameters) +Function 422: DrawMeshInstanced() (4 input parameters) Name: DrawMeshInstanced Return type: void Description: Draw multiple mesh instances with material and different transforms @@ -3650,29 +3656,29 @@ Function 421: DrawMeshInstanced() (4 input parameters) Param[2]: material (type: Material) Param[3]: transforms (type: const Matrix *) Param[4]: instances (type: int) -Function 422: ExportMesh() (2 input parameters) +Function 423: ExportMesh() (2 input parameters) Name: ExportMesh Return type: bool Description: Export mesh data to file, returns true on success Param[1]: mesh (type: Mesh) Param[2]: fileName (type: const char *) -Function 423: GetMeshBoundingBox() (1 input parameters) +Function 424: GetMeshBoundingBox() (1 input parameters) Name: GetMeshBoundingBox Return type: BoundingBox Description: Compute mesh bounding box limits Param[1]: mesh (type: Mesh) -Function 424: GenMeshTangents() (1 input parameters) +Function 425: GenMeshTangents() (1 input parameters) Name: GenMeshTangents Return type: void Description: Compute mesh tangents Param[1]: mesh (type: Mesh *) -Function 425: GenMeshPoly() (2 input parameters) +Function 426: GenMeshPoly() (2 input parameters) Name: GenMeshPoly Return type: Mesh Description: Generate polygonal mesh Param[1]: sides (type: int) Param[2]: radius (type: float) -Function 426: GenMeshPlane() (4 input parameters) +Function 427: GenMeshPlane() (4 input parameters) Name: GenMeshPlane Return type: Mesh Description: Generate plane mesh (with subdivisions) @@ -3680,42 +3686,42 @@ Function 426: GenMeshPlane() (4 input parameters) Param[2]: length (type: float) Param[3]: resX (type: int) Param[4]: resZ (type: int) -Function 427: GenMeshCube() (3 input parameters) +Function 428: GenMeshCube() (3 input parameters) Name: GenMeshCube Return type: Mesh Description: Generate cuboid mesh Param[1]: width (type: float) Param[2]: height (type: float) Param[3]: length (type: float) -Function 428: GenMeshSphere() (3 input parameters) +Function 429: GenMeshSphere() (3 input parameters) Name: GenMeshSphere Return type: Mesh Description: Generate sphere mesh (standard sphere) Param[1]: radius (type: float) Param[2]: rings (type: int) Param[3]: slices (type: int) -Function 429: GenMeshHemiSphere() (3 input parameters) +Function 430: GenMeshHemiSphere() (3 input parameters) Name: GenMeshHemiSphere Return type: Mesh Description: Generate half-sphere mesh (no bottom cap) Param[1]: radius (type: float) Param[2]: rings (type: int) Param[3]: slices (type: int) -Function 430: GenMeshCylinder() (3 input parameters) +Function 431: GenMeshCylinder() (3 input parameters) Name: GenMeshCylinder Return type: Mesh Description: Generate cylinder mesh Param[1]: radius (type: float) Param[2]: height (type: float) Param[3]: slices (type: int) -Function 431: GenMeshCone() (3 input parameters) +Function 432: GenMeshCone() (3 input parameters) Name: GenMeshCone Return type: Mesh Description: Generate cone/pyramid mesh Param[1]: radius (type: float) Param[2]: height (type: float) Param[3]: slices (type: int) -Function 432: GenMeshTorus() (4 input parameters) +Function 433: GenMeshTorus() (4 input parameters) Name: GenMeshTorus Return type: Mesh Description: Generate torus mesh @@ -3723,7 +3729,7 @@ Function 432: GenMeshTorus() (4 input parameters) Param[2]: size (type: float) Param[3]: radSeg (type: int) Param[4]: sides (type: int) -Function 433: GenMeshKnot() (4 input parameters) +Function 434: GenMeshKnot() (4 input parameters) Name: GenMeshKnot Return type: Mesh Description: Generate trefoil knot mesh @@ -3731,84 +3737,84 @@ Function 433: GenMeshKnot() (4 input parameters) Param[2]: size (type: float) Param[3]: radSeg (type: int) Param[4]: sides (type: int) -Function 434: GenMeshHeightmap() (2 input parameters) +Function 435: GenMeshHeightmap() (2 input parameters) Name: GenMeshHeightmap Return type: Mesh Description: Generate heightmap mesh from image data Param[1]: heightmap (type: Image) Param[2]: size (type: Vector3) -Function 435: GenMeshCubicmap() (2 input parameters) +Function 436: GenMeshCubicmap() (2 input parameters) Name: GenMeshCubicmap Return type: Mesh Description: Generate cubes-based map mesh from image data Param[1]: cubicmap (type: Image) Param[2]: cubeSize (type: Vector3) -Function 436: LoadMaterials() (2 input parameters) +Function 437: LoadMaterials() (2 input parameters) Name: LoadMaterials Return type: Material * Description: Load materials from model file Param[1]: fileName (type: const char *) Param[2]: materialCount (type: int *) -Function 437: LoadMaterialDefault() (0 input parameters) +Function 438: LoadMaterialDefault() (0 input parameters) Name: LoadMaterialDefault Return type: Material Description: Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps) No input parameters -Function 438: IsMaterialReady() (1 input parameters) +Function 439: IsMaterialReady() (1 input parameters) Name: IsMaterialReady Return type: bool Description: Check if a material is ready Param[1]: material (type: Material) -Function 439: UnloadMaterial() (1 input parameters) +Function 440: UnloadMaterial() (1 input parameters) Name: UnloadMaterial Return type: void Description: Unload material from GPU memory (VRAM) Param[1]: material (type: Material) -Function 440: SetMaterialTexture() (3 input parameters) +Function 441: SetMaterialTexture() (3 input parameters) Name: SetMaterialTexture Return type: void Description: Set texture for a material map type (MATERIAL_MAP_DIFFUSE, MATERIAL_MAP_SPECULAR...) Param[1]: material (type: Material *) Param[2]: mapType (type: int) Param[3]: texture (type: Texture2D) -Function 441: SetModelMeshMaterial() (3 input parameters) +Function 442: SetModelMeshMaterial() (3 input parameters) Name: SetModelMeshMaterial Return type: void Description: Set material for a mesh Param[1]: model (type: Model *) Param[2]: meshId (type: int) Param[3]: materialId (type: int) -Function 442: LoadModelAnimations() (2 input parameters) +Function 443: LoadModelAnimations() (2 input parameters) Name: LoadModelAnimations Return type: ModelAnimation * Description: Load model animations from file Param[1]: fileName (type: const char *) Param[2]: animCount (type: unsigned int *) -Function 443: UpdateModelAnimation() (3 input parameters) +Function 444: UpdateModelAnimation() (3 input parameters) Name: UpdateModelAnimation Return type: void Description: Update model animation pose Param[1]: model (type: Model) Param[2]: anim (type: ModelAnimation) Param[3]: frame (type: int) -Function 444: UnloadModelAnimation() (1 input parameters) +Function 445: UnloadModelAnimation() (1 input parameters) Name: UnloadModelAnimation Return type: void Description: Unload animation data Param[1]: anim (type: ModelAnimation) -Function 445: UnloadModelAnimations() (2 input parameters) +Function 446: UnloadModelAnimations() (2 input parameters) Name: UnloadModelAnimations Return type: void Description: Unload animation array data Param[1]: animations (type: ModelAnimation *) Param[2]: count (type: unsigned int) -Function 446: IsModelAnimationValid() (2 input parameters) +Function 447: IsModelAnimationValid() (2 input parameters) Name: IsModelAnimationValid Return type: bool Description: Check model animation skeleton match Param[1]: model (type: Model) Param[2]: anim (type: ModelAnimation) -Function 447: CheckCollisionSpheres() (4 input parameters) +Function 448: CheckCollisionSpheres() (4 input parameters) Name: CheckCollisionSpheres Return type: bool Description: Check collision between two spheres @@ -3816,40 +3822,40 @@ Function 447: CheckCollisionSpheres() (4 input parameters) Param[2]: radius1 (type: float) Param[3]: center2 (type: Vector3) Param[4]: radius2 (type: float) -Function 448: CheckCollisionBoxes() (2 input parameters) +Function 449: CheckCollisionBoxes() (2 input parameters) Name: CheckCollisionBoxes Return type: bool Description: Check collision between two bounding boxes Param[1]: box1 (type: BoundingBox) Param[2]: box2 (type: BoundingBox) -Function 449: CheckCollisionBoxSphere() (3 input parameters) +Function 450: CheckCollisionBoxSphere() (3 input parameters) Name: CheckCollisionBoxSphere Return type: bool Description: Check collision between box and sphere Param[1]: box (type: BoundingBox) Param[2]: center (type: Vector3) Param[3]: radius (type: float) -Function 450: GetRayCollisionSphere() (3 input parameters) +Function 451: GetRayCollisionSphere() (3 input parameters) Name: GetRayCollisionSphere Return type: RayCollision Description: Get collision info between ray and sphere Param[1]: ray (type: Ray) Param[2]: center (type: Vector3) Param[3]: radius (type: float) -Function 451: GetRayCollisionBox() (2 input parameters) +Function 452: GetRayCollisionBox() (2 input parameters) Name: GetRayCollisionBox Return type: RayCollision Description: Get collision info between ray and box Param[1]: ray (type: Ray) Param[2]: box (type: BoundingBox) -Function 452: GetRayCollisionMesh() (3 input parameters) +Function 453: GetRayCollisionMesh() (3 input parameters) Name: GetRayCollisionMesh Return type: RayCollision Description: Get collision info between ray and mesh Param[1]: ray (type: Ray) Param[2]: mesh (type: Mesh) Param[3]: transform (type: Matrix) -Function 453: GetRayCollisionTriangle() (4 input parameters) +Function 454: GetRayCollisionTriangle() (4 input parameters) Name: GetRayCollisionTriangle Return type: RayCollision Description: Get collision info between ray and triangle @@ -3857,7 +3863,7 @@ Function 453: GetRayCollisionTriangle() (4 input parameters) Param[2]: p1 (type: Vector3) Param[3]: p2 (type: Vector3) Param[4]: p3 (type: Vector3) -Function 454: GetRayCollisionQuad() (5 input parameters) +Function 455: GetRayCollisionQuad() (5 input parameters) Name: GetRayCollisionQuad Return type: RayCollision Description: Get collision info between ray and quad @@ -3866,143 +3872,143 @@ Function 454: GetRayCollisionQuad() (5 input parameters) Param[3]: p2 (type: Vector3) Param[4]: p3 (type: Vector3) Param[5]: p4 (type: Vector3) -Function 455: InitAudioDevice() (0 input parameters) +Function 456: InitAudioDevice() (0 input parameters) Name: InitAudioDevice Return type: void Description: Initialize audio device and context No input parameters -Function 456: CloseAudioDevice() (0 input parameters) +Function 457: CloseAudioDevice() (0 input parameters) Name: CloseAudioDevice Return type: void Description: Close the audio device and context No input parameters -Function 457: IsAudioDeviceReady() (0 input parameters) +Function 458: IsAudioDeviceReady() (0 input parameters) Name: IsAudioDeviceReady Return type: bool Description: Check if audio device has been initialized successfully No input parameters -Function 458: SetMasterVolume() (1 input parameters) +Function 459: SetMasterVolume() (1 input parameters) Name: SetMasterVolume Return type: void Description: Set master volume (listener) Param[1]: volume (type: float) -Function 459: LoadWave() (1 input parameters) +Function 460: LoadWave() (1 input parameters) Name: LoadWave Return type: Wave Description: Load wave data from file Param[1]: fileName (type: const char *) -Function 460: LoadWaveFromMemory() (3 input parameters) +Function 461: LoadWaveFromMemory() (3 input parameters) Name: LoadWaveFromMemory Return type: Wave Description: Load wave from memory buffer, fileType refers to extension: i.e. '.wav' Param[1]: fileType (type: const char *) Param[2]: fileData (type: const unsigned char *) Param[3]: dataSize (type: int) -Function 461: IsWaveReady() (1 input parameters) +Function 462: IsWaveReady() (1 input parameters) Name: IsWaveReady Return type: bool Description: Checks if wave data is ready Param[1]: wave (type: Wave) -Function 462: LoadSound() (1 input parameters) +Function 463: LoadSound() (1 input parameters) Name: LoadSound Return type: Sound Description: Load sound from file Param[1]: fileName (type: const char *) -Function 463: LoadSoundFromWave() (1 input parameters) +Function 464: LoadSoundFromWave() (1 input parameters) Name: LoadSoundFromWave Return type: Sound Description: Load sound from wave data Param[1]: wave (type: Wave) -Function 464: IsSoundReady() (1 input parameters) +Function 465: IsSoundReady() (1 input parameters) Name: IsSoundReady Return type: bool Description: Checks if a sound is ready Param[1]: sound (type: Sound) -Function 465: UpdateSound() (3 input parameters) +Function 466: UpdateSound() (3 input parameters) Name: UpdateSound Return type: void Description: Update sound buffer with new data Param[1]: sound (type: Sound) Param[2]: data (type: const void *) Param[3]: sampleCount (type: int) -Function 466: UnloadWave() (1 input parameters) +Function 467: UnloadWave() (1 input parameters) Name: UnloadWave Return type: void Description: Unload wave data Param[1]: wave (type: Wave) -Function 467: UnloadSound() (1 input parameters) +Function 468: UnloadSound() (1 input parameters) Name: UnloadSound Return type: void Description: Unload sound Param[1]: sound (type: Sound) -Function 468: ExportWave() (2 input parameters) +Function 469: ExportWave() (2 input parameters) Name: ExportWave Return type: bool Description: Export wave data to file, returns true on success Param[1]: wave (type: Wave) Param[2]: fileName (type: const char *) -Function 469: ExportWaveAsCode() (2 input parameters) +Function 470: ExportWaveAsCode() (2 input parameters) Name: ExportWaveAsCode Return type: bool Description: Export wave sample data to code (.h), returns true on success Param[1]: wave (type: Wave) Param[2]: fileName (type: const char *) -Function 470: PlaySound() (1 input parameters) +Function 471: PlaySound() (1 input parameters) Name: PlaySound Return type: void Description: Play a sound Param[1]: sound (type: Sound) -Function 471: StopSound() (1 input parameters) +Function 472: StopSound() (1 input parameters) Name: StopSound Return type: void Description: Stop playing a sound Param[1]: sound (type: Sound) -Function 472: PauseSound() (1 input parameters) +Function 473: PauseSound() (1 input parameters) Name: PauseSound Return type: void Description: Pause a sound Param[1]: sound (type: Sound) -Function 473: ResumeSound() (1 input parameters) +Function 474: ResumeSound() (1 input parameters) Name: ResumeSound Return type: void Description: Resume a paused sound Param[1]: sound (type: Sound) -Function 474: IsSoundPlaying() (1 input parameters) +Function 475: IsSoundPlaying() (1 input parameters) Name: IsSoundPlaying Return type: bool Description: Check if a sound is currently playing Param[1]: sound (type: Sound) -Function 475: SetSoundVolume() (2 input parameters) +Function 476: SetSoundVolume() (2 input parameters) Name: SetSoundVolume Return type: void Description: Set volume for a sound (1.0 is max level) Param[1]: sound (type: Sound) Param[2]: volume (type: float) -Function 476: SetSoundPitch() (2 input parameters) +Function 477: SetSoundPitch() (2 input parameters) Name: SetSoundPitch Return type: void Description: Set pitch for a sound (1.0 is base level) Param[1]: sound (type: Sound) Param[2]: pitch (type: float) -Function 477: SetSoundPan() (2 input parameters) +Function 478: SetSoundPan() (2 input parameters) Name: SetSoundPan Return type: void Description: Set pan for a sound (0.5 is center) Param[1]: sound (type: Sound) Param[2]: pan (type: float) -Function 478: WaveCopy() (1 input parameters) +Function 479: WaveCopy() (1 input parameters) Name: WaveCopy Return type: Wave Description: Copy a wave to a new wave Param[1]: wave (type: Wave) -Function 479: WaveCrop() (3 input parameters) +Function 480: WaveCrop() (3 input parameters) Name: WaveCrop Return type: void Description: Crop a wave to defined samples range Param[1]: wave (type: Wave *) Param[2]: initSample (type: int) Param[3]: finalSample (type: int) -Function 480: WaveFormat() (4 input parameters) +Function 481: WaveFormat() (4 input parameters) Name: WaveFormat Return type: void Description: Convert wave data to desired format @@ -4010,203 +4016,203 @@ Function 480: WaveFormat() (4 input parameters) Param[2]: sampleRate (type: int) Param[3]: sampleSize (type: int) Param[4]: channels (type: int) -Function 481: LoadWaveSamples() (1 input parameters) +Function 482: LoadWaveSamples() (1 input parameters) Name: LoadWaveSamples Return type: float * Description: Load samples data from wave as a 32bit float data array Param[1]: wave (type: Wave) -Function 482: UnloadWaveSamples() (1 input parameters) +Function 483: UnloadWaveSamples() (1 input parameters) Name: UnloadWaveSamples Return type: void Description: Unload samples data loaded with LoadWaveSamples() Param[1]: samples (type: float *) -Function 483: LoadMusicStream() (1 input parameters) +Function 484: LoadMusicStream() (1 input parameters) Name: LoadMusicStream Return type: Music Description: Load music stream from file Param[1]: fileName (type: const char *) -Function 484: LoadMusicStreamFromMemory() (3 input parameters) +Function 485: LoadMusicStreamFromMemory() (3 input parameters) Name: LoadMusicStreamFromMemory Return type: Music Description: Load music stream from data Param[1]: fileType (type: const char *) Param[2]: data (type: const unsigned char *) Param[3]: dataSize (type: int) -Function 485: IsMusicReady() (1 input parameters) +Function 486: IsMusicReady() (1 input parameters) Name: IsMusicReady Return type: bool Description: Checks if a music stream is ready Param[1]: music (type: Music) -Function 486: UnloadMusicStream() (1 input parameters) +Function 487: UnloadMusicStream() (1 input parameters) Name: UnloadMusicStream Return type: void Description: Unload music stream Param[1]: music (type: Music) -Function 487: PlayMusicStream() (1 input parameters) +Function 488: PlayMusicStream() (1 input parameters) Name: PlayMusicStream Return type: void Description: Start music playing Param[1]: music (type: Music) -Function 488: IsMusicStreamPlaying() (1 input parameters) +Function 489: IsMusicStreamPlaying() (1 input parameters) Name: IsMusicStreamPlaying Return type: bool Description: Check if music is playing Param[1]: music (type: Music) -Function 489: UpdateMusicStream() (1 input parameters) +Function 490: UpdateMusicStream() (1 input parameters) Name: UpdateMusicStream Return type: void Description: Updates buffers for music streaming Param[1]: music (type: Music) -Function 490: StopMusicStream() (1 input parameters) +Function 491: StopMusicStream() (1 input parameters) Name: StopMusicStream Return type: void Description: Stop music playing Param[1]: music (type: Music) -Function 491: PauseMusicStream() (1 input parameters) +Function 492: PauseMusicStream() (1 input parameters) Name: PauseMusicStream Return type: void Description: Pause music playing Param[1]: music (type: Music) -Function 492: ResumeMusicStream() (1 input parameters) +Function 493: ResumeMusicStream() (1 input parameters) Name: ResumeMusicStream Return type: void Description: Resume playing paused music Param[1]: music (type: Music) -Function 493: SeekMusicStream() (2 input parameters) +Function 494: SeekMusicStream() (2 input parameters) Name: SeekMusicStream Return type: void Description: Seek music to a position (in seconds) Param[1]: music (type: Music) Param[2]: position (type: float) -Function 494: SetMusicVolume() (2 input parameters) +Function 495: SetMusicVolume() (2 input parameters) Name: SetMusicVolume Return type: void Description: Set volume for music (1.0 is max level) Param[1]: music (type: Music) Param[2]: volume (type: float) -Function 495: SetMusicPitch() (2 input parameters) +Function 496: SetMusicPitch() (2 input parameters) Name: SetMusicPitch Return type: void Description: Set pitch for a music (1.0 is base level) Param[1]: music (type: Music) Param[2]: pitch (type: float) -Function 496: SetMusicPan() (2 input parameters) +Function 497: SetMusicPan() (2 input parameters) Name: SetMusicPan Return type: void Description: Set pan for a music (0.5 is center) Param[1]: music (type: Music) Param[2]: pan (type: float) -Function 497: GetMusicTimeLength() (1 input parameters) +Function 498: GetMusicTimeLength() (1 input parameters) Name: GetMusicTimeLength Return type: float Description: Get music time length (in seconds) Param[1]: music (type: Music) -Function 498: GetMusicTimePlayed() (1 input parameters) +Function 499: GetMusicTimePlayed() (1 input parameters) Name: GetMusicTimePlayed Return type: float Description: Get current music time played (in seconds) Param[1]: music (type: Music) -Function 499: LoadAudioStream() (3 input parameters) +Function 500: LoadAudioStream() (3 input parameters) Name: LoadAudioStream Return type: AudioStream Description: Load audio stream (to stream raw audio pcm data) Param[1]: sampleRate (type: unsigned int) Param[2]: sampleSize (type: unsigned int) Param[3]: channels (type: unsigned int) -Function 500: IsAudioStreamReady() (1 input parameters) +Function 501: IsAudioStreamReady() (1 input parameters) Name: IsAudioStreamReady Return type: bool Description: Checks if an audio stream is ready Param[1]: stream (type: AudioStream) -Function 501: UnloadAudioStream() (1 input parameters) +Function 502: UnloadAudioStream() (1 input parameters) Name: UnloadAudioStream Return type: void Description: Unload audio stream and free memory Param[1]: stream (type: AudioStream) -Function 502: UpdateAudioStream() (3 input parameters) +Function 503: UpdateAudioStream() (3 input parameters) Name: UpdateAudioStream Return type: void Description: Update audio stream buffers with data Param[1]: stream (type: AudioStream) Param[2]: data (type: const void *) Param[3]: frameCount (type: int) -Function 503: IsAudioStreamProcessed() (1 input parameters) +Function 504: IsAudioStreamProcessed() (1 input parameters) Name: IsAudioStreamProcessed Return type: bool Description: Check if any audio stream buffers requires refill Param[1]: stream (type: AudioStream) -Function 504: PlayAudioStream() (1 input parameters) +Function 505: PlayAudioStream() (1 input parameters) Name: PlayAudioStream Return type: void Description: Play audio stream Param[1]: stream (type: AudioStream) -Function 505: PauseAudioStream() (1 input parameters) +Function 506: PauseAudioStream() (1 input parameters) Name: PauseAudioStream Return type: void Description: Pause audio stream Param[1]: stream (type: AudioStream) -Function 506: ResumeAudioStream() (1 input parameters) +Function 507: ResumeAudioStream() (1 input parameters) Name: ResumeAudioStream Return type: void Description: Resume audio stream Param[1]: stream (type: AudioStream) -Function 507: IsAudioStreamPlaying() (1 input parameters) +Function 508: IsAudioStreamPlaying() (1 input parameters) Name: IsAudioStreamPlaying Return type: bool Description: Check if audio stream is playing Param[1]: stream (type: AudioStream) -Function 508: StopAudioStream() (1 input parameters) +Function 509: StopAudioStream() (1 input parameters) Name: StopAudioStream Return type: void Description: Stop audio stream Param[1]: stream (type: AudioStream) -Function 509: SetAudioStreamVolume() (2 input parameters) +Function 510: SetAudioStreamVolume() (2 input parameters) Name: SetAudioStreamVolume Return type: void Description: Set volume for audio stream (1.0 is max level) Param[1]: stream (type: AudioStream) Param[2]: volume (type: float) -Function 510: SetAudioStreamPitch() (2 input parameters) +Function 511: SetAudioStreamPitch() (2 input parameters) Name: SetAudioStreamPitch Return type: void Description: Set pitch for audio stream (1.0 is base level) Param[1]: stream (type: AudioStream) Param[2]: pitch (type: float) -Function 511: SetAudioStreamPan() (2 input parameters) +Function 512: SetAudioStreamPan() (2 input parameters) Name: SetAudioStreamPan Return type: void Description: Set pan for audio stream (0.5 is centered) Param[1]: stream (type: AudioStream) Param[2]: pan (type: float) -Function 512: SetAudioStreamBufferSizeDefault() (1 input parameters) +Function 513: SetAudioStreamBufferSizeDefault() (1 input parameters) Name: SetAudioStreamBufferSizeDefault Return type: void Description: Default size for new audio streams Param[1]: size (type: int) -Function 513: SetAudioStreamCallback() (2 input parameters) +Function 514: SetAudioStreamCallback() (2 input parameters) Name: SetAudioStreamCallback Return type: void Description: Audio thread callback to request new data Param[1]: stream (type: AudioStream) Param[2]: callback (type: AudioCallback) -Function 514: AttachAudioStreamProcessor() (2 input parameters) +Function 515: AttachAudioStreamProcessor() (2 input parameters) Name: AttachAudioStreamProcessor Return type: void Description: Attach audio stream processor to stream Param[1]: stream (type: AudioStream) Param[2]: processor (type: AudioCallback) -Function 515: DetachAudioStreamProcessor() (2 input parameters) +Function 516: DetachAudioStreamProcessor() (2 input parameters) Name: DetachAudioStreamProcessor Return type: void Description: Detach audio stream processor from stream Param[1]: stream (type: AudioStream) Param[2]: processor (type: AudioCallback) -Function 516: AttachAudioMixedProcessor() (1 input parameters) +Function 517: AttachAudioMixedProcessor() (1 input parameters) Name: AttachAudioMixedProcessor Return type: void Description: Attach audio stream processor to the entire audio pipeline Param[1]: processor (type: AudioCallback) -Function 517: DetachAudioMixedProcessor() (1 input parameters) +Function 518: DetachAudioMixedProcessor() (1 input parameters) Name: DetachAudioMixedProcessor Return type: void Description: Detach audio stream processor from the entire audio pipeline diff --git a/parser/output/raylib_api.xml b/parser/output/raylib_api.xml index 85b3e3e4..f450069c 100644 --- a/parser/output/raylib_api.xml +++ b/parser/output/raylib_api.xml @@ -656,7 +656,7 @@ - + @@ -1685,6 +1685,10 @@ + + + + diff --git a/projects/Geany/raylib.c.tags b/projects/Geany/raylib.c.tags index 4cc6d460..79a192a1 100644 --- a/projects/Geany/raylib.c.tags +++ b/projects/Geany/raylib.c.tags @@ -202,6 +202,7 @@ ImageDrawText|void|(Image *dst, Vector2 position, const char *text, int fontSize ImageDrawTextEx|void|(Image *dst, Vector2 position, Font font, const char *text, float fontSize, float spacing, Color color);| ImageFlipVertical|void|(Image *image);| ImageFlipHorizontal|void|(Image *image);| +ImageRotate|void|(Image *image, int degrees);| ImageRotateCW|void|(Image *image);| ImageRotateCCW|void|(Image *image);| ImageColorTint|void|(Image *image, Color color);| diff --git a/projects/Notepad++/raylib_npp_parser/raylib_npp.xml b/projects/Notepad++/raylib_npp_parser/raylib_npp.xml index 7e173a93..883183ce 100644 --- a/projects/Notepad++/raylib_npp_parser/raylib_npp.xml +++ b/projects/Notepad++/raylib_npp_parser/raylib_npp.xml @@ -1570,6 +1570,12 @@ + + + + + + diff --git a/projects/Notepad++/raylib_npp_parser/raylib_to_parse.h b/projects/Notepad++/raylib_npp_parser/raylib_to_parse.h index f20f065e..c32cdb26 100644 --- a/projects/Notepad++/raylib_npp_parser/raylib_to_parse.h +++ b/projects/Notepad++/raylib_npp_parser/raylib_to_parse.h @@ -346,6 +346,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 diff --git a/src/raylib.h b/src/raylib.h index 703e70c2..b2b82583 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -1268,6 +1268,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 diff --git a/src/rtextures.c b/src/rtextures.c index eeeebba8..b5e2a7f7 100644 --- a/src/rtextures.c +++ b/src/rtextures.c @@ -2118,6 +2118,65 @@ void ImageFlipHorizontal(Image *image) } } +// Rotate image in degrees +void ImageRotate(Image *image, int degrees) +{ + // Security check to avoid program crash + if ((image->data == NULL) || (image->width == 0) || (image->height == 0)) return; + + if (image->mipmaps > 1) TRACELOG(LOG_WARNING, "Image manipulation only applied to base mipmap level"); + if (image->format >= PIXELFORMAT_COMPRESSED_DXT1_RGB) TRACELOG(LOG_WARNING, "Image manipulation not supported for compressed formats"); + else + { + float rad = degrees * PI / 180.0f; + float sinRadius = sin(rad); + float cosRadius = cos(rad); + + int width = abs(image->width * cosRadius) + abs(image->height * sinRadius); + int height = abs(image->height * cosRadius) + abs(image->width * sinRadius); + + int bytesPerPixel = GetPixelDataSize(1, 1, image->format); + unsigned char *rotatedData = (unsigned char *)RL_CALLOC(width * height, bytesPerPixel); + + for (int y = 0; y < height; y++) + { + for (int x = 0; x < width; x++) + { + float oldX = ((x - width / 2.0f) * cosRadius + (y - height / 2.0f) * sinRadius) + image->width / 2.0f; + float oldY = ((y - height / 2.0f) * cosRadius - (x - width / 2.0f) * sinRadius) + image->height / 2.0f; + + if (oldX >= 0 && oldX < image->width && oldY >= 0 && oldY < image->height) + { + int x1 = (int)floor(oldX); + int y1 = (int)floor(oldY); + int x2 = MIN(x1 + 1, image->width - 1); + int y2 = MIN(y1 + 1, image->height - 1); + + float px = oldX - x1; + float py = oldY - y1; + + for (int i = 0; i < bytesPerPixel; i++) + { + float f1 = ((unsigned char *)image->data)[(y1 * image->width + x1) * bytesPerPixel + i]; + float f2 = ((unsigned char *)image->data)[(y1 * image->width + x2) * bytesPerPixel + i]; + float f3 = ((unsigned char *)image->data)[(y2 * image->width + x1) * bytesPerPixel + i]; + float f4 = ((unsigned char *)image->data)[(y2 * image->width + x2) * bytesPerPixel + i]; + + float val = f1 * (1 - px) * (1 - py) + f2 * px * (1 - py) + f3 * (1 - px) * py + f4 * px * py; + + rotatedData[(y * width + x) * bytesPerPixel + i] = (unsigned char)val; + } + } + } + } + + RL_FREE(image->data); + image->data = rotatedData; + image->width = width; + image->height = height; + } +} + // Rotate image clockwise 90deg void ImageRotateCW(Image *image) {