The copy loop filled all MAX_TEXT_BUFFER_LENGTH bytes, so the last substring
could come back with no terminator, and a delimiter on the last byte made
buffers[] point one past the end of the array. Stop one byte earlier so the
zero left by the memset() at the top of the function always terminates the
last substring.
Both functions walk the input with two indexes and, on hitting '_', advance
j once and only write buffer[i] when the next character is one they know how
to handle. TextToPascal() (src/rtext.c:2186) covers 'a'-'z' and '0'-'9',
TextToCamel() (src/rtext.c:2270) covers only 'a'-'z'. Anything else leaves
buffer[i] at the zero it was memset to, so the returned string ends there
and the rest of the text is silently dropped: TextToPascal("text_UTF8_load")
returned "Text" and TextToCamel("sound_3d_mix") returned "sound".
The same path also reads past the end of the string. When '_' is the last
character, j++ lands on the '\0', neither branch matches, and then the loop
increment moves j one further before the condition reads text[j], one byte
beyond the terminator.
Skip the whole run of separators instead, stop when it reaches the end of
the text, and copy any character that has no upper case form as it is.
* Updated bindings' versions
Bindings in the `Older or Unmaintained Language Bindings` category are untouched.
* Fix Target link
* Moved archived and projects with invalid links to a "Unmaintained" category
* `raylib4fb` was moved from GitHub to Codeberg
* Fix table formatting
* Moved outdated to the `Older bindings` category
* Fix tables formatting
* Changed the first paragraph
Added advice on when to update `BINDINGS.md`.
`build`, `test`, and `testlog` generate lots of files (`.exe`, `.html`, etc.) when executed. When you build/test enough examples, it's kind of annoying manually deleting the files. The generated reports (`.md` files) are not deleted.
* [rexm] Fix `Makefile`.
The `make` program that comes with `w64devkit` uses a UNIX-style shell, so we can't use `del` (we could set `SHELL` to `cmd`, but this is easier, and the expectation is that `w64devkit` is being used anyway.)
* [rexm] Use less common port number.
When using a port that's already in use, the server fails to start. Using a different (hopefully less common) port should help mitigate this.
ImageDrawCircle filled 2*radius pixels wide but 2*radius + 1 tall. Each
horizontal span started at centerX - x with width 2*x, which covers
centerX - x through centerX + x - 1, leaving the column at centerX + x
unwritten. The result was one column short on the right, off-centre, and
inconsistent with ImageDrawCircleLines, which is 2*radius + 1 in both
directions.
Widen the four spans by one pixel so the fill is (2r+1) x (2r+1), centred
on (centerX, centerY) and aligned with ImageDrawCircleLines.
Fixes#6117
* Add LoadRenderTextureEx that defines the FBO pixel format
* rlparser: update raylib_api.* by CI
* requested review
* rlparser: update raylib_api.* by CI
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
R5G5B5A1 packs blue in bits 5..1 and alpha in bit 0, which is what
SetPixelColor(), ImageFormat(), LoadImageColors() and GetImageColor()
all do. GetPixelColor() masked bits 4..0 instead, so the decoded blue
was the low four bits of blue shifted up with the alpha bit pulled in
as its LSB.
Packing r == g == b and decoding it back gave (164, 164, 74) for
r=g=b=20; 31 of the 32 possible grey values decoded with unequal
channels. ImageDrawImage() blends through GetPixelColor(), so drawing
onto an R5G5B5A1 image was affected too.
Co-authored-by: Dylan Pulver <dylanpulver@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
Alias GL_DRAW_FRAMEBUFFER_BINDING to GL_FRAMEBUFFER_BINDING for ES 2.0,
alongside the existing GL_READ_FRAMEBUFFER/GL_DRAW_FRAMEBUFFER aliases, and
widen the guard to ES 2.0. The guard now matches rlEnableFramebuffer() and
rlDisableFramebuffer().
The cache has no eviction, so a driver rotating a fourth buffer never gets a
framebuffer for it and the display stops updating for good. Mesa rotates
three, ARM's Mali blob on RK3326 rotates four.
Verified on an R36S. See #6056.
rexm used to assume certain paths existed and then `_putenv()` them into `PATH`, which is very error prone. `make` was also assumed, though `mingw32-make` seems to be more common on Windows. Since this shifts things to expect the user to setup their environment, I added some explanation to the README as well.
OP_TESTLOG still uses a hardcoded path when doing web testing (`BUILD_TESTING_WEB`,) unfortunately.
* [rshapes] Add `DrawEllipseLinesEx()`
Add DrawEllipseLinesEx() to the API for consistency with other shape drawing functions.
* [rshapes] Add `DrawTriangleLinesEx()`
Add DrawTriangleLinesEx() to the API for consistency with other shape drawing functions.
* [rshapes] Add `DrawCircleSectorLinesEx()`
Add DrawCircleSectorLinesEx() to the API for consistency with other shape drawing functions.
* [rshapes] Add `DrawRingLinesEx()`
Add DrawRingLinesEx() to the API for consistency with other shape drawing functions.
* [examples] Add shapes_outlines_testbed
This example stress tests the previously existing and newly added shape outline functions.
* [cmake] Fix standalone configuration of examples project
Configuring examples/ as a standalone project (cd examples && cmake .)
failed with 'Unknown CMake command add_if_flag_compiles' and a missing
cmake_minimum_required() error on CMake 4.x.
- Add cmake_minimum_required(VERSION 3.22), matching the root project
- Include raylib's AddIfFlagCompiles helper via ../cmake
- Default PLATFORM to Desktop when not inherited from the raylib build
* [cmake] Propagate Cocoa backend frameworks to consumers of static raylib on macOS
Bundled GLFW links '-framework Cocoa/IOKit/QuartzCore' privately, and the
static-install export block removes glfw from the exported dependencies.
As a result the installed CMake package only carried OpenGL.framework,
and linking any consumer of libraylib.a failed with undefined Objective-C
symbols (_objc_retain etc.).
Append the three frameworks to the static install interface when the
bundled GLFW is used, so installed consumers get a complete link line.
* Gate macOS Cocoa framework propagation to the Desktop platform
Configuring examples/ as a standalone project (cd examples && cmake .)
failed with 'Unknown CMake command add_if_flag_compiles' and a missing
cmake_minimum_required() error on CMake 4.x.
- Add cmake_minimum_required(VERSION 3.22), matching the root project
- Include raylib's AddIfFlagCompiles helper via ../cmake
- Default PLATFORM to Desktop when not inherited from the raylib build