Currently doing the following:
```
make
touch rcore_desktop.c
make
```
Will not result in rcore.o getting compiled again, despite that
rcore_desktop.c has changed
This commit resolves that
* Update `PLATFORM_DRM` implementation of `GetGamepadAxisCount`
* Update
* Update `PLATFORM_DRM` implementation of `GetGamepadName`
* Add example to test gamepad info functions
Fix typo
* Update new gamepad info example
* Move axis count update out of GamepadThread - race condition
* Remove pointless if statement
* Start integrating stuff from the mikesinput lib
* Add more logging
* Add semicolon
* Add forgotten static
* More fixes
* Update axisCount to be array
* More debugging
* Add forgotten index to ready check
* Add path logging
* Missing parenthesis
* Add missing slash
* Fix axis count being reset to 0
* Fix missing paren
* Test polling joystick button events
* Major updates
* Fix missing array index
* Fix another missing array index
* Update example
* dumb logging
* Wrong constant for ev.code handling
* More dumb logging
* Remove some logging
* Add FPS to gamepad info example and try for max FPS
* tweak
* Revert example
* Add fps back
* Clean up after merge
* Switch axisCount to be an array
`InitGraphicsDevice()` could be confusing because the function actually initialized many things: window, graphics, inputs, callbacks, timming, storage... restructured it.
* Update `PLATFORM_DRM` implementation of `GetGamepadAxisCount`
* Update
* Update `PLATFORM_DRM` implementation of `GetGamepadName`
* Add example to test gamepad info functions
Fix typo
* Update new gamepad info example
* Move axis count update out of GamepadThread - race condition
* Remove pointless if statement
* Hotfix for Vector2LineAngle(), should probably be reviewed along with the rest of raylib angle functions to determine what coordinate system we want.
* Hotfix for Vector2LineAngle(), should probably be reviewed along with the rest of raylib angle functions to determine what coordinate system we want.
* [raymath] Hotfix for Vector2Angle and corresponding example
* [raymath] Hotfix for Vector2Angle and corresponding example
---------
Co-authored-by: Ray <raysan5@gmail.com>
* update build.zig for zig 0.11.0
* fix build.zig in examples to install executable correctly
* discard build.zig, only use src/build.zig, to avoid annoying zig-out path problem
* update zig version note
* Submodules (#3311)
* Check in current state
* Add submodules to Makefile and clean up some imports
* Start moving InitGraphicsDeivce
* Move android_main and CloseWindow() out of rcore
* Move WindowShouldClose out of rcore
* Move IsWindowHidden out of rcore
* Move IsWindowMinimized out of rcore
* Move IsWindowMaximized, IsWindowFocused and IsWindowResized out of rcore
* Move ToggleFullscreen out of rcore
* Move MaximizeWindow, MinimizeWindow and RestoreWindow out of rcore
* Move 13 functions out of rcore:
ToggleBorderlessWindowed
SetWindowState
ClearWindowState
SetWindowIcon
SetWindowIcons
SetWindowTitle
SetWindowPosition
SetWindowMonitor
SetWindowMinSize
SetWindowMaxSize
SetWindowSize
SetWindowOpacity
SetWindowFocused
* Minor clean up, revert makefile change, include submodules directly in rcore
* Fix makefile comment
* Remove rcore.h from Makefile
* Remove debug include
* Move 18 functions from rcore to submodules
GetWindowHandle
GetMonitorCount
GetCurrentMonitor
GetMonitorPosition
GetMonitorWidth
GetMonitorHeight
GetMonitorPhysicalHeight
GetMonitorRefreshRate
GetWindowPosition
GetWindowScaleDPI
GetMonitorName
SetClipboardText
GetClipboardText
ShowCursor
HideCursor
EnableCursor
DisableCursor
GetTime
* Move TakeScreenshot, OpenURL, GetGamepadName out of rcore into submodules
* remove debugging #defines
* Move GetMonitorPhysicalWidth from rcore to submodule
* Move GetGamepadAxisCount from rcore
* Move SetGamepadMappings out of rcore
* Move GetMouseX, GetMouseY, GetMousePosition out of rcore
* Move SetMousePosition out of rcore
* Move GetMouseWheelMove out of rcore
* Move the last functions out of rcore
* Move shared function defs and some global var to rcore.h
* Clean up rcore.c and rcore.h a little more
* Remove unnecessary #define
---------
Co-authored-by: MichaelFiber <michael@cubeofb.org>
* REVIEWED: `PLATFORM_DESKTOP` Windows building
* Revert "REVIEWED: `PLATFORM_DESKTOP` Windows building"
This reverts commit 71a12171f7.
* Reviewed Windows building
* [split] Fix compilation for web (and desktop) (#3329)
* Fix compilation for web
* Remove EM_ASM_INT from core_input_gestures_web example
* Fix raymath undefined symbols for desktop and web
* Remove raylib_opengl_interop from examples Makefile
* Revert previous commit (8651c78)
* Fix TraceLog for web and desktop
* [split] `rcore`, `rcore_web` and `rcore_desktop` changes (batch 2) (#3334)
* Fix formatting
* Reapply commit 9d230d7 (#3305) that was missing
* Reapplies commits 719365f (#3309) and 8a1779b (#3312) that were missing
* Reapply commit 5c9cc3f (#3323) that was missing
* Reapply commit a2b3b1e that was missing
* Revert commit cef25c6 to fix macro redefined warning
* Move rcore.h #include to after config.h to fix macro redefinitions warnings
* [split] `rcore`, `web`, `desktop`, `android` changes (batch 3) (#3338)
* First pass to remove unneeded platform macros for web
* Second pass to remove unneeded platform macros for web
* Move GetTouchX, GetTouchY, GetTouchPosition from rcore to web, desktop, android
* Move SetMouseCursor from rcore to android, desktop, web
* [split] `rcore`, `web`, `desktop`, `android` changes (batch 4) (#3343)
* Fix ToggleBorderlessWindowed duplicated glfwSetWindowSize calls
* First pass to remove unneeded platform macros for android
* Second pass to remove unneeded platform macros for android
* Remove unneeded platform macros for desktop
* Relocate GetGamepadName and update SetGamepadMappings on android, desktop, web
* Add missing comment to web
* [split] `rcore`, `web`, `desktop`, `android` changes (batch 5) (#3345)
* Move SetExitKey from core to android, desktop, web
* Move some callbacks from core to desktop and web
* Relocate emscripten callbacks on web
* Relocate android callbacks on android
* Revert "Relocate android callbacks on android"
This reverts commit bbdbecc01e.
* Updates UnloadVrStereoConfig on rcore
* Update SetClipboardText on android
* Fix screenMin/Max default values for android
* [split] `rcore`, `drm` changes (#3347)
* Tweak makefiles for PLATFORM_DRM and move rcore_drm's dependencies to rcore.h
* Move drm functions to rcore_drm.c
* Fix a typo in rcore.c
* Add SetExitKey to rcore_drm.c
---------
Co-authored-by: MichaelFiber <michael@cubeofb.org>
* Fix compilation for android (#3360)
* Fix android include (#3364)
* Reviewed platform split #3313
- Added file headers info
- Added TRACELOG message for unimplemented functions
- Reviewed code formatting and organization
- Several code tweaks
* REVIEWED: `GetDirectoryPath()`
---------
Co-authored-by: MichaelFiber <42419558+michaelfiber@users.noreply.github.com>
Co-authored-by: MichaelFiber <michael@cubeofb.org>
Co-authored-by: ubkp <118854183+ubkp@users.noreply.github.com>
* reveiwed GetWorldToScreenEx
Used the inputted "width" instead of global CORE.window.
Used Vector3Transform instead of quaternion.
* reverted accidental unrelated change
* reverted Vector3Transform back
* fixed mistyped result
---------
Co-authored-by: Brian-E <brian@intra.fo>
* Added macros for EPSILON
This is so the functions can be easily copied and used.
* used `#if !defined()` instead of `#ifndef`
---------
Co-authored-by: Brian-E <brian@intra.fo>
* Prettified a comment
* fixed broken indentation caused by another commit.
the commit renamed a bool to int and broke indentation: 233cf3970c
* Changed 0.001 and 0.00001 to EPSILON
This commit is untested.
I don't know what consequences this has.
Since the commits that added these numbers were before epsilon was added,
I have assumed that epsilon could replace them.
* Prettied up indentation in a few places
* removed spacing around *, standardizing it.
* I may have gotten overboard with indentation
* removed a few useless parenthesis
* Added fortran-raylib
* Fix examples/others/rlgl_standalone.c compilation issue (#3242)
* Update BINDINGS.md
* Ignore unused return value of GetCodepointNext in GetCodepointCount (#3241)
* Ignore unused return value of GetCodepointNext in GetCodepointCount
Removes the last warning from non-external libraries when compiling with
the default build configuration on x64 Linux.
* Remove unnecessary void cast in GetCodepointCount
* Fix#3246
* Revert "Fix #3246"
This reverts commit e4dcbd5180.
* Fix text_unicode.c example crashing (#3250)
* Fix text_unicode.c example crashing
* Adjust the text_unicode.c example crashing fix
* tweaks
* add build.zig options for individual modules (#3254)
* Add `IsKeyPressedRepeat` (desktop only) (#3245)
Since the key pressed are handle by comparing current vs previous
state (ie frame), a special way is needed to handle key repeats.
* Reviewed `IsKeyPressedRepeat()` #3248
* Update rcore.c (#3255)
* Match CMakeOptions.txt options default values (#3258)
* Fix SetClipboardText for web (#3257)
* [Image] Validate that ImageDrawRectangleRec is drawing entirely inside the image (#3264)
* Add a function to clone a sound and share data with another sound.
* rename items based on feedback
* PR Feedback, use custom unload for sound alias, not variant of normal sound unloading
* sound_multi example
* Validate that image rect drawing is inside the image so we don't overflow a buffer
* remove files that should not have been added.
* remove changes that should not have been
* revert
* adsfasdfsdfsdf
* Add Vector3 Projecting and Rejection to Raymath (#3263)
* Update raymath.h
* formatting
* [Feature] IsKey... safety checks and more (#3256)
* [Feature] Add GetKeyRepeat
* Update rcore.c
* Simpler design, only one repeat per frame
* Update config.h
* Update rcore.c
* Add KEYBOARD_KEYS_MASK
* Update config.h
* reversions
* Update rcore.c
* Update rcore.c
* change docs
* Update rcore.c
* Update rcore.c
* Update rcore.c
* Update rcore.c
* Update rcore.c
* Update raylib.h
* Update rcore.c
* Update rcore.c
* Update rcore.c
* Update rcore.c
* Update rcore.c
* Update rcore.c
* Update rcore.c
* Update rcore.c
* Fix bug where default shaders was not linking. (#3261)
* Formating review
* Add missing cmake options (#3267)
* Fix CMake extraneous -lglfw (#3266)
Closes#3265.
The problem: LIBS_PRIVATE is a list of library names (used by pkg-config), but the shared library of the same name doesn't always exist.
* Fix example/models/models_loading_gltf.c controls (#3268)
* Fix example/models/models_loading_m3d.c controls (#3269)
* Remove e from secondes (#3270)
* Fix example/audio/audio_module_player.c help instructions and small bug (#3272)
* Fix example/audio/audio_module_player.c help instructions and small bug
* Update example/audio/audio_module_player.png screenshot
* Use type name instead of valid specifier
long long --> long long int
* REVIEWED: `GetFileLength()`, added comment #3262
* Update examples/models/models_loading_gltf.png;m3d.png screenshots (#3273)
* Remove a duplicated screenshot and add missing one (#3275)
* Add examples/shaders/shaders_lightmap.c to Makefiles (#3276)
* Fix examples/others/easings_testbed.c help instructions and small tweak (#3277)
* Fix examples/shaders/shaders_texture_outline.c help instructions (#3278)
* Fix examples/shapes/shapes_collision_area.c help instructions (#3279)
* RENAMED: LoadFont*() parameter names for consistency and coherence
* Fix uninitialized thread-locals in stbi #3282 (#3283)
* REVIEWED: Added `SetTextLineSpacing()` to multiline examples
* REVIEWED: Data size type consistency between functions #3168
* Some tweaks
* Use internal default allocators, instead of user-exposed ones
* Added rudimentary SVG support. (#2738)
* Added rudimentary SVG support. Added 2 functions ImageLoadSvg and ImageLoadSvgWithSize.
* Added an example on how to use ImageLoadSvgWithSize and adjusted Makefiles accordingly.
* Added actual correct example file.
* Reviewed the code to keep the raylib coding conventions in mind.
Moved the LoadImageSvg() code into LoadImage() guarded by SUPPORT_FILEFORMAT_SVG.
Renamed LoadImageSvgWithSize() to LoadImageSvg().
Added a LoadImageSvgFromString() function to parse the loaded SVG into an actual image. This does the bulk of the work.
* Fixed typo.
---------
Co-authored-by: Ray <raysan5@gmail.com>
* REVIEWED: `LoadImageSvg()`
* REVIEWED: `LoadImageSvg()`
* Add SUPPORT_FILEFORMAT_SVG to cmake (#3284)
* Fix examples/textures/textures_fog_of_war.c help instructions (#3285)
* Fix examples/textures/textures_image_rotate.c help instructions (#3286)
* Update rtextures.c
* Fix#3247
* Update config.h
* Fix#3293
* Disable UBSAN in zig builds. (#3292)
Zig debug builds automatically enable ubsan.
As the fix for #1891 had to be reverted, debug builds using zig will crash like so:
```
Illegal instruction at address 0x3237d2
raylib/src/rlgl.h:3690:91: 0x3237d2 in rlDrawVertexArrayElements (/home/rcorre/src/raylib-zig-template/raylib/src/rcore.c)
glDrawElements(GL_TRIANGLES, count, GL_UNSIGNED_SHORT, (const unsigned short *)buffer + offset);
```
This disables UBSAN when using zig to build raylib.
* Update README.md (#3290)
specially -> especially
* Update cmake SUPPORT_FILEFORMAT_SVG default value (#3291)
* Mouse offset and scaling must be considered also on web!
* Update rcore.c
* Update Makefile : clean raygui.c & physac.c (#3296)
* Remove PLATFORM_RPI (#3232)
* Remove PLATFORM_RPI
* remove build artifacts
---------
Co-authored-by: MichaelFiber <michael@cubeofb.org>
Co-authored-by: Ray <raysan5@gmail.com>
* Review to avoid UBSAN complaining #1891
* added raylib-raku to bindings (#3299)
* examples: core: adds 2D camera two player split screen (#3298)
* Reviewed examples for consistency
* Update rtext.c
* Some code restructuring for input functions, consistency review
* Remove unneeded #if (#3301)
Co-authored-by: MichaelFiber <michael@cubeofb.org>
* Revert "Disable UBSAN in zig builds. (#3292)" (#3303)
This reverts commit a316f9e7fc.
Issue #1891 was fixed again, so this is no longer needed.
* rtextures: Fix ImageDraw() source clipping when drawing beyond top left (#3306)
* REVIEWED: `TextToPascal()` issue when first char is uppercase
* Implement FLAG_WINDOW_RESIZABLE for web (#3305)
Fixes#3231
* Update BINDINGS.md (#3307)
Fix Kaylib binding. Reroute to a new repository.
Binding renamed.
* Update webassembly.yml
* Add claw-raylib to BINDINGS.md (#3310)
* Add SetWindowMaxSize for desktop and web (#3309)
* Add SetWindowMaxSize for desktop and web
* Remove SizeInt and respective adjustments
* Update rtextures.c
* Reviewed parameters for consistency
* Rename windowM* to screenM* (#3312)
* Update BINDINGS.md (#3317)
Update TurboRaylib bindings
* Update rmodels.c
* Update BINDINGS.md with vaiorabbit/raylib-bindings (#3318)
* fixed spelling mistake
* put back parenthesis
* reverted major allignment changes
* reverted parser output changes
* reverted one more indentation change
---------
Co-authored-by: Brian-E <brian@intra.fo>
Co-authored-by: Ray <raysan5@gmail.com>
Co-authored-by: ubkp <118854183+ubkp@users.noreply.github.com>
Co-authored-by: ashn <60763262+ashn-dot-dev@users.noreply.github.com>
Co-authored-by: actondev (Christos) <chris.actondev@gmail.com>
Co-authored-by: vitopigno <103512727+VitusVeit@users.noreply.github.com>
Co-authored-by: Asdqwe <asdqwe@asdqwe.com>
Co-authored-by: Jeffery Myers <jeffm2501@gmail.com>
Co-authored-by: Ethan Simpson <ethansimpson@xtra.co.nz>
Co-authored-by: Nickolas McDonald <43690021+n77y@users.noreply.github.com>
Co-authored-by: Branimir Ričko <rickobranimir@gmail.com>
Co-authored-by: iacore <74560659+iacore@users.noreply.github.com>
Co-authored-by: Ethan Conneely <Econn50@outlook.com>
Co-authored-by: Johannes Barthelmes <615914+jbarthelmes@users.noreply.github.com>
Co-authored-by: bXi <bluepunk@gmail.com>
Co-authored-by: Ryan Roden-Corrent <ryan@rcorre.net>
Co-authored-by: Ikko Eltociear Ashimine <eltociear@gmail.com>
Co-authored-by: SuperUserNameMan <yoann@terminajones.com>
Co-authored-by: MichaelFiber <42419558+michaelfiber@users.noreply.github.com>
Co-authored-by: MichaelFiber <michael@cubeofb.org>
Co-authored-by: Dan Vu <danvu.hustle@gmail.com>
Co-authored-by: Gabriel dos Santos Sanches <gabrielssanches@gmail.com>
Co-authored-by: Rob Loach <robloach@gmail.com>
Co-authored-by: Peter0x44 <peter0x44@disroot.org>
Co-authored-by: Kenta <106167071+Its-Kenta@users.noreply.github.com>
Co-authored-by: bohonghuang <1281299809@qq.com>
Co-authored-by: turborium <45082001+turborium@users.noreply.github.com>
Co-authored-by: Wilson Silva <wilson.dsigns@gmail.com>
Zig debug builds automatically enable ubsan.
As the fix for #1891 had to be reverted, debug builds using zig will crash like so:
```
Illegal instruction at address 0x3237d2
raylib/src/rlgl.h:3690:91: 0x3237d2 in rlDrawVertexArrayElements (/home/rcorre/src/raylib-zig-template/raylib/src/rcore.c)
glDrawElements(GL_TRIANGLES, count, GL_UNSIGNED_SHORT, (const unsigned short *)buffer + offset);
```
This disables UBSAN when using zig to build raylib.
* Added rudimentary SVG support. Added 2 functions ImageLoadSvg and ImageLoadSvgWithSize.
* Added an example on how to use ImageLoadSvgWithSize and adjusted Makefiles accordingly.
* Added actual correct example file.
* Reviewed the code to keep the raylib coding conventions in mind.
Moved the LoadImageSvg() code into LoadImage() guarded by SUPPORT_FILEFORMAT_SVG.
Renamed LoadImageSvgWithSize() to LoadImageSvg().
Added a LoadImageSvgFromString() function to parse the loaded SVG into an actual image. This does the bulk of the work.
* Fixed typo.
---------
Co-authored-by: Ray <raysan5@gmail.com>
* Add a function to clone a sound and share data with another sound.
* rename items based on feedback
* PR Feedback, use custom unload for sound alias, not variant of normal sound unloading
* sound_multi example
* Validate that image rect drawing is inside the image so we don't overflow a buffer
* remove files that should not have been added.
* remove changes that should not have been
* revert
* adsfasdfsdfsdf
* Ignore unused return value of GetCodepointNext in GetCodepointCount
Removes the last warning from non-external libraries when compiling with
the default build configuration on x64 Linux.
* Remove unnecessary void cast in GetCodepointCount
* Add a function to clone a sound and share data with another sound.
* rename items based on feedback
* PR Feedback, use custom unload for sound alias, not variant of normal sound unloading
* Update raylib.h
Changed SetWindowTitle's description
* Update rcore.c
SetWindowTitle now works on web
* Update rcore.c
InitWindow title now works with web platform too.
- Adds an option -Dplatform_drm when using zig build
- When building for linux, checks whether -Dplatform_drm is present and configures the build accordingly.
Support creating a 3x3 pixels white rectangle at the bottom-right corner of the generated font atlas image, useful for shapes+text drawing in a single draw call!
Working from wsl and compiling for windows this change makes it much easier to compile a static library for windows on arm.
To compile a static library for windows on arm:
```
make PLATFORM=PLATFORM_DESKTOP TARGET_OS=WINDOWS CROSS_CC=/llvm/bin/aarch64-w64-mingw32-gcc CROSS_AR=/llvm/bin/aarch64-w64-mingw32-ar
```
This does not work to compile a shared library yet, only static.
* Add options to zig compile options
Support for compiling with raygui, raymath, and physac.
Also outputs the required headers.
Raygui should be located `../raygui` relative to the repo root
Physac should be located `../physac` relative to the repo root
This behavior matches options in the Makefile
* Move Options struct
* Remove physac, explicit raymath, always copy rlgl.h and raymath.h
* Remove unused options from build.zig
* Add srcdir as include path for raygui.h
* Continuation of support for ES3/WebGL2
* GetTouchPointState()
* Amends to the WebGL2 PR
---------
Co-authored-by: root <root@DESKTOP-GLOV9QV>
Co-authored-by: chemguerra <online@chemaguerra.com>
I Added Analog Stick Support to the rcamera module, However this code only allowed for 4 Directions of Movement, This Changed adds the full range of Movement to the Right Analog Stick.
The color macros don't work properly in C++98, because they require
aggregate initialzation, which is a C++11 feature. So, explicitly state
how to fix this issue, instead of letting the compiler give a more vague
error message like:
main.cpp:8:23: error: expected '(' for function-style cast or type construction
ClearBackground(BLACK);
^~~~~
/opt/homebrew/Cellar/raylib/4.5.0/include/raylib.h:179:35: note: expanded from macro 'BLACK'
#define BLACK CLITERAL(Color){ 0, 0, 0, 255 } // Black
NOTE: Don't use this check with MSVC because by default, it reports
199711L regardless of any C++ version passed on command line
Only passing `/Zc:__cplusplus` will make MSVC set this correctly
see: https://learn.microsoft.com/en-us/cpp/build/reference/zc-cplusplus
* Add GenImageGradientSquare to allow square gradients
* Fix GenImageGradientSquare and add to textures_image_generation example
* Remove params from GenImageGradientSquare
I Noticed While Writing Some code for My Game im Making that there Isn't an Easy way to control the Camera With The Analog Sticks on Controller.
I Added a Couple Lines to the UpdateCamera Function :)
* Revert "Fixed broken build.zig files. Now works with latest stable compiler (as of commit, latest is 0.10.1) (#3045)"
This reverts commit de748dfffe so that zig
build script works with master branch of zig.
* Added a note to build.zig files that denotes what version of zig they have been tested with.
* Standardised the note in the build.zig files
* Correction of values used only once in GenMeshCubicmap
The mapWidth and mapHeight values were only used as a limit in the for loop when they could be used throughout the function.
* mapWidth and mapHeight removed from GenMeshCubicmap
mapWidth and mapHeight have been removed from GenMeshCubicmap in favor of using cubicmap.width and cubicmap.height
Checking `<= x + w` causes off-by-one error where `CheckCollisionPointRec` will return true at the same time for two rectangles rendered right next to each, but which don't overlap (e.g. when making a 2D tile editor). This is clearly not what was intended.
* Update raudio.c
Review `raudio.c`: rewritten `ExportWaveAsCode()` to be more like rtextures.c `ExportImageAsCode()'
* no tab november
accidentally inserted a tab somewhere. corrected it.
When `i` starts with `0`, `t` is also `0`, which results in `previous == startPos == current`, this segment is not only redundant, but it also causes division-by-zero since `sqrtf(dx*dx + dy*dy)` is zero.
* Fix GetCodepointNext to return default value with size=0 on invalid input. Modify LoadCodepoints to work when GetCodepointNext returns a size of 0. All internal use of GetCodepointNext and GetCodepointPrev checked. This fix may break external code dealing with invalid input as the old code erroneously never returned a size of 0, external code that doesn't properly check for size=0 may endlessly loop or overflow a buffer on invalid input.
* Change default behaviour of GetCodepointNext to return a size of 1 instead of 0. This matches existing prod behaviour and guarantees size 1..4 is returned. Simplify internal code that uses GetCodepointNext that previously had to account for size=0.
* Simplified progressing through a UTF-8 string in ImageTextEx and MeasureTextEx. This change matches existing precedent in DrawTextEx
* GetCodepointNext: Add 10xxxxxx checks to multibyte encodings.
---------
Co-authored-by: anon <anon>
Basic packing algorithm currently follows this order: Copy pixel data -> Move offsetX for current glyph -> Check remaining space for current glyph...
Since X offset already moved according current glyph, remaining space should be checked for next glyph. Because of this, occasionally, current logic causes glyphs wrapping around texture.
Proposed fix accomplishes that by moving offsetX check to the beginning of the loop.
* Calculate exact image size in GenImageFontAtlas
Calculate exact image size with a method based on total glyph width and glyph row count
Current method seemed a little bit overkill with square root, log and power functions and only approximates image size which can be wonky with some weird fonts like cursive fonts.
Proposed method calculates image size directly with a simpler method and results exact image size needed.
* Update rtext.c
* Update rtext.c
Changed do-while to while loop, and also added an extra step to calculate maximum glyph width and excluding it from image width for extra safety.
The `qoaplay_open()` function expects a `char *`, but we are passing in a `const char *`. While this works just fine, it does issue a compiler warning when strict:
```
src/raudio.c: In function ‘LoadMusicStream’:
src/raudio.c:1290:45: warning: passing argument 1 of ‘qoaplay_open’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
1290 | qoaplay_desc *ctxQoa = qoaplay_open(fileName);
| ^~~~~~~~
In file included from src/raudio.c:233:
src/external/qoaplay.c:86:34: note: expected ‘char *’ but argument is of type ‘const char *’
86 | qoaplay_desc *qoaplay_open(char *path)
| ~~~~~~^~~~
```
This change casts the argument to a `char *` to fix the warning.
* Use RL_QUADS/RL_TRIANGLES for single-pixel drawing
Addresses problem mentioned in
https://github.com/raysan5/raylib/issues/2744#issuecomment-1273568263
(in short: when drawing pixels using DrawPixel{,V} in camera mode,
upscaled pixel becomes a line instead of bigger pixel)
* [rtextures] Fixed scaling down in ImageTextEx
Closes#2755
* Added global audio processor
* Renamed struct member to follow naming conventions
* Added example for AttachAudioMixedProcessor
* core functionality CAMERA_FREE
* fix example
* add remaining camera modes
* add view bobbing
* view bobbing
* catch curser in SetCameraMode
* adjust examples
* fix compilation on linux
* fix example text_draw_3d
* actually fix text_draw_3d
* Updated camera API
* Improve Vector3RotateByAxisAngle() function
* remove camera.mode dependency from low-level functions
* remove camera.mode from struct
* fixes after rebase
* adjust examples for new UpdateCamera function
* adjust example models_loading_m3d
---------
Co-authored-by: Ray <raysan5@gmail.com>