From 7eefa8c1fd15b1d97c5624fc6e3ecd291f2411c5 Mon Sep 17 00:00:00 2001 From: Kaehvaman Date: Sat, 28 Dec 2024 17:04:16 +0400 Subject: [PATCH] =?UTF-8?q?opengl33=20->=20opengl43=20|=20=D0=BD=D0=BE?= =?UTF-8?q?=D1=80=D0=BC=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20HiDPI=20!!!!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Game of Life/Game of Life.vcxproj | 1 + .../Game of Life/Game of Life.vcxproj.filters | 3 + Game of Life/src/main.c | 66 +- Game of Life/src/tinyfiledialogs.c | 8171 +++++++++++++++++ lab16 with raylib/lib/raylib.lib | Bin 5009534 -> 5017382 bytes lab16 with raylib/resources/bloom.frag | 40 - lab16 with raylib/resources/color_mix.fs | 27 - lab16 with raylib/src/main.c | 54 +- .../include/raylib.h | 0 .../include/raymath.h | 0 .../include/rlgl.h | 0 .../lib => raylib opengl43}/raylib.dll | Bin 1783296 -> 1773568 bytes .../raylib opengl43/raylib.lib | Bin 4411328 -> 5017382 bytes raylib files/raylib opengl43/raylibdll.lib | Bin 0 -> 400954 bytes .../CHANGELOG | 0 .../LICENSE | 0 .../README.md | 0 .../include/raylib.h | 1708 ++++ .../include/raymath.h | 2941 ++++++ .../include/rlgl.h | 5262 +++++++++++ .../lib/raylib.dll | Bin .../lib/raylib.lib | Bin .../lib/raylibdll.lib | Bin .../raylib-5.5_win64_msvc16/lib/raylibdll.lib | Bin 400560 -> 0 bytes 24 files changed, 18156 insertions(+), 117 deletions(-) create mode 100644 Game of Life/src/tinyfiledialogs.c delete mode 100644 lab16 with raylib/resources/bloom.frag delete mode 100644 lab16 with raylib/resources/color_mix.fs rename raylib files/{raylib-5.5_win64_msvc16 => raylib opengl43}/include/raylib.h (100%) rename raylib files/{raylib-5.5_win64_msvc16 => raylib opengl43}/include/raymath.h (100%) rename raylib files/{raylib-5.5_win64_msvc16 => raylib opengl43}/include/rlgl.h (100%) rename raylib files/{raylib-5.5_win64_msvc16/lib => raylib opengl43}/raylib.dll (52%) rename lab16 with raylib/lib/raylib11.lib => raylib files/raylib opengl43/raylib.lib (71%) create mode 100644 raylib files/raylib opengl43/raylibdll.lib rename raylib files/{raylib-5.5_win64_msvc16 => raylib-5.5_win64_msvc16 opengl33}/CHANGELOG (100%) rename raylib files/{raylib-5.5_win64_msvc16 => raylib-5.5_win64_msvc16 opengl33}/LICENSE (100%) rename raylib files/{raylib-5.5_win64_msvc16 => raylib-5.5_win64_msvc16 opengl33}/README.md (100%) create mode 100644 raylib files/raylib-5.5_win64_msvc16 opengl33/include/raylib.h create mode 100644 raylib files/raylib-5.5_win64_msvc16 opengl33/include/raymath.h create mode 100644 raylib files/raylib-5.5_win64_msvc16 opengl33/include/rlgl.h rename {lab16 with raylib => raylib files/raylib-5.5_win64_msvc16 opengl33}/lib/raylib.dll (100%) rename raylib files/{raylib-5.5_win64_msvc16 => raylib-5.5_win64_msvc16 opengl33}/lib/raylib.lib (100%) rename {lab16 with raylib => raylib files/raylib-5.5_win64_msvc16 opengl33}/lib/raylibdll.lib (100%) delete mode 100644 raylib files/raylib-5.5_win64_msvc16/lib/raylibdll.lib diff --git a/Game of Life/Game of Life/Game of Life.vcxproj b/Game of Life/Game of Life/Game of Life.vcxproj index ca20103..ee714ae 100644 --- a/Game of Life/Game of Life/Game of Life.vcxproj +++ b/Game of Life/Game of Life/Game of Life.vcxproj @@ -139,6 +139,7 @@ + diff --git a/Game of Life/Game of Life/Game of Life.vcxproj.filters b/Game of Life/Game of Life/Game of Life.vcxproj.filters index a7ddcc1..e0d929c 100644 --- a/Game of Life/Game of Life/Game of Life.vcxproj.filters +++ b/Game of Life/Game of Life/Game of Life.vcxproj.filters @@ -29,5 +29,8 @@ Исходные файлы + + Исходные файлы + \ No newline at end of file diff --git a/Game of Life/src/main.c b/Game of Life/src/main.c index 874a06b..966db86 100644 --- a/Game of Life/src/main.c +++ b/Game of Life/src/main.c @@ -2,9 +2,11 @@ #include "raymath.h" #include #include +#include +#include -#define MAP_X 20 -#define MAP_Y 20 +#define MAP_X 100 +#define MAP_Y 50 #define CELL_SIZE 20 #define FCELL_SIZE (float)CELL_SIZE @@ -19,11 +21,11 @@ static bool map[MAP_X][MAP_Y] = { 0 }; static bool tempMap[MAP_X][MAP_Y] = { 0 }; static inline int checkCell(int x, int y) { - if (x > 0 and y > 0 and x < MAP_X - 1 and y < MAP_Y - 1) { - return map[x][y]; + if (x < 0 or y < 0 or x > MAP_X - 1 or y > MAP_Y - 1) { + return 0; } else { - return 0; + return map[x][y]; } } @@ -45,42 +47,43 @@ void celluralAutomata() if (neighbours == 3) { tempMap[x][y] = true; } - else if (neighbours < 2 or neighbours > 3) { - tempMap[x][y] = false; + else if (neighbours == 2) { + tempMap[x][y] = map[x][y]; } else { - tempMap[x][y] = map[x][y]; + tempMap[x][y] = false; } } } - for (int x = 0; x < MAP_X; x++) { - for (int y = 0; y < MAP_Y; y++) { - map[x][y] = tempMap[x][y]; - } - } + memcpy(map, tempMap, MAP_X * MAP_Y * sizeof(bool)); } void drawMap() { for (int x = 0; x < MAP_X; x++) { for (int y = 0; y < MAP_Y; y++) { - int posX = x * CELL_SIZE; - int posY = y * CELL_SIZE; - - Color color; if (map[x][y]) { - color = BLACK; + int posX = x * CELL_SIZE; + int posY = y * CELL_SIZE; + DrawRectangle(posX, posY, CELL_SIZE, CELL_SIZE, BLACK); } - else { - color = RAYWHITE; - } - - DrawRectangle(posX, posY, CELL_SIZE, CELL_SIZE, color); } } } +void drawNet() { + for (int i = 0; i <= MAP_X * CELL_SIZE; i += CELL_SIZE) { + DrawLine(i, 0, i, MAP_Y * CELL_SIZE, GRAY); + DrawLine(i+1, 0, i+1, MAP_Y * CELL_SIZE, GRAY); + } + + for (int i = 0; i <= MAP_Y * CELL_SIZE; i += CELL_SIZE) { + DrawLine(0, i, MAP_X * CELL_SIZE, i, GRAY); + DrawLine(0, i-1, MAP_X * CELL_SIZE, i-1, GRAY); + } +} + void drawBottomBar() { DrawRectangle(0, MAP_Y * CELL_SIZE, MAP_X * CELL_SIZE, BOTTOM_BAR_HEIGHT, BLACKGRAY); @@ -91,21 +94,27 @@ int main() const int screenWidth = MAP_X * CELL_SIZE; const int screenHeight = MAP_Y * CELL_SIZE + BOTTOM_BAR_HEIGHT; + SetConfigFlags(FLAG_VSYNC_HINT); + InitWindow(screenWidth, screenHeight, "Game of Life"); - SetTargetFPS(15); + //SetTargetFPS(60); Vector2 mousePos = { 0 }; int mouseCellX = 0; int mouseCellY = 0; bool editMap = true; + bool netToggle = false; while (!WindowShouldClose()) { if (IsKeyPressed(KEY_SPACE)) { editMap = !editMap; } + if (IsKeyPressed(KEY_N)) { + netToggle = !netToggle; + } if (editMap) { @@ -130,17 +139,22 @@ int main() drawMap(); drawBottomBar(); + if (netToggle) drawNet(); + if (editMap) { Rectangle rec = { - mouseCellX * CELL_SIZE, - mouseCellY * CELL_SIZE, + mouseCellX * FCELL_SIZE, + mouseCellY * FCELL_SIZE, FCELL_SIZE, FCELL_SIZE }; DrawRectangleLinesEx(rec, 2, GREEN); } + + DrawFPS(0, 0); + EndDrawing(); } diff --git a/Game of Life/src/tinyfiledialogs.c b/Game of Life/src/tinyfiledialogs.c new file mode 100644 index 0000000..5614241 --- /dev/null +++ b/Game of Life/src/tinyfiledialogs.c @@ -0,0 +1,8171 @@ +/* SPDX-License-Identifier: Zlib +Copyright (c) 2014 - 2024 Guillaume Vareille http://ysengrin.com + ________________________________________________________________ + | | + | 100% compatible C C++ -> You can rename this .c file as .cpp | + |________________________________________________________________| + +********* TINY FILE DIALOGS OFFICIAL WEBSITE IS ON SOURCEFORGE ********* + _________ + / \ tinyfiledialogs.c v3.18.2 [Jun 8, 2024] zlib licence + |tiny file| Unique code file created [November 9, 2014] + | dialogs | + \____ ___/ http://tinyfiledialogs.sourceforge.net + \| git clone http://git.code.sf.net/p/tinyfiledialogs/code tinyfd + ____________________________________________ + | | + | email: tinyfiledialogs at ysengrin.com | + |____________________________________________| + _________________________________________________________________________________ + | | + | the windows only wchar_t UTF-16 prototypes are at the bottom of the header file | + |_________________________________________________________________________________| + _________________________________________________________ + | | + | on windows: - since v3.6 char is UTF-8 by default | + | - if you want MBCS set tinyfd_winUtf8 to 0 | + | - functions like fopen expect MBCS | + |_________________________________________________________| + +If you like tinyfiledialogs, please upvote my stackoverflow answer +https://stackoverflow.com/a/47651444 + +- License - +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: +1. The origin of this software must not be misrepresented; you must not +claim that you wrote the original software. If you use this software +in a product, an acknowledgment in the product documentation would be +appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be +misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + + __________________________________________ + | ______________________________________ | + | | | | + | | DO NOT USE USER INPUT IN THE DIALOGS | | + | |______________________________________| | + |__________________________________________| +*/ + + +#if defined(__GNUC__) || defined(__clang__) +#ifndef _GNU_SOURCE + #define _GNU_SOURCE /* used only to resolve symbolic links. Can be commented out */ + #ifndef _POSIX_C_SOURCE + #ifdef __FreeBSD__ + #define _POSIX_C_SOURCE 199506L /* 199506L is enough for freebsd for realpath() */ + #elif defined(__illumos__) || defined(__solaris__) + #define _POSIX_C_SOURCE 200112L /* illumos/solaris needs 200112L for realpath() */ + #else + #define _POSIX_C_SOURCE 2 /* to accept POSIX 2 in old ANSI C standards */ + #endif + #endif +#endif +#endif + +#include +#include +#include +#include +#include + +#ifdef _WIN32 + #ifdef __BORLANDC__ + #define _getch getch + #endif + #ifndef _WIN32_WINNT + #define _WIN32_WINNT 0x0500 + #endif + #include + #include + #include + #include + #include + #define TINYFD_NOCCSUNICODE + #define TINYFD_SLASH "\\" +#else + #include + #include + #include /* on old systems try instead */ + #include + #include + #include /* on old systems try instead */ + #define TINYFD_SLASH "/" +#endif /* _WIN32 */ + +#include "tinyfiledialogs.h" + +#define MAX_PATH_OR_CMD 1024 /* _MAX_PATH or MAX_PATH */ + +#ifndef MAX_MULTIPLE_FILES +#define MAX_MULTIPLE_FILES 1024 +#endif +#define LOW_MULTIPLE_FILES 32 + +char tinyfd_version[8] = "3.18.2"; + +/******************************************************************************************************/ +/**************************************** UTF-8 on Windows ********************************************/ +/******************************************************************************************************/ +#ifdef _WIN32 +/* if you want to use UTF-8 ( instead of the UTF-16/wchar_t functions at the end of tinyfiledialogs.h ) +Make sure your code is really prepared for UTF-8 (on windows, functions like fopen() expect MBCS and not UTF-8) */ +int tinyfd_winUtf8 = 1; /* on windows char strings can be 1:UTF-8(default) or 0:MBCS */ +/* for MBCS change this to 0, here or in your code */ +#endif +/******************************************************************************************************/ +/******************************************************************************************************/ +/******************************************************************************************************/ + +int tinyfd_verbose = 0 ; /* on unix: prints the command line calls */ +int tinyfd_silent = 1 ; /* 1 (default) or 0 : on unix, hide errors and warnings from called dialogs */ + +/* Curses dialogs are difficult to use, on windows they are only ascii and uses the unix backslah */ +int tinyfd_allowCursesDialogs = 0 ; /* 0 (default) or 1 */ +int tinyfd_forceConsole = 0 ; /* 0 (default) or 1 */ +/* for unix & windows: 0 (graphic mode) or 1 (console mode). +0: try to use a graphic solution, if it fails then it uses console mode. +1: forces all dialogs into console mode even when the X server is present. + it can use the package dialog or dialog.exe. + on windows it only make sense for console applications */ + +int tinyfd_assumeGraphicDisplay = 0; /* 0 (default) or 1 */ +/* some systems don't set the environment variable DISPLAY even when a graphic display is present. +set this to 1 to tell tinyfiledialogs to assume the existence of a graphic display */ + + +char tinyfd_response[1024]; +/* if you pass "tinyfd_query" as aTitle, +the functions will not display the dialogs +but return 0 for console mode, 1 for graphic mode. +tinyfd_response is then filled with the retain solution. +possible values for tinyfd_response are (all lowercase) +for graphic mode: + windows_wchar windows applescript kdialog zenity zenity3 yad matedialog + shellementary qarma python2-tkinter python3-tkinter python-dbus + perl-dbus gxmessage gmessage xmessage xdialog gdialog dunst +for console mode: + dialog whiptail basicinput no_solution */ + +static int gWarningDisplayed = 0 ; +static char gTitle[]="missing software! (we will try basic console input)"; + +#ifdef _WIN32 +char tinyfd_needs[] = "\ + ___________\n\ +/ \\ \n\ +| tiny file |\n\ +| dialogs |\n\ +\\_____ ____/\n\ + \\|\ +\ntiny file dialogs on Windows needs:\ +\n a graphic display\ +\nor dialog.exe (curses console mode ** Disabled by default **)\ +\nor a console for basic input"; +#else +char tinyfd_needs[] = "\ + ___________\n\ +/ \\ \n\ +| tiny file |\n\ +| dialogs |\n\ +\\_____ ____/\n\ + \\|\ +\ntiny file dialogs on UNIX needs:\ +\n applescript or kdialog or yad or Xdialog\ +\nor zenity (or matedialog or shellementary or qarma)\ +\nor python (2 or 3) + tkinter + python-dbus (optional)\ +\nor dialog (opens console if needed) ** Disabled by default **\ +\nor xterm + bash (opens console for basic input)\ +\nor existing console for basic input."; + +#endif + +#ifdef _MSC_VER +#pragma warning(disable:4996) /* allows usage of strncpy, strcpy, strcat, sprintf, fopen */ +#pragma warning(disable:4100) /* allows usage of strncpy, strcpy, strcat, sprintf, fopen */ +#pragma warning(disable:4706) /* allows usage of strncpy, strcpy, strcat, sprintf, fopen */ +#endif + +static int getenvDISPLAY(void) +{ + return tinyfd_assumeGraphicDisplay || getenv("DISPLAY"); +} + + +static char * getCurDir(void) +{ + static char lCurDir[MAX_PATH_OR_CMD]; + return getcwd(lCurDir, sizeof(lCurDir)); +} + + +static char * getPathWithoutFinalSlash( + char * aoDestination, /* make sure it is allocated, use _MAX_PATH */ + char const * aSource) /* aoDestination and aSource can be the same */ +{ + char const * lTmp ; + if ( aSource ) + { + lTmp = strrchr(aSource, '/'); + if (!lTmp) + { + lTmp = strrchr(aSource, '\\'); + } + if (lTmp) + { + strncpy(aoDestination, aSource, lTmp - aSource ); + aoDestination[lTmp - aSource] = '\0'; + } + else + { + * aoDestination = '\0'; + } + } + else + { + * aoDestination = '\0'; + } + return aoDestination; +} + + +static char * getLastName( + char * aoDestination, /* make sure it is allocated */ + char const * aSource) +{ + /* copy the last name after '/' or '\' */ + char const * lTmp ; + if ( aSource ) + { + lTmp = strrchr(aSource, '/'); + if (!lTmp) + { + lTmp = strrchr(aSource, '\\'); + } + if (lTmp) + { + strcpy(aoDestination, lTmp + 1); + } + else + { + strcpy(aoDestination, aSource); + } + } + else + { + * aoDestination = '\0'; + } + return aoDestination; +} + + +static void ensureFinalSlash( char * aioString ) +{ + if ( aioString && strlen( aioString ) ) + { + char * lastcar = aioString + strlen( aioString ) - 1 ; + if ( strncmp( lastcar , TINYFD_SLASH , 1 ) ) + { + strcat( lastcar , TINYFD_SLASH ) ; + } + } +} + + +static void Hex2RGB( char const aHexRGB[8] , unsigned char aoResultRGB[3] ) +{ + char lColorChannel[8] ; + if ( aoResultRGB ) + { + if ( aHexRGB ) + { + strcpy(lColorChannel, aHexRGB ) ; + aoResultRGB[2] = (unsigned char)strtoul(lColorChannel+5,NULL,16); + lColorChannel[5] = '\0'; + aoResultRGB[1] = (unsigned char)strtoul(lColorChannel+3,NULL,16); + lColorChannel[3] = '\0'; + aoResultRGB[0] = (unsigned char)strtoul(lColorChannel+1,NULL,16); +/* printf("%d %d %d\n", aoResultRGB[0], aoResultRGB[1], aoResultRGB[2]); */ + } + else + { + aoResultRGB[0]=0; + aoResultRGB[1]=0; + aoResultRGB[2]=0; + } + } +} + +static void RGB2Hex( unsigned char const aRGB[3], char aoResultHexRGB[8] ) +{ + if ( aoResultHexRGB ) + { + if ( aRGB ) + { +#if (defined(__cplusplus ) && __cplusplus >= 201103L) || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__clang__) + sprintf(aoResultHexRGB, "#%02hhx%02hhx%02hhx", aRGB[0], aRGB[1], aRGB[2]); +#else + sprintf(aoResultHexRGB, "#%02hx%02hx%02hx", aRGB[0], aRGB[1], aRGB[2]); +#endif + /*printf("aoResultHexRGB %s\n", aoResultHexRGB);*/ + } + else + { + aoResultHexRGB[0]=0; + aoResultHexRGB[1]=0; + aoResultHexRGB[2]=0; + } + } +} + + +void tfd_replaceSubStr( char const * aSource, char const * aOldSubStr, + char const * aNewSubStr, char * aoDestination ) +{ + char const * pOccurence ; + char const * p ; + char const * lNewSubStr = "" ; + size_t lOldSubLen = strlen( aOldSubStr ) ; + + if ( ! aSource ) + { + * aoDestination = '\0' ; + return ; + } + if ( ! aOldSubStr ) + { + strcpy( aoDestination , aSource ) ; + return ; + } + if ( aNewSubStr ) + { + lNewSubStr = aNewSubStr ; + } + p = aSource ; + * aoDestination = '\0' ; + while ( ( pOccurence = strstr( p , aOldSubStr ) ) != NULL ) + { + strncat( aoDestination , p , pOccurence - p ) ; + strcat( aoDestination , lNewSubStr ) ; + p = pOccurence + lOldSubLen ; + } + strcat( aoDestination , p ) ; +} + + +static int filenameValid( char const * aFileNameWithoutPath ) +{ + if ( ! aFileNameWithoutPath + || ! strlen(aFileNameWithoutPath) + || strpbrk(aFileNameWithoutPath , "\\/:*?\"<>|") ) + { + return 0 ; + } + return 1 ; +} + +#ifndef _WIN32 + +static int fileExists( char const * aFilePathAndName ) +{ + FILE * lIn ; + if ( ! aFilePathAndName || ! strlen(aFilePathAndName) ) + { + return 0 ; + } + lIn = fopen( aFilePathAndName , "r" ) ; + if ( ! lIn ) + { + return 0 ; + } + fclose( lIn ) ; + return 1 ; +} + +#endif + + +static void wipefile(char const * aFilename) +{ + int i; + struct stat st; + FILE * lIn; + + if (stat(aFilename, &st) == 0) + { + if ((lIn = fopen(aFilename, "w"))) + { + for (i = 0; i < st.st_size; i++) + { + fputc('A', lIn); + } + fclose(lIn); + } + } +} + + +int tfd_quoteDetected(char const * aString) +{ + char const * p; + + if (!aString) return 0; + + p = aString; + if ( strchr(p, '\'')) + { + return 1; + } + + if ( strchr(p, '\"')) + { + return 1; + } + + if ( strchr(p, '`')) + { + return 1; + } + + p = aString; + while ((p = strchr(p, '$'))) + { + p ++ ; + if ( ( * p == '(' ) || ( * p == '_' ) || isalpha( * p) ) return 1 ; + } + + return 0; +} + + +char const * tinyfd_getGlobalChar(char const * aCharVariableName) /* to be called from C# (you don't need this in C or C++) */ +{ + if (!aCharVariableName || !strlen(aCharVariableName)) return NULL; + else if (!strcmp(aCharVariableName, "tinyfd_version")) return tinyfd_version; + else if (!strcmp(aCharVariableName, "tinyfd_needs")) return tinyfd_needs; + else if (!strcmp(aCharVariableName, "tinyfd_response")) return tinyfd_response; + else return NULL ; +} + + +int tinyfd_getGlobalInt(char const * aIntVariableName) /* to be called from C# (you don't need this in C or C++) */ +{ + if ( !aIntVariableName || !strlen(aIntVariableName) ) return -1 ; + else if ( !strcmp(aIntVariableName, "tinyfd_verbose") ) return tinyfd_verbose ; + else if ( !strcmp(aIntVariableName, "tinyfd_silent") ) return tinyfd_silent ; + else if ( !strcmp(aIntVariableName, "tinyfd_allowCursesDialogs") ) return tinyfd_allowCursesDialogs ; + else if ( !strcmp(aIntVariableName, "tinyfd_forceConsole") ) return tinyfd_forceConsole ; + else if ( !strcmp(aIntVariableName, "tinyfd_assumeGraphicDisplay") ) return tinyfd_assumeGraphicDisplay ; +#ifdef _WIN32 + else if ( !strcmp(aIntVariableName, "tinyfd_winUtf8") ) return tinyfd_winUtf8 ; +#endif + else return -1; +} + + +int tinyfd_setGlobalInt(char const * aIntVariableName, int aValue) /* to be called from C# (you don't need this in C or C++) */ +{ + if (!aIntVariableName || !strlen(aIntVariableName)) return -1 ; + else if (!strcmp(aIntVariableName, "tinyfd_verbose")) { tinyfd_verbose = aValue; return tinyfd_verbose; } + else if (!strcmp(aIntVariableName, "tinyfd_silent")) { tinyfd_silent = aValue; return tinyfd_silent; } + else if (!strcmp(aIntVariableName, "tinyfd_allowCursesDialogs")) { tinyfd_allowCursesDialogs = aValue; return tinyfd_allowCursesDialogs; } + else if (!strcmp(aIntVariableName, "tinyfd_forceConsole")) { tinyfd_forceConsole = aValue; return tinyfd_forceConsole; } + else if (!strcmp(aIntVariableName, "tinyfd_assumeGraphicDisplay")) { tinyfd_assumeGraphicDisplay = aValue; return tinyfd_assumeGraphicDisplay; } +#ifdef _WIN32 + else if (!strcmp(aIntVariableName, "tinyfd_winUtf8")) { tinyfd_winUtf8 = aValue; return tinyfd_winUtf8; } +#endif + else return -1; +} + + +#ifdef _WIN32 +static int powershellPresent(void) +{ /*only on vista and above (or installed on xp)*/ + static int lPowershellPresent = -1; + char lBuff[MAX_PATH_OR_CMD]; + FILE* lIn; + char const* lString = "powershell.exe"; + + if (lPowershellPresent < 0) + { + if (!(lIn = _popen("where powershell.exe", "r"))) + { + lPowershellPresent = 0; + return 0; + } + while (fgets(lBuff, sizeof(lBuff), lIn) != NULL) + { + } + _pclose(lIn); + if (lBuff[strlen(lBuff) - 1] == '\n') + { + lBuff[strlen(lBuff) - 1] = '\0'; + } + if (strcmp(lBuff + strlen(lBuff) - strlen(lString), lString)) + { + lPowershellPresent = 0; + } + else + { + lPowershellPresent = 1; + } + } + return lPowershellPresent; +} + +static int windowsVersion(void) +{ +#if !defined(__MINGW32__) || defined(__MINGW64_VERSION_MAJOR) + typedef LONG NTSTATUS ; + typedef NTSTATUS(WINAPI* RtlGetVersionPtr)(PRTL_OSVERSIONINFOW); + HMODULE hMod; + RtlGetVersionPtr lFxPtr; + RTL_OSVERSIONINFOW lRovi = { 0 }; + + hMod = GetModuleHandleW(L"ntdll.dll"); + if (hMod) { + lFxPtr = (RtlGetVersionPtr)GetProcAddress(hMod, "RtlGetVersion"); + if (lFxPtr) + { + lRovi.dwOSVersionInfoSize = sizeof(lRovi); + if (!lFxPtr(&lRovi)) + { + return lRovi.dwMajorVersion; + } + } + } +#endif + if (powershellPresent()) return 6; /*minimum is vista or installed on xp*/ + return 0; +} + + +static void replaceChr(char * aString, char aOldChr, char aNewChr) +{ + char * p; + + if (!aString) return; + if (aOldChr == aNewChr) return; + + p = aString; + while ((p = strchr(p, aOldChr))) + { + *p = aNewChr; + p++; + } + return; +} + + +#if !defined(WC_ERR_INVALID_CHARS) +/* undefined prior to Vista, so not yet in MINGW header file */ +#define WC_ERR_INVALID_CHARS 0x00000000 /* 0x00000080 for MINGW maybe ? */ +#endif + +static int sizeUtf16From8(char const * aUtf8string) +{ + return MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, + aUtf8string, -1, NULL, 0); +} + + +static int sizeUtf16FromMbcs(char const * aMbcsString) +{ + return MultiByteToWideChar(CP_ACP, MB_ERR_INVALID_CHARS, + aMbcsString, -1, NULL, 0); +} + + +static int sizeUtf8(wchar_t const * aUtf16string) +{ + return WideCharToMultiByte(CP_UTF8, WC_ERR_INVALID_CHARS, + aUtf16string, -1, NULL, 0, NULL, NULL); +} + + +static int sizeMbcs(wchar_t const * aMbcsString) +{ + int lRes = WideCharToMultiByte(CP_ACP, 0, + aMbcsString, -1, NULL, 0, NULL, NULL); + /* DWORD licic = GetLastError(); */ + return lRes; +} + + +wchar_t* tinyfd_mbcsTo16(char const* aMbcsString) +{ + static wchar_t* lMbcsString = NULL; + int lSize; + + free(lMbcsString); + if (!aMbcsString) { lMbcsString = NULL; return NULL; } + lSize = sizeUtf16FromMbcs(aMbcsString); + if (lSize) + { + lMbcsString = (wchar_t*) malloc(lSize * sizeof(wchar_t)); + lSize = MultiByteToWideChar(CP_ACP, 0, aMbcsString, -1, lMbcsString, lSize); + } + else wcscpy(lMbcsString, L""); + return lMbcsString; +} + + +wchar_t * tinyfd_utf8to16(char const * aUtf8string) +{ + static wchar_t * lUtf16string = NULL; + int lSize; + + free(lUtf16string); + if (!aUtf8string) {lUtf16string = NULL; return NULL;} + lSize = sizeUtf16From8(aUtf8string); + if (lSize) + { + lUtf16string = (wchar_t*) malloc(lSize * sizeof(wchar_t)); + lSize = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, + aUtf8string, -1, lUtf16string, lSize); + return lUtf16string; + } + else + { + /* let's try mbcs anyway */ + lUtf16string = NULL; + return tinyfd_mbcsTo16(aUtf8string); + } +} + + +char * tinyfd_utf16toMbcs(wchar_t const * aUtf16string) +{ + static char * lMbcsString = NULL; + int lSize; + + free(lMbcsString); + if (!aUtf16string) { lMbcsString = NULL; return NULL; } + lSize = sizeMbcs(aUtf16string); + if (lSize) + { + lMbcsString = (char*) malloc(lSize); + lSize = WideCharToMultiByte(CP_ACP, 0, aUtf16string, -1, lMbcsString, lSize, NULL, NULL); + } + else strcpy(lMbcsString, ""); + return lMbcsString; +} + + +char * tinyfd_utf8toMbcs(char const * aUtf8string) +{ + wchar_t const * lUtf16string; + lUtf16string = tinyfd_utf8to16(aUtf8string); + return tinyfd_utf16toMbcs(lUtf16string); +} + + +char * tinyfd_utf16to8(wchar_t const * aUtf16string) +{ + static char * lUtf8string = NULL; + int lSize; + + free(lUtf8string); + if (!aUtf16string) { lUtf8string = NULL; return NULL; } + lSize = sizeUtf8(aUtf16string); + if (lSize) + { + lUtf8string = (char*) malloc(lSize); + lSize = WideCharToMultiByte(CP_UTF8, WC_ERR_INVALID_CHARS, aUtf16string, -1, lUtf8string, lSize, NULL, NULL); + } + else strcpy(lUtf8string, ""); + return lUtf8string; +} + + +char * tinyfd_mbcsTo8(char const * aMbcsString) +{ + wchar_t const * lUtf16string; + lUtf16string = tinyfd_mbcsTo16(aMbcsString); + return tinyfd_utf16to8(lUtf16string); +} + + +void tinyfd_beep(void) +{ + if (windowsVersion() > 5) Beep(440, 300); + else MessageBeep(MB_OK); +} + + +static void wipefileW(wchar_t const * aFilename) +{ + int i; + FILE * lIn; +#if (defined(__MINGW32_MAJOR_VERSION) && !defined(__MINGW64__) && (__MINGW32_MAJOR_VERSION <= 3)) || defined(__BORLANDC__) || defined(__WATCOMC__) + struct _stat st; + if (_wstat(aFilename, &st) == 0) +#else + struct __stat64 st; + if (_wstat64(aFilename, &st) == 0) +#endif + { + if ((lIn = _wfopen(aFilename, L"w"))) + { + for (i = 0; i < st.st_size; i++) + { + fputc('A', lIn); + } + fclose(lIn); + } + } +} + + +static wchar_t * getPathWithoutFinalSlashW( + wchar_t * aoDestination, /* make sure it is allocated, use _MAX_PATH */ + wchar_t const * aSource) /* aoDestination and aSource can be the same */ +{ + wchar_t const * lTmp; + if (aSource) + { + lTmp = wcsrchr(aSource, L'/'); + if (!lTmp) + { + lTmp = wcsrchr(aSource, L'\\'); + } + if (lTmp) + { + wcsncpy(aoDestination, aSource, lTmp - aSource); + aoDestination[lTmp - aSource] = L'\0'; + } + else + { + *aoDestination = L'\0'; + } + } + else + { + *aoDestination = L'\0'; + } + return aoDestination; +} + + +static wchar_t * getLastNameW( + wchar_t * aoDestination, /* make sure it is allocated */ + wchar_t const * aSource) +{ + /* copy the last name after '/' or '\' */ + wchar_t const * lTmp; + if (aSource) + { + lTmp = wcsrchr(aSource, L'/'); + if (!lTmp) + { + lTmp = wcsrchr(aSource, L'\\'); + } + if (lTmp) + { + wcscpy(aoDestination, lTmp + 1); + } + else + { + wcscpy(aoDestination, aSource); + } + } + else + { + *aoDestination = L'\0'; + } + return aoDestination; +} + + +static void Hex2RGBW(wchar_t const aHexRGB[8], unsigned char aoResultRGB[3]) +{ + wchar_t lColorChannel[8]; + if (aoResultRGB) + { + if (aHexRGB) + { + wcscpy(lColorChannel, aHexRGB); + aoResultRGB[2] = (unsigned char)wcstoul(lColorChannel + 5, NULL, 16); + lColorChannel[5] = '\0'; + aoResultRGB[1] = (unsigned char)wcstoul(lColorChannel + 3, NULL, 16); + lColorChannel[3] = '\0'; + aoResultRGB[0] = (unsigned char)wcstoul(lColorChannel + 1, NULL, 16); + /* printf("%d %d %d\n", aoResultRGB[0], aoResultRGB[1], aoResultRGB[2]); */ + } + else + { + aoResultRGB[0] = 0; + aoResultRGB[1] = 0; + aoResultRGB[2] = 0; + } + } +} + + +static void RGB2HexW( unsigned char const aRGB[3], wchar_t aoResultHexRGB[8]) +{ +#if (defined(__cplusplus ) && __cplusplus >= 201103L) || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__clang__) + wchar_t const * const lPrintFormat = L"#%02hhx%02hhx%02hhx"; +#else + wchar_t const * const lPrintFormat = L"#%02hx%02hx%02hx"; +#endif + + if (aoResultHexRGB) + { + if (aRGB) + { + /* wprintf(L"aoResultHexRGB %s\n", aoResultHexRGB); */ +#if !defined(__BORLANDC__) && !defined(__TINYC__) && !(defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)) + swprintf(aoResultHexRGB, 8, lPrintFormat, aRGB[0], aRGB[1], aRGB[2]); +#else + swprintf(aoResultHexRGB, lPrintFormat, aRGB[0], aRGB[1], aRGB[2]); +#endif + + } + else + { + aoResultHexRGB[0] = 0; + aoResultHexRGB[1] = 0; + aoResultHexRGB[2] = 0; + } + } +} + + +static int dirExists(char const * aDirPath) +{ +#if (defined(__MINGW32_MAJOR_VERSION) && !defined(__MINGW64__) && (__MINGW32_MAJOR_VERSION <= 3)) || defined(__BORLANDC__) || defined(__WATCOMC__) + struct _stat lInfo; +#else + struct __stat64 lInfo; +#endif + wchar_t * lTmpWChar; + int lStatRet; + size_t lDirLen; + + if (!aDirPath) + return 0; + lDirLen = strlen(aDirPath); + if (!lDirLen) + return 1; + if ( (lDirLen == 2) && (aDirPath[1] == ':') ) + return 1; + + if (tinyfd_winUtf8) + { + lTmpWChar = tinyfd_utf8to16(aDirPath); +#if (defined(__MINGW32_MAJOR_VERSION) && !defined(__MINGW64__) && (__MINGW32_MAJOR_VERSION <= 3)) || defined(__BORLANDC__) || defined(__WATCOMC__) + lStatRet = _wstat(lTmpWChar, &lInfo); +#else + lStatRet = _wstat64(lTmpWChar, &lInfo); +#endif + if (lStatRet != 0) + return 0; + else if (lInfo.st_mode & S_IFDIR) + return 1; + else + return 0; + } +#if (defined(__MINGW32_MAJOR_VERSION) && !defined(__MINGW64__) && (__MINGW32_MAJOR_VERSION <= 3)) || defined(__BORLANDC__) || defined(__WATCOMC__) + else if (_stat(aDirPath, &lInfo) != 0) +#else + else if (_stat64(aDirPath, &lInfo) != 0) +#endif + return 0; + else if (lInfo.st_mode & S_IFDIR) + return 1; + else + return 0; +} + + +static int fileExists(char const * aFilePathAndName) +{ +#if (defined(__MINGW32_MAJOR_VERSION) && !defined(__MINGW64__) && (__MINGW32_MAJOR_VERSION <= 3)) || defined(__BORLANDC__) || defined(__WATCOMC__) + struct _stat lInfo; +#else + struct __stat64 lInfo; +#endif + wchar_t * lTmpWChar; + int lStatRet; + FILE * lIn; + + if (!aFilePathAndName || !strlen(aFilePathAndName)) + { + return 0; + } + + if (tinyfd_winUtf8) + { + lTmpWChar = tinyfd_utf8to16(aFilePathAndName); +#if (defined(__MINGW32_MAJOR_VERSION) && !defined(__MINGW64__) && (__MINGW32_MAJOR_VERSION <= 3)) || defined(__BORLANDC__) || defined(__WATCOMC__) + lStatRet = _wstat(lTmpWChar, &lInfo); +#else + lStatRet = _wstat64(lTmpWChar, &lInfo); +#endif + + if (lStatRet != 0) + return 0; + else if (lInfo.st_mode & _S_IFREG) + return 1; + else + return 0; + } + else + { + lIn = fopen(aFilePathAndName, "r"); + if (!lIn) + { + return 0; + } + fclose(lIn); + return 1; + } +} + +static void replaceWchar(wchar_t * aString, + wchar_t aOldChr, + wchar_t aNewChr) +{ + wchar_t * p; + + if (!aString) + { + return ; + } + + if (aOldChr == aNewChr) + { + return ; + } + + p = aString; + while ((p = wcsrchr(p, aOldChr))) + { + *p = aNewChr; +#ifdef TINYFD_NOCCSUNICODE + p++; +#endif + p++; + } + return ; +} + + +static int quoteDetectedW(wchar_t const * aString) +{ + wchar_t const * p; + + if (!aString) return 0; + + p = aString; + while ((p = wcsrchr(p, L'\''))) + { + return 1; + } + + p = aString; + while ((p = wcsrchr(p, L'\"'))) + { + return 1; + } + + return 0; +} + +#endif /* _WIN32 */ + +/* source and destination can be the same or ovelap*/ +static char * ensureFilesExist(char * aDestination, + char const * aSourcePathsAndNames) +{ + char * lDestination = aDestination; + char const * p; + char const * p2; + size_t lLen; + + if (!aSourcePathsAndNames) + { + return NULL; + } + lLen = strlen(aSourcePathsAndNames); + if (!lLen) + { + return NULL; + } + + p = aSourcePathsAndNames; + while ((p2 = strchr(p, '|')) != NULL) + { + lLen = p2 - p; + memmove(lDestination, p, lLen); + lDestination[lLen] = '\0'; + if (fileExists(lDestination)) + { + lDestination += lLen; + *lDestination = '|'; + lDestination++; + } + p = p2 + 1; + } + if (fileExists(p)) + { + lLen = strlen(p); + memmove(lDestination, p, lLen); + lDestination[lLen] = '\0'; + } + else + { + *(lDestination - 1) = '\0'; + } + return aDestination; +} + +#ifdef _WIN32 + +static int __stdcall EnumThreadWndProc(HWND hwnd, LPARAM lParam) +{ + wchar_t lTitleName[MAX_PATH]; + wchar_t const* lDialogTitle = (wchar_t const *) lParam; + + GetWindowTextW(hwnd, lTitleName, MAX_PATH); + /* wprintf(L"lTitleName %ls \n", lTitleName); */ + + if (wcscmp(lDialogTitle, lTitleName) == 0) + { + SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); + return 0; + } + return 1; +} + + +static void hiddenConsoleW(wchar_t const * aString, wchar_t const * aDialogTitle, int aInFront) +{ + STARTUPINFOW StartupInfo; + PROCESS_INFORMATION ProcessInfo; + + if (!aString || !wcslen(aString) ) return; + + memset(&StartupInfo, 0, sizeof(StartupInfo)); + StartupInfo.cb = sizeof(STARTUPINFOW); + StartupInfo.dwFlags = STARTF_USESHOWWINDOW; + StartupInfo.wShowWindow = SW_HIDE; + + if (!CreateProcessW(NULL, (LPWSTR)aString, NULL, NULL, FALSE, + CREATE_NEW_CONSOLE, NULL, NULL, + &StartupInfo, &ProcessInfo)) + { + return; /* GetLastError(); */ + } + + WaitForInputIdle(ProcessInfo.hProcess, INFINITE); + if (aInFront) + { + while (EnumWindows(EnumThreadWndProc, (LPARAM)aDialogTitle)) {} + } + WaitForSingleObject(ProcessInfo.hProcess, INFINITE); + CloseHandle(ProcessInfo.hThread); + CloseHandle(ProcessInfo.hProcess); +} + + +int tinyfd_messageBoxW( + wchar_t const * aTitle, /* NULL or "" */ + wchar_t const * aMessage, /* NULL or "" may contain \n and \t */ + wchar_t const * aDialogType, /* "ok" "okcancel" "yesno" "yesnocancel" */ + wchar_t const * aIconType, /* "info" "warning" "error" "question" */ + int aDefaultButton) /* 0 for cancel/no , 1 for ok/yes , 2 for no in yesnocancel */ +{ + int lBoxReturnValue; + UINT aCode; + + if (aTitle&&!wcscmp(aTitle, L"tinyfd_query")){ strcpy(tinyfd_response, "windows_wchar"); return 1; } + + /*if (quoteDetectedW(aTitle)) return tinyfd_messageBoxW(L"INVALID TITLE WITH QUOTES", aMessage, aDialogType, aIconType, aDefaultButton); + if (quoteDetectedW(aMessage)) return tinyfd_messageBoxW(aTitle, L"INVALID MESSAGE WITH QUOTES", aDialogType, aIconType, aDefaultButton);*/ + + if (aIconType && !wcscmp(L"warning", aIconType)) + { + aCode = MB_ICONWARNING; + } + else if (aIconType && !wcscmp(L"error", aIconType)) + { + aCode = MB_ICONERROR; + } + else if (aIconType && !wcscmp(L"question", aIconType)) + { + aCode = MB_ICONQUESTION; + } + else + { + aCode = MB_ICONINFORMATION; + } + + if (aDialogType && !wcscmp(L"okcancel", aDialogType)) + { + aCode += MB_OKCANCEL; + if (!aDefaultButton) + { + aCode += MB_DEFBUTTON2; + } + } + else if (aDialogType && !wcscmp(L"yesno", aDialogType)) + { + aCode += MB_YESNO; + if (!aDefaultButton) + { + aCode += MB_DEFBUTTON2; + } + } + else if (aDialogType && !wcscmp(L"yesnocancel", aDialogType)) + { + aCode += MB_YESNOCANCEL; + if (aDefaultButton == 1) + { + aCode += MB_DEFBUTTON1; + } + else if (aDefaultButton == 2) + { + aCode += MB_DEFBUTTON2; + } + else + { + aCode += MB_DEFBUTTON3; + } + } + else + { + aCode += MB_OK; + } + + aCode += MB_TOPMOST; + + lBoxReturnValue = MessageBoxW(GetForegroundWindow(), aMessage, aTitle, aCode); + + if ( (lBoxReturnValue == IDNO) && (aDialogType && !wcscmp(L"yesnocancel", aDialogType)) ) + { + return 2; + } + else if ( (lBoxReturnValue == IDOK) || (lBoxReturnValue == IDYES) ) + { + return 1; + } + else + { + return 0; + } +} + + +/* int tinyfd_notifyPopupW_ORIGINAL( + wchar_t const * aTitle, + wchar_t const * aMessage, + wchar_t const * aIconType) +{ + wchar_t * lDialogString; + size_t lTitleLen; + size_t lMessageLen; + size_t lDialogStringLen; + + if (aTitle && !wcscmp(aTitle, L"tinyfd_query")) { strcpy(tinyfd_response, "windows_wchar"); return 1; } + + if (quoteDetectedW(aTitle)) return tinyfd_notifyPopupW(L"INVALID TITLE WITH QUOTES", aMessage, aIconType); + if (quoteDetectedW(aMessage)) return tinyfd_notifyPopupW(aTitle, L"INVALID MESSAGE WITH QUOTES", aIconType); + + lTitleLen = aTitle ? wcslen(aTitle) : 0; + lMessageLen = aMessage ? wcslen(aMessage) : 0; + lDialogStringLen = 3 * MAX_PATH_OR_CMD + lTitleLen + lMessageLen; + lDialogString = (wchar_t *) malloc(2 * lDialogStringLen); + if (!lDialogString) return 0; + + wcscpy(lDialogString, L"powershell.exe -executionpolicy bypass -command \"\ +function Show-BalloonTip {\ +[cmdletbinding()] \ +param( \ +[string]$Title = ' ', \ +[string]$Message = ' ', \ +[ValidateSet('info', 'warning', 'error')] \ +[string]$IconType = 'info');\ +[system.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms') | Out-Null ; \ +$balloon = New-Object System.Windows.Forms.NotifyIcon ; \ +$path = Get-Process -id $pid | Select-Object -ExpandProperty Path ; \ +$icon = [System.Drawing.Icon]::ExtractAssociatedIcon($path) ;"); + + wcscat(lDialogString, L"\ +$balloon.Icon = $icon ; \ +$balloon.BalloonTipIcon = $IconType ; \ +$balloon.BalloonTipText = $Message ; \ +$balloon.BalloonTipTitle = $Title ; \ +$balloon.Text = 'tinyfiledialogs' ; \ +$balloon.Visible = $true ; \ +$balloon.ShowBalloonTip(5000)};\ +Show-BalloonTip"); + + if (aTitle && wcslen(aTitle)) + { + wcscat(lDialogString, L" -Title '"); + wcscat(lDialogString, aTitle); + wcscat(lDialogString, L"'"); + } + if (aMessage && wcslen(aMessage)) + { + wcscat(lDialogString, L" -Message '"); + wcscat(lDialogString, aMessage); + wcscat(lDialogString, L"'"); + } + if (aMessage && wcslen(aIconType)) + { + wcscat(lDialogString, L" -IconType '"); + wcscat(lDialogString, aIconType); + wcscat(lDialogString, L"'"); + } + wcscat(lDialogString, L"\""); + + hiddenConsoleW(lDialogString, aTitle, 0); + free(lDialogString); + return 1; +}*/ + + +/* return has only meaning for tinyfd_query */ +int tinyfd_notifyPopupW( + wchar_t const* aTitle, /* NULL or L"" */ + wchar_t const* aMessage, /* NULL or L"" may contain \n \t */ + wchar_t const* aIconType) /* L"info" L"warning" L"error" */ +{ + wchar_t* lDialogString; + size_t lTitleLen; + size_t lMessageLen; + size_t lDialogStringLen; + + FILE* lIn; + + if (aTitle && !wcscmp(aTitle, L"tinyfd_query")) { strcpy(tinyfd_response, "windows_wchar"); return 1; } + + if (quoteDetectedW(aTitle)) return tinyfd_notifyPopupW(L"INVALID TITLE WITH QUOTES", aMessage, aIconType); + if (quoteDetectedW(aMessage)) return tinyfd_notifyPopupW(aTitle, L"INVALID MESSAGE WITH QUOTES", aIconType); + + lTitleLen = aTitle ? wcslen(aTitle) : 0; + lMessageLen = aMessage ? wcslen(aMessage) : 0; + lDialogStringLen = 3 * MAX_PATH_OR_CMD + lTitleLen + lMessageLen; + lDialogString = (wchar_t*)malloc(2 * lDialogStringLen); + if (!lDialogString) return 0; + + swprintf(lDialogString, +#if !defined(__BORLANDC__) && !defined(__TINYC__) && !(defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)) + lDialogStringLen, +#endif + L"%ls\\tinyfd.hta", _wgetenv(L"TEMP")); + + lIn = _wfopen(lDialogString, L"w"); + if (!lIn) + { + free(lDialogString); + return 0; + } + + wcscpy(lDialogString, L"\n\ +\n\ +\n\ +"); + if ( aTitle && wcslen(aTitle) ) wcscat(lDialogString, aTitle); + wcscat(lDialogString, L"\n\ +\n\ +\n\ +\n\ +\n\ +\n\ +\n\ +
\n"); + + wcscat(lDialogString, aMessage ? aMessage : L""); + + wcscat(lDialogString, L"\n\ +\n\ +\n\ +"); + + fputws(lDialogString, lIn); + fclose(lIn); + + if (aTitle && wcslen(aTitle)) + { + wcscat(lDialogString, L" -Title '"); + wcscat(lDialogString, aTitle); + wcscat(lDialogString, L"'"); + } + if (aMessage && wcslen(aMessage)) + { + wcscat(lDialogString, L" -Message '"); + wcscat(lDialogString, aMessage); + wcscat(lDialogString, L"'"); + } + if (aMessage && wcslen(aIconType)) + { + wcscat(lDialogString, L" -IconType '"); + wcscat(lDialogString, aIconType); + wcscat(lDialogString, L"'"); + } + wcscat(lDialogString, L"\""); + + /* wprintf ( L"lDialogString: %ls\n" , lDialogString ) ; */ + wcscpy(lDialogString, + L"cmd.exe /c mshta.exe \"%TEMP%\\tinyfd.hta\""); + + hiddenConsoleW(lDialogString, aTitle, 0); + free(lDialogString); + return 1; +} + + +wchar_t * tinyfd_inputBoxW( + wchar_t const * aTitle, /* NULL or L"" */ + wchar_t const * aMessage, /* NULL or L"" (\n and \t have no effect) */ + wchar_t const * aDefaultInput) /* L"" , if NULL it's a passwordBox */ +{ + static wchar_t lBuff[MAX_PATH_OR_CMD]; + wchar_t * lDialogString; + FILE * lIn; + FILE * lFile; + int lResult; + size_t lTitleLen; + size_t lMessageLen; + size_t lDialogStringLen; + + if (aTitle&&!wcscmp(aTitle, L"tinyfd_query")){ strcpy(tinyfd_response, "windows_wchar"); return (wchar_t *)1; } + + if (quoteDetectedW(aTitle)) return tinyfd_inputBoxW(L"INVALID TITLE WITH QUOTES", aMessage, aDefaultInput); + if (quoteDetectedW(aMessage)) return tinyfd_inputBoxW(aTitle, L"INVALID MESSAGE WITH QUOTES", aDefaultInput); + if (quoteDetectedW(aDefaultInput)) return tinyfd_inputBoxW(aTitle, aMessage, L"INVALID DEFAULT_INPUT WITH QUOTES: use the GRAVE ACCENT \\x60 instead."); + + lTitleLen = aTitle ? wcslen(aTitle) : 0 ; + lMessageLen = aMessage ? wcslen(aMessage) : 0 ; + lDialogStringLen = 3 * MAX_PATH_OR_CMD + lTitleLen + lMessageLen; + lDialogString = (wchar_t *) malloc(2 * lDialogStringLen); + + if (aDefaultInput) + { + swprintf(lDialogString, +#if !defined(__BORLANDC__) && !defined(__TINYC__) && !(defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)) + lDialogStringLen, +#endif + L"%ls\\tinyfd.vbs", _wgetenv(L"TEMP")); + } + else + { + swprintf(lDialogString, +#if !defined(__BORLANDC__) && !defined(__TINYC__) && !(defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)) + lDialogStringLen, +#endif + L"%ls\\tinyfd.hta", _wgetenv(L"TEMP")); + } + lIn = _wfopen(lDialogString, L"w"); + if (!lIn) + { + free(lDialogString); + return NULL; + } + + if ( aDefaultInput ) + { + wcscpy(lDialogString, L"Dim result:result=InputBox(\""); + if (aMessage && wcslen(aMessage)) + { + wcscpy(lBuff, aMessage); + replaceWchar(lBuff, L'\n', L' '); + wcscat(lDialogString, lBuff); + } + wcscat(lDialogString, L"\",\""); + if (aTitle) wcscat(lDialogString, aTitle); + wcscat(lDialogString, L"\",\""); + + if (aDefaultInput && wcslen(aDefaultInput)) + { + wcscpy(lBuff, aDefaultInput); + replaceWchar(lBuff, L'\n', L' '); + wcscat(lDialogString, lBuff); + } + wcscat(lDialogString, L"\"):If IsEmpty(result) then:WScript.Echo 0"); + wcscat(lDialogString, L":Else: WScript.Echo \"1\" & result : End If"); + } + else + { + wcscpy(lDialogString, L"\n\ +\n\ +\n\ +"); + if (aTitle) wcscat(lDialogString, aTitle); + wcscat(lDialogString, L"\n\ +\n\ +\n\ +\n\ +\n\ +\n\ +\n\ +\n\ +\n\ +\n\ +\n\ +
\n"); + + wcscat(lDialogString, aMessage ? aMessage : L""); + + wcscat(lDialogString, L"\n\ +\n\ +\n\ +\n\ +
\n\ +

\n\ +\n\ +
\n\ +
\n"); + + wcscat(lDialogString, L"\n\ +\n\ +\n\ +\n\ +
\n\ +
\n\ +
\n\ +\n\ +\n\ +" ) ; + } + fputws(lDialogString, lIn); + fclose(lIn); + + if (aDefaultInput) + { + swprintf(lDialogString, +#if !defined(__BORLANDC__) && !defined(__TINYC__) && !(defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)) + lDialogStringLen, +#endif + L"%ls\\tinyfd.txt",_wgetenv(L"TEMP")); + +#ifdef TINYFD_NOCCSUNICODE + lFile = _wfopen(lDialogString, L"w"); + fputc(0xFF, lFile); + fputc(0xFE, lFile); +#else + lFile = _wfopen(lDialogString, L"wt, ccs=UNICODE"); /*or ccs=UTF-16LE*/ +#endif + fclose(lFile); + + wcscpy(lDialogString, L"cmd.exe /c cscript.exe //U //Nologo "); + wcscat(lDialogString, L"\"%TEMP%\\tinyfd.vbs\" "); + wcscat(lDialogString, L">> \"%TEMP%\\tinyfd.txt\""); + } + else + { + wcscpy(lDialogString, + L"cmd.exe /c mshta.exe \"%TEMP%\\tinyfd.hta\""); + } + + /* wprintf ( "lDialogString: %ls\n" , lDialogString ) ; */ + + hiddenConsoleW(lDialogString, aTitle, 1); + + swprintf(lDialogString, +#if !defined(__BORLANDC__) && !defined(__TINYC__) && !(defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)) + lDialogStringLen, +#endif + L"%ls\\tinyfd.txt", _wgetenv(L"TEMP")); + /* wprintf(L"lDialogString: %ls\n", lDialogString); */ +#ifdef TINYFD_NOCCSUNICODE + if (!(lIn = _wfopen(lDialogString, L"r"))) +#else + if (!(lIn = _wfopen(lDialogString, L"rt, ccs=UNICODE"))) /*or ccs=UTF-16LE*/ +#endif + { + _wremove(lDialogString); + free(lDialogString); + return NULL; + } + + memset(lBuff, 0, MAX_PATH_OR_CMD * sizeof(wchar_t) ); + +#ifdef TINYFD_NOCCSUNICODE + fgets((char *)lBuff, 2*MAX_PATH_OR_CMD, lIn); +#else + fgetws(lBuff, MAX_PATH_OR_CMD, lIn); +#endif + fclose(lIn); + wipefileW(lDialogString); + _wremove(lDialogString); + + if (aDefaultInput) + { + swprintf(lDialogString, +#if !defined(__BORLANDC__) && !defined(__TINYC__) && !(defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)) + lDialogStringLen, +#endif + L"%ls\\tinyfd.vbs", _wgetenv(L"TEMP")); + } + else + { + swprintf(lDialogString, +#if !defined(__BORLANDC__) && !defined(__TINYC__) && !(defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)) + lDialogStringLen, +#endif + L"%ls\\tinyfd.hta", _wgetenv(L"TEMP")); + } + _wremove(lDialogString); + free(lDialogString); + /* wprintf( L"lBuff: %ls\n" , lBuff ) ; */ +#ifdef TINYFD_NOCCSUNICODE + lResult = !wcsncmp(lBuff+1, L"1", 1); +#else + lResult = !wcsncmp(lBuff, L"1", 1); +#endif + + /* printf( "lResult: %d \n" , lResult ) ; */ + if (!lResult) + { + return NULL ; + } + + /* wprintf( "lBuff+1: %ls\n" , lBuff+1 ) ; */ + +#ifdef TINYFD_NOCCSUNICODE + if (aDefaultInput) + { + lDialogStringLen = wcslen(lBuff) ; + lBuff[lDialogStringLen - 1] = L'\0'; + lBuff[lDialogStringLen - 2] = L'\0'; + } + return lBuff + 2; +#else + if (aDefaultInput) lBuff[wcslen(lBuff) - 1] = L'\0'; + return lBuff + 1; +#endif +} + + +wchar_t * tinyfd_saveFileDialogW( + wchar_t const * aTitle, /* NULL or "" */ + wchar_t const * aDefaultPathAndOrFile, /* NULL or "" */ + int aNumOfFilterPatterns, /* 0 */ + wchar_t const * const * aFilterPatterns, /* NULL or {"*.jpg","*.png"} */ + wchar_t const * aSingleFilterDescription) /* NULL or "image files" */ +{ + static wchar_t lBuff[MAX_PATH_OR_CMD]; + wchar_t lDirname[MAX_PATH_OR_CMD]; + wchar_t lDialogString[MAX_PATH_OR_CMD]; + wchar_t lFilterPatterns[MAX_PATH_OR_CMD] = L""; + wchar_t * p; + wchar_t * lRetval; + wchar_t const * ldefExt = NULL; + int i; + HRESULT lHResult; + OPENFILENAMEW ofn = {0}; + + if (aTitle&&!wcscmp(aTitle, L"tinyfd_query")){ strcpy(tinyfd_response, "windows_wchar"); return (wchar_t *)1; } + + /*if (quoteDetectedW(aTitle)) return tinyfd_saveFileDialogW(L"INVALID TITLE WITH QUOTES", aDefaultPathAndOrFile, aNumOfFilterPatterns, aFilterPatterns, aSingleFilterDescription); + if (quoteDetectedW(aDefaultPathAndOrFile)) return tinyfd_saveFileDialogW(aTitle, L"INVALID DEFAULT_PATH WITH QUOTES", aNumOfFilterPatterns, aFilterPatterns, aSingleFilterDescription); + if (quoteDetectedW(aSingleFilterDescription)) return tinyfd_saveFileDialogW(aTitle, aDefaultPathAndOrFile, aNumOfFilterPatterns, aFilterPatterns, L"INVALID FILTER_DESCRIPTION WITH QUOTES"); + for (i = 0; i < aNumOfFilterPatterns; i++) + { + if (quoteDetectedW(aFilterPatterns[i])) return tinyfd_saveFileDialogW(L"INVALID FILTER_PATTERN WITH QUOTES: use the GRAVE ACCENT \\x60 instead.", aDefaultPathAndOrFile, 0, NULL, NULL); + }*/ + + lHResult = CoInitializeEx(NULL, 0); + + getPathWithoutFinalSlashW(lDirname, aDefaultPathAndOrFile); + getLastNameW(lBuff, aDefaultPathAndOrFile); + + if (aNumOfFilterPatterns > 0) + { + ldefExt = aFilterPatterns[0]; + + if (aSingleFilterDescription && wcslen(aSingleFilterDescription)) + { + wcscpy(lFilterPatterns, aSingleFilterDescription); + wcscat(lFilterPatterns, L"\n"); + } + wcscat(lFilterPatterns, aFilterPatterns[0]); + for (i = 1; i < aNumOfFilterPatterns; i++) + { + wcscat(lFilterPatterns, L";"); + wcscat(lFilterPatterns, aFilterPatterns[i]); + } + wcscat(lFilterPatterns, L"\n"); + if (!(aSingleFilterDescription && wcslen(aSingleFilterDescription))) + { + wcscpy(lDialogString, lFilterPatterns); + wcscat(lFilterPatterns, lDialogString); + } + wcscat(lFilterPatterns, L"All Files\n*.*\n"); + p = lFilterPatterns; + while ((p = wcschr(p, L'\n')) != NULL) + { + *p = L'\0'; + p++; + } + } + + ofn.lStructSize = sizeof(OPENFILENAMEW); + ofn.hwndOwner = GetForegroundWindow(); + ofn.hInstance = 0; + ofn.lpstrFilter = wcslen(lFilterPatterns) ? lFilterPatterns : NULL; + ofn.lpstrCustomFilter = NULL; + ofn.nMaxCustFilter = 0; + ofn.nFilterIndex = 1; + ofn.lpstrFile = lBuff; + + ofn.nMaxFile = MAX_PATH_OR_CMD; + ofn.lpstrFileTitle = NULL; + ofn.nMaxFileTitle = MAX_PATH_OR_CMD/2; + ofn.lpstrInitialDir = wcslen(lDirname) ? lDirname : NULL; + ofn.lpstrTitle = aTitle && wcslen(aTitle) ? aTitle : NULL; + ofn.Flags = OFN_OVERWRITEPROMPT | OFN_NOCHANGEDIR | OFN_PATHMUSTEXIST ; + ofn.nFileOffset = 0; + ofn.nFileExtension = 0; + ofn.lpstrDefExt = ldefExt; + ofn.lCustData = 0L; + ofn.lpfnHook = NULL; + ofn.lpTemplateName = NULL; + + if (GetSaveFileNameW(&ofn) == 0) + { + lRetval = NULL; + } + else + { + lRetval = lBuff; + } + + if (lHResult == S_OK || lHResult == S_FALSE) + { + CoUninitialize(); + } + return lRetval; +} + + +wchar_t * tinyfd_openFileDialogW( + wchar_t const * aTitle, /* NULL or "" */ + wchar_t const * aDefaultPathAndOrFile, /* NULL or "" */ + int aNumOfFilterPatterns, /* 0 */ + wchar_t const * const * aFilterPatterns, /* NULL or {"*.jpg","*.png"} */ + wchar_t const * aSingleFilterDescription, /* NULL or "image files" */ + int aAllowMultipleSelects) /* 0 or 1 ; -1 to free allocated memory and return */ +{ + size_t lLengths[MAX_MULTIPLE_FILES]; + wchar_t lDirname[MAX_PATH_OR_CMD]; + wchar_t lFilterPatterns[MAX_PATH_OR_CMD] = L""; + wchar_t lDialogString[MAX_PATH_OR_CMD]; + wchar_t * lPointers[MAX_MULTIPLE_FILES+1]; + wchar_t * p; + int i, j; + size_t lBuffLen; + DWORD lFullBuffLen; + HRESULT lHResult; + OPENFILENAMEW ofn = { 0 }; + static wchar_t * lBuff = NULL; + + free(lBuff); + lBuff = NULL; + if (aAllowMultipleSelects < 0) return (wchar_t *)0; + + if (aTitle&&!wcscmp(aTitle, L"tinyfd_query")){ strcpy(tinyfd_response, "windows_wchar"); return (wchar_t *)1; } + + /*if (quoteDetectedW(aTitle)) return tinyfd_openFileDialogW(L"INVALID TITLE WITH QUOTES", aDefaultPathAndOrFile, aNumOfFilterPatterns, aFilterPatterns, aSingleFilterDescription, aAllowMultipleSelects); + if (quoteDetectedW(aDefaultPathAndOrFile)) return tinyfd_openFileDialogW(aTitle, L"INVALID DEFAULT_PATH WITH QUOTES", aNumOfFilterPatterns, aFilterPatterns, aSingleFilterDescription, aAllowMultipleSelects); + if (quoteDetectedW(aSingleFilterDescription)) return tinyfd_openFileDialogW(aTitle, aDefaultPathAndOrFile, aNumOfFilterPatterns, aFilterPatterns, L"INVALID FILTER_DESCRIPTION WITH QUOTES", aAllowMultipleSelects); + for (i = 0; i < aNumOfFilterPatterns; i++) + { + if (quoteDetectedW(aFilterPatterns[i])) return tinyfd_openFileDialogW(L"INVALID FILTER_PATTERN WITH QUOTES: use the GRAVE ACCENT \\x60 instead.", aDefaultPathAndOrFile, 0, NULL, NULL, aAllowMultipleSelects); + }*/ + + if (aAllowMultipleSelects) + { + lFullBuffLen = MAX_MULTIPLE_FILES * MAX_PATH_OR_CMD + 1; + lBuff = (wchar_t*) malloc(lFullBuffLen * sizeof(wchar_t)); + if (!lBuff) + { + lFullBuffLen = LOW_MULTIPLE_FILES * MAX_PATH_OR_CMD + 1; + lBuff = (wchar_t*) malloc( lFullBuffLen * sizeof(wchar_t)); + } + } + else + { + lFullBuffLen = MAX_PATH_OR_CMD + 1; + lBuff = (wchar_t*) malloc(lFullBuffLen * sizeof(wchar_t)); + } + if (!lBuff) return NULL; + + lHResult = CoInitializeEx(NULL, 0); + + getPathWithoutFinalSlashW(lDirname, aDefaultPathAndOrFile); + getLastNameW(lBuff, aDefaultPathAndOrFile); + + if (aNumOfFilterPatterns > 0) + { + if (aSingleFilterDescription && wcslen(aSingleFilterDescription)) + { + wcscpy(lFilterPatterns, aSingleFilterDescription); + wcscat(lFilterPatterns, L"\n"); + } + wcscat(lFilterPatterns, aFilterPatterns[0]); + for (i = 1; i < aNumOfFilterPatterns; i++) + { + wcscat(lFilterPatterns, L";"); + wcscat(lFilterPatterns, aFilterPatterns[i]); + } + wcscat(lFilterPatterns, L"\n"); + if (!(aSingleFilterDescription && wcslen(aSingleFilterDescription))) + { + wcscpy(lDialogString, lFilterPatterns); + wcscat(lFilterPatterns, lDialogString); + } + wcscat(lFilterPatterns, L"All Files\n*.*\n"); + p = lFilterPatterns; + while ((p = wcschr(p, L'\n')) != NULL) + { + *p = L'\0'; + p++; + } + } + + ofn.lStructSize = sizeof(OPENFILENAME); + ofn.hwndOwner = GetForegroundWindow(); + ofn.hInstance = 0; + ofn.lpstrFilter = wcslen(lFilterPatterns) ? lFilterPatterns : NULL; + ofn.lpstrCustomFilter = NULL; + ofn.nMaxCustFilter = 0; + ofn.nFilterIndex = 1; + ofn.lpstrFile = lBuff; + ofn.nMaxFile = lFullBuffLen; + ofn.lpstrFileTitle = NULL; + ofn.nMaxFileTitle = MAX_PATH_OR_CMD / 2; + ofn.lpstrInitialDir = wcslen(lDirname) ? lDirname : NULL; + ofn.lpstrTitle = aTitle && wcslen(aTitle) ? aTitle : NULL; + ofn.Flags = OFN_EXPLORER | OFN_NOCHANGEDIR | OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST; + ofn.nFileOffset = 0; + ofn.nFileExtension = 0; + ofn.lpstrDefExt = NULL; + ofn.lCustData = 0L; + ofn.lpfnHook = NULL; + ofn.lpTemplateName = NULL; + + if (aAllowMultipleSelects) + { + ofn.Flags |= OFN_ALLOWMULTISELECT; + } + + if (GetOpenFileNameW(&ofn) == 0) + { + free(lBuff); + lBuff = NULL; + } + else + { + lBuffLen = wcslen(lBuff); + lPointers[0] = lBuff + lBuffLen + 1; + if (aAllowMultipleSelects && (lPointers[0][0] != L'\0')) + { + i = 0; + do + { + lLengths[i] = wcslen(lPointers[i]); + lPointers[i + 1] = lPointers[i] + lLengths[i] + 1; + i++; + } while (lPointers[i][0] != L'\0' && i < MAX_MULTIPLE_FILES ); + + if (i > MAX_MULTIPLE_FILES) + { + free(lBuff); + lBuff = NULL; + } + else + { + i--; + p = lBuff + lFullBuffLen - 1; + *p = L'\0'; + for (j = i; j >= 0; j--) + { + p -= lLengths[j]; + memmove(p, lPointers[j], lLengths[j] * sizeof(wchar_t)); + p--; + *p = L'\\'; + p -= lBuffLen; + memmove(p, lBuff, lBuffLen*sizeof(wchar_t)); + p--; + *p = L'|'; + } + p++; + wcscpy(lBuff, p); + lBuffLen = wcslen(lBuff); + } + } + if (lBuff) lBuff = (wchar_t*)(realloc(lBuff, (lBuffLen + 1) * sizeof(wchar_t))); + } + + if (lHResult == S_OK || lHResult == S_FALSE) + { + CoUninitialize(); + } + + return lBuff; +} + + +BOOL CALLBACK BrowseCallbackProcW_enum(HWND hWndChild, LPARAM lParam) +{ + wchar_t buf[255]; + (void)lParam; + GetClassNameW(hWndChild, buf, sizeof(buf)); + if (wcscmp(buf, L"SysTreeView32") == 0) + { + HTREEITEM hNode = TreeView_GetSelection(hWndChild); + TreeView_EnsureVisible(hWndChild, hNode); + return FALSE; + } + return TRUE; +} + + +static int __stdcall BrowseCallbackProcW(HWND hwnd, UINT uMsg, LPARAM lp, LPARAM pData) +{ + (void)lp; + switch (uMsg) + { + case BFFM_INITIALIZED: + SendMessage(hwnd, BFFM_SETSELECTIONW, TRUE, (LPARAM)pData); + break; + case BFFM_SELCHANGED: + EnumChildWindows(hwnd, BrowseCallbackProcW_enum, 0); + } + return 0; +} + +wchar_t * tinyfd_selectFolderDialogW( + wchar_t const * aTitle, /* NULL or "" */ + wchar_t const * aDefaultPath) /* NULL or "" */ +{ + static wchar_t lBuff[MAX_PATH_OR_CMD]; + wchar_t * lRetval; + + BROWSEINFOW bInfo; + LPITEMIDLIST lpItem; + HRESULT lHResult; + + if (aTitle&&!wcscmp(aTitle, L"tinyfd_query")){ strcpy(tinyfd_response, "windows_wchar"); return (wchar_t *)1; } + + /*if (quoteDetectedW(aTitle)) return tinyfd_selectFolderDialogW(L"INVALID TITLE WITH QUOTES", aDefaultPath); + if (quoteDetectedW(aDefaultPath)) return tinyfd_selectFolderDialogW(aTitle, L"INVALID DEFAULT_PATH WITH QUOTES");*/ + + lHResult = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); + + bInfo.hwndOwner = GetForegroundWindow(); + bInfo.pidlRoot = NULL; + bInfo.pszDisplayName = lBuff; + bInfo.lpszTitle = aTitle && wcslen(aTitle) ? aTitle : NULL; + if (lHResult == S_OK || lHResult == S_FALSE) + { + bInfo.ulFlags = BIF_USENEWUI; + } + bInfo.lpfn = BrowseCallbackProcW; + bInfo.lParam = (LPARAM)aDefaultPath; + bInfo.iImage = -1; + + lpItem = SHBrowseForFolderW(&bInfo); + if (!lpItem) + { + lRetval = NULL; + } + else + { + SHGetPathFromIDListW(lpItem, lBuff); + lRetval = lBuff ; + } + + if (lHResult == S_OK || lHResult == S_FALSE) + { + CoUninitialize(); + } + return lRetval; +} + + +wchar_t * tinyfd_colorChooserW( + wchar_t const * aTitle, /* NULL or "" */ + wchar_t const * aDefaultHexRGB, /* NULL or "#FF0000"*/ + unsigned char const aDefaultRGB[3], /* { 0 , 255 , 255 } */ + unsigned char aoResultRGB[3]) /* { 0 , 0 , 0 } */ +{ + static wchar_t lResultHexRGB[8]; + CHOOSECOLORW cc; + COLORREF crCustColors[16]; + unsigned char lDefaultRGB[3]; + int lRet; + + HRESULT lHResult; + + if (aTitle&&!wcscmp(aTitle, L"tinyfd_query")){ strcpy(tinyfd_response, "windows_wchar"); return (wchar_t *)1; } + + /*if (quoteDetectedW(aTitle)) return tinyfd_colorChooserW(L"INVALID TITLE WITH QUOTES", aDefaultHexRGB, aDefaultRGB, aoResultRGB); + if (quoteDetectedW(aDefaultHexRGB)) return tinyfd_colorChooserW(aTitle, L"INVALID DEFAULT_HEX_RGB WITH QUOTES: use the GRAVE ACCENT \\x60 instead.", aDefaultRGB, aoResultRGB);*/ + + lHResult = CoInitializeEx(NULL, 0); + + if ( aDefaultHexRGB && wcslen(aDefaultHexRGB) ) + { + Hex2RGBW(aDefaultHexRGB, lDefaultRGB); + } + else + { + lDefaultRGB[0] = aDefaultRGB[0]; + lDefaultRGB[1] = aDefaultRGB[1]; + lDefaultRGB[2] = aDefaultRGB[2]; + } + + /* we can't use aTitle */ + cc.lStructSize = sizeof(CHOOSECOLOR); + cc.hwndOwner = GetForegroundWindow(); + cc.hInstance = NULL; + cc.rgbResult = RGB(lDefaultRGB[0], lDefaultRGB[1], lDefaultRGB[2]); + cc.lpCustColors = crCustColors; + cc.Flags = CC_RGBINIT | CC_FULLOPEN | CC_ANYCOLOR ; + cc.lCustData = 0; + cc.lpfnHook = NULL; + cc.lpTemplateName = NULL; + + lRet = ChooseColorW(&cc); + + if (!lRet) + { + return NULL; + } + + aoResultRGB[0] = GetRValue(cc.rgbResult); + aoResultRGB[1] = GetGValue(cc.rgbResult); + aoResultRGB[2] = GetBValue(cc.rgbResult); + + RGB2HexW(aoResultRGB, lResultHexRGB); + + if (lHResult == S_OK || lHResult == S_FALSE) + { + CoUninitialize(); + } + + return lResultHexRGB; +} + + +static int messageBoxWinGui( + char const * aTitle, /* NULL or "" */ + char const * aMessage, /* NULL or "" may contain \n and \t */ + char const * aDialogType, /* "ok" "okcancel" "yesno" "yesnocancel" */ + char const * aIconType, /* "info" "warning" "error" "question" */ + int aDefaultButton) /* 0 for cancel/no , 1 for ok/yes , 2 for no in yesnocancel */ +{ + int lIntRetVal; + wchar_t lTitle[128] = L""; + wchar_t * lMessage = NULL; + wchar_t lDialogType[16] = L""; + wchar_t lIconType[16] = L""; + wchar_t * lTmpWChar; + + if (aTitle) + { + if (tinyfd_winUtf8) lTmpWChar = tinyfd_utf8to16(aTitle); + else lTmpWChar = tinyfd_mbcsTo16(aTitle); + wcscpy(lTitle, lTmpWChar); + } + if (aMessage) + { + if (tinyfd_winUtf8) lTmpWChar = tinyfd_utf8to16(aMessage); + else lTmpWChar = tinyfd_mbcsTo16(aMessage); + lMessage = (wchar_t *) malloc((wcslen(lTmpWChar) + 1)* sizeof(wchar_t)); + if (lMessage) wcscpy(lMessage, lTmpWChar); + } + if (aDialogType) + { + if (tinyfd_winUtf8) lTmpWChar = tinyfd_utf8to16(aDialogType); + else lTmpWChar = tinyfd_mbcsTo16(aDialogType); + wcscpy(lDialogType, lTmpWChar); + } + if (aIconType) + { + if (tinyfd_winUtf8) lTmpWChar = tinyfd_utf8to16(aIconType); + else lTmpWChar = tinyfd_mbcsTo16(aIconType); + wcscpy(lIconType, lTmpWChar); + } + + lIntRetVal = tinyfd_messageBoxW(lTitle, lMessage, lDialogType, lIconType, aDefaultButton); + + free(lMessage); + + return lIntRetVal; +} + + +static int notifyWinGui( + char const * aTitle, /* NULL or "" */ + char const * aMessage, /* NULL or "" may NOT contain \n nor \t */ + char const * aIconType) +{ + wchar_t lTitle[128] = L""; + wchar_t * lMessage = NULL; + wchar_t lIconType[16] = L""; + wchar_t * lTmpWChar; + + if (aTitle) + { + if (tinyfd_winUtf8) lTmpWChar = tinyfd_utf8to16(aTitle); + else lTmpWChar = tinyfd_mbcsTo16(aTitle); + wcscpy(lTitle, lTmpWChar); + } + if (aMessage) + { + if (tinyfd_winUtf8) lTmpWChar = tinyfd_utf8to16(aMessage); + else lTmpWChar = tinyfd_mbcsTo16(aMessage); + lMessage = (wchar_t *) malloc((wcslen(lTmpWChar) + 1)* sizeof(wchar_t)); + if (lMessage) wcscpy(lMessage, lTmpWChar); + } + if (aIconType) + { + if (tinyfd_winUtf8) lTmpWChar = tinyfd_utf8to16(aIconType); + else lTmpWChar = tinyfd_mbcsTo16(aIconType); + wcscpy(lIconType, lTmpWChar); + } + + tinyfd_notifyPopupW(lTitle, lMessage, lIconType); + + free(lMessage); + + return 1; +} + + +static int inputBoxWinGui( + char * aoBuff, + char const * aTitle, /* NULL or "" */ + char const * aMessage, /* NULL or "" may NOT contain \n nor \t */ + char const * aDefaultInput) /* "" , if NULL it's a passwordBox */ +{ + wchar_t lTitle[128] = L""; + wchar_t * lMessage = NULL; + wchar_t lDefaultInput[MAX_PATH_OR_CMD] = L""; + wchar_t * lTmpWChar; + char * lTmpChar; + + if (aTitle) + { + if (tinyfd_winUtf8) lTmpWChar = tinyfd_utf8to16(aTitle); + else lTmpWChar = tinyfd_mbcsTo16(aTitle); + wcscpy(lTitle, lTmpWChar); + } + if (aMessage) + { + if (tinyfd_winUtf8) lTmpWChar = tinyfd_utf8to16(aMessage); + else lTmpWChar = tinyfd_mbcsTo16(aMessage); + lMessage = (wchar_t *) malloc((wcslen(lTmpWChar) + 1)* sizeof(wchar_t)); + if (lMessage) wcscpy(lMessage, lTmpWChar); + } + if (aDefaultInput) + { + if (tinyfd_winUtf8) lTmpWChar = tinyfd_utf8to16(aDefaultInput); + else lTmpWChar = tinyfd_mbcsTo16(aDefaultInput); + wcscpy(lDefaultInput, lTmpWChar); + lTmpWChar = tinyfd_inputBoxW(lTitle, lMessage, lDefaultInput); + } + else lTmpWChar = tinyfd_inputBoxW(lTitle, lMessage, NULL); + + free(lMessage); + + if (!lTmpWChar) + { + aoBuff[0] = '\0'; + return 0; + } + + if (tinyfd_winUtf8) lTmpChar = tinyfd_utf16to8(lTmpWChar); + else lTmpChar = tinyfd_utf16toMbcs(lTmpWChar); + + strcpy(aoBuff, lTmpChar); + + return 1; +} + + +static char * saveFileDialogWinGui( + char * aoBuff, + char const * aTitle, /* NULL or "" */ + char const * aDefaultPathAndOrFile, /* NULL or "" */ + int aNumOfFilterPatterns, /* 0 */ + char const * const * aFilterPatterns, /* NULL or {"*.jpg","*.png"} */ + char const * aSingleFilterDescription) /* NULL or "image files" */ +{ + wchar_t lTitle[128] = L""; + wchar_t lDefaultPathAndFile[MAX_PATH_OR_CMD] = L""; + wchar_t lSingleFilterDescription[128] = L""; + wchar_t * * lFilterPatterns; + wchar_t * lTmpWChar; + char * lTmpChar; + int i; + + lFilterPatterns = (wchar_t **) malloc(aNumOfFilterPatterns*sizeof(wchar_t *)); + for (i = 0; i < aNumOfFilterPatterns; i++) + { + if (tinyfd_winUtf8) lTmpWChar = tinyfd_utf8to16(aFilterPatterns[i]); + else lTmpWChar = tinyfd_mbcsTo16(aFilterPatterns[i]); + lFilterPatterns[i] = (wchar_t *) malloc((wcslen(lTmpWChar) + 1) * sizeof(wchar_t *)); + if (lFilterPatterns[i]) wcscpy(lFilterPatterns[i], lTmpWChar); + } + + if (aTitle) + { + if (tinyfd_winUtf8) lTmpWChar = tinyfd_utf8to16(aTitle); + else lTmpWChar = tinyfd_mbcsTo16(aTitle); + wcscpy(lTitle, lTmpWChar); + } + if (aDefaultPathAndOrFile) + { + if (tinyfd_winUtf8) lTmpWChar = tinyfd_utf8to16(aDefaultPathAndOrFile); + else lTmpWChar = tinyfd_mbcsTo16(aDefaultPathAndOrFile); + wcscpy(lDefaultPathAndFile, lTmpWChar); + } + if (aSingleFilterDescription) + { + if (tinyfd_winUtf8) lTmpWChar = tinyfd_utf8to16(aSingleFilterDescription); + else lTmpWChar = tinyfd_mbcsTo16(aSingleFilterDescription); + wcscpy(lSingleFilterDescription, lTmpWChar); + } + + lTmpWChar = tinyfd_saveFileDialogW( + lTitle, + lDefaultPathAndFile, + aNumOfFilterPatterns, + (wchar_t const**) lFilterPatterns, /*stupid cast for gcc*/ + lSingleFilterDescription); + + for (i = 0; i < aNumOfFilterPatterns; i++) + { + free(lFilterPatterns[i]); + } + free(lFilterPatterns); + + if (!lTmpWChar) + { + return NULL; + } + + if (tinyfd_winUtf8) lTmpChar = tinyfd_utf16to8(lTmpWChar); + else lTmpChar = tinyfd_utf16toMbcs(lTmpWChar); + strcpy(aoBuff, lTmpChar); + if (tinyfd_winUtf8) (void)tinyfd_utf16to8(NULL); + else (void)tinyfd_utf16toMbcs(NULL); + + return aoBuff; +} + + +static char * openFileDialogWinGui( + char const * aTitle, /* NULL or "" */ + char const * aDefaultPathAndOrFile, /* NULL or "" */ + int aNumOfFilterPatterns, /* 0 */ + char const * const * aFilterPatterns, /* NULL or {"*.jpg","*.png"} */ + char const * aSingleFilterDescription, /* NULL or "image files" */ + int aAllowMultipleSelects) /* 0 or 1 */ +{ + wchar_t lTitle[128] = L""; + wchar_t lDefaultPathAndFile[MAX_PATH_OR_CMD] = L""; + wchar_t lSingleFilterDescription[128] = L""; + wchar_t * * lFilterPatterns; + wchar_t * lTmpWChar; + char * lTmpChar; + int i; + + lFilterPatterns = (wchar_t * *) malloc(aNumOfFilterPatterns*sizeof(wchar_t *)); + for (i = 0; i < aNumOfFilterPatterns; i++) + { + if (tinyfd_winUtf8) lTmpWChar = tinyfd_utf8to16(aFilterPatterns[i]); + else lTmpWChar = tinyfd_mbcsTo16(aFilterPatterns[i]); + lFilterPatterns[i] = (wchar_t *) malloc((wcslen(lTmpWChar) + 1)*sizeof(wchar_t *)); + if (lFilterPatterns[i]) wcscpy(lFilterPatterns[i], lTmpWChar); + } + + if (aTitle) + { + if (tinyfd_winUtf8) lTmpWChar = tinyfd_utf8to16(aTitle); + else lTmpWChar = tinyfd_mbcsTo16(aTitle); + wcscpy(lTitle, lTmpWChar); + } + if (aDefaultPathAndOrFile) + { + if (tinyfd_winUtf8) lTmpWChar = tinyfd_utf8to16(aDefaultPathAndOrFile); + else lTmpWChar = tinyfd_mbcsTo16(aDefaultPathAndOrFile); + wcscpy(lDefaultPathAndFile, lTmpWChar); + } + if (aSingleFilterDescription) + { + if (tinyfd_winUtf8) lTmpWChar = tinyfd_utf8to16(aSingleFilterDescription); + else lTmpWChar = tinyfd_mbcsTo16(aSingleFilterDescription); + wcscpy(lSingleFilterDescription, lTmpWChar); + } + + lTmpWChar = tinyfd_openFileDialogW( + lTitle, + lDefaultPathAndFile, + aNumOfFilterPatterns, + (wchar_t const**) lFilterPatterns, /*stupid cast for gcc*/ + lSingleFilterDescription, + aAllowMultipleSelects); + + for (i = 0; i < aNumOfFilterPatterns; i++) + { + free(lFilterPatterns[i]); + } + free(lFilterPatterns); + + if (!lTmpWChar) return NULL; + + if (tinyfd_winUtf8) lTmpChar = tinyfd_utf16to8(lTmpWChar); + else lTmpChar = tinyfd_utf16toMbcs(lTmpWChar); + (void)tinyfd_openFileDialogW(NULL, NULL, 0, NULL, NULL, -1); + + return lTmpChar; +} + + +static char * selectFolderDialogWinGui( + char * aoBuff, + char const * aTitle, /* NULL or "" */ + char const * aDefaultPath) /* NULL or "" */ +{ + wchar_t lTitle[128] = L""; + wchar_t lDefaultPath[MAX_PATH_OR_CMD] = L""; + wchar_t * lTmpWChar; + char * lTmpChar; + + if (aTitle) + { + if (tinyfd_winUtf8) lTmpWChar = tinyfd_utf8to16(aTitle); + else lTmpWChar = tinyfd_mbcsTo16(aTitle); + wcscpy(lTitle, lTmpWChar); + } + if (aDefaultPath) + { + if (tinyfd_winUtf8) lTmpWChar = tinyfd_utf8to16(aDefaultPath); + else lTmpWChar = tinyfd_mbcsTo16(aDefaultPath); + wcscpy(lDefaultPath, lTmpWChar); + } + + lTmpWChar = tinyfd_selectFolderDialogW( + lTitle, + lDefaultPath); + + if (!lTmpWChar) + { + return NULL; + } + + if (tinyfd_winUtf8) lTmpChar = tinyfd_utf16to8(lTmpWChar); + else lTmpChar = tinyfd_utf16toMbcs(lTmpWChar); + strcpy(aoBuff, lTmpChar); + + return aoBuff; +} + + +static char * colorChooserWinGui( + char const * aTitle, /* NULL or "" */ + char const * aDefaultHexRGB, /* NULL or "#FF0000"*/ + unsigned char const aDefaultRGB[3], /* { 0 , 255 , 255 } */ + unsigned char aoResultRGB[3]) /* { 0 , 0 , 0 } */ +{ + static char lResultHexRGB[8]; + + wchar_t lTitle[128]; + wchar_t * lTmpWChar; + char * lTmpChar; + wchar_t lDefaultHexRGB[16] = L""; + + if (aTitle) + { + if (tinyfd_winUtf8) lTmpWChar = tinyfd_utf8to16(aTitle); + else lTmpWChar = tinyfd_mbcsTo16(aTitle); + wcscpy(lTitle, lTmpWChar); + } + if (aDefaultHexRGB) + { + if (tinyfd_winUtf8) lTmpWChar = tinyfd_utf8to16(aDefaultHexRGB); + else lTmpWChar = tinyfd_mbcsTo16(aDefaultHexRGB); + wcscpy(lDefaultHexRGB, lTmpWChar); + } + + lTmpWChar = tinyfd_colorChooserW( + lTitle, + lDefaultHexRGB, + aDefaultRGB, + aoResultRGB ); + + if (!lTmpWChar) + { + return NULL; + } + + if (tinyfd_winUtf8) lTmpChar = tinyfd_utf16to8(lTmpWChar); + else lTmpChar = tinyfd_utf16toMbcs(lTmpWChar); + strcpy(lResultHexRGB, lTmpChar); + + return lResultHexRGB; +} + + +static int dialogPresent(void) +{ + static int lDialogPresent = -1 ; + char lBuff[MAX_PATH_OR_CMD] ; + FILE * lIn ; + char const * lString = "dialog.exe"; + if (!tinyfd_allowCursesDialogs) return 0; + if (lDialogPresent < 0) + { + lIn = _popen("where dialog.exe", "r"); + if ( ! lIn ) + { + lDialogPresent = 0 ; + return 0 ; + } + while ( fgets( lBuff , sizeof( lBuff ) , lIn ) != NULL ) + {} + _pclose( lIn ) ; + if ( lBuff[strlen( lBuff ) -1] == '\n' ) + { + lBuff[strlen( lBuff ) -1] = '\0' ; + } + if ( strcmp(lBuff+strlen(lBuff)-strlen(lString),lString) ) + { + lDialogPresent = 0 ; + } + else + { + lDialogPresent = 1 ; + } + } + return lDialogPresent; +} + + +static int messageBoxWinConsole( + char const * aTitle , /* NULL or "" */ + char const * aMessage , /* NULL or "" may contain \n and \t */ + char const * aDialogType , /* "ok" "okcancel" "yesno" "yesnocancel" */ + char const * aIconType , /* "info" "warning" "error" "question" */ + int aDefaultButton ) /* 0 for cancel/no , 1 for ok/yes , 2 for no in yesnocancel */ +{ + char lDialogString[MAX_PATH_OR_CMD]; + char lDialogFile[MAX_PATH_OR_CMD]; + FILE * lIn; + char lBuff[MAX_PATH_OR_CMD] = ""; + (void)aIconType; + + strcpy(lDialogString, "dialog "); + if (aTitle && strlen(aTitle)) + { + strcat(lDialogString, "--title \"") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\" ") ; + } + + if ( aDialogType && ( !strcmp( "okcancel" , aDialogType ) + || !strcmp("yesno", aDialogType) || !strcmp("yesnocancel", aDialogType) ) ) + { + strcat(lDialogString, "--backtitle \"") ; + strcat(lDialogString, "tab: move focus") ; + strcat(lDialogString, "\" ") ; + } + + if ( aDialogType && ! strcmp( "okcancel" , aDialogType ) ) + { + if ( ! aDefaultButton ) + { + strcat( lDialogString , "--defaultno " ) ; + } + strcat( lDialogString , + "--yes-label \"Ok\" --no-label \"Cancel\" --yesno " ) ; + } + else if ( aDialogType && ! strcmp( "yesno" , aDialogType ) ) + { + if ( ! aDefaultButton ) + { + strcat( lDialogString , "--defaultno " ) ; + } + strcat( lDialogString , "--yesno " ) ; + } + else if (aDialogType && !strcmp("yesnocancel", aDialogType)) + { + if (!aDefaultButton) + { + strcat(lDialogString, "--defaultno "); + } + strcat(lDialogString, "--menu "); + } + else + { + strcat( lDialogString , "--msgbox " ) ; + } + + strcat( lDialogString , "\"" ) ; + if ( aMessage && strlen(aMessage) ) + { + tfd_replaceSubStr( aMessage , "\n" , "\\n" , lBuff ) ; + strcat(lDialogString, lBuff) ; + lBuff[0]='\0'; + } + strcat(lDialogString, "\" "); + + if (aDialogType && !strcmp("yesnocancel", aDialogType)) + { + strcat(lDialogString, "0 60 0 Yes \"\" No \"\""); + strcat(lDialogString, "2>>"); + } + else + { + strcat(lDialogString, "10 60"); + strcat(lDialogString, " && echo 1 > "); + } + + strcpy(lDialogFile, getenv("TEMP")); + strcat(lDialogFile, "\\tinyfd.txt"); + strcat(lDialogString, lDialogFile); + + /*if (tinyfd_verbose) printf( "lDialogString: %s\n" , lDialogString ) ;*/ + system( lDialogString ) ; + + if (!(lIn = fopen(lDialogFile, "r"))) + { + remove(lDialogFile); + return 0 ; + } + while (fgets(lBuff, sizeof(lBuff), lIn) != NULL) + {} + fclose(lIn); + remove(lDialogFile); + if ( lBuff[strlen( lBuff ) -1] == '\n' ) + { + lBuff[strlen( lBuff ) -1] = '\0' ; + } + + /* if (tinyfd_verbose) printf("lBuff: %s\n", lBuff); */ + if ( ! strlen(lBuff) ) + { + return 0; + } + + if (aDialogType && !strcmp("yesnocancel", aDialogType)) + { + if (lBuff[0] == 'Y') return 1; + else return 2; + } + + return 1; +} + + +static int inputBoxWinConsole( + char * aoBuff , + char const * aTitle , /* NULL or "" */ + char const * aMessage , /* NULL or "" may NOT contain \n nor \t */ + char const * aDefaultInput ) /* "" , if NULL it's a passwordBox */ +{ + char lDialogString[MAX_PATH_OR_CMD]; + char lDialogFile[MAX_PATH_OR_CMD]; + FILE * lIn; + int lResult; + + strcpy(lDialogFile, getenv("TEMP")); + strcat(lDialogFile, "\\tinyfd.txt"); + strcpy(lDialogString , "echo|set /p=1 >" ) ; + strcat(lDialogString, lDialogFile); + strcat( lDialogString , " & " ) ; + + strcat( lDialogString , "dialog " ) ; + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, "--title \"") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\" ") ; + } + + strcat(lDialogString, "--backtitle \"") ; + strcat(lDialogString, "tab: move focus") ; + if ( ! aDefaultInput ) + { + strcat(lDialogString, " (sometimes nothing, no blink nor star, is shown in text field)") ; + } + + strcat(lDialogString, "\" ") ; + + if ( ! aDefaultInput ) + { + strcat( lDialogString , "--insecure --passwordbox" ) ; + } + else + { + strcat( lDialogString , "--inputbox" ) ; + } + strcat( lDialogString , " \"" ) ; + if ( aMessage && strlen(aMessage) ) + { + strcat(lDialogString, aMessage) ; + } + strcat(lDialogString,"\" 10 60 ") ; + if ( aDefaultInput && strlen(aDefaultInput) ) + { + strcat(lDialogString, "\"") ; + strcat(lDialogString, aDefaultInput) ; + strcat(lDialogString, "\" ") ; + } + + strcat(lDialogString, "2>>"); + strcpy(lDialogFile, getenv("TEMP")); + strcat(lDialogFile, "\\tinyfd.txt"); + strcat(lDialogString, lDialogFile); + strcat(lDialogString, " || echo 0 > "); + strcat(lDialogString, lDialogFile); + + /* printf( "lDialogString: %s\n" , lDialogString ) ; */ + system( lDialogString ) ; + + if (!(lIn = fopen(lDialogFile, "r"))) + { + remove(lDialogFile); + aoBuff[0] = '\0'; + return 0; + } + while (fgets(aoBuff, MAX_PATH_OR_CMD, lIn) != NULL) + {} + fclose(lIn); + + wipefile(lDialogFile); + remove(lDialogFile); + if ( aoBuff[strlen( aoBuff ) -1] == '\n' ) + { + aoBuff[strlen( aoBuff ) -1] = '\0' ; + } + /* printf( "aoBuff: %s\n" , aoBuff ) ; */ + + /* printf( "aoBuff: %s len: %lu \n" , aoBuff , strlen(aoBuff) ) ; */ + lResult = strncmp( aoBuff , "1" , 1) ? 0 : 1 ; + /* printf( "lResult: %d \n" , lResult ) ; */ + if ( ! lResult ) + { + aoBuff[0] = '\0'; + return 0 ; + } + /* printf( "aoBuff+1: %s\n" , aoBuff+1 ) ; */ + strcpy(aoBuff, aoBuff+3); + return 1; +} + + +static char * saveFileDialogWinConsole( + char * aoBuff , + char const * aTitle , /* NULL or "" */ + char const * aDefaultPathAndOrFile ) /* NULL or "" */ +{ + char lDialogString[MAX_PATH_OR_CMD]; + char lPathAndFile[MAX_PATH_OR_CMD] = ""; + FILE * lIn; + + strcpy( lDialogString , "dialog " ) ; + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, "--title \"") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\" ") ; + } + + strcat(lDialogString, "--backtitle \"") ; + strcat(lDialogString, + "tab: focus | /: populate | spacebar: fill text field | ok: TEXT FIELD ONLY") ; + strcat(lDialogString, "\" ") ; + + strcat( lDialogString , "--fselect \"" ) ; + if ( aDefaultPathAndOrFile && strlen(aDefaultPathAndOrFile) ) + { + /* dialog.exe uses unix separators even on windows */ + strcpy(lPathAndFile, aDefaultPathAndOrFile); + replaceChr( lPathAndFile , '\\' , '/' ) ; + } + + /* dialog.exe needs at least one separator */ + if ( ! strchr(lPathAndFile, '/') ) + { + strcat(lDialogString, "./") ; + } + strcat(lDialogString, lPathAndFile) ; + strcat(lDialogString, "\" 0 60 2>"); + strcpy(lPathAndFile, getenv("TEMP")); + strcat(lPathAndFile, "\\tinyfd.txt"); + strcat(lDialogString, lPathAndFile); + + /* printf( "lDialogString: %s\n" , lDialogString ) ; */ + system( lDialogString ) ; + + if (!(lIn = fopen(lPathAndFile, "r"))) + { + remove(lPathAndFile); + return NULL; + } + while (fgets(aoBuff, MAX_PATH_OR_CMD, lIn) != NULL) + {} + fclose(lIn); + remove(lPathAndFile); + replaceChr( aoBuff , '/' , '\\' ) ; + /* printf( "aoBuff: %s\n" , aoBuff ) ; */ + getLastName(lDialogString,aoBuff); + if ( ! strlen(lDialogString) ) + { + return NULL; + } + return aoBuff; +} + + +static char * openFileDialogWinConsole( + char const * aTitle , /* NULL or "" */ + char const * aDefaultPathAndOrFile ) /* NULL or "" */ +{ + char lFilterPatterns[MAX_PATH_OR_CMD] = ""; + char lDialogString[MAX_PATH_OR_CMD] ; + FILE * lIn; + + static char aoBuff[MAX_PATH_OR_CMD]; + + strcpy( lDialogString , "dialog " ) ; + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, "--title \"") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\" ") ; + } + + strcat(lDialogString, "--backtitle \"") ; + strcat(lDialogString, + "tab: focus | /: populate | spacebar: fill text field | ok: TEXT FIELD ONLY") ; + strcat(lDialogString, "\" ") ; + + strcat( lDialogString , "--fselect \"" ) ; + if ( aDefaultPathAndOrFile && strlen(aDefaultPathAndOrFile) ) + { + /* dialog.exe uses unix separators even on windows */ + strcpy(lFilterPatterns, aDefaultPathAndOrFile); + replaceChr( lFilterPatterns , '\\' , '/' ) ; + } + + /* dialog.exe needs at least one separator */ + if ( ! strchr(lFilterPatterns, '/') ) + { + strcat(lDialogString, "./") ; + } + strcat(lDialogString, lFilterPatterns) ; + strcat(lDialogString, "\" 0 60 2>"); + strcpy(lFilterPatterns, getenv("TEMP")); + strcat(lFilterPatterns, "\\tinyfd.txt"); + strcat(lDialogString, lFilterPatterns); + + /* printf( "lDialogString: %s\n" , lDialogString ) ; */ + system( lDialogString ) ; + + if (!(lIn = fopen(lFilterPatterns, "r"))) + { + remove(lFilterPatterns); + return NULL; + } + while (fgets(aoBuff, MAX_PATH_OR_CMD, lIn) != NULL) + {} + fclose(lIn); + remove(lFilterPatterns); + replaceChr( aoBuff , '/' , '\\' ) ; + /* printf( "aoBuff: %s\n" , aoBuff ) ; */ + return aoBuff; +} + + +static char * selectFolderDialogWinConsole( + char * aoBuff , + char const * aTitle , /* NULL or "" */ + char const * aDefaultPath ) /* NULL or "" */ +{ + char lDialogString[MAX_PATH_OR_CMD] ; + char lString[MAX_PATH_OR_CMD] ; + FILE * lIn ; + + strcpy( lDialogString , "dialog " ) ; + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, "--title \"") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\" ") ; + } + + strcat(lDialogString, "--backtitle \"") ; + strcat(lDialogString, + "tab: focus | /: populate | spacebar: fill text field | ok: TEXT FIELD ONLY") ; + strcat(lDialogString, "\" ") ; + + strcat( lDialogString , "--dselect \"" ) ; + if ( aDefaultPath && strlen(aDefaultPath) ) + { + /* dialog.exe uses unix separators even on windows */ + strcpy(lString, aDefaultPath) ; + ensureFinalSlash(lString); + replaceChr( lString , '\\' , '/' ) ; + strcat(lDialogString, lString) ; + } + else + { + /* dialog.exe needs at least one separator */ + strcat(lDialogString, "./") ; + } + strcat(lDialogString, "\" 0 60 2>"); + strcpy(lString, getenv("TEMP")); + strcat(lString, "\\tinyfd.txt"); + strcat(lDialogString, lString); + + /* printf( "lDialogString: %s\n" , lDialogString ) ; */ + system( lDialogString ) ; + + if (!(lIn = fopen(lString, "r"))) + { + remove(lString); + return NULL; + } + while (fgets(aoBuff, MAX_PATH_OR_CMD, lIn) != NULL) + {} + fclose(lIn); + remove(lString); + replaceChr( aoBuff , '/' , '\\' ) ; + /* printf( "aoBuff: %s\n" , aoBuff ) ; */ + return aoBuff; +} + +static void writeUtf8( char const * aUtf8String ) +{ + unsigned long lNum; + void * lConsoleHandle; + wchar_t * lTmpWChar; + + lConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE); + lTmpWChar = tinyfd_utf8to16(aUtf8String); + (void)WriteConsoleW(lConsoleHandle, lTmpWChar, (DWORD) wcslen(lTmpWChar), &lNum, NULL); +} + + +int tinyfd_messageBox( + char const * aTitle, /* NULL or "" */ + char const * aMessage, /* NULL or "" may contain \n and \t */ + char const * aDialogType, /* "ok" "okcancel" "yesno" "yesnocancel" */ + char const * aIconType, /* "info" "warning" "error" "question" */ + int aDefaultButton) /* 0 for cancel/no , 1 for ok/yes , 2 for no in yesnocancel */ +{ + char lChar; + UINT lOriginalCP = 0; + UINT lOriginalOutputCP = 0; + + if (tfd_quoteDetected(aTitle)) return tinyfd_messageBox("INVALID TITLE WITH QUOTES", aMessage, aDialogType, aIconType, aDefaultButton); + if (tfd_quoteDetected(aMessage)) return tinyfd_messageBox(aTitle, "INVALID MESSAGE WITH QUOTES", aDialogType, aIconType, aDefaultButton); + + if ((!tinyfd_forceConsole || !(GetConsoleWindow() || dialogPresent())) + && (!getenv("SSH_CLIENT") || getenvDISPLAY())) + { + if (aTitle&&!strcmp(aTitle, "tinyfd_query")){ strcpy(tinyfd_response, "windows"); return 1; } + return messageBoxWinGui(aTitle, aMessage, aDialogType, aIconType, aDefaultButton); + } + else if (dialogPresent()) + { + if (aTitle&&!strcmp(aTitle, "tinyfd_query")){ strcpy(tinyfd_response, "dialog"); return 0; } + return messageBoxWinConsole( + aTitle, aMessage, aDialogType, aIconType, aDefaultButton); + } + else + { + if (!tinyfd_winUtf8) + { + lOriginalCP = GetConsoleCP(); + lOriginalOutputCP = GetConsoleOutputCP(); + (void)SetConsoleCP(GetACP()); + (void)SetConsoleOutputCP(GetACP()); + } + + if (aTitle&&!strcmp(aTitle, "tinyfd_query")){ strcpy(tinyfd_response, "basicinput"); return 0; } + if (!gWarningDisplayed && !tinyfd_forceConsole) + { + gWarningDisplayed = 1; + printf("\n\n%s\n", gTitle); + printf("%s\n\n", tinyfd_needs); + } + + if (aTitle && strlen(aTitle)) + { + printf("\n"); + if (tinyfd_winUtf8) writeUtf8(aTitle); + else printf("%s", aTitle); + printf("\n\n"); + } + if (aDialogType && !strcmp("yesno", aDialogType)) + { + do + { + if (aMessage && strlen(aMessage)) + { + if (tinyfd_winUtf8) writeUtf8(aMessage); + else printf("%s", aMessage); + printf("\n"); + } + printf("y/n: "); + lChar = (char)tolower(_getch()); + printf("\n\n"); + } while (lChar != 'y' && lChar != 'n'); + if (!tinyfd_winUtf8) { (void)SetConsoleCP(lOriginalCP); (void)SetConsoleOutputCP(lOriginalOutputCP); } + return lChar == 'y' ? 1 : 0; + } + else if (aDialogType && !strcmp("okcancel", aDialogType)) + { + do + { + if (aMessage && strlen(aMessage)) + { + if (tinyfd_winUtf8) writeUtf8(aMessage); + else printf("%s", aMessage); + printf("\n"); + } + printf("[O]kay/[C]ancel: "); + lChar = (char)tolower(_getch()); + printf("\n\n"); + } while (lChar != 'o' && lChar != 'c'); + if (!tinyfd_winUtf8) { (void)SetConsoleCP(lOriginalCP); (void)SetConsoleOutputCP(lOriginalOutputCP); } + return lChar == 'o' ? 1 : 0; + } + else if (aDialogType && !strcmp("yesnocancel", aDialogType)) + { + do + { + if (aMessage && strlen(aMessage)) + { + if (tinyfd_winUtf8) writeUtf8(aMessage); + else printf("%s", aMessage); + printf("\n"); + } + printf("[Y]es/[N]o/[C]ancel: "); + lChar = (char)tolower(_getch()); + printf("\n\n"); + } while (lChar != 'y' && lChar != 'n' && lChar != 'c'); + if (!tinyfd_winUtf8) { (void)SetConsoleCP(lOriginalCP); (void)SetConsoleOutputCP(lOriginalOutputCP); } + return (lChar == 'y') ? 1 : (lChar == 'n') ? 2 : 0; + } + else + { + if (aMessage && strlen(aMessage)) + { + if (tinyfd_winUtf8) writeUtf8(aMessage); + else printf("%s", aMessage); + printf("\n\n"); + } + printf("press enter to continue "); fflush(stdout); + lChar = (char)_getch(); + printf("\n\n"); + if (!tinyfd_winUtf8) { (void)SetConsoleCP(lOriginalCP); (void)SetConsoleOutputCP(lOriginalOutputCP); } + return 1; + } + } +} + + +/* return has only meaning for tinyfd_query */ +int tinyfd_notifyPopup( + char const * aTitle, /* NULL or "" */ + char const * aMessage , /* NULL or "" may contain \n \t */ + char const * aIconType ) /* "info" "warning" "error" */ +{ + if (tfd_quoteDetected(aTitle)) return tinyfd_notifyPopup("INVALID TITLE WITH QUOTES", aMessage, aIconType); + if (tfd_quoteDetected(aMessage)) return tinyfd_notifyPopup(aTitle, "INVALID MESSAGE WITH QUOTES", aIconType); + + if ( powershellPresent() && (!tinyfd_forceConsole || !( + GetConsoleWindow() || + dialogPresent())) + && (!getenv("SSH_CLIENT") || getenvDISPLAY())) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"windows");return 1;} + return notifyWinGui(aTitle, aMessage, aIconType); + } + else + return tinyfd_messageBox(aTitle, aMessage, "ok" , aIconType, 0); +} + + +/* returns NULL on cancel */ +char * tinyfd_inputBox( + char const * aTitle , /* NULL or "" */ + char const * aMessage , /* NULL or "" (\n and \t have no effect) */ + char const * aDefaultInput ) /* "" , if NULL it's a passwordBox */ +{ + static char lBuff[MAX_PATH_OR_CMD] = ""; + char * lEOF; + + DWORD mode = 0; + HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE); + + unsigned long lNum; + void * lConsoleHandle; + char * lTmpChar; + wchar_t lBuffW[1024]; + + UINT lOriginalCP = 0; + UINT lOriginalOutputCP = 0; + + if (!aTitle && !aMessage && !aDefaultInput) return lBuff; /* now I can fill lBuff from outside */ + + if (tfd_quoteDetected(aTitle)) return tinyfd_inputBox("INVALID TITLE WITH QUOTES", aMessage, aDefaultInput); + if (tfd_quoteDetected(aMessage)) return tinyfd_inputBox(aTitle, "INVALID MESSAGE WITH QUOTES", aDefaultInput); + if (tfd_quoteDetected(aDefaultInput)) return tinyfd_inputBox(aTitle, aMessage, "INVALID DEFAULT_INPUT WITH QUOTES: use the GRAVE ACCENT \\x60 instead."); + + mode = 0; + hStdin = GetStdHandle(STD_INPUT_HANDLE); + + if ((!tinyfd_forceConsole || !( + GetConsoleWindow() || + dialogPresent())) + && (!getenv("SSH_CLIENT") || getenvDISPLAY())) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"windows");return (char *)1;} + lBuff[0]='\0'; + if (inputBoxWinGui(lBuff, aTitle, aMessage, aDefaultInput)) return lBuff; + else return NULL; + } + else if ( dialogPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"dialog");return (char *)0;} + lBuff[0]='\0'; + if (inputBoxWinConsole(lBuff, aTitle, aMessage, aDefaultInput) ) return lBuff; + else return NULL; + } + else + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"basicinput");return (char *)0;} + lBuff[0]='\0'; + if (!gWarningDisplayed && !tinyfd_forceConsole) + { + gWarningDisplayed = 1 ; + printf("\n\n%s\n", gTitle); + printf("%s\n\n", tinyfd_needs); + } + + if (!tinyfd_winUtf8) + { + lOriginalCP = GetConsoleCP(); + lOriginalOutputCP = GetConsoleOutputCP(); + (void)SetConsoleCP(GetACP()); + (void)SetConsoleOutputCP(GetACP()); + } + + if (aTitle && strlen(aTitle)) + { + printf("\n"); + if (tinyfd_winUtf8) writeUtf8(aTitle); + else printf("%s", aTitle); + printf("\n\n"); + } + if ( aMessage && strlen(aMessage) ) + { + if (tinyfd_winUtf8) writeUtf8(aMessage); + else printf("%s", aMessage); + printf("\n"); + } + printf("(ctrl-Z + enter to cancel): "); fflush(stdout); + if ( ! aDefaultInput ) + { + (void) GetConsoleMode(hStdin, &mode); + (void) SetConsoleMode(hStdin, mode & (~ENABLE_ECHO_INPUT)); + } + if (tinyfd_winUtf8) + { + lConsoleHandle = GetStdHandle(STD_INPUT_HANDLE); + (void) ReadConsoleW(lConsoleHandle, lBuffW, MAX_PATH_OR_CMD, &lNum, NULL); + if (!aDefaultInput) + { + (void)SetConsoleMode(hStdin, mode); + printf("\n"); + } + lBuffW[lNum] = '\0'; + if (lBuffW[wcslen(lBuffW) - 1] == '\n') lBuffW[wcslen(lBuffW) - 1] = '\0'; + if (lBuffW[wcslen(lBuffW) - 1] == '\r') lBuffW[wcslen(lBuffW) - 1] = '\0'; + lTmpChar = tinyfd_utf16to8(lBuffW); + if (lTmpChar) + { + strcpy(lBuff, lTmpChar); + return lBuff; + } + else + return NULL; + } + else + { + lEOF = fgets(lBuff, MAX_PATH_OR_CMD, stdin); + if (!aDefaultInput) + { + (void)SetConsoleMode(hStdin, mode); + printf("\n"); + } + + if (!tinyfd_winUtf8) + { + (void)SetConsoleCP(lOriginalCP); + (void)SetConsoleOutputCP(lOriginalOutputCP); + } + + if (!lEOF) + { + return NULL; + } + printf("\n"); + if (strchr(lBuff, 27)) + { + return NULL; + } + if (lBuff[strlen(lBuff) - 1] == '\n') + { + lBuff[strlen(lBuff) - 1] = '\0'; + } + return lBuff; + } + } +} + + +char * tinyfd_saveFileDialog( + char const * aTitle , /* NULL or "" */ + char const * aDefaultPathAndOrFile , /* NULL or "" */ + int aNumOfFilterPatterns , /* 0 */ + char const * const * aFilterPatterns , /* NULL or {"*.jpg","*.png"} */ + char const * aSingleFilterDescription ) /* NULL or "image files" */ +{ + static char lBuff[MAX_PATH_OR_CMD] ; + char lString[MAX_PATH_OR_CMD] ; + char * p ; + char * lPointerInputBox; + int i; + + lBuff[0]='\0'; + + if ( ! aFilterPatterns ) aNumOfFilterPatterns = 0 ; + if (tfd_quoteDetected(aTitle)) return tinyfd_saveFileDialog("INVALID TITLE WITH QUOTES", aDefaultPathAndOrFile, aNumOfFilterPatterns, aFilterPatterns, aSingleFilterDescription); + if (tfd_quoteDetected(aDefaultPathAndOrFile)) return tinyfd_saveFileDialog(aTitle, "INVALID DEFAULT_PATH WITH QUOTES", aNumOfFilterPatterns, aFilterPatterns, aSingleFilterDescription); + if (tfd_quoteDetected(aSingleFilterDescription)) return tinyfd_saveFileDialog(aTitle, aDefaultPathAndOrFile, aNumOfFilterPatterns, aFilterPatterns, "INVALID FILTER_DESCRIPTION WITH QUOTES"); + for (i = 0; i < aNumOfFilterPatterns; i++) + { + if (tfd_quoteDetected(aFilterPatterns[i])) return tinyfd_saveFileDialog("INVALID FILTER_PATTERN WITH QUOTES: use the GRAVE ACCENT \\x60 instead.", aDefaultPathAndOrFile, 0, NULL, NULL); + } + + + if ( ( !tinyfd_forceConsole || !( GetConsoleWindow() || dialogPresent() ) ) + && (!getenv("SSH_CLIENT") || getenvDISPLAY())) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"windows");return (char *)1;} + p = saveFileDialogWinGui(lBuff, + aTitle, aDefaultPathAndOrFile, aNumOfFilterPatterns, (char const * const *)aFilterPatterns, aSingleFilterDescription); + } + else if (dialogPresent()) + { + if (aTitle&&!strcmp(aTitle, "tinyfd_query")){ strcpy(tinyfd_response, "dialog"); return (char *)0; } + p = saveFileDialogWinConsole(lBuff, aTitle, aDefaultPathAndOrFile); + } + else + { + if (aTitle&&!strcmp(aTitle, "tinyfd_query")){ strcpy(tinyfd_response, "basicinput"); return (char *)0; } + strcpy(lBuff, "Save file in "); + strcat(lBuff, getCurDir()); + + lPointerInputBox = tinyfd_inputBox(NULL,NULL,NULL); /* obtain a pointer on the current content of tinyfd_inputBox */ + if (lPointerInputBox) strcpy(lString, lPointerInputBox); /* preserve the current content of tinyfd_inputBox */ + p = tinyfd_inputBox(aTitle, lBuff, ""); + if (p) strcpy(lBuff, p); else lBuff[0] = '\0'; + if (lPointerInputBox) strcpy(lPointerInputBox, lString); /* restore its previous content to tinyfd_inputBox */ + p = lBuff; + } + + if ( ! p || ! strlen( p ) ) + { + return NULL; + } + getPathWithoutFinalSlash( lString , p ) ; + if ( strlen( lString ) && ! dirExists( lString ) ) + { + return NULL ; + } + getLastName(lString,p); + if ( ! filenameValid(lString) ) + { + return NULL; + } + return p ; +} + + +/* in case of multiple files, the separator is | */ +char * tinyfd_openFileDialog( + char const * aTitle , /* NULL or "" */ + char const * aDefaultPathAndOrFile, /* NULL or "" */ + int aNumOfFilterPatterns , /* 0 */ + char const * const * aFilterPatterns, /* NULL or {"*.jpg","*.png"} */ + char const * aSingleFilterDescription, /* NULL or "image files" */ + int aAllowMultipleSelects ) /* 0 or 1 */ +{ + static char lBuff[MAX_PATH_OR_CMD]; + char lString[MAX_PATH_OR_CMD]; + char * p; + char * lPointerInputBox; + int i; + + if ( ! aFilterPatterns ) aNumOfFilterPatterns = 0 ; + if (tfd_quoteDetected(aTitle)) return tinyfd_openFileDialog("INVALID TITLE WITH QUOTES", aDefaultPathAndOrFile, aNumOfFilterPatterns, aFilterPatterns, aSingleFilterDescription, aAllowMultipleSelects); + if (tfd_quoteDetected(aDefaultPathAndOrFile)) return tinyfd_openFileDialog(aTitle, "INVALID DEFAULT_PATH WITH QUOTES", aNumOfFilterPatterns, aFilterPatterns, aSingleFilterDescription, aAllowMultipleSelects); + if (tfd_quoteDetected(aSingleFilterDescription)) return tinyfd_openFileDialog(aTitle, aDefaultPathAndOrFile, aNumOfFilterPatterns, aFilterPatterns, "INVALID FILTER_DESCRIPTION WITH QUOTES", aAllowMultipleSelects); + for (i = 0; i < aNumOfFilterPatterns; i++) + { + if (tfd_quoteDetected(aFilterPatterns[i])) return tinyfd_openFileDialog("INVALID FILTER_PATTERN WITH QUOTES: use the GRAVE ACCENT \\x60 instead.", aDefaultPathAndOrFile, 0, NULL, NULL, aAllowMultipleSelects); + } + + if ( ( !tinyfd_forceConsole || !( GetConsoleWindow() || dialogPresent() ) ) + && (!getenv("SSH_CLIENT") || getenvDISPLAY())) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"windows");return (char *)1;} + p = openFileDialogWinGui( aTitle, aDefaultPathAndOrFile, aNumOfFilterPatterns, + (char const * const *)aFilterPatterns, aSingleFilterDescription, aAllowMultipleSelects); + } + else if (dialogPresent()) + { + if (aTitle&&!strcmp(aTitle, "tinyfd_query")){ strcpy(tinyfd_response, "dialog"); return (char *)0; } + p = openFileDialogWinConsole(aTitle, aDefaultPathAndOrFile); + } + else + { + if (aTitle&&!strcmp(aTitle, "tinyfd_query")){ strcpy(tinyfd_response, "basicinput"); return (char *)0; } + strcpy(lBuff, "Open file from "); + strcat(lBuff, getCurDir()); + lPointerInputBox = tinyfd_inputBox(NULL, NULL, NULL); /* obtain a pointer on the current content of tinyfd_inputBox */ + if (lPointerInputBox) strcpy(lString, lPointerInputBox); /* preserve the current content of tinyfd_inputBox */ + p = tinyfd_inputBox(aTitle, lBuff, ""); + if (p) strcpy(lBuff, p); else lBuff[0] = '\0'; + if (lPointerInputBox) strcpy(lPointerInputBox, lString); /* restore its previous content to tinyfd_inputBox */ + p = lBuff; + } + + if ( ! p || ! strlen( p ) ) + { + return NULL; + } + if ( aAllowMultipleSelects && strchr(p, '|') ) + { + p = ensureFilesExist( (char *) p , p ) ; + } + else if ( ! fileExists(p) ) + { + return NULL ; + } + /* printf( "lBuff3: %s\n" , p ) ; */ + return p ; +} + + +char * tinyfd_selectFolderDialog( + char const * aTitle , /* NULL or "" */ + char const * aDefaultPath ) /* NULL or "" */ +{ + static char lBuff[MAX_PATH_OR_CMD]; + char * p; + char * lPointerInputBox; + char lString[MAX_PATH_OR_CMD]; + + if (tfd_quoteDetected(aTitle)) return tinyfd_selectFolderDialog("INVALID TITLE WITH QUOTES", aDefaultPath); + if (tfd_quoteDetected(aDefaultPath)) return tinyfd_selectFolderDialog(aTitle, "INVALID DEFAULT_PATH WITH QUOTES"); + + if ( ( !tinyfd_forceConsole || !( GetConsoleWindow() || dialogPresent() ) ) + && (!getenv("SSH_CLIENT") || getenvDISPLAY())) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"windows");return (char *)1;} + p = selectFolderDialogWinGui(lBuff, aTitle, aDefaultPath); + } + else + if (dialogPresent()) + { + if (aTitle&&!strcmp(aTitle, "tinyfd_query")){ strcpy(tinyfd_response, "dialog"); return (char *)0; } + p = selectFolderDialogWinConsole(lBuff, aTitle, aDefaultPath); + } + else + { + if (aTitle&&!strcmp(aTitle, "tinyfd_query")){ strcpy(tinyfd_response, "basicinput"); return (char *)0; } + strcpy(lBuff, "Select folder from "); + strcat(lBuff, getCurDir()); + lPointerInputBox = tinyfd_inputBox(NULL, NULL, NULL); /* obtain a pointer on the current content of tinyfd_inputBox */ + if (lPointerInputBox) strcpy(lString, lPointerInputBox); /* preserve the current content of tinyfd_inputBox */ + p = tinyfd_inputBox(aTitle, lBuff, ""); + if (p) strcpy(lBuff, p); else lBuff[0] = '\0'; + if (lPointerInputBox) strcpy(lPointerInputBox, lString); /* restore its previous content to tinyfd_inputBox */ + p = lBuff; + } + + if ( ! p || ! strlen( p ) || ! dirExists( p ) ) + { + return NULL ; + } + return p ; +} + + +/* aDefaultRGB is used only if aDefaultHexRGB is absent */ +/* aDefaultRGB and aoResultRGB can be the same array */ +/* returns NULL on cancel */ +/* returns the hexcolor as a string "#FF0000" */ +/* aoResultRGB also contains the result */ +char * tinyfd_colorChooser( + char const * aTitle, /* NULL or "" */ + char const * aDefaultHexRGB, /* NULL or "" or "#FF0000"*/ + unsigned char const aDefaultRGB[3], /* { 0 , 255 , 255 } */ + unsigned char aoResultRGB[3]) /* { 0 , 0 , 0 } */ +{ + static char lDefaultHexRGB[16]; + int i; + char * p ; + char * lPointerInputBox; + char lString[MAX_PATH_OR_CMD]; + + lDefaultHexRGB[0] = '\0'; + + if (tfd_quoteDetected(aTitle)) return tinyfd_colorChooser("INVALID TITLE WITH QUOTES", aDefaultHexRGB, aDefaultRGB, aoResultRGB); + if (tfd_quoteDetected(aDefaultHexRGB)) return tinyfd_colorChooser(aTitle, "INVALID DEFAULT_HEX_RGB WITH QUOTES: use the GRAVE ACCENT \\x60 instead.", aDefaultRGB, aoResultRGB); + + if ( (!tinyfd_forceConsole || !( GetConsoleWindow() || dialogPresent()) ) + && (!getenv("SSH_CLIENT") || getenvDISPLAY())) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"windows");return (char *)1;} + p = colorChooserWinGui(aTitle, aDefaultHexRGB, aDefaultRGB, aoResultRGB); + if (p) + { + strcpy(lDefaultHexRGB, p); + return lDefaultHexRGB; + } + return NULL; + } + else if (dialogPresent()) + { + if (aTitle&&!strcmp(aTitle, "tinyfd_query")){ strcpy(tinyfd_response, "dialog"); return (char *)0; } + } + else + { + if (aTitle&&!strcmp(aTitle, "tinyfd_query")){ strcpy(tinyfd_response, "basicinput"); return (char *)0; } + } + + if (aDefaultHexRGB && (strlen(aDefaultHexRGB)==7) ) + { + strncpy(lDefaultHexRGB, aDefaultHexRGB,7); + lDefaultHexRGB[7]='\0'; + } + else + { + RGB2Hex(aDefaultRGB, lDefaultHexRGB); + } + + lPointerInputBox = tinyfd_inputBox(NULL, NULL, NULL); /* obtain a pointer on the current content of tinyfd_inputBox */ + if (lPointerInputBox) strcpy(lString, lPointerInputBox); /* preserve the current content of tinyfd_inputBox */ + p = tinyfd_inputBox(aTitle, "Enter hex rgb color (i.e. #f5ca20)", lDefaultHexRGB); + + if ( !p || (strlen(p) != 7) || (p[0] != '#') ) + { + return NULL ; + } + for ( i = 1 ; i < 7 ; i ++ ) + { + if ( ! isxdigit( (int) p[i] ) ) + { + return NULL ; + } + } + Hex2RGB(p,aoResultRGB); + + strcpy(lDefaultHexRGB, p); + + if (lPointerInputBox) strcpy(lPointerInputBox, lString); /* restore its previous content to tinyfd_inputBox */ + + return lDefaultHexRGB; +} + + +#else /* unix */ + +static char gPython2Name[16]; +static char gPython3Name[16]; +static char gPythonName[16]; + +int tfd_isDarwin(void) +{ + static int lsIsDarwin = -1 ; + struct utsname lUtsname ; + if ( lsIsDarwin < 0 ) + { + lsIsDarwin = !uname(&lUtsname) && !strcmp(lUtsname.sysname,"Darwin") ; + } + return lsIsDarwin ; +} + + +static int dirExists( char const * aDirPath ) +{ + DIR * lDir ; + if ( ! aDirPath || ! strlen( aDirPath ) ) + return 0 ; + lDir = opendir( aDirPath ) ; + if ( ! lDir ) + { + return 0 ; + } + closedir( lDir ) ; + return 1 ; +} + + +static int detectPresence( char const * aExecutable ) +{ + char lBuff[MAX_PATH_OR_CMD] ; + char lTestedString[MAX_PATH_OR_CMD] = "command -v " ; + FILE * lIn ; +#ifdef _GNU_SOURCE + char* lAllocatedCharString; + int lSubstringUndetected; +#endif + + strcat( lTestedString , aExecutable ) ; + strcat( lTestedString, " 2>/dev/null "); + lIn = popen( lTestedString , "r" ) ; + if ( ( fgets( lBuff , sizeof( lBuff ) , lIn ) != NULL ) + && ( ! strchr( lBuff , ':' ) ) && ( strncmp(lBuff, "no ", 3) ) ) + { /* present */ + pclose( lIn ) ; + +#ifdef _GNU_SOURCE /*to bypass this, just comment out "#define _GNU_SOURCE" at the top of the file*/ + if ( lBuff[strlen( lBuff ) -1] == '\n' ) lBuff[strlen( lBuff ) -1] = '\0' ; + lAllocatedCharString = realpath(lBuff,NULL); /*same as canonicalize_file_name*/ + lSubstringUndetected = ! strstr(lAllocatedCharString, aExecutable); + free(lAllocatedCharString); + if (lSubstringUndetected) + { + if (tinyfd_verbose) printf("detectPresence %s %d\n", aExecutable, 0); + return 0; + } +#endif /*_GNU_SOURCE*/ + + if (tinyfd_verbose) printf("detectPresence %s %d\n", aExecutable, 1); + return 1 ; + } + else + { + pclose( lIn ) ; + if (tinyfd_verbose) printf("detectPresence %s %d\n", aExecutable, 0); + return 0 ; + } +} + + +static char * getVersion( char const * aExecutable ) /*version must be first numeral*/ +{ + static char lBuff[MAX_PATH_OR_CMD] ; + char lTestedString[MAX_PATH_OR_CMD] ; + FILE * lIn ; + char * lTmp ; + + strcpy( lTestedString , aExecutable ) ; + strcat( lTestedString , " --version" ) ; + + lIn = popen( lTestedString , "r" ) ; + lTmp = fgets( lBuff , sizeof( lBuff ) , lIn ) ; + pclose( lIn ) ; + + lTmp += strcspn(lTmp,"0123456789"); + /* printf("lTmp:%s\n", lTmp); */ + return lTmp ; +} + + +static int * getMajorMinorPatch( char const * aExecutable ) +{ + static int lArray[3] ; + char * lTmp ; + + lTmp = (char *) getVersion(aExecutable); + lArray[0] = atoi( strtok(lTmp," ,.-") ) ; + /* printf("lArray0 %d\n", lArray[0]); */ + lArray[1] = atoi( strtok(0," ,.-") ) ; + /* printf("lArray1 %d\n", lArray[1]); */ + lArray[2] = atoi( strtok(0," ,.-") ) ; + /* printf("lArray2 %d\n", lArray[2]); */ + + if ( !lArray[0] && !lArray[1] && !lArray[2] ) return NULL; + return lArray ; +} + + +static int tryCommand( char const * aCommand ) +{ + char lBuff[MAX_PATH_OR_CMD] ; + FILE * lIn ; + + lIn = popen( aCommand , "r" ) ; + if ( fgets( lBuff , sizeof( lBuff ) , lIn ) == NULL ) + { /* present */ + pclose( lIn ) ; + return 1 ; + } + else + { + pclose( lIn ) ; + return 0 ; + } + +} + + +static int isTerminalRunning(void) +{ + static int lIsTerminalRunning = -1 ; + if ( lIsTerminalRunning < 0 ) + { + lIsTerminalRunning = isatty(1); + if (tinyfd_verbose) printf("isTerminalRunning %d\n", lIsTerminalRunning ); + } + return lIsTerminalRunning; +} + + +static char * dialogNameOnly(void) +{ + static char lDialogName[128] = "*" ; + if ( lDialogName[0] == '*' ) + { + if (!tinyfd_allowCursesDialogs) + { + strcpy(lDialogName , "" ); + } + else if ( tfd_isDarwin() && * strcpy(lDialogName , "/opt/local/bin/dialog" ) + && detectPresence( lDialogName ) ) + {} + else if ( * strcpy(lDialogName , "dialog" ) + && detectPresence( lDialogName ) ) + {} + else + { + strcpy(lDialogName , "" ); + } + } + return lDialogName ; +} + + +int isDialogVersionBetter09b(void) +{ + char const * lDialogName ; + char * lVersion ; + int lMajor ; + int lMinor ; + int lDate ; + int lResult ; + char * lMinorP ; + char * lLetter ; + char lBuff[128] ; + + /*char lTest[128] = " 0.9b-20031126" ;*/ + + lDialogName = dialogNameOnly() ; + if ( ! strlen(lDialogName) || !(lVersion = (char *) getVersion(lDialogName)) ) return 0 ; + /*lVersion = lTest ;*/ + /*printf("lVersion %s\n", lVersion);*/ + strcpy(lBuff,lVersion); + lMajor = atoi( strtok(lVersion," ,.-") ) ; + /*printf("lMajor %d\n", lMajor);*/ + lMinorP = strtok(0," ,.-abcdefghijklmnopqrstuvxyz"); + lMinor = atoi( lMinorP ) ; + /*printf("lMinor %d\n", lMinor );*/ + lDate = atoi( strtok(0," ,.-") ) ; + if (lDate<0) lDate = - lDate; + /*printf("lDate %d\n", lDate);*/ + lLetter = lMinorP + strlen(lMinorP) ; + strcpy(lVersion,lBuff); + strtok(lLetter," ,.-"); + /*printf("lLetter %s\n", lLetter);*/ + lResult = (lMajor > 0) || ( ( lMinor == 9 ) && (*lLetter == 'b') && (lDate >= 20031126) ); + /*printf("lResult %d\n", lResult);*/ + return lResult; +} + + +static int whiptailPresentOnly(void) +{ + static int lWhiptailPresent = -1 ; + if (!tinyfd_allowCursesDialogs) return 0; + if ( lWhiptailPresent < 0 ) + { + lWhiptailPresent = detectPresence( "whiptail" ) ; + } + return lWhiptailPresent ; +} + + +static char * terminalName(void) +{ + static char lTerminalName[128] = "*" ; + char lShellName[64] = "*" ; + int * lArray; + + if ( lTerminalName[0] == '*' ) + { + if ( detectPresence( "bash" ) ) + { + strcpy(lShellName , "bash -c " ) ; /*good for basic input*/ + } + else if ( strlen(dialogNameOnly()) || whiptailPresentOnly() ) + { + strcpy(lShellName , "sh -c " ) ; /*good enough for dialog & whiptail*/ + } + else + { + strcpy(lTerminalName , "" ) ; + return NULL ; + } + + if ( tfd_isDarwin() ) + { + if ( * strcpy(lTerminalName , "/opt/X11/bin/xterm" ) + && detectPresence( lTerminalName ) ) + { + strcat(lTerminalName , " -fa 'DejaVu Sans Mono' -fs 10 -title tinyfiledialogs -e " ) ; + strcat(lTerminalName , lShellName ) ; + } + else + { + strcpy(lTerminalName , "" ) ; + } + } + else if ( * strcpy(lTerminalName,"xterm") /*good (small without parameters)*/ + && detectPresence(lTerminalName) ) + { + strcat(lTerminalName , " -fa 'DejaVu Sans Mono' -fs 10 -title tinyfiledialogs -e " ) ; + strcat(lTerminalName , lShellName ) ; + } + else if ( * strcpy(lTerminalName,"terminator") /*good*/ + && detectPresence(lTerminalName) ) + { + strcat(lTerminalName , " -x " ) ; + strcat(lTerminalName , lShellName ) ; + } + else if ( * strcpy(lTerminalName,"lxterminal") /*good*/ + && detectPresence(lTerminalName) ) + { + strcat(lTerminalName , " -e " ) ; + strcat(lTerminalName , lShellName ) ; + } + else if ( * strcpy(lTerminalName,"konsole") /*good*/ + && detectPresence(lTerminalName) ) + { + strcat(lTerminalName , " -e " ) ; + strcat(lTerminalName , lShellName ) ; + } + else if ( * strcpy(lTerminalName,"kterm") /*good*/ + && detectPresence(lTerminalName) ) + { + strcat(lTerminalName , " -e " ) ; + strcat(lTerminalName , lShellName ) ; + } + else if ( * strcpy(lTerminalName,"tilix") /*good*/ + && detectPresence(lTerminalName) ) + { + strcat(lTerminalName , " -e " ) ; + strcat(lTerminalName , lShellName ) ; + } + else if ( * strcpy(lTerminalName,"xfce4-terminal") /*good*/ + && detectPresence(lTerminalName) ) + { + strcat(lTerminalName , " -x " ) ; + strcat(lTerminalName , lShellName ) ; + } + else if ( * strcpy(lTerminalName,"mate-terminal") /*good*/ + && detectPresence(lTerminalName) ) + { + strcat(lTerminalName , " -x " ) ; + strcat(lTerminalName , lShellName ) ; + } + else if ( * strcpy(lTerminalName,"Eterm") /*good*/ + && detectPresence(lTerminalName) ) + { + strcat(lTerminalName , " -e " ) ; + strcat(lTerminalName , lShellName ) ; + } + else if ( * strcpy(lTerminalName,"evilvte") /*good*/ + && detectPresence(lTerminalName) ) + { + strcat(lTerminalName , " -e " ) ; + strcat(lTerminalName , lShellName ) ; + } + else if ( * strcpy(lTerminalName,"pterm") /*good (only letters)*/ + && detectPresence(lTerminalName) ) + { + strcat(lTerminalName , " -e " ) ; + strcat(lTerminalName , lShellName ) ; + } + else if ( * strcpy(lTerminalName,"gnome-terminal") + && detectPresence(lTerminalName) && (lArray = getMajorMinorPatch(lTerminalName)) + && ((lArray[0]<3) || (lArray[0]==3 && lArray[1]<=6)) ) + { + strcat(lTerminalName , " --disable-factory -x " ) ; + strcat(lTerminalName , lShellName ) ; + } + else + { + strcpy(lTerminalName , "" ) ; + } + /* bad: koi rxterm guake tilda vala-terminal qterminal kgx + aterm Terminal terminology sakura lilyterm weston-terminal + roxterm termit xvt rxvt mrxvt urxvt */ + } + if ( strlen(lTerminalName) ) + { + return lTerminalName ; + } + else + { + return NULL ; + } +} + + +static char * dialogName(void) +{ + char * lDialogName ; + lDialogName = dialogNameOnly( ) ; + if ( strlen(lDialogName) && ( isTerminalRunning() || terminalName() ) ) + { + return lDialogName ; + } + else + { + return NULL ; + } +} + + +static int whiptailPresent(void) +{ + int lWhiptailPresent ; + lWhiptailPresent = whiptailPresentOnly( ) ; + if ( lWhiptailPresent && ( isTerminalRunning() || terminalName() ) ) + { + return lWhiptailPresent ; + } + else + { + return 0 ; + } +} + + + +static int graphicMode(void) +{ + return !( tinyfd_forceConsole && (isTerminalRunning() || terminalName()) ) + && ( getenvDISPLAY() + || (tfd_isDarwin() && (!getenv("SSH_TTY") || getenvDISPLAY() ) ) ) ; +} + + +static int ffplayPresent(void) +{ + static int lFFplayPresent = -1; + if (lFFplayPresent < 0) + { + lFFplayPresent = detectPresence("ffplay"); + } + return lFFplayPresent; +} + + +static int pactlPresent( void ) +{ + static int lPactlPresent = -1 ; + char lBuff [256] ; + FILE * lIn ; + + if ( lPactlPresent < 0 ) + { + lPactlPresent = detectPresence("pactl") ; + if ( lPactlPresent ) + { + lIn = popen( "pactl info | grep -iF pulseaudio" , "r" ) ; + if ( ! (fgets( lBuff , sizeof( lBuff ) , lIn ) && ! strstr(lBuff, "PipeWire") ) ) + { + lPactlPresent = 0 ; + } + pclose( lIn ) ; + if (tinyfd_verbose) printf("is pactl valid ? %d\n", lPactlPresent); + } + } + return lPactlPresent ; +} + + +static int speakertestPresent(void) +{ + static int lSpeakertestPresent = -1 ; + if ( lSpeakertestPresent < 0 ) + { + lSpeakertestPresent = detectPresence("speaker-test") ; + } + return lSpeakertestPresent ; +} + + +static int playPresent(void) /* play is part of sox */ +{ + static int lPlayPresent = -1; + if (lPlayPresent < 0) + { + lPlayPresent = detectPresence("sox"); /*if sox is present, play is ready*/ + } + return lPlayPresent; +} + + +static int beepexePresent(void) +{ + static int lBeepexePresent = -1; + if (lBeepexePresent < 0) + { + lBeepexePresent = detectPresence("beep.exe"); + } + return lBeepexePresent; +} + + +/*static int beepPresent(void) +{ + static int lBeepPresent = -1 ; + if ( lBeepPresent < 0 ) + { + lBeepPresent = detectPresence("beep") ; + } + return lBeepPresent ; +}*/ + + +static int playsoundPresent(void) /* playsound is part of pipewire */ +{ + static int lPlaysoundPresent = -1 ; + if (lPlaysoundPresent < 0) + { + lPlaysoundPresent = detectPresence("playsound_simple"); + if ( lPlaysoundPresent && ! fileExists("/usr/share/sounds/freedesktop/stereo/bell.oga") ) + { + lPlaysoundPresent = 0 ; + } + } + return lPlaysoundPresent; +} + + +static int paplayPresent(void) /* playsound is part of pipewire */ +{ + static int lPaplayPresent = -1 ; + if (lPaplayPresent < 0) + { + lPaplayPresent = detectPresence("paplay"); + if ( lPaplayPresent && ! fileExists("/usr/share/sounds/freedesktop/stereo/bell.oga") ) + { + lPaplayPresent = 0 ; + } + } + return lPaplayPresent; +} + + +static int xmessagePresent(void) +{ + static int lXmessagePresent = -1 ; + if ( lXmessagePresent < 0 ) + { + lXmessagePresent = detectPresence("xmessage");/*if not tty,not on osxpath*/ + } + return lXmessagePresent && graphicMode( ) ; +} + + +static int gxmessagePresent(void) +{ + static int lGxmessagePresent = -1 ; + if ( lGxmessagePresent < 0 ) + { + lGxmessagePresent = detectPresence("gxmessage") ; + } + return lGxmessagePresent && graphicMode( ) ; +} + + +static int gmessagePresent(void) +{ + static int lGmessagePresent = -1 ; + if ( lGmessagePresent < 0 ) + { + lGmessagePresent = detectPresence("gmessage") ; + } + return lGmessagePresent && graphicMode( ) ; +} + + +static int notifysendPresent(void) +{ + static int lNotifysendPresent = -1 ; + if ( lNotifysendPresent < 0 ) + { + lNotifysendPresent = detectPresence("notify-send") ; + } + return lNotifysendPresent && graphicMode( ) ; +} + + +static int perlPresent(void) +{ + static int lPerlPresent = -1 ; + char lBuff[MAX_PATH_OR_CMD] ; + FILE * lIn ; + + if ( lPerlPresent < 0 ) + { + lPerlPresent = detectPresence("perl") ; + if (lPerlPresent) + { + lIn = popen("perl -MNet::DBus -e \"Net::DBus->session->get_service('org.freedesktop.Notifications')\" 2>&1", "r"); + if (fgets(lBuff, sizeof(lBuff), lIn) == NULL) + { + lPerlPresent = 2; + } + pclose(lIn); + if (tinyfd_verbose) printf("perl-dbus %d\n", lPerlPresent); + } + } + return graphicMode() ? lPerlPresent : 0 ; +} + + +static int afplayPresent(void) +{ + static int lAfplayPresent = -1 ; + char lBuff[MAX_PATH_OR_CMD] ; + FILE * lIn ; + + if ( lAfplayPresent < 0 ) + { + lAfplayPresent = detectPresence("afplay") ; + if ( lAfplayPresent ) + { + lIn = popen( "test -e /System/Library/Sounds/Ping.aiff || echo Ping" , "r" ) ; + if ( fgets( lBuff , sizeof( lBuff ) , lIn ) == NULL ) + { + lAfplayPresent = 2 ; + } + pclose( lIn ) ; + if (tinyfd_verbose) printf("afplay %d\n", lAfplayPresent); + } + } + return graphicMode() ? lAfplayPresent : 0 ; +} + + +static int xdialogPresent(void) +{ + static int lXdialogPresent = -1 ; + if ( lXdialogPresent < 0 ) + { + lXdialogPresent = detectPresence("Xdialog") ; + } + return lXdialogPresent && graphicMode( ) ; +} + + +static int gdialogPresent(void) +{ + static int lGdialoglPresent = -1 ; + if ( lGdialoglPresent < 0 ) + { + lGdialoglPresent = detectPresence( "gdialog" ) ; + } + return lGdialoglPresent && graphicMode( ) ; +} + + +static int osascriptPresent(void) +{ + static int lOsascriptPresent = -1 ; + if ( lOsascriptPresent < 0 ) + { + gWarningDisplayed |= !!getenv("SSH_TTY"); + lOsascriptPresent = detectPresence( "osascript" ) ; + } + return lOsascriptPresent && graphicMode() && !getenv("SSH_TTY") ; +} + + +static int dunstifyPresent(void) +{ + static int lDunstifyPresent = -1 ; + static char lBuff[MAX_PATH_OR_CMD] ; + FILE * lIn ; + char * lTmp ; + + if ( lDunstifyPresent < 0 ) + { + lDunstifyPresent = detectPresence( "dunstify" ) ; + if ( lDunstifyPresent ) + { + lIn = popen( "dunstify -s" , "r" ) ; + lTmp = fgets( lBuff , sizeof( lBuff ) , lIn ) ; + pclose( lIn ) ; + /* printf("lTmp:%s\n", lTmp); */ + lDunstifyPresent = strstr(lTmp,"name:dunst\n") ? 1 : 0 ; + if (tinyfd_verbose) printf("lDunstifyPresent %d\n", lDunstifyPresent); + } + } + return lDunstifyPresent && graphicMode( ) ; +} + + +static int dunstPresent(void) +{ + static int lDunstPresent = -1 ; + static char lBuff[MAX_PATH_OR_CMD] ; + FILE * lIn ; + char * lTmp ; + + if ( lDunstPresent < 0 ) + { + lDunstPresent = detectPresence( "dunst" ) ; + if ( lDunstPresent ) + { + lIn = popen( "ps -e | grep dunst | grep -v grep" , "r" ) ; /* add "| wc -l" to receive the number of lines */ + lTmp = fgets( lBuff , sizeof( lBuff ) , lIn ) ; + pclose( lIn ) ; + /* if ( lTmp ) printf("lTmp:%s\n", lTmp); */ + if ( lTmp ) lDunstPresent = 1 ; + else lDunstPresent = 0 ; + if (tinyfd_verbose) printf("lDunstPresent %d\n", lDunstPresent); + } + } + return lDunstPresent && graphicMode( ) ; +} + + +int tfd_qarmaPresent(void) +{ + static int lQarmaPresent = -1 ; + if ( lQarmaPresent < 0 ) + { + lQarmaPresent = detectPresence("qarma") ; + } + return lQarmaPresent && graphicMode( ) ; +} + + +int tfd_matedialogPresent(void) +{ + static int lMatedialogPresent = -1 ; + if ( lMatedialogPresent < 0 ) + { + lMatedialogPresent = detectPresence("matedialog") ; + } + return lMatedialogPresent && graphicMode( ) ; +} + + +int tfd_shellementaryPresent(void) +{ + static int lShellementaryPresent = -1 ; + if ( lShellementaryPresent < 0 ) + { + lShellementaryPresent = 0 ; /*detectPresence("shellementary"); shellementary is not ready yet */ + } + return lShellementaryPresent && graphicMode( ) ; +} + + +int tfd_xpropPresent(void) +{ + static int lXpropReady = 0 ; + static int lXpropDetected = -1 ; + char lBuff[MAX_PATH_OR_CMD] ; + FILE * lIn ; + + if ( lXpropDetected < 0 ) + { + lXpropDetected = detectPresence("xprop") ; + } + + if ( !lXpropReady && lXpropDetected ) + { /* xwayland Debian issue reported by Kay F. Jahnke and solved with his help */ + lIn = popen( "xprop -root 32x ' $0' _NET_ACTIVE_WINDOW" , "r" ) ; + if ( fgets( lBuff , sizeof( lBuff ) , lIn ) != NULL ) + { + if ( ! strstr( lBuff , "not found" ) ) + { + if (tinyfd_verbose) printf("xprop is ready\n"); + lXpropReady = 1 ; + } + } + pclose( lIn ) ; + } + return graphicMode() ? lXpropReady : 0 ; +} + + +int tfd_zenityPresent(void) +{ + static int lZenityPresent = -1 ; + if ( lZenityPresent < 0 ) + { + lZenityPresent = detectPresence("zenity") ; + } + return lZenityPresent && graphicMode( ) ; +} + + +int tfd_yadPresent(void) +{ + static int lYadPresent = -1; + if (lYadPresent < 0) + { + lYadPresent = detectPresence("yad"); + } + return lYadPresent && graphicMode(); +} + + +int tfd_zenity3Present(void) +{ + static int lZenity3Present = -1 ; + char lBuff[MAX_PATH_OR_CMD] ; + FILE * lIn ; + int lIntTmp ; + + if ( lZenity3Present < 0 ) + { + lZenity3Present = 0 ; + if ( tfd_zenityPresent() ) + { + lIn = popen( "zenity --version" , "r" ) ; + if ( fgets( lBuff , sizeof( lBuff ) , lIn ) != NULL ) + { + if ( atoi(lBuff) >= 3 ) + { + lZenity3Present = 3 ; + lIntTmp = atoi(strtok(lBuff,".")+2 ) ; + if ( lIntTmp >= 18 ) + { + lZenity3Present = 5 ; + } + else if ( lIntTmp >= 10 ) + { + lZenity3Present = 4 ; + } + } + else if ( ( atoi(lBuff) == 2 ) && ( atoi(strtok(lBuff,".")+2 ) >= 32 ) ) + { + lZenity3Present = 2 ; + } + if (tinyfd_verbose) printf("zenity type %d\n", lZenity3Present); + } + pclose( lIn ) ; + } + } + return graphicMode() ? lZenity3Present : 0 ; +} + + +int tfd_kdialogPresent(void) +{ + static int lKdialogPresent = -1 ; + char lBuff[MAX_PATH_OR_CMD] ; + FILE * lIn ; + char * lDesktop; + + if ( lKdialogPresent < 0 ) + { + lDesktop = getenv("XDG_SESSION_DESKTOP"); + if ( !lDesktop || ( strcmp(lDesktop, "KDE") && strcmp(lDesktop, "lxqt") ) ) + { + if ( tfd_zenityPresent() ) + { + lKdialogPresent = 0 ; + return lKdialogPresent ; + } + } + + lKdialogPresent = detectPresence("kdialog") ; + if ( lKdialogPresent && !getenv("SSH_TTY") ) + { + lIn = popen( "kdialog --attach 2>&1" , "r" ) ; + if ( fgets( lBuff , sizeof( lBuff ) , lIn ) != NULL ) + { + if ( ! strstr( "Unknown" , lBuff ) ) + { + lKdialogPresent = 2 ; + if (tinyfd_verbose) printf("kdialog-attach %d\n", lKdialogPresent); + } + } + pclose( lIn ) ; + + if (lKdialogPresent == 2) + { + lKdialogPresent = 1 ; + lIn = popen( "kdialog --passivepopup 2>&1" , "r" ) ; + if ( fgets( lBuff , sizeof( lBuff ) , lIn ) != NULL ) + { + if ( ! strstr( "Unknown" , lBuff ) ) + { + lKdialogPresent = 2 ; + if (tinyfd_verbose) printf("kdialog-popup %d\n", lKdialogPresent); + } + } + pclose( lIn ) ; + } + } + } + return graphicMode() ? lKdialogPresent : 0 ; +} + + +static int osx9orBetter(void) +{ + static int lOsx9orBetter = -1 ; + char lBuff[MAX_PATH_OR_CMD] ; + FILE * lIn ; + int V,v; + + if ( lOsx9orBetter < 0 ) + { + lOsx9orBetter = 0 ; + lIn = popen( "osascript -e 'set osver to system version of (system info)'" , "r" ) ; + V = 0 ; + if ( ( fgets( lBuff , sizeof( lBuff ) , lIn ) != NULL ) + && ( 2 == sscanf(lBuff, "%d.%d", &V, &v) ) ) + { + V = V * 100 + v; + if ( V >= 1009 ) + { + lOsx9orBetter = 1 ; + } + } + pclose( lIn ) ; + if (tinyfd_verbose) printf("Osx10 = %d, %d = %s\n", lOsx9orBetter, V, lBuff) ; + } + return lOsx9orBetter ; +} + + +static int python3Present(void) +{ + static int lPython3Present = -1 ; + + if ( lPython3Present < 0 ) + { + lPython3Present = 0 ; + strcpy(gPython3Name , "python3" ) ; + if ( detectPresence(gPython3Name) ) lPython3Present = 1; + if (tinyfd_verbose) printf("lPython3Present %d\n", lPython3Present) ; + if (tinyfd_verbose) printf("gPython3Name %s\n", gPython3Name) ; + } + return lPython3Present ; +} + + +static int python2Present(void) +{ + static int lPython2Present = -1 ; + + if ( lPython2Present < 0 ) + { + lPython2Present = 0 ; + strcpy(gPython2Name , "python2" ) ; + if ( detectPresence(gPython2Name) ) lPython2Present = 1; + if (tinyfd_verbose) printf("lPython2Present %d\n", lPython2Present) ; + if (tinyfd_verbose) printf("gPython2Name %s\n", gPython2Name) ; + } + return lPython2Present ; +} + + +static int tkinter3Present(void) +{ + static int lTkinter3Present = -1 ; + char lPythonCommand[256]; + char lPythonParams[128] = + "-S -c \"try:\n\timport tkinter;\nexcept:\n\tprint(0);\""; + + if ( lTkinter3Present < 0 ) + { + lTkinter3Present = 0 ; + if ( python3Present() ) + { + sprintf( lPythonCommand , "%s %s" , gPython3Name , lPythonParams ) ; + lTkinter3Present = tryCommand(lPythonCommand) ; + } + if (tinyfd_verbose) printf("lTkinter3Present %d\n", lTkinter3Present) ; + } + return lTkinter3Present && graphicMode() && !(tfd_isDarwin() && getenv("SSH_TTY") ); +} + + +static int tkinter2Present(void) +{ + static int lTkinter2Present = -1 ; + char lPythonCommand[256]; + char lPythonParams[128] = + "-S -c \"try:\n\timport Tkinter;\nexcept:\n\tprint 0;\""; + + if ( lTkinter2Present < 0 ) + { + lTkinter2Present = 0 ; + if ( python2Present() ) + { + sprintf( lPythonCommand , "%s %s" , gPython2Name , lPythonParams ) ; + lTkinter2Present = tryCommand(lPythonCommand) ; + } + if (tinyfd_verbose) printf("lTkinter2Present %d graphicMode %d \n", lTkinter2Present, graphicMode() ) ; + } + return lTkinter2Present && graphicMode() && !(tfd_isDarwin() && getenv("SSH_TTY") ); +} + + +static int pythonDbusPresent(void) +{ + static int lPythonDbusPresent = -1 ; + char lPythonCommand[384]; + char lPythonParams[256] = +"-c \"try:\n\timport dbus;bus=dbus.SessionBus();\ +notif=bus.get_object('org.freedesktop.Notifications','/org/freedesktop/Notifications');\ +notify=dbus.Interface(notif,'org.freedesktop.Notifications');\nexcept:\n\tprint(0);\""; + + if (lPythonDbusPresent < 0 ) + { + lPythonDbusPresent = 0 ; + if ( python2Present() ) + { + strcpy(gPythonName , gPython2Name ) ; + sprintf( lPythonCommand , "%s %s" , gPythonName , lPythonParams ) ; + lPythonDbusPresent = tryCommand(lPythonCommand) ; + } + + if ( !lPythonDbusPresent && python3Present() ) + { + strcpy(gPythonName , gPython3Name ) ; + sprintf( lPythonCommand , "%s %s" , gPythonName , lPythonParams ) ; + lPythonDbusPresent = tryCommand(lPythonCommand) ; + } + + if (tinyfd_verbose) printf("lPythonDbusPresent %d\n", lPythonDbusPresent) ; + if (tinyfd_verbose) printf("gPythonName %s\n", gPythonName) ; + } + return lPythonDbusPresent && graphicMode() && !(tfd_isDarwin() && getenv("SSH_TTY") ); +} + + +static void sigHandler(int signum) +{ + FILE * lIn ; + if ( ( lIn = popen( "pactl unload-module module-sine" , "r" ) ) ) + { + pclose( lIn ) ; + } + if (tinyfd_verbose) printf("tinyfiledialogs caught signal %d\n", signum); +} + + +void tinyfd_beep(void) +{ + char lDialogString[256] ; + FILE * lIn ; + + if ( pactlPresent() ) + { + signal(SIGINT, sigHandler); + strcpy( lDialogString , + "thnum=$(pactl load-module module-sine frequency=440);sleep .3;pactl unload-module $thnum" ) ; + } + else if ( osascriptPresent() ) + { + if ( afplayPresent() >= 2 ) + { + strcpy( lDialogString , "afplay /System/Library/Sounds/Ping.aiff") ; + } + else + { + strcpy( lDialogString , "osascript -e 'tell application \"System Events\" to beep'") ; + } + } + else if ( speakertestPresent() ) + { + /*strcpy( lDialogString , "timeout -k .3 .3 speaker-test --frequency 440 --test sine > /dev/tty" ) ;*/ + strcpy( lDialogString , "( speaker-test -t sine -f 440 > /dev/tty )& pid=$!;sleep .5; kill -9 $pid" ) ; /*.3 was too short for mac g3*/ + } + else if ( ffplayPresent() ) + { + strcpy(lDialogString, "ffplay -f lavfi -i sine=f=440:d=0.15 -autoexit -nodisp" ); + } + else if (playPresent()) /* play is part of sox */ + { + strcpy(lDialogString, "play -q -n synth .3 sine 440"); + } + else if ( playsoundPresent() ) + { + strcpy( lDialogString , "playsound_simple /usr/share/sounds/freedesktop/stereo/bell.oga") ; + } + else if ( paplayPresent() ) + { + strcpy( lDialogString , "paplay /usr/share/sounds/freedesktop/stereo/bell.oga") ; + } + else if (beepexePresent()) + { + strcpy(lDialogString, "beep.exe 440 300"); + } + /*else if ( beepPresent() ) + { + strcpy( lDialogString , "beep -f 440 -l 300" ) ; + }*/ + else + { + strcpy( lDialogString , "printf '\\a' > /dev/tty" ) ; + } + + if (tinyfd_verbose) printf( "lDialogString: %s\n" , lDialogString ) ; + + if ( ( lIn = popen( lDialogString , "r" ) ) ) + { + pclose( lIn ) ; + } + + if ( pactlPresent() ) + { + signal(SIGINT, SIG_DFL); + } +} + + +int tinyfd_messageBox( + char const * aTitle , /* NULL or "" */ + char const * aMessage , /* NULL or "" may contain \n and \t */ + char const * aDialogType , /* "ok" "okcancel" "yesno" "yesnocancel" */ + char const * aIconType , /* "info" "warning" "error" "question" */ + int aDefaultButton ) /* 0 for cancel/no , 1 for ok/yes , 2 for no in yesnocancel */ +{ + char lBuff[MAX_PATH_OR_CMD] ; + char * lDialogString = NULL ; + char * lpDialogString; + FILE * lIn ; + int lWasGraphicDialog = 0 ; + int lWasXterm = 0 ; + int lResult ; + char lChar ; + struct termios infoOri; + struct termios info; + size_t lTitleLen ; + size_t lMessageLen ; + + lBuff[0]='\0'; + + if (tfd_quoteDetected(aTitle)) return tinyfd_messageBox("INVALID TITLE WITH QUOTES", aMessage, aDialogType, aIconType, aDefaultButton); + if (tfd_quoteDetected(aMessage)) return tinyfd_messageBox(aTitle, "INVALID MESSAGE WITH QUOTES", aDialogType, aIconType, aDefaultButton); + + lTitleLen = aTitle ? strlen(aTitle) : 0 ; + lMessageLen = aMessage ? strlen(aMessage) : 0 ; + if ( !aTitle || strcmp(aTitle,"tinyfd_query") ) + { + lDialogString = (char *) malloc( MAX_PATH_OR_CMD + lTitleLen + lMessageLen ); + } + + if ( osascriptPresent( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"applescript");return 1;} + + strcpy( lDialogString , "osascript "); + if ( ! osx9orBetter() ) strcat( lDialogString , " -e 'tell application \"System Events\"' -e 'Activate'"); + strcat( lDialogString , " -e 'try' -e 'set {vButton} to {button returned} of ( display dialog \"") ; + if ( aMessage && strlen(aMessage) ) + { + strcat(lDialogString, aMessage) ; + } + strcat(lDialogString, "\" ") ; + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, "with title \"") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\" ") ; + } + strcat(lDialogString, "with icon ") ; + if ( aIconType && ! strcmp( "error" , aIconType ) ) + { + strcat(lDialogString, "stop " ) ; + } + else if ( aIconType && ! strcmp( "warning" , aIconType ) ) + { + strcat(lDialogString, "caution " ) ; + } + else /* question or info */ + { + strcat(lDialogString, "note " ) ; + } + if ( aDialogType && ! strcmp( "okcancel" , aDialogType ) ) + { + if ( ! aDefaultButton ) + { + strcat( lDialogString ,"default button \"Cancel\" " ) ; + } + } + else if ( aDialogType && ! strcmp( "yesno" , aDialogType ) ) + { + strcat( lDialogString ,"buttons {\"No\", \"Yes\"} " ) ; + if (aDefaultButton) + { + strcat( lDialogString ,"default button \"Yes\" " ) ; + } + else + { + strcat( lDialogString ,"default button \"No\" " ) ; + } + strcat( lDialogString ,"cancel button \"No\"" ) ; + } + else if ( aDialogType && ! strcmp( "yesnocancel" , aDialogType ) ) + { + strcat( lDialogString ,"buttons {\"No\", \"Yes\", \"Cancel\"} " ) ; + switch (aDefaultButton) + { + case 1: strcat( lDialogString ,"default button \"Yes\" " ) ; break; + case 2: strcat( lDialogString ,"default button \"No\" " ) ; break; + case 0: strcat( lDialogString ,"default button \"Cancel\" " ) ; break; + } + strcat( lDialogString ,"cancel button \"Cancel\"" ) ; + } + else + { + strcat( lDialogString ,"buttons {\"OK\"} " ) ; + strcat( lDialogString ,"default button \"OK\" " ) ; + } + strcat( lDialogString, ")' ") ; + + strcat( lDialogString, +"-e 'if vButton is \"Yes\" then' -e 'return 1'\ + -e 'else if vButton is \"OK\" then' -e 'return 1'\ + -e 'else if vButton is \"No\" then' -e 'return 2'\ + -e 'else' -e 'return 0' -e 'end if' " ); + + strcat( lDialogString, "-e 'on error number -128' " ) ; + strcat( lDialogString, "-e '0' " ); + + strcat( lDialogString, "-e 'end try'") ; + if ( ! osx9orBetter() ) strcat( lDialogString, " -e 'end tell'") ; + } + else if ( tfd_kdialogPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"kdialog");return 1;} + + strcpy( lDialogString , "kdialog" ) ; + if ( (tfd_kdialogPresent() == 2) && tfd_xpropPresent() ) + { + strcat(lDialogString, " --attach=$(xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2)"); /* contribution: Paul Rouget */ + } + + strcat( lDialogString , " --" ) ; + if ( aDialogType && ( ! strcmp( "okcancel" , aDialogType ) + || ! strcmp( "yesno" , aDialogType ) || ! strcmp( "yesnocancel" , aDialogType ) ) ) + { + if ( aIconType && ( ! strcmp( "warning" , aIconType ) + || ! strcmp( "error" , aIconType ) ) ) + { + strcat( lDialogString , "warning" ) ; + } + if ( ! strcmp( "yesnocancel" , aDialogType ) ) + { + strcat( lDialogString , "yesnocancel" ) ; + } + else + { + strcat( lDialogString , "yesno" ) ; + } + } + else if ( aIconType && ! strcmp( "error" , aIconType ) ) + { + strcat( lDialogString , "error" ) ; + } + else if ( aIconType && ! strcmp( "warning" , aIconType ) ) + { + strcat( lDialogString , "sorry" ) ; + } + else + { + strcat( lDialogString , "msgbox" ) ; + } + strcat( lDialogString , " \"" ) ; + if ( aMessage ) + { + strcat( lDialogString , aMessage ) ; + } + strcat( lDialogString , "\"" ) ; + if ( aDialogType && ! strcmp( "okcancel" , aDialogType ) ) + { + strcat( lDialogString , + " --yes-label Ok --no-label Cancel" ) ; + } + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, " --title \"") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\"") ; + } + + if ( ! strcmp( "yesnocancel" , aDialogType ) ) + { + strcat( lDialogString , "; x=$? ;if [ $x = 0 ] ;then echo 1;elif [ $x = 1 ] ;then echo 2;else echo 0;fi"); + } + else + { + strcat( lDialogString , ";if [ $? = 0 ];then echo 1;else echo 0;fi"); + } + } + else if ( tfd_zenityPresent() || tfd_matedialogPresent() || tfd_shellementaryPresent() || tfd_qarmaPresent() ) + { + if ( tfd_zenityPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"zenity");return 1;} + strcpy( lDialogString , "szAnswer=$(zenity" ) ; + if ( (tfd_zenity3Present() >= 4) && !getenv("SSH_TTY") && tfd_xpropPresent() ) + { + strcat(lDialogString, " --attach=$(sleep .01;xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2)"); /* contribution: Paul Rouget */ + } + } + else if ( tfd_matedialogPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"matedialog");return 1;} + strcpy( lDialogString , "szAnswer=$(matedialog" ) ; + } + else if ( tfd_shellementaryPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"shellementary");return 1;} + strcpy( lDialogString , "szAnswer=$(shellementary" ) ; + } + else + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"qarma");return 1;} + strcpy( lDialogString , "szAnswer=$(qarma" ) ; + if ( !getenv("SSH_TTY") && tfd_xpropPresent() ) + { + strcat(lDialogString, " --attach=$(xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2)"); /* contribution: Paul Rouget */ + } + } + strcat(lDialogString, " --"); + + if ( aDialogType && ! strcmp( "okcancel" , aDialogType ) ) + { + strcat( lDialogString , + "question --ok-label=Ok --cancel-label=Cancel" ) ; + } + else if ( aDialogType && ! strcmp( "yesno" , aDialogType ) ) + { + strcat( lDialogString , "question" ) ; + } + else if ( aDialogType && ! strcmp( "yesnocancel" , aDialogType ) ) + { + strcat( lDialogString , "list --column \"\" --hide-header \"Yes\" \"No\"" ) ; + } + else if ( aIconType && ! strcmp( "error" , aIconType ) ) + { + strcat( lDialogString , "error" ) ; + } + else if ( aIconType && ! strcmp( "warning" , aIconType ) ) + { + strcat( lDialogString , "warning" ) ; + } + else + { + strcat( lDialogString , "info" ) ; + } + + strcat(lDialogString, " --title=\""); + if ( aTitle && strlen(aTitle) ) strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\""); + + if (strcmp("yesnocancel", aDialogType)) strcat(lDialogString, " --no-wrap"); + + strcat(lDialogString, " --text=\"") ; + if (aMessage && strlen(aMessage)) strcat(lDialogString, aMessage) ; + strcat(lDialogString, "\"") ; + + if ( (tfd_zenity3Present() >= 3) || (!tfd_zenityPresent() && (tfd_shellementaryPresent() || tfd_qarmaPresent()) ) ) + { + strcat( lDialogString , " --icon-name=dialog-" ) ; + if ( aIconType && (! strcmp( "question" , aIconType ) + || ! strcmp( "error" , aIconType ) + || ! strcmp( "warning" , aIconType ) ) ) + { + strcat( lDialogString , aIconType ) ; + } + else + { + strcat( lDialogString , "information" ) ; + } + } + + if (tinyfd_silent) strcat( lDialogString , " 2>/dev/null "); + + if ( ! strcmp( "yesnocancel" , aDialogType ) ) + { + strcat( lDialogString , +");if [ $? = 1 ];then echo 0;elif [ $szAnswer = \"No\" ];then echo 2;else echo 1;fi"); + } + else + { + strcat( lDialogString , ");if [ $? = 0 ];then echo 1;else echo 0;fi"); + } + } + + else if (tfd_yadPresent()) + { + if (aTitle && !strcmp(aTitle, "tinyfd_query")) { strcpy(tinyfd_response, "yad"); return 1; } + strcpy(lDialogString, "szAnswer=$(yad --"); + if (aDialogType && !strcmp("ok", aDialogType)) + { + strcat(lDialogString,"button=Ok:1"); + } + else if (aDialogType && !strcmp("okcancel", aDialogType)) + { + strcat(lDialogString,"button=Ok:1 --button=Cancel:0"); + } + else if (aDialogType && !strcmp("yesno", aDialogType)) + { + strcat(lDialogString, "button=Yes:1 --button=No:0"); + } + else if (aDialogType && !strcmp("yesnocancel", aDialogType)) + { + strcat(lDialogString, "button=Yes:1 --button=No:2 --button=Cancel:0"); + } + else if (aIconType && !strcmp("error", aIconType)) + { + strcat(lDialogString, "error"); + } + else if (aIconType && !strcmp("warning", aIconType)) + { + strcat(lDialogString, "warning"); + } + else + { + strcat(lDialogString, "info"); + } + if (aTitle && strlen(aTitle)) + { + strcat(lDialogString, " --title=\""); + strcat(lDialogString, aTitle); + strcat(lDialogString, "\""); + } + if (aMessage && strlen(aMessage)) + { + strcat(lDialogString, " --text=\""); + strcat(lDialogString, aMessage); + strcat(lDialogString, "\""); + } + + strcat(lDialogString, " --image=dialog-"); + if (aIconType && (!strcmp("question", aIconType) + || !strcmp("error", aIconType) + || !strcmp("warning", aIconType))) + { + strcat(lDialogString, aIconType); + } + else + { + strcat(lDialogString, "information"); + } + + if (tinyfd_silent) strcat(lDialogString, " 2>/dev/null "); + strcat(lDialogString,");echo $?"); + } + + else if ( !gxmessagePresent() && !gmessagePresent() && !gdialogPresent() && !xdialogPresent() && tkinter3Present() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"python3-tkinter");return 1;} + + strcpy( lDialogString , gPython3Name ) ; + strcat( lDialogString , + " -S -c \"import tkinter;from tkinter import messagebox;root=tkinter.Tk();root.withdraw();"); + + strcat( lDialogString ,"res=messagebox." ) ; + if ( aDialogType && ! strcmp( "okcancel" , aDialogType ) ) + { + strcat( lDialogString , "askokcancel(" ) ; + if ( aDefaultButton ) + { + strcat( lDialogString , "default=messagebox.OK," ) ; + } + else + { + strcat( lDialogString , "default=messagebox.CANCEL," ) ; + } + } + else if ( aDialogType && ! strcmp( "yesno" , aDialogType ) ) + { + strcat( lDialogString , "askyesno(" ) ; + if ( aDefaultButton ) + { + strcat( lDialogString , "default=messagebox.YES," ) ; + } + else + { + strcat( lDialogString , "default=messagebox.NO," ) ; + } + } + else if ( aDialogType && ! strcmp( "yesnocancel" , aDialogType ) ) + { + strcat( lDialogString , "askyesnocancel(" ) ; + switch ( aDefaultButton ) + { + case 1: strcat( lDialogString , "default=messagebox.YES," ); break; + case 2: strcat( lDialogString , "default=messagebox.NO," ); break; + case 0: strcat( lDialogString , "default=messagebox.CANCEL," ); break; + } + } + else + { + strcat( lDialogString , "showinfo(" ) ; + } + + strcat( lDialogString , "icon='" ) ; + if ( aIconType && (! strcmp( "question" , aIconType ) + || ! strcmp( "error" , aIconType ) + || ! strcmp( "warning" , aIconType ) ) ) + { + strcat( lDialogString , aIconType ) ; + } + else + { + strcat( lDialogString , "info" ) ; + } + + strcat(lDialogString, "',") ; + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, "title='") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "',") ; + } + if ( aMessage && strlen(aMessage) ) + { + strcat(lDialogString, "message='") ; + lpDialogString = lDialogString + strlen(lDialogString); + tfd_replaceSubStr( aMessage , "\n" , "\\n" , lpDialogString ) ; + strcat(lDialogString, "'") ; + } + + if ( aDialogType && ! strcmp( "yesnocancel" , aDialogType ) ) + { + strcat(lDialogString, ");\n\ +if res is None :\n\tprint(0)\n\ +elif res is False :\n\tprint(2)\n\ +else :\n\tprint (1)\n\"" ) ; + } + else + { + strcat(lDialogString, ");\n\ +if res is False :\n\tprint(0)\n\ +else :\n\tprint(1)\n\"" ) ; + } + } + else if ( !gxmessagePresent() && !gmessagePresent() && !gdialogPresent() && !xdialogPresent() && tkinter2Present() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"python2-tkinter");return 1;} + strcpy( lDialogString , "export PYTHONIOENCODING=utf-8;" ) ; + strcat( lDialogString , gPython2Name ) ; + if ( ! isTerminalRunning( ) && tfd_isDarwin( ) ) + { + strcat( lDialogString , " -i" ) ; /* for osx without console */ + } + + strcat( lDialogString , +" -S -c \"import Tkinter,tkMessageBox;root=Tkinter.Tk();root.withdraw();"); + + if ( tfd_isDarwin( ) ) + { + strcat( lDialogString , +"import os;os.system('''/usr/bin/osascript -e 'tell app \\\"Finder\\\" to set \ +frontmost of process \\\"Python\\\" to true' ''');"); + } + + strcat( lDialogString ,"res=tkMessageBox." ) ; + if ( aDialogType && ! strcmp( "okcancel" , aDialogType ) ) + { + strcat( lDialogString , "askokcancel(" ) ; + if ( aDefaultButton ) + { + strcat( lDialogString , "default=tkMessageBox.OK," ) ; + } + else + { + strcat( lDialogString , "default=tkMessageBox.CANCEL," ) ; + } + } + else if ( aDialogType && ! strcmp( "yesno" , aDialogType ) ) + { + strcat( lDialogString , "askyesno(" ) ; + if ( aDefaultButton ) + { + strcat( lDialogString , "default=tkMessageBox.YES," ) ; + } + else + { + strcat( lDialogString , "default=tkMessageBox.NO," ) ; + } + } + else if ( aDialogType && ! strcmp( "yesnocancel" , aDialogType ) ) + { + strcat( lDialogString , "askyesnocancel(" ) ; + switch ( aDefaultButton ) + { + case 1: strcat( lDialogString , "default=tkMessageBox.YES," ); break; + case 2: strcat( lDialogString , "default=tkMessageBox.NO," ); break; + case 0: strcat( lDialogString , "default=tkMessageBox.CANCEL," ); break; + } + } + else + { + strcat( lDialogString , "showinfo(" ) ; + } + + strcat( lDialogString , "icon='" ) ; + if ( aIconType && (! strcmp( "question" , aIconType ) + || ! strcmp( "error" , aIconType ) + || ! strcmp( "warning" , aIconType ) ) ) + { + strcat( lDialogString , aIconType ) ; + } + else + { + strcat( lDialogString , "info" ) ; + } + + strcat(lDialogString, "',") ; + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, "title='") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "',") ; + } + if ( aMessage && strlen(aMessage) ) + { + strcat(lDialogString, "message='") ; + lpDialogString = lDialogString + strlen(lDialogString); + tfd_replaceSubStr( aMessage , "\n" , "\\n" , lpDialogString ) ; + strcat(lDialogString, "'") ; + } + + if ( aDialogType && ! strcmp( "yesnocancel" , aDialogType ) ) + { + strcat(lDialogString, ");\n\ +if res is None :\n\tprint 0\n\ +elif res is False :\n\tprint 2\n\ +else :\n\tprint 1\n\"" ) ; + } + else + { + strcat(lDialogString, ");\n\ +if res is False :\n\tprint 0\n\ +else :\n\tprint 1\n\"" ) ; + } + } + else if ( gxmessagePresent() || gmessagePresent() || (!gdialogPresent() && !xdialogPresent() && xmessagePresent()) ) + { + if ( gxmessagePresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"gxmessage");return 1;} + strcpy( lDialogString , "gxmessage"); + } + else if ( gmessagePresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"gmessage");return 1;} + strcpy( lDialogString , "gmessage"); + } + else + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"xmessage");return 1;} + strcpy( lDialogString , "xmessage"); + } + + if ( aDialogType && ! strcmp("okcancel" , aDialogType) ) + { + strcat( lDialogString , " -buttons Ok:1,Cancel:0"); + switch ( aDefaultButton ) + { + case 1: strcat( lDialogString , " -default Ok"); break; + case 0: strcat( lDialogString , " -default Cancel"); break; + } + } + else if ( aDialogType && ! strcmp("yesno" , aDialogType) ) + { + strcat( lDialogString , " -buttons Yes:1,No:0"); + switch ( aDefaultButton ) + { + case 1: strcat( lDialogString , " -default Yes"); break; + case 0: strcat( lDialogString , " -default No"); break; + } + } + else if ( aDialogType && ! strcmp("yesnocancel" , aDialogType) ) + { + strcat( lDialogString , " -buttons Yes:1,No:2,Cancel:0"); + switch ( aDefaultButton ) + { + case 1: strcat( lDialogString , " -default Yes"); break; + case 2: strcat( lDialogString , " -default No"); break; + case 0: strcat( lDialogString , " -default Cancel"); break; + } + } + else + { + strcat( lDialogString , " -buttons Ok:1"); + strcat( lDialogString , " -default Ok"); + } + + strcat( lDialogString , " -center \""); + if ( aMessage && strlen(aMessage) ) + { + strcat( lDialogString , aMessage ) ; + } + strcat(lDialogString, "\"" ) ; + if ( aTitle && strlen(aTitle) ) + { + strcat( lDialogString , " -title \""); + strcat( lDialogString , aTitle ) ; + strcat( lDialogString, "\"" ) ; + } + strcat( lDialogString , " ; echo $? "); + } + else if ( xdialogPresent() || gdialogPresent() || dialogName() || whiptailPresent() ) + { + if ( gdialogPresent( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"gdialog");return 1;} + lWasGraphicDialog = 1 ; + strcpy( lDialogString , "(gdialog " ) ; + } + else if ( xdialogPresent( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"xdialog");return 1;} + lWasGraphicDialog = 1 ; + strcpy( lDialogString , "(Xdialog " ) ; + } + else if ( dialogName( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"dialog");return 0;} + if ( isTerminalRunning( ) ) + { + strcpy( lDialogString , "(dialog " ) ; + } + else + { + lWasXterm = 1 ; + strcpy( lDialogString , terminalName() ) ; + strcat( lDialogString , "'(" ) ; + strcat( lDialogString , dialogName() ) ; + strcat( lDialogString , " " ) ; + } + } + else if ( isTerminalRunning( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"whiptail");return 0;} + strcpy( lDialogString , "(whiptail " ) ; + } + else + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"whiptail");return 0;} + lWasXterm = 1 ; + strcpy( lDialogString , terminalName() ) ; + strcat( lDialogString , "'(whiptail " ) ; + } + + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, "--title \"") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\" ") ; + } + + if ( !xdialogPresent() && !gdialogPresent() ) + { + if ( aDialogType && ( !strcmp( "okcancel" , aDialogType ) || !strcmp( "yesno" , aDialogType ) + || !strcmp( "yesnocancel" , aDialogType ) ) ) + { + strcat(lDialogString, "--backtitle \"") ; + strcat(lDialogString, "tab: move focus") ; + strcat(lDialogString, "\" ") ; + } + } + + if ( aDialogType && ! strcmp( "okcancel" , aDialogType ) ) + { + if ( ! aDefaultButton ) + { + strcat( lDialogString , "--defaultno " ) ; + } + strcat( lDialogString , + "--yes-label \"Ok\" --no-label \"Cancel\" --yesno " ) ; + } + else if ( aDialogType && ! strcmp( "yesno" , aDialogType ) ) + { + if ( ! aDefaultButton ) + { + strcat( lDialogString , "--defaultno " ) ; + } + strcat( lDialogString , "--yesno " ) ; + } + else if (aDialogType && !strcmp("yesnocancel", aDialogType)) + { + if (!aDefaultButton) + { + strcat(lDialogString, "--defaultno "); + } + strcat(lDialogString, "--menu "); + } + else + { + strcat( lDialogString , "--msgbox " ) ; + + } + strcat( lDialogString , "\"" ) ; + if ( aMessage && strlen(aMessage) ) + { + strcat(lDialogString, aMessage) ; + } + strcat(lDialogString, "\" "); + + if ( lWasGraphicDialog ) + { + if (aDialogType && !strcmp("yesnocancel", aDialogType)) + { + strcat(lDialogString,"0 60 0 Yes \"\" No \"\") 2>/tmp/tinyfd.txt;\ +if [ $? = 0 ];then tinyfdBool=1;else tinyfdBool=0;fi;\ +tinyfdRes=$(cat /tmp/tinyfd.txt);echo $tinyfdBool$tinyfdRes") ; + } + else + { + strcat(lDialogString, + "10 60 ) 2>&1;if [ $? = 0 ];then echo 1;else echo 0;fi"); + } + } + else + { + if (aDialogType && !strcmp("yesnocancel", aDialogType)) + { + strcat(lDialogString,"0 60 0 Yes \"\" No \"\" >/dev/tty ) 2>/tmp/tinyfd.txt;\ + if [ $? = 0 ];then tinyfdBool=1;else tinyfdBool=0;fi;\ + tinyfdRes=$(cat /tmp/tinyfd.txt);echo $tinyfdBool$tinyfdRes") ; + + if ( lWasXterm ) + { + strcat(lDialogString," >/tmp/tinyfd0.txt';cat /tmp/tinyfd0.txt"); + } + else + { + strcat(lDialogString, "; clear >/dev/tty") ; + } + } + else + { + strcat(lDialogString, "10 60 >/dev/tty) 2>&1;if [ $? = 0 ];"); + if ( lWasXterm ) + { + strcat( lDialogString , +"then\n\techo 1\nelse\n\techo 0\nfi >/tmp/tinyfd.txt';cat /tmp/tinyfd.txt;rm /tmp/tinyfd.txt"); + } + else + { + strcat(lDialogString, + "then echo 1;else echo 0;fi;clear >/dev/tty"); + } + } + } + } + else if ( !isTerminalRunning() && terminalName() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"basicinput");return 0;} + strcpy( lDialogString , terminalName() ) ; + strcat( lDialogString , "'" ) ; + if ( !gWarningDisplayed && !tinyfd_forceConsole) + { + gWarningDisplayed = 1 ; + strcat( lDialogString , "echo \"" ) ; + strcat( lDialogString, gTitle) ; + strcat( lDialogString , "\";" ) ; + strcat( lDialogString , "echo \"" ) ; + strcat( lDialogString, tinyfd_needs) ; + strcat( lDialogString , "\";echo;echo;" ) ; + } + if ( aTitle && strlen(aTitle) ) + { + strcat( lDialogString , "echo \"" ) ; + strcat( lDialogString, aTitle) ; + strcat( lDialogString , "\";echo;" ) ; + } + if ( aMessage && strlen(aMessage) ) + { + strcat( lDialogString , "echo \"" ) ; + strcat( lDialogString, aMessage) ; + strcat( lDialogString , "\"; " ) ; + } + if ( aDialogType && !strcmp("yesno",aDialogType) ) + { + strcat( lDialogString , "echo -n \"y/n: \"; " ) ; + strcat( lDialogString , "stty sane -echo;" ) ; + strcat( lDialogString , + "answer=$( while ! head -c 1 | grep -i [ny];do true ;done);"); + strcat( lDialogString , + "if echo \"$answer\" | grep -iq \"^y\";then\n"); + strcat( lDialogString , "\techo 1\nelse\n\techo 0\nfi" ) ; + } + else if ( aDialogType && !strcmp("okcancel",aDialogType) ) + { + strcat( lDialogString , "echo -n \"[O]kay/[C]ancel: \"; " ) ; + strcat( lDialogString , "stty sane -echo;" ) ; + strcat( lDialogString , + "answer=$( while ! head -c 1 | grep -i [oc];do true ;done);"); + strcat( lDialogString , + "if echo \"$answer\" | grep -iq \"^o\";then\n"); + strcat( lDialogString , "\techo 1\nelse\n\techo 0\nfi" ) ; + } + else if ( aDialogType && !strcmp("yesnocancel",aDialogType) ) + { + strcat( lDialogString , "echo -n \"[Y]es/[N]o/[C]ancel: \"; " ) ; + strcat( lDialogString , "stty sane -echo;" ) ; + strcat( lDialogString , + "answer=$( while ! head -c 1 | grep -i [nyc];do true ;done);"); + strcat( lDialogString , + "if echo \"$answer\" | grep -iq \"^y\";then\n\techo 1\n"); + strcat( lDialogString , "elif echo \"$answer\" | grep -iq \"^n\";then\n\techo 2\n" ) ; + strcat( lDialogString , "else\n\techo 0\nfi" ) ; + } + else + { + strcat(lDialogString , "echo -n \"press enter to continue \"; "); + strcat( lDialogString , "stty sane -echo;" ) ; + strcat( lDialogString , + "answer=$( while ! head -c 1;do true ;done);echo 1"); + } + strcat( lDialogString , + " >/tmp/tinyfd.txt';cat /tmp/tinyfd.txt;rm /tmp/tinyfd.txt"); + } + else if ( !isTerminalRunning() && pythonDbusPresent() && !strcmp("ok" , aDialogType) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"python-dbus");return 1;} + strcpy( lDialogString , gPythonName ) ; + strcat( lDialogString ," -c \"import dbus;bus=dbus.SessionBus();"); + strcat( lDialogString ,"notif=bus.get_object('org.freedesktop.Notifications','/org/freedesktop/Notifications');" ) ; + strcat( lDialogString ,"notify=dbus.Interface(notif,'org.freedesktop.Notifications');" ) ; + strcat( lDialogString ,"notify.Notify('',0,'" ) ; + if ( aIconType && strlen(aIconType) ) + { + strcat( lDialogString , aIconType ) ; + } + strcat(lDialogString, "','") ; + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, aTitle) ; + } + strcat(lDialogString, "','") ; + if ( aMessage && strlen(aMessage) ) + { + lpDialogString = lDialogString + strlen(lDialogString); + tfd_replaceSubStr( aMessage , "\n" , "\\n" , lpDialogString ) ; + } + strcat(lDialogString, "','','',5000)\"") ; + } + else if ( !isTerminalRunning() && (perlPresent() >= 2) && !strcmp("ok" , aDialogType) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"perl-dbus");return 1;} + + strcpy( lDialogString , "perl -e \"use Net::DBus;\ +my \\$sessionBus = Net::DBus->session;\ +my \\$notificationsService = \\$sessionBus->get_service('org.freedesktop.Notifications');\ +my \\$notificationsObject = \\$notificationsService->get_object('/org/freedesktop/Notifications',\ +'org.freedesktop.Notifications');"); + + sprintf( lDialogString + strlen(lDialogString), +"my \\$notificationId;\\$notificationId = \\$notificationsObject->Notify(shift, 0, '%s', '%s', '%s', [], {}, -1);\" ", + aIconType?aIconType:"", aTitle?aTitle:"", aMessage?aMessage:"" ) ; + } + else if ( !isTerminalRunning() && notifysendPresent() && !strcmp("ok" , aDialogType) ) + { + + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"notifysend");return 1;} + strcpy( lDialogString , "notify-send" ) ; + if ( aIconType && strlen(aIconType) ) + { + strcat( lDialogString , " -i '" ) ; + strcat( lDialogString , aIconType ) ; + strcat( lDialogString , "'" ) ; + } + strcat( lDialogString , " \"" ) ; + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, aTitle) ; + strcat( lDialogString , " | " ) ; + } + if ( aMessage && strlen(aMessage) ) + { + tfd_replaceSubStr( aMessage , "\n\t" , " | " , lBuff ) ; + tfd_replaceSubStr( aMessage , "\n" , " | " , lBuff ) ; + tfd_replaceSubStr( aMessage , "\t" , " " , lBuff ) ; + strcat(lDialogString, lBuff) ; + } + strcat( lDialogString , "\"" ) ; + } + else + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"basicinput");return 0;} + if ( !gWarningDisplayed && !tinyfd_forceConsole) + { + gWarningDisplayed = 1 ; + printf("\n\n%s\n", gTitle); + printf("%s\n\n", tinyfd_needs); + } + if ( aTitle && strlen(aTitle) ) + { + printf("\n%s\n", aTitle); + } + + tcgetattr(0, &infoOri); + tcgetattr(0, &info); + info.c_lflag &= ~ICANON; + info.c_cc[VMIN] = 1; + info.c_cc[VTIME] = 0; + tcsetattr(0, TCSANOW, &info); + if ( aDialogType && !strcmp("yesno",aDialogType) ) + { + do + { + if ( aMessage && strlen(aMessage) ) + { + printf("\n%s\n",aMessage); + } + printf("y/n: "); fflush(stdout); + lChar = (char) tolower( getchar() ) ; + printf("\n\n"); + } + while ( lChar != 'y' && lChar != 'n' ); + lResult = lChar == 'y' ? 1 : 0 ; + } + else if ( aDialogType && !strcmp("okcancel",aDialogType) ) + { + do + { + if ( aMessage && strlen(aMessage) ) + { + printf("\n%s\n",aMessage); + } + printf("[O]kay/[C]ancel: "); fflush(stdout); + lChar = (char) tolower( getchar() ) ; + printf("\n\n"); + } + while ( lChar != 'o' && lChar != 'c' ); + lResult = lChar == 'o' ? 1 : 0 ; + } + else if ( aDialogType && !strcmp("yesnocancel",aDialogType) ) + { + do + { + if ( aMessage && strlen(aMessage) ) + { + printf("\n%s\n",aMessage); + } + printf("[Y]es/[N]o/[C]ancel: "); fflush(stdout); + lChar = (char) tolower( getchar() ) ; + printf("\n\n"); + } + while ( lChar != 'y' && lChar != 'n' && lChar != 'c' ); + lResult = (lChar == 'y') ? 1 : (lChar == 'n') ? 2 : 0 ; + } + else + { + if ( aMessage && strlen(aMessage) ) + { + printf("\n%s\n\n",aMessage); + } + printf("press enter to continue "); fflush(stdout); + getchar() ; + printf("\n\n"); + lResult = 1 ; + } + tcsetattr(0, TCSANOW, &infoOri); + free(lDialogString); + return lResult ; + } + + if (tinyfd_verbose) printf( "lDialogString: %s\n" , lDialogString ) ; + + if ( ! ( lIn = popen( lDialogString , "r" ) ) ) + { + free(lDialogString); + return 0 ; + } + while ( fgets( lBuff , sizeof( lBuff ) , lIn ) != NULL ) + {} + + pclose( lIn ) ; + + /* printf( "lBuff: %s len: %lu \n" , lBuff , strlen(lBuff) ) ; */ + if ( strlen( lBuff ) && lBuff[strlen( lBuff ) -1] == '\n' ) + { + lBuff[strlen( lBuff ) -1] = '\0' ; + } + /* printf( "lBuff1: %s len: %lu \n" , lBuff , strlen(lBuff) ) ; */ + + if (aDialogType && !strcmp("yesnocancel", aDialogType)) + { + if ( lBuff[0]=='1' ) + { + if ( !strcmp( lBuff+1 , "Yes" )) strcpy(lBuff,"1"); + else if ( !strcmp( lBuff+1 , "No" )) strcpy(lBuff,"2"); + } + } + /* printf( "lBuff2: %s len: %lu \n" , lBuff , strlen(lBuff) ) ; */ + + lResult = !strcmp( lBuff , "2" ) ? 2 : !strcmp( lBuff , "1" ) ? 1 : 0; + + /* printf( "lResult: %d\n" , lResult ) ; */ + free(lDialogString); + return lResult ; +} + + +/* return has only meaning for tinyfd_query */ +int tinyfd_notifyPopup( + char const * aTitle , /* NULL or "" */ + char const * aMessage , /* NULL or "" may contain \n and \t */ + char const * aIconType ) /* "info" "warning" "error" */ +{ + char lBuff[MAX_PATH_OR_CMD]; + char * lDialogString = NULL ; + char * lpDialogString ; + FILE * lIn ; + size_t lTitleLen ; + size_t lMessageLen ; + + if (tfd_quoteDetected(aTitle)) return tinyfd_notifyPopup("INVALID TITLE WITH QUOTES", aMessage, aIconType); + if (tfd_quoteDetected(aMessage)) return tinyfd_notifyPopup(aTitle, "INVALID MESSAGE WITH QUOTES", aIconType); + + if ( getenv("SSH_TTY") && !dunstifyPresent() && !dunstPresent() ) + { + return tinyfd_messageBox(aTitle, aMessage, "ok", aIconType, 0); + } + + lTitleLen = aTitle ? strlen(aTitle) : 0 ; + lMessageLen = aMessage ? strlen(aMessage) : 0 ; + if ( !aTitle || strcmp(aTitle,"tinyfd_query") ) + { + lDialogString = (char *) malloc( MAX_PATH_OR_CMD + lTitleLen + lMessageLen ); + } + + if ( getenv("SSH_TTY") ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"dunst");return 1;} + strcpy( lDialogString , "notify-send \"" ) ; + if ( aTitle && strlen(aTitle) ) + { + strcat( lDialogString , aTitle ) ; + strcat( lDialogString , "\" \"" ) ; + } + if ( aMessage && strlen(aMessage) ) + { + strcat(lDialogString, aMessage) ; + } + strcat( lDialogString , "\"" ) ; + } + else if ( osascriptPresent( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"applescript");return 1;} + + strcpy( lDialogString , "osascript "); + if ( ! osx9orBetter() ) strcat( lDialogString , " -e 'tell application \"System Events\"' -e 'Activate'"); + strcat( lDialogString , " -e 'try' -e 'display notification \"") ; + if ( aMessage && strlen(aMessage) ) + { + strcat(lDialogString, aMessage) ; + } + strcat(lDialogString, " \" ") ; + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, "with title \"") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\" ") ; + } + + strcat( lDialogString, "' -e 'end try'") ; + if ( ! osx9orBetter() ) strcat( lDialogString, " -e 'end tell'") ; + } + else if ( tfd_kdialogPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"kdialog");return 1;} + strcpy( lDialogString , "kdialog" ) ; + + if ( aIconType && strlen(aIconType) ) + { + strcat( lDialogString , " --icon '" ) ; + strcat( lDialogString , aIconType ) ; + strcat( lDialogString , "'" ) ; + } + if ( aTitle && strlen(aTitle) ) + { + strcat( lDialogString , " --title \"" ) ; + strcat( lDialogString , aTitle ) ; + strcat( lDialogString , "\"" ) ; + } + + strcat( lDialogString , " --passivepopup" ) ; + strcat( lDialogString , " \"" ) ; + if ( aMessage ) + { + strcat( lDialogString , aMessage ) ; + } + strcat( lDialogString , " \" 5" ) ; + } + else if ( tfd_yadPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"yad");return 1;} + strcpy( lDialogString , "yad --notification"); + + if ( aIconType && strlen( aIconType ) ) + { + strcat( lDialogString , " --image=\""); + strcat( lDialogString , aIconType ) ; + strcat( lDialogString , "\"" ) ; + } + + strcat( lDialogString , " --text=\"" ) ; + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\n") ; + } + if ( aMessage && strlen( aMessage ) ) + { + strcat( lDialogString , aMessage ) ; + } + strcat( lDialogString , " \"" ) ; + } + else if ( perlPresent() >= 2 ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"perl-dbus");return 1;} + + strcpy( lDialogString , "perl -e \"use Net::DBus;\ +my \\$sessionBus = Net::DBus->session;\ +my \\$notificationsService = \\$sessionBus->get_service('org.freedesktop.Notifications');\ +my \\$notificationsObject = \\$notificationsService->get_object('/org/freedesktop/Notifications',\ +'org.freedesktop.Notifications');"); + + sprintf( lDialogString + strlen(lDialogString) , +"my \\$notificationId;\\$notificationId = \\$notificationsObject->Notify(shift, 0, '%s', '%s', '%s', [], {}, -1);\" ", +aIconType?aIconType:"", aTitle?aTitle:"", aMessage?aMessage:"" ) ; + } + else if ( pythonDbusPresent( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"python-dbus");return 1;} + strcpy( lDialogString , gPythonName ) ; + strcat( lDialogString ," -c \"import dbus;bus=dbus.SessionBus();"); + strcat( lDialogString ,"notif=bus.get_object('org.freedesktop.Notifications','/org/freedesktop/Notifications');" ) ; + strcat( lDialogString ,"notify=dbus.Interface(notif,'org.freedesktop.Notifications');" ) ; + strcat( lDialogString ,"notify.Notify('',0,'" ) ; + if ( aIconType && strlen(aIconType) ) + { + strcat( lDialogString , aIconType ) ; + } + strcat(lDialogString, "','") ; + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, aTitle) ; + } + strcat(lDialogString, "','") ; + if ( aMessage && strlen(aMessage) ) + { + lpDialogString = lDialogString + strlen(lDialogString); + tfd_replaceSubStr( aMessage , "\n" , "\\n" , lpDialogString ) ; + } + strcat(lDialogString, "','','',5000)\"") ; + } + else if ( notifysendPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"notifysend");return 1;} + strcpy( lDialogString , "notify-send" ) ; + if ( aIconType && strlen(aIconType) ) + { + strcat( lDialogString , " -i '" ) ; + strcat( lDialogString , aIconType ) ; + strcat( lDialogString , "'" ) ; + } + strcat( lDialogString , " \"" ) ; + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, aTitle) ; + strcat( lDialogString , " | " ) ; + } + if ( aMessage && strlen(aMessage) ) + { + tfd_replaceSubStr( aMessage , "\n\t" , " | " , lBuff ) ; + tfd_replaceSubStr( aMessage , "\n" , " | " , lBuff ) ; + tfd_replaceSubStr( aMessage , "\t" , " " , lBuff ) ; + strcat(lDialogString, lBuff) ; + } + strcat( lDialogString , "\"" ) ; + } + else if ( (tfd_zenity3Present()>=5) ) + { + /* zenity 2.32 & 3.14 has the notification but with a bug: it doesnt return from it */ + /* zenity 3.8 show the notification as an alert ok cancel box */ + /* zenity 3.44 doesn't have the notification (3.42 has it) */ + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"zenity");return 1;} + strcpy( lDialogString , "zenity --notification"); + + if ( aIconType && strlen( aIconType ) ) + { + strcat( lDialogString , " --window-icon '"); + strcat( lDialogString , aIconType ) ; + strcat( lDialogString , "'" ) ; + } + + strcat( lDialogString , " --text \"" ) ; + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\n") ; + } + if ( aMessage && strlen( aMessage ) ) + { + strcat( lDialogString , aMessage ) ; + } + strcat( lDialogString , " \"" ) ; + } + else + { + if (lDialogString) free(lDialogString); + return tinyfd_messageBox(aTitle, aMessage, "ok", aIconType, 0); + } + + if (tinyfd_verbose) printf( "lDialogString: %s\n" , lDialogString ) ; + + if ( ! ( lIn = popen( lDialogString , "r" ) ) ) + { + free(lDialogString); + return 0 ; + } + + pclose( lIn ) ; + free(lDialogString); + return 1; +} + + +/* returns NULL on cancel */ +char * tinyfd_inputBox( + char const * aTitle , /* NULL or "" */ + char const * aMessage , /* NULL or "" (\n and \t have no effect) */ + char const * aDefaultInput ) /* "" , if NULL it's a passwordBox */ +{ + static char lBuff[MAX_PATH_OR_CMD]; + char * lDialogString = NULL; + char * lpDialogString; + FILE * lIn ; + int lResult ; + int lWasGdialog = 0 ; + int lWasGraphicDialog = 0 ; + int lWasXterm = 0 ; + int lWasBasicXterm = 0 ; + struct termios oldt ; + struct termios newt ; + char * lEOF; + size_t lTitleLen ; + size_t lMessageLen ; + + if (!aTitle && !aMessage && !aDefaultInput) return lBuff; /* now I can fill lBuff from outside */ + + lBuff[0]='\0'; + + if (tfd_quoteDetected(aTitle)) return tinyfd_inputBox("INVALID TITLE WITH QUOTES", aMessage, aDefaultInput); + if (tfd_quoteDetected(aMessage)) return tinyfd_inputBox(aTitle, "INVALID MESSAGE WITH QUOTES", aDefaultInput); + if (tfd_quoteDetected(aDefaultInput)) return tinyfd_inputBox(aTitle, aMessage, "INVALID DEFAULT_INPUT WITH QUOTES: use the GRAVE ACCENT \\x60 instead."); + + lTitleLen = aTitle ? strlen(aTitle) : 0 ; + lMessageLen = aMessage ? strlen(aMessage) : 0 ; + if ( !aTitle || strcmp(aTitle,"tinyfd_query") ) + { + lDialogString = (char *) malloc( MAX_PATH_OR_CMD + lTitleLen + lMessageLen ); + } + + if ( osascriptPresent( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"applescript");return (char *)1;} + strcpy( lDialogString , "osascript "); + if ( ! osx9orBetter() ) strcat( lDialogString , " -e 'tell application \"System Events\"' -e 'Activate'"); + strcat( lDialogString , " -e 'try' -e 'display dialog \"") ; + if ( aMessage && strlen(aMessage) ) + { + strcat(lDialogString, aMessage) ; + } + strcat(lDialogString, "\" ") ; + strcat(lDialogString, "default answer \"") ; + if ( aDefaultInput && strlen(aDefaultInput) ) + { + strcat(lDialogString, aDefaultInput) ; + } + strcat(lDialogString, "\" ") ; + if ( ! aDefaultInput ) + { + strcat(lDialogString, "hidden answer true ") ; + } + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, "with title \"") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\" ") ; + } + strcat(lDialogString, "with icon note' ") ; + strcat(lDialogString, "-e '\"1\" & text returned of result' " ); + strcat(lDialogString, "-e 'on error number -128' " ) ; + strcat(lDialogString, "-e '0' " ); + strcat(lDialogString, "-e 'end try'") ; + if ( ! osx9orBetter() ) strcat(lDialogString, " -e 'end tell'") ; + } + else if ( tfd_kdialogPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"kdialog");return (char *)1;} + strcpy( lDialogString , "szAnswer=$(kdialog" ) ; + + if ( (tfd_kdialogPresent() == 2) && tfd_xpropPresent() ) + { + strcat(lDialogString, " --attach=$(xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2)"); /* contribution: Paul Rouget */ + } + + if ( ! aDefaultInput ) + { + strcat(lDialogString, " --password ") ; + } + else + { + strcat(lDialogString, " --inputbox ") ; + + } + strcat(lDialogString, "\"") ; + if ( aMessage && strlen(aMessage) ) + { + strcat(lDialogString, aMessage ) ; + } + strcat(lDialogString , "\" \"" ) ; + if ( aDefaultInput && strlen(aDefaultInput) ) + { + strcat(lDialogString, aDefaultInput ) ; + } + strcat(lDialogString , "\"" ) ; + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, " --title \"") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\"") ; + } + strcat( lDialogString , + ");if [ $? = 0 ];then echo 1$szAnswer;else echo 0$szAnswer;fi"); + } + else if ( tfd_zenityPresent() || tfd_matedialogPresent() || tfd_shellementaryPresent() || tfd_qarmaPresent() ) + { + if ( tfd_zenityPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"zenity");return (char *)1;} + strcpy( lDialogString , "szAnswer=$(zenity" ) ; + if ( (tfd_zenity3Present() >= 4) && !getenv("SSH_TTY") && tfd_xpropPresent() ) + { + strcat( lDialogString, " --attach=$(sleep .01;xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2)"); /* contribution: Paul Rouget */ + } + } + else if ( tfd_matedialogPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"matedialog");return (char *)1;} + strcpy( lDialogString , "szAnswer=$(matedialog" ) ; + } + else if ( tfd_shellementaryPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"shellementary");return (char *)1;} + strcpy( lDialogString , "szAnswer=$(shellementary" ) ; + } + else + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"qarma");return (char *)1;} + strcpy( lDialogString , "szAnswer=$(qarma" ) ; + if ( !getenv("SSH_TTY") && tfd_xpropPresent() ) + { + strcat(lDialogString, " --attach=$(xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2)"); /* contribution: Paul Rouget */ + } + } + strcat( lDialogString ," --entry" ) ; + + strcat(lDialogString, " --title=\"") ; + if (aTitle && strlen(aTitle)) strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\"") ; + + strcat(lDialogString, " --text=\"") ; + if (aMessage && strlen(aMessage)) strcat(lDialogString, aMessage) ; + strcat(lDialogString, "\"") ; + + if ( aDefaultInput ) + { + strcat(lDialogString, " --entry-text=\"") ; + strcat(lDialogString, aDefaultInput) ; + strcat(lDialogString, "\"") ; + } + else + { + strcat(lDialogString, " --hide-text") ; + } + if (tinyfd_silent) strcat( lDialogString , " 2>/dev/null "); + strcat( lDialogString , + ");if [ $? = 0 ];then echo 1$szAnswer;else echo 0$szAnswer;fi"); + } + else if (tfd_yadPresent()) + { + if (aTitle && !strcmp(aTitle, "tinyfd_query")) { strcpy(tinyfd_response, "yad"); return (char*)1; } + strcpy(lDialogString, "szAnswer=$(yad --entry"); + if (aTitle && strlen(aTitle)) + { + strcat(lDialogString, " --title=\""); + strcat(lDialogString, aTitle); + strcat(lDialogString, "\""); + } + if (aMessage && strlen(aMessage)) + { + strcat(lDialogString, " --text=\""); + strcat(lDialogString, aMessage); + strcat(lDialogString, "\""); + } + if (aDefaultInput && strlen(aDefaultInput)) + { + strcat(lDialogString, " --entry-text=\""); + strcat(lDialogString, aDefaultInput); + strcat(lDialogString, "\""); + } + else + { + strcat(lDialogString, " --hide-text"); + } + if (tinyfd_silent) strcat(lDialogString, " 2>/dev/null "); + strcat(lDialogString, + ");if [ $? = 0 ];then echo 1$szAnswer;else echo 0$szAnswer;fi"); + } + else if ( gxmessagePresent() || gmessagePresent() ) + { + if ( gxmessagePresent() ) { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"gxmessage");return (char *)1;} + strcpy( lDialogString , "szAnswer=$(gxmessage -buttons Ok:1,Cancel:0 -center \""); + } + else + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"gmessage");return (char *)1;} + strcpy( lDialogString , "szAnswer=$(gmessage -buttons Ok:1,Cancel:0 -center \""); + } + + if ( aMessage && strlen(aMessage) ) + { + strcat( lDialogString , aMessage ) ; + } + strcat(lDialogString, "\"" ) ; + if ( aTitle && strlen(aTitle) ) + { + strcat( lDialogString , " -title \""); + strcat( lDialogString , aTitle ) ; + strcat(lDialogString, "\" " ) ; + } + strcat(lDialogString, " -entrytext \"" ) ; + if ( aDefaultInput && strlen(aDefaultInput) ) + { + strcat( lDialogString , aDefaultInput ) ; + } + strcat(lDialogString, "\"" ) ; + strcat( lDialogString , ");echo $?$szAnswer"); + } + else if ( !gdialogPresent() && !xdialogPresent() && tkinter3Present( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"python3-tkinter");return (char *)1;} + strcpy( lDialogString , gPython3Name ) ; + strcat( lDialogString , + " -S -c \"import tkinter; from tkinter import simpledialog;root=tkinter.Tk();root.withdraw();"); + strcat( lDialogString ,"res=simpledialog.askstring(" ) ; + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, "title='") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "',") ; + } + if ( aMessage && strlen(aMessage) ) + { + + strcat(lDialogString, "prompt='") ; + lpDialogString = lDialogString + strlen(lDialogString); + tfd_replaceSubStr( aMessage , "\n" , "\\n" , lpDialogString ) ; + strcat(lDialogString, "',") ; + } + if ( aDefaultInput ) + { + if ( strlen(aDefaultInput) ) + { + strcat(lDialogString, "initialvalue='") ; + strcat(lDialogString, aDefaultInput) ; + strcat(lDialogString, "',") ; + } + } + else + { + strcat(lDialogString, "show='*'") ; + } + strcat(lDialogString, ");\nif res is None :\n\tprint(0)"); + strcat(lDialogString, "\nelse :\n\tprint('1'+res)\n\"" ) ; + } + else if ( !gdialogPresent() && !xdialogPresent() && tkinter2Present( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"python2-tkinter");return (char *)1;} + strcpy( lDialogString , "export PYTHONIOENCODING=utf-8;" ) ; + strcat( lDialogString , gPython2Name ) ; + if ( ! isTerminalRunning( ) && tfd_isDarwin( ) ) + { + strcat( lDialogString , " -i" ) ; /* for osx without console */ + } + + strcat( lDialogString , + " -S -c \"import Tkinter,tkSimpleDialog;root=Tkinter.Tk();root.withdraw();"); + + if ( tfd_isDarwin( ) ) + { + strcat( lDialogString , +"import os;os.system('''/usr/bin/osascript -e 'tell app \\\"Finder\\\" to set \ +frontmost of process \\\"Python\\\" to true' ''');"); + } + + strcat( lDialogString ,"res=tkSimpleDialog.askstring(" ) ; + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, "title='") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "',") ; + } + if ( aMessage && strlen(aMessage) ) + { + + strcat(lDialogString, "prompt='") ; + lpDialogString = lDialogString + strlen(lDialogString); + tfd_replaceSubStr( aMessage , "\n" , "\\n" , lpDialogString ) ; + strcat(lDialogString, "',") ; + } + if ( aDefaultInput ) + { + if ( strlen(aDefaultInput) ) + { + strcat(lDialogString, "initialvalue='") ; + strcat(lDialogString, aDefaultInput) ; + strcat(lDialogString, "',") ; + } + } + else + { + strcat(lDialogString, "show='*'") ; + } + strcat(lDialogString, ");\nif res is None :\n\tprint 0"); + strcat(lDialogString, "\nelse :\n\tprint '1'+res\n\"" ) ; + } + else if ( gdialogPresent() || xdialogPresent() || dialogName() || whiptailPresent() ) + { + if ( gdialogPresent( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"gdialog");return (char *)1;} + lWasGraphicDialog = 1 ; + lWasGdialog = 1 ; + strcpy( lDialogString , "(gdialog " ) ; + } + else if ( xdialogPresent( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"xdialog");return (char *)1;} + lWasGraphicDialog = 1 ; + strcpy( lDialogString , "(Xdialog " ) ; + } + else if ( dialogName( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"dialog");return (char *)0;} + if ( isTerminalRunning( ) ) + { + strcpy( lDialogString , "(dialog " ) ; + } + else + { + lWasXterm = 1 ; + strcpy( lDialogString , terminalName() ) ; + strcat( lDialogString , "'(" ) ; + strcat( lDialogString , dialogName() ) ; + strcat( lDialogString , " " ) ; + } + } + else if ( isTerminalRunning( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"whiptail");return (char *)0;} + strcpy( lDialogString , "(whiptail " ) ; + } + else + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"whiptail");return (char *)0;} + lWasXterm = 1 ; + strcpy( lDialogString , terminalName() ) ; + strcat( lDialogString , "'(whiptail " ) ; + } + + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, "--title \"") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\" ") ; + } + + if ( !xdialogPresent() && !gdialogPresent() ) + { + strcat(lDialogString, "--backtitle \"") ; + strcat(lDialogString, "tab: move focus") ; + if ( ! aDefaultInput && !lWasGdialog ) + { + strcat(lDialogString, " (sometimes nothing, no blink nor star, is shown in text field)") ; + } + strcat(lDialogString, "\" ") ; + } + + if ( aDefaultInput || lWasGdialog ) + { + strcat( lDialogString , "--inputbox" ) ; + } + else + { + if ( !lWasGraphicDialog && dialogName() && isDialogVersionBetter09b() ) + { + strcat( lDialogString , "--insecure " ) ; + } + strcat( lDialogString , "--passwordbox" ) ; + } + strcat( lDialogString , " \"" ) ; + if ( aMessage && strlen(aMessage) ) + { + strcat(lDialogString, aMessage) ; + } + strcat(lDialogString,"\" 10 60 ") ; + if ( aDefaultInput && strlen(aDefaultInput) ) + { + strcat(lDialogString, "\"") ; + strcat(lDialogString, aDefaultInput) ; + strcat(lDialogString, "\" ") ; + } + if ( lWasGraphicDialog ) + { + strcat(lDialogString,") 2>/tmp/tinyfd.txt;\ + if [ $? = 0 ];then tinyfdBool=1;else tinyfdBool=0;fi;\ + tinyfdRes=$(cat /tmp/tinyfd.txt);echo $tinyfdBool$tinyfdRes") ; + } + else + { + strcat(lDialogString,">/dev/tty ) 2>/tmp/tinyfd.txt;\ + if [ $? = 0 ];then tinyfdBool=1;else tinyfdBool=0;fi;\ + tinyfdRes=$(cat /tmp/tinyfd.txt);echo $tinyfdBool$tinyfdRes") ; + + if ( lWasXterm ) + { + strcat(lDialogString," >/tmp/tinyfd0.txt';cat /tmp/tinyfd0.txt"); + } + else + { + strcat(lDialogString, "; clear >/dev/tty") ; + } + } + } + else if ( ! isTerminalRunning( ) && terminalName() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"basicinput");return (char *)0;} + lWasBasicXterm = 1 ; + strcpy( lDialogString , terminalName() ) ; + strcat( lDialogString , "'" ) ; + if ( !gWarningDisplayed && !tinyfd_forceConsole) + { + gWarningDisplayed = 1 ; + tinyfd_messageBox(gTitle,tinyfd_needs,"ok","warning",0); + } + if ( aTitle && strlen(aTitle) && !tinyfd_forceConsole) + { + strcat( lDialogString , "echo \"" ) ; + strcat( lDialogString, aTitle) ; + strcat( lDialogString , "\";echo;" ) ; + } + + strcat( lDialogString , "echo \"" ) ; + if ( aMessage && strlen(aMessage) ) + { + strcat( lDialogString, aMessage) ; + } + strcat( lDialogString , "\";read " ) ; + if ( ! aDefaultInput ) + { + strcat( lDialogString , "-s " ) ; + } + strcat( lDialogString , "-p \"" ) ; + strcat( lDialogString , "(esc+enter to cancel): \" ANSWER " ) ; + strcat( lDialogString , ";echo 1$ANSWER >/tmp/tinyfd.txt';" ) ; + strcat( lDialogString , "cat -v /tmp/tinyfd.txt"); + } + else if ( !gWarningDisplayed && ! isTerminalRunning( ) && ! terminalName() ) { + gWarningDisplayed = 1 ; + tinyfd_messageBox(gTitle,tinyfd_needs,"ok","warning",0); + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"no_solution");return (char *)0;} + free(lDialogString); + return NULL; + } + else + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"basicinput");return (char *)0;} + if ( !gWarningDisplayed && !tinyfd_forceConsole) + { + gWarningDisplayed = 1 ; + tinyfd_messageBox(gTitle,tinyfd_needs,"ok","warning",0); + } + if ( aTitle && strlen(aTitle) ) + { + printf("\n%s\n", aTitle); + } + if ( aMessage && strlen(aMessage) ) + { + printf("\n%s\n",aMessage); + } + printf("(esc+enter to cancel): "); fflush(stdout); + if ( ! aDefaultInput ) + { + tcgetattr(STDIN_FILENO, & oldt) ; + newt = oldt ; + newt.c_lflag &= ~ECHO ; + tcsetattr(STDIN_FILENO, TCSANOW, & newt); + } + + lEOF = fgets(lBuff, MAX_PATH_OR_CMD, stdin); + /* printf("lbuff<%c><%d>\n",lBuff[0],lBuff[0]); */ + if ( ! lEOF || (lBuff[0] == '\0') ) + { + free(lDialogString); + return NULL; + } + + if ( lBuff[0] == '\n' ) + { + lEOF = fgets(lBuff, MAX_PATH_OR_CMD, stdin); + /* printf("lbuff<%c><%d>\n",lBuff[0],lBuff[0]); */ + if ( ! lEOF || (lBuff[0] == '\0') ) + { + free(lDialogString); + return NULL; + } + } + + if ( ! aDefaultInput ) + { + tcsetattr(STDIN_FILENO, TCSANOW, & oldt); + printf("\n"); + } + printf("\n"); + if ( strchr(lBuff,27) ) + { + free(lDialogString); + return NULL ; + } + if ( lBuff[strlen( lBuff ) -1] == '\n' ) + { + lBuff[strlen( lBuff ) -1] = '\0' ; + } + free(lDialogString); + return lBuff ; + } + + if (tinyfd_verbose) printf( "lDialogString: %s\n" , lDialogString ) ; + lIn = popen( lDialogString , "r" ); + if ( ! lIn ) + { + if ( fileExists("/tmp/tinyfd.txt") ) + { + wipefile("/tmp/tinyfd.txt"); + remove("/tmp/tinyfd.txt"); + } + if ( fileExists("/tmp/tinyfd0.txt") ) + { + wipefile("/tmp/tinyfd0.txt"); + remove("/tmp/tinyfd0.txt"); + } + free(lDialogString); + return NULL ; + } + while ( fgets( lBuff , sizeof( lBuff ) , lIn ) != NULL ) + {} + + pclose( lIn ) ; + + if ( fileExists("/tmp/tinyfd.txt") ) + { + wipefile("/tmp/tinyfd.txt"); + remove("/tmp/tinyfd.txt"); + } + if ( fileExists("/tmp/tinyfd0.txt") ) + { + wipefile("/tmp/tinyfd0.txt"); + remove("/tmp/tinyfd0.txt"); + } + + /* printf( "len Buff: %lu\n" , strlen(lBuff) ) ; */ + /* printf( "lBuff0: %s\n" , lBuff ) ; */ + if ( strlen( lBuff ) && lBuff[strlen( lBuff ) -1] == '\n' ) + { + lBuff[strlen( lBuff ) -1] = '\0' ; + } + /* printf( "lBuff1: %s len: %lu \n" , lBuff , strlen(lBuff) ) ; */ + if ( lWasBasicXterm ) + { + if ( strstr(lBuff,"^[") ) /* esc was pressed */ + { + free(lDialogString); + return NULL ; + } + } + + lResult = strncmp( lBuff , "1" , 1) ? 0 : 1 ; + /* printf( "lResult: %d \n" , lResult ) ; */ + if ( ! lResult ) + { + free(lDialogString); + return NULL ; + } + + /* printf( "lBuff+1: %s\n" , lBuff+1 ) ; */ + free(lDialogString); + return lBuff+1 ; +} + + +char * tinyfd_saveFileDialog( + char const * aTitle , /* NULL or "" */ + char const * aDefaultPathAndOrFile , /* NULL or "" , ends with / to set only a directory */ + int aNumOfFilterPatterns , /* 0 */ + char const * const * aFilterPatterns , /* NULL or {"*.txt","*.doc"} */ + char const * aSingleFilterDescription ) /* NULL or "text files" */ +{ + static char lBuff[MAX_PATH_OR_CMD] ; + static char lLastDirectory[MAX_PATH_OR_CMD] = "$PWD" ; + + char lDialogString[MAX_PATH_OR_CMD] ; + char lString[MAX_PATH_OR_CMD] ; + int i ; + int lWasGraphicDialog = 0 ; + int lWasXterm = 0 ; + char * p ; + char * lPointerInputBox ; + FILE * lIn ; + lBuff[0]='\0'; + + if ( ! aFilterPatterns ) aNumOfFilterPatterns = 0 ; + if (tfd_quoteDetected(aTitle)) return tinyfd_saveFileDialog("INVALID TITLE WITH QUOTES", aDefaultPathAndOrFile, aNumOfFilterPatterns, aFilterPatterns, aSingleFilterDescription); + if (tfd_quoteDetected(aDefaultPathAndOrFile)) return tinyfd_saveFileDialog(aTitle, "INVALID DEFAULT_PATH WITH QUOTES", aNumOfFilterPatterns, aFilterPatterns, aSingleFilterDescription); + if (tfd_quoteDetected(aSingleFilterDescription)) return tinyfd_saveFileDialog(aTitle, aDefaultPathAndOrFile, aNumOfFilterPatterns, aFilterPatterns, "INVALID FILTER_DESCRIPTION WITH QUOTES"); + for (i = 0; i < aNumOfFilterPatterns; i++) + { + if (tfd_quoteDetected(aFilterPatterns[i])) return tinyfd_saveFileDialog("INVALID FILTER_PATTERN WITH QUOTES: use the GRAVE ACCENT \\x60 instead.", aDefaultPathAndOrFile, 0, NULL, NULL); + } + + if ( osascriptPresent( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"applescript");return (char *)1;} + strcpy( lDialogString , "osascript "); + if ( ! osx9orBetter() ) strcat( lDialogString , " -e 'tell application \"Finder\"' -e 'Activate'"); + strcat( lDialogString , " -e 'try' -e 'POSIX path of ( choose file name " ); + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, "with prompt \"") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\" ") ; + } + getPathWithoutFinalSlash( lString , aDefaultPathAndOrFile ) ; + if ( strlen(lString) ) + { + strcat(lDialogString, "default location \"") ; + strcat(lDialogString, lString ) ; + strcat(lDialogString , "\" " ) ; + } + getLastName( lString , aDefaultPathAndOrFile ) ; + if ( strlen(lString) ) + { + strcat(lDialogString, "default name \"") ; + strcat(lDialogString, lString ) ; + strcat(lDialogString , "\" " ) ; + } + strcat( lDialogString , ")' " ) ; + strcat(lDialogString, "-e 'on error number -128' " ) ; + strcat(lDialogString, "-e 'end try'") ; + if ( ! osx9orBetter() ) strcat( lDialogString, " -e 'end tell'") ; + } + else if ( tfd_kdialogPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"kdialog");return (char *)1;} + + strcpy( lDialogString , "kdialog" ) ; + if ( (tfd_kdialogPresent() == 2) && tfd_xpropPresent() ) + { + strcat(lDialogString, " --attach=$(xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2)"); /* contribution: Paul Rouget */ + } + strcat( lDialogString , " --getsavefilename " ) ; + + if ( aDefaultPathAndOrFile && strlen(aDefaultPathAndOrFile) ) + { + if ( aDefaultPathAndOrFile[0] != '/' ) + { + strcat(lDialogString, lLastDirectory) ; + strcat(lDialogString , "/" ) ; + } + strcat(lDialogString, "\"") ; + strcat(lDialogString, aDefaultPathAndOrFile ) ; + strcat(lDialogString , "\"" ) ; + } + else + { + strcat(lDialogString, lLastDirectory) ; + strcat(lDialogString , "/" ) ; + } + + if ( aNumOfFilterPatterns > 0 ) + { + strcat(lDialogString , " \"" ) ; + strcat( lDialogString , aFilterPatterns[0] ) ; + for ( i = 1 ; i < aNumOfFilterPatterns ; i ++ ) + { + strcat( lDialogString , " " ) ; + strcat( lDialogString , aFilterPatterns[i] ) ; + } + if ( aSingleFilterDescription && strlen(aSingleFilterDescription) ) + { + strcat( lDialogString , " | " ) ; + strcat( lDialogString , aSingleFilterDescription ) ; + } + strcat( lDialogString , "\"" ) ; + } + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, " --title \"") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\"") ; + } + } + else if ( tfd_zenityPresent() || tfd_matedialogPresent() || tfd_shellementaryPresent() || tfd_qarmaPresent() ) + { + if ( tfd_zenityPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"zenity");return (char *)1;} + strcpy( lDialogString , "zenity" ) ; + if ( (tfd_zenity3Present() >= 4) && !getenv("SSH_TTY") && tfd_xpropPresent() ) + { + strcat( lDialogString, " --attach=$(sleep .01;xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2)"); /* contribution: Paul Rouget */ + } + } + else if ( tfd_matedialogPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"matedialog");return (char *)1;} + strcpy( lDialogString , "matedialog" ) ; + } + else if ( tfd_shellementaryPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"shellementary");return (char *)1;} + strcpy( lDialogString , "shellementary" ) ; + } + else + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"qarma");return (char *)1;} + strcpy( lDialogString , "qarma" ) ; + if ( !getenv("SSH_TTY") && tfd_xpropPresent() ) + { + strcat(lDialogString, " --attach=$(xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2)"); /* contribution: Paul Rouget */ + } + } + strcat(lDialogString, " --file-selection --save --confirm-overwrite" ) ; + + strcat(lDialogString, " --title=\"") ; + if (aTitle && strlen(aTitle)) strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\"") ; + + if ( aDefaultPathAndOrFile && strlen(aDefaultPathAndOrFile) ) + { + strcat(lDialogString, " --filename=\"") ; + strcat(lDialogString, aDefaultPathAndOrFile) ; + strcat(lDialogString, "\"") ; + } + if ( aNumOfFilterPatterns > 0 ) + { + strcat( lDialogString , " --file-filter='" ) ; + if ( aSingleFilterDescription && strlen(aSingleFilterDescription) ) + { + strcat( lDialogString , aSingleFilterDescription ) ; + strcat( lDialogString , " |" ) ; + } + for ( i = 0 ; i < aNumOfFilterPatterns ; i ++ ) + { + strcat( lDialogString , " " ) ; + strcat( lDialogString , aFilterPatterns[i] ) ; + } + strcat( lDialogString , "' --file-filter='All files | *'" ) ; + } + if (tinyfd_silent) strcat( lDialogString , " 2>/dev/null "); + } + else if (tfd_yadPresent()) + { + if (aTitle && !strcmp(aTitle, "tinyfd_query")) { strcpy(tinyfd_response, "yad"); return (char*)1; } + strcpy(lDialogString, "yad --file --save --confirm-overwrite"); + if (aTitle && strlen(aTitle)) + { + strcat(lDialogString, " --title=\""); + strcat(lDialogString, aTitle); + strcat(lDialogString, "\""); + } + if (aDefaultPathAndOrFile && strlen(aDefaultPathAndOrFile)) + { + strcat(lDialogString, " --filename=\""); + strcat(lDialogString, aDefaultPathAndOrFile); + strcat(lDialogString, "\""); + } + if (aNumOfFilterPatterns > 0) + { + strcat(lDialogString, " --file-filter='"); + if (aSingleFilterDescription && strlen(aSingleFilterDescription)) + { + strcat(lDialogString, aSingleFilterDescription); + strcat(lDialogString, " |"); + } + for (i = 0; i < aNumOfFilterPatterns; i++) + { + strcat(lDialogString, " "); + strcat(lDialogString, aFilterPatterns[i]); + } + strcat(lDialogString, "' --file-filter='All files | *'"); + } + if (tinyfd_silent) strcat(lDialogString, " 2>/dev/null "); + } + else if ( !xdialogPresent() && tkinter3Present( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"python3-tkinter");return (char *)1;} + strcpy( lDialogString , gPython3Name ) ; + strcat( lDialogString , + " -S -c \"import tkinter;from tkinter import filedialog;root=tkinter.Tk();root.withdraw();"); + strcat( lDialogString , "res=filedialog.asksaveasfilename("); + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, "title='") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "',") ; + } + if ( aDefaultPathAndOrFile && strlen(aDefaultPathAndOrFile) ) + { + getPathWithoutFinalSlash( lString , aDefaultPathAndOrFile ) ; + if ( strlen(lString) ) + { + strcat(lDialogString, "initialdir='") ; + strcat(lDialogString, lString ) ; + strcat(lDialogString , "'," ) ; + } + getLastName( lString , aDefaultPathAndOrFile ) ; + if ( strlen(lString) ) + { + strcat(lDialogString, "initialfile='") ; + strcat(lDialogString, lString ) ; + strcat(lDialogString , "'," ) ; + } + } + if ( ( aNumOfFilterPatterns > 1 ) + || ( (aNumOfFilterPatterns == 1) /* test because poor osx behaviour */ + && ( aFilterPatterns[0][strlen(aFilterPatterns[0])-1] != '*' ) ) ) + { + strcat(lDialogString , "filetypes=(" ) ; + strcat( lDialogString , "('" ) ; + if ( aSingleFilterDescription && strlen(aSingleFilterDescription) ) + { + strcat( lDialogString , aSingleFilterDescription ) ; + } + strcat( lDialogString , "',(" ) ; + for ( i = 0 ; i < aNumOfFilterPatterns ; i ++ ) + { + strcat( lDialogString , "'" ) ; + strcat( lDialogString , aFilterPatterns[i] ) ; + strcat( lDialogString , "'," ) ; + } + strcat( lDialogString , "))," ) ; + strcat( lDialogString , "('All files','*'))" ) ; + } + strcat( lDialogString, ");\nif not isinstance(res, tuple):\n\tprint(res)\n\"" ) ; + } + else if ( !xdialogPresent() && tkinter2Present( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"python2-tkinter");return (char *)1;} + strcpy( lDialogString , "export PYTHONIOENCODING=utf-8;" ) ; + strcat( lDialogString , gPython2Name ) ; + if ( ! isTerminalRunning( ) && tfd_isDarwin( )) + { + strcat( lDialogString , " -i" ) ; /* for osx without console */ + } + strcat( lDialogString , +" -S -c \"import Tkinter,tkFileDialog;root=Tkinter.Tk();root.withdraw();"); + + if ( tfd_isDarwin( ) ) + { + strcat( lDialogString , +"import os;os.system('''/usr/bin/osascript -e 'tell app \\\"Finder\\\" to set\ + frontmost of process \\\"Python\\\" to true' ''');"); + } + + strcat( lDialogString , "res=tkFileDialog.asksaveasfilename("); + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, "title='") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "',") ; + } + if ( aDefaultPathAndOrFile && strlen(aDefaultPathAndOrFile) ) + { + getPathWithoutFinalSlash( lString , aDefaultPathAndOrFile ) ; + if ( strlen(lString) ) + { + strcat(lDialogString, "initialdir='") ; + strcat(lDialogString, lString ) ; + strcat(lDialogString , "'," ) ; + } + getLastName( lString , aDefaultPathAndOrFile ) ; + if ( strlen(lString) ) + { + strcat(lDialogString, "initialfile='") ; + strcat(lDialogString, lString ) ; + strcat(lDialogString , "'," ) ; + } + } + if ( ( aNumOfFilterPatterns > 1 ) + || ( (aNumOfFilterPatterns == 1) /* test because poor osx behaviour */ + && ( aFilterPatterns[0][strlen(aFilterPatterns[0])-1] != '*' ) ) ) + { + strcat(lDialogString , "filetypes=(" ) ; + strcat( lDialogString , "('" ) ; + if ( aSingleFilterDescription && strlen(aSingleFilterDescription) ) + { + strcat( lDialogString , aSingleFilterDescription ) ; + } + strcat( lDialogString , "',(" ) ; + for ( i = 0 ; i < aNumOfFilterPatterns ; i ++ ) + { + strcat( lDialogString , "'" ) ; + strcat( lDialogString , aFilterPatterns[i] ) ; + strcat( lDialogString , "'," ) ; + } + strcat( lDialogString , "))," ) ; + strcat( lDialogString , "('All files','*'))" ) ; + } + strcat( lDialogString, ");\nif not isinstance(res, tuple):\n\tprint res \n\"" ) ; + } + else if ( xdialogPresent() || dialogName() ) + { + if ( xdialogPresent( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"xdialog");return (char *)1;} + lWasGraphicDialog = 1 ; + strcpy( lDialogString , "(Xdialog " ) ; + } + else if ( isTerminalRunning( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"dialog");return (char *)0;} + strcpy( lDialogString , "(dialog " ) ; + } + else + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"dialog");return (char *)0;} + lWasXterm = 1 ; + strcpy( lDialogString , terminalName() ) ; + strcat( lDialogString , "'(" ) ; + strcat( lDialogString , dialogName() ) ; + strcat( lDialogString , " " ) ; + } + + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, "--title \"") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\" ") ; + } + + if ( !xdialogPresent() && !gdialogPresent() ) + { + strcat(lDialogString, "--backtitle \"") ; + strcat(lDialogString, + "tab: focus | /: populate | spacebar: fill text field | ok: TEXT FIELD ONLY") ; + strcat(lDialogString, "\" ") ; + } + + strcat( lDialogString , "--fselect \"" ) ; + if ( aDefaultPathAndOrFile && strlen(aDefaultPathAndOrFile) ) + { + if ( ! strchr(aDefaultPathAndOrFile, '/') ) + { + strcat(lDialogString, "./") ; + } + strcat(lDialogString, aDefaultPathAndOrFile) ; + } + else if ( ! isTerminalRunning( ) && !lWasGraphicDialog ) + { + strcat(lDialogString, getenv("HOME")) ; + strcat(lDialogString, "/") ; + } + else + { + strcat(lDialogString, "./") ; + } + + if ( lWasGraphicDialog ) + { + strcat(lDialogString, "\" 0 60 ) 2>&1 ") ; + } + else + { + strcat(lDialogString, "\" 0 60 >/dev/tty) ") ; + if ( lWasXterm ) + { + strcat( lDialogString , + "2>/tmp/tinyfd.txt';cat /tmp/tinyfd.txt;rm /tmp/tinyfd.txt"); + } + else + { + strcat(lDialogString, "2>&1 ; clear >/dev/tty") ; + } + } + } + else + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){return tinyfd_inputBox(aTitle,NULL,NULL);} + strcpy(lBuff, "Save file in "); + strcat(lBuff, getCurDir()); + lPointerInputBox = tinyfd_inputBox(NULL, NULL, NULL); /* obtain a pointer on the current content of tinyfd_inputBox */ + if (lPointerInputBox) strcpy(lString, lPointerInputBox); /* preserve the current content of tinyfd_inputBox */ + p = tinyfd_inputBox(aTitle, lBuff, ""); + if (p) strcpy(lBuff, p); else lBuff[0] = '\0'; + if (lPointerInputBox) strcpy(lPointerInputBox, lString); /* restore its previous content to tinyfd_inputBox */ + p = lBuff; + + getPathWithoutFinalSlash( lString , p ) ; + if ( strlen( lString ) && ! dirExists( lString ) ) + { + return NULL ; + } + getLastName(lString,p); + if ( ! strlen(lString) ) + { + return NULL; + } + return p ; + } + + if (tinyfd_verbose) printf( "lDialogString: %s\n" , lDialogString ) ; + if ( ! ( lIn = popen( lDialogString , "r" ) ) ) + { + return NULL ; + } + while ( fgets( lBuff , sizeof( lBuff ) , lIn ) != NULL ) + {} + pclose( lIn ) ; + if ( strlen(lBuff) && lBuff[strlen( lBuff ) -1] == '\n' ) + { + lBuff[strlen( lBuff ) -1] = '\0' ; + } + /* printf( "lBuff: %s\n" , lBuff ) ; */ + if ( ! strlen(lBuff) ) + { + return NULL; + } + + getPathWithoutFinalSlash( lString , lBuff ) ; + if ( strlen( lString ) && ! dirExists( lString ) ) + { + return NULL ; + } + strcpy(lLastDirectory, lString) ; + + getLastName(lString,lBuff); + if ( ! filenameValid(lString) ) + { + return NULL; + } + return lBuff ; +} + + +/* in case of multiple files, the separator is | */ +char * tinyfd_openFileDialog( + char const * aTitle , /* NULL or "" */ + char const * aDefaultPathAndOrFile , /* NULL or "" , ends with / to set only a directory */ + int aNumOfFilterPatterns , /* 0 */ + char const * const * aFilterPatterns , /* NULL or {"*.jpg","*.png"} */ + char const * aSingleFilterDescription , /* NULL or "image files" */ + int aAllowMultipleSelects ) /* 0 or 1 */ +{ + static char * lBuff = NULL; + static char lLastDirectory[MAX_PATH_OR_CMD] = "$PWD" ; + + char lDialogString[MAX_PATH_OR_CMD] ; + char lString[MAX_PATH_OR_CMD] ; + int i ; + FILE * lIn ; + char * p ; + char * lPointerInputBox ; + size_t lFullBuffLen ; + int lWasKdialog = 0 ; + int lWasGraphicDialog = 0 ; + int lWasXterm = 0 ; + + if ( ! aFilterPatterns ) aNumOfFilterPatterns = 0 ; + if (tfd_quoteDetected(aTitle)) return tinyfd_openFileDialog("INVALID TITLE WITH QUOTES", aDefaultPathAndOrFile, aNumOfFilterPatterns, aFilterPatterns, aSingleFilterDescription, aAllowMultipleSelects); + if (tfd_quoteDetected(aDefaultPathAndOrFile)) return tinyfd_openFileDialog(aTitle, "INVALID DEFAULT_PATH WITH QUOTES", aNumOfFilterPatterns, aFilterPatterns, aSingleFilterDescription, aAllowMultipleSelects); + if (tfd_quoteDetected(aSingleFilterDescription)) return tinyfd_openFileDialog(aTitle, aDefaultPathAndOrFile, aNumOfFilterPatterns, aFilterPatterns, "INVALID FILTER_DESCRIPTION WITH QUOTES", aAllowMultipleSelects); + for (i = 0; i < aNumOfFilterPatterns; i++) + { + if (tfd_quoteDetected(aFilterPatterns[i])) return tinyfd_openFileDialog("INVALID FILTER_PATTERN WITH QUOTES: use the GRAVE ACCENT \\x60 instead.", aDefaultPathAndOrFile, 0, NULL, NULL, aAllowMultipleSelects); + } + + free(lBuff); + if (aTitle&&!strcmp(aTitle,"tinyfd_query")) + { + lBuff = NULL; + } + else + { + if (aAllowMultipleSelects) + { + lFullBuffLen = MAX_MULTIPLE_FILES * MAX_PATH_OR_CMD + 1; + lBuff = (char *) malloc(lFullBuffLen * sizeof(char)); + if (!lBuff) + { + lFullBuffLen = LOW_MULTIPLE_FILES * MAX_PATH_OR_CMD + 1; + lBuff = (char *) malloc( lFullBuffLen * sizeof(char)); + } + } + else + { + lFullBuffLen = MAX_PATH_OR_CMD + 1; + lBuff = (char *) malloc(lFullBuffLen * sizeof(char)); + } + if (!lBuff) return NULL; + lBuff[0]='\0'; + } + + if ( osascriptPresent( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"applescript");return (char *)1;} + strcpy( lDialogString , "osascript "); + if ( ! osx9orBetter() ) strcat( lDialogString , " -e 'tell application \"System Events\"' -e 'Activate'"); + strcat( lDialogString , " -e 'try' -e '" ); + if ( ! aAllowMultipleSelects ) + { + + + strcat( lDialogString , "POSIX path of ( " ); + } + else + { + strcat( lDialogString , "set mylist to " ); + } + strcat( lDialogString , "choose file " ); + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, "with prompt \"") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\" ") ; + } + getPathWithoutFinalSlash( lString , aDefaultPathAndOrFile ) ; + if ( strlen(lString) ) + { + strcat(lDialogString, "default location \"") ; + strcat(lDialogString, lString ) ; + strcat(lDialogString , "\" " ) ; + } + if ( aNumOfFilterPatterns > 0 ) + { + strcat(lDialogString , "of type {\"" ); + strcat( lDialogString , aFilterPatterns[0] + 2 ) ; + strcat( lDialogString , "\"" ) ; + for ( i = 1 ; i < aNumOfFilterPatterns ; i ++ ) + { + strcat( lDialogString , ",\"" ) ; + strcat( lDialogString , aFilterPatterns[i] + 2) ; + strcat( lDialogString , "\"" ) ; + } + strcat( lDialogString , "} " ) ; + } + if ( aAllowMultipleSelects ) + { + strcat( lDialogString , "multiple selections allowed true ' " ) ; + strcat( lDialogString , + "-e 'set mystring to POSIX path of item 1 of mylist' " ); + strcat( lDialogString , + "-e 'repeat with i from 2 to the count of mylist' " ); + strcat( lDialogString , "-e 'set mystring to mystring & \"|\"' " ); + strcat( lDialogString , + "-e 'set mystring to mystring & POSIX path of item i of mylist' " ); + strcat( lDialogString , "-e 'end repeat' " ); + strcat( lDialogString , "-e 'mystring' " ); + } + else + { + strcat( lDialogString , ")' " ) ; + } + strcat(lDialogString, "-e 'on error number -128' " ) ; + strcat(lDialogString, "-e 'end try'") ; + if ( ! osx9orBetter() ) strcat( lDialogString, " -e 'end tell'") ; + } + else if ( tfd_kdialogPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"kdialog");return (char *)1;} + lWasKdialog = 1 ; + + strcpy( lDialogString , "kdialog" ) ; + if ( (tfd_kdialogPresent() == 2) && tfd_xpropPresent() ) + { + strcat(lDialogString, " --attach=$(xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2)"); /* contribution: Paul Rouget */ + } + strcat( lDialogString , " --getopenfilename " ) ; + + if ( aDefaultPathAndOrFile && strlen(aDefaultPathAndOrFile) ) + { + if ( aDefaultPathAndOrFile[0] != '/' ) + { + strcat(lDialogString, lLastDirectory) ; + strcat(lDialogString , "/" ) ; + } + strcat(lDialogString, "\"") ; + strcat(lDialogString, aDefaultPathAndOrFile ) ; + strcat(lDialogString , "\"" ) ; + } + else + { + strcat(lDialogString, lLastDirectory) ; + strcat(lDialogString , "/" ) ; + } + + if ( aNumOfFilterPatterns > 0 ) + { + strcat(lDialogString , " \"" ) ; + strcat( lDialogString , aFilterPatterns[0] ) ; + for ( i = 1 ; i < aNumOfFilterPatterns ; i ++ ) + { + strcat( lDialogString , " " ) ; + strcat( lDialogString , aFilterPatterns[i] ) ; + } + if ( aSingleFilterDescription && strlen(aSingleFilterDescription) ) + { + strcat( lDialogString , " | " ) ; + strcat( lDialogString , aSingleFilterDescription ) ; + } + strcat( lDialogString , "\"" ) ; + } + if ( aAllowMultipleSelects ) + { + strcat( lDialogString , " --multiple --separate-output" ) ; + } + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, " --title \"") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\"") ; + } + } + else if ( tfd_zenityPresent() || tfd_matedialogPresent() || tfd_shellementaryPresent() || tfd_qarmaPresent() ) + { + if ( tfd_zenityPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"zenity");return (char *)1;} + strcpy( lDialogString , "zenity" ) ; + if ( (tfd_zenity3Present() >= 4) && !getenv("SSH_TTY") && tfd_xpropPresent() ) + { + strcat( lDialogString, " --attach=$(sleep .01;xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2)"); /* contribution: Paul Rouget */ + } + } + else if ( tfd_matedialogPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"matedialog");return (char *)1;} + strcpy( lDialogString , "matedialog" ) ; + } + else if ( tfd_shellementaryPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"shellementary");return (char *)1;} + strcpy( lDialogString , "shellementary" ) ; + } + else + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"qarma");return (char *)1;} + strcpy( lDialogString , "qarma" ) ; + if ( !getenv("SSH_TTY") && tfd_xpropPresent() ) + { + strcat(lDialogString, " --attach=$(xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2)"); /* contribution: Paul Rouget */ + } + } + strcat( lDialogString , " --file-selection" ) ; + + if ( aAllowMultipleSelects ) + { + strcat( lDialogString , " --multiple" ) ; + } + + strcat(lDialogString, " --title=\"") ; + if (aTitle && strlen(aTitle)) strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\"") ; + + if ( aDefaultPathAndOrFile && strlen(aDefaultPathAndOrFile) ) + { + strcat(lDialogString, " --filename=\"") ; + strcat(lDialogString, aDefaultPathAndOrFile) ; + strcat(lDialogString, "\"") ; + } + if ( aNumOfFilterPatterns > 0 ) + { + strcat( lDialogString , " --file-filter='" ) ; + if ( aSingleFilterDescription && strlen(aSingleFilterDescription) ) + { + strcat( lDialogString , aSingleFilterDescription ) ; + strcat( lDialogString , " |" ) ; + } + for ( i = 0 ; i < aNumOfFilterPatterns ; i ++ ) + { + strcat( lDialogString , " " ) ; + strcat( lDialogString , aFilterPatterns[i] ) ; + } + strcat( lDialogString , "' --file-filter='All files | *'" ) ; + } + if (tinyfd_silent) strcat( lDialogString , " 2>/dev/null "); + } + else if (tfd_yadPresent()) + { + if (aTitle && !strcmp(aTitle, "tinyfd_query")) { strcpy(tinyfd_response, "yad"); return (char*)1; } + strcpy(lDialogString, "yad --file"); + if (aAllowMultipleSelects) + { + strcat(lDialogString, " --multiple"); + } + if (aTitle && strlen(aTitle)) + { + strcat(lDialogString, " --title=\""); + strcat(lDialogString, aTitle); + strcat(lDialogString, "\""); + } + if (aDefaultPathAndOrFile && strlen(aDefaultPathAndOrFile)) + { + strcat(lDialogString, " --filename=\""); + strcat(lDialogString, aDefaultPathAndOrFile); + strcat(lDialogString, "\""); + } + if (aNumOfFilterPatterns > 0) + { + strcat(lDialogString, " --file-filter='"); + if (aSingleFilterDescription && strlen(aSingleFilterDescription)) + { + strcat(lDialogString, aSingleFilterDescription); + strcat(lDialogString, " |"); + } + for (i = 0; i < aNumOfFilterPatterns; i++) + { + strcat(lDialogString, " "); + strcat(lDialogString, aFilterPatterns[i]); + } + strcat(lDialogString, "' --file-filter='All files | *'"); + } + if (tinyfd_silent) strcat(lDialogString, " 2>/dev/null "); + } + else if ( tkinter3Present( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"python3-tkinter");return (char *)1;} + strcpy( lDialogString , gPython3Name ) ; + strcat( lDialogString , + " -S -c \"import tkinter;from tkinter import filedialog;root=tkinter.Tk();root.withdraw();"); + strcat( lDialogString , "lFiles=filedialog.askopenfilename("); + if ( aAllowMultipleSelects ) + { + strcat( lDialogString , "multiple=1," ) ; + } + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, "title='") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "',") ; + } + if ( aDefaultPathAndOrFile && strlen(aDefaultPathAndOrFile) ) + { + getPathWithoutFinalSlash( lString , aDefaultPathAndOrFile ) ; + if ( strlen(lString) ) + { + strcat(lDialogString, "initialdir='") ; + strcat(lDialogString, lString ) ; + strcat(lDialogString , "'," ) ; + } + getLastName( lString , aDefaultPathAndOrFile ) ; + if ( strlen(lString) ) + { + strcat(lDialogString, "initialfile='") ; + strcat(lDialogString, lString ) ; + strcat(lDialogString , "'," ) ; + } + } + if ( ( aNumOfFilterPatterns > 1 ) + || ( ( aNumOfFilterPatterns == 1 ) /*test because poor osx behaviour*/ + && ( aFilterPatterns[0][strlen(aFilterPatterns[0])-1] != '*' ) ) ) + { + strcat(lDialogString , "filetypes=(" ) ; + strcat( lDialogString , "('" ) ; + if ( aSingleFilterDescription && strlen(aSingleFilterDescription) ) + { + strcat( lDialogString , aSingleFilterDescription ) ; + } + strcat( lDialogString , "',(" ) ; + for ( i = 0 ; i < aNumOfFilterPatterns ; i ++ ) + { + strcat( lDialogString , "'" ) ; + strcat( lDialogString , aFilterPatterns[i] ) ; + strcat( lDialogString , "'," ) ; + } + strcat( lDialogString , "))," ) ; + strcat( lDialogString , "('All files','*'))" ) ; + } + strcat( lDialogString , ");\ +\nif not isinstance(lFiles, tuple):\n\tprint(lFiles)\nelse:\ +\n\tlFilesString=''\n\tfor lFile in lFiles:\n\t\tlFilesString+=str(lFile)+'|'\ +\n\tprint(lFilesString[:-1])\n\"" ) ; + } + else if ( tkinter2Present( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"python2-tkinter");return (char *)1;} + strcpy( lDialogString , "export PYTHONIOENCODING=utf-8;" ) ; + strcat( lDialogString , gPython2Name ) ; + if ( ! isTerminalRunning( ) && tfd_isDarwin( ) ) + { + strcat( lDialogString , " -i" ) ; /* for osx without console */ + } + strcat( lDialogString , +" -S -c \"import Tkinter,tkFileDialog;root=Tkinter.Tk();root.withdraw();"); + + if ( tfd_isDarwin( ) ) + { + strcat( lDialogString , +"import os;os.system('''/usr/bin/osascript -e 'tell app \\\"Finder\\\" to set \ +frontmost of process \\\"Python\\\" to true' ''');"); + } + strcat( lDialogString , "lFiles=tkFileDialog.askopenfilename("); + if ( aAllowMultipleSelects ) + { + strcat( lDialogString , "multiple=1," ) ; + } + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, "title='") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "',") ; + } + if ( aDefaultPathAndOrFile && strlen(aDefaultPathAndOrFile) ) + { + getPathWithoutFinalSlash( lString , aDefaultPathAndOrFile ) ; + if ( strlen(lString) ) + { + strcat(lDialogString, "initialdir='") ; + strcat(lDialogString, lString ) ; + strcat(lDialogString , "'," ) ; + } + getLastName( lString , aDefaultPathAndOrFile ) ; + if ( strlen(lString) ) + { + strcat(lDialogString, "initialfile='") ; + strcat(lDialogString, lString ) ; + strcat(lDialogString , "'," ) ; + } + } + if ( ( aNumOfFilterPatterns > 1 ) + || ( ( aNumOfFilterPatterns == 1 ) /*test because poor osx behaviour*/ + && ( aFilterPatterns[0][strlen(aFilterPatterns[0])-1] != '*' ) ) ) + { + strcat(lDialogString , "filetypes=(" ) ; + strcat( lDialogString , "('" ) ; + if ( aSingleFilterDescription && strlen(aSingleFilterDescription) ) + { + strcat( lDialogString , aSingleFilterDescription ) ; + } + strcat( lDialogString , "',(" ) ; + for ( i = 0 ; i < aNumOfFilterPatterns ; i ++ ) + { + strcat( lDialogString , "'" ) ; + strcat( lDialogString , aFilterPatterns[i] ) ; + strcat( lDialogString , "'," ) ; + } + strcat( lDialogString , "))," ) ; + strcat( lDialogString , "('All files','*'))" ) ; + } + strcat( lDialogString , ");\ +\nif not isinstance(lFiles, tuple):\n\tprint lFiles\nelse:\ +\n\tlFilesString=''\n\tfor lFile in lFiles:\n\t\tlFilesString+=str(lFile)+'|'\ +\n\tprint lFilesString[:-1]\n\"" ) ; + } + else if ( xdialogPresent() || dialogName() ) + { + if ( xdialogPresent( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"xdialog");return (char *)1;} + lWasGraphicDialog = 1 ; + strcpy( lDialogString , "(Xdialog " ) ; + } + else if ( isTerminalRunning( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"dialog");return (char *)0;} + strcpy( lDialogString , "(dialog " ) ; + } + else + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"dialog");return (char *)0;} + lWasXterm = 1 ; + strcpy( lDialogString , terminalName() ) ; + strcat( lDialogString , "'(" ) ; + strcat( lDialogString , dialogName() ) ; + strcat( lDialogString , " " ) ; + } + + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, "--title \"") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\" ") ; + } + + if ( !xdialogPresent() && !gdialogPresent() ) + { + strcat(lDialogString, "--backtitle \"") ; + strcat(lDialogString, + "tab: focus | /: populate | spacebar: fill text field | ok: TEXT FIELD ONLY") ; + strcat(lDialogString, "\" ") ; + } + + strcat( lDialogString , "--fselect \"" ) ; + if ( aDefaultPathAndOrFile && strlen(aDefaultPathAndOrFile) ) + { + if ( ! strchr(aDefaultPathAndOrFile, '/') ) + { + strcat(lDialogString, "./") ; + } + strcat(lDialogString, aDefaultPathAndOrFile) ; + } + else if ( ! isTerminalRunning( ) && !lWasGraphicDialog ) + { + strcat(lDialogString, getenv("HOME")) ; + strcat(lDialogString, "/"); + } + else + { + strcat(lDialogString, "./") ; + } + + if ( lWasGraphicDialog ) + { + strcat(lDialogString, "\" 0 60 ) 2>&1 ") ; + } + else + { + strcat(lDialogString, "\" 0 60 >/dev/tty) ") ; + if ( lWasXterm ) + { + strcat( lDialogString , + "2>/tmp/tinyfd.txt';cat /tmp/tinyfd.txt;rm /tmp/tinyfd.txt"); + } + else + { + strcat(lDialogString, "2>&1 ; clear >/dev/tty") ; + } + } + } + else + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){return tinyfd_inputBox(aTitle,NULL,NULL);} + strcpy(lBuff, "Open file from "); + strcat(lBuff, getCurDir()); + lPointerInputBox = tinyfd_inputBox(NULL, NULL, NULL); /* obtain a pointer on the current content of tinyfd_inputBox */ + if (lPointerInputBox) strcpy(lDialogString, lPointerInputBox); /* preserve the current content of tinyfd_inputBox */ + p = tinyfd_inputBox(aTitle, lBuff, ""); + if ( p ) strcpy(lBuff, p); else lBuff[0] = '\0'; + if (lPointerInputBox) strcpy(lPointerInputBox, lDialogString); /* restore its previous content to tinyfd_inputBox */ + if ( ! fileExists(lBuff) ) + { + free(lBuff); + lBuff = NULL; + } + else + { + lBuff = (char *)( realloc( lBuff, (strlen(lBuff)+1) * sizeof(char))); + } + return lBuff ; + } + + if (tinyfd_verbose) printf( "lDialogString: %s\n" , lDialogString ) ; + if ( ! ( lIn = popen( lDialogString , "r" ) ) ) + { + free(lBuff); + lBuff = NULL; + return NULL ; + } + lBuff[0]='\0'; + p = lBuff; + while ( fgets( p , sizeof( lBuff ) , lIn ) != NULL ) + { + p += strlen( p ); + } + pclose( lIn ) ; + + if ( strlen( lBuff ) && lBuff[strlen( lBuff ) -1] == '\n' ) + { + lBuff[strlen( lBuff ) -1] = '\0' ; + } + /* printf( "strlen lBuff: %d\n" , strlen( lBuff ) ) ; */ + if ( lWasKdialog && aAllowMultipleSelects ) + { + p = lBuff ; + while ( ( p = strchr( p , '\n' ) ) ) + * p = '|' ; + } + /* printf( "lBuff2: %s\n" , lBuff ) ; */ + if ( ! strlen( lBuff ) ) + { + free(lBuff); + lBuff = NULL; + return NULL; + } + if ( aAllowMultipleSelects && strchr(lBuff, '|') ) + { + if( ! ensureFilesExist( lBuff , lBuff ) ) + { + free(lBuff); + lBuff = NULL; + return NULL; + } + } + else if ( !fileExists(lBuff) ) + { + free(lBuff); + lBuff = NULL; + return NULL; + } + + p = strrchr(lBuff, '|'); + if ( !p ) p = lBuff ; + else p ++ ; + getPathWithoutFinalSlash( lString , p ) ; + /* printf( "lString [%lu]: %s\n" , strlen(lString) , lString ) ; */ + if ( strlen( lString ) && ! dirExists( lString ) ) + { + return NULL ; + } + strcpy(lLastDirectory, lString) ; + + lBuff = (char *)( realloc( lBuff, (strlen(lBuff)+1) * sizeof(char))); + + /*printf( "lBuff3 [%lu]: %s\n" , strlen(lBuff) , lBuff ) ; */ + return lBuff ; +} + + +char * tinyfd_selectFolderDialog( + char const * aTitle , /* "" */ + char const * aDefaultPath ) /* "" */ +{ + static char lBuff[MAX_PATH_OR_CMD] ; + static char lLastDirectory[MAX_PATH_OR_CMD] = "$PWD" ; + + char lDialogString[MAX_PATH_OR_CMD] ; + FILE * lIn ; + char * p ; + char * lPointerInputBox ; + int lWasGraphicDialog = 0 ; + int lWasXterm = 0 ; + lBuff[0]='\0'; + + if (tfd_quoteDetected(aTitle)) return tinyfd_selectFolderDialog("INVALID TITLE WITH QUOTES", aDefaultPath); + if (tfd_quoteDetected(aDefaultPath)) return tinyfd_selectFolderDialog(aTitle, "INVALID DEFAULT_PATH WITH QUOTES"); + + if ( osascriptPresent( )) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"applescript");return (char *)1;} + strcpy( lDialogString , "osascript "); + if ( ! osx9orBetter() ) strcat( lDialogString , " -e 'tell application \"System Events\"' -e 'Activate'"); + strcat( lDialogString , " -e 'try' -e 'POSIX path of ( choose folder "); + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, "with prompt \"") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\" ") ; + } + if ( aDefaultPath && strlen(aDefaultPath) ) + { + strcat(lDialogString, "default location \"") ; + strcat(lDialogString, aDefaultPath ) ; + strcat(lDialogString , "\" " ) ; + } + strcat( lDialogString , ")' " ) ; + strcat(lDialogString, "-e 'on error number -128' " ) ; + strcat(lDialogString, "-e 'end try'") ; + if ( ! osx9orBetter() ) strcat( lDialogString, " -e 'end tell'") ; + } + else if ( tfd_kdialogPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"kdialog");return (char *)1;} + strcpy( lDialogString , "kdialog" ) ; + if ( (tfd_kdialogPresent() == 2) && tfd_xpropPresent() ) + { + strcat(lDialogString, " --attach=$(xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2)"); /* contribution: Paul Rouget */ + } + strcat( lDialogString , " --getexistingdirectory " ) ; + + if ( aDefaultPath && strlen(aDefaultPath) ) + { + if ( aDefaultPath[0] != '/' ) + { + strcat(lDialogString, lLastDirectory) ; + strcat(lDialogString , "/" ) ; + } + strcat(lDialogString, "\"") ; + strcat(lDialogString, aDefaultPath ) ; + strcat(lDialogString , "\"" ) ; + } + else + { + strcat(lDialogString, lLastDirectory) ; + strcat(lDialogString , "/" ) ; + } + + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, " --title \"") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\"") ; + } + } + else if ( tfd_zenityPresent() || tfd_matedialogPresent() || tfd_shellementaryPresent() || tfd_qarmaPresent() ) + { + if ( tfd_zenityPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"zenity");return (char *)1;} + strcpy( lDialogString , "zenity" ) ; + if ( (tfd_zenity3Present() >= 4) && !getenv("SSH_TTY") && tfd_xpropPresent() ) + { + strcat( lDialogString, " --attach=$(sleep .01;xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2)"); /* contribution: Paul Rouget */ + } + } + else if ( tfd_matedialogPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"matedialog");return (char *)1;} + strcpy( lDialogString , "matedialog" ) ; + } + else if ( tfd_shellementaryPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"shellementary");return (char *)1;} + strcpy( lDialogString , "shellementary" ) ; + } + else + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"qarma");return (char *)1;} + strcpy( lDialogString , "qarma" ) ; + if ( !getenv("SSH_TTY") && tfd_xpropPresent() ) + { + strcat(lDialogString, " --attach=$(xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2)"); /* contribution: Paul Rouget */ + } + } + strcat( lDialogString , " --file-selection --directory" ) ; + + strcat(lDialogString, " --title=\"") ; + if (aTitle && strlen(aTitle)) strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\"") ; + + if ( aDefaultPath && strlen(aDefaultPath) ) + { + strcat(lDialogString, " --filename=\"") ; + strcat(lDialogString, aDefaultPath) ; + strcat(lDialogString, "\"") ; + } + if (tinyfd_silent) strcat( lDialogString , " 2>/dev/null "); + } + else if (tfd_yadPresent()) + { + if (aTitle && !strcmp(aTitle, "tinyfd_query")) { strcpy(tinyfd_response, "yad"); return (char*)1; } + strcpy(lDialogString, "yad --file --directory"); + if (aTitle && strlen(aTitle)) + { + strcat(lDialogString, " --title=\""); + strcat(lDialogString, aTitle); + strcat(lDialogString, "\""); + } + if (aDefaultPath && strlen(aDefaultPath)) + { + strcat(lDialogString, " --filename=\""); + strcat(lDialogString, aDefaultPath); + strcat(lDialogString, "\""); + } + if (tinyfd_silent) strcat(lDialogString, " 2>/dev/null "); + } + else if ( !xdialogPresent() && tkinter3Present( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"python3-tkinter");return (char *)1;} + strcpy( lDialogString , gPython3Name ) ; + strcat( lDialogString , + " -S -c \"import tkinter;from tkinter import filedialog;root=tkinter.Tk();root.withdraw();"); + strcat( lDialogString , "res=filedialog.askdirectory("); + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, "title='") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "',") ; + } + if ( aDefaultPath && strlen(aDefaultPath) ) + { + strcat(lDialogString, "initialdir='") ; + strcat(lDialogString, aDefaultPath ) ; + strcat(lDialogString , "'" ) ; + } + strcat( lDialogString, ");\nif not isinstance(res, tuple):\n\tprint(res)\n\"" ) ; + } + else if ( !xdialogPresent() && tkinter2Present( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"python2-tkinter");return (char *)1;} + strcpy( lDialogString , "export PYTHONIOENCODING=utf-8;" ) ; + strcat( lDialogString , gPython2Name ) ; + if ( ! isTerminalRunning( ) && tfd_isDarwin( ) ) + { + strcat( lDialogString , " -i" ) ; /* for osx without console */ + } + strcat( lDialogString , +" -S -c \"import Tkinter,tkFileDialog;root=Tkinter.Tk();root.withdraw();"); + + if ( tfd_isDarwin( ) ) + { + strcat( lDialogString , +"import os;os.system('''/usr/bin/osascript -e 'tell app \\\"Finder\\\" to set \ +frontmost of process \\\"Python\\\" to true' ''');"); + } + + strcat( lDialogString , "print tkFileDialog.askdirectory("); + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, "title='") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "',") ; + } + if ( aDefaultPath && strlen(aDefaultPath) ) + { + strcat(lDialogString, "initialdir='") ; + strcat(lDialogString, aDefaultPath ) ; + strcat(lDialogString , "'" ) ; + } + strcat( lDialogString , ")\"" ) ; + } + else if ( xdialogPresent() || dialogName() ) + { + if ( xdialogPresent( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"xdialog");return (char *)1;} + lWasGraphicDialog = 1 ; + strcpy( lDialogString , "(Xdialog " ) ; + } + else if ( isTerminalRunning( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"dialog");return (char *)0;} + strcpy( lDialogString , "(dialog " ) ; + } + else + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"dialog");return (char *)0;} + lWasXterm = 1 ; + strcpy( lDialogString , terminalName() ) ; + strcat( lDialogString , "'(" ) ; + strcat( lDialogString , dialogName() ) ; + strcat( lDialogString , " " ) ; + } + + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, "--title \"") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\" ") ; + } + + if ( !xdialogPresent() && !gdialogPresent() ) + { + strcat(lDialogString, "--backtitle \"") ; + strcat(lDialogString, + "tab: focus | /: populate | spacebar: fill text field | ok: TEXT FIELD ONLY") ; + strcat(lDialogString, "\" ") ; + } + + strcat( lDialogString , "--dselect \"" ) ; + if ( aDefaultPath && strlen(aDefaultPath) ) + { + strcat(lDialogString, aDefaultPath) ; + ensureFinalSlash(lDialogString); + } + else if ( ! isTerminalRunning( ) && !lWasGraphicDialog ) + { + strcat(lDialogString, getenv("HOME")) ; + strcat(lDialogString, "/"); + } + else + { + strcat(lDialogString, "./") ; + } + + if ( lWasGraphicDialog ) + { + strcat(lDialogString, "\" 0 60 ) 2>&1 ") ; + } + else + { + strcat(lDialogString, "\" 0 60 >/dev/tty) ") ; + if ( lWasXterm ) + { + strcat( lDialogString , + "2>/tmp/tinyfd.txt';cat /tmp/tinyfd.txt;rm /tmp/tinyfd.txt"); + } + else + { + strcat(lDialogString, "2>&1 ; clear >/dev/tty") ; + } + } + } + else + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){return tinyfd_inputBox(aTitle,NULL,NULL);} + strcpy(lBuff, "Select folder from "); + strcat(lBuff, getCurDir()); + lPointerInputBox = tinyfd_inputBox(NULL, NULL, NULL); /* obtain a pointer on the current content of tinyfd_inputBox */ + if (lPointerInputBox) strcpy(lDialogString, lPointerInputBox); /* preserve the current content of tinyfd_inputBox */ + p = tinyfd_inputBox(aTitle, lBuff, ""); + if (p) strcpy(lBuff, p); else lBuff[0] = '\0'; + if (lPointerInputBox) strcpy(lPointerInputBox, lDialogString); /* restore its previous content to tinyfd_inputBox */ + p = lBuff; + + if ( !p || ! strlen( p ) || ! dirExists( p ) ) + { + return NULL ; + } + return p ; + } + if (tinyfd_verbose) printf( "lDialogString: %s\n" , lDialogString ) ; + if ( ! ( lIn = popen( lDialogString , "r" ) ) ) + { + return NULL ; + } + while ( fgets( lBuff , sizeof( lBuff ) , lIn ) != NULL ) + {} + pclose( lIn ) ; + if ( strlen( lBuff ) && lBuff[strlen( lBuff ) -1] == '\n' ) + { + lBuff[strlen( lBuff ) -1] = '\0' ; + } + /* printf( "lBuff: %s\n" , lBuff ) ; */ + if ( ! strlen( lBuff ) || ! dirExists( lBuff ) ) + { + return NULL ; + } + + getPathWithoutFinalSlash( lLastDirectory , lBuff ) ; + + return lBuff ; +} + + +/* aDefaultRGB is used only if aDefaultHexRGB is absent */ +/* aDefaultRGB and aoResultRGB can be the same array */ +/* returns NULL on cancel */ +/* returns the hexcolor as a string "#FF0000" */ +/* aoResultRGB also contains the result */ +char * tinyfd_colorChooser( + char const * aTitle , /* NULL or "" */ + char const * aDefaultHexRGB , /* NULL or "#FF0000"*/ + unsigned char const aDefaultRGB[3] , /* { 0 , 255 , 255 } */ + unsigned char aoResultRGB[3] ) /* { 0 , 0 , 0 } */ +{ + static char lDefaultHexRGB[16]; + char lBuff[128] ; + + char lTmp[128] ; +#if !((defined(__cplusplus ) && __cplusplus >= 201103L) || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__clang__)) + char * lTmp2 ; +#endif + char lDialogString[MAX_PATH_OR_CMD] ; + unsigned char lDefaultRGB[3]; + char * p; + char * lPointerInputBox; + FILE * lIn ; + int i ; + int lWasZenity3 = 0 ; + int lWasOsascript = 0 ; + int lWasXdialog = 0 ; + lBuff[0]='\0'; + + if (tfd_quoteDetected(aTitle)) return tinyfd_colorChooser("INVALID TITLE WITH QUOTES", aDefaultHexRGB, aDefaultRGB, aoResultRGB); + if (tfd_quoteDetected(aDefaultHexRGB)) return tinyfd_colorChooser(aTitle, "INVALID DEFAULT_HEX_RGB WITH QUOTES: use the GRAVE ACCENT \\x60 instead.", aDefaultRGB, aoResultRGB); + + if (aDefaultHexRGB && (strlen(aDefaultHexRGB)==7) ) + { + Hex2RGB(aDefaultHexRGB, lDefaultRGB); + strcpy(lDefaultHexRGB, aDefaultHexRGB); + } + else + { + lDefaultRGB[0] = aDefaultRGB[0]; + lDefaultRGB[1] = aDefaultRGB[1]; + lDefaultRGB[2] = aDefaultRGB[2]; + RGB2Hex(aDefaultRGB, lDefaultHexRGB); + } + + if ( osascriptPresent( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"applescript");return (char *)1;} + lWasOsascript = 1 ; + strcpy( lDialogString , "osascript"); + + if ( ! osx9orBetter() ) + { + strcat( lDialogString , " -e 'tell application \"System Events\"' -e 'Activate'"); + strcat( lDialogString , " -e 'try' -e 'set mycolor to choose color default color {"); + } + else + { + strcat( lDialogString , +" -e 'try' -e 'tell app (path to frontmost application as Unicode text) \ +to set mycolor to choose color default color {"); + } + + sprintf(lTmp, "%d", 256 * lDefaultRGB[0] ) ; + strcat(lDialogString, lTmp ) ; + strcat(lDialogString, "," ) ; + sprintf(lTmp, "%d", 256 * lDefaultRGB[1] ) ; + strcat(lDialogString, lTmp ) ; + strcat(lDialogString, "," ) ; + sprintf(lTmp, "%d", 256 * lDefaultRGB[2] ) ; + strcat(lDialogString, lTmp ) ; + strcat(lDialogString, "}' " ) ; + strcat( lDialogString , +"-e 'set mystring to ((item 1 of mycolor) div 256 as integer) as string' " ); + strcat( lDialogString , +"-e 'repeat with i from 2 to the count of mycolor' " ); + strcat( lDialogString , +"-e 'set mystring to mystring & \" \" & ((item i of mycolor) div 256 as integer) as string' " ); + strcat( lDialogString , "-e 'end repeat' " ); + strcat( lDialogString , "-e 'mystring' "); + strcat(lDialogString, "-e 'on error number -128' " ) ; + strcat(lDialogString, "-e 'end try'") ; + if ( ! osx9orBetter() ) strcat( lDialogString, " -e 'end tell'") ; + } + else if ( tfd_kdialogPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"kdialog");return (char *)1;} + strcpy( lDialogString , "kdialog" ) ; + if ( (tfd_kdialogPresent() == 2) && tfd_xpropPresent() ) + { + strcat(lDialogString, " --attach=$(xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2)"); /* contribution: Paul Rouget */ + } + sprintf( lDialogString + strlen(lDialogString) , " --getcolor --default '%s'" , lDefaultHexRGB ) ; + + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, " --title \"") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\"") ; + } + } + else if ( tfd_zenity3Present() || tfd_matedialogPresent() || tfd_shellementaryPresent() || tfd_qarmaPresent() ) + { + lWasZenity3 = 1 ; + if ( tfd_zenity3Present() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"zenity3");return (char *)1;} + strcpy( lDialogString , "zenity" ); + if ( (tfd_zenity3Present() >= 4) && !getenv("SSH_TTY") && tfd_xpropPresent() ) + { + strcat( lDialogString, " --attach=$(sleep .01;xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2)"); /* contribution: Paul Rouget */ + } + } + else if ( tfd_matedialogPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"matedialog");return (char *)1;} + strcpy( lDialogString , "matedialog" ) ; + } + else if ( tfd_shellementaryPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"shellementary");return (char *)1;} + strcpy( lDialogString , "shellementary" ) ; + } + else + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"qarma");return (char *)1;} + strcpy( lDialogString , "qarma" ) ; + if ( !getenv("SSH_TTY") && tfd_xpropPresent() ) + { + strcat(lDialogString, " --attach=$(xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2)"); /* contribution: Paul Rouget */ + } + } + strcat( lDialogString , " --color-selection --show-palette" ) ; + sprintf( lDialogString + strlen(lDialogString), " --color=%s" , lDefaultHexRGB ) ; + + strcat(lDialogString, " --title=\"") ; + if (aTitle && strlen(aTitle)) strcat(lDialogString, aTitle) ; + strcat(lDialogString, "\"") ; + + if (tinyfd_silent) strcat( lDialogString , " 2>/dev/null "); + } + else if (tfd_yadPresent()) + { + if (aTitle && !strcmp(aTitle, "tinyfd_query")) { strcpy(tinyfd_response, "yad"); return (char*)1; } + strcpy(lDialogString, "yad --color"); + sprintf(lDialogString + strlen(lDialogString), " --init-color=%s", lDefaultHexRGB); + if (aTitle && strlen(aTitle)) + { + strcat(lDialogString, " --title=\""); + strcat(lDialogString, aTitle); + strcat(lDialogString, "\""); + } + if (tinyfd_silent) strcat(lDialogString, " 2>/dev/null "); + } + else if ( xdialogPresent() ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"xdialog");return (char *)1;} + lWasXdialog = 1 ; + strcpy( lDialogString , "Xdialog --colorsel \"" ) ; + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, aTitle) ; + } + strcat(lDialogString, "\" 0 60 ") ; +#if (defined(__cplusplus ) && __cplusplus >= 201103L) || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__clang__) + sprintf(lTmp,"%hhu %hhu %hhu",lDefaultRGB[0],lDefaultRGB[1],lDefaultRGB[2]); +#else + sprintf(lTmp,"%hu %hu %hu",lDefaultRGB[0],lDefaultRGB[1],lDefaultRGB[2]); +#endif + strcat(lDialogString, lTmp) ; + strcat(lDialogString, " 2>&1"); + } + else if ( tkinter3Present( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"python3-tkinter");return (char *)1;} + strcpy( lDialogString , gPython3Name ) ; + strcat( lDialogString , + " -S -c \"import tkinter;from tkinter import colorchooser;root=tkinter.Tk();root.withdraw();"); + strcat( lDialogString , "res=colorchooser.askcolor(color='" ) ; + strcat(lDialogString, lDefaultHexRGB ) ; + strcat(lDialogString, "'") ; + + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, ",title='") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "'") ; + } + strcat( lDialogString , ");\ +\nif res[1] is not None:\n\tprint(res[1])\"" ) ; + } + else if ( tkinter2Present( ) ) + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){strcpy(tinyfd_response,"python2-tkinter");return (char *)1;} + strcpy( lDialogString , "export PYTHONIOENCODING=utf-8;" ) ; + strcat( lDialogString , gPython2Name ) ; + if ( ! isTerminalRunning( ) && tfd_isDarwin( ) ) + { + strcat( lDialogString , " -i" ) ; /* for osx without console */ + } + + strcat( lDialogString , +" -S -c \"import Tkinter,tkColorChooser;root=Tkinter.Tk();root.withdraw();"); + + if ( tfd_isDarwin( ) ) + { + strcat( lDialogString , +"import os;os.system('''osascript -e 'tell app \\\"Finder\\\" to set \ +frontmost of process \\\"Python\\\" to true' ''');"); + } + + strcat( lDialogString , "res=tkColorChooser.askcolor(color='" ) ; + strcat(lDialogString, lDefaultHexRGB ) ; + strcat(lDialogString, "'") ; + + + if ( aTitle && strlen(aTitle) ) + { + strcat(lDialogString, ",title='") ; + strcat(lDialogString, aTitle) ; + strcat(lDialogString, "'") ; + } + strcat( lDialogString , ");\ +\nif res[1] is not None:\n\tprint res[1]\"" ) ; + } + else + { + if (aTitle&&!strcmp(aTitle,"tinyfd_query")){return tinyfd_inputBox(aTitle,NULL,NULL);} + lPointerInputBox = tinyfd_inputBox(NULL, NULL, NULL); /* obtain a pointer on the current content of tinyfd_inputBox */ + if (lPointerInputBox) strcpy(lDialogString, lPointerInputBox); /* preserve the current content of tinyfd_inputBox */ + p = tinyfd_inputBox(aTitle, "Enter hex rgb color (i.e. #f5ca20)", lDefaultHexRGB); + + if ( !p || (strlen(p) != 7) || (p[0] != '#') ) + { + return NULL ; + } + for ( i = 1 ; i < 7 ; i ++ ) + { + if ( ! isxdigit( (int) p[i] ) ) + { + return NULL ; + } + } + Hex2RGB(p,aoResultRGB); + strcpy(lDefaultHexRGB, p); + if (lPointerInputBox) strcpy(lPointerInputBox, lDialogString); /* restore its previous content to tinyfd_inputBox */ + return lDefaultHexRGB; + } + + if (tinyfd_verbose) printf( "lDialogString: %s\n" , lDialogString ) ; + if ( ! ( lIn = popen( lDialogString , "r" ) ) ) + { + return NULL ; + } + while ( fgets( lBuff , sizeof( lBuff ) , lIn ) != NULL ) + { + } + pclose( lIn ) ; + if ( ! strlen( lBuff ) ) + { + return NULL ; + } + /* printf( "len Buff: %lu\n" , strlen(lBuff) ) ; */ + /* printf( "lBuff0: %s\n" , lBuff ) ; */ + if ( lBuff[strlen( lBuff ) -1] == '\n' ) + { + lBuff[strlen( lBuff ) -1] = '\0' ; + } + + if ( lWasZenity3 ) + { + if ( lBuff[0] == '#' ) + { + if ( strlen(lBuff)>7 ) + { + lBuff[3]=lBuff[5]; + lBuff[4]=lBuff[6]; + lBuff[5]=lBuff[9]; + lBuff[6]=lBuff[10]; + lBuff[7]='\0'; + } + Hex2RGB(lBuff,aoResultRGB); + } + else if ( lBuff[3] == '(' ) { +#if (defined(__cplusplus ) && __cplusplus >= 201103L) || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__clang__) + sscanf(lBuff,"rgb(%hhu,%hhu,%hhu", & aoResultRGB[0], & aoResultRGB[1],& aoResultRGB[2]); +#else + aoResultRGB[0] = (unsigned char) strtol(lBuff+4, & lTmp2, 10 ); + aoResultRGB[1] = (unsigned char) strtol(lTmp2+1, & lTmp2, 10 ); + aoResultRGB[2] = (unsigned char) strtol(lTmp2+1, NULL, 10 ); +#endif + RGB2Hex(aoResultRGB,lBuff); + } + else if ( lBuff[4] == '(' ) { +#if (defined(__cplusplus ) && __cplusplus >= 201103L) || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__clang__) + sscanf(lBuff,"rgba(%hhu,%hhu,%hhu", & aoResultRGB[0], & aoResultRGB[1],& aoResultRGB[2]); +#else + aoResultRGB[0] = (unsigned char) strtol(lBuff+5, & lTmp2, 10 ); + aoResultRGB[1] = (unsigned char) strtol(lTmp2+1, & lTmp2, 10 ); + aoResultRGB[2] = (unsigned char) strtol(lTmp2+1, NULL, 10 ); +#endif + RGB2Hex(aoResultRGB,lBuff); + } + } + else if ( lWasOsascript || lWasXdialog ) + { + /* printf( "lBuff: %s\n" , lBuff ) ; */ +#if (defined(__cplusplus ) && __cplusplus >= 201103L) || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__clang__) + sscanf(lBuff,"%hhu %hhu %hhu", & aoResultRGB[0], & aoResultRGB[1],& aoResultRGB[2]); +#else + aoResultRGB[0] = (unsigned char) strtol(lBuff, & lTmp2, 10 ); + aoResultRGB[1] = (unsigned char) strtol(lTmp2+1, & lTmp2, 10 ); + aoResultRGB[2] = (unsigned char) strtol(lTmp2+1, NULL, 10 ); +#endif + RGB2Hex(aoResultRGB,lBuff); + } + else + { + Hex2RGB(lBuff,aoResultRGB); + } + /* printf("%d %d %d\n", aoResultRGB[0],aoResultRGB[1],aoResultRGB[2]); */ + /* printf( "lBuff: %s\n" , lBuff ) ; */ + + strcpy(lDefaultHexRGB,lBuff); + return lDefaultHexRGB ; +} + +#endif /* _WIN32 */ + + +/* Modified prototypes for R */ + +void tfd_messageBox( + char const * aTitle , + char const * aMessage , + char const * aDialogType , + char const * aIconType , + int * aiDefaultButton ) +{ + * aiDefaultButton = tinyfd_messageBox( aTitle , aMessage , aDialogType , aIconType , * aiDefaultButton ) ; +} + + +void tfd_inputBox( + char const * aTitle , + char const * aMessage , + char * * aiDefaultInput ) +{ + char * lReturnedInput ; + if ( ! strcmp( * aiDefaultInput , "NULL") ) lReturnedInput = tinyfd_inputBox( aTitle , aMessage , NULL ) ; + else lReturnedInput = tinyfd_inputBox( aTitle , aMessage , * aiDefaultInput ) ; + + if ( lReturnedInput ) strcpy ( * aiDefaultInput , lReturnedInput ) ; + else strcpy ( * aiDefaultInput , "NULL" ) ; +} + + +void tfd_saveFileDialog( + char const * aTitle , + char * * aiDefaultPathAndFile , + int const * aNumOfFilterPatterns , + char const * const * aFilterPatterns , + char const * aSingleFilterDescription ) +{ + char * lSavefile ; + + /* printf( "aFilterPatterns %s\n" , aFilterPatterns [0]); */ + + lSavefile = tinyfd_saveFileDialog( aTitle , * aiDefaultPathAndFile , * aNumOfFilterPatterns , + aFilterPatterns, aSingleFilterDescription ) ; + if ( lSavefile ) strcpy ( * aiDefaultPathAndFile , lSavefile ) ; + else strcpy ( * aiDefaultPathAndFile , "NULL" ) ; +} + + +void tfd_openFileDialog( + char const * aTitle , + char * * aiDefaultPathAndFile , + int const * aNumOfFilterPatterns , + char const * const * aFilterPatterns , + char const * aSingleFilterDescription , + int const * aAllowMultipleSelects ) +{ + char * lOpenfile ; + + /* printf( "aFilterPatterns %s\n" , aFilterPatterns [0]); */ + + lOpenfile = tinyfd_openFileDialog( aTitle , * aiDefaultPathAndFile , * aNumOfFilterPatterns , + aFilterPatterns , aSingleFilterDescription , * aAllowMultipleSelects ) ; + + if ( lOpenfile ) strcpy ( * aiDefaultPathAndFile , lOpenfile ) ; + else strcpy ( * aiDefaultPathAndFile , "NULL" ) ; +} + + +void tfd_selectFolderDialog( + char const * aTitle , + char * * aiDefaultPath ) +{ + char * lSelectedfolder ; + lSelectedfolder = tinyfd_selectFolderDialog( aTitle, * aiDefaultPath ) ; + if ( lSelectedfolder ) strcpy ( * aiDefaultPath , lSelectedfolder ) ; + else strcpy ( * aiDefaultPath , "NULL" ) ; +} + + +void tfd_colorChooser( + char const * aTitle , + char * * aiDefaultHexRGB ) +{ + unsigned char const aDefaultRGB [ 3 ] = {128,128,128} ; + unsigned char aoResultRGB [ 3 ] = {128,128,128} ; + char * lChosenColor ; + lChosenColor = tinyfd_colorChooser( aTitle, * aiDefaultHexRGB, aDefaultRGB, aoResultRGB ) ; + if ( lChosenColor ) strcpy ( * aiDefaultHexRGB , lChosenColor ) ; + else strcpy ( * aiDefaultHexRGB , "NULL" ) ; +} + +/* end of Modified prototypes for R */ + + + +/* +int main( int argc , char * argv[] ) +{ +char const * lTmp; +char const * lTheSaveFileName; +char const * lTheOpenFileName; +char const * lTheSelectFolderName; +char const * lTheHexColor; +char const * lWillBeGraphicMode; +unsigned char lRgbColor[3]; +FILE * lIn; +char lBuffer[1024]; +char lString[1024]; +char const * lFilterPatterns[2] = { "*.txt", "*.text" }; + +tinyfd_verbose = argc - 1; +tinyfd_silent = 1; + +lWillBeGraphicMode = tinyfd_inputBox("tinyfd_query", NULL, NULL); + +strcpy(lBuffer, "v"); +strcat(lBuffer, tinyfd_version); +if (lWillBeGraphicMode) +{ + strcat(lBuffer, "\ngraphic mode: "); +} +else +{ + strcat(lBuffer, "\nconsole mode: "); +} +strcat(lBuffer, tinyfd_response); +strcat(lBuffer, "\n"); +strcat(lBuffer, tinyfd_needs+78); +strcpy(lString, "tinyfiledialogs"); +tinyfd_messageBox(lString, lBuffer, "ok", "info", 0); + +tinyfd_notifyPopup("the title", "the message\n\tfrom outer-space", "info"); + +if (lWillBeGraphicMode && !tinyfd_forceConsole) +{ + tinyfd_forceConsole = ! tinyfd_messageBox("Hello World", + "graphic dialogs [yes] / console mode [no]?", + "yesno", "question", 1); +} + +lTmp = tinyfd_inputBox( + "a password box", "your password will be revealed", NULL); + +if (!lTmp) return 1; + +strcpy(lString, lTmp); + +lTheSaveFileName = tinyfd_saveFileDialog( + "let us save this password", + "passwordFile.txt", + 2, + lFilterPatterns, + NULL); + +if (!lTheSaveFileName) +{ + tinyfd_messageBox( + "Error", + "Save file name is NULL", + "ok", + "error", + 1); + return 1; +} + +lIn = fopen(lTheSaveFileName, "w"); +if (!lIn) +{ + tinyfd_messageBox( + "Error", + "Can not open this file in write mode", + "ok", + "error", + 1); + return 1; +} +fputs(lString, lIn); +fclose(lIn); + +lTheOpenFileName = tinyfd_openFileDialog( + "let us read the password back", + "", + 2, + lFilterPatterns, + NULL, + 0); + +if (!lTheOpenFileName) +{ + tinyfd_messageBox( + "Error", + "Open file name is NULL", + "ok", + "error", + 1); + return 1; +} + +lIn = fopen(lTheOpenFileName, "r"); + +if (!lIn) +{ + tinyfd_messageBox( + "Error", + "Can not open this file in read mode", + "ok", + "error", + 1); + return(1); +} +lBuffer[0] = '\0'; +fgets(lBuffer, sizeof(lBuffer), lIn); +fclose(lIn); + +tinyfd_messageBox("your password is", + lBuffer, "ok", "info", 1); + +lTheSelectFolderName = tinyfd_selectFolderDialog( + "let us just select a directory", NULL); + +if (!lTheSelectFolderName) +{ + tinyfd_messageBox( + "Error", + "Select folder name is NULL", + "ok", + "error", + 1); + return 1; +} + +tinyfd_messageBox("The selected folder is", + lTheSelectFolderName, "ok", "info", 1); + +lTheHexColor = tinyfd_colorChooser( + "choose a nice color", + "#FF0077", + lRgbColor, + lRgbColor); + +if (!lTheHexColor) +{ + tinyfd_messageBox( + "Error", + "hexcolor is NULL", + "ok", + "error", + 1); + return 1; +} + +tinyfd_messageBox("The selected hexcolor is", + lTheHexColor, "ok", "info", 1); + + tinyfd_beep(); + + return 0; +} +*/ + +#ifdef _MSC_VER +#pragma warning(default:4996) +#pragma warning(default:4100) +#pragma warning(default:4706) +#endif diff --git a/lab16 with raylib/lib/raylib.lib b/lab16 with raylib/lib/raylib.lib index 736bdec69c4b0acb0d6a1b47f0be7b50685ce6fa..77a853a209042c098a277fbb2c0259efac87f9d1 100644 GIT binary patch delta 538231 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

{(Y8D6o%Vv**8bkT-{<4m@E+;GbbJ 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

qt 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 z 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

boz{SUfK<~7 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 delta 536026 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 z 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� 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%0DY?X0^OLP!q?wE5YLF?kI(X7t+ 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%0A>Am_iVFmSW_IJf1S)e_>>jPX-XfXM!17I?~ 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 AeE-+v6k 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À@nZ6Nq|xejyNiFfK7ZD!SdD>r9@h$qS?k2jB+k(<{qJhcK0n^P6!-bMrf2PoXO^Ea6(r6Vox!GtXxQbuF zC(at!*-}`8j?9LLm$s0YwV(l$;Dc3@gSkSo&y3aL40S^)m9r+L9nJ}t=k9|UbO0sf}| zz1q34cs{<-sio0_(w2l-Qk2CM3#~wzuhyBjp~+Y!*;(>D%!McnNGzTYp2eHG)FKqO z!xVfANm{<(a#9!pck#%dG>6ImUj+UCG>7?(pnoIX)lAY0 zfcXChNuSXq>9?U7AxX~#J=sm)BIsQ@PEa1+iA~)iKM>Q{D~hnEB^g@5$-;s)ES0eUEf$S* z#Ir#qY*l2dL?nNV`~W_%fS7w5G52O=0Qrq-^?TZOp?XCXSD0HUc7hB4XX3sGiFs3g z+rAKFu^ci>BHZ{x5W}X>T>2tShq5x@W4g2avFl_oc;!UMpc6YKopxbHWP=5UC?DkC zLZ%m@E`B^-< zE>0=WtnG9n;V3Ci!iqb9XKbUTp^C+cCn5Hw%kI-%EmB2Fl^JgMq-qlXwnIMz4@f(& z*3hVL_KpY&+g9;uL1-IoxHmilE12{8reC3fQ$Y^LlQM>?%9{ME3Hqlx8v2P?>9&v^ zDZb1L0xLI%)tJMMK(|YCUoV`$5euL}i+2*%v5q5P`x(~J;a@C7!d??R6Z zq8>?szfQGFES@DryiY8DQRbGRUU>v&Y5sS4Z&*@JS~I`kol%R!d{YibT)-`bYBe_njbe)x8Ew8P1H5F7eJ z^#)W@?ttUz1GYmj^ZM=| zR%KZO{bKjk#{&g9VKw$c^&`D)qF}8z>>GF_OaZ-+LnEn{*I@Hny|iA~tPZ6Nc{dmx zt_W#klFVkGx_%R{e@}dtb}pCgpbgCCcM!4HKNQypBfh3QblHQOZZlz{KN1sTN27RY zFfIMwg^)S8+xs|dFNBhM=KTm>aLDLSs_@fQ3UoGppp+k;16u`)rx!Q_7j=bWRXB^2 zggg&PapgmW`RY$42R#$QvxL=^o<9D4#3YOYm;&Ik1sCO$dBM>W?PyuKP?2$E#GtOYSqefEPCLf#>(K zx7Lf@yXiL43L#8JHL~zB%EB#I#C$gQLb%**C!gBDepoN|)ZKlU88?W3X+2>Bth;Z* z$o-+0*pdyv$B*ph1~EpAss+gz$RLgTn}6T{>$y=J*5*9m3k*Z&#>Nl29(<71 zY!s6cuVS)>BNs46!v9D|c)v2b{(X;pU>^#CQNf?dj)$4Z&g^(CPQGKn8JTR&+|BOTD)wsC z5}ELB#{0~zV&9w<01s7w2sQrCI9QL*&vx7a5B);%K+ru5goNVMP#_Tjf>9)I{e6)S z#cTY<_-FClo5tj=;>a+y=+11+r?`?~FDv{MsC@Y`R{g1Xw`)vfscwi}D5f4C0^jY7 zp5v6OugvRam!a?I-`cAIUaK)x6>^P58Q^dSXa~dm(%cXLt;y*#!871*4dCUy$r9y>at*& z$DCY&lp!wCCWrYHAwWaR_0##eFchjBQ#Lu<5&7IlJ&qbT==2>RjE{=}1 zz2C?oWPU57~Oyd06Y!<3i=* z_LSq$0dRpks-Jkm4(C0Wg~wY%2DF`DC>5{xs)F6vA-V_lMMnvr)xfL`CTZSs6o`ac)FQwcJH#twiPF5qWS`o8@ZK@P^-$Oe5NkpOGu|_y*fCmc) z&i5WE!xHHL?i3%3{B%ABV|4rj{x!b_VbOTdS(BBq2;B7!ayI|Gl+{*=-6QgLh*(3} z&uY6y&2BAB*bNy1voc3-REZ}s7!>#2~Iax<5u00B4hGL^+*xU|2IeNA-Fk6K4 zjPeRHq0$r~iDuZ`^UHQq(!gnjK9&D;NDauV!Map`+p>Cc?_^tcog5Yw#v#Cc26co7 z9K=9wfC>)DHg}B%`V?}~oy4>}N`LVF;zI_yJk|MKDE7iITWeq7aPtab!e`@7Z{XcW zb$inwU+nd!g^m`Q3y*SD$REy!FMIv{sLm{J zw;1dCXc;8@%EIIvPoWXN82sY>{lGDnjN5S`$)LG0&e4{Pxyf|-$Vj7Hq$cM&fqW2e zbk2rOn8B&i!K(+|^=)874OJ0_-e0a91&wMyUf@KWbdU(C+)t|$bPi^^#gi6z&g_DF zc?;M(nJ#$8GhTuNrZKJLC*X?|mwkcDVuPmsU%`2LwLJ8VU{HP+|0Io{PF%pjeT*&h z(!7b5j6x3ID5HF`NNElP&_KEWE#MK5oetU(z67Y&PG#n+HE_~4Tm=_v>s0{P<{1m? z*)rU!0O6BPaGJ^g{WuOEW+<2sVX_1G4#oh!7pbYm_p_(>h}QNWypAC?UL)_qQ&ob# zWIyZ?hv|BpV99&M^zOAd3lr!aH0{EZpM#JkP$a}-ih|88udyY2aS6~T>|cAKo7Avf zdvPFaWk+^>ub9&1sp8PsZ~^DF?9wqhjVNK#b}4AOag+_;C#GtX*%SN3ewH_mDYs6# zfg~w+Gu9L2x6z|EDR*!B!RemiEo53c!s`y=5zp{=`CA2@@re5j5i#<9_QO80Ys5;# z%P+mk4Ex3C*rHddWi&iu+?pCRT{z0SrC|*lx?k)uqz_rGCSwfDUF&{mEv=Ms|Mzsn zMcSW!FlbtPgd1_TkaE|0MzzN=Ce+4n^?2Yb_R4au6jUZZOLCifGG$kvQSd_zplq6{Cti+|cN$?1ptlwFL zP2=nFFSic=tl!}6I9_@lMfWC?X>7cFC;B%Ku3V$2907dy1Rs~?++Xpx59da+M-GUq z?v>Vq3M775F$c!Iorl4=7lgVQTQeY{A&83QQTye8Dp9=<)j^GVPKoM(sCH_UD~gS% z5nZmoyb=ro$DOfKu-$zvc7C|oT?V?#dOe_*Uxi-j34=|Nn~r(X_=q!kk0!?8npm8F zKRX&)AJF$=k&3?J#4L*On(n$2o;szAaw~ZM#W_u)+`%9U>05akYLk-X`|&VuCTj^7 z7ty$;(UT!38ylP0QqDvYPjcXPxgP@VjP63o1tO3{yrG+s0So%c^3Q;f?!M!Q5sJyC zLP2CT?pK>WXvp2pt2TE7y!Nf8FTpZI-9=H?^uqGj5jFh|^X3B0^sRky+4rCpj+WC0 zbr4F367hPM&e3A}pb0wXB6 z(q?oOuyDKcf!~Sgz&s^ApR>tBk^BEpO#eV#1Mz2B2`Qb!>|eu$@akyvYe*))Sj(CJ zjTa!3+b}MZG37%ZMJ7*ZCX=lyFm(IFO9(fC@`ob%&m?jfL^7*8EGD-35u=_ed?zsD zm+%+Poj#J97(Wp_@T|fE!xlC2KoMeaaiDZuIqK>hBzFYhs+jKiBw*qfrmjk)grtRz z{o*E8m#}hycidVMk6TMHmYsrXhM9ReCZ?psm^Tx*$l;tB8>w=lh*@5 zQ^EmahHIeipmSu?)Ac)a(ovvtLh80#k@_KtR(LT?16u}7W&1eTBZ8*=`xONCCIt2*1V#}8 z@yH8W!Z2E_^a%Ruf&+xWBZiF(6v;_vK>^r;x?1Lj*?xo z^w^8~ts?#(M0}>2UKR0pYm%$~lP3O0B3@5JcSyuXVj%$9jQBJdXfggl?fx?nzdBq2 zo{M;dn?U)$6!8zV1t5xkt%!Iw?YXFSY}hwqw(emsbAKadby^K>uuZLjIO`BJy|_~u zk5&QLHeUA4H(2=?Vqjgq#p+Ax6YOlA_?YgUf3f>cqA#;q@LSQUYwu^fPvYvfkzq{6 zlNHs8#_nrpV%E1fae)RWJTYFqfmd{;FAnJRHP&M={a2cH zp@KK9VI`V2&BIpIi(PfYJ?x!&oKN=!j4^EODVQHlKo%?ZcCIOz9#%5Vp-d<6PtpY7 z7RW2VcxU^gsG8#LoA z1cI=+(@oC6{0*&6kiT6)X#_&tH6FxHhbC}9K6ITO`A!_DyYUMXzK1u;M{kf+-8zAs4)n6xg8mcJ-z1ob3H3!swi00;GZ^eP8+6;H!K{U;BqpcXZ-+fIvvb#L8Z z(@%@3cj&RGu7bK*o)H4Ij)Ph)kGP?LdSAx(7?TKX*Ic6f81%yJYQ&( zZ{UondNe1J)&3wZ(tXyTNQ zlmCiqCDrcx7Y`Cn*5i2Kb?*)+enMEApVcFHg2>0)1JL(hoG zx=$SJ;WMJ8M=Wlw1=iBX4P0-}Tz`{k4P&}77IEk$dh#f5Fr-i6*4rzYz@;aBY z?y(O~l}(OMg$B4M=-)|L)I&=`xkAvCg4Usb`@2}HvtmZ{OpNK!SX2#RjWVWxFq!3_ z730G;VRLNpS+Qe!m6m7!B4}Dg09DJYm!iHsK}8dQj6NWbnyg?qcMf&a&~0qjSuwT6 z@i45iY+&CW!j4ni8fDJ5X;R7`^r;!}m?ca+hxNBwy3!bn-Zfa74tedH*AjE~8UE)F z0z20qDvaI|PxyIkHmxoj^(Voh^u5A;-8FZi(8nal=rpuM2$j&vKOpY*j);qOs#(+3 ztbJqEtj&CFMZ}YDKk?DTjIBh>2##Zh%%~U_TxG}8w-L$I`iQj|*ufCG3s zti+GplN)*=1H9dlD{1|&@ZyRvE`TV2mt@tm9ZEfcUXYV;1uixP)Kai`T;n2V;mNxZ zSB^yc@H+@_>MjeDPa^yseqZ5t99|MReo%wqvo2`e#1qJJ2>`(Dp3(FODitPGsTUv= z01$GJU4WacCXr{Y8Ki0MmGu8u-bgS%>J)F2VXv7aCc6|WG_fHy&gA>xUbvpa9s~`2c>M(+H>19X680fJ;6iVuw&D@_ z0rXU=t}#4Wo?8HP*6~iKz7BPD9+4w;H+3&{H{51|;W|?b^S?*eAH%!hFn`ZOKNkR) zf;zaU#{=1jItum%TI0Hn%fhgHqM7|llMNqpw%{z}YwUM){PLp4jt{CGul73|(p}%p zrL61QKf}05f2yneiC5sc-o72^#@_|BbW#I;7lh;^w4reX-tOsnh$cL^{Js;(sV>E zR3*}AHBZ_}3a3G-%=Ow2Qi zild!9Z<$~%Ix41tk@7yi!Q66q` zi+cfs2B_1g+J$Wr~j;o&mz~CJB1N}V+kV97fMY#iP zx{#S%NseLr^KZEQ^i;kfgTlDelbp?lqm}S4yTuTu1l}{8S-@l7GaOsMmNbaTE+WEv z$cOGY!(z&b(!RsE$NlK;LEsiYx-%)o@BHXedh(-tmY&W0=yLD3fj*%NBoqhVN`39+ zAV#%7)bydvy)4T&wgJCzldUQ2PvGYO*pR%eL{h_1?<7=V*CD7Exh7VpXyg7=e342Y!Qs7k#0z;Zao zOV}ik@(zb&Fd?Fz8#T8r9!0Ks@EGUMLsohlR@ed4n8CDd+>&H&4D4h1&5cdQ3*3>| zAy*wPZG?FNrEHT~p?{`z=j5y9bv3~ zT5+}WpU~Ba`rvkV(Jx}hM<&lB+Ao;`F~>z5h5_>RtKKI$2t6S@wHy`Ta>-)66iz~* zkOJKhco_i)aX)vM|8Km3`wXk_3=EzAEI1Z|IKK)%{gh7Z<}ae9Wh;D}n=Ie4osIex zE}`DidTs*~*((<(L%9b|7B&<|Y=v)Ady>;CEL6e)2lMA8&XL_>!I%C+@2B!3|fYp(hFv zp86{=fS2o(W7RmkAZ5~GB}ZI;{>+ERY1}M05ib;oYpVv5283eH#weeX+EIp6X_LPK zJs-yn9xuVVsP9k$z|jo_$L*!>H}aBp@aN>8aNps!xSg?Vdr(Xq^#~#bcPhcq&YQxAr~L*=T|rfkO!3OHzvZB`GQtXi$?R)kUxVJSu6(U#Z5+d0*hJ z6d1{D#l^`TmDkDe*nMn`X&HSF#B|FJmL+itD>L|(&jsY z=60TAa&4u5TxyA0+tBvB{$pEyC5-$BmqP_*_*&(^9}=G;Jv=f`iL@c|7I`LZgfO{) zSotBsdh;7YmhGTvt*Sw&LIy(!oZ{n})-;kfef4dk^>;(-IR?&}hugl4rd1vE%FVAd zG!gYnh#-YWNWKLAxqwM&AerJ%ARZ-D&FhHh0poe9ytw;2us3v3eMf#~qFnigpOh!q zEHCv%B}~^#q%Ky%GL=-u!~9Y%41{_5*OhNPTx?<;!=k#}K7`jc8?2lMww;Vw`DvPc z>l1ms`Iv>{p35|d4jb-sGU^Q-*dt+419ab**y~|YqjVkZAM1LUt`YDlY7ff8Jy{aDj{sU`Jv+ z*`voyG>H3U!LAr>pLUSUAbTq*xz-rd+&njrcT{oqMqHEtnjj$cJW4tt) zOJm@A3vfl4*K1+C!JY5f-IbB{W#x4CCjFqb-!8lKbJ2}7XFEC&AVriCXvlyl#|3lg z4)TBoFTrpUY{sgYcX-W^mh&Tp&nw(=TA-VE_-jLA)z^suSCn`7_Qv=BkG3~~j;hH1 z$9pAf^O8rJgeB0B1Oj0R1|$$7X-K3SIs(cPAOZ?xP!SpE1{AOZohY403o|a|E;>4b zj{67%71G(mnt&*aN?4TFG-yzPfRg@yZoN(dj`RKg&i9;u&UxwgYQ1%<>ej7W_ud-r zhv`8DZWip0f~^@p2VDuH3Mh33EAfA5l|rB|lV_3EHxuob)Fb1BVv$whLfire+0J` z*pj^^hyCvWF1kV49RgDd$DpDU_L%fIdz3t7ejqR+D89VU0s`+Io>O#ID5l++;wQKh z21;A3)v=iptlVEvLgd^c7W(XArI?bP@0w?B?6&wRl zdgY!PLrNOVBlp^yO1y|!-P+a$bIM_VcaJ&PH4U!w)BOgInR+Hg*oDvGuIu5;Odj1! zXsM_B7<0x+r{Sg|{U3fd8MUL({uN4Rd$s123Rbubu4VUyibD-&?r(#>=}u+{6T3Ti zwg=VRN!!fJc1VHl3>2nww}egBj4H=Z)QurKfCrWTVXAfX&JW>XHsko}!EFOg8}JGr zK;*4GMhSW#4qn0GMADpc*&XLzqQg|H^r!BiIp*)T1003Q-#b^TPNa#CQS`OE7zp=A zA*d}R4vA=sHi`XhlhA3jMS==KUZ};r5PDBbps%>Zq|9~F?(htJulXXpz2?F@zjVp7 zRBJBjFtVt>+!9*U84tUb{W*(@?b9MEOq)r&aE zIbPBM9;nr-SaNMmZ@O4EIYLYen}QtBv|5nOJP~4C+&n%$slX@{7%3+x(L>o65#qoh zG3jblBF|}qKo zE_wQWP}pkY_Gu0N4;|aTG=Rq?#a&!MTO-eC{eoUCG)Atr$F$YH_a-YpOfW?}Zo&MKknCA@W4J#Ko?9>X| z(v^6t!H9= z;WeeOgD!8qKcT%ad~fx4;)U_T@m)vD*M6I%%{Z`Zh`9u|mDR!r)$D>GCOLinXB4Nj z+N`30-I$f0jwv;MR$KkkM`NWXKhyA+KNgNJ6L1i3*V^1B9H_d`D%#FDX?LY6L^7Qt z8vk+M3-=K{I47fN`EYafxKy>dX54_@NJO!YemT-*Dh)+t+dGgSem6Y!R{Mu%BmFu5 zL7w@f`RaFm=&0Qj%0Hv{tqeSEI4LAY-1N=77sGn8-OeyQ3yl`L!I#2C^y{S@5I*;t z-195cvvP~i!VUPCnQbkbcn2FFEe^;aN8cuS9yXU2X`(Vn7Gv7e;)p>)w=0;1?YQI` zsz|V-(V)|_(;rC2g%_5d?4xM0t7gX@wm({2+;vhRZ9xm5X=VPb3EA+Ky@b9>*;G+{ zRsAUYRTRffJt3?k>1FA4Bq_)^wk$%}4pY|(-vR^{m@|$E>*iAQ5-bSq(O%!3O7wAI zotdJWZiz16zNwRFRXdA-;*9bYT9>!cW3Izd<8rtIHkY0ZfT!FZZS$BlHg||;%$5Rk zvDZEZR@oM}z!xB>sKZTZa{Q(d3`w(v46$OAWjB`BqA4HSC5!P*?*13Kg zN!ZwHPTA-CyVBh61lLOC?WnNMg|{6Ka6phN?!^GTMxLqTh6{9fO9%2dFy zg(3)d9!oeOHXJpj)cVNL{f-}6<9oHmF9imd7i1t0RBO-^FDJ?Xed!+3Hsrxq@L7-n zGuNft5SC71x$8~`14k`=1A$pQA0)A zX0yL_7GwL}sYK63^isf+pEzGwcbgKnkizb#utmbU9;~6W*vS~KM6IN#krcIBSa*e8 z>nsjPIsg~cj-hC^>za9~-gRx}@(5V5E$s=sKenO^MqzY zVlX%NlOy^nIHEUa_@wi=sW}3-|72<4utFILt~xLwArY5+Utz~*lm4C9h;|@Fi%kkn zKzB$1yx$lLMi7U&<({^&_33aT3e}vxj01h?OZ3GVBrt_2}LN0kO15(=nNGlM6Y-c85z<{$WV$^EdFEr>=hM|CW;QuU6th z35mEwwo(@gV6HfEqT&6!+d%&8cD}A?4i00Tx`?T!Phuj{V8aR{6V>ps3=du~XDiX^4#`{8j(GT~ zC&!tHm;PwxWTW#EmhxTB*>ao_=FPFdUR z5uUtd^3W9e(+M>F>^Z)k=Wd7eLkSXzhm_Yud|78LlGl{B3 zJm>KIi03k%-|=XBiK=is(RkwU^u*H#&p-SG6r(+^K7p5b`zz>|Z= zhDXvLn$V_u;rtR3zW>nDT4~+U6C4BmLGi*4@7vQ4L9q$4N+@q#p-oo<>)KcBwPEHkk_IBN>`!Sl?v;g;#7FhzzW1ZCg9qN>1FMS zu(ca_z7Y{^8aro)DusQ1OJT%SJ3+oNkqr?)>ma|4#^n`Ul?$(n5>s0p?KH!orgCQ@ zeoZ7-;R;?M&w=!}fkq~&(DM2gyFsqz^}=a2nnYHuOHF8YQWw+>3GNw4iIZ-?RT*wr z{8dPH;sE_SuIGhtsO|g?6)(JH7F{BEX6T>czj>Lf`ES1dO(pzy#35aN<{~9t|MD&2 zdBN~}{f1k@^E2~<>E{Q-oe(f*rne=U-7Kv8J7ENk7)*j?4~KNdNivtkeTw<H|s{2xwIrLRfho%7GF|9-Ry~LePB* z?`QFRgNGEv+KVS>OsJfPAnOg};8wf@7MH7+f6FnfT!_pz_QMuxr-d^u+9CZz*`O4$ zD{Jg0M#9eEVm~o4_Ak|c!ol2KO*~I`mfasbPlsUkHT`bNt}*?{<~%JX#(iA%C;4Bg zA`Yl4Yo`2nk5j6zOXm6eXzIUL*sVb2pJY8>$*bmykgm*AiTv<10S0{khr`pmad^7r znbyP8?%;j1=twkt2RgTq4oIPX6{XkU#*~Wx;Rw|cJVMRWAA>#ZEhj6u##RAv8EW}c z0PFa9e^kAtlm-I+oHQ7qeq2rl-x>8#nNM#+?5M$>!?l(T0Bic$SZ2?SS*16-j9cCxD66tC6QJQOF6R0Gff!KhF~l3Z3lQ0yG* z%G{cb&8ASinHquW4&jRI(HB_LK+zQb9&cE3Qql$1b&zGy!^OMqhh7y-+4zz=jSr|9kY!msgj{yVMQcLt>iJ=w`Y;^ZO708hO9AtL?d3N7mF-5cFDfZN0v9qT6Jp1QhaU`xzzU3a|5;P0s zL>TN9o|uMrsWu72N9Fa!a@4|Z1zul}Y4I^(mLCWe@{>x=gEUM@IzvB$leVBbVIAnR zN~$O41**|Ve8?+D!2^L*>pc~hrmNV?7dmi$r^bWc}&$tT9#W8jCaL;Fat`veD!Oct$8vNMk_}4{kS*y~p+w*8O~7BWVWSeXh=L{{h_K9c9h~+k`VH7mKyNt< z;h+aWajh#;ZKiQllt!nww_Z;T!8&wRa8%z+9b@~?j)C-rItCgy$EuoV`KzwyCw(sK zR8>c(B*g$0 z`11@e0^`Tw9jPawJJ2g5X3_!r1EsZ0-mL7_&@|`gDqyn3h%YniAs)p+W2lH?A7pyb`ju=E4{)K$#uul==dmao8h1Duy z&bKJAhyu|Ayvyv}l^#3Jdkl5MBe{MZCA$~Nc<)j7dgY$2JxRugd96y8;KGtm(Uh7_ z3pDh#qK*26w_T$u)YNO(K+fjVDPs150@LXS=PScea| zbb;Tz6fY68dLpmKVZ8)xdal@wyQ7QY1vwk(TxGYrnimOA4y6LHQ=Wt(f58#S3OkD9 zFApJvbSajGAtZv{maPJihL6v&&xeX8r(pHy;;06k(dRYz!zQ$Tl7R#+CewALNa)bz z9rGuT$EQEO)s;x$ar4eR6o?W+c?n1z&QtRfFDR;mo50M)LHZ0lr13ua6g-~UJ6q?K zTlD;HDyO$`C}k-_nnsYwqzCeKs^u2qAWOaoWwx( z#v3t^aA`&iq+cd|1+cYw;BqSYFOghm$MJU?mg}BDY&){_mg0JQG-@XZh(S^^z?wL; zFA8a^hXcv;2j?^Y@tt6I-YzD0DhD5In^%UJva)+9W=j0pbhh?(ac1Ph!`dW9kFj&N zLz7^B4eK#nT<9zx+7@#V4dW) zmQ8~+QyGWAVf&zT;{yn~f(N&q=UqitR-?Q0_nt*}-E~uUWg{SHxP@I0j-^;w-z_pdthmRO8ktAAn)IE>yBH> zKnIRV43^Am=fx92=2h%-LaiQpW}!eN+;JSb3604>!jS)F#x^1*;oUFdNriYavErV_&?(w^QZ~`g#)XD~P*sbhFF?Q2dXS zv}u}`k^P772_&E|s(kVBW!-51HQ2ix<}Joo;IsgrKu)=D4w4D)=O?Zt2e2zM_BbOk zr;{QMzyj-#e-t}8LL9_rVj~S(FH0CH-mYHBQb&rNo%s!5!KPqG_5KuS3RCgfiA%^i z6jh?HuP0U?fRK9&r45hAwIWAQ(cHNM)DAput-l9$VQAIk2{*?dwa-@K_k(J}n;~q5 z7GX^SUe@U0wr@>L)=h(@;*>I2m^wr3H>@0oA(R0(yJzgN!w~`Q80LyFL0f$s0-}1o z{2)#UEUpSjk4`$yvv;>ecS+^8{K(XmP70AIOuh|?Kr-P_OG)?xd2(r+U#u)c9HbW6 zPZ{DWbt!vjl=x16?m`e#LEdJ8laf_YenGP6Y;IgNim*2jW^q3h>Wc%v&3<|dOPLL- z)^l^EQ&tHV*ZoXxZCrg-)*3as2HQM141!&$)m0sub=$?l(Y+l)R?)?*ZM|`SJT6(N z@ej8Ka69b@dq_#hdM$2U5OxhmFwVSJA0b;uyZDEAL}nFTv3Ex)jt`-UW14U8fS)kO zn^a0z_1FM3mMwvUS+`v&2_fYT7;33Tne4hzVGbyb)RctyFH!Jk2qpu?5UaZfL1zu< z5@Fg##)5u5(gn&&gu-k2_FoIH^>(DP*>{LNol#))QAvktZ9X6cU_k5zs>PlSm>i*~ zCSz2XeK;DOLJ9T376~%@vb`~Znw#58%?s4{76P5Yvf)jI%JwB9h#=HiU42vp9y4j7 z{L%7HF`V@rEsl-Q;E0aI%17mu?BUVS5kpt2aM>w2M(He{84w8U?u-WEQ2r;JZTSWu zRz7wRo#Kga=^uuJF&#ocSV1D5tERVMSJT4KyYcmD?1$0fK(&>{WQis*TAqfoJgXwz z>G0wG8j57OSz_FsEif)6Po$0*DJP56apI>SzgvGN{`+A$KQ-OrUISs{Uiq6U@X7E4 zWrv1AE<6ZCP;Jn>T9YoD*?U=HqUqP$!nouT>D|Vk@F9oal&B?~UCI(;Q@P>4G8f?e zW<=%}Xog*f9-AmXet^vI(Ahz;Xe3&-jSV-8@v+Y%mBp=p6h8v8Blrs)lurB$BP(DI3$zAnu6X5TNa(gMoi%Rj`g2i`Y$Iapc&VFEZ zgAhfa@)z+5aPPx4x_-F0!C_CJs&LdG6+Gtzszznnhw&k3k@m|?kOGm*5g_d@y82H# zLT0sBKxfkEc=Rr-`wkkmvV|(pUM}eXQTqF+A)Qxk$C z4;pGXzL=kAB8Mm3X^4CnTpu(40|JarV?|4M1FxOSmkI30@d>aO+N9t7li1^9MN?)2 zAPK@Zi4=XLuLwT>mLPnStnSfPS52tg4_R|PLzm-Rt^=I;INnBaM)v(!u_p(s7tOdj z`8-PFm(g<18;gRjOyo~6!uPSx*`g`-eX7sngk}s~X6?8@ZF(_8#U>Bw5W|YEY6Z3= zThwXi_6=hzvPG+L6d-{U1Zd9ygWEY;;XdU^wwN;V_qPf3y$DZ&r^H=HIRpoBI%@&I zO8G*u132O?@B!T?i1U#y4Le}hb;h||=A(VW*t8t+cH@Vy-c(H$cP1)Vve$FOp7*V$ zC|*r3RMSDJM!2OK$KQM_P%Nsr3TD;!0N%N-NwP)4DS_d15{9>4jsVw#^&lC1H&*Fj z+^(cB*6U8O^MlVK5n-f{WrY53cz4iz=pw%lrv+$Xn5;%_M4yMy|3OO13sTC_-*;2q z-1fXbwB~)QJ@4(P@AW&y*xO@}P96?OH-RY?=z|V=!JrvL`pAS}8}BWNysC8HKz#4> z3GBx^#U7pLo*<+=D957PrDiEYeuHLVMmQ!f4Bzx=;h}8)I59CDr~~g0o3AFGX_MfcKDRQS-4%fZ?$U{NygOk z|AXJcjB~hy@@a^8kWfOxSc^D93*MDY!i)M5R$>8x|0NWsB5v;e6COZu138vpkA8nR zh3cQf1piP?n;(unk0Cw*?fo|z4@C5%_bqtmKE2RYl#Ttz~H%%6faRd7{J46 zG~n0&75{b0u^1&3@a}QtckgR0N@jQoL&YG!BkV1KeXRu7#~K4{h&@Vc|St7I=tglHK~*+mOM%cG*Vfv zr1yAOvJw`igk9rdbmuY>{7N6KEr*-3+#_5VbLW@XJ%(W&S1^~fb7L>V8196NK8 z+cH{Q&I`#nVCrmfWfqxGAcp=&?*`kC4WGw&73BffO^5M=VeA`BMJwGQUq#_T2zbHM zQLqKKniByHk=JCvyMRi*AH!->5PNASu(PwnPZc;6+EjL1-=(AcW3P6%s@K`>@#4Ta z|E8ec$mp+Bn$eRw3#Epa(&{SD#pe~h5k0E0_b;V^9WZX5MNF4Hq!dI;wZEU43k!D| zAqv5D1RD80V67BGQ6-;zg-w_s&P#g?{f-Qn+k5363a`)|ostGWwl=APt8WF2hMC~K zkgCCNki8~$YJ%8FkLF_xUz#8q?>gT%3{_Xo;QSt(sb~NMNODF`@?;>}P0$^TQ@WpL z`olkvhpi}pMj8KOsW!1k>ib`FxRMC2yRj&ub}ZqBzaS;xB7cC{sE>g952g)C#e&we0TR2a-w^H;;D!Ll$Hp+letl>l-Dq8Vk8!*0=$JDuE zKh2&QY(TDlUAX;$G39TL%r4AVXna8%|ilZKR zUW-{k?yia(bwp8`;b!9)U1+YCyZogEdTFGfy2QNWdFqUJK}NV+qbT!^dL)-$L;$Um z7K}P<4(K%tuemtxo)3peAFd9#`V>*fV#D!<|n~2Pkz?bHG@IH?Bn+FqY#L12w8R;D{uT zTOq)lSU@g3Jk&bUOxQk4ah%kI=0ike4E&BriVW%uQXMjPQ{A?9*vH;|x26w#K$CPiT^c2ProkXA3%g8o|% z?}0mByWR?yk(;?9GRh*Hn`D}o``E@wV&}N0l~s~-GKc^KXX3G`?2Aca!o13|pLh3hwgrA)@E{|-_k8N4JWeQ-A_Xe~;Lmw|Z*jXe4%kt6``6}-IKfRQ0x zz)**1C|#W7M2yJ2Wu6yl3Xx%2dztg@X75fGr>JK+}RZ+rh?VXR(c4d`k%fjd#y|RyLLfR;x#6b|Kd9*6iG_F}sRVbdHkaO(P_oTDxG3>M z{K{|X$n7sQwy5~5D>Wv2$Y&V!&`8HeC_WIZ@^{CF4j-VnD!+gawF8Q)+fKU9XtXEf z+v-Wd-`)>w9KeW)wjHG0pXu_e?XmPvkNb-pnQ?L*_Q8r{ z8-IlSIsfQ|s&|PEKIvd z0L+Ev5UF^Ay_RimTpO89_rwLH{jPI8&D6xGoT7`5MtE}7u5(v?7tun5!hOC~*!g|f zG6VPf?>hIJ@30aBO&-7mU*|i&4;Ng&(yLTeN*B(kl2mhn@1nQxYROcYu=1|PZx(*j z@k?>VUmyPyo^3jnP z4eLT`IW!Ma-T&h6axO>^dYHo3dR5?|(V(J4T3Xg#I{;rwYe>9W!wZ3Rm@l5naY{-G zAQd{l^Kmf`dft*HuquclQwv;;Le6bh3S6~OurDfr(?(*9*Iv_N=e=gW^h_dMgJdqH z&tN&(DRreN7bh-s@{lc+WhZ#;diW#AJ_b{m9AVoPJaCwsbE!c_anEB4tBM-z5yDQn zCw=3y;k+%S&Qax7N(UzY&4Y1^QIs%!*dClVqFqWDK~1otXoo%rVwr4t4=@PA7@MgA z81{%v6}rnYFstyg8WJ17h?Mr8Na+Z_!fSJ?U$MTj7EFw}HANkCJ% zH*MFs8&^-zRV36)xSGgy3Ry8x(4|o%g~}pTvW51JG{z&Bg;-p5CfB*2YzUl0yq;eE z0R*BrumibO!ZWlEEOE|h<9PTiBtvuW%|V!ySiB)zgt#u1G7`}OpGN!uUxFZ}pjE>X z%tT8o)^mGeoCR~%L`z?2aHTcDd<3_6r5)OZ&32i4vd$vqu%~U)QIByB@p3+@yNE;st zgbf)V+8z<+J*7p&WQqyBB_2&Jf4N zbGl+T2Wd*bAWex@XbKZ%ibH4RMtRTa(?+a4*BDT%hK!(=TckDVE{jR+T9c)M^b;Yj zxu#S2O_cz8PL$h%BnY(3g{d4x&ZWpGNpM>x`Nu%O6eXEWuEsO$gPAbL!;7m{;~oQQ zN=3(7+><8B&tp)g9kPM*!p$$Z?jc|d$6+I7y6>t(96TY+X9ZTQ4 zm2VTic?GY*ITkfOL^4luhae2U&{8Iu4#a7=Xp6jCaAi%-)nVYW&9ktU>;)aTc_@Mn z!u=rjuJjLT(`rXIc~W%idc`>%Ig5YyQpPYz7;gH*>yMn74<2u{onCoZ?MdGrNUIxH>aV5UYy+3yL!rA}FtHKT0xB}$5!vw=@v zzCy~KK_sx8DmPBkx*A6J0v7KFJn}!`#u?N{;TM!O7BEl3?iGxYw#+JJmqT}(CL`$0 z7EDN|J-F;DH6UszLRaH=6bMWq%EW6HUW=61Y{jY`|AALbTa(P`3OEy!ysn0`HA4ud zUTq70Z&?IT3M>E(r6~}}zX=F-stAv_grBAG)?ft&B?r(<=N6&Z%!Iw<>ImXuDGiuuAU7KcbW-`%dV{kNV%LPSggp^nw=S_TGnRyc_Q6}Soc0tXN~JPV z{XMGnfy;=HbcwFU-ALFLMaAj-krdjR8mi-bIJ5!!uu8PXnU*zF(Sc~ zqjJ1(cnMgF$__=zZO}`G((g%n0M&gh1Sv#-LGZj4I2(-Gqf_x!3Zv!sI@;44Z{WuV z?5SAc>tWp?h^WPm;8d=33EuH-uz?{x7ZTaqJOi`ex)_k|uu3oANPVaq#7SV@I$B`E zP&^ic$>&BQtMsoMOM1l8W)3$I>`;Z$p4>nu7hGjlD5kY3VEhCjuIA|ut0(V6B;?*+ zjXnORQ_0S%3tV~z)RWwy8^MU}%LhtmS1vL|K)_f!uD#HIp=N^H`eYG@jC-SYRqL!7 zSA=34$Vu9X-5rqza;O)7#tfgII2SD+w)||E>I(wMhJiO%I+E=fcja!djsfGdu$&KMF&4fG+;)L-0u~|LJN`-C5A8XAl(5<)vliuxk2bO#!)01bxFcf{;Ds9ql1gPXJ8g8)d8JKmB-ssGAwWJxL zUx6Q>%8nn8rK=o6yD`)dLl%lPUNA#MnP!`2`MUK{t9B%5_%^If6s2EqhQS@l!(lWky< zHX{Y!UMd?6>8l_KvbnLPp#;SB&__Dio~Pmxi&jEah={h$s|~gJZ{uT1UdT4j75i$p zWUE;Ugyy#el1hQNec1H95d3|e|4RB9r_r!LBc^j8sW=$-Fn*cy{ct1B&Wx`k0aW;{ zB%1)}R@}B{chdDUeSn0Qt2uH#_yG!@!jIWAUXU&T8bCm2 zkw|_6ZybGM<=CK@l;H!*>VCA9^?jsMM-jwYPDpHT+-MbheJ(U-S71WXnlqQPRkZLx z1X4MPIHsG=B=t3?!c>YEaq2*L5>p07J=OtqpBF!Xy&OLtON{&&R!@REk`FjpN

z*7wRsDuL_vlgWMiKm@RU%?H;-<2-dI%@K>ou(OeluCRb(2LFIljavnZ*us8<1T>Vm zAiOt0V*(~SDbVN?X!IN!t$Yy!6De9nlC5JMR^@{&$)0#8j!TGz;_84THtG;C?#%*L zTnTt^pz6`bM24|W^MI{x@RhxZZ-=pzBxb~q4T11}v1Q(G0BJPdEs~B-a~vA~R4FTF zlUFuuQFCEhZyp(WO&<1C3(oEWxG@l0PUH$xBH(u3i>r2?rg|mAuN|l;q)w0lx}-l# z->$^wNC+YPPw=x_`FmD5PfW+%BRA%W8F3`ivaAQ2vrv9C8D#*Orhu_S7R#D1-X68b z1;e|{%^ky3!o_Wl;B3SGD$JdEv}FD}etzu1>!LEZg#vtG&>*A zQkqMac>|}@o2v#g&Z-+0&w!u&*%qlMtq%7~V}tm10M5PgQ!qdf3=?7yEY%7-eTF9C zqX{vNU(h92>R|}P6FIn*0?vanZaB7Ea0080O*-kqzJz8(76CmKIx6lS{xduC&=}A7 zt@7W`(0LBHH97Pwbr79a*};#;(d8Pj=;God>QOoI8pZc)T00>|WumdaSHAp2OThmD z*twtnBAT?mh_LPALh&ngWcDu1AyD;5Xi>0V9}rU}Mk54w%2MF%yEtw;2s=|mf7UK6 zb~N99|Dr8{u{}Ywzb7|%M}jl$34Z;8Eq+k!6?p`v-a$*R)9j@O#hjsF{y-7a^Fr+t zI2S^LX9@1H#}Hp)k&a+bWGck8ls8pz82SYCj|Eughs2R_3jczha~S3D_Htuc!9!yI zo_TBdL6FumFBI0`WGf5Sz~XK0fSI~P8^%6(NF1#Bc@1lPNE|C%!w_FKozzY|#*3OT zcH1IxnYt(Y=OVGMW?BcuXl(yE=368Vi|bnSC!$JyQ41S#F{(4XjEHeDn;r*(6#8(& zKNC~vZFLx1`LNh~%uK{^z62|voJ+|vD(t&}Vl%zd2u~fsMX>J#j6Lus9Yx#&XbSA8 zFipmyoNrK$rbo+ji^ZW`qA(OT(FmY@%UYt$O#v0oylgCYvDi1Z{xpvkXhjK=XKR5G zM0RA-VzHlTlM*=&Iitu9P!cIo=U}4h(`>_HF)99WIL7ZXqdo+r2j>2deU*;d!dyj}~)PH9wOT=E9P5)wdEfEJe z$DE*1nJZf)>k@fb`$wLf-2O3F?$-XXQ100NVUgACACu%?kGGY!Qa;!A;VuL+Z*^l3EFwFlZ?@*CJ?;ePQlMf|A)!(RiYM4p8J6cQ^LK1E8T7>@v&gdLBk zAPw-nS6&Zlg-kb4ARKj4bxTp5h2|Zp(0~%8vpGAWjV%4IVzl!iOahCv5&LiQpB1kL z{U_tBYyt$m6XAL^O6AbY*%gR)zs8e+I-!U6%5Roa);6^qh2=^m^*^KKPYqnf$geHrK3YyOXcYV8OV_yp~)3; z=uyRo0^-tds>;(=Rhhqo974+)=geYg^$M5A1UWk@B)vke_*&r+r(2w^3+)gSgOHUL z$V$(QPyrA9CByL6VxhLzK`y=6TC9bN)yo$+(9Ql40plxad}pRV0ng}`3@aTdsGal4=4!N zPIs}4NW<2L*u1^+c|NMN#FhBJk_7ojCw2K_K;Q5m0iiMhl7#?`J?4DDna&YhhUPOKtIL9gE!tm9#35Xp^cMU z@S|KO2FFCGcBY-pT`u-A?QIM9FDkBEnU`VwD@5VTCP4?77>aA`_2r_~aDQ7W`H|!7 z>T;-sCZAw~R)~Y6w{N%@z(&~S8C5o3D)Kcw#1^j*W4pXI2s&vw+v�sc)OpA4_&b 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%0A^T=r~d73dMQV1V1f(iH&Wtj$Fc0MfC) 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
    d0y5>=UY_F1|dwVc6s~9aAS%dGGV|+wY!H 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%0DTaE5x~ltB!#z@G&{>Wc>g_#m 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 D>mPPk diff --git a/raylib files/raylib opengl43/raylibdll.lib b/raylib files/raylib opengl43/raylibdll.lib new file mode 100644 index 0000000000000000000000000000000000000000..cc6cf3d1fa28f45909d923af02554a43d92c4801 GIT binary patch literal 400954 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 literal 0 HcmV?d00001 diff --git a/raylib files/raylib-5.5_win64_msvc16/CHANGELOG b/raylib files/raylib-5.5_win64_msvc16 opengl33/CHANGELOG similarity index 100% rename from raylib files/raylib-5.5_win64_msvc16/CHANGELOG rename to raylib files/raylib-5.5_win64_msvc16 opengl33/CHANGELOG diff --git a/raylib files/raylib-5.5_win64_msvc16/LICENSE b/raylib files/raylib-5.5_win64_msvc16 opengl33/LICENSE similarity index 100% rename from raylib files/raylib-5.5_win64_msvc16/LICENSE rename to raylib files/raylib-5.5_win64_msvc16 opengl33/LICENSE diff --git a/raylib files/raylib-5.5_win64_msvc16/README.md b/raylib files/raylib-5.5_win64_msvc16 opengl33/README.md similarity index 100% rename from raylib files/raylib-5.5_win64_msvc16/README.md rename to raylib files/raylib-5.5_win64_msvc16 opengl33/README.md diff --git a/raylib files/raylib-5.5_win64_msvc16 opengl33/include/raylib.h b/raylib files/raylib-5.5_win64_msvc16 opengl33/include/raylib.h new file mode 100644 index 0000000..576e575 --- /dev/null +++ b/raylib files/raylib-5.5_win64_msvc16 opengl33/include/raylib.h @@ -0,0 +1,1708 @@ +/********************************************************************************************** +* +* raylib v5.5 - A simple and easy-to-use library to enjoy videogames programming (www.raylib.com) +* +* FEATURES: +* - NO external dependencies, all required libraries included with raylib +* - Multiplatform: Windows, Linux, FreeBSD, OpenBSD, NetBSD, DragonFly, +* MacOS, Haiku, Android, Raspberry Pi, DRM native, HTML5. +* - Written in plain C code (C99) in PascalCase/camelCase notation +* - Hardware accelerated with OpenGL (1.1, 2.1, 3.3, 4.3, ES2, ES3 - choose at compile) +* - Unique OpenGL abstraction layer (usable as standalone module): [rlgl] +* - Multiple Fonts formats supported (TTF, OTF, FNT, BDF, Sprite fonts) +* - Outstanding texture formats support, including compressed formats (DXT, ETC, ASTC) +* - Full 3d support for 3d Shapes, Models, Billboards, Heightmaps and more! +* - Flexible Materials system, supporting classic maps and PBR maps +* - Animated 3D models supported (skeletal bones animation) (IQM, M3D, GLTF) +* - Shaders support, including Model shaders and Postprocessing shaders +* - Powerful math module for Vector, Matrix and Quaternion operations: [raymath] +* - Audio loading and playing with streaming support (WAV, OGG, MP3, FLAC, QOA, XM, MOD) +* - VR stereo rendering with configurable HMD device parameters +* - Bindings to multiple programming languages available! +* +* NOTES: +* - One default Font is loaded on InitWindow()->LoadFontDefault() [core, text] +* - One default Texture2D is loaded on rlglInit(), 1x1 white pixel R8G8B8A8 [rlgl] (OpenGL 3.3 or ES2) +* - One default Shader is loaded on rlglInit()->rlLoadShaderDefault() [rlgl] (OpenGL 3.3 or ES2) +* - One default RenderBatch is loaded on rlglInit()->rlLoadRenderBatch() [rlgl] (OpenGL 3.3 or ES2) +* +* DEPENDENCIES (included): +* [rcore][GLFW] rglfw (Camilla Löwy - github.com/glfw/glfw) for window/context management and input +* [rcore][RGFW] rgfw (ColleagueRiley - github.com/ColleagueRiley/RGFW) for window/context management and input +* [rlgl] glad/glad_gles2 (David Herberth - github.com/Dav1dde/glad) for OpenGL 3.3 extensions loading +* [raudio] miniaudio (David Reid - github.com/mackron/miniaudio) for audio device/context management +* +* OPTIONAL DEPENDENCIES (included): +* [rcore] msf_gif (Miles Fogle) for GIF recording +* [rcore] sinfl (Micha Mettke) for DEFLATE decompression algorithm +* [rcore] sdefl (Micha Mettke) for DEFLATE compression algorithm +* [rcore] rprand (Ramon Snatamaria) for pseudo-random numbers generation +* [rtextures] qoi (Dominic Szablewski - https://phoboslab.org) for QOI image manage +* [rtextures] stb_image (Sean Barret) for images loading (BMP, TGA, PNG, JPEG, HDR...) +* [rtextures] stb_image_write (Sean Barret) for image writing (BMP, TGA, PNG, JPG) +* [rtextures] stb_image_resize2 (Sean Barret) for image resizing algorithms +* [rtextures] stb_perlin (Sean Barret) for Perlin Noise image generation +* [rtext] stb_truetype (Sean Barret) for ttf fonts loading +* [rtext] stb_rect_pack (Sean Barret) for rectangles packing +* [rmodels] par_shapes (Philip Rideout) for parametric 3d shapes generation +* [rmodels] tinyobj_loader_c (Syoyo Fujita) for models loading (OBJ, MTL) +* [rmodels] cgltf (Johannes Kuhlmann) for models loading (glTF) +* [rmodels] m3d (bzt) for models loading (M3D, https://bztsrc.gitlab.io/model3d) +* [rmodels] vox_loader (Johann Nadalutti) for models loading (VOX) +* [raudio] dr_wav (David Reid) for WAV audio file loading +* [raudio] dr_flac (David Reid) for FLAC audio file loading +* [raudio] dr_mp3 (David Reid) for MP3 audio file loading +* [raudio] stb_vorbis (Sean Barret) for OGG audio loading +* [raudio] jar_xm (Joshua Reisenauer) for XM audio module loading +* [raudio] jar_mod (Joshua Reisenauer) for MOD audio module loading +* [raudio] qoa (Dominic Szablewski - https://phoboslab.org) for QOA audio manage +* +* +* LICENSE: zlib/libpng +* +* raylib is 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) 2013-2024 Ramon Santamaria (@raysan5) +* +* This software is provided "as-is", without any express or implied warranty. In no event +* will the authors be held liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, including commercial +* applications, and to alter it and redistribute it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; you must not claim that you +* wrote the original software. If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but is not required. +* +* 2. Altered source versions must be plainly marked as such, and must not be misrepresented +* as being the original software. +* +* 3. This notice may not be removed or altered from any source distribution. +* +**********************************************************************************************/ + +#ifndef RAYLIB_H +#define RAYLIB_H + +#include // Required for: va_list - Only used by TraceLogCallback + +#define RAYLIB_VERSION_MAJOR 5 +#define RAYLIB_VERSION_MINOR 5 +#define RAYLIB_VERSION_PATCH 0 +#define RAYLIB_VERSION "5.5" + +// Function specifiers in case library is build/used as a shared library +// NOTE: Microsoft specifiers to tell compiler that symbols are imported/exported from a .dll +// NOTE: visibility("default") attribute makes symbols "visible" when compiled with -fvisibility=hidden +#if defined(_WIN32) + #if defined(__TINYC__) + #define __declspec(x) __attribute__((x)) + #endif + #if defined(BUILD_LIBTYPE_SHARED) + #define RLAPI __declspec(dllexport) // We are building the library as a Win32 shared library (.dll) + #elif defined(USE_LIBTYPE_SHARED) + #define RLAPI __declspec(dllimport) // We are using the library as a Win32 shared library (.dll) + #endif +#else + #if defined(BUILD_LIBTYPE_SHARED) + #define RLAPI __attribute__((visibility("default"))) // We are building as a Unix shared library (.so/.dylib) + #endif +#endif + +#ifndef RLAPI + #define RLAPI // Functions defined as 'extern' by default (implicit specifiers) +#endif + +//---------------------------------------------------------------------------------- +// Some basic Defines +//---------------------------------------------------------------------------------- +#ifndef PI + #define PI 3.14159265358979323846f +#endif +#ifndef DEG2RAD + #define DEG2RAD (PI/180.0f) +#endif +#ifndef RAD2DEG + #define RAD2DEG (180.0f/PI) +#endif + +// Allow custom memory allocators +// NOTE: Require recompiling raylib sources +#ifndef RL_MALLOC + #define RL_MALLOC(sz) malloc(sz) +#endif +#ifndef RL_CALLOC + #define RL_CALLOC(n,sz) calloc(n,sz) +#endif +#ifndef RL_REALLOC + #define RL_REALLOC(ptr,sz) realloc(ptr,sz) +#endif +#ifndef RL_FREE + #define RL_FREE(ptr) free(ptr) +#endif + +// NOTE: MSVC C++ compiler does not support compound literals (C99 feature) +// Plain structures in C++ (without constructors) can be initialized with { } +// This is called aggregate initialization (C++11 feature) +#if defined(__cplusplus) + #define CLITERAL(type) type +#else + #define CLITERAL(type) (type) +#endif + +// Some compilers (mostly macos clang) default to C++98, +// where aggregate initialization can't be used +// So, give a more clear error stating how to fix this +#if !defined(_MSC_VER) && (defined(__cplusplus) && __cplusplus < 201103L) + #error "C++11 or later is required. Add -std=c++11" +#endif + +// NOTE: We set some defines with some data types declared by raylib +// Other modules (raymath, rlgl) also require some of those types, so, +// to be able to use those other modules as standalone (not depending on raylib) +// this defines are very useful for internal check and avoid type (re)definitions +#define RL_COLOR_TYPE +#define RL_RECTANGLE_TYPE +#define RL_VECTOR2_TYPE +#define RL_VECTOR3_TYPE +#define RL_VECTOR4_TYPE +#define RL_QUATERNION_TYPE +#define RL_MATRIX_TYPE + +// Some Basic Colors +// NOTE: Custom raylib color palette for amazing visuals on WHITE background +#define LIGHTGRAY CLITERAL(Color){ 200, 200, 200, 255 } // Light Gray +#define GRAY CLITERAL(Color){ 130, 130, 130, 255 } // Gray +#define DARKGRAY CLITERAL(Color){ 80, 80, 80, 255 } // Dark Gray +#define YELLOW CLITERAL(Color){ 253, 249, 0, 255 } // Yellow +#define GOLD CLITERAL(Color){ 255, 203, 0, 255 } // Gold +#define ORANGE CLITERAL(Color){ 255, 161, 0, 255 } // Orange +#define PINK CLITERAL(Color){ 255, 109, 194, 255 } // Pink +#define RED CLITERAL(Color){ 230, 41, 55, 255 } // Red +#define MAROON CLITERAL(Color){ 190, 33, 55, 255 } // Maroon +#define GREEN CLITERAL(Color){ 0, 228, 48, 255 } // Green +#define LIME CLITERAL(Color){ 0, 158, 47, 255 } // Lime +#define DARKGREEN CLITERAL(Color){ 0, 117, 44, 255 } // Dark Green +#define SKYBLUE CLITERAL(Color){ 102, 191, 255, 255 } // Sky Blue +#define BLUE CLITERAL(Color){ 0, 121, 241, 255 } // Blue +#define DARKBLUE CLITERAL(Color){ 0, 82, 172, 255 } // Dark Blue +#define PURPLE CLITERAL(Color){ 200, 122, 255, 255 } // Purple +#define VIOLET CLITERAL(Color){ 135, 60, 190, 255 } // Violet +#define DARKPURPLE CLITERAL(Color){ 112, 31, 126, 255 } // Dark Purple +#define BEIGE CLITERAL(Color){ 211, 176, 131, 255 } // Beige +#define BROWN CLITERAL(Color){ 127, 106, 79, 255 } // Brown +#define DARKBROWN CLITERAL(Color){ 76, 63, 47, 255 } // Dark Brown + +#define WHITE CLITERAL(Color){ 255, 255, 255, 255 } // White +#define BLACK CLITERAL(Color){ 0, 0, 0, 255 } // Black +#define BLANK CLITERAL(Color){ 0, 0, 0, 0 } // Blank (Transparent) +#define MAGENTA CLITERAL(Color){ 255, 0, 255, 255 } // Magenta +#define RAYWHITE CLITERAL(Color){ 245, 245, 245, 255 } // My own White (raylib logo) + +//---------------------------------------------------------------------------------- +// Structures Definition +//---------------------------------------------------------------------------------- +// Boolean type +#if (defined(__STDC__) && __STDC_VERSION__ >= 199901L) || (defined(_MSC_VER) && _MSC_VER >= 1800) + #include +#elif !defined(__cplusplus) && !defined(bool) + typedef enum bool { false = 0, true = !false } bool; + #define RL_BOOL_TYPE +#endif + +// Vector2, 2 components +typedef struct Vector2 { + float x; // Vector x component + float y; // Vector y component +} Vector2; + +// Vector3, 3 components +typedef struct Vector3 { + float x; // Vector x component + float y; // Vector y component + float z; // Vector z component +} Vector3; + +// Vector4, 4 components +typedef struct Vector4 { + float x; // Vector x component + float y; // Vector y component + float z; // Vector z component + float w; // Vector w component +} Vector4; + +// Quaternion, 4 components (Vector4 alias) +typedef Vector4 Quaternion; + +// Matrix, 4x4 components, column major, OpenGL style, right-handed +typedef struct Matrix { + float m0, m4, m8, m12; // Matrix first row (4 components) + float m1, m5, m9, m13; // Matrix second row (4 components) + float m2, m6, m10, m14; // Matrix third row (4 components) + float m3, m7, m11, m15; // Matrix fourth row (4 components) +} Matrix; + +// Color, 4 components, R8G8B8A8 (32bit) +typedef struct Color { + unsigned char r; // Color red value + unsigned char g; // Color green value + unsigned char b; // Color blue value + unsigned char a; // Color alpha value +} Color; + +// Rectangle, 4 components +typedef struct Rectangle { + float x; // Rectangle top-left corner position x + float y; // Rectangle top-left corner position y + float width; // Rectangle width + float height; // Rectangle height +} Rectangle; + +// Image, pixel data stored in CPU memory (RAM) +typedef struct Image { + void *data; // Image raw data + int width; // Image base width + int height; // Image base height + int mipmaps; // Mipmap levels, 1 by default + int format; // Data format (PixelFormat type) +} Image; + +// Texture, tex data stored in GPU memory (VRAM) +typedef struct Texture { + unsigned int id; // OpenGL texture id + int width; // Texture base width + int height; // Texture base height + int mipmaps; // Mipmap levels, 1 by default + int format; // Data format (PixelFormat type) +} Texture; + +// Texture2D, same as Texture +typedef Texture Texture2D; + +// TextureCubemap, same as Texture +typedef Texture TextureCubemap; + +// RenderTexture, fbo for texture rendering +typedef struct RenderTexture { + unsigned int id; // OpenGL framebuffer object id + Texture texture; // Color buffer attachment texture + Texture depth; // Depth buffer attachment texture +} RenderTexture; + +// RenderTexture2D, same as RenderTexture +typedef RenderTexture RenderTexture2D; + +// NPatchInfo, n-patch layout info +typedef struct NPatchInfo { + Rectangle source; // Texture source rectangle + int left; // Left border offset + int top; // Top border offset + int right; // Right border offset + int bottom; // Bottom border offset + int layout; // Layout of the n-patch: 3x3, 1x3 or 3x1 +} NPatchInfo; + +// GlyphInfo, font characters glyphs info +typedef struct GlyphInfo { + int value; // Character value (Unicode) + int offsetX; // Character offset X when drawing + int offsetY; // Character offset Y when drawing + int advanceX; // Character advance position X + Image image; // Character image data +} GlyphInfo; + +// Font, font texture and GlyphInfo array data +typedef struct Font { + int baseSize; // Base size (default chars height) + int glyphCount; // Number of glyph characters + int glyphPadding; // Padding around the glyph characters + Texture2D texture; // Texture atlas containing the glyphs + Rectangle *recs; // Rectangles in texture for the glyphs + GlyphInfo *glyphs; // Glyphs info data +} Font; + +// Camera, defines position/orientation in 3d space +typedef struct Camera3D { + Vector3 position; // Camera position + Vector3 target; // Camera target it looks-at + Vector3 up; // Camera up vector (rotation over its axis) + float fovy; // Camera field-of-view aperture in Y (degrees) in perspective, used as near plane width in orthographic + int projection; // Camera projection: CAMERA_PERSPECTIVE or CAMERA_ORTHOGRAPHIC +} Camera3D; + +typedef Camera3D Camera; // Camera type fallback, defaults to Camera3D + +// Camera2D, defines position/orientation in 2d space +typedef struct Camera2D { + Vector2 offset; // Camera offset (displacement from target) + Vector2 target; // Camera target (rotation and zoom origin) + float rotation; // Camera rotation in degrees + float zoom; // Camera zoom (scaling), should be 1.0f by default +} Camera2D; + +// Mesh, vertex data and vao/vbo +typedef struct Mesh { + int vertexCount; // Number of vertices stored in arrays + int triangleCount; // Number of triangles stored (indexed or not) + + // Vertex attributes data + float *vertices; // Vertex position (XYZ - 3 components per vertex) (shader-location = 0) + float *texcoords; // Vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1) + float *texcoords2; // Vertex texture second coordinates (UV - 2 components per vertex) (shader-location = 5) + float *normals; // Vertex normals (XYZ - 3 components per vertex) (shader-location = 2) + float *tangents; // Vertex tangents (XYZW - 4 components per vertex) (shader-location = 4) + unsigned char *colors; // Vertex colors (RGBA - 4 components per vertex) (shader-location = 3) + unsigned short *indices; // Vertex indices (in case vertex data comes indexed) + + // Animation vertex data + float *animVertices; // Animated vertex positions (after bones transformations) + float *animNormals; // Animated normals (after bones transformations) + unsigned char *boneIds; // Vertex bone ids, max 255 bone ids, up to 4 bones influence by vertex (skinning) (shader-location = 6) + float *boneWeights; // Vertex bone weight, up to 4 bones influence by vertex (skinning) (shader-location = 7) + Matrix *boneMatrices; // Bones animated transformation matrices + int boneCount; // Number of bones + + // OpenGL identifiers + unsigned int vaoId; // OpenGL Vertex Array Object id + unsigned int *vboId; // OpenGL Vertex Buffer Objects id (default vertex data) +} Mesh; + +// Shader +typedef struct Shader { + unsigned int id; // Shader program id + int *locs; // Shader locations array (RL_MAX_SHADER_LOCATIONS) +} Shader; + +// MaterialMap +typedef struct MaterialMap { + Texture2D texture; // Material map texture + Color color; // Material map color + float value; // Material map value +} MaterialMap; + +// Material, includes shader and maps +typedef struct Material { + Shader shader; // Material shader + MaterialMap *maps; // Material maps array (MAX_MATERIAL_MAPS) + float params[4]; // Material generic parameters (if required) +} Material; + +// Transform, vertex transformation data +typedef struct Transform { + Vector3 translation; // Translation + Quaternion rotation; // Rotation + Vector3 scale; // Scale +} Transform; + +// Bone, skeletal animation bone +typedef struct BoneInfo { + char name[32]; // Bone name + int parent; // Bone parent +} BoneInfo; + +// Model, meshes, materials and animation data +typedef struct Model { + Matrix transform; // Local transform matrix + + int meshCount; // Number of meshes + int materialCount; // Number of materials + Mesh *meshes; // Meshes array + Material *materials; // Materials array + int *meshMaterial; // Mesh material number + + // Animation data + int boneCount; // Number of bones + BoneInfo *bones; // Bones information (skeleton) + Transform *bindPose; // Bones base transformation (pose) +} Model; + +// ModelAnimation +typedef struct ModelAnimation { + int boneCount; // Number of bones + int frameCount; // Number of animation frames + BoneInfo *bones; // Bones information (skeleton) + Transform **framePoses; // Poses array by frame + char name[32]; // Animation name +} ModelAnimation; + +// Ray, ray for raycasting +typedef struct Ray { + Vector3 position; // Ray position (origin) + Vector3 direction; // Ray direction (normalized) +} Ray; + +// RayCollision, ray hit information +typedef struct RayCollision { + bool hit; // Did the ray hit something? + float distance; // Distance to the nearest hit + Vector3 point; // Point of the nearest hit + Vector3 normal; // Surface normal of hit +} RayCollision; + +// BoundingBox +typedef struct BoundingBox { + Vector3 min; // Minimum vertex box-corner + Vector3 max; // Maximum vertex box-corner +} BoundingBox; + +// Wave, audio wave data +typedef struct Wave { + unsigned int frameCount; // Total number of frames (considering channels) + unsigned int sampleRate; // Frequency (samples per second) + unsigned int sampleSize; // Bit depth (bits per sample): 8, 16, 32 (24 not supported) + unsigned int channels; // Number of channels (1-mono, 2-stereo, ...) + void *data; // Buffer data pointer +} Wave; + +// Opaque structs declaration +// NOTE: Actual structs are defined internally in raudio module +typedef struct rAudioBuffer rAudioBuffer; +typedef struct rAudioProcessor rAudioProcessor; + +// AudioStream, custom audio stream +typedef struct AudioStream { + rAudioBuffer *buffer; // Pointer to internal data used by the audio system + rAudioProcessor *processor; // Pointer to internal data processor, useful for audio effects + + unsigned int sampleRate; // Frequency (samples per second) + unsigned int sampleSize; // Bit depth (bits per sample): 8, 16, 32 (24 not supported) + unsigned int channels; // Number of channels (1-mono, 2-stereo, ...) +} AudioStream; + +// Sound +typedef struct Sound { + AudioStream stream; // Audio stream + unsigned int frameCount; // Total number of frames (considering channels) +} Sound; + +// Music, audio stream, anything longer than ~10 seconds should be streamed +typedef struct Music { + AudioStream stream; // Audio stream + unsigned int frameCount; // Total number of frames (considering channels) + bool looping; // Music looping enable + + int ctxType; // Type of music context (audio filetype) + void *ctxData; // Audio context data, depends on type +} Music; + +// VrDeviceInfo, Head-Mounted-Display device parameters +typedef struct VrDeviceInfo { + int hResolution; // Horizontal resolution in pixels + int vResolution; // Vertical resolution in pixels + float hScreenSize; // Horizontal size in meters + float vScreenSize; // Vertical size in meters + float eyeToScreenDistance; // Distance between eye and display in meters + float lensSeparationDistance; // Lens separation distance in meters + float interpupillaryDistance; // IPD (distance between pupils) in meters + float lensDistortionValues[4]; // Lens distortion constant parameters + float chromaAbCorrection[4]; // Chromatic aberration correction parameters +} VrDeviceInfo; + +// VrStereoConfig, VR stereo rendering configuration for simulator +typedef struct VrStereoConfig { + Matrix projection[2]; // VR projection matrices (per eye) + Matrix viewOffset[2]; // VR view offset matrices (per eye) + float leftLensCenter[2]; // VR left lens center + float rightLensCenter[2]; // VR right lens center + float leftScreenCenter[2]; // VR left screen center + float rightScreenCenter[2]; // VR right screen center + float scale[2]; // VR distortion scale + float scaleIn[2]; // VR distortion scale in +} VrStereoConfig; + +// File path list +typedef struct FilePathList { + unsigned int capacity; // Filepaths max entries + unsigned int count; // Filepaths entries count + char **paths; // Filepaths entries +} FilePathList; + +// Automation event +typedef struct AutomationEvent { + unsigned int frame; // Event frame + unsigned int type; // Event type (AutomationEventType) + int params[4]; // Event parameters (if required) +} AutomationEvent; + +// Automation event list +typedef struct AutomationEventList { + unsigned int capacity; // Events max entries (MAX_AUTOMATION_EVENTS) + unsigned int count; // Events entries count + AutomationEvent *events; // Events entries +} AutomationEventList; + +//---------------------------------------------------------------------------------- +// Enumerators Definition +//---------------------------------------------------------------------------------- +// System/Window config flags +// NOTE: Every bit registers one state (use it with bit masks) +// By default all flags are set to 0 +typedef enum { + FLAG_VSYNC_HINT = 0x00000040, // Set to try enabling V-Sync on GPU + FLAG_FULLSCREEN_MODE = 0x00000002, // Set to run program in fullscreen + FLAG_WINDOW_RESIZABLE = 0x00000004, // Set to allow resizable window + FLAG_WINDOW_UNDECORATED = 0x00000008, // Set to disable window decoration (frame and buttons) + FLAG_WINDOW_HIDDEN = 0x00000080, // Set to hide window + FLAG_WINDOW_MINIMIZED = 0x00000200, // Set to minimize window (iconify) + FLAG_WINDOW_MAXIMIZED = 0x00000400, // Set to maximize window (expanded to monitor) + FLAG_WINDOW_UNFOCUSED = 0x00000800, // Set to window non focused + FLAG_WINDOW_TOPMOST = 0x00001000, // Set to window always on top + FLAG_WINDOW_ALWAYS_RUN = 0x00000100, // Set to allow windows running while minimized + FLAG_WINDOW_TRANSPARENT = 0x00000010, // Set to allow transparent framebuffer + FLAG_WINDOW_HIGHDPI = 0x00002000, // Set to support HighDPI + FLAG_WINDOW_MOUSE_PASSTHROUGH = 0x00004000, // Set to support mouse passthrough, only supported when FLAG_WINDOW_UNDECORATED + FLAG_BORDERLESS_WINDOWED_MODE = 0x00008000, // Set to run program in borderless windowed mode + FLAG_MSAA_4X_HINT = 0x00000020, // Set to try enabling MSAA 4X + FLAG_INTERLACED_HINT = 0x00010000 // Set to try enabling interlaced video format (for V3D) +} ConfigFlags; + +// Trace log level +// NOTE: Organized by priority level +typedef enum { + LOG_ALL = 0, // Display all logs + LOG_TRACE, // Trace logging, intended for internal use only + LOG_DEBUG, // Debug logging, used for internal debugging, it should be disabled on release builds + LOG_INFO, // Info logging, used for program execution info + LOG_WARNING, // Warning logging, used on recoverable failures + LOG_ERROR, // Error logging, used on unrecoverable failures + LOG_FATAL, // Fatal logging, used to abort program: exit(EXIT_FAILURE) + LOG_NONE // Disable logging +} TraceLogLevel; + +// Keyboard keys (US keyboard layout) +// NOTE: Use GetKeyPressed() to allow redefining +// required keys for alternative layouts +typedef enum { + KEY_NULL = 0, // Key: NULL, used for no key pressed + // Alphanumeric keys + KEY_APOSTROPHE = 39, // Key: ' + KEY_COMMA = 44, // Key: , + KEY_MINUS = 45, // Key: - + KEY_PERIOD = 46, // Key: . + KEY_SLASH = 47, // Key: / + KEY_ZERO = 48, // Key: 0 + KEY_ONE = 49, // Key: 1 + KEY_TWO = 50, // Key: 2 + KEY_THREE = 51, // Key: 3 + KEY_FOUR = 52, // Key: 4 + KEY_FIVE = 53, // Key: 5 + KEY_SIX = 54, // Key: 6 + KEY_SEVEN = 55, // Key: 7 + KEY_EIGHT = 56, // Key: 8 + KEY_NINE = 57, // Key: 9 + KEY_SEMICOLON = 59, // Key: ; + KEY_EQUAL = 61, // Key: = + KEY_A = 65, // Key: A | a + KEY_B = 66, // Key: B | b + KEY_C = 67, // Key: C | c + KEY_D = 68, // Key: D | d + KEY_E = 69, // Key: E | e + KEY_F = 70, // Key: F | f + KEY_G = 71, // Key: G | g + KEY_H = 72, // Key: H | h + KEY_I = 73, // Key: I | i + KEY_J = 74, // Key: J | j + KEY_K = 75, // Key: K | k + KEY_L = 76, // Key: L | l + KEY_M = 77, // Key: M | m + KEY_N = 78, // Key: N | n + KEY_O = 79, // Key: O | o + KEY_P = 80, // Key: P | p + KEY_Q = 81, // Key: Q | q + KEY_R = 82, // Key: R | r + KEY_S = 83, // Key: S | s + KEY_T = 84, // Key: T | t + KEY_U = 85, // Key: U | u + KEY_V = 86, // Key: V | v + KEY_W = 87, // Key: W | w + KEY_X = 88, // Key: X | x + KEY_Y = 89, // Key: Y | y + KEY_Z = 90, // Key: Z | z + KEY_LEFT_BRACKET = 91, // Key: [ + KEY_BACKSLASH = 92, // Key: '\' + KEY_RIGHT_BRACKET = 93, // Key: ] + KEY_GRAVE = 96, // Key: ` + // Function keys + KEY_SPACE = 32, // Key: Space + KEY_ESCAPE = 256, // Key: Esc + KEY_ENTER = 257, // Key: Enter + KEY_TAB = 258, // Key: Tab + KEY_BACKSPACE = 259, // Key: Backspace + KEY_INSERT = 260, // Key: Ins + KEY_DELETE = 261, // Key: Del + KEY_RIGHT = 262, // Key: Cursor right + KEY_LEFT = 263, // Key: Cursor left + KEY_DOWN = 264, // Key: Cursor down + KEY_UP = 265, // Key: Cursor up + KEY_PAGE_UP = 266, // Key: Page up + KEY_PAGE_DOWN = 267, // Key: Page down + KEY_HOME = 268, // Key: Home + KEY_END = 269, // Key: End + KEY_CAPS_LOCK = 280, // Key: Caps lock + KEY_SCROLL_LOCK = 281, // Key: Scroll down + KEY_NUM_LOCK = 282, // Key: Num lock + KEY_PRINT_SCREEN = 283, // Key: Print screen + KEY_PAUSE = 284, // Key: Pause + KEY_F1 = 290, // Key: F1 + KEY_F2 = 291, // Key: F2 + KEY_F3 = 292, // Key: F3 + KEY_F4 = 293, // Key: F4 + KEY_F5 = 294, // Key: F5 + KEY_F6 = 295, // Key: F6 + KEY_F7 = 296, // Key: F7 + KEY_F8 = 297, // Key: F8 + KEY_F9 = 298, // Key: F9 + KEY_F10 = 299, // Key: F10 + KEY_F11 = 300, // Key: F11 + KEY_F12 = 301, // Key: F12 + KEY_LEFT_SHIFT = 340, // Key: Shift left + KEY_LEFT_CONTROL = 341, // Key: Control left + KEY_LEFT_ALT = 342, // Key: Alt left + KEY_LEFT_SUPER = 343, // Key: Super left + KEY_RIGHT_SHIFT = 344, // Key: Shift right + KEY_RIGHT_CONTROL = 345, // Key: Control right + KEY_RIGHT_ALT = 346, // Key: Alt right + KEY_RIGHT_SUPER = 347, // Key: Super right + KEY_KB_MENU = 348, // Key: KB menu + // Keypad keys + KEY_KP_0 = 320, // Key: Keypad 0 + KEY_KP_1 = 321, // Key: Keypad 1 + KEY_KP_2 = 322, // Key: Keypad 2 + KEY_KP_3 = 323, // Key: Keypad 3 + KEY_KP_4 = 324, // Key: Keypad 4 + KEY_KP_5 = 325, // Key: Keypad 5 + KEY_KP_6 = 326, // Key: Keypad 6 + KEY_KP_7 = 327, // Key: Keypad 7 + KEY_KP_8 = 328, // Key: Keypad 8 + KEY_KP_9 = 329, // Key: Keypad 9 + KEY_KP_DECIMAL = 330, // Key: Keypad . + KEY_KP_DIVIDE = 331, // Key: Keypad / + KEY_KP_MULTIPLY = 332, // Key: Keypad * + KEY_KP_SUBTRACT = 333, // Key: Keypad - + KEY_KP_ADD = 334, // Key: Keypad + + KEY_KP_ENTER = 335, // Key: Keypad Enter + KEY_KP_EQUAL = 336, // Key: Keypad = + // Android key buttons + KEY_BACK = 4, // Key: Android back button + KEY_MENU = 5, // Key: Android menu button + KEY_VOLUME_UP = 24, // Key: Android volume up button + KEY_VOLUME_DOWN = 25 // Key: Android volume down button +} KeyboardKey; + +// Add backwards compatibility support for deprecated names +#define MOUSE_LEFT_BUTTON MOUSE_BUTTON_LEFT +#define MOUSE_RIGHT_BUTTON MOUSE_BUTTON_RIGHT +#define MOUSE_MIDDLE_BUTTON MOUSE_BUTTON_MIDDLE + +// Mouse buttons +typedef enum { + MOUSE_BUTTON_LEFT = 0, // Mouse button left + MOUSE_BUTTON_RIGHT = 1, // Mouse button right + MOUSE_BUTTON_MIDDLE = 2, // Mouse button middle (pressed wheel) + MOUSE_BUTTON_SIDE = 3, // Mouse button side (advanced mouse device) + MOUSE_BUTTON_EXTRA = 4, // Mouse button extra (advanced mouse device) + MOUSE_BUTTON_FORWARD = 5, // Mouse button forward (advanced mouse device) + MOUSE_BUTTON_BACK = 6, // Mouse button back (advanced mouse device) +} MouseButton; + +// Mouse cursor +typedef enum { + MOUSE_CURSOR_DEFAULT = 0, // Default pointer shape + MOUSE_CURSOR_ARROW = 1, // Arrow shape + MOUSE_CURSOR_IBEAM = 2, // Text writing cursor shape + MOUSE_CURSOR_CROSSHAIR = 3, // Cross shape + MOUSE_CURSOR_POINTING_HAND = 4, // Pointing hand cursor + MOUSE_CURSOR_RESIZE_EW = 5, // Horizontal resize/move arrow shape + MOUSE_CURSOR_RESIZE_NS = 6, // Vertical resize/move arrow shape + MOUSE_CURSOR_RESIZE_NWSE = 7, // Top-left to bottom-right diagonal resize/move arrow shape + MOUSE_CURSOR_RESIZE_NESW = 8, // The top-right to bottom-left diagonal resize/move arrow shape + MOUSE_CURSOR_RESIZE_ALL = 9, // The omnidirectional resize/move cursor shape + MOUSE_CURSOR_NOT_ALLOWED = 10 // The operation-not-allowed shape +} MouseCursor; + +// Gamepad buttons +typedef enum { + GAMEPAD_BUTTON_UNKNOWN = 0, // Unknown button, just for error checking + GAMEPAD_BUTTON_LEFT_FACE_UP, // Gamepad left DPAD up button + GAMEPAD_BUTTON_LEFT_FACE_RIGHT, // Gamepad left DPAD right button + GAMEPAD_BUTTON_LEFT_FACE_DOWN, // Gamepad left DPAD down button + GAMEPAD_BUTTON_LEFT_FACE_LEFT, // Gamepad left DPAD left button + GAMEPAD_BUTTON_RIGHT_FACE_UP, // Gamepad right button up (i.e. PS3: Triangle, Xbox: Y) + GAMEPAD_BUTTON_RIGHT_FACE_RIGHT, // Gamepad right button right (i.e. PS3: Circle, Xbox: B) + GAMEPAD_BUTTON_RIGHT_FACE_DOWN, // Gamepad right button down (i.e. PS3: Cross, Xbox: A) + GAMEPAD_BUTTON_RIGHT_FACE_LEFT, // Gamepad right button left (i.e. PS3: Square, Xbox: X) + GAMEPAD_BUTTON_LEFT_TRIGGER_1, // Gamepad top/back trigger left (first), it could be a trailing button + GAMEPAD_BUTTON_LEFT_TRIGGER_2, // Gamepad top/back trigger left (second), it could be a trailing button + GAMEPAD_BUTTON_RIGHT_TRIGGER_1, // Gamepad top/back trigger right (first), it could be a trailing button + GAMEPAD_BUTTON_RIGHT_TRIGGER_2, // Gamepad top/back trigger right (second), it could be a trailing button + GAMEPAD_BUTTON_MIDDLE_LEFT, // Gamepad center buttons, left one (i.e. PS3: Select) + GAMEPAD_BUTTON_MIDDLE, // Gamepad center buttons, middle one (i.e. PS3: PS, Xbox: XBOX) + GAMEPAD_BUTTON_MIDDLE_RIGHT, // Gamepad center buttons, right one (i.e. PS3: Start) + GAMEPAD_BUTTON_LEFT_THUMB, // Gamepad joystick pressed button left + GAMEPAD_BUTTON_RIGHT_THUMB // Gamepad joystick pressed button right +} GamepadButton; + +// Gamepad axis +typedef enum { + GAMEPAD_AXIS_LEFT_X = 0, // Gamepad left stick X axis + GAMEPAD_AXIS_LEFT_Y = 1, // Gamepad left stick Y axis + GAMEPAD_AXIS_RIGHT_X = 2, // Gamepad right stick X axis + GAMEPAD_AXIS_RIGHT_Y = 3, // Gamepad right stick Y axis + GAMEPAD_AXIS_LEFT_TRIGGER = 4, // Gamepad back trigger left, pressure level: [1..-1] + GAMEPAD_AXIS_RIGHT_TRIGGER = 5 // Gamepad back trigger right, pressure level: [1..-1] +} GamepadAxis; + +// Material map index +typedef enum { + MATERIAL_MAP_ALBEDO = 0, // Albedo material (same as: MATERIAL_MAP_DIFFUSE) + MATERIAL_MAP_METALNESS, // Metalness material (same as: MATERIAL_MAP_SPECULAR) + MATERIAL_MAP_NORMAL, // Normal material + MATERIAL_MAP_ROUGHNESS, // Roughness material + MATERIAL_MAP_OCCLUSION, // Ambient occlusion material + MATERIAL_MAP_EMISSION, // Emission material + MATERIAL_MAP_HEIGHT, // Heightmap material + MATERIAL_MAP_CUBEMAP, // Cubemap material (NOTE: Uses GL_TEXTURE_CUBE_MAP) + MATERIAL_MAP_IRRADIANCE, // Irradiance material (NOTE: Uses GL_TEXTURE_CUBE_MAP) + MATERIAL_MAP_PREFILTER, // Prefilter material (NOTE: Uses GL_TEXTURE_CUBE_MAP) + MATERIAL_MAP_BRDF // Brdf material +} MaterialMapIndex; + +#define MATERIAL_MAP_DIFFUSE MATERIAL_MAP_ALBEDO +#define MATERIAL_MAP_SPECULAR MATERIAL_MAP_METALNESS + +// Shader location index +typedef enum { + SHADER_LOC_VERTEX_POSITION = 0, // Shader location: vertex attribute: position + SHADER_LOC_VERTEX_TEXCOORD01, // Shader location: vertex attribute: texcoord01 + SHADER_LOC_VERTEX_TEXCOORD02, // Shader location: vertex attribute: texcoord02 + SHADER_LOC_VERTEX_NORMAL, // Shader location: vertex attribute: normal + SHADER_LOC_VERTEX_TANGENT, // Shader location: vertex attribute: tangent + SHADER_LOC_VERTEX_COLOR, // Shader location: vertex attribute: color + SHADER_LOC_MATRIX_MVP, // Shader location: matrix uniform: model-view-projection + SHADER_LOC_MATRIX_VIEW, // Shader location: matrix uniform: view (camera transform) + SHADER_LOC_MATRIX_PROJECTION, // Shader location: matrix uniform: projection + SHADER_LOC_MATRIX_MODEL, // Shader location: matrix uniform: model (transform) + SHADER_LOC_MATRIX_NORMAL, // Shader location: matrix uniform: normal + SHADER_LOC_VECTOR_VIEW, // Shader location: vector uniform: view + SHADER_LOC_COLOR_DIFFUSE, // Shader location: vector uniform: diffuse color + SHADER_LOC_COLOR_SPECULAR, // Shader location: vector uniform: specular color + SHADER_LOC_COLOR_AMBIENT, // Shader location: vector uniform: ambient color + SHADER_LOC_MAP_ALBEDO, // Shader location: sampler2d texture: albedo (same as: SHADER_LOC_MAP_DIFFUSE) + SHADER_LOC_MAP_METALNESS, // Shader location: sampler2d texture: metalness (same as: SHADER_LOC_MAP_SPECULAR) + SHADER_LOC_MAP_NORMAL, // Shader location: sampler2d texture: normal + SHADER_LOC_MAP_ROUGHNESS, // Shader location: sampler2d texture: roughness + SHADER_LOC_MAP_OCCLUSION, // Shader location: sampler2d texture: occlusion + SHADER_LOC_MAP_EMISSION, // Shader location: sampler2d texture: emission + SHADER_LOC_MAP_HEIGHT, // Shader location: sampler2d texture: height + SHADER_LOC_MAP_CUBEMAP, // Shader location: samplerCube texture: cubemap + SHADER_LOC_MAP_IRRADIANCE, // Shader location: samplerCube texture: irradiance + SHADER_LOC_MAP_PREFILTER, // Shader location: samplerCube texture: prefilter + SHADER_LOC_MAP_BRDF, // Shader location: sampler2d texture: brdf + SHADER_LOC_VERTEX_BONEIDS, // Shader location: vertex attribute: boneIds + SHADER_LOC_VERTEX_BONEWEIGHTS, // Shader location: vertex attribute: boneWeights + SHADER_LOC_BONE_MATRICES // Shader location: array of matrices uniform: boneMatrices +} ShaderLocationIndex; + +#define SHADER_LOC_MAP_DIFFUSE SHADER_LOC_MAP_ALBEDO +#define SHADER_LOC_MAP_SPECULAR SHADER_LOC_MAP_METALNESS + +// Shader uniform data type +typedef enum { + SHADER_UNIFORM_FLOAT = 0, // Shader uniform type: float + SHADER_UNIFORM_VEC2, // Shader uniform type: vec2 (2 float) + SHADER_UNIFORM_VEC3, // Shader uniform type: vec3 (3 float) + SHADER_UNIFORM_VEC4, // Shader uniform type: vec4 (4 float) + SHADER_UNIFORM_INT, // Shader uniform type: int + SHADER_UNIFORM_IVEC2, // Shader uniform type: ivec2 (2 int) + SHADER_UNIFORM_IVEC3, // Shader uniform type: ivec3 (3 int) + SHADER_UNIFORM_IVEC4, // Shader uniform type: ivec4 (4 int) + SHADER_UNIFORM_SAMPLER2D // Shader uniform type: sampler2d +} ShaderUniformDataType; + +// Shader attribute data types +typedef enum { + SHADER_ATTRIB_FLOAT = 0, // Shader attribute type: float + SHADER_ATTRIB_VEC2, // Shader attribute type: vec2 (2 float) + SHADER_ATTRIB_VEC3, // Shader attribute type: vec3 (3 float) + SHADER_ATTRIB_VEC4 // Shader attribute type: vec4 (4 float) +} ShaderAttributeDataType; + +// Pixel formats +// NOTE: Support depends on OpenGL version and platform +typedef enum { + PIXELFORMAT_UNCOMPRESSED_GRAYSCALE = 1, // 8 bit per pixel (no alpha) + PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA, // 8*2 bpp (2 channels) + PIXELFORMAT_UNCOMPRESSED_R5G6B5, // 16 bpp + PIXELFORMAT_UNCOMPRESSED_R8G8B8, // 24 bpp + PIXELFORMAT_UNCOMPRESSED_R5G5B5A1, // 16 bpp (1 bit alpha) + PIXELFORMAT_UNCOMPRESSED_R4G4B4A4, // 16 bpp (4 bit alpha) + PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, // 32 bpp + PIXELFORMAT_UNCOMPRESSED_R32, // 32 bpp (1 channel - float) + PIXELFORMAT_UNCOMPRESSED_R32G32B32, // 32*3 bpp (3 channels - float) + PIXELFORMAT_UNCOMPRESSED_R32G32B32A32, // 32*4 bpp (4 channels - float) + PIXELFORMAT_UNCOMPRESSED_R16, // 16 bpp (1 channel - half float) + PIXELFORMAT_UNCOMPRESSED_R16G16B16, // 16*3 bpp (3 channels - half float) + PIXELFORMAT_UNCOMPRESSED_R16G16B16A16, // 16*4 bpp (4 channels - half float) + PIXELFORMAT_COMPRESSED_DXT1_RGB, // 4 bpp (no alpha) + PIXELFORMAT_COMPRESSED_DXT1_RGBA, // 4 bpp (1 bit alpha) + PIXELFORMAT_COMPRESSED_DXT3_RGBA, // 8 bpp + PIXELFORMAT_COMPRESSED_DXT5_RGBA, // 8 bpp + PIXELFORMAT_COMPRESSED_ETC1_RGB, // 4 bpp + PIXELFORMAT_COMPRESSED_ETC2_RGB, // 4 bpp + PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA, // 8 bpp + PIXELFORMAT_COMPRESSED_PVRT_RGB, // 4 bpp + PIXELFORMAT_COMPRESSED_PVRT_RGBA, // 4 bpp + PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA, // 8 bpp + PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA // 2 bpp +} PixelFormat; + +// Texture parameters: filter mode +// NOTE 1: Filtering considers mipmaps if available in the texture +// NOTE 2: Filter is accordingly set for minification and magnification +typedef enum { + TEXTURE_FILTER_POINT = 0, // No filter, just pixel approximation + TEXTURE_FILTER_BILINEAR, // Linear filtering + TEXTURE_FILTER_TRILINEAR, // Trilinear filtering (linear with mipmaps) + TEXTURE_FILTER_ANISOTROPIC_4X, // Anisotropic filtering 4x + TEXTURE_FILTER_ANISOTROPIC_8X, // Anisotropic filtering 8x + TEXTURE_FILTER_ANISOTROPIC_16X, // Anisotropic filtering 16x +} TextureFilter; + +// Texture parameters: wrap mode +typedef enum { + TEXTURE_WRAP_REPEAT = 0, // Repeats texture in tiled mode + TEXTURE_WRAP_CLAMP, // Clamps texture to edge pixel in tiled mode + TEXTURE_WRAP_MIRROR_REPEAT, // Mirrors and repeats the texture in tiled mode + TEXTURE_WRAP_MIRROR_CLAMP // Mirrors and clamps to border the texture in tiled mode +} TextureWrap; + +// Cubemap layouts +typedef enum { + CUBEMAP_LAYOUT_AUTO_DETECT = 0, // Automatically detect layout type + CUBEMAP_LAYOUT_LINE_VERTICAL, // Layout is defined by a vertical line with faces + CUBEMAP_LAYOUT_LINE_HORIZONTAL, // Layout is defined by a horizontal line with faces + CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR, // Layout is defined by a 3x4 cross with cubemap faces + CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE // Layout is defined by a 4x3 cross with cubemap faces +} CubemapLayout; + +// Font type, defines generation method +typedef enum { + FONT_DEFAULT = 0, // Default font generation, anti-aliased + FONT_BITMAP, // Bitmap font generation, no anti-aliasing + FONT_SDF // SDF font generation, requires external shader +} FontType; + +// Color blending modes (pre-defined) +typedef enum { + BLEND_ALPHA = 0, // Blend textures considering alpha (default) + BLEND_ADDITIVE, // Blend textures adding colors + BLEND_MULTIPLIED, // Blend textures multiplying colors + BLEND_ADD_COLORS, // Blend textures adding colors (alternative) + BLEND_SUBTRACT_COLORS, // Blend textures subtracting colors (alternative) + BLEND_ALPHA_PREMULTIPLY, // Blend premultiplied textures considering alpha + BLEND_CUSTOM, // Blend textures using custom src/dst factors (use rlSetBlendFactors()) + BLEND_CUSTOM_SEPARATE // Blend textures using custom rgb/alpha separate src/dst factors (use rlSetBlendFactorsSeparate()) +} BlendMode; + +// Gesture +// NOTE: Provided as bit-wise flags to enable only desired gestures +typedef enum { + GESTURE_NONE = 0, // No gesture + GESTURE_TAP = 1, // Tap gesture + GESTURE_DOUBLETAP = 2, // Double tap gesture + GESTURE_HOLD = 4, // Hold gesture + GESTURE_DRAG = 8, // Drag gesture + GESTURE_SWIPE_RIGHT = 16, // Swipe right gesture + GESTURE_SWIPE_LEFT = 32, // Swipe left gesture + GESTURE_SWIPE_UP = 64, // Swipe up gesture + GESTURE_SWIPE_DOWN = 128, // Swipe down gesture + GESTURE_PINCH_IN = 256, // Pinch in gesture + GESTURE_PINCH_OUT = 512 // Pinch out gesture +} Gesture; + +// Camera system modes +typedef enum { + CAMERA_CUSTOM = 0, // Camera custom, controlled by user (UpdateCamera() does nothing) + CAMERA_FREE, // Camera free mode + CAMERA_ORBITAL, // Camera orbital, around target, zoom supported + CAMERA_FIRST_PERSON, // Camera first person + CAMERA_THIRD_PERSON // Camera third person +} CameraMode; + +// Camera projection +typedef enum { + CAMERA_PERSPECTIVE = 0, // Perspective projection + CAMERA_ORTHOGRAPHIC // Orthographic projection +} CameraProjection; + +// N-patch layout +typedef enum { + NPATCH_NINE_PATCH = 0, // Npatch layout: 3x3 tiles + NPATCH_THREE_PATCH_VERTICAL, // Npatch layout: 1x3 tiles + NPATCH_THREE_PATCH_HORIZONTAL // Npatch layout: 3x1 tiles +} NPatchLayout; + +// Callbacks to hook some internal functions +// WARNING: These callbacks are intended for advanced users +typedef void (*TraceLogCallback)(int logLevel, const char *text, va_list args); // Logging: Redirect trace log messages +typedef unsigned char *(*LoadFileDataCallback)(const char *fileName, int *dataSize); // FileIO: Load binary data +typedef bool (*SaveFileDataCallback)(const char *fileName, void *data, int dataSize); // FileIO: Save binary data +typedef char *(*LoadFileTextCallback)(const char *fileName); // FileIO: Load text data +typedef bool (*SaveFileTextCallback)(const char *fileName, char *text); // FileIO: Save text data + +//------------------------------------------------------------------------------------ +// Global Variables Definition +//------------------------------------------------------------------------------------ +// It's lonely here... + +//------------------------------------------------------------------------------------ +// Window and Graphics Device Functions (Module: core) +//------------------------------------------------------------------------------------ + +#if defined(__cplusplus) +extern "C" { // Prevents name mangling of functions +#endif + +// Window-related functions +RLAPI void InitWindow(int width, int height, const char *title); // Initialize window and OpenGL context +RLAPI void CloseWindow(void); // Close window and unload OpenGL context +RLAPI bool WindowShouldClose(void); // Check if application should close (KEY_ESCAPE pressed or windows close icon clicked) +RLAPI bool IsWindowReady(void); // Check if window has been initialized successfully +RLAPI bool IsWindowFullscreen(void); // Check if window is currently fullscreen +RLAPI bool IsWindowHidden(void); // Check if window is currently hidden +RLAPI bool IsWindowMinimized(void); // Check if window is currently minimized +RLAPI bool IsWindowMaximized(void); // Check if window is currently maximized +RLAPI bool IsWindowFocused(void); // Check if window is currently focused +RLAPI bool IsWindowResized(void); // Check if window has been resized last frame +RLAPI bool IsWindowState(unsigned int flag); // Check if one specific window flag is enabled +RLAPI void SetWindowState(unsigned int flags); // Set window configuration state using flags +RLAPI void ClearWindowState(unsigned int flags); // Clear window configuration state flags +RLAPI void ToggleFullscreen(void); // Toggle window state: fullscreen/windowed, resizes monitor to match window resolution +RLAPI void ToggleBorderlessWindowed(void); // Toggle window state: borderless windowed, resizes window to match monitor resolution +RLAPI void MaximizeWindow(void); // Set window state: maximized, if resizable +RLAPI void MinimizeWindow(void); // Set window state: minimized, if resizable +RLAPI void RestoreWindow(void); // Set window state: not minimized/maximized +RLAPI void SetWindowIcon(Image image); // Set icon for window (single image, RGBA 32bit) +RLAPI void SetWindowIcons(Image *images, int count); // Set icon for window (multiple images, RGBA 32bit) +RLAPI void SetWindowTitle(const char *title); // Set title for window +RLAPI void SetWindowPosition(int x, int y); // Set window position on screen +RLAPI void SetWindowMonitor(int monitor); // Set monitor for the current window +RLAPI void SetWindowMinSize(int width, int height); // Set window minimum dimensions (for FLAG_WINDOW_RESIZABLE) +RLAPI void SetWindowMaxSize(int width, int height); // Set window maximum dimensions (for FLAG_WINDOW_RESIZABLE) +RLAPI void SetWindowSize(int width, int height); // Set window dimensions +RLAPI void SetWindowOpacity(float opacity); // Set window opacity [0.0f..1.0f] +RLAPI void SetWindowFocused(void); // Set window focused +RLAPI void *GetWindowHandle(void); // Get native window handle +RLAPI int GetScreenWidth(void); // Get current screen width +RLAPI int GetScreenHeight(void); // Get current screen height +RLAPI int GetRenderWidth(void); // Get current render width (it considers HiDPI) +RLAPI int GetRenderHeight(void); // Get current render height (it considers HiDPI) +RLAPI int GetMonitorCount(void); // Get number of connected monitors +RLAPI int GetCurrentMonitor(void); // Get current monitor where window is placed +RLAPI Vector2 GetMonitorPosition(int monitor); // Get specified monitor position +RLAPI int GetMonitorWidth(int monitor); // Get specified monitor width (current video mode used by monitor) +RLAPI int GetMonitorHeight(int monitor); // Get specified monitor height (current video mode used by monitor) +RLAPI int GetMonitorPhysicalWidth(int monitor); // Get specified monitor physical width in millimetres +RLAPI int GetMonitorPhysicalHeight(int monitor); // Get specified monitor physical height in millimetres +RLAPI int GetMonitorRefreshRate(int monitor); // Get specified monitor refresh rate +RLAPI Vector2 GetWindowPosition(void); // Get window position XY on monitor +RLAPI Vector2 GetWindowScaleDPI(void); // Get window scale DPI factor +RLAPI const char *GetMonitorName(int monitor); // Get the human-readable, UTF-8 encoded name of the specified monitor +RLAPI void SetClipboardText(const char *text); // Set clipboard text content +RLAPI const char *GetClipboardText(void); // Get clipboard text content +RLAPI Image GetClipboardImage(void); // Get clipboard image content +RLAPI void EnableEventWaiting(void); // Enable waiting for events on EndDrawing(), no automatic event polling +RLAPI void DisableEventWaiting(void); // Disable waiting for events on EndDrawing(), automatic events polling + +// Cursor-related functions +RLAPI void ShowCursor(void); // Shows cursor +RLAPI void HideCursor(void); // Hides cursor +RLAPI bool IsCursorHidden(void); // Check if cursor is not visible +RLAPI void EnableCursor(void); // Enables cursor (unlock cursor) +RLAPI void DisableCursor(void); // Disables cursor (lock cursor) +RLAPI bool IsCursorOnScreen(void); // Check if cursor is on the screen + +// Drawing-related functions +RLAPI void ClearBackground(Color color); // Set background color (framebuffer clear color) +RLAPI void BeginDrawing(void); // Setup canvas (framebuffer) to start drawing +RLAPI void EndDrawing(void); // End canvas drawing and swap buffers (double buffering) +RLAPI void BeginMode2D(Camera2D camera); // Begin 2D mode with custom camera (2D) +RLAPI void EndMode2D(void); // Ends 2D mode with custom camera +RLAPI void BeginMode3D(Camera3D camera); // Begin 3D mode with custom camera (3D) +RLAPI void EndMode3D(void); // Ends 3D mode and returns to default 2D orthographic mode +RLAPI void BeginTextureMode(RenderTexture2D target); // Begin drawing to render texture +RLAPI void EndTextureMode(void); // Ends drawing to render texture +RLAPI void BeginShaderMode(Shader shader); // Begin custom shader drawing +RLAPI void EndShaderMode(void); // End custom shader drawing (use default shader) +RLAPI void BeginBlendMode(int mode); // Begin blending mode (alpha, additive, multiplied, subtract, custom) +RLAPI void EndBlendMode(void); // End blending mode (reset to default: alpha blending) +RLAPI void BeginScissorMode(int x, int y, int width, int height); // Begin scissor mode (define screen area for following drawing) +RLAPI void EndScissorMode(void); // End scissor mode +RLAPI void BeginVrStereoMode(VrStereoConfig config); // Begin stereo rendering (requires VR simulator) +RLAPI void EndVrStereoMode(void); // End stereo rendering (requires VR simulator) + +// VR stereo config functions for VR simulator +RLAPI VrStereoConfig LoadVrStereoConfig(VrDeviceInfo device); // Load VR stereo config for VR simulator device parameters +RLAPI void UnloadVrStereoConfig(VrStereoConfig config); // Unload VR stereo config + +// Shader management functions +// NOTE: Shader functionality is not available on OpenGL 1.1 +RLAPI Shader LoadShader(const char *vsFileName, const char *fsFileName); // Load shader from files and bind default locations +RLAPI Shader LoadShaderFromMemory(const char *vsCode, const char *fsCode); // Load shader from code strings and bind default locations +RLAPI bool IsShaderValid(Shader shader); // Check if a shader is valid (loaded on GPU) +RLAPI int GetShaderLocation(Shader shader, const char *uniformName); // Get shader uniform location +RLAPI int GetShaderLocationAttrib(Shader shader, const char *attribName); // Get shader attribute location +RLAPI void SetShaderValue(Shader shader, int locIndex, const void *value, int uniformType); // Set shader uniform value +RLAPI void SetShaderValueV(Shader shader, int locIndex, const void *value, int uniformType, int count); // Set shader uniform value vector +RLAPI void SetShaderValueMatrix(Shader shader, int locIndex, Matrix mat); // Set shader uniform value (matrix 4x4) +RLAPI void SetShaderValueTexture(Shader shader, int locIndex, Texture2D texture); // Set shader uniform value for texture (sampler2d) +RLAPI void UnloadShader(Shader shader); // Unload shader from GPU memory (VRAM) + +// Screen-space-related functions +#define GetMouseRay GetScreenToWorldRay // Compatibility hack for previous raylib versions +RLAPI Ray GetScreenToWorldRay(Vector2 position, Camera camera); // Get a ray trace from screen position (i.e mouse) +RLAPI Ray GetScreenToWorldRayEx(Vector2 position, Camera camera, int width, int height); // Get a ray trace from screen position (i.e mouse) in a viewport +RLAPI Vector2 GetWorldToScreen(Vector3 position, Camera camera); // Get the screen space position for a 3d world space position +RLAPI Vector2 GetWorldToScreenEx(Vector3 position, Camera camera, int width, int height); // Get size position for a 3d world space position +RLAPI Vector2 GetWorldToScreen2D(Vector2 position, Camera2D camera); // Get the screen space position for a 2d camera world space position +RLAPI Vector2 GetScreenToWorld2D(Vector2 position, Camera2D camera); // Get the world space position for a 2d camera screen space position +RLAPI Matrix GetCameraMatrix(Camera camera); // Get camera transform matrix (view matrix) +RLAPI Matrix GetCameraMatrix2D(Camera2D camera); // Get camera 2d transform matrix + +// Timing-related functions +RLAPI void SetTargetFPS(int fps); // Set target FPS (maximum) +RLAPI float GetFrameTime(void); // Get time in seconds for last frame drawn (delta time) +RLAPI double GetTime(void); // Get elapsed time in seconds since InitWindow() +RLAPI int GetFPS(void); // Get current FPS + +// Custom frame control functions +// NOTE: Those functions are intended for advanced users that want full control over the frame processing +// By default EndDrawing() does this job: draws everything + SwapScreenBuffer() + manage frame timing + PollInputEvents() +// To avoid that behaviour and control frame processes manually, enable in config.h: SUPPORT_CUSTOM_FRAME_CONTROL +RLAPI void SwapScreenBuffer(void); // Swap back buffer with front buffer (screen drawing) +RLAPI void PollInputEvents(void); // Register all input events +RLAPI void WaitTime(double seconds); // Wait for some time (halt program execution) + +// Random values generation functions +RLAPI void SetRandomSeed(unsigned int seed); // Set the seed for the random number generator +RLAPI int GetRandomValue(int min, int max); // Get a random value between min and max (both included) +RLAPI int *LoadRandomSequence(unsigned int count, int min, int max); // Load random values sequence, no values repeated +RLAPI void UnloadRandomSequence(int *sequence); // Unload random values sequence + +// Misc. functions +RLAPI void TakeScreenshot(const char *fileName); // Takes a screenshot of current screen (filename extension defines format) +RLAPI void SetConfigFlags(unsigned int flags); // Setup init configuration flags (view FLAGS) +RLAPI void OpenURL(const char *url); // Open URL with default system browser (if available) + +// NOTE: Following functions implemented in module [utils] +//------------------------------------------------------------------ +RLAPI void TraceLog(int logLevel, const char *text, ...); // Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR...) +RLAPI void SetTraceLogLevel(int logLevel); // Set the current threshold (minimum) log level +RLAPI void *MemAlloc(unsigned int size); // Internal memory allocator +RLAPI void *MemRealloc(void *ptr, unsigned int size); // Internal memory reallocator +RLAPI void MemFree(void *ptr); // Internal memory free + +// Set custom callbacks +// WARNING: Callbacks setup is intended for advanced users +RLAPI void SetTraceLogCallback(TraceLogCallback callback); // Set custom trace log +RLAPI void SetLoadFileDataCallback(LoadFileDataCallback callback); // Set custom file binary data loader +RLAPI void SetSaveFileDataCallback(SaveFileDataCallback callback); // Set custom file binary data saver +RLAPI void SetLoadFileTextCallback(LoadFileTextCallback callback); // Set custom file text data loader +RLAPI void SetSaveFileTextCallback(SaveFileTextCallback callback); // Set custom file text data saver + +// Files management functions +RLAPI unsigned char *LoadFileData(const char *fileName, int *dataSize); // Load file data as byte array (read) +RLAPI void UnloadFileData(unsigned char *data); // Unload file data allocated by LoadFileData() +RLAPI bool SaveFileData(const char *fileName, void *data, int dataSize); // Save data to file from byte array (write), returns true on success +RLAPI bool ExportDataAsCode(const unsigned char *data, int dataSize, const char *fileName); // Export data to code (.h), returns true on success +RLAPI char *LoadFileText(const char *fileName); // Load text data from file (read), returns a '\0' terminated string +RLAPI void UnloadFileText(char *text); // Unload file text data allocated by LoadFileText() +RLAPI bool SaveFileText(const char *fileName, char *text); // Save text data to file (write), string must be '\0' terminated, returns true on success +//------------------------------------------------------------------ + +// File system functions +RLAPI bool FileExists(const char *fileName); // Check if file exists +RLAPI bool DirectoryExists(const char *dirPath); // Check if a directory path exists +RLAPI bool IsFileExtension(const char *fileName, const char *ext); // Check file extension (including point: .png, .wav) +RLAPI int GetFileLength(const char *fileName); // Get file length in bytes (NOTE: GetFileSize() conflicts with windows.h) +RLAPI const char *GetFileExtension(const char *fileName); // Get pointer to extension for a filename string (includes dot: '.png') +RLAPI const char *GetFileName(const char *filePath); // Get pointer to filename for a path string +RLAPI const char *GetFileNameWithoutExt(const char *filePath); // Get filename string without extension (uses static string) +RLAPI const char *GetDirectoryPath(const char *filePath); // Get full path for a given fileName with path (uses static string) +RLAPI const char *GetPrevDirectoryPath(const char *dirPath); // Get previous directory path for a given path (uses static string) +RLAPI const char *GetWorkingDirectory(void); // Get current working directory (uses static string) +RLAPI const char *GetApplicationDirectory(void); // Get the directory of the running application (uses static string) +RLAPI int MakeDirectory(const char *dirPath); // Create directories (including full path requested), returns 0 on success +RLAPI bool ChangeDirectory(const char *dir); // Change working directory, return true on success +RLAPI bool IsPathFile(const char *path); // Check if a given path is a file or a directory +RLAPI bool IsFileNameValid(const char *fileName); // Check if fileName is valid for the platform/OS +RLAPI FilePathList LoadDirectoryFiles(const char *dirPath); // Load directory filepaths +RLAPI FilePathList LoadDirectoryFilesEx(const char *basePath, const char *filter, bool scanSubdirs); // Load directory filepaths with extension filtering and recursive directory scan. Use 'DIR' in the filter string to include directories in the result +RLAPI void UnloadDirectoryFiles(FilePathList files); // Unload filepaths +RLAPI bool IsFileDropped(void); // Check if a file has been dropped into window +RLAPI FilePathList LoadDroppedFiles(void); // Load dropped filepaths +RLAPI void UnloadDroppedFiles(FilePathList files); // Unload dropped filepaths +RLAPI long GetFileModTime(const char *fileName); // Get file modification time (last write time) + +// Compression/Encoding functionality +RLAPI unsigned char *CompressData(const unsigned char *data, int dataSize, int *compDataSize); // Compress data (DEFLATE algorithm), memory must be MemFree() +RLAPI unsigned char *DecompressData(const unsigned char *compData, int compDataSize, int *dataSize); // Decompress data (DEFLATE algorithm), memory must be MemFree() +RLAPI char *EncodeDataBase64(const unsigned char *data, int dataSize, int *outputSize); // Encode data to Base64 string, memory must be MemFree() +RLAPI unsigned char *DecodeDataBase64(const unsigned char *data, int *outputSize); // Decode Base64 string data, memory must be MemFree() +RLAPI unsigned int ComputeCRC32(unsigned char *data, int dataSize); // Compute CRC32 hash code +RLAPI unsigned int *ComputeMD5(unsigned char *data, int dataSize); // Compute MD5 hash code, returns static int[4] (16 bytes) +RLAPI unsigned int *ComputeSHA1(unsigned char *data, int dataSize); // Compute SHA1 hash code, returns static int[5] (20 bytes) + + +// Automation events functionality +RLAPI AutomationEventList LoadAutomationEventList(const char *fileName); // Load automation events list from file, NULL for empty list, capacity = MAX_AUTOMATION_EVENTS +RLAPI void UnloadAutomationEventList(AutomationEventList list); // Unload automation events list from file +RLAPI bool ExportAutomationEventList(AutomationEventList list, const char *fileName); // Export automation events list as text file +RLAPI void SetAutomationEventList(AutomationEventList *list); // Set automation event list to record to +RLAPI void SetAutomationEventBaseFrame(int frame); // Set automation event internal base frame to start recording +RLAPI void StartAutomationEventRecording(void); // Start recording automation events (AutomationEventList must be set) +RLAPI void StopAutomationEventRecording(void); // Stop recording automation events +RLAPI void PlayAutomationEvent(AutomationEvent event); // Play a recorded automation event + +//------------------------------------------------------------------------------------ +// Input Handling Functions (Module: core) +//------------------------------------------------------------------------------------ + +// Input-related functions: keyboard +RLAPI bool IsKeyPressed(int key); // Check if a key has been pressed once +RLAPI bool IsKeyPressedRepeat(int key); // Check if a key has been pressed again +RLAPI bool IsKeyDown(int key); // Check if a key is being pressed +RLAPI bool IsKeyReleased(int key); // Check if a key has been released once +RLAPI bool IsKeyUp(int key); // Check if a key is NOT being pressed +RLAPI int GetKeyPressed(void); // Get key pressed (keycode), call it multiple times for keys queued, returns 0 when the queue is empty +RLAPI int GetCharPressed(void); // Get char pressed (unicode), call it multiple times for chars queued, returns 0 when the queue is empty +RLAPI void SetExitKey(int key); // Set a custom key to exit program (default is ESC) + +// Input-related functions: gamepads +RLAPI bool IsGamepadAvailable(int gamepad); // Check if a gamepad is available +RLAPI const char *GetGamepadName(int gamepad); // Get gamepad internal name id +RLAPI bool IsGamepadButtonPressed(int gamepad, int button); // Check if a gamepad button has been pressed once +RLAPI bool IsGamepadButtonDown(int gamepad, int button); // Check if a gamepad button is being pressed +RLAPI bool IsGamepadButtonReleased(int gamepad, int button); // Check if a gamepad button has been released once +RLAPI bool IsGamepadButtonUp(int gamepad, int button); // Check if a gamepad button is NOT being pressed +RLAPI int GetGamepadButtonPressed(void); // Get the last gamepad button pressed +RLAPI int GetGamepadAxisCount(int gamepad); // Get gamepad axis count for a gamepad +RLAPI float GetGamepadAxisMovement(int gamepad, int axis); // Get axis movement value for a gamepad axis +RLAPI int SetGamepadMappings(const char *mappings); // Set internal gamepad mappings (SDL_GameControllerDB) +RLAPI void SetGamepadVibration(int gamepad, float leftMotor, float rightMotor, float duration); // Set gamepad vibration for both motors (duration in seconds) + +// Input-related functions: mouse +RLAPI bool IsMouseButtonPressed(int button); // Check if a mouse button has been pressed once +RLAPI bool IsMouseButtonDown(int button); // Check if a mouse button is being pressed +RLAPI bool IsMouseButtonReleased(int button); // Check if a mouse button has been released once +RLAPI bool IsMouseButtonUp(int button); // Check if a mouse button is NOT being pressed +RLAPI int GetMouseX(void); // Get mouse position X +RLAPI int GetMouseY(void); // Get mouse position Y +RLAPI Vector2 GetMousePosition(void); // Get mouse position XY +RLAPI Vector2 GetMouseDelta(void); // Get mouse delta between frames +RLAPI void SetMousePosition(int x, int y); // Set mouse position XY +RLAPI void SetMouseOffset(int offsetX, int offsetY); // Set mouse offset +RLAPI void SetMouseScale(float scaleX, float scaleY); // Set mouse scaling +RLAPI float GetMouseWheelMove(void); // Get mouse wheel movement for X or Y, whichever is larger +RLAPI Vector2 GetMouseWheelMoveV(void); // Get mouse wheel movement for both X and Y +RLAPI void SetMouseCursor(int cursor); // Set mouse cursor + +// Input-related functions: touch +RLAPI int GetTouchX(void); // Get touch position X for touch point 0 (relative to screen size) +RLAPI int GetTouchY(void); // Get touch position Y for touch point 0 (relative to screen size) +RLAPI Vector2 GetTouchPosition(int index); // Get touch position XY for a touch point index (relative to screen size) +RLAPI int GetTouchPointId(int index); // Get touch point identifier for given index +RLAPI int GetTouchPointCount(void); // Get number of touch points + +//------------------------------------------------------------------------------------ +// Gestures and Touch Handling Functions (Module: rgestures) +//------------------------------------------------------------------------------------ +RLAPI void SetGesturesEnabled(unsigned int flags); // Enable a set of gestures using flags +RLAPI bool IsGestureDetected(unsigned int gesture); // Check if a gesture have been detected +RLAPI int GetGestureDetected(void); // Get latest detected gesture +RLAPI float GetGestureHoldDuration(void); // Get gesture hold time in seconds +RLAPI Vector2 GetGestureDragVector(void); // Get gesture drag vector +RLAPI float GetGestureDragAngle(void); // Get gesture drag angle +RLAPI Vector2 GetGesturePinchVector(void); // Get gesture pinch delta +RLAPI float GetGesturePinchAngle(void); // Get gesture pinch angle + +//------------------------------------------------------------------------------------ +// Camera System Functions (Module: rcamera) +//------------------------------------------------------------------------------------ +RLAPI void UpdateCamera(Camera *camera, int mode); // Update camera position for selected mode +RLAPI void UpdateCameraPro(Camera *camera, Vector3 movement, Vector3 rotation, float zoom); // Update camera movement/rotation + +//------------------------------------------------------------------------------------ +// Basic Shapes Drawing Functions (Module: shapes) +//------------------------------------------------------------------------------------ +// Set texture and rectangle to be used on shapes drawing +// NOTE: It can be useful when using basic shapes and one single font, +// defining a font char white rectangle would allow drawing everything in a single draw call +RLAPI void SetShapesTexture(Texture2D texture, Rectangle source); // Set texture and rectangle to be used on shapes drawing +RLAPI Texture2D GetShapesTexture(void); // Get texture that is used for shapes drawing +RLAPI Rectangle GetShapesTextureRectangle(void); // Get texture source rectangle that is used for shapes drawing + +// Basic shapes drawing functions +RLAPI void DrawPixel(int posX, int posY, Color color); // Draw a pixel using geometry [Can be slow, use with care] +RLAPI void DrawPixelV(Vector2 position, Color color); // Draw a pixel using geometry (Vector version) [Can be slow, use with care] +RLAPI void DrawLine(int startPosX, int startPosY, int endPosX, int endPosY, Color color); // Draw a line +RLAPI void DrawLineV(Vector2 startPos, Vector2 endPos, Color color); // Draw a line (using gl lines) +RLAPI void DrawLineEx(Vector2 startPos, Vector2 endPos, float thick, Color color); // Draw a line (using triangles/quads) +RLAPI void DrawLineStrip(const Vector2 *points, int pointCount, Color color); // Draw lines sequence (using gl lines) +RLAPI void DrawLineBezier(Vector2 startPos, Vector2 endPos, float thick, Color color); // Draw line segment cubic-bezier in-out interpolation +RLAPI void DrawCircle(int centerX, int centerY, float radius, Color color); // Draw a color-filled circle +RLAPI void DrawCircleSector(Vector2 center, float radius, float startAngle, float endAngle, int segments, Color color); // Draw a piece of a circle +RLAPI void DrawCircleSectorLines(Vector2 center, float radius, float startAngle, float endAngle, int segments, Color color); // Draw circle sector outline +RLAPI void DrawCircleGradient(int centerX, int centerY, float radius, Color inner, Color outer); // Draw a gradient-filled circle +RLAPI void DrawCircleV(Vector2 center, float radius, Color color); // Draw a color-filled circle (Vector version) +RLAPI void DrawCircleLines(int centerX, int centerY, float radius, Color color); // Draw circle outline +RLAPI void DrawCircleLinesV(Vector2 center, float radius, Color color); // Draw circle outline (Vector version) +RLAPI void DrawEllipse(int centerX, int centerY, float radiusH, float radiusV, Color color); // Draw ellipse +RLAPI void DrawEllipseLines(int centerX, int centerY, float radiusH, float radiusV, Color color); // Draw ellipse outline +RLAPI void DrawRing(Vector2 center, float innerRadius, float outerRadius, float startAngle, float endAngle, int segments, Color color); // Draw ring +RLAPI void DrawRingLines(Vector2 center, float innerRadius, float outerRadius, float startAngle, float endAngle, int segments, Color color); // Draw ring outline +RLAPI void DrawRectangle(int posX, int posY, int width, int height, Color color); // Draw a color-filled rectangle +RLAPI void DrawRectangleV(Vector2 position, Vector2 size, Color color); // Draw a color-filled rectangle (Vector version) +RLAPI void DrawRectangleRec(Rectangle rec, Color color); // Draw a color-filled rectangle +RLAPI void DrawRectanglePro(Rectangle rec, Vector2 origin, float rotation, Color color); // Draw a color-filled rectangle with pro parameters +RLAPI void DrawRectangleGradientV(int posX, int posY, int width, int height, Color top, Color bottom); // Draw a vertical-gradient-filled rectangle +RLAPI void DrawRectangleGradientH(int posX, int posY, int width, int height, Color left, Color right); // Draw a horizontal-gradient-filled rectangle +RLAPI void DrawRectangleGradientEx(Rectangle rec, Color topLeft, Color bottomLeft, Color topRight, Color bottomRight); // Draw a gradient-filled rectangle with custom vertex colors +RLAPI void DrawRectangleLines(int posX, int posY, int width, int height, Color color); // Draw rectangle outline +RLAPI void DrawRectangleLinesEx(Rectangle rec, float lineThick, Color color); // Draw rectangle outline with extended parameters +RLAPI void DrawRectangleRounded(Rectangle rec, float roundness, int segments, Color color); // Draw rectangle with rounded edges +RLAPI void DrawRectangleRoundedLines(Rectangle rec, float roundness, int segments, Color color); // Draw rectangle lines with rounded edges +RLAPI void DrawRectangleRoundedLinesEx(Rectangle rec, float roundness, int segments, float lineThick, Color color); // Draw rectangle with rounded edges outline +RLAPI void DrawTriangle(Vector2 v1, Vector2 v2, Vector2 v3, Color color); // Draw a color-filled triangle (vertex in counter-clockwise order!) +RLAPI void DrawTriangleLines(Vector2 v1, Vector2 v2, Vector2 v3, Color color); // Draw triangle outline (vertex in counter-clockwise order!) +RLAPI void DrawTriangleFan(const Vector2 *points, int pointCount, Color color); // Draw a triangle fan defined by points (first vertex is the center) +RLAPI void DrawTriangleStrip(const Vector2 *points, int pointCount, Color color); // Draw a triangle strip defined by points +RLAPI void DrawPoly(Vector2 center, int sides, float radius, float rotation, Color color); // Draw a regular polygon (Vector version) +RLAPI void DrawPolyLines(Vector2 center, int sides, float radius, float rotation, Color color); // Draw a polygon outline of n sides +RLAPI void DrawPolyLinesEx(Vector2 center, int sides, float radius, float rotation, float lineThick, Color color); // Draw a polygon outline of n sides with extended parameters + +// Splines drawing functions +RLAPI void DrawSplineLinear(const Vector2 *points, int pointCount, float thick, Color color); // Draw spline: Linear, minimum 2 points +RLAPI void DrawSplineBasis(const Vector2 *points, int pointCount, float thick, Color color); // Draw spline: B-Spline, minimum 4 points +RLAPI void DrawSplineCatmullRom(const Vector2 *points, int pointCount, float thick, Color color); // Draw spline: Catmull-Rom, minimum 4 points +RLAPI void DrawSplineBezierQuadratic(const Vector2 *points, int pointCount, float thick, Color color); // Draw spline: Quadratic Bezier, minimum 3 points (1 control point): [p1, c2, p3, c4...] +RLAPI void DrawSplineBezierCubic(const Vector2 *points, int pointCount, float thick, Color color); // Draw spline: Cubic Bezier, minimum 4 points (2 control points): [p1, c2, c3, p4, c5, c6...] +RLAPI void DrawSplineSegmentLinear(Vector2 p1, Vector2 p2, float thick, Color color); // Draw spline segment: Linear, 2 points +RLAPI void DrawSplineSegmentBasis(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float thick, Color color); // Draw spline segment: B-Spline, 4 points +RLAPI void DrawSplineSegmentCatmullRom(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float thick, Color color); // Draw spline segment: Catmull-Rom, 4 points +RLAPI void DrawSplineSegmentBezierQuadratic(Vector2 p1, Vector2 c2, Vector2 p3, float thick, Color color); // Draw spline segment: Quadratic Bezier, 2 points, 1 control point +RLAPI void DrawSplineSegmentBezierCubic(Vector2 p1, Vector2 c2, Vector2 c3, Vector2 p4, float thick, Color color); // Draw spline segment: Cubic Bezier, 2 points, 2 control points + +// Spline segment point evaluation functions, for a given t [0.0f .. 1.0f] +RLAPI Vector2 GetSplinePointLinear(Vector2 startPos, Vector2 endPos, float t); // Get (evaluate) spline point: Linear +RLAPI Vector2 GetSplinePointBasis(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float t); // Get (evaluate) spline point: B-Spline +RLAPI Vector2 GetSplinePointCatmullRom(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float t); // Get (evaluate) spline point: Catmull-Rom +RLAPI Vector2 GetSplinePointBezierQuad(Vector2 p1, Vector2 c2, Vector2 p3, float t); // Get (evaluate) spline point: Quadratic Bezier +RLAPI Vector2 GetSplinePointBezierCubic(Vector2 p1, Vector2 c2, Vector2 c3, Vector2 p4, float t); // Get (evaluate) spline point: Cubic Bezier + +// Basic shapes collision detection functions +RLAPI bool CheckCollisionRecs(Rectangle rec1, Rectangle rec2); // Check collision between two rectangles +RLAPI bool CheckCollisionCircles(Vector2 center1, float radius1, Vector2 center2, float radius2); // Check collision between two circles +RLAPI bool CheckCollisionCircleRec(Vector2 center, float radius, Rectangle rec); // Check collision between circle and rectangle +RLAPI bool CheckCollisionCircleLine(Vector2 center, float radius, Vector2 p1, Vector2 p2); // Check if circle collides with a line created betweeen two points [p1] and [p2] +RLAPI bool CheckCollisionPointRec(Vector2 point, Rectangle rec); // Check if point is inside rectangle +RLAPI bool CheckCollisionPointCircle(Vector2 point, Vector2 center, float radius); // Check if point is inside circle +RLAPI bool CheckCollisionPointTriangle(Vector2 point, Vector2 p1, Vector2 p2, Vector2 p3); // Check if point is inside a triangle +RLAPI bool CheckCollisionPointLine(Vector2 point, Vector2 p1, Vector2 p2, int threshold); // Check if point belongs to line created between two points [p1] and [p2] with defined margin in pixels [threshold] +RLAPI bool CheckCollisionPointPoly(Vector2 point, const Vector2 *points, int pointCount); // Check if point is within a polygon described by array of vertices +RLAPI bool CheckCollisionLines(Vector2 startPos1, Vector2 endPos1, Vector2 startPos2, Vector2 endPos2, Vector2 *collisionPoint); // Check the collision between two lines defined by two points each, returns collision point by reference +RLAPI Rectangle GetCollisionRec(Rectangle rec1, Rectangle rec2); // Get collision rectangle for two rectangles collision + +//------------------------------------------------------------------------------------ +// Texture Loading and Drawing Functions (Module: textures) +//------------------------------------------------------------------------------------ + +// Image loading functions +// NOTE: These functions do not require GPU access +RLAPI Image LoadImage(const char *fileName); // Load image from file into CPU memory (RAM) +RLAPI Image LoadImageRaw(const char *fileName, int width, int height, int format, int headerSize); // Load image from RAW file data +RLAPI Image LoadImageAnim(const char *fileName, int *frames); // Load image sequence from file (frames appended to image.data) +RLAPI Image LoadImageAnimFromMemory(const char *fileType, const unsigned char *fileData, int dataSize, int *frames); // Load image sequence from memory buffer +RLAPI Image LoadImageFromMemory(const char *fileType, const unsigned char *fileData, int dataSize); // Load image from memory buffer, fileType refers to extension: i.e. '.png' +RLAPI Image LoadImageFromTexture(Texture2D texture); // Load image from GPU texture data +RLAPI Image LoadImageFromScreen(void); // Load image from screen buffer and (screenshot) +RLAPI bool IsImageValid(Image image); // Check if an image is valid (data and parameters) +RLAPI void UnloadImage(Image image); // Unload image from CPU memory (RAM) +RLAPI bool ExportImage(Image image, const char *fileName); // Export image data to file, returns true on success +RLAPI unsigned char *ExportImageToMemory(Image image, const char *fileType, int *fileSize); // Export image to memory buffer +RLAPI bool ExportImageAsCode(Image image, const char *fileName); // Export image as code file defining an array of bytes, returns true on success + +// Image generation functions +RLAPI Image GenImageColor(int width, int height, Color color); // Generate image: plain color +RLAPI Image GenImageGradientLinear(int width, int height, int direction, Color start, Color end); // Generate image: linear gradient, direction in degrees [0..360], 0=Vertical gradient +RLAPI Image GenImageGradientRadial(int width, int height, float density, Color inner, Color outer); // Generate image: radial gradient +RLAPI Image GenImageGradientSquare(int width, int height, float density, Color inner, Color outer); // Generate image: square gradient +RLAPI Image GenImageChecked(int width, int height, int checksX, int checksY, Color col1, Color col2); // Generate image: checked +RLAPI Image GenImageWhiteNoise(int width, int height, float factor); // Generate image: white noise +RLAPI Image GenImagePerlinNoise(int width, int height, int offsetX, int offsetY, float scale); // Generate image: perlin noise +RLAPI Image GenImageCellular(int width, int height, int tileSize); // Generate image: cellular algorithm, bigger tileSize means bigger cells +RLAPI Image GenImageText(int width, int height, const char *text); // Generate image: grayscale image from text data + +// Image manipulation functions +RLAPI Image ImageCopy(Image image); // Create an image duplicate (useful for transformations) +RLAPI Image ImageFromImage(Image image, Rectangle rec); // Create an image from another image piece +RLAPI Image ImageFromChannel(Image image, int selectedChannel); // Create an image from a selected channel of another image (GRAYSCALE) +RLAPI Image ImageText(const char *text, int fontSize, Color color); // Create an image from text (default font) +RLAPI Image ImageTextEx(Font font, const char *text, float fontSize, float spacing, Color tint); // Create an image from text (custom sprite font) +RLAPI void ImageFormat(Image *image, int newFormat); // Convert image data to desired format +RLAPI void ImageToPOT(Image *image, Color fill); // Convert image to POT (power-of-two) +RLAPI void ImageCrop(Image *image, Rectangle crop); // Crop an image to a defined rectangle +RLAPI void ImageAlphaCrop(Image *image, float threshold); // Crop image depending on alpha value +RLAPI void ImageAlphaClear(Image *image, Color color, float threshold); // Clear alpha channel to desired color +RLAPI void ImageAlphaMask(Image *image, Image alphaMask); // Apply alpha mask to image +RLAPI void ImageAlphaPremultiply(Image *image); // Premultiply alpha channel +RLAPI void ImageBlurGaussian(Image *image, int blurSize); // Apply Gaussian blur using a box blur approximation +RLAPI void ImageKernelConvolution(Image *image, const float *kernel, int kernelSize); // Apply custom square convolution kernel to image +RLAPI void ImageResize(Image *image, int newWidth, int newHeight); // Resize image (Bicubic scaling algorithm) +RLAPI void ImageResizeNN(Image *image, int newWidth,int newHeight); // Resize image (Nearest-Neighbor scaling algorithm) +RLAPI void ImageResizeCanvas(Image *image, int newWidth, int newHeight, int offsetX, int offsetY, Color fill); // Resize canvas and fill with color +RLAPI void ImageMipmaps(Image *image); // Compute all mipmap levels for a provided 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 +RLAPI void ImageColorInvert(Image *image); // Modify image color: invert +RLAPI void ImageColorGrayscale(Image *image); // Modify image color: grayscale +RLAPI void ImageColorContrast(Image *image, float contrast); // Modify image color: contrast (-100 to 100) +RLAPI void ImageColorBrightness(Image *image, int brightness); // Modify image color: brightness (-255 to 255) +RLAPI void ImageColorReplace(Image *image, Color color, Color replace); // Modify image color: replace color +RLAPI Color *LoadImageColors(Image image); // Load color data from image as a Color array (RGBA - 32bit) +RLAPI Color *LoadImagePalette(Image image, int maxPaletteSize, int *colorCount); // Load colors palette from image as a Color array (RGBA - 32bit) +RLAPI void UnloadImageColors(Color *colors); // Unload color data loaded with LoadImageColors() +RLAPI void UnloadImagePalette(Color *colors); // Unload colors palette loaded with LoadImagePalette() +RLAPI Rectangle GetImageAlphaBorder(Image image, float threshold); // Get image alpha border rectangle +RLAPI Color GetImageColor(Image image, int x, int y); // Get image pixel color at (x, y) position + +// Image drawing functions +// NOTE: Image software-rendering functions (CPU) +RLAPI void ImageClearBackground(Image *dst, Color color); // Clear image background with given color +RLAPI void ImageDrawPixel(Image *dst, int posX, int posY, Color color); // Draw pixel within an image +RLAPI void ImageDrawPixelV(Image *dst, Vector2 position, Color color); // Draw pixel within an image (Vector version) +RLAPI void ImageDrawLine(Image *dst, int startPosX, int startPosY, int endPosX, int endPosY, Color color); // Draw line within an image +RLAPI void ImageDrawLineV(Image *dst, Vector2 start, Vector2 end, Color color); // Draw line within an image (Vector version) +RLAPI void ImageDrawLineEx(Image *dst, Vector2 start, Vector2 end, int thick, Color color); // Draw a line defining thickness within an image +RLAPI void ImageDrawCircle(Image *dst, int centerX, int centerY, int radius, Color color); // Draw a filled circle within an image +RLAPI void ImageDrawCircleV(Image *dst, Vector2 center, int radius, Color color); // Draw a filled circle within an image (Vector version) +RLAPI void ImageDrawCircleLines(Image *dst, int centerX, int centerY, int radius, Color color); // Draw circle outline within an image +RLAPI void ImageDrawCircleLinesV(Image *dst, Vector2 center, int radius, Color color); // Draw circle outline within an image (Vector version) +RLAPI void ImageDrawRectangle(Image *dst, int posX, int posY, int width, int height, Color color); // Draw rectangle within an image +RLAPI void ImageDrawRectangleV(Image *dst, Vector2 position, Vector2 size, Color color); // Draw rectangle within an image (Vector version) +RLAPI void ImageDrawRectangleRec(Image *dst, Rectangle rec, Color color); // Draw rectangle within an image +RLAPI void ImageDrawRectangleLines(Image *dst, Rectangle rec, int thick, Color color); // Draw rectangle lines within an image +RLAPI void ImageDrawTriangle(Image *dst, Vector2 v1, Vector2 v2, Vector2 v3, Color color); // Draw triangle within an image +RLAPI void ImageDrawTriangleEx(Image *dst, Vector2 v1, Vector2 v2, Vector2 v3, Color c1, Color c2, Color c3); // Draw triangle with interpolated colors within an image +RLAPI void ImageDrawTriangleLines(Image *dst, Vector2 v1, Vector2 v2, Vector2 v3, Color color); // Draw triangle outline within an image +RLAPI void ImageDrawTriangleFan(Image *dst, Vector2 *points, int pointCount, Color color); // Draw a triangle fan defined by points within an image (first vertex is the center) +RLAPI void ImageDrawTriangleStrip(Image *dst, Vector2 *points, int pointCount, Color color); // Draw a triangle strip defined by points within an image +RLAPI void ImageDraw(Image *dst, Image src, Rectangle srcRec, Rectangle dstRec, Color tint); // Draw a source image within a destination image (tint applied to source) +RLAPI void ImageDrawText(Image *dst, const char *text, int posX, int posY, int fontSize, Color color); // Draw text (using default font) within an image (destination) +RLAPI void ImageDrawTextEx(Image *dst, Font font, const char *text, Vector2 position, float fontSize, float spacing, Color tint); // Draw text (custom sprite font) within an image (destination) + +// Texture loading functions +// NOTE: These functions require GPU access +RLAPI Texture2D LoadTexture(const char *fileName); // Load texture from file into GPU memory (VRAM) +RLAPI Texture2D LoadTextureFromImage(Image image); // Load texture from image data +RLAPI TextureCubemap LoadTextureCubemap(Image image, int layout); // Load cubemap from image, multiple image cubemap layouts supported +RLAPI RenderTexture2D LoadRenderTexture(int width, int height); // Load texture for rendering (framebuffer) +RLAPI bool IsTextureValid(Texture2D texture); // Check if a texture is valid (loaded in GPU) +RLAPI void UnloadTexture(Texture2D texture); // Unload texture from GPU memory (VRAM) +RLAPI bool IsRenderTextureValid(RenderTexture2D target); // Check if a render texture is valid (loaded in GPU) +RLAPI void UnloadRenderTexture(RenderTexture2D target); // Unload render texture from GPU memory (VRAM) +RLAPI void UpdateTexture(Texture2D texture, const void *pixels); // Update GPU texture with new data +RLAPI void UpdateTextureRec(Texture2D texture, Rectangle rec, const void *pixels); // Update GPU texture rectangle with new data + +// Texture configuration functions +RLAPI void GenTextureMipmaps(Texture2D *texture); // Generate GPU mipmaps for a texture +RLAPI void SetTextureFilter(Texture2D texture, int filter); // Set texture scaling filter mode +RLAPI void SetTextureWrap(Texture2D texture, int wrap); // Set texture wrapping mode + +// Texture drawing functions +RLAPI void DrawTexture(Texture2D texture, int posX, int posY, Color tint); // Draw a Texture2D +RLAPI void DrawTextureV(Texture2D texture, Vector2 position, Color tint); // Draw a Texture2D with position defined as Vector2 +RLAPI void DrawTextureEx(Texture2D texture, Vector2 position, float rotation, float scale, Color tint); // Draw a Texture2D with extended parameters +RLAPI void DrawTextureRec(Texture2D texture, Rectangle source, Vector2 position, Color tint); // Draw a part of a texture defined by a rectangle +RLAPI void DrawTexturePro(Texture2D texture, Rectangle source, Rectangle dest, Vector2 origin, float rotation, Color tint); // Draw a part of a texture defined by a rectangle with 'pro' parameters +RLAPI void DrawTextureNPatch(Texture2D texture, NPatchInfo nPatchInfo, Rectangle dest, Vector2 origin, float rotation, Color tint); // Draws a texture (or part of it) that stretches or shrinks nicely + +// Color/pixel related functions +RLAPI bool ColorIsEqual(Color col1, Color col2); // Check if two colors are equal +RLAPI Color Fade(Color color, float alpha); // Get color with alpha applied, alpha goes from 0.0f to 1.0f +RLAPI int ColorToInt(Color color); // Get hexadecimal value for a Color (0xRRGGBBAA) +RLAPI Vector4 ColorNormalize(Color color); // Get Color normalized as float [0..1] +RLAPI Color ColorFromNormalized(Vector4 normalized); // Get Color from normalized values [0..1] +RLAPI Vector3 ColorToHSV(Color color); // Get HSV values for a Color, hue [0..360], saturation/value [0..1] +RLAPI Color ColorFromHSV(float hue, float saturation, float value); // Get a Color from HSV values, hue [0..360], saturation/value [0..1] +RLAPI Color ColorTint(Color color, Color tint); // Get color multiplied with another color +RLAPI Color ColorBrightness(Color color, float factor); // Get color with brightness correction, brightness factor goes from -1.0f to 1.0f +RLAPI Color ColorContrast(Color color, float contrast); // Get color with contrast correction, contrast values between -1.0f and 1.0f +RLAPI Color ColorAlpha(Color color, float alpha); // Get color with alpha applied, alpha goes from 0.0f to 1.0f +RLAPI Color ColorAlphaBlend(Color dst, Color src, Color tint); // Get src alpha-blended into dst color with tint +RLAPI Color ColorLerp(Color color1, Color color2, float factor); // Get color lerp interpolation between two colors, factor [0.0f..1.0f] +RLAPI Color GetColor(unsigned int hexValue); // Get Color structure from hexadecimal value +RLAPI Color GetPixelColor(void *srcPtr, int format); // Get Color from a source pixel pointer of certain format +RLAPI void SetPixelColor(void *dstPtr, Color color, int format); // Set color formatted into destination pixel pointer +RLAPI int GetPixelDataSize(int width, int height, int format); // Get pixel data size in bytes for certain format + +//------------------------------------------------------------------------------------ +// Font Loading and Text Drawing Functions (Module: text) +//------------------------------------------------------------------------------------ + +// Font loading/unloading functions +RLAPI Font GetFontDefault(void); // Get the default Font +RLAPI Font LoadFont(const char *fileName); // Load font from file into GPU memory (VRAM) +RLAPI Font LoadFontEx(const char *fileName, int fontSize, int *codepoints, int codepointCount); // Load font from file with extended parameters, use NULL for codepoints and 0 for codepointCount to load the default character set, font size is provided in pixels height +RLAPI Font LoadFontFromImage(Image image, Color key, int firstChar); // Load font from Image (XNA style) +RLAPI Font LoadFontFromMemory(const char *fileType, const unsigned char *fileData, int dataSize, int fontSize, int *codepoints, int codepointCount); // Load font from memory buffer, fileType refers to extension: i.e. '.ttf' +RLAPI bool IsFontValid(Font font); // Check if a font is valid (font data loaded, WARNING: GPU texture not checked) +RLAPI GlyphInfo *LoadFontData(const unsigned char *fileData, int dataSize, int fontSize, int *codepoints, int codepointCount, int type); // Load font data for further use +RLAPI Image GenImageFontAtlas(const GlyphInfo *glyphs, Rectangle **glyphRecs, int glyphCount, int fontSize, int padding, int packMethod); // Generate image font atlas using chars info +RLAPI void UnloadFontData(GlyphInfo *glyphs, int glyphCount); // Unload font chars info data (RAM) +RLAPI void UnloadFont(Font font); // Unload font from GPU memory (VRAM) +RLAPI bool ExportFontAsCode(Font font, const char *fileName); // Export font as code file, returns true on success + +// Text drawing functions +RLAPI void DrawFPS(int posX, int posY); // Draw current FPS +RLAPI void DrawText(const char *text, int posX, int posY, int fontSize, Color color); // Draw text (using default font) +RLAPI void DrawTextEx(Font font, const char *text, Vector2 position, float fontSize, float spacing, Color tint); // Draw text using font and additional parameters +RLAPI void DrawTextPro(Font font, const char *text, Vector2 position, Vector2 origin, float rotation, float fontSize, float spacing, Color tint); // Draw text using Font and pro parameters (rotation) +RLAPI void DrawTextCodepoint(Font font, int codepoint, Vector2 position, float fontSize, Color tint); // Draw one character (codepoint) +RLAPI void DrawTextCodepoints(Font font, const int *codepoints, int codepointCount, Vector2 position, float fontSize, float spacing, Color tint); // Draw multiple character (codepoint) + +// Text font info functions +RLAPI void SetTextLineSpacing(int spacing); // Set vertical line spacing when drawing with line-breaks +RLAPI int MeasureText(const char *text, int fontSize); // Measure string width for default font +RLAPI Vector2 MeasureTextEx(Font font, const char *text, float fontSize, float spacing); // Measure string size for Font +RLAPI int GetGlyphIndex(Font font, int codepoint); // Get glyph index position in font for a codepoint (unicode character), fallback to '?' if not found +RLAPI GlyphInfo GetGlyphInfo(Font font, int codepoint); // Get glyph font info data for a codepoint (unicode character), fallback to '?' if not found +RLAPI Rectangle GetGlyphAtlasRec(Font font, int codepoint); // Get glyph rectangle in font atlas for a codepoint (unicode character), fallback to '?' if not found + +// Text codepoints management functions (unicode characters) +RLAPI char *LoadUTF8(const int *codepoints, int length); // Load UTF-8 text encoded from codepoints array +RLAPI void UnloadUTF8(char *text); // Unload UTF-8 text encoded from codepoints array +RLAPI int *LoadCodepoints(const char *text, int *count); // Load all codepoints from a UTF-8 text string, codepoints count returned by parameter +RLAPI void UnloadCodepoints(int *codepoints); // Unload codepoints data from memory +RLAPI int GetCodepointCount(const char *text); // Get total number of codepoints in a UTF-8 encoded string +RLAPI int GetCodepoint(const char *text, int *codepointSize); // Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure +RLAPI int GetCodepointNext(const char *text, int *codepointSize); // Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure +RLAPI int GetCodepointPrevious(const char *text, int *codepointSize); // Get previous codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure +RLAPI const char *CodepointToUTF8(int codepoint, int *utf8Size); // Encode one codepoint into UTF-8 byte array (array length returned as parameter) + +// Text strings management functions (no UTF-8 strings, only byte chars) +// NOTE: Some strings allocate memory internally for returned strings, just be careful! +RLAPI int TextCopy(char *dst, const char *src); // Copy one string to another, returns bytes copied +RLAPI bool TextIsEqual(const char *text1, const char *text2); // Check if two text string are equal +RLAPI unsigned int TextLength(const char *text); // Get text length, checks for '\0' ending +RLAPI const char *TextFormat(const char *text, ...); // Text formatting with variables (sprintf() style) +RLAPI const char *TextSubtext(const char *text, int position, int length); // Get a piece of a text string +RLAPI char *TextReplace(const char *text, const char *replace, const char *by); // Replace text string (WARNING: memory must be freed!) +RLAPI char *TextInsert(const char *text, const char *insert, int position); // Insert text in a position (WARNING: memory must be freed!) +RLAPI const char *TextJoin(const char **textList, int count, const char *delimiter); // Join text strings with delimiter +RLAPI const char **TextSplit(const char *text, char delimiter, int *count); // Split text into multiple strings +RLAPI void TextAppend(char *text, const char *append, int *position); // Append text at specific position and move cursor! +RLAPI int TextFindIndex(const char *text, const char *find); // Find first text occurrence within a string +RLAPI const char *TextToUpper(const char *text); // Get upper case version of provided string +RLAPI const char *TextToLower(const char *text); // Get lower case version of provided string +RLAPI const char *TextToPascal(const char *text); // Get Pascal case notation version of provided string +RLAPI const char *TextToSnake(const char *text); // Get Snake case notation version of provided string +RLAPI const char *TextToCamel(const char *text); // Get Camel case notation version of provided string + +RLAPI int TextToInteger(const char *text); // Get integer value from text (negative values not supported) +RLAPI float TextToFloat(const char *text); // Get float value from text (negative values not supported) + +//------------------------------------------------------------------------------------ +// Basic 3d Shapes Drawing Functions (Module: models) +//------------------------------------------------------------------------------------ + +// Basic geometric 3D shapes drawing functions +RLAPI void DrawLine3D(Vector3 startPos, Vector3 endPos, Color color); // Draw a line in 3D world space +RLAPI void DrawPoint3D(Vector3 position, Color color); // Draw a point in 3D space, actually a small line +RLAPI void DrawCircle3D(Vector3 center, float radius, Vector3 rotationAxis, float rotationAngle, Color color); // Draw a circle in 3D world space +RLAPI void DrawTriangle3D(Vector3 v1, Vector3 v2, Vector3 v3, Color color); // Draw a color-filled triangle (vertex in counter-clockwise order!) +RLAPI void DrawTriangleStrip3D(const Vector3 *points, int pointCount, Color color); // Draw a triangle strip defined by points +RLAPI void DrawCube(Vector3 position, float width, float height, float length, Color color); // Draw cube +RLAPI void DrawCubeV(Vector3 position, Vector3 size, Color color); // Draw cube (Vector version) +RLAPI void DrawCubeWires(Vector3 position, float width, float height, float length, Color color); // Draw cube wires +RLAPI void DrawCubeWiresV(Vector3 position, Vector3 size, Color color); // Draw cube wires (Vector version) +RLAPI void DrawSphere(Vector3 centerPos, float radius, Color color); // Draw sphere +RLAPI void DrawSphereEx(Vector3 centerPos, float radius, int rings, int slices, Color color); // Draw sphere with extended parameters +RLAPI void DrawSphereWires(Vector3 centerPos, float radius, int rings, int slices, Color color); // Draw sphere wires +RLAPI void DrawCylinder(Vector3 position, float radiusTop, float radiusBottom, float height, int slices, Color color); // Draw a cylinder/cone +RLAPI void DrawCylinderEx(Vector3 startPos, Vector3 endPos, float startRadius, float endRadius, int sides, Color color); // Draw a cylinder with base at startPos and top at endPos +RLAPI void DrawCylinderWires(Vector3 position, float radiusTop, float radiusBottom, float height, int slices, Color color); // Draw a cylinder/cone wires +RLAPI void DrawCylinderWiresEx(Vector3 startPos, Vector3 endPos, float startRadius, float endRadius, int sides, Color color); // Draw a cylinder wires with base at startPos and top at endPos +RLAPI void DrawCapsule(Vector3 startPos, Vector3 endPos, float radius, int slices, int rings, Color color); // Draw a capsule with the center of its sphere caps at startPos and endPos +RLAPI void DrawCapsuleWires(Vector3 startPos, Vector3 endPos, float radius, int slices, int rings, Color color); // Draw capsule wireframe with the center of its sphere caps at startPos and endPos +RLAPI void DrawPlane(Vector3 centerPos, Vector2 size, Color color); // Draw a plane XZ +RLAPI void DrawRay(Ray ray, Color color); // Draw a ray line +RLAPI void DrawGrid(int slices, float spacing); // Draw a grid (centered at (0, 0, 0)) + +//------------------------------------------------------------------------------------ +// Model 3d Loading and Drawing Functions (Module: models) +//------------------------------------------------------------------------------------ + +// Model management functions +RLAPI Model LoadModel(const char *fileName); // Load model from files (meshes and materials) +RLAPI Model LoadModelFromMesh(Mesh mesh); // Load model from generated mesh (default material) +RLAPI bool IsModelValid(Model model); // Check if a model is valid (loaded in GPU, VAO/VBOs) +RLAPI void UnloadModel(Model model); // Unload model (including meshes) from memory (RAM and/or VRAM) +RLAPI BoundingBox GetModelBoundingBox(Model model); // Compute model bounding box limits (considers all meshes) + +// Model drawing functions +RLAPI void DrawModel(Model model, Vector3 position, float scale, Color tint); // Draw a model (with texture if set) +RLAPI void DrawModelEx(Model model, Vector3 position, Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color tint); // Draw a model with extended parameters +RLAPI void DrawModelWires(Model model, Vector3 position, float scale, Color tint); // Draw a model wires (with texture if set) +RLAPI void DrawModelWiresEx(Model model, Vector3 position, Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color tint); // Draw a model wires (with texture if set) with extended parameters +RLAPI void DrawModelPoints(Model model, Vector3 position, float scale, Color tint); // Draw a model as points +RLAPI void DrawModelPointsEx(Model model, Vector3 position, Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color tint); // Draw a model as points with extended parameters +RLAPI void DrawBoundingBox(BoundingBox box, Color color); // Draw bounding box (wires) +RLAPI void DrawBillboard(Camera camera, Texture2D texture, Vector3 position, float scale, Color tint); // Draw a billboard texture +RLAPI void DrawBillboardRec(Camera camera, Texture2D texture, Rectangle source, Vector3 position, Vector2 size, Color tint); // Draw a billboard texture defined by source +RLAPI void DrawBillboardPro(Camera camera, Texture2D texture, Rectangle source, Vector3 position, Vector3 up, Vector2 size, Vector2 origin, float rotation, Color tint); // Draw a billboard texture defined by source and rotation + +// Mesh management functions +RLAPI void UploadMesh(Mesh *mesh, bool dynamic); // Upload mesh vertex data in GPU and provide VAO/VBO ids +RLAPI void UpdateMeshBuffer(Mesh mesh, int index, const void *data, int dataSize, int offset); // Update mesh vertex data in GPU for a specific buffer index +RLAPI void UnloadMesh(Mesh mesh); // Unload mesh data from CPU and GPU +RLAPI void DrawMesh(Mesh mesh, Material material, Matrix transform); // Draw a 3d mesh with material and transform +RLAPI void DrawMeshInstanced(Mesh mesh, Material material, const Matrix *transforms, int instances); // Draw multiple mesh instances with material and different transforms +RLAPI BoundingBox GetMeshBoundingBox(Mesh mesh); // Compute mesh bounding box limits +RLAPI void GenMeshTangents(Mesh *mesh); // Compute mesh tangents +RLAPI bool ExportMesh(Mesh mesh, const char *fileName); // Export mesh data to file, returns true on success +RLAPI bool ExportMeshAsCode(Mesh mesh, const char *fileName); // Export mesh as code file (.h) defining multiple arrays of vertex attributes + +// Mesh generation functions +RLAPI Mesh GenMeshPoly(int sides, float radius); // Generate polygonal mesh +RLAPI Mesh GenMeshPlane(float width, float length, int resX, int resZ); // Generate plane mesh (with subdivisions) +RLAPI Mesh GenMeshCube(float width, float height, float length); // Generate cuboid mesh +RLAPI Mesh GenMeshSphere(float radius, int rings, int slices); // Generate sphere mesh (standard sphere) +RLAPI Mesh GenMeshHemiSphere(float radius, int rings, int slices); // Generate half-sphere mesh (no bottom cap) +RLAPI Mesh GenMeshCylinder(float radius, float height, int slices); // Generate cylinder mesh +RLAPI Mesh GenMeshCone(float radius, float height, int slices); // Generate cone/pyramid mesh +RLAPI Mesh GenMeshTorus(float radius, float size, int radSeg, int sides); // Generate torus mesh +RLAPI Mesh GenMeshKnot(float radius, float size, int radSeg, int sides); // Generate trefoil knot mesh +RLAPI Mesh GenMeshHeightmap(Image heightmap, Vector3 size); // Generate heightmap mesh from image data +RLAPI Mesh GenMeshCubicmap(Image cubicmap, Vector3 cubeSize); // Generate cubes-based map mesh from image data + +// Material loading/unloading functions +RLAPI Material *LoadMaterials(const char *fileName, int *materialCount); // Load materials from model file +RLAPI Material LoadMaterialDefault(void); // Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps) +RLAPI bool IsMaterialValid(Material material); // Check if a material is valid (shader assigned, map textures loaded in GPU) +RLAPI void UnloadMaterial(Material material); // Unload material from GPU memory (VRAM) +RLAPI void SetMaterialTexture(Material *material, int mapType, Texture2D texture); // Set texture for a material map type (MATERIAL_MAP_DIFFUSE, MATERIAL_MAP_SPECULAR...) +RLAPI void SetModelMeshMaterial(Model *model, int meshId, int materialId); // Set material for a mesh + +// Model animations loading/unloading functions +RLAPI ModelAnimation *LoadModelAnimations(const char *fileName, int *animCount); // Load model animations from file +RLAPI void UpdateModelAnimation(Model model, ModelAnimation anim, int frame); // Update model animation pose (CPU) +RLAPI void UpdateModelAnimationBones(Model model, ModelAnimation anim, int frame); // Update model animation mesh bone matrices (GPU skinning) +RLAPI void UnloadModelAnimation(ModelAnimation anim); // Unload animation data +RLAPI void UnloadModelAnimations(ModelAnimation *animations, int animCount); // Unload animation array data +RLAPI bool IsModelAnimationValid(Model model, ModelAnimation anim); // Check model animation skeleton match + +// Collision detection functions +RLAPI bool CheckCollisionSpheres(Vector3 center1, float radius1, Vector3 center2, float radius2); // Check collision between two spheres +RLAPI bool CheckCollisionBoxes(BoundingBox box1, BoundingBox box2); // Check collision between two bounding boxes +RLAPI bool CheckCollisionBoxSphere(BoundingBox box, Vector3 center, float radius); // Check collision between box and sphere +RLAPI RayCollision GetRayCollisionSphere(Ray ray, Vector3 center, float radius); // Get collision info between ray and sphere +RLAPI RayCollision GetRayCollisionBox(Ray ray, BoundingBox box); // Get collision info between ray and box +RLAPI RayCollision GetRayCollisionMesh(Ray ray, Mesh mesh, Matrix transform); // Get collision info between ray and mesh +RLAPI RayCollision GetRayCollisionTriangle(Ray ray, Vector3 p1, Vector3 p2, Vector3 p3); // Get collision info between ray and triangle +RLAPI RayCollision GetRayCollisionQuad(Ray ray, Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4); // Get collision info between ray and quad + +//------------------------------------------------------------------------------------ +// Audio Loading and Playing Functions (Module: audio) +//------------------------------------------------------------------------------------ +typedef void (*AudioCallback)(void *bufferData, unsigned int frames); + +// Audio device management functions +RLAPI void InitAudioDevice(void); // Initialize audio device and context +RLAPI void CloseAudioDevice(void); // Close the audio device and context +RLAPI bool IsAudioDeviceReady(void); // Check if audio device has been initialized successfully +RLAPI void SetMasterVolume(float volume); // Set master volume (listener) +RLAPI float GetMasterVolume(void); // Get master volume (listener) + +// Wave/Sound loading/unloading functions +RLAPI Wave LoadWave(const char *fileName); // Load wave data from file +RLAPI Wave LoadWaveFromMemory(const char *fileType, const unsigned char *fileData, int dataSize); // Load wave from memory buffer, fileType refers to extension: i.e. '.wav' +RLAPI bool IsWaveValid(Wave wave); // Checks if wave data is valid (data loaded and parameters) +RLAPI Sound LoadSound(const char *fileName); // Load sound from file +RLAPI Sound LoadSoundFromWave(Wave wave); // Load sound from wave data +RLAPI Sound LoadSoundAlias(Sound source); // Create a new sound that shares the same sample data as the source sound, does not own the sound data +RLAPI bool IsSoundValid(Sound sound); // Checks if a sound is valid (data loaded and buffers initialized) +RLAPI void UpdateSound(Sound sound, const void *data, int sampleCount); // Update sound buffer with new data +RLAPI void UnloadWave(Wave wave); // Unload wave data +RLAPI void UnloadSound(Sound sound); // Unload sound +RLAPI void UnloadSoundAlias(Sound alias); // Unload a sound alias (does not deallocate sample data) +RLAPI bool ExportWave(Wave wave, const char *fileName); // Export wave data to file, returns true on success +RLAPI bool ExportWaveAsCode(Wave wave, const char *fileName); // Export wave sample data to code (.h), returns true on success + +// Wave/Sound management functions +RLAPI void PlaySound(Sound sound); // Play a sound +RLAPI void StopSound(Sound sound); // Stop playing a sound +RLAPI void PauseSound(Sound sound); // Pause a sound +RLAPI void ResumeSound(Sound sound); // Resume a paused sound +RLAPI bool IsSoundPlaying(Sound sound); // Check if a sound is currently playing +RLAPI void SetSoundVolume(Sound sound, float volume); // Set volume for a sound (1.0 is max level) +RLAPI void SetSoundPitch(Sound sound, float pitch); // Set pitch for a sound (1.0 is base level) +RLAPI void SetSoundPan(Sound sound, float pan); // Set pan for a sound (0.5 is center) +RLAPI Wave WaveCopy(Wave wave); // Copy a wave to a new wave +RLAPI void WaveCrop(Wave *wave, int initFrame, int finalFrame); // Crop a wave to defined frames range +RLAPI void WaveFormat(Wave *wave, int sampleRate, int sampleSize, int channels); // Convert wave data to desired format +RLAPI float *LoadWaveSamples(Wave wave); // Load samples data from wave as a 32bit float data array +RLAPI void UnloadWaveSamples(float *samples); // Unload samples data loaded with LoadWaveSamples() + +// Music management functions +RLAPI Music LoadMusicStream(const char *fileName); // Load music stream from file +RLAPI Music LoadMusicStreamFromMemory(const char *fileType, const unsigned char *data, int dataSize); // Load music stream from data +RLAPI bool IsMusicValid(Music music); // Checks if a music stream is valid (context and buffers initialized) +RLAPI void UnloadMusicStream(Music music); // Unload music stream +RLAPI void PlayMusicStream(Music music); // Start music playing +RLAPI bool IsMusicStreamPlaying(Music music); // Check if music is playing +RLAPI void UpdateMusicStream(Music music); // Updates buffers for music streaming +RLAPI void StopMusicStream(Music music); // Stop music playing +RLAPI void PauseMusicStream(Music music); // Pause music playing +RLAPI void ResumeMusicStream(Music music); // Resume playing paused music +RLAPI void SeekMusicStream(Music music, float position); // Seek music to a position (in seconds) +RLAPI void SetMusicVolume(Music music, float volume); // Set volume for music (1.0 is max level) +RLAPI void SetMusicPitch(Music music, float pitch); // Set pitch for a music (1.0 is base level) +RLAPI void SetMusicPan(Music music, float pan); // Set pan for a music (0.5 is center) +RLAPI float GetMusicTimeLength(Music music); // Get music time length (in seconds) +RLAPI float GetMusicTimePlayed(Music music); // Get current music time played (in seconds) + +// AudioStream management functions +RLAPI AudioStream LoadAudioStream(unsigned int sampleRate, unsigned int sampleSize, unsigned int channels); // Load audio stream (to stream raw audio pcm data) +RLAPI bool IsAudioStreamValid(AudioStream stream); // Checks if an audio stream is valid (buffers initialized) +RLAPI void UnloadAudioStream(AudioStream stream); // Unload audio stream and free memory +RLAPI void UpdateAudioStream(AudioStream stream, const void *data, int frameCount); // Update audio stream buffers with data +RLAPI bool IsAudioStreamProcessed(AudioStream stream); // Check if any audio stream buffers requires refill +RLAPI void PlayAudioStream(AudioStream stream); // Play audio stream +RLAPI void PauseAudioStream(AudioStream stream); // Pause audio stream +RLAPI void ResumeAudioStream(AudioStream stream); // Resume audio stream +RLAPI bool IsAudioStreamPlaying(AudioStream stream); // Check if audio stream is playing +RLAPI void StopAudioStream(AudioStream stream); // Stop audio stream +RLAPI void SetAudioStreamVolume(AudioStream stream, float volume); // Set volume for audio stream (1.0 is max level) +RLAPI void SetAudioStreamPitch(AudioStream stream, float pitch); // Set pitch for audio stream (1.0 is base level) +RLAPI void SetAudioStreamPan(AudioStream stream, float pan); // Set pan for audio stream (0.5 is centered) +RLAPI void SetAudioStreamBufferSizeDefault(int size); // Default size for new audio streams +RLAPI void SetAudioStreamCallback(AudioStream stream, AudioCallback callback); // Audio thread callback to request new data + +RLAPI void AttachAudioStreamProcessor(AudioStream stream, AudioCallback processor); // Attach audio stream processor to stream, receives the samples as 'float' +RLAPI void DetachAudioStreamProcessor(AudioStream stream, AudioCallback processor); // Detach audio stream processor from stream + +RLAPI void AttachAudioMixedProcessor(AudioCallback processor); // Attach audio stream processor to the entire audio pipeline, receives the samples as 'float' +RLAPI void DetachAudioMixedProcessor(AudioCallback processor); // Detach audio stream processor from the entire audio pipeline + +#if defined(__cplusplus) +} +#endif + +#endif // RAYLIB_H diff --git a/raylib files/raylib-5.5_win64_msvc16 opengl33/include/raymath.h b/raylib files/raylib-5.5_win64_msvc16 opengl33/include/raymath.h new file mode 100644 index 0000000..ed4eda1 --- /dev/null +++ b/raylib files/raylib-5.5_win64_msvc16 opengl33/include/raymath.h @@ -0,0 +1,2941 @@ +/********************************************************************************************** +* +* raymath v2.0 - Math functions to work with Vector2, Vector3, Matrix and Quaternions +* +* CONVENTIONS: +* - Matrix structure is defined as row-major (memory layout) but parameters naming AND all +* math operations performed by the library consider the structure as it was column-major +* It is like transposed versions of the matrices are used for all the maths +* It benefits some functions making them cache-friendly and also avoids matrix +* transpositions sometimes required by OpenGL +* Example: In memory order, row0 is [m0 m4 m8 m12] but in semantic math row0 is [m0 m1 m2 m3] +* - Functions are always self-contained, no function use another raymath function inside, +* required code is directly re-implemented inside +* - Functions input parameters are always received by value (2 unavoidable exceptions) +* - Functions use always a "result" variable for return (except C++ operators) +* - Functions are always defined inline +* - Angles are always in radians (DEG2RAD/RAD2DEG macros provided for convenience) +* - No compound literals used to make sure libray is compatible with C++ +* +* CONFIGURATION: +* #define RAYMATH_IMPLEMENTATION +* Generates the implementation of the library into the included file. +* If not defined, the library is in header only mode and can be included in other headers +* or source files without problems. But only ONE file should hold the implementation. +* +* #define RAYMATH_STATIC_INLINE +* Define static inline functions code, so #include header suffices for use. +* This may use up lots of memory. +* +* #define RAYMATH_DISABLE_CPP_OPERATORS +* Disables C++ operator overloads for raymath types. +* +* LICENSE: zlib/libpng +* +* Copyright (c) 2015-2024 Ramon Santamaria (@raysan5) +* +* This software is provided "as-is", without any express or implied warranty. In no event +* will the authors be held liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, including commercial +* applications, and to alter it and redistribute it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; you must not claim that you +* wrote the original software. If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but is not required. +* +* 2. Altered source versions must be plainly marked as such, and must not be misrepresented +* as being the original software. +* +* 3. This notice may not be removed or altered from any source distribution. +* +**********************************************************************************************/ + +#ifndef RAYMATH_H +#define RAYMATH_H + +#if defined(RAYMATH_IMPLEMENTATION) && defined(RAYMATH_STATIC_INLINE) + #error "Specifying both RAYMATH_IMPLEMENTATION and RAYMATH_STATIC_INLINE is contradictory" +#endif + +// Function specifiers definition +#if defined(RAYMATH_IMPLEMENTATION) + #if defined(_WIN32) && defined(BUILD_LIBTYPE_SHARED) + #define RMAPI __declspec(dllexport) extern inline // We are building raylib as a Win32 shared library (.dll) + #elif defined(BUILD_LIBTYPE_SHARED) + #define RMAPI __attribute__((visibility("default"))) // We are building raylib as a Unix shared library (.so/.dylib) + #elif defined(_WIN32) && defined(USE_LIBTYPE_SHARED) + #define RMAPI __declspec(dllimport) // We are using raylib as a Win32 shared library (.dll) + #else + #define RMAPI extern inline // Provide external definition + #endif +#elif defined(RAYMATH_STATIC_INLINE) + #define RMAPI static inline // Functions may be inlined, no external out-of-line definition +#else + #if defined(__TINYC__) + #define RMAPI static inline // plain inline not supported by tinycc (See issue #435) + #else + #define RMAPI inline // Functions may be inlined or external definition used + #endif +#endif + + +//---------------------------------------------------------------------------------- +// Defines and Macros +//---------------------------------------------------------------------------------- +#ifndef PI + #define PI 3.14159265358979323846f +#endif + +#ifndef EPSILON + #define EPSILON 0.000001f +#endif + +#ifndef DEG2RAD + #define DEG2RAD (PI/180.0f) +#endif + +#ifndef RAD2DEG + #define RAD2DEG (180.0f/PI) +#endif + +// Get float vector for Matrix +#ifndef MatrixToFloat + #define MatrixToFloat(mat) (MatrixToFloatV(mat).v) +#endif + +// Get float vector for Vector3 +#ifndef Vector3ToFloat + #define Vector3ToFloat(vec) (Vector3ToFloatV(vec).v) +#endif + +//---------------------------------------------------------------------------------- +// Types and Structures Definition +//---------------------------------------------------------------------------------- +#if !defined(RL_VECTOR2_TYPE) +// Vector2 type +typedef struct Vector2 { + float x; + float y; +} Vector2; +#define RL_VECTOR2_TYPE +#endif + +#if !defined(RL_VECTOR3_TYPE) +// Vector3 type +typedef struct Vector3 { + float x; + float y; + float z; +} Vector3; +#define RL_VECTOR3_TYPE +#endif + +#if !defined(RL_VECTOR4_TYPE) +// Vector4 type +typedef struct Vector4 { + float x; + float y; + float z; + float w; +} Vector4; +#define RL_VECTOR4_TYPE +#endif + +#if !defined(RL_QUATERNION_TYPE) +// Quaternion type +typedef Vector4 Quaternion; +#define RL_QUATERNION_TYPE +#endif + +#if !defined(RL_MATRIX_TYPE) +// Matrix type (OpenGL style 4x4 - right handed, column major) +typedef struct Matrix { + float m0, m4, m8, m12; // Matrix first row (4 components) + float m1, m5, m9, m13; // Matrix second row (4 components) + float m2, m6, m10, m14; // Matrix third row (4 components) + float m3, m7, m11, m15; // Matrix fourth row (4 components) +} Matrix; +#define RL_MATRIX_TYPE +#endif + +// NOTE: Helper types to be used instead of array return types for *ToFloat functions +typedef struct float3 { + float v[3]; +} float3; + +typedef struct float16 { + float v[16]; +} float16; + +#include // Required for: sinf(), cosf(), tan(), atan2f(), sqrtf(), floor(), fminf(), fmaxf(), fabsf() + +//---------------------------------------------------------------------------------- +// Module Functions Definition - Utils math +//---------------------------------------------------------------------------------- + +// Clamp float value +RMAPI float Clamp(float value, float min, float max) +{ + float result = (value < min)? min : value; + + if (result > max) result = max; + + return result; +} + +// Calculate linear interpolation between two floats +RMAPI float Lerp(float start, float end, float amount) +{ + float result = start + amount*(end - start); + + return result; +} + +// Normalize input value within input range +RMAPI float Normalize(float value, float start, float end) +{ + float result = (value - start)/(end - start); + + return result; +} + +// Remap input value within input range to output range +RMAPI float Remap(float value, float inputStart, float inputEnd, float outputStart, float outputEnd) +{ + float result = (value - inputStart)/(inputEnd - inputStart)*(outputEnd - outputStart) + outputStart; + + return result; +} + +// Wrap input value from min to max +RMAPI float Wrap(float value, float min, float max) +{ + float result = value - (max - min)*floorf((value - min)/(max - min)); + + return result; +} + +// Check whether two given floats are almost equal +RMAPI int FloatEquals(float x, float y) +{ +#if !defined(EPSILON) + #define EPSILON 0.000001f +#endif + + int result = (fabsf(x - y)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(x), fabsf(y)))); + + return result; +} + +//---------------------------------------------------------------------------------- +// Module Functions Definition - Vector2 math +//---------------------------------------------------------------------------------- + +// Vector with components value 0.0f +RMAPI Vector2 Vector2Zero(void) +{ + Vector2 result = { 0.0f, 0.0f }; + + return result; +} + +// Vector with components value 1.0f +RMAPI Vector2 Vector2One(void) +{ + Vector2 result = { 1.0f, 1.0f }; + + return result; +} + +// Add two vectors (v1 + v2) +RMAPI Vector2 Vector2Add(Vector2 v1, Vector2 v2) +{ + Vector2 result = { v1.x + v2.x, v1.y + v2.y }; + + return result; +} + +// Add vector and float value +RMAPI Vector2 Vector2AddValue(Vector2 v, float add) +{ + Vector2 result = { v.x + add, v.y + add }; + + return result; +} + +// Subtract two vectors (v1 - v2) +RMAPI Vector2 Vector2Subtract(Vector2 v1, Vector2 v2) +{ + Vector2 result = { v1.x - v2.x, v1.y - v2.y }; + + return result; +} + +// Subtract vector by float value +RMAPI Vector2 Vector2SubtractValue(Vector2 v, float sub) +{ + Vector2 result = { v.x - sub, v.y - sub }; + + return result; +} + +// Calculate vector length +RMAPI float Vector2Length(Vector2 v) +{ + float result = sqrtf((v.x*v.x) + (v.y*v.y)); + + return result; +} + +// Calculate vector square length +RMAPI float Vector2LengthSqr(Vector2 v) +{ + float result = (v.x*v.x) + (v.y*v.y); + + return result; +} + +// Calculate two vectors dot product +RMAPI float Vector2DotProduct(Vector2 v1, Vector2 v2) +{ + float result = (v1.x*v2.x + v1.y*v2.y); + + return result; +} + +// Calculate distance between two vectors +RMAPI float Vector2Distance(Vector2 v1, Vector2 v2) +{ + float result = sqrtf((v1.x - v2.x)*(v1.x - v2.x) + (v1.y - v2.y)*(v1.y - v2.y)); + + return result; +} + +// Calculate square distance between two vectors +RMAPI float Vector2DistanceSqr(Vector2 v1, Vector2 v2) +{ + float result = ((v1.x - v2.x)*(v1.x - v2.x) + (v1.y - v2.y)*(v1.y - v2.y)); + + return result; +} + +// Calculate angle between two vectors +// NOTE: Angle is calculated from origin point (0, 0) +RMAPI float Vector2Angle(Vector2 v1, Vector2 v2) +{ + float result = 0.0f; + + float dot = v1.x*v2.x + v1.y*v2.y; + float det = v1.x*v2.y - v1.y*v2.x; + + result = atan2f(det, dot); + + return result; +} + +// Calculate angle defined by a two vectors line +// NOTE: Parameters need to be normalized +// Current implementation should be aligned with glm::angle +RMAPI float Vector2LineAngle(Vector2 start, Vector2 end) +{ + float result = 0.0f; + + // TODO(10/9/2023): Currently angles move clockwise, determine if this is wanted behavior + result = -atan2f(end.y - start.y, end.x - start.x); + + return result; +} + +// Scale vector (multiply by value) +RMAPI Vector2 Vector2Scale(Vector2 v, float scale) +{ + Vector2 result = { v.x*scale, v.y*scale }; + + return result; +} + +// Multiply vector by vector +RMAPI Vector2 Vector2Multiply(Vector2 v1, Vector2 v2) +{ + Vector2 result = { v1.x*v2.x, v1.y*v2.y }; + + return result; +} + +// Negate vector +RMAPI Vector2 Vector2Negate(Vector2 v) +{ + Vector2 result = { -v.x, -v.y }; + + return result; +} + +// Divide vector by vector +RMAPI Vector2 Vector2Divide(Vector2 v1, Vector2 v2) +{ + Vector2 result = { v1.x/v2.x, v1.y/v2.y }; + + return result; +} + +// Normalize provided vector +RMAPI Vector2 Vector2Normalize(Vector2 v) +{ + Vector2 result = { 0 }; + float length = sqrtf((v.x*v.x) + (v.y*v.y)); + + if (length > 0) + { + float ilength = 1.0f/length; + result.x = v.x*ilength; + result.y = v.y*ilength; + } + + return result; +} + +// Transforms a Vector2 by a given Matrix +RMAPI Vector2 Vector2Transform(Vector2 v, Matrix mat) +{ + Vector2 result = { 0 }; + + float x = v.x; + float y = v.y; + float z = 0; + + result.x = mat.m0*x + mat.m4*y + mat.m8*z + mat.m12; + result.y = mat.m1*x + mat.m5*y + mat.m9*z + mat.m13; + + return result; +} + +// Calculate linear interpolation between two vectors +RMAPI Vector2 Vector2Lerp(Vector2 v1, Vector2 v2, float amount) +{ + Vector2 result = { 0 }; + + result.x = v1.x + amount*(v2.x - v1.x); + result.y = v1.y + amount*(v2.y - v1.y); + + return result; +} + +// Calculate reflected vector to normal +RMAPI Vector2 Vector2Reflect(Vector2 v, Vector2 normal) +{ + Vector2 result = { 0 }; + + float dotProduct = (v.x*normal.x + v.y*normal.y); // Dot product + + result.x = v.x - (2.0f*normal.x)*dotProduct; + result.y = v.y - (2.0f*normal.y)*dotProduct; + + return result; +} + +// Get min value for each pair of components +RMAPI Vector2 Vector2Min(Vector2 v1, Vector2 v2) +{ + Vector2 result = { 0 }; + + result.x = fminf(v1.x, v2.x); + result.y = fminf(v1.y, v2.y); + + return result; +} + +// Get max value for each pair of components +RMAPI Vector2 Vector2Max(Vector2 v1, Vector2 v2) +{ + Vector2 result = { 0 }; + + result.x = fmaxf(v1.x, v2.x); + result.y = fmaxf(v1.y, v2.y); + + return result; +} + +// Rotate vector by angle +RMAPI Vector2 Vector2Rotate(Vector2 v, float angle) +{ + Vector2 result = { 0 }; + + float cosres = cosf(angle); + float sinres = sinf(angle); + + result.x = v.x*cosres - v.y*sinres; + result.y = v.x*sinres + v.y*cosres; + + return result; +} + +// Move Vector towards target +RMAPI Vector2 Vector2MoveTowards(Vector2 v, Vector2 target, float maxDistance) +{ + Vector2 result = { 0 }; + + float dx = target.x - v.x; + float dy = target.y - v.y; + float value = (dx*dx) + (dy*dy); + + if ((value == 0) || ((maxDistance >= 0) && (value <= maxDistance*maxDistance))) return target; + + float dist = sqrtf(value); + + result.x = v.x + dx/dist*maxDistance; + result.y = v.y + dy/dist*maxDistance; + + return result; +} + +// Invert the given vector +RMAPI Vector2 Vector2Invert(Vector2 v) +{ + Vector2 result = { 1.0f/v.x, 1.0f/v.y }; + + return result; +} + +// Clamp the components of the vector between +// min and max values specified by the given vectors +RMAPI Vector2 Vector2Clamp(Vector2 v, Vector2 min, Vector2 max) +{ + Vector2 result = { 0 }; + + result.x = fminf(max.x, fmaxf(min.x, v.x)); + result.y = fminf(max.y, fmaxf(min.y, v.y)); + + return result; +} + +// Clamp the magnitude of the vector between two min and max values +RMAPI Vector2 Vector2ClampValue(Vector2 v, float min, float max) +{ + Vector2 result = v; + + float length = (v.x*v.x) + (v.y*v.y); + if (length > 0.0f) + { + length = sqrtf(length); + + float scale = 1; // By default, 1 as the neutral element. + if (length < min) + { + scale = min/length; + } + else if (length > max) + { + scale = max/length; + } + + result.x = v.x*scale; + result.y = v.y*scale; + } + + return result; +} + +// Check whether two given vectors are almost equal +RMAPI int Vector2Equals(Vector2 p, Vector2 q) +{ +#if !defined(EPSILON) + #define EPSILON 0.000001f +#endif + + int result = ((fabsf(p.x - q.x)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.x), fabsf(q.x))))) && + ((fabsf(p.y - q.y)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.y), fabsf(q.y))))); + + return result; +} + +// Compute the direction of a refracted ray +// v: normalized direction of the incoming ray +// n: normalized normal vector of the interface of two optical media +// r: ratio of the refractive index of the medium from where the ray comes +// to the refractive index of the medium on the other side of the surface +RMAPI Vector2 Vector2Refract(Vector2 v, Vector2 n, float r) +{ + Vector2 result = { 0 }; + + float dot = v.x*n.x + v.y*n.y; + float d = 1.0f - r*r*(1.0f - dot*dot); + + if (d >= 0.0f) + { + d = sqrtf(d); + v.x = r*v.x - (r*dot + d)*n.x; + v.y = r*v.y - (r*dot + d)*n.y; + + result = v; + } + + return result; +} + + +//---------------------------------------------------------------------------------- +// Module Functions Definition - Vector3 math +//---------------------------------------------------------------------------------- + +// Vector with components value 0.0f +RMAPI Vector3 Vector3Zero(void) +{ + Vector3 result = { 0.0f, 0.0f, 0.0f }; + + return result; +} + +// Vector with components value 1.0f +RMAPI Vector3 Vector3One(void) +{ + Vector3 result = { 1.0f, 1.0f, 1.0f }; + + return result; +} + +// Add two vectors +RMAPI Vector3 Vector3Add(Vector3 v1, Vector3 v2) +{ + Vector3 result = { v1.x + v2.x, v1.y + v2.y, v1.z + v2.z }; + + return result; +} + +// Add vector and float value +RMAPI Vector3 Vector3AddValue(Vector3 v, float add) +{ + Vector3 result = { v.x + add, v.y + add, v.z + add }; + + return result; +} + +// Subtract two vectors +RMAPI Vector3 Vector3Subtract(Vector3 v1, Vector3 v2) +{ + Vector3 result = { v1.x - v2.x, v1.y - v2.y, v1.z - v2.z }; + + return result; +} + +// Subtract vector by float value +RMAPI Vector3 Vector3SubtractValue(Vector3 v, float sub) +{ + Vector3 result = { v.x - sub, v.y - sub, v.z - sub }; + + return result; +} + +// Multiply vector by scalar +RMAPI Vector3 Vector3Scale(Vector3 v, float scalar) +{ + Vector3 result = { v.x*scalar, v.y*scalar, v.z*scalar }; + + return result; +} + +// Multiply vector by vector +RMAPI Vector3 Vector3Multiply(Vector3 v1, Vector3 v2) +{ + Vector3 result = { v1.x*v2.x, v1.y*v2.y, v1.z*v2.z }; + + return result; +} + +// Calculate two vectors cross product +RMAPI Vector3 Vector3CrossProduct(Vector3 v1, Vector3 v2) +{ + Vector3 result = { v1.y*v2.z - v1.z*v2.y, v1.z*v2.x - v1.x*v2.z, v1.x*v2.y - v1.y*v2.x }; + + return result; +} + +// Calculate one vector perpendicular vector +RMAPI Vector3 Vector3Perpendicular(Vector3 v) +{ + Vector3 result = { 0 }; + + float min = fabsf(v.x); + Vector3 cardinalAxis = {1.0f, 0.0f, 0.0f}; + + if (fabsf(v.y) < min) + { + min = fabsf(v.y); + Vector3 tmp = {0.0f, 1.0f, 0.0f}; + cardinalAxis = tmp; + } + + if (fabsf(v.z) < min) + { + Vector3 tmp = {0.0f, 0.0f, 1.0f}; + cardinalAxis = tmp; + } + + // Cross product between vectors + result.x = v.y*cardinalAxis.z - v.z*cardinalAxis.y; + result.y = v.z*cardinalAxis.x - v.x*cardinalAxis.z; + result.z = v.x*cardinalAxis.y - v.y*cardinalAxis.x; + + return result; +} + +// Calculate vector length +RMAPI float Vector3Length(const Vector3 v) +{ + float result = sqrtf(v.x*v.x + v.y*v.y + v.z*v.z); + + return result; +} + +// Calculate vector square length +RMAPI float Vector3LengthSqr(const Vector3 v) +{ + float result = v.x*v.x + v.y*v.y + v.z*v.z; + + return result; +} + +// Calculate two vectors dot product +RMAPI float Vector3DotProduct(Vector3 v1, Vector3 v2) +{ + float result = (v1.x*v2.x + v1.y*v2.y + v1.z*v2.z); + + return result; +} + +// Calculate distance between two vectors +RMAPI float Vector3Distance(Vector3 v1, Vector3 v2) +{ + float result = 0.0f; + + float dx = v2.x - v1.x; + float dy = v2.y - v1.y; + float dz = v2.z - v1.z; + result = sqrtf(dx*dx + dy*dy + dz*dz); + + return result; +} + +// Calculate square distance between two vectors +RMAPI float Vector3DistanceSqr(Vector3 v1, Vector3 v2) +{ + float result = 0.0f; + + float dx = v2.x - v1.x; + float dy = v2.y - v1.y; + float dz = v2.z - v1.z; + result = dx*dx + dy*dy + dz*dz; + + return result; +} + +// Calculate angle between two vectors +RMAPI float Vector3Angle(Vector3 v1, Vector3 v2) +{ + float result = 0.0f; + + Vector3 cross = { v1.y*v2.z - v1.z*v2.y, v1.z*v2.x - v1.x*v2.z, v1.x*v2.y - v1.y*v2.x }; + float len = sqrtf(cross.x*cross.x + cross.y*cross.y + cross.z*cross.z); + float dot = (v1.x*v2.x + v1.y*v2.y + v1.z*v2.z); + result = atan2f(len, dot); + + return result; +} + +// Negate provided vector (invert direction) +RMAPI Vector3 Vector3Negate(Vector3 v) +{ + Vector3 result = { -v.x, -v.y, -v.z }; + + return result; +} + +// Divide vector by vector +RMAPI Vector3 Vector3Divide(Vector3 v1, Vector3 v2) +{ + Vector3 result = { v1.x/v2.x, v1.y/v2.y, v1.z/v2.z }; + + return result; +} + +// Normalize provided vector +RMAPI Vector3 Vector3Normalize(Vector3 v) +{ + Vector3 result = v; + + float length = sqrtf(v.x*v.x + v.y*v.y + v.z*v.z); + if (length != 0.0f) + { + float ilength = 1.0f/length; + + result.x *= ilength; + result.y *= ilength; + result.z *= ilength; + } + + return result; +} + +//Calculate the projection of the vector v1 on to v2 +RMAPI Vector3 Vector3Project(Vector3 v1, Vector3 v2) +{ + Vector3 result = { 0 }; + + float v1dv2 = (v1.x*v2.x + v1.y*v2.y + v1.z*v2.z); + float v2dv2 = (v2.x*v2.x + v2.y*v2.y + v2.z*v2.z); + + float mag = v1dv2/v2dv2; + + result.x = v2.x*mag; + result.y = v2.y*mag; + result.z = v2.z*mag; + + return result; +} + +//Calculate the rejection of the vector v1 on to v2 +RMAPI Vector3 Vector3Reject(Vector3 v1, Vector3 v2) +{ + Vector3 result = { 0 }; + + float v1dv2 = (v1.x*v2.x + v1.y*v2.y + v1.z*v2.z); + float v2dv2 = (v2.x*v2.x + v2.y*v2.y + v2.z*v2.z); + + float mag = v1dv2/v2dv2; + + result.x = v1.x - (v2.x*mag); + result.y = v1.y - (v2.y*mag); + result.z = v1.z - (v2.z*mag); + + return result; +} + +// Orthonormalize provided vectors +// Makes vectors normalized and orthogonal to each other +// Gram-Schmidt function implementation +RMAPI void Vector3OrthoNormalize(Vector3 *v1, Vector3 *v2) +{ + float length = 0.0f; + float ilength = 0.0f; + + // Vector3Normalize(*v1); + Vector3 v = *v1; + length = sqrtf(v.x*v.x + v.y*v.y + v.z*v.z); + if (length == 0.0f) length = 1.0f; + ilength = 1.0f/length; + v1->x *= ilength; + v1->y *= ilength; + v1->z *= ilength; + + // Vector3CrossProduct(*v1, *v2) + Vector3 vn1 = { v1->y*v2->z - v1->z*v2->y, v1->z*v2->x - v1->x*v2->z, v1->x*v2->y - v1->y*v2->x }; + + // Vector3Normalize(vn1); + v = vn1; + length = sqrtf(v.x*v.x + v.y*v.y + v.z*v.z); + if (length == 0.0f) length = 1.0f; + ilength = 1.0f/length; + vn1.x *= ilength; + vn1.y *= ilength; + vn1.z *= ilength; + + // Vector3CrossProduct(vn1, *v1) + Vector3 vn2 = { vn1.y*v1->z - vn1.z*v1->y, vn1.z*v1->x - vn1.x*v1->z, vn1.x*v1->y - vn1.y*v1->x }; + + *v2 = vn2; +} + +// Transforms a Vector3 by a given Matrix +RMAPI Vector3 Vector3Transform(Vector3 v, Matrix mat) +{ + Vector3 result = { 0 }; + + float x = v.x; + float y = v.y; + float z = v.z; + + result.x = mat.m0*x + mat.m4*y + mat.m8*z + mat.m12; + result.y = mat.m1*x + mat.m5*y + mat.m9*z + mat.m13; + result.z = mat.m2*x + mat.m6*y + mat.m10*z + mat.m14; + + return result; +} + +// Transform a vector by quaternion rotation +RMAPI Vector3 Vector3RotateByQuaternion(Vector3 v, Quaternion q) +{ + Vector3 result = { 0 }; + + result.x = v.x*(q.x*q.x + q.w*q.w - q.y*q.y - q.z*q.z) + v.y*(2*q.x*q.y - 2*q.w*q.z) + v.z*(2*q.x*q.z + 2*q.w*q.y); + result.y = v.x*(2*q.w*q.z + 2*q.x*q.y) + v.y*(q.w*q.w - q.x*q.x + q.y*q.y - q.z*q.z) + v.z*(-2*q.w*q.x + 2*q.y*q.z); + result.z = v.x*(-2*q.w*q.y + 2*q.x*q.z) + v.y*(2*q.w*q.x + 2*q.y*q.z)+ v.z*(q.w*q.w - q.x*q.x - q.y*q.y + q.z*q.z); + + return result; +} + +// Rotates a vector around an axis +RMAPI Vector3 Vector3RotateByAxisAngle(Vector3 v, Vector3 axis, float angle) +{ + // Using Euler-Rodrigues Formula + // Ref.: https://en.wikipedia.org/w/index.php?title=Euler%E2%80%93Rodrigues_formula + + Vector3 result = v; + + // Vector3Normalize(axis); + float length = sqrtf(axis.x*axis.x + axis.y*axis.y + axis.z*axis.z); + if (length == 0.0f) length = 1.0f; + float ilength = 1.0f/length; + axis.x *= ilength; + axis.y *= ilength; + axis.z *= ilength; + + angle /= 2.0f; + float a = sinf(angle); + float b = axis.x*a; + float c = axis.y*a; + float d = axis.z*a; + a = cosf(angle); + Vector3 w = { b, c, d }; + + // Vector3CrossProduct(w, v) + Vector3 wv = { w.y*v.z - w.z*v.y, w.z*v.x - w.x*v.z, w.x*v.y - w.y*v.x }; + + // Vector3CrossProduct(w, wv) + Vector3 wwv = { w.y*wv.z - w.z*wv.y, w.z*wv.x - w.x*wv.z, w.x*wv.y - w.y*wv.x }; + + // Vector3Scale(wv, 2*a) + a *= 2; + wv.x *= a; + wv.y *= a; + wv.z *= a; + + // Vector3Scale(wwv, 2) + wwv.x *= 2; + wwv.y *= 2; + wwv.z *= 2; + + result.x += wv.x; + result.y += wv.y; + result.z += wv.z; + + result.x += wwv.x; + result.y += wwv.y; + result.z += wwv.z; + + return result; +} + +// Move Vector towards target +RMAPI Vector3 Vector3MoveTowards(Vector3 v, Vector3 target, float maxDistance) +{ + Vector3 result = { 0 }; + + float dx = target.x - v.x; + float dy = target.y - v.y; + float dz = target.z - v.z; + float value = (dx*dx) + (dy*dy) + (dz*dz); + + if ((value == 0) || ((maxDistance >= 0) && (value <= maxDistance*maxDistance))) return target; + + float dist = sqrtf(value); + + result.x = v.x + dx/dist*maxDistance; + result.y = v.y + dy/dist*maxDistance; + result.z = v.z + dz/dist*maxDistance; + + return result; +} + +// Calculate linear interpolation between two vectors +RMAPI Vector3 Vector3Lerp(Vector3 v1, Vector3 v2, float amount) +{ + Vector3 result = { 0 }; + + result.x = v1.x + amount*(v2.x - v1.x); + result.y = v1.y + amount*(v2.y - v1.y); + result.z = v1.z + amount*(v2.z - v1.z); + + return result; +} + +// Calculate cubic hermite interpolation between two vectors and their tangents +// as described in the GLTF 2.0 specification: https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#interpolation-cubic +RMAPI Vector3 Vector3CubicHermite(Vector3 v1, Vector3 tangent1, Vector3 v2, Vector3 tangent2, float amount) +{ + Vector3 result = { 0 }; + + float amountPow2 = amount*amount; + float amountPow3 = amount*amount*amount; + + result.x = (2*amountPow3 - 3*amountPow2 + 1)*v1.x + (amountPow3 - 2*amountPow2 + amount)*tangent1.x + (-2*amountPow3 + 3*amountPow2)*v2.x + (amountPow3 - amountPow2)*tangent2.x; + result.y = (2*amountPow3 - 3*amountPow2 + 1)*v1.y + (amountPow3 - 2*amountPow2 + amount)*tangent1.y + (-2*amountPow3 + 3*amountPow2)*v2.y + (amountPow3 - amountPow2)*tangent2.y; + result.z = (2*amountPow3 - 3*amountPow2 + 1)*v1.z + (amountPow3 - 2*amountPow2 + amount)*tangent1.z + (-2*amountPow3 + 3*amountPow2)*v2.z + (amountPow3 - amountPow2)*tangent2.z; + + return result; +} + +// Calculate reflected vector to normal +RMAPI Vector3 Vector3Reflect(Vector3 v, Vector3 normal) +{ + Vector3 result = { 0 }; + + // I is the original vector + // N is the normal of the incident plane + // R = I - (2*N*(DotProduct[I, N])) + + float dotProduct = (v.x*normal.x + v.y*normal.y + v.z*normal.z); + + result.x = v.x - (2.0f*normal.x)*dotProduct; + result.y = v.y - (2.0f*normal.y)*dotProduct; + result.z = v.z - (2.0f*normal.z)*dotProduct; + + return result; +} + +// Get min value for each pair of components +RMAPI Vector3 Vector3Min(Vector3 v1, Vector3 v2) +{ + Vector3 result = { 0 }; + + result.x = fminf(v1.x, v2.x); + result.y = fminf(v1.y, v2.y); + result.z = fminf(v1.z, v2.z); + + return result; +} + +// Get max value for each pair of components +RMAPI Vector3 Vector3Max(Vector3 v1, Vector3 v2) +{ + Vector3 result = { 0 }; + + result.x = fmaxf(v1.x, v2.x); + result.y = fmaxf(v1.y, v2.y); + result.z = fmaxf(v1.z, v2.z); + + return result; +} + +// Compute barycenter coordinates (u, v, w) for point p with respect to triangle (a, b, c) +// NOTE: Assumes P is on the plane of the triangle +RMAPI Vector3 Vector3Barycenter(Vector3 p, Vector3 a, Vector3 b, Vector3 c) +{ + Vector3 result = { 0 }; + + Vector3 v0 = { b.x - a.x, b.y - a.y, b.z - a.z }; // Vector3Subtract(b, a) + Vector3 v1 = { c.x - a.x, c.y - a.y, c.z - a.z }; // Vector3Subtract(c, a) + Vector3 v2 = { p.x - a.x, p.y - a.y, p.z - a.z }; // Vector3Subtract(p, a) + float d00 = (v0.x*v0.x + v0.y*v0.y + v0.z*v0.z); // Vector3DotProduct(v0, v0) + float d01 = (v0.x*v1.x + v0.y*v1.y + v0.z*v1.z); // Vector3DotProduct(v0, v1) + float d11 = (v1.x*v1.x + v1.y*v1.y + v1.z*v1.z); // Vector3DotProduct(v1, v1) + float d20 = (v2.x*v0.x + v2.y*v0.y + v2.z*v0.z); // Vector3DotProduct(v2, v0) + float d21 = (v2.x*v1.x + v2.y*v1.y + v2.z*v1.z); // Vector3DotProduct(v2, v1) + + float denom = d00*d11 - d01*d01; + + result.y = (d11*d20 - d01*d21)/denom; + result.z = (d00*d21 - d01*d20)/denom; + result.x = 1.0f - (result.z + result.y); + + return result; +} + +// Projects a Vector3 from screen space into object space +// NOTE: We are avoiding calling other raymath functions despite available +RMAPI Vector3 Vector3Unproject(Vector3 source, Matrix projection, Matrix view) +{ + Vector3 result = { 0 }; + + // Calculate unprojected matrix (multiply view matrix by projection matrix) and invert it + Matrix matViewProj = { // MatrixMultiply(view, projection); + view.m0*projection.m0 + view.m1*projection.m4 + view.m2*projection.m8 + view.m3*projection.m12, + view.m0*projection.m1 + view.m1*projection.m5 + view.m2*projection.m9 + view.m3*projection.m13, + view.m0*projection.m2 + view.m1*projection.m6 + view.m2*projection.m10 + view.m3*projection.m14, + view.m0*projection.m3 + view.m1*projection.m7 + view.m2*projection.m11 + view.m3*projection.m15, + view.m4*projection.m0 + view.m5*projection.m4 + view.m6*projection.m8 + view.m7*projection.m12, + view.m4*projection.m1 + view.m5*projection.m5 + view.m6*projection.m9 + view.m7*projection.m13, + view.m4*projection.m2 + view.m5*projection.m6 + view.m6*projection.m10 + view.m7*projection.m14, + view.m4*projection.m3 + view.m5*projection.m7 + view.m6*projection.m11 + view.m7*projection.m15, + view.m8*projection.m0 + view.m9*projection.m4 + view.m10*projection.m8 + view.m11*projection.m12, + view.m8*projection.m1 + view.m9*projection.m5 + view.m10*projection.m9 + view.m11*projection.m13, + view.m8*projection.m2 + view.m9*projection.m6 + view.m10*projection.m10 + view.m11*projection.m14, + view.m8*projection.m3 + view.m9*projection.m7 + view.m10*projection.m11 + view.m11*projection.m15, + view.m12*projection.m0 + view.m13*projection.m4 + view.m14*projection.m8 + view.m15*projection.m12, + view.m12*projection.m1 + view.m13*projection.m5 + view.m14*projection.m9 + view.m15*projection.m13, + view.m12*projection.m2 + view.m13*projection.m6 + view.m14*projection.m10 + view.m15*projection.m14, + view.m12*projection.m3 + view.m13*projection.m7 + view.m14*projection.m11 + view.m15*projection.m15 }; + + // Calculate inverted matrix -> MatrixInvert(matViewProj); + // Cache the matrix values (speed optimization) + float a00 = matViewProj.m0, a01 = matViewProj.m1, a02 = matViewProj.m2, a03 = matViewProj.m3; + float a10 = matViewProj.m4, a11 = matViewProj.m5, a12 = matViewProj.m6, a13 = matViewProj.m7; + float a20 = matViewProj.m8, a21 = matViewProj.m9, a22 = matViewProj.m10, a23 = matViewProj.m11; + float a30 = matViewProj.m12, a31 = matViewProj.m13, a32 = matViewProj.m14, a33 = matViewProj.m15; + + float b00 = a00*a11 - a01*a10; + float b01 = a00*a12 - a02*a10; + float b02 = a00*a13 - a03*a10; + float b03 = a01*a12 - a02*a11; + float b04 = a01*a13 - a03*a11; + float b05 = a02*a13 - a03*a12; + float b06 = a20*a31 - a21*a30; + float b07 = a20*a32 - a22*a30; + float b08 = a20*a33 - a23*a30; + float b09 = a21*a32 - a22*a31; + float b10 = a21*a33 - a23*a31; + float b11 = a22*a33 - a23*a32; + + // Calculate the invert determinant (inlined to avoid double-caching) + float invDet = 1.0f/(b00*b11 - b01*b10 + b02*b09 + b03*b08 - b04*b07 + b05*b06); + + Matrix matViewProjInv = { + (a11*b11 - a12*b10 + a13*b09)*invDet, + (-a01*b11 + a02*b10 - a03*b09)*invDet, + (a31*b05 - a32*b04 + a33*b03)*invDet, + (-a21*b05 + a22*b04 - a23*b03)*invDet, + (-a10*b11 + a12*b08 - a13*b07)*invDet, + (a00*b11 - a02*b08 + a03*b07)*invDet, + (-a30*b05 + a32*b02 - a33*b01)*invDet, + (a20*b05 - a22*b02 + a23*b01)*invDet, + (a10*b10 - a11*b08 + a13*b06)*invDet, + (-a00*b10 + a01*b08 - a03*b06)*invDet, + (a30*b04 - a31*b02 + a33*b00)*invDet, + (-a20*b04 + a21*b02 - a23*b00)*invDet, + (-a10*b09 + a11*b07 - a12*b06)*invDet, + (a00*b09 - a01*b07 + a02*b06)*invDet, + (-a30*b03 + a31*b01 - a32*b00)*invDet, + (a20*b03 - a21*b01 + a22*b00)*invDet }; + + // Create quaternion from source point + Quaternion quat = { source.x, source.y, source.z, 1.0f }; + + // Multiply quat point by unprojecte matrix + Quaternion qtransformed = { // QuaternionTransform(quat, matViewProjInv) + matViewProjInv.m0*quat.x + matViewProjInv.m4*quat.y + matViewProjInv.m8*quat.z + matViewProjInv.m12*quat.w, + matViewProjInv.m1*quat.x + matViewProjInv.m5*quat.y + matViewProjInv.m9*quat.z + matViewProjInv.m13*quat.w, + matViewProjInv.m2*quat.x + matViewProjInv.m6*quat.y + matViewProjInv.m10*quat.z + matViewProjInv.m14*quat.w, + matViewProjInv.m3*quat.x + matViewProjInv.m7*quat.y + matViewProjInv.m11*quat.z + matViewProjInv.m15*quat.w }; + + // Normalized world points in vectors + result.x = qtransformed.x/qtransformed.w; + result.y = qtransformed.y/qtransformed.w; + result.z = qtransformed.z/qtransformed.w; + + return result; +} + +// Get Vector3 as float array +RMAPI float3 Vector3ToFloatV(Vector3 v) +{ + float3 buffer = { 0 }; + + buffer.v[0] = v.x; + buffer.v[1] = v.y; + buffer.v[2] = v.z; + + return buffer; +} + +// Invert the given vector +RMAPI Vector3 Vector3Invert(Vector3 v) +{ + Vector3 result = { 1.0f/v.x, 1.0f/v.y, 1.0f/v.z }; + + return result; +} + +// Clamp the components of the vector between +// min and max values specified by the given vectors +RMAPI Vector3 Vector3Clamp(Vector3 v, Vector3 min, Vector3 max) +{ + Vector3 result = { 0 }; + + result.x = fminf(max.x, fmaxf(min.x, v.x)); + result.y = fminf(max.y, fmaxf(min.y, v.y)); + result.z = fminf(max.z, fmaxf(min.z, v.z)); + + return result; +} + +// Clamp the magnitude of the vector between two values +RMAPI Vector3 Vector3ClampValue(Vector3 v, float min, float max) +{ + Vector3 result = v; + + float length = (v.x*v.x) + (v.y*v.y) + (v.z*v.z); + if (length > 0.0f) + { + length = sqrtf(length); + + float scale = 1; // By default, 1 as the neutral element. + if (length < min) + { + scale = min/length; + } + else if (length > max) + { + scale = max/length; + } + + result.x = v.x*scale; + result.y = v.y*scale; + result.z = v.z*scale; + } + + return result; +} + +// Check whether two given vectors are almost equal +RMAPI int Vector3Equals(Vector3 p, Vector3 q) +{ +#if !defined(EPSILON) + #define EPSILON 0.000001f +#endif + + int result = ((fabsf(p.x - q.x)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.x), fabsf(q.x))))) && + ((fabsf(p.y - q.y)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.y), fabsf(q.y))))) && + ((fabsf(p.z - q.z)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.z), fabsf(q.z))))); + + return result; +} + +// Compute the direction of a refracted ray +// v: normalized direction of the incoming ray +// n: normalized normal vector of the interface of two optical media +// r: ratio of the refractive index of the medium from where the ray comes +// to the refractive index of the medium on the other side of the surface +RMAPI Vector3 Vector3Refract(Vector3 v, Vector3 n, float r) +{ + Vector3 result = { 0 }; + + float dot = v.x*n.x + v.y*n.y + v.z*n.z; + float d = 1.0f - r*r*(1.0f - dot*dot); + + if (d >= 0.0f) + { + d = sqrtf(d); + v.x = r*v.x - (r*dot + d)*n.x; + v.y = r*v.y - (r*dot + d)*n.y; + v.z = r*v.z - (r*dot + d)*n.z; + + result = v; + } + + return result; +} + + +//---------------------------------------------------------------------------------- +// Module Functions Definition - Vector4 math +//---------------------------------------------------------------------------------- + +RMAPI Vector4 Vector4Zero(void) +{ + Vector4 result = { 0.0f, 0.0f, 0.0f, 0.0f }; + return result; +} + +RMAPI Vector4 Vector4One(void) +{ + Vector4 result = { 1.0f, 1.0f, 1.0f, 1.0f }; + return result; +} + +RMAPI Vector4 Vector4Add(Vector4 v1, Vector4 v2) +{ + Vector4 result = { + v1.x + v2.x, + v1.y + v2.y, + v1.z + v2.z, + v1.w + v2.w + }; + return result; +} + +RMAPI Vector4 Vector4AddValue(Vector4 v, float add) +{ + Vector4 result = { + v.x + add, + v.y + add, + v.z + add, + v.w + add + }; + return result; +} + +RMAPI Vector4 Vector4Subtract(Vector4 v1, Vector4 v2) +{ + Vector4 result = { + v1.x - v2.x, + v1.y - v2.y, + v1.z - v2.z, + v1.w - v2.w + }; + return result; +} + +RMAPI Vector4 Vector4SubtractValue(Vector4 v, float add) +{ + Vector4 result = { + v.x - add, + v.y - add, + v.z - add, + v.w - add + }; + return result; +} + +RMAPI float Vector4Length(Vector4 v) +{ + float result = sqrtf((v.x*v.x) + (v.y*v.y) + (v.z*v.z) + (v.w*v.w)); + return result; +} + +RMAPI float Vector4LengthSqr(Vector4 v) +{ + float result = (v.x*v.x) + (v.y*v.y) + (v.z*v.z) + (v.w*v.w); + return result; +} + +RMAPI float Vector4DotProduct(Vector4 v1, Vector4 v2) +{ + float result = (v1.x*v2.x + v1.y*v2.y + v1.z*v2.z + v1.w*v2.w); + return result; +} + +// Calculate distance between two vectors +RMAPI float Vector4Distance(Vector4 v1, Vector4 v2) +{ + float result = sqrtf( + (v1.x - v2.x)*(v1.x - v2.x) + (v1.y - v2.y)*(v1.y - v2.y) + + (v1.z - v2.z)*(v1.z - v2.z) + (v1.w - v2.w)*(v1.w - v2.w)); + return result; +} + +// Calculate square distance between two vectors +RMAPI float Vector4DistanceSqr(Vector4 v1, Vector4 v2) +{ + float result = + (v1.x - v2.x)*(v1.x - v2.x) + (v1.y - v2.y)*(v1.y - v2.y) + + (v1.z - v2.z)*(v1.z - v2.z) + (v1.w - v2.w)*(v1.w - v2.w); + + return result; +} + +RMAPI Vector4 Vector4Scale(Vector4 v, float scale) +{ + Vector4 result = { v.x*scale, v.y*scale, v.z*scale, v.w*scale }; + return result; +} + +// Multiply vector by vector +RMAPI Vector4 Vector4Multiply(Vector4 v1, Vector4 v2) +{ + Vector4 result = { v1.x*v2.x, v1.y*v2.y, v1.z*v2.z, v1.w*v2.w }; + return result; +} + +// Negate vector +RMAPI Vector4 Vector4Negate(Vector4 v) +{ + Vector4 result = { -v.x, -v.y, -v.z, -v.w }; + return result; +} + +// Divide vector by vector +RMAPI Vector4 Vector4Divide(Vector4 v1, Vector4 v2) +{ + Vector4 result = { v1.x/v2.x, v1.y/v2.y, v1.z/v2.z, v1.w/v2.w }; + return result; +} + +// Normalize provided vector +RMAPI Vector4 Vector4Normalize(Vector4 v) +{ + Vector4 result = { 0 }; + float length = sqrtf((v.x*v.x) + (v.y*v.y) + (v.z*v.z) + (v.w*v.w)); + + if (length > 0) + { + float ilength = 1.0f/length; + result.x = v.x*ilength; + result.y = v.y*ilength; + result.z = v.z*ilength; + result.w = v.w*ilength; + } + + return result; +} + +// Get min value for each pair of components +RMAPI Vector4 Vector4Min(Vector4 v1, Vector4 v2) +{ + Vector4 result = { 0 }; + + result.x = fminf(v1.x, v2.x); + result.y = fminf(v1.y, v2.y); + result.z = fminf(v1.z, v2.z); + result.w = fminf(v1.w, v2.w); + + return result; +} + +// Get max value for each pair of components +RMAPI Vector4 Vector4Max(Vector4 v1, Vector4 v2) +{ + Vector4 result = { 0 }; + + result.x = fmaxf(v1.x, v2.x); + result.y = fmaxf(v1.y, v2.y); + result.z = fmaxf(v1.z, v2.z); + result.w = fmaxf(v1.w, v2.w); + + return result; +} + +// Calculate linear interpolation between two vectors +RMAPI Vector4 Vector4Lerp(Vector4 v1, Vector4 v2, float amount) +{ + Vector4 result = { 0 }; + + result.x = v1.x + amount*(v2.x - v1.x); + result.y = v1.y + amount*(v2.y - v1.y); + result.z = v1.z + amount*(v2.z - v1.z); + result.w = v1.w + amount*(v2.w - v1.w); + + return result; +} + +// Move Vector towards target +RMAPI Vector4 Vector4MoveTowards(Vector4 v, Vector4 target, float maxDistance) +{ + Vector4 result = { 0 }; + + float dx = target.x - v.x; + float dy = target.y - v.y; + float dz = target.z - v.z; + float dw = target.w - v.w; + float value = (dx*dx) + (dy*dy) + (dz*dz) + (dw*dw); + + if ((value == 0) || ((maxDistance >= 0) && (value <= maxDistance*maxDistance))) return target; + + float dist = sqrtf(value); + + result.x = v.x + dx/dist*maxDistance; + result.y = v.y + dy/dist*maxDistance; + result.z = v.z + dz/dist*maxDistance; + result.w = v.w + dw/dist*maxDistance; + + return result; +} + +// Invert the given vector +RMAPI Vector4 Vector4Invert(Vector4 v) +{ + Vector4 result = { 1.0f/v.x, 1.0f/v.y, 1.0f/v.z, 1.0f/v.w }; + return result; +} + +// Check whether two given vectors are almost equal +RMAPI int Vector4Equals(Vector4 p, Vector4 q) +{ +#if !defined(EPSILON) + #define EPSILON 0.000001f +#endif + + int result = ((fabsf(p.x - q.x)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.x), fabsf(q.x))))) && + ((fabsf(p.y - q.y)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.y), fabsf(q.y))))) && + ((fabsf(p.z - q.z)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.z), fabsf(q.z))))) && + ((fabsf(p.w - q.w)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.w), fabsf(q.w))))); + return result; +} + + +//---------------------------------------------------------------------------------- +// Module Functions Definition - Matrix math +//---------------------------------------------------------------------------------- + +// Compute matrix determinant +RMAPI float MatrixDeterminant(Matrix mat) +{ + float result = 0.0f; + + // Cache the matrix values (speed optimization) + float a00 = mat.m0, a01 = mat.m1, a02 = mat.m2, a03 = mat.m3; + float a10 = mat.m4, a11 = mat.m5, a12 = mat.m6, a13 = mat.m7; + float a20 = mat.m8, a21 = mat.m9, a22 = mat.m10, a23 = mat.m11; + float a30 = mat.m12, a31 = mat.m13, a32 = mat.m14, a33 = mat.m15; + + result = a30*a21*a12*a03 - a20*a31*a12*a03 - a30*a11*a22*a03 + a10*a31*a22*a03 + + a20*a11*a32*a03 - a10*a21*a32*a03 - a30*a21*a02*a13 + a20*a31*a02*a13 + + a30*a01*a22*a13 - a00*a31*a22*a13 - a20*a01*a32*a13 + a00*a21*a32*a13 + + a30*a11*a02*a23 - a10*a31*a02*a23 - a30*a01*a12*a23 + a00*a31*a12*a23 + + a10*a01*a32*a23 - a00*a11*a32*a23 - a20*a11*a02*a33 + a10*a21*a02*a33 + + a20*a01*a12*a33 - a00*a21*a12*a33 - a10*a01*a22*a33 + a00*a11*a22*a33; + + return result; +} + +// Get the trace of the matrix (sum of the values along the diagonal) +RMAPI float MatrixTrace(Matrix mat) +{ + float result = (mat.m0 + mat.m5 + mat.m10 + mat.m15); + + return result; +} + +// Transposes provided matrix +RMAPI Matrix MatrixTranspose(Matrix mat) +{ + Matrix result = { 0 }; + + result.m0 = mat.m0; + result.m1 = mat.m4; + result.m2 = mat.m8; + result.m3 = mat.m12; + result.m4 = mat.m1; + result.m5 = mat.m5; + result.m6 = mat.m9; + result.m7 = mat.m13; + result.m8 = mat.m2; + result.m9 = mat.m6; + result.m10 = mat.m10; + result.m11 = mat.m14; + result.m12 = mat.m3; + result.m13 = mat.m7; + result.m14 = mat.m11; + result.m15 = mat.m15; + + return result; +} + +// Invert provided matrix +RMAPI Matrix MatrixInvert(Matrix mat) +{ + Matrix result = { 0 }; + + // Cache the matrix values (speed optimization) + float a00 = mat.m0, a01 = mat.m1, a02 = mat.m2, a03 = mat.m3; + float a10 = mat.m4, a11 = mat.m5, a12 = mat.m6, a13 = mat.m7; + float a20 = mat.m8, a21 = mat.m9, a22 = mat.m10, a23 = mat.m11; + float a30 = mat.m12, a31 = mat.m13, a32 = mat.m14, a33 = mat.m15; + + float b00 = a00*a11 - a01*a10; + float b01 = a00*a12 - a02*a10; + float b02 = a00*a13 - a03*a10; + float b03 = a01*a12 - a02*a11; + float b04 = a01*a13 - a03*a11; + float b05 = a02*a13 - a03*a12; + float b06 = a20*a31 - a21*a30; + float b07 = a20*a32 - a22*a30; + float b08 = a20*a33 - a23*a30; + float b09 = a21*a32 - a22*a31; + float b10 = a21*a33 - a23*a31; + float b11 = a22*a33 - a23*a32; + + // Calculate the invert determinant (inlined to avoid double-caching) + float invDet = 1.0f/(b00*b11 - b01*b10 + b02*b09 + b03*b08 - b04*b07 + b05*b06); + + result.m0 = (a11*b11 - a12*b10 + a13*b09)*invDet; + result.m1 = (-a01*b11 + a02*b10 - a03*b09)*invDet; + result.m2 = (a31*b05 - a32*b04 + a33*b03)*invDet; + result.m3 = (-a21*b05 + a22*b04 - a23*b03)*invDet; + result.m4 = (-a10*b11 + a12*b08 - a13*b07)*invDet; + result.m5 = (a00*b11 - a02*b08 + a03*b07)*invDet; + result.m6 = (-a30*b05 + a32*b02 - a33*b01)*invDet; + result.m7 = (a20*b05 - a22*b02 + a23*b01)*invDet; + result.m8 = (a10*b10 - a11*b08 + a13*b06)*invDet; + result.m9 = (-a00*b10 + a01*b08 - a03*b06)*invDet; + result.m10 = (a30*b04 - a31*b02 + a33*b00)*invDet; + result.m11 = (-a20*b04 + a21*b02 - a23*b00)*invDet; + result.m12 = (-a10*b09 + a11*b07 - a12*b06)*invDet; + result.m13 = (a00*b09 - a01*b07 + a02*b06)*invDet; + result.m14 = (-a30*b03 + a31*b01 - a32*b00)*invDet; + result.m15 = (a20*b03 - a21*b01 + a22*b00)*invDet; + + return result; +} + +// Get identity matrix +RMAPI Matrix MatrixIdentity(void) +{ + Matrix result = { 1.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f }; + + return result; +} + +// Add two matrices +RMAPI Matrix MatrixAdd(Matrix left, Matrix right) +{ + Matrix result = { 0 }; + + result.m0 = left.m0 + right.m0; + result.m1 = left.m1 + right.m1; + result.m2 = left.m2 + right.m2; + result.m3 = left.m3 + right.m3; + result.m4 = left.m4 + right.m4; + result.m5 = left.m5 + right.m5; + result.m6 = left.m6 + right.m6; + result.m7 = left.m7 + right.m7; + result.m8 = left.m8 + right.m8; + result.m9 = left.m9 + right.m9; + result.m10 = left.m10 + right.m10; + result.m11 = left.m11 + right.m11; + result.m12 = left.m12 + right.m12; + result.m13 = left.m13 + right.m13; + result.m14 = left.m14 + right.m14; + result.m15 = left.m15 + right.m15; + + return result; +} + +// Subtract two matrices (left - right) +RMAPI Matrix MatrixSubtract(Matrix left, Matrix right) +{ + Matrix result = { 0 }; + + result.m0 = left.m0 - right.m0; + result.m1 = left.m1 - right.m1; + result.m2 = left.m2 - right.m2; + result.m3 = left.m3 - right.m3; + result.m4 = left.m4 - right.m4; + result.m5 = left.m5 - right.m5; + result.m6 = left.m6 - right.m6; + result.m7 = left.m7 - right.m7; + result.m8 = left.m8 - right.m8; + result.m9 = left.m9 - right.m9; + result.m10 = left.m10 - right.m10; + result.m11 = left.m11 - right.m11; + result.m12 = left.m12 - right.m12; + result.m13 = left.m13 - right.m13; + result.m14 = left.m14 - right.m14; + result.m15 = left.m15 - right.m15; + + return result; +} + +// Get two matrix multiplication +// NOTE: When multiplying matrices... the order matters! +RMAPI Matrix MatrixMultiply(Matrix left, Matrix right) +{ + Matrix result = { 0 }; + + result.m0 = left.m0*right.m0 + left.m1*right.m4 + left.m2*right.m8 + left.m3*right.m12; + result.m1 = left.m0*right.m1 + left.m1*right.m5 + left.m2*right.m9 + left.m3*right.m13; + result.m2 = left.m0*right.m2 + left.m1*right.m6 + left.m2*right.m10 + left.m3*right.m14; + result.m3 = left.m0*right.m3 + left.m1*right.m7 + left.m2*right.m11 + left.m3*right.m15; + result.m4 = left.m4*right.m0 + left.m5*right.m4 + left.m6*right.m8 + left.m7*right.m12; + result.m5 = left.m4*right.m1 + left.m5*right.m5 + left.m6*right.m9 + left.m7*right.m13; + result.m6 = left.m4*right.m2 + left.m5*right.m6 + left.m6*right.m10 + left.m7*right.m14; + result.m7 = left.m4*right.m3 + left.m5*right.m7 + left.m6*right.m11 + left.m7*right.m15; + result.m8 = left.m8*right.m0 + left.m9*right.m4 + left.m10*right.m8 + left.m11*right.m12; + result.m9 = left.m8*right.m1 + left.m9*right.m5 + left.m10*right.m9 + left.m11*right.m13; + result.m10 = left.m8*right.m2 + left.m9*right.m6 + left.m10*right.m10 + left.m11*right.m14; + result.m11 = left.m8*right.m3 + left.m9*right.m7 + left.m10*right.m11 + left.m11*right.m15; + result.m12 = left.m12*right.m0 + left.m13*right.m4 + left.m14*right.m8 + left.m15*right.m12; + result.m13 = left.m12*right.m1 + left.m13*right.m5 + left.m14*right.m9 + left.m15*right.m13; + result.m14 = left.m12*right.m2 + left.m13*right.m6 + left.m14*right.m10 + left.m15*right.m14; + result.m15 = left.m12*right.m3 + left.m13*right.m7 + left.m14*right.m11 + left.m15*right.m15; + + return result; +} + +// Get translation matrix +RMAPI Matrix MatrixTranslate(float x, float y, float z) +{ + Matrix result = { 1.0f, 0.0f, 0.0f, x, + 0.0f, 1.0f, 0.0f, y, + 0.0f, 0.0f, 1.0f, z, + 0.0f, 0.0f, 0.0f, 1.0f }; + + return result; +} + +// Create rotation matrix from axis and angle +// NOTE: Angle should be provided in radians +RMAPI Matrix MatrixRotate(Vector3 axis, float angle) +{ + Matrix result = { 0 }; + + float x = axis.x, y = axis.y, z = axis.z; + + float lengthSquared = x*x + y*y + z*z; + + if ((lengthSquared != 1.0f) && (lengthSquared != 0.0f)) + { + float ilength = 1.0f/sqrtf(lengthSquared); + x *= ilength; + y *= ilength; + z *= ilength; + } + + float sinres = sinf(angle); + float cosres = cosf(angle); + float t = 1.0f - cosres; + + result.m0 = x*x*t + cosres; + result.m1 = y*x*t + z*sinres; + result.m2 = z*x*t - y*sinres; + result.m3 = 0.0f; + + result.m4 = x*y*t - z*sinres; + result.m5 = y*y*t + cosres; + result.m6 = z*y*t + x*sinres; + result.m7 = 0.0f; + + result.m8 = x*z*t + y*sinres; + result.m9 = y*z*t - x*sinres; + result.m10 = z*z*t + cosres; + result.m11 = 0.0f; + + result.m12 = 0.0f; + result.m13 = 0.0f; + result.m14 = 0.0f; + result.m15 = 1.0f; + + return result; +} + +// Get x-rotation matrix +// NOTE: Angle must be provided in radians +RMAPI Matrix MatrixRotateX(float angle) +{ + Matrix result = { 1.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f }; // MatrixIdentity() + + float cosres = cosf(angle); + float sinres = sinf(angle); + + result.m5 = cosres; + result.m6 = sinres; + result.m9 = -sinres; + result.m10 = cosres; + + return result; +} + +// Get y-rotation matrix +// NOTE: Angle must be provided in radians +RMAPI Matrix MatrixRotateY(float angle) +{ + Matrix result = { 1.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f }; // MatrixIdentity() + + float cosres = cosf(angle); + float sinres = sinf(angle); + + result.m0 = cosres; + result.m2 = -sinres; + result.m8 = sinres; + result.m10 = cosres; + + return result; +} + +// Get z-rotation matrix +// NOTE: Angle must be provided in radians +RMAPI Matrix MatrixRotateZ(float angle) +{ + Matrix result = { 1.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f }; // MatrixIdentity() + + float cosres = cosf(angle); + float sinres = sinf(angle); + + result.m0 = cosres; + result.m1 = sinres; + result.m4 = -sinres; + result.m5 = cosres; + + return result; +} + + +// Get xyz-rotation matrix +// NOTE: Angle must be provided in radians +RMAPI Matrix MatrixRotateXYZ(Vector3 angle) +{ + Matrix result = { 1.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f }; // MatrixIdentity() + + float cosz = cosf(-angle.z); + float sinz = sinf(-angle.z); + float cosy = cosf(-angle.y); + float siny = sinf(-angle.y); + float cosx = cosf(-angle.x); + float sinx = sinf(-angle.x); + + result.m0 = cosz*cosy; + result.m1 = (cosz*siny*sinx) - (sinz*cosx); + result.m2 = (cosz*siny*cosx) + (sinz*sinx); + + result.m4 = sinz*cosy; + result.m5 = (sinz*siny*sinx) + (cosz*cosx); + result.m6 = (sinz*siny*cosx) - (cosz*sinx); + + result.m8 = -siny; + result.m9 = cosy*sinx; + result.m10= cosy*cosx; + + return result; +} + +// Get zyx-rotation matrix +// NOTE: Angle must be provided in radians +RMAPI Matrix MatrixRotateZYX(Vector3 angle) +{ + Matrix result = { 0 }; + + float cz = cosf(angle.z); + float sz = sinf(angle.z); + float cy = cosf(angle.y); + float sy = sinf(angle.y); + float cx = cosf(angle.x); + float sx = sinf(angle.x); + + result.m0 = cz*cy; + result.m4 = cz*sy*sx - cx*sz; + result.m8 = sz*sx + cz*cx*sy; + result.m12 = 0; + + result.m1 = cy*sz; + result.m5 = cz*cx + sz*sy*sx; + result.m9 = cx*sz*sy - cz*sx; + result.m13 = 0; + + result.m2 = -sy; + result.m6 = cy*sx; + result.m10 = cy*cx; + result.m14 = 0; + + result.m3 = 0; + result.m7 = 0; + result.m11 = 0; + result.m15 = 1; + + return result; +} + +// Get scaling matrix +RMAPI Matrix MatrixScale(float x, float y, float z) +{ + Matrix result = { x, 0.0f, 0.0f, 0.0f, + 0.0f, y, 0.0f, 0.0f, + 0.0f, 0.0f, z, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f }; + + return result; +} + +// Get perspective projection matrix +RMAPI Matrix MatrixFrustum(double left, double right, double bottom, double top, double nearPlane, double farPlane) +{ + Matrix result = { 0 }; + + float rl = (float)(right - left); + float tb = (float)(top - bottom); + float fn = (float)(farPlane - nearPlane); + + result.m0 = ((float)nearPlane*2.0f)/rl; + result.m1 = 0.0f; + result.m2 = 0.0f; + result.m3 = 0.0f; + + result.m4 = 0.0f; + result.m5 = ((float)nearPlane*2.0f)/tb; + result.m6 = 0.0f; + result.m7 = 0.0f; + + result.m8 = ((float)right + (float)left)/rl; + result.m9 = ((float)top + (float)bottom)/tb; + result.m10 = -((float)farPlane + (float)nearPlane)/fn; + result.m11 = -1.0f; + + result.m12 = 0.0f; + result.m13 = 0.0f; + result.m14 = -((float)farPlane*(float)nearPlane*2.0f)/fn; + result.m15 = 0.0f; + + return result; +} + +// Get perspective projection matrix +// NOTE: Fovy angle must be provided in radians +RMAPI Matrix MatrixPerspective(double fovY, double aspect, double nearPlane, double farPlane) +{ + Matrix result = { 0 }; + + double top = nearPlane*tan(fovY*0.5); + double bottom = -top; + double right = top*aspect; + double left = -right; + + // MatrixFrustum(-right, right, -top, top, near, far); + float rl = (float)(right - left); + float tb = (float)(top - bottom); + float fn = (float)(farPlane - nearPlane); + + result.m0 = ((float)nearPlane*2.0f)/rl; + result.m5 = ((float)nearPlane*2.0f)/tb; + result.m8 = ((float)right + (float)left)/rl; + result.m9 = ((float)top + (float)bottom)/tb; + result.m10 = -((float)farPlane + (float)nearPlane)/fn; + result.m11 = -1.0f; + result.m14 = -((float)farPlane*(float)nearPlane*2.0f)/fn; + + return result; +} + +// Get orthographic projection matrix +RMAPI Matrix MatrixOrtho(double left, double right, double bottom, double top, double nearPlane, double farPlane) +{ + Matrix result = { 0 }; + + float rl = (float)(right - left); + float tb = (float)(top - bottom); + float fn = (float)(farPlane - nearPlane); + + result.m0 = 2.0f/rl; + result.m1 = 0.0f; + result.m2 = 0.0f; + result.m3 = 0.0f; + result.m4 = 0.0f; + result.m5 = 2.0f/tb; + result.m6 = 0.0f; + result.m7 = 0.0f; + result.m8 = 0.0f; + result.m9 = 0.0f; + result.m10 = -2.0f/fn; + result.m11 = 0.0f; + result.m12 = -((float)left + (float)right)/rl; + result.m13 = -((float)top + (float)bottom)/tb; + result.m14 = -((float)farPlane + (float)nearPlane)/fn; + result.m15 = 1.0f; + + return result; +} + +// Get camera look-at matrix (view matrix) +RMAPI Matrix MatrixLookAt(Vector3 eye, Vector3 target, Vector3 up) +{ + Matrix result = { 0 }; + + float length = 0.0f; + float ilength = 0.0f; + + // Vector3Subtract(eye, target) + Vector3 vz = { eye.x - target.x, eye.y - target.y, eye.z - target.z }; + + // Vector3Normalize(vz) + Vector3 v = vz; + length = sqrtf(v.x*v.x + v.y*v.y + v.z*v.z); + if (length == 0.0f) length = 1.0f; + ilength = 1.0f/length; + vz.x *= ilength; + vz.y *= ilength; + vz.z *= ilength; + + // Vector3CrossProduct(up, vz) + Vector3 vx = { up.y*vz.z - up.z*vz.y, up.z*vz.x - up.x*vz.z, up.x*vz.y - up.y*vz.x }; + + // Vector3Normalize(x) + v = vx; + length = sqrtf(v.x*v.x + v.y*v.y + v.z*v.z); + if (length == 0.0f) length = 1.0f; + ilength = 1.0f/length; + vx.x *= ilength; + vx.y *= ilength; + vx.z *= ilength; + + // Vector3CrossProduct(vz, vx) + Vector3 vy = { vz.y*vx.z - vz.z*vx.y, vz.z*vx.x - vz.x*vx.z, vz.x*vx.y - vz.y*vx.x }; + + result.m0 = vx.x; + result.m1 = vy.x; + result.m2 = vz.x; + result.m3 = 0.0f; + result.m4 = vx.y; + result.m5 = vy.y; + result.m6 = vz.y; + result.m7 = 0.0f; + result.m8 = vx.z; + result.m9 = vy.z; + result.m10 = vz.z; + result.m11 = 0.0f; + result.m12 = -(vx.x*eye.x + vx.y*eye.y + vx.z*eye.z); // Vector3DotProduct(vx, eye) + result.m13 = -(vy.x*eye.x + vy.y*eye.y + vy.z*eye.z); // Vector3DotProduct(vy, eye) + result.m14 = -(vz.x*eye.x + vz.y*eye.y + vz.z*eye.z); // Vector3DotProduct(vz, eye) + result.m15 = 1.0f; + + return result; +} + +// Get float array of matrix data +RMAPI float16 MatrixToFloatV(Matrix mat) +{ + float16 result = { 0 }; + + result.v[0] = mat.m0; + result.v[1] = mat.m1; + result.v[2] = mat.m2; + result.v[3] = mat.m3; + result.v[4] = mat.m4; + result.v[5] = mat.m5; + result.v[6] = mat.m6; + result.v[7] = mat.m7; + result.v[8] = mat.m8; + result.v[9] = mat.m9; + result.v[10] = mat.m10; + result.v[11] = mat.m11; + result.v[12] = mat.m12; + result.v[13] = mat.m13; + result.v[14] = mat.m14; + result.v[15] = mat.m15; + + return result; +} + +//---------------------------------------------------------------------------------- +// Module Functions Definition - Quaternion math +//---------------------------------------------------------------------------------- + +// Add two quaternions +RMAPI Quaternion QuaternionAdd(Quaternion q1, Quaternion q2) +{ + Quaternion result = {q1.x + q2.x, q1.y + q2.y, q1.z + q2.z, q1.w + q2.w}; + + return result; +} + +// Add quaternion and float value +RMAPI Quaternion QuaternionAddValue(Quaternion q, float add) +{ + Quaternion result = {q.x + add, q.y + add, q.z + add, q.w + add}; + + return result; +} + +// Subtract two quaternions +RMAPI Quaternion QuaternionSubtract(Quaternion q1, Quaternion q2) +{ + Quaternion result = {q1.x - q2.x, q1.y - q2.y, q1.z - q2.z, q1.w - q2.w}; + + return result; +} + +// Subtract quaternion and float value +RMAPI Quaternion QuaternionSubtractValue(Quaternion q, float sub) +{ + Quaternion result = {q.x - sub, q.y - sub, q.z - sub, q.w - sub}; + + return result; +} + +// Get identity quaternion +RMAPI Quaternion QuaternionIdentity(void) +{ + Quaternion result = { 0.0f, 0.0f, 0.0f, 1.0f }; + + return result; +} + +// Computes the length of a quaternion +RMAPI float QuaternionLength(Quaternion q) +{ + float result = sqrtf(q.x*q.x + q.y*q.y + q.z*q.z + q.w*q.w); + + return result; +} + +// Normalize provided quaternion +RMAPI Quaternion QuaternionNormalize(Quaternion q) +{ + Quaternion result = { 0 }; + + float length = sqrtf(q.x*q.x + q.y*q.y + q.z*q.z + q.w*q.w); + if (length == 0.0f) length = 1.0f; + float ilength = 1.0f/length; + + result.x = q.x*ilength; + result.y = q.y*ilength; + result.z = q.z*ilength; + result.w = q.w*ilength; + + return result; +} + +// Invert provided quaternion +RMAPI Quaternion QuaternionInvert(Quaternion q) +{ + Quaternion result = q; + + float lengthSq = q.x*q.x + q.y*q.y + q.z*q.z + q.w*q.w; + + if (lengthSq != 0.0f) + { + float invLength = 1.0f/lengthSq; + + result.x *= -invLength; + result.y *= -invLength; + result.z *= -invLength; + result.w *= invLength; + } + + return result; +} + +// Calculate two quaternion multiplication +RMAPI Quaternion QuaternionMultiply(Quaternion q1, Quaternion q2) +{ + Quaternion result = { 0 }; + + float qax = q1.x, qay = q1.y, qaz = q1.z, qaw = q1.w; + float qbx = q2.x, qby = q2.y, qbz = q2.z, qbw = q2.w; + + result.x = qax*qbw + qaw*qbx + qay*qbz - qaz*qby; + result.y = qay*qbw + qaw*qby + qaz*qbx - qax*qbz; + result.z = qaz*qbw + qaw*qbz + qax*qby - qay*qbx; + result.w = qaw*qbw - qax*qbx - qay*qby - qaz*qbz; + + return result; +} + +// Scale quaternion by float value +RMAPI Quaternion QuaternionScale(Quaternion q, float mul) +{ + Quaternion result = { 0 }; + + result.x = q.x*mul; + result.y = q.y*mul; + result.z = q.z*mul; + result.w = q.w*mul; + + return result; +} + +// Divide two quaternions +RMAPI Quaternion QuaternionDivide(Quaternion q1, Quaternion q2) +{ + Quaternion result = { q1.x/q2.x, q1.y/q2.y, q1.z/q2.z, q1.w/q2.w }; + + return result; +} + +// Calculate linear interpolation between two quaternions +RMAPI Quaternion QuaternionLerp(Quaternion q1, Quaternion q2, float amount) +{ + Quaternion result = { 0 }; + + result.x = q1.x + amount*(q2.x - q1.x); + result.y = q1.y + amount*(q2.y - q1.y); + result.z = q1.z + amount*(q2.z - q1.z); + result.w = q1.w + amount*(q2.w - q1.w); + + return result; +} + +// Calculate slerp-optimized interpolation between two quaternions +RMAPI Quaternion QuaternionNlerp(Quaternion q1, Quaternion q2, float amount) +{ + Quaternion result = { 0 }; + + // QuaternionLerp(q1, q2, amount) + result.x = q1.x + amount*(q2.x - q1.x); + result.y = q1.y + amount*(q2.y - q1.y); + result.z = q1.z + amount*(q2.z - q1.z); + result.w = q1.w + amount*(q2.w - q1.w); + + // QuaternionNormalize(q); + Quaternion q = result; + float length = sqrtf(q.x*q.x + q.y*q.y + q.z*q.z + q.w*q.w); + if (length == 0.0f) length = 1.0f; + float ilength = 1.0f/length; + + result.x = q.x*ilength; + result.y = q.y*ilength; + result.z = q.z*ilength; + result.w = q.w*ilength; + + return result; +} + +// Calculates spherical linear interpolation between two quaternions +RMAPI Quaternion QuaternionSlerp(Quaternion q1, Quaternion q2, float amount) +{ + Quaternion result = { 0 }; + +#if !defined(EPSILON) + #define EPSILON 0.000001f +#endif + + float cosHalfTheta = q1.x*q2.x + q1.y*q2.y + q1.z*q2.z + q1.w*q2.w; + + if (cosHalfTheta < 0) + { + q2.x = -q2.x; q2.y = -q2.y; q2.z = -q2.z; q2.w = -q2.w; + cosHalfTheta = -cosHalfTheta; + } + + if (fabsf(cosHalfTheta) >= 1.0f) result = q1; + else if (cosHalfTheta > 0.95f) result = QuaternionNlerp(q1, q2, amount); + else + { + float halfTheta = acosf(cosHalfTheta); + float sinHalfTheta = sqrtf(1.0f - cosHalfTheta*cosHalfTheta); + + if (fabsf(sinHalfTheta) < EPSILON) + { + result.x = (q1.x*0.5f + q2.x*0.5f); + result.y = (q1.y*0.5f + q2.y*0.5f); + result.z = (q1.z*0.5f + q2.z*0.5f); + result.w = (q1.w*0.5f + q2.w*0.5f); + } + else + { + float ratioA = sinf((1 - amount)*halfTheta)/sinHalfTheta; + float ratioB = sinf(amount*halfTheta)/sinHalfTheta; + + result.x = (q1.x*ratioA + q2.x*ratioB); + result.y = (q1.y*ratioA + q2.y*ratioB); + result.z = (q1.z*ratioA + q2.z*ratioB); + result.w = (q1.w*ratioA + q2.w*ratioB); + } + } + + return result; +} + +// Calculate quaternion cubic spline interpolation using Cubic Hermite Spline algorithm +// as described in the GLTF 2.0 specification: https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#interpolation-cubic +RMAPI Quaternion QuaternionCubicHermiteSpline(Quaternion q1, Quaternion outTangent1, Quaternion q2, Quaternion inTangent2, float t) +{ + float t2 = t*t; + float t3 = t2*t; + float h00 = 2*t3 - 3*t2 + 1; + float h10 = t3 - 2*t2 + t; + float h01 = -2*t3 + 3*t2; + float h11 = t3 - t2; + + Quaternion p0 = QuaternionScale(q1, h00); + Quaternion m0 = QuaternionScale(outTangent1, h10); + Quaternion p1 = QuaternionScale(q2, h01); + Quaternion m1 = QuaternionScale(inTangent2, h11); + + Quaternion result = { 0 }; + + result = QuaternionAdd(p0, m0); + result = QuaternionAdd(result, p1); + result = QuaternionAdd(result, m1); + result = QuaternionNormalize(result); + + return result; +} + +// Calculate quaternion based on the rotation from one vector to another +RMAPI Quaternion QuaternionFromVector3ToVector3(Vector3 from, Vector3 to) +{ + Quaternion result = { 0 }; + + float cos2Theta = (from.x*to.x + from.y*to.y + from.z*to.z); // Vector3DotProduct(from, to) + Vector3 cross = { from.y*to.z - from.z*to.y, from.z*to.x - from.x*to.z, from.x*to.y - from.y*to.x }; // Vector3CrossProduct(from, to) + + result.x = cross.x; + result.y = cross.y; + result.z = cross.z; + result.w = 1.0f + cos2Theta; + + // QuaternionNormalize(q); + // NOTE: Normalize to essentially nlerp the original and identity to 0.5 + Quaternion q = result; + float length = sqrtf(q.x*q.x + q.y*q.y + q.z*q.z + q.w*q.w); + if (length == 0.0f) length = 1.0f; + float ilength = 1.0f/length; + + result.x = q.x*ilength; + result.y = q.y*ilength; + result.z = q.z*ilength; + result.w = q.w*ilength; + + return result; +} + +// Get a quaternion for a given rotation matrix +RMAPI Quaternion QuaternionFromMatrix(Matrix mat) +{ + Quaternion result = { 0 }; + + float fourWSquaredMinus1 = mat.m0 + mat.m5 + mat.m10; + float fourXSquaredMinus1 = mat.m0 - mat.m5 - mat.m10; + float fourYSquaredMinus1 = mat.m5 - mat.m0 - mat.m10; + float fourZSquaredMinus1 = mat.m10 - mat.m0 - mat.m5; + + int biggestIndex = 0; + float fourBiggestSquaredMinus1 = fourWSquaredMinus1; + if (fourXSquaredMinus1 > fourBiggestSquaredMinus1) + { + fourBiggestSquaredMinus1 = fourXSquaredMinus1; + biggestIndex = 1; + } + + if (fourYSquaredMinus1 > fourBiggestSquaredMinus1) + { + fourBiggestSquaredMinus1 = fourYSquaredMinus1; + biggestIndex = 2; + } + + if (fourZSquaredMinus1 > fourBiggestSquaredMinus1) + { + fourBiggestSquaredMinus1 = fourZSquaredMinus1; + biggestIndex = 3; + } + + float biggestVal = sqrtf(fourBiggestSquaredMinus1 + 1.0f)*0.5f; + float mult = 0.25f/biggestVal; + + switch (biggestIndex) + { + case 0: + result.w = biggestVal; + result.x = (mat.m6 - mat.m9)*mult; + result.y = (mat.m8 - mat.m2)*mult; + result.z = (mat.m1 - mat.m4)*mult; + break; + case 1: + result.x = biggestVal; + result.w = (mat.m6 - mat.m9)*mult; + result.y = (mat.m1 + mat.m4)*mult; + result.z = (mat.m8 + mat.m2)*mult; + break; + case 2: + result.y = biggestVal; + result.w = (mat.m8 - mat.m2)*mult; + result.x = (mat.m1 + mat.m4)*mult; + result.z = (mat.m6 + mat.m9)*mult; + break; + case 3: + result.z = biggestVal; + result.w = (mat.m1 - mat.m4)*mult; + result.x = (mat.m8 + mat.m2)*mult; + result.y = (mat.m6 + mat.m9)*mult; + break; + } + + return result; +} + +// Get a matrix for a given quaternion +RMAPI Matrix QuaternionToMatrix(Quaternion q) +{ + Matrix result = { 1.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f }; // MatrixIdentity() + + float a2 = q.x*q.x; + float b2 = q.y*q.y; + float c2 = q.z*q.z; + float ac = q.x*q.z; + float ab = q.x*q.y; + float bc = q.y*q.z; + float ad = q.w*q.x; + float bd = q.w*q.y; + float cd = q.w*q.z; + + result.m0 = 1 - 2*(b2 + c2); + result.m1 = 2*(ab + cd); + result.m2 = 2*(ac - bd); + + result.m4 = 2*(ab - cd); + result.m5 = 1 - 2*(a2 + c2); + result.m6 = 2*(bc + ad); + + result.m8 = 2*(ac + bd); + result.m9 = 2*(bc - ad); + result.m10 = 1 - 2*(a2 + b2); + + return result; +} + +// Get rotation quaternion for an angle and axis +// NOTE: Angle must be provided in radians +RMAPI Quaternion QuaternionFromAxisAngle(Vector3 axis, float angle) +{ + Quaternion result = { 0.0f, 0.0f, 0.0f, 1.0f }; + + float axisLength = sqrtf(axis.x*axis.x + axis.y*axis.y + axis.z*axis.z); + + if (axisLength != 0.0f) + { + angle *= 0.5f; + + float length = 0.0f; + float ilength = 0.0f; + + // Vector3Normalize(axis) + length = axisLength; + if (length == 0.0f) length = 1.0f; + ilength = 1.0f/length; + axis.x *= ilength; + axis.y *= ilength; + axis.z *= ilength; + + float sinres = sinf(angle); + float cosres = cosf(angle); + + result.x = axis.x*sinres; + result.y = axis.y*sinres; + result.z = axis.z*sinres; + result.w = cosres; + + // QuaternionNormalize(q); + Quaternion q = result; + length = sqrtf(q.x*q.x + q.y*q.y + q.z*q.z + q.w*q.w); + if (length == 0.0f) length = 1.0f; + ilength = 1.0f/length; + result.x = q.x*ilength; + result.y = q.y*ilength; + result.z = q.z*ilength; + result.w = q.w*ilength; + } + + return result; +} + +// Get the rotation angle and axis for a given quaternion +RMAPI void QuaternionToAxisAngle(Quaternion q, Vector3 *outAxis, float *outAngle) +{ + if (fabsf(q.w) > 1.0f) + { + // QuaternionNormalize(q); + float length = sqrtf(q.x*q.x + q.y*q.y + q.z*q.z + q.w*q.w); + if (length == 0.0f) length = 1.0f; + float ilength = 1.0f/length; + + q.x = q.x*ilength; + q.y = q.y*ilength; + q.z = q.z*ilength; + q.w = q.w*ilength; + } + + Vector3 resAxis = { 0.0f, 0.0f, 0.0f }; + float resAngle = 2.0f*acosf(q.w); + float den = sqrtf(1.0f - q.w*q.w); + + if (den > EPSILON) + { + resAxis.x = q.x/den; + resAxis.y = q.y/den; + resAxis.z = q.z/den; + } + else + { + // This occurs when the angle is zero. + // Not a problem: just set an arbitrary normalized axis. + resAxis.x = 1.0f; + } + + *outAxis = resAxis; + *outAngle = resAngle; +} + +// Get the quaternion equivalent to Euler angles +// NOTE: Rotation order is ZYX +RMAPI Quaternion QuaternionFromEuler(float pitch, float yaw, float roll) +{ + Quaternion result = { 0 }; + + float x0 = cosf(pitch*0.5f); + float x1 = sinf(pitch*0.5f); + float y0 = cosf(yaw*0.5f); + float y1 = sinf(yaw*0.5f); + float z0 = cosf(roll*0.5f); + float z1 = sinf(roll*0.5f); + + result.x = x1*y0*z0 - x0*y1*z1; + result.y = x0*y1*z0 + x1*y0*z1; + result.z = x0*y0*z1 - x1*y1*z0; + result.w = x0*y0*z0 + x1*y1*z1; + + return result; +} + +// Get the Euler angles equivalent to quaternion (roll, pitch, yaw) +// NOTE: Angles are returned in a Vector3 struct in radians +RMAPI Vector3 QuaternionToEuler(Quaternion q) +{ + Vector3 result = { 0 }; + + // Roll (x-axis rotation) + float x0 = 2.0f*(q.w*q.x + q.y*q.z); + float x1 = 1.0f - 2.0f*(q.x*q.x + q.y*q.y); + result.x = atan2f(x0, x1); + + // Pitch (y-axis rotation) + float y0 = 2.0f*(q.w*q.y - q.z*q.x); + y0 = y0 > 1.0f ? 1.0f : y0; + y0 = y0 < -1.0f ? -1.0f : y0; + result.y = asinf(y0); + + // Yaw (z-axis rotation) + float z0 = 2.0f*(q.w*q.z + q.x*q.y); + float z1 = 1.0f - 2.0f*(q.y*q.y + q.z*q.z); + result.z = atan2f(z0, z1); + + return result; +} + +// Transform a quaternion given a transformation matrix +RMAPI Quaternion QuaternionTransform(Quaternion q, Matrix mat) +{ + Quaternion result = { 0 }; + + result.x = mat.m0*q.x + mat.m4*q.y + mat.m8*q.z + mat.m12*q.w; + result.y = mat.m1*q.x + mat.m5*q.y + mat.m9*q.z + mat.m13*q.w; + result.z = mat.m2*q.x + mat.m6*q.y + mat.m10*q.z + mat.m14*q.w; + result.w = mat.m3*q.x + mat.m7*q.y + mat.m11*q.z + mat.m15*q.w; + + return result; +} + +// Check whether two given quaternions are almost equal +RMAPI int QuaternionEquals(Quaternion p, Quaternion q) +{ +#if !defined(EPSILON) + #define EPSILON 0.000001f +#endif + + int result = (((fabsf(p.x - q.x)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.x), fabsf(q.x))))) && + ((fabsf(p.y - q.y)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.y), fabsf(q.y))))) && + ((fabsf(p.z - q.z)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.z), fabsf(q.z))))) && + ((fabsf(p.w - q.w)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.w), fabsf(q.w)))))) || + (((fabsf(p.x + q.x)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.x), fabsf(q.x))))) && + ((fabsf(p.y + q.y)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.y), fabsf(q.y))))) && + ((fabsf(p.z + q.z)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.z), fabsf(q.z))))) && + ((fabsf(p.w + q.w)) <= (EPSILON*fmaxf(1.0f, fmaxf(fabsf(p.w), fabsf(q.w)))))); + + return result; +} + +// Decompose a transformation matrix into its rotational, translational and scaling components +RMAPI void MatrixDecompose(Matrix mat, Vector3 *translation, Quaternion *rotation, Vector3 *scale) +{ + // Extract translation. + translation->x = mat.m12; + translation->y = mat.m13; + translation->z = mat.m14; + + // Extract upper-left for determinant computation + const float a = mat.m0; + const float b = mat.m4; + const float c = mat.m8; + const float d = mat.m1; + const float e = mat.m5; + const float f = mat.m9; + const float g = mat.m2; + const float h = mat.m6; + const float i = mat.m10; + const float A = e*i - f*h; + const float B = f*g - d*i; + const float C = d*h - e*g; + + // Extract scale + const float det = a*A + b*B + c*C; + Vector3 abc = { a, b, c }; + Vector3 def = { d, e, f }; + Vector3 ghi = { g, h, i }; + + float scalex = Vector3Length(abc); + float scaley = Vector3Length(def); + float scalez = Vector3Length(ghi); + Vector3 s = { scalex, scaley, scalez }; + + if (det < 0) s = Vector3Negate(s); + + *scale = s; + + // Remove scale from the matrix if it is not close to zero + Matrix clone = mat; + if (!FloatEquals(det, 0)) + { + clone.m0 /= s.x; + clone.m4 /= s.x; + clone.m8 /= s.x; + clone.m1 /= s.y; + clone.m5 /= s.y; + clone.m9 /= s.y; + clone.m2 /= s.z; + clone.m6 /= s.z; + clone.m10 /= s.z; + + // Extract rotation + *rotation = QuaternionFromMatrix(clone); + } + else + { + // Set to identity if close to zero + *rotation = QuaternionIdentity(); + } +} + +#if defined(__cplusplus) && !defined(RAYMATH_DISABLE_CPP_OPERATORS) + +// Optional C++ math operators +//------------------------------------------------------------------------------- + +// Vector2 operators +static constexpr Vector2 Vector2Zeros = { 0, 0 }; +static constexpr Vector2 Vector2Ones = { 1, 1 }; +static constexpr Vector2 Vector2UnitX = { 1, 0 }; +static constexpr Vector2 Vector2UnitY = { 0, 1 }; + +inline Vector2 operator + (const Vector2& lhs, const Vector2& rhs) +{ + return Vector2Add(lhs, rhs); +} + +inline const Vector2& operator += (Vector2& lhs, const Vector2& rhs) +{ + lhs = Vector2Add(lhs, rhs); + return lhs; +} + +inline Vector2 operator - (const Vector2& lhs, const Vector2& rhs) +{ + return Vector2Subtract(lhs, rhs); +} + +inline const Vector2& operator -= (Vector2& lhs, const Vector2& rhs) +{ + lhs = Vector2Subtract(lhs, rhs); + return lhs; +} + +inline Vector2 operator * (const Vector2& lhs, const float& rhs) +{ + return Vector2Scale(lhs, rhs); +} + +inline const Vector2& operator *= (Vector2& lhs, const float& rhs) +{ + lhs = Vector2Scale(lhs, rhs); + return lhs; +} + +inline Vector2 operator * (const Vector2& lhs, const Vector2& rhs) +{ + return Vector2Multiply(lhs, rhs); +} + +inline const Vector2& operator *= (Vector2& lhs, const Vector2& rhs) +{ + lhs = Vector2Multiply(lhs, rhs); + return lhs; +} + +inline Vector2 operator * (const Vector2& lhs, const Matrix& rhs) +{ + return Vector2Transform(lhs, rhs); +} + +inline const Vector2& operator -= (Vector2& lhs, const Matrix& rhs) +{ + lhs = Vector2Transform(lhs, rhs); + return lhs; +} + +inline Vector2 operator / (const Vector2& lhs, const float& rhs) +{ + return Vector2Scale(lhs, 1.0f / rhs); +} + +inline const Vector2& operator /= (Vector2& lhs, const float& rhs) +{ + lhs = Vector2Scale(lhs, rhs); + return lhs; +} + +inline Vector2 operator / (const Vector2& lhs, const Vector2& rhs) +{ + return Vector2Divide(lhs, rhs); +} + +inline const Vector2& operator /= (Vector2& lhs, const Vector2& rhs) +{ + lhs = Vector2Divide(lhs, rhs); + return lhs; +} + +inline bool operator == (const Vector2& lhs, const Vector2& rhs) +{ + return FloatEquals(lhs.x, rhs.x) && FloatEquals(lhs.y, rhs.y); +} + +inline bool operator != (const Vector2& lhs, const Vector2& rhs) +{ + return !FloatEquals(lhs.x, rhs.x) || !FloatEquals(lhs.y, rhs.y); +} + +// Vector3 operators +static constexpr Vector3 Vector3Zeros = { 0, 0, 0 }; +static constexpr Vector3 Vector3Ones = { 1, 1, 1 }; +static constexpr Vector3 Vector3UnitX = { 1, 0, 0 }; +static constexpr Vector3 Vector3UnitY = { 0, 1, 0 }; +static constexpr Vector3 Vector3UnitZ = { 0, 0, 1 }; + +inline Vector3 operator + (const Vector3& lhs, const Vector3& rhs) +{ + return Vector3Add(lhs, rhs); +} + +inline const Vector3& operator += (Vector3& lhs, const Vector3& rhs) +{ + lhs = Vector3Add(lhs, rhs); + return lhs; +} + +inline Vector3 operator - (const Vector3& lhs, const Vector3& rhs) +{ + return Vector3Subtract(lhs, rhs); +} + +inline const Vector3& operator -= (Vector3& lhs, const Vector3& rhs) +{ + lhs = Vector3Subtract(lhs, rhs); + return lhs; +} + +inline Vector3 operator * (const Vector3& lhs, const float& rhs) +{ + return Vector3Scale(lhs, rhs); +} + +inline const Vector3& operator *= (Vector3& lhs, const float& rhs) +{ + lhs = Vector3Scale(lhs, rhs); + return lhs; +} + +inline Vector3 operator * (const Vector3& lhs, const Vector3& rhs) +{ + return Vector3Multiply(lhs, rhs); +} + +inline const Vector3& operator *= (Vector3& lhs, const Vector3& rhs) +{ + lhs = Vector3Multiply(lhs, rhs); + return lhs; +} + +inline Vector3 operator * (const Vector3& lhs, const Matrix& rhs) +{ + return Vector3Transform(lhs, rhs); +} + +inline const Vector3& operator -= (Vector3& lhs, const Matrix& rhs) +{ + lhs = Vector3Transform(lhs, rhs); + return lhs; +} + +inline Vector3 operator / (const Vector3& lhs, const float& rhs) +{ + return Vector3Scale(lhs, 1.0f / rhs); +} + +inline const Vector3& operator /= (Vector3& lhs, const float& rhs) +{ + lhs = Vector3Scale(lhs, rhs); + return lhs; +} + +inline Vector3 operator / (const Vector3& lhs, const Vector3& rhs) +{ + return Vector3Divide(lhs, rhs); +} + +inline const Vector3& operator /= (Vector3& lhs, const Vector3& rhs) +{ + lhs = Vector3Divide(lhs, rhs); + return lhs; +} + +inline bool operator == (const Vector3& lhs, const Vector3& rhs) +{ + return FloatEquals(lhs.x, rhs.x) && FloatEquals(lhs.y, rhs.y) && FloatEquals(lhs.z, rhs.z); +} + +inline bool operator != (const Vector3& lhs, const Vector3& rhs) +{ + return !FloatEquals(lhs.x, rhs.x) || !FloatEquals(lhs.y, rhs.y) || !FloatEquals(lhs.z, rhs.z); +} + +// Vector4 operators +static constexpr Vector4 Vector4Zeros = { 0, 0, 0, 0 }; +static constexpr Vector4 Vector4Ones = { 1, 1, 1, 1 }; +static constexpr Vector4 Vector4UnitX = { 1, 0, 0, 0 }; +static constexpr Vector4 Vector4UnitY = { 0, 1, 0, 0 }; +static constexpr Vector4 Vector4UnitZ = { 0, 0, 1, 0 }; +static constexpr Vector4 Vector4UnitW = { 0, 0, 0, 1 }; + +inline Vector4 operator + (const Vector4& lhs, const Vector4& rhs) +{ + return Vector4Add(lhs, rhs); +} + +inline const Vector4& operator += (Vector4& lhs, const Vector4& rhs) +{ + lhs = Vector4Add(lhs, rhs); + return lhs; +} + +inline Vector4 operator - (const Vector4& lhs, const Vector4& rhs) +{ + return Vector4Subtract(lhs, rhs); +} + +inline const Vector4& operator -= (Vector4& lhs, const Vector4& rhs) +{ + lhs = Vector4Subtract(lhs, rhs); + return lhs; +} + +inline Vector4 operator * (const Vector4& lhs, const float& rhs) +{ + return Vector4Scale(lhs, rhs); +} + +inline const Vector4& operator *= (Vector4& lhs, const float& rhs) +{ + lhs = Vector4Scale(lhs, rhs); + return lhs; +} + +inline Vector4 operator * (const Vector4& lhs, const Vector4& rhs) +{ + return Vector4Multiply(lhs, rhs); +} + +inline const Vector4& operator *= (Vector4& lhs, const Vector4& rhs) +{ + lhs = Vector4Multiply(lhs, rhs); + return lhs; +} + +inline Vector4 operator / (const Vector4& lhs, const float& rhs) +{ + return Vector4Scale(lhs, 1.0f / rhs); +} + +inline const Vector4& operator /= (Vector4& lhs, const float& rhs) +{ + lhs = Vector4Scale(lhs, rhs); + return lhs; +} + +inline Vector4 operator / (const Vector4& lhs, const Vector4& rhs) +{ + return Vector4Divide(lhs, rhs); +} + +inline const Vector4& operator /= (Vector4& lhs, const Vector4& rhs) +{ + lhs = Vector4Divide(lhs, rhs); + return lhs; +} + +inline bool operator == (const Vector4& lhs, const Vector4& rhs) +{ + return FloatEquals(lhs.x, rhs.x) && FloatEquals(lhs.y, rhs.y) && FloatEquals(lhs.z, rhs.z) && FloatEquals(lhs.w, rhs.w); +} + +inline bool operator != (const Vector4& lhs, const Vector4& rhs) +{ + return !FloatEquals(lhs.x, rhs.x) || !FloatEquals(lhs.y, rhs.y) || !FloatEquals(lhs.z, rhs.z) || !FloatEquals(lhs.w, rhs.w); +} + +// Quaternion operators +static constexpr Quaternion QuaternionZeros = { 0, 0, 0, 0 }; +static constexpr Quaternion QuaternionOnes = { 1, 1, 1, 1 }; +static constexpr Quaternion QuaternionUnitX = { 0, 0, 0, 1 }; + +inline Quaternion operator + (const Quaternion& lhs, const float& rhs) +{ + return QuaternionAddValue(lhs, rhs); +} + +inline const Quaternion& operator += (Quaternion& lhs, const float& rhs) +{ + lhs = QuaternionAddValue(lhs, rhs); + return lhs; +} + +inline Quaternion operator - (const Quaternion& lhs, const float& rhs) +{ + return QuaternionSubtractValue(lhs, rhs); +} + +inline const Quaternion& operator -= (Quaternion& lhs, const float& rhs) +{ + lhs = QuaternionSubtractValue(lhs, rhs); + return lhs; +} + +inline Quaternion operator * (const Quaternion& lhs, const Matrix& rhs) +{ + return QuaternionTransform(lhs, rhs); +} + +inline const Quaternion& operator *= (Quaternion& lhs, const Matrix& rhs) +{ + lhs = QuaternionTransform(lhs, rhs); + return lhs; +} + +// Matrix operators +inline Matrix operator + (const Matrix& lhs, const Matrix& rhs) +{ + return MatrixAdd(lhs, rhs); +} + +inline const Matrix& operator += (Matrix& lhs, const Matrix& rhs) +{ + lhs = MatrixAdd(lhs, rhs); + return lhs; +} + +inline Matrix operator - (const Matrix& lhs, const Matrix& rhs) +{ + return MatrixSubtract(lhs, rhs); +} + +inline const Matrix& operator -= (Matrix& lhs, const Matrix& rhs) +{ + lhs = MatrixSubtract(lhs, rhs); + return lhs; +} + +inline Matrix operator * (const Matrix& lhs, const Matrix& rhs) +{ + return MatrixMultiply(lhs, rhs); +} + +inline const Matrix& operator *= (Matrix& lhs, const Matrix& rhs) +{ + lhs = MatrixMultiply(lhs, rhs); + return lhs; +} +//------------------------------------------------------------------------------- +#endif // C++ operators + +#endif // RAYMATH_H diff --git a/raylib files/raylib-5.5_win64_msvc16 opengl33/include/rlgl.h b/raylib files/raylib-5.5_win64_msvc16 opengl33/include/rlgl.h new file mode 100644 index 0000000..508960d --- /dev/null +++ b/raylib files/raylib-5.5_win64_msvc16 opengl33/include/rlgl.h @@ -0,0 +1,5262 @@ +/********************************************************************************************** +* +* rlgl v5.0 - A multi-OpenGL abstraction layer with an immediate-mode style API +* +* DESCRIPTION: +* An abstraction layer for multiple OpenGL versions (1.1, 2.1, 3.3 Core, 4.3 Core, ES 2.0) +* that provides a pseudo-OpenGL 1.1 immediate-mode style API (rlVertex, rlTranslate, rlRotate...) +* +* ADDITIONAL NOTES: +* When choosing an OpenGL backend different than OpenGL 1.1, some internal buffer are +* initialized on rlglInit() to accumulate vertex data +* +* When an internal state change is required all the stored vertex data is renderer in batch, +* additionally, rlDrawRenderBatchActive() could be called to force flushing of the batch +* +* Some resources are also loaded for convenience, here the complete list: +* - Default batch (RLGL.defaultBatch): RenderBatch system to accumulate vertex data +* - Default texture (RLGL.defaultTextureId): 1x1 white pixel R8G8B8A8 +* - Default shader (RLGL.State.defaultShaderId, RLGL.State.defaultShaderLocs) +* +* Internal buffer (and resources) must be manually unloaded calling rlglClose() +* +* CONFIGURATION: +* #define GRAPHICS_API_OPENGL_11 +* #define GRAPHICS_API_OPENGL_21 +* #define GRAPHICS_API_OPENGL_33 +* #define GRAPHICS_API_OPENGL_43 +* #define GRAPHICS_API_OPENGL_ES2 +* #define GRAPHICS_API_OPENGL_ES3 +* Use selected OpenGL graphics backend, should be supported by platform +* Those preprocessor defines are only used on rlgl module, if OpenGL version is +* required by any other module, use rlGetVersion() to check it +* +* #define RLGL_IMPLEMENTATION +* Generates the implementation of the library into the included file +* If not defined, the library is in header only mode and can be included in other headers +* or source files without problems. But only ONE file should hold the implementation +* +* #define RLGL_RENDER_TEXTURES_HINT +* Enable framebuffer objects (fbo) support (enabled by default) +* Some GPUs could not support them despite the OpenGL version +* +* #define RLGL_SHOW_GL_DETAILS_INFO +* Show OpenGL extensions and capabilities detailed logs on init +* +* #define RLGL_ENABLE_OPENGL_DEBUG_CONTEXT +* Enable debug context (only available on OpenGL 4.3) +* +* rlgl capabilities could be customized just defining some internal +* values before library inclusion (default values listed): +* +* #define RL_DEFAULT_BATCH_BUFFER_ELEMENTS 8192 // Default internal render batch elements limits +* #define RL_DEFAULT_BATCH_BUFFERS 1 // Default number of batch buffers (multi-buffering) +* #define RL_DEFAULT_BATCH_DRAWCALLS 256 // Default number of batch draw calls (by state changes: mode, texture) +* #define RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS 4 // Maximum number of textures units that can be activated on batch drawing (SetShaderValueTexture()) +* +* #define RL_MAX_MATRIX_STACK_SIZE 32 // Maximum size of internal Matrix stack +* #define RL_MAX_SHADER_LOCATIONS 32 // Maximum number of shader locations supported +* #define RL_CULL_DISTANCE_NEAR 0.01 // Default projection matrix near cull distance +* #define RL_CULL_DISTANCE_FAR 1000.0 // Default projection matrix far cull distance +* +* When loading a shader, the following vertex attributes and uniform +* location names are tried to be set automatically: +* +* #define RL_DEFAULT_SHADER_ATTRIB_NAME_POSITION "vertexPosition" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_POSITION +* #define RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD "vertexTexCoord" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD +* #define RL_DEFAULT_SHADER_ATTRIB_NAME_NORMAL "vertexNormal" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_NORMAL +* #define RL_DEFAULT_SHADER_ATTRIB_NAME_COLOR "vertexColor" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_COLOR +* #define RL_DEFAULT_SHADER_ATTRIB_NAME_TANGENT "vertexTangent" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_TANGENT +* #define RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD2 "vertexTexCoord2" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD2 +* #define RL_DEFAULT_SHADER_ATTRIB_NAME_BONEIDS "vertexBoneIds" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_BONEIDS +* #define RL_DEFAULT_SHADER_ATTRIB_NAME_BONEWEIGHTS "vertexBoneWeights" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_BONEWEIGHTS +* #define RL_DEFAULT_SHADER_UNIFORM_NAME_MVP "mvp" // model-view-projection matrix +* #define RL_DEFAULT_SHADER_UNIFORM_NAME_VIEW "matView" // view matrix +* #define RL_DEFAULT_SHADER_UNIFORM_NAME_PROJECTION "matProjection" // projection matrix +* #define RL_DEFAULT_SHADER_UNIFORM_NAME_MODEL "matModel" // model matrix +* #define RL_DEFAULT_SHADER_UNIFORM_NAME_NORMAL "matNormal" // normal matrix (transpose(inverse(matModelView))) +* #define RL_DEFAULT_SHADER_UNIFORM_NAME_COLOR "colDiffuse" // color diffuse (base tint color, multiplied by texture color) +* #define RL_DEFAULT_SHADER_UNIFORM_NAME_BONE_MATRICES "boneMatrices" // bone matrices +* #define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE0 "texture0" // texture0 (texture slot active 0) +* #define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE1 "texture1" // texture1 (texture slot active 1) +* #define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE2 "texture2" // texture2 (texture slot active 2) +* +* DEPENDENCIES: +* - OpenGL libraries (depending on platform and OpenGL version selected) +* - GLAD OpenGL extensions loading library (only for OpenGL 3.3 Core, 4.3 Core) +* +* +* LICENSE: zlib/libpng +* +* Copyright (c) 2014-2024 Ramon Santamaria (@raysan5) +* +* This software is provided "as-is", without any express or implied warranty. In no event +* will the authors be held liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, including commercial +* applications, and to alter it and redistribute it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; you must not claim that you +* wrote the original software. If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but is not required. +* +* 2. Altered source versions must be plainly marked as such, and must not be misrepresented +* as being the original software. +* +* 3. This notice may not be removed or altered from any source distribution. +* +**********************************************************************************************/ + +#ifndef RLGL_H +#define RLGL_H + +#define RLGL_VERSION "5.0" + +// Function specifiers in case library is build/used as a shared library +// NOTE: Microsoft specifiers to tell compiler that symbols are imported/exported from a .dll +// NOTE: visibility(default) attribute makes symbols "visible" when compiled with -fvisibility=hidden +#if defined(_WIN32) && defined(BUILD_LIBTYPE_SHARED) + #define RLAPI __declspec(dllexport) // We are building the library as a Win32 shared library (.dll) +#elif defined(BUILD_LIBTYPE_SHARED) + #define RLAPI __attribute__((visibility("default"))) // We are building the library as a Unix shared library (.so/.dylib) +#elif defined(_WIN32) && defined(USE_LIBTYPE_SHARED) + #define RLAPI __declspec(dllimport) // We are using the library as a Win32 shared library (.dll) +#endif + +// Function specifiers definition +#ifndef RLAPI + #define RLAPI // Functions defined as 'extern' by default (implicit specifiers) +#endif + +// Support TRACELOG macros +#ifndef TRACELOG + #define TRACELOG(level, ...) (void)0 + #define TRACELOGD(...) (void)0 +#endif + +// Allow custom memory allocators +#ifndef RL_MALLOC + #define RL_MALLOC(sz) malloc(sz) +#endif +#ifndef RL_CALLOC + #define RL_CALLOC(n,sz) calloc(n,sz) +#endif +#ifndef RL_REALLOC + #define RL_REALLOC(n,sz) realloc(n,sz) +#endif +#ifndef RL_FREE + #define RL_FREE(p) free(p) +#endif + +// Security check in case no GRAPHICS_API_OPENGL_* defined +#if !defined(GRAPHICS_API_OPENGL_11) && \ + !defined(GRAPHICS_API_OPENGL_21) && \ + !defined(GRAPHICS_API_OPENGL_33) && \ + !defined(GRAPHICS_API_OPENGL_43) && \ + !defined(GRAPHICS_API_OPENGL_ES2) && \ + !defined(GRAPHICS_API_OPENGL_ES3) + #define GRAPHICS_API_OPENGL_33 +#endif + +// Security check in case multiple GRAPHICS_API_OPENGL_* defined +#if defined(GRAPHICS_API_OPENGL_11) + #if defined(GRAPHICS_API_OPENGL_21) + #undef GRAPHICS_API_OPENGL_21 + #endif + #if defined(GRAPHICS_API_OPENGL_33) + #undef GRAPHICS_API_OPENGL_33 + #endif + #if defined(GRAPHICS_API_OPENGL_43) + #undef GRAPHICS_API_OPENGL_43 + #endif + #if defined(GRAPHICS_API_OPENGL_ES2) + #undef GRAPHICS_API_OPENGL_ES2 + #endif +#endif + +// OpenGL 2.1 uses most of OpenGL 3.3 Core functionality +// WARNING: Specific parts are checked with #if defines +#if defined(GRAPHICS_API_OPENGL_21) + #define GRAPHICS_API_OPENGL_33 +#endif + +// OpenGL 4.3 uses OpenGL 3.3 Core functionality +#if defined(GRAPHICS_API_OPENGL_43) + #define GRAPHICS_API_OPENGL_33 +#endif + +// OpenGL ES 3.0 uses OpenGL ES 2.0 functionality (and more) +#if defined(GRAPHICS_API_OPENGL_ES3) + #define GRAPHICS_API_OPENGL_ES2 +#endif + +// Support framebuffer objects by default +// NOTE: Some driver implementation do not support it, despite they should +#define RLGL_RENDER_TEXTURES_HINT + +//---------------------------------------------------------------------------------- +// Defines and Macros +//---------------------------------------------------------------------------------- + +// Default internal render batch elements limits +#ifndef RL_DEFAULT_BATCH_BUFFER_ELEMENTS + #if defined(GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_33) + // This is the maximum amount of elements (quads) per batch + // NOTE: Be careful with text, every letter maps to a quad + #define RL_DEFAULT_BATCH_BUFFER_ELEMENTS 8192 + #endif + #if defined(GRAPHICS_API_OPENGL_ES2) + // We reduce memory sizes for embedded systems (RPI and HTML5) + // NOTE: On HTML5 (emscripten) this is allocated on heap, + // by default it's only 16MB!...just take care... + #define RL_DEFAULT_BATCH_BUFFER_ELEMENTS 2048 + #endif +#endif +#ifndef RL_DEFAULT_BATCH_BUFFERS + #define RL_DEFAULT_BATCH_BUFFERS 1 // Default number of batch buffers (multi-buffering) +#endif +#ifndef RL_DEFAULT_BATCH_DRAWCALLS + #define RL_DEFAULT_BATCH_DRAWCALLS 256 // Default number of batch draw calls (by state changes: mode, texture) +#endif +#ifndef RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS + #define RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS 4 // Maximum number of textures units that can be activated on batch drawing (SetShaderValueTexture()) +#endif + +// Internal Matrix stack +#ifndef RL_MAX_MATRIX_STACK_SIZE + #define RL_MAX_MATRIX_STACK_SIZE 32 // Maximum size of Matrix stack +#endif + +// Shader limits +#ifndef RL_MAX_SHADER_LOCATIONS + #define RL_MAX_SHADER_LOCATIONS 32 // Maximum number of shader locations supported +#endif + +// Projection matrix culling +#ifndef RL_CULL_DISTANCE_NEAR + #define RL_CULL_DISTANCE_NEAR 0.01 // Default near cull distance +#endif +#ifndef RL_CULL_DISTANCE_FAR + #define RL_CULL_DISTANCE_FAR 1000.0 // Default far cull distance +#endif + +// Texture parameters (equivalent to OpenGL defines) +#define RL_TEXTURE_WRAP_S 0x2802 // GL_TEXTURE_WRAP_S +#define RL_TEXTURE_WRAP_T 0x2803 // GL_TEXTURE_WRAP_T +#define RL_TEXTURE_MAG_FILTER 0x2800 // GL_TEXTURE_MAG_FILTER +#define RL_TEXTURE_MIN_FILTER 0x2801 // GL_TEXTURE_MIN_FILTER + +#define RL_TEXTURE_FILTER_NEAREST 0x2600 // GL_NEAREST +#define RL_TEXTURE_FILTER_LINEAR 0x2601 // GL_LINEAR +#define RL_TEXTURE_FILTER_MIP_NEAREST 0x2700 // GL_NEAREST_MIPMAP_NEAREST +#define RL_TEXTURE_FILTER_NEAREST_MIP_LINEAR 0x2702 // GL_NEAREST_MIPMAP_LINEAR +#define RL_TEXTURE_FILTER_LINEAR_MIP_NEAREST 0x2701 // GL_LINEAR_MIPMAP_NEAREST +#define RL_TEXTURE_FILTER_MIP_LINEAR 0x2703 // GL_LINEAR_MIPMAP_LINEAR +#define RL_TEXTURE_FILTER_ANISOTROPIC 0x3000 // Anisotropic filter (custom identifier) +#define RL_TEXTURE_MIPMAP_BIAS_RATIO 0x4000 // Texture mipmap bias, percentage ratio (custom identifier) + +#define RL_TEXTURE_WRAP_REPEAT 0x2901 // GL_REPEAT +#define RL_TEXTURE_WRAP_CLAMP 0x812F // GL_CLAMP_TO_EDGE +#define RL_TEXTURE_WRAP_MIRROR_REPEAT 0x8370 // GL_MIRRORED_REPEAT +#define RL_TEXTURE_WRAP_MIRROR_CLAMP 0x8742 // GL_MIRROR_CLAMP_EXT + +// Matrix modes (equivalent to OpenGL) +#define RL_MODELVIEW 0x1700 // GL_MODELVIEW +#define RL_PROJECTION 0x1701 // GL_PROJECTION +#define RL_TEXTURE 0x1702 // GL_TEXTURE + +// Primitive assembly draw modes +#define RL_LINES 0x0001 // GL_LINES +#define RL_TRIANGLES 0x0004 // GL_TRIANGLES +#define RL_QUADS 0x0007 // GL_QUADS + +// GL equivalent data types +#define RL_UNSIGNED_BYTE 0x1401 // GL_UNSIGNED_BYTE +#define RL_FLOAT 0x1406 // GL_FLOAT + +// GL buffer usage hint +#define RL_STREAM_DRAW 0x88E0 // GL_STREAM_DRAW +#define RL_STREAM_READ 0x88E1 // GL_STREAM_READ +#define RL_STREAM_COPY 0x88E2 // GL_STREAM_COPY +#define RL_STATIC_DRAW 0x88E4 // GL_STATIC_DRAW +#define RL_STATIC_READ 0x88E5 // GL_STATIC_READ +#define RL_STATIC_COPY 0x88E6 // GL_STATIC_COPY +#define RL_DYNAMIC_DRAW 0x88E8 // GL_DYNAMIC_DRAW +#define RL_DYNAMIC_READ 0x88E9 // GL_DYNAMIC_READ +#define RL_DYNAMIC_COPY 0x88EA // GL_DYNAMIC_COPY + +// GL Shader type +#define RL_FRAGMENT_SHADER 0x8B30 // GL_FRAGMENT_SHADER +#define RL_VERTEX_SHADER 0x8B31 // GL_VERTEX_SHADER +#define RL_COMPUTE_SHADER 0x91B9 // GL_COMPUTE_SHADER + +// GL blending factors +#define RL_ZERO 0 // GL_ZERO +#define RL_ONE 1 // GL_ONE +#define RL_SRC_COLOR 0x0300 // GL_SRC_COLOR +#define RL_ONE_MINUS_SRC_COLOR 0x0301 // GL_ONE_MINUS_SRC_COLOR +#define RL_SRC_ALPHA 0x0302 // GL_SRC_ALPHA +#define RL_ONE_MINUS_SRC_ALPHA 0x0303 // GL_ONE_MINUS_SRC_ALPHA +#define RL_DST_ALPHA 0x0304 // GL_DST_ALPHA +#define RL_ONE_MINUS_DST_ALPHA 0x0305 // GL_ONE_MINUS_DST_ALPHA +#define RL_DST_COLOR 0x0306 // GL_DST_COLOR +#define RL_ONE_MINUS_DST_COLOR 0x0307 // GL_ONE_MINUS_DST_COLOR +#define RL_SRC_ALPHA_SATURATE 0x0308 // GL_SRC_ALPHA_SATURATE +#define RL_CONSTANT_COLOR 0x8001 // GL_CONSTANT_COLOR +#define RL_ONE_MINUS_CONSTANT_COLOR 0x8002 // GL_ONE_MINUS_CONSTANT_COLOR +#define RL_CONSTANT_ALPHA 0x8003 // GL_CONSTANT_ALPHA +#define RL_ONE_MINUS_CONSTANT_ALPHA 0x8004 // GL_ONE_MINUS_CONSTANT_ALPHA + +// GL blending functions/equations +#define RL_FUNC_ADD 0x8006 // GL_FUNC_ADD +#define RL_MIN 0x8007 // GL_MIN +#define RL_MAX 0x8008 // GL_MAX +#define RL_FUNC_SUBTRACT 0x800A // GL_FUNC_SUBTRACT +#define RL_FUNC_REVERSE_SUBTRACT 0x800B // GL_FUNC_REVERSE_SUBTRACT +#define RL_BLEND_EQUATION 0x8009 // GL_BLEND_EQUATION +#define RL_BLEND_EQUATION_RGB 0x8009 // GL_BLEND_EQUATION_RGB // (Same as BLEND_EQUATION) +#define RL_BLEND_EQUATION_ALPHA 0x883D // GL_BLEND_EQUATION_ALPHA +#define RL_BLEND_DST_RGB 0x80C8 // GL_BLEND_DST_RGB +#define RL_BLEND_SRC_RGB 0x80C9 // GL_BLEND_SRC_RGB +#define RL_BLEND_DST_ALPHA 0x80CA // GL_BLEND_DST_ALPHA +#define RL_BLEND_SRC_ALPHA 0x80CB // GL_BLEND_SRC_ALPHA +#define RL_BLEND_COLOR 0x8005 // GL_BLEND_COLOR + +#define RL_READ_FRAMEBUFFER 0x8CA8 // GL_READ_FRAMEBUFFER +#define RL_DRAW_FRAMEBUFFER 0x8CA9 // GL_DRAW_FRAMEBUFFER + +// Default shader vertex attribute locations +#ifndef RL_DEFAULT_SHADER_ATTRIB_LOCATION_POSITION + #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_POSITION 0 +#endif +#ifndef RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD + #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD 1 +#endif +#ifndef RL_DEFAULT_SHADER_ATTRIB_LOCATION_NORMAL + #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_NORMAL 2 +#endif +#ifndef RL_DEFAULT_SHADER_ATTRIB_LOCATION_COLOR + #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_COLOR 3 +#endif + #ifndef RL_DEFAULT_SHADER_ATTRIB_LOCATION_TANGENT +#define RL_DEFAULT_SHADER_ATTRIB_LOCATION_TANGENT 4 +#endif +#ifndef RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD2 + #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD2 5 +#endif +#ifndef RL_DEFAULT_SHADER_ATTRIB_LOCATION_INDICES + #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_INDICES 6 +#endif +#ifdef RL_SUPPORT_MESH_GPU_SKINNING +#ifndef RL_DEFAULT_SHADER_ATTRIB_LOCATION_BONEIDS + #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_BONEIDS 7 +#endif +#ifndef RL_DEFAULT_SHADER_ATTRIB_LOCATION_BONEWEIGHTS + #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_BONEWEIGHTS 8 +#endif +#endif + +//---------------------------------------------------------------------------------- +// Types and Structures Definition +//---------------------------------------------------------------------------------- +#if (defined(__STDC__) && __STDC_VERSION__ >= 199901L) || (defined(_MSC_VER) && _MSC_VER >= 1800) + #include +#elif !defined(__cplusplus) && !defined(bool) && !defined(RL_BOOL_TYPE) + // Boolean type +typedef enum bool { false = 0, true = !false } bool; +#endif + +#if !defined(RL_MATRIX_TYPE) +// Matrix, 4x4 components, column major, OpenGL style, right handed +typedef struct Matrix { + float m0, m4, m8, m12; // Matrix first row (4 components) + float m1, m5, m9, m13; // Matrix second row (4 components) + float m2, m6, m10, m14; // Matrix third row (4 components) + float m3, m7, m11, m15; // Matrix fourth row (4 components) +} Matrix; +#define RL_MATRIX_TYPE +#endif + +// Dynamic vertex buffers (position + texcoords + colors + indices arrays) +typedef struct rlVertexBuffer { + int elementCount; // Number of elements in the buffer (QUADS) + + float *vertices; // Vertex position (XYZ - 3 components per vertex) (shader-location = 0) + float *texcoords; // Vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1) + float *normals; // Vertex normal (XYZ - 3 components per vertex) (shader-location = 2) + unsigned char *colors; // Vertex colors (RGBA - 4 components per vertex) (shader-location = 3) +#if defined(GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_33) + unsigned int *indices; // Vertex indices (in case vertex data comes indexed) (6 indices per quad) +#endif +#if defined(GRAPHICS_API_OPENGL_ES2) + unsigned short *indices; // Vertex indices (in case vertex data comes indexed) (6 indices per quad) +#endif + unsigned int vaoId; // OpenGL Vertex Array Object id + unsigned int vboId[5]; // OpenGL Vertex Buffer Objects id (5 types of vertex data) +} rlVertexBuffer; + +// Draw call type +// NOTE: Only texture changes register a new draw, other state-change-related elements are not +// used at this moment (vaoId, shaderId, matrices), raylib just forces a batch draw call if any +// of those state-change happens (this is done in core module) +typedef struct rlDrawCall { + int mode; // Drawing mode: LINES, TRIANGLES, QUADS + int vertexCount; // Number of vertex of the draw + int vertexAlignment; // Number of vertex required for index alignment (LINES, TRIANGLES) + //unsigned int vaoId; // Vertex array id to be used on the draw -> Using RLGL.currentBatch->vertexBuffer.vaoId + //unsigned int shaderId; // Shader id to be used on the draw -> Using RLGL.currentShaderId + unsigned int textureId; // Texture id to be used on the draw -> Use to create new draw call if changes + + //Matrix projection; // Projection matrix for this draw -> Using RLGL.projection by default + //Matrix modelview; // Modelview matrix for this draw -> Using RLGL.modelview by default +} rlDrawCall; + +// rlRenderBatch type +typedef struct rlRenderBatch { + int bufferCount; // Number of vertex buffers (multi-buffering support) + int currentBuffer; // Current buffer tracking in case of multi-buffering + rlVertexBuffer *vertexBuffer; // Dynamic buffer(s) for vertex data + + rlDrawCall *draws; // Draw calls array, depends on textureId + int drawCounter; // Draw calls counter + float currentDepth; // Current depth value for next draw +} rlRenderBatch; + +// OpenGL version +typedef enum { + RL_OPENGL_11 = 1, // OpenGL 1.1 + RL_OPENGL_21, // OpenGL 2.1 (GLSL 120) + RL_OPENGL_33, // OpenGL 3.3 (GLSL 330) + RL_OPENGL_43, // OpenGL 4.3 (using GLSL 330) + RL_OPENGL_ES_20, // OpenGL ES 2.0 (GLSL 100) + RL_OPENGL_ES_30 // OpenGL ES 3.0 (GLSL 300 es) +} rlGlVersion; + +// Trace log level +// NOTE: Organized by priority level +typedef enum { + RL_LOG_ALL = 0, // Display all logs + RL_LOG_TRACE, // Trace logging, intended for internal use only + RL_LOG_DEBUG, // Debug logging, used for internal debugging, it should be disabled on release builds + RL_LOG_INFO, // Info logging, used for program execution info + RL_LOG_WARNING, // Warning logging, used on recoverable failures + RL_LOG_ERROR, // Error logging, used on unrecoverable failures + RL_LOG_FATAL, // Fatal logging, used to abort program: exit(EXIT_FAILURE) + RL_LOG_NONE // Disable logging +} rlTraceLogLevel; + +// Texture pixel formats +// NOTE: Support depends on OpenGL version +typedef enum { + RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE = 1, // 8 bit per pixel (no alpha) + RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA, // 8*2 bpp (2 channels) + RL_PIXELFORMAT_UNCOMPRESSED_R5G6B5, // 16 bpp + RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8, // 24 bpp + RL_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1, // 16 bpp (1 bit alpha) + RL_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4, // 16 bpp (4 bit alpha) + RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, // 32 bpp + RL_PIXELFORMAT_UNCOMPRESSED_R32, // 32 bpp (1 channel - float) + RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32, // 32*3 bpp (3 channels - float) + RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32, // 32*4 bpp (4 channels - float) + RL_PIXELFORMAT_UNCOMPRESSED_R16, // 16 bpp (1 channel - half float) + RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16, // 16*3 bpp (3 channels - half float) + RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16, // 16*4 bpp (4 channels - half float) + RL_PIXELFORMAT_COMPRESSED_DXT1_RGB, // 4 bpp (no alpha) + RL_PIXELFORMAT_COMPRESSED_DXT1_RGBA, // 4 bpp (1 bit alpha) + RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA, // 8 bpp + RL_PIXELFORMAT_COMPRESSED_DXT5_RGBA, // 8 bpp + RL_PIXELFORMAT_COMPRESSED_ETC1_RGB, // 4 bpp + RL_PIXELFORMAT_COMPRESSED_ETC2_RGB, // 4 bpp + RL_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA, // 8 bpp + RL_PIXELFORMAT_COMPRESSED_PVRT_RGB, // 4 bpp + RL_PIXELFORMAT_COMPRESSED_PVRT_RGBA, // 4 bpp + RL_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA, // 8 bpp + RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA // 2 bpp +} rlPixelFormat; + +// Texture parameters: filter mode +// NOTE 1: Filtering considers mipmaps if available in the texture +// NOTE 2: Filter is accordingly set for minification and magnification +typedef enum { + RL_TEXTURE_FILTER_POINT = 0, // No filter, just pixel approximation + RL_TEXTURE_FILTER_BILINEAR, // Linear filtering + RL_TEXTURE_FILTER_TRILINEAR, // Trilinear filtering (linear with mipmaps) + RL_TEXTURE_FILTER_ANISOTROPIC_4X, // Anisotropic filtering 4x + RL_TEXTURE_FILTER_ANISOTROPIC_8X, // Anisotropic filtering 8x + RL_TEXTURE_FILTER_ANISOTROPIC_16X, // Anisotropic filtering 16x +} rlTextureFilter; + +// Color blending modes (pre-defined) +typedef enum { + RL_BLEND_ALPHA = 0, // Blend textures considering alpha (default) + RL_BLEND_ADDITIVE, // Blend textures adding colors + RL_BLEND_MULTIPLIED, // Blend textures multiplying colors + RL_BLEND_ADD_COLORS, // Blend textures adding colors (alternative) + RL_BLEND_SUBTRACT_COLORS, // Blend textures subtracting colors (alternative) + RL_BLEND_ALPHA_PREMULTIPLY, // Blend premultiplied textures considering alpha + RL_BLEND_CUSTOM, // Blend textures using custom src/dst factors (use rlSetBlendFactors()) + RL_BLEND_CUSTOM_SEPARATE // Blend textures using custom src/dst factors (use rlSetBlendFactorsSeparate()) +} rlBlendMode; + +// Shader location point type +typedef enum { + RL_SHADER_LOC_VERTEX_POSITION = 0, // Shader location: vertex attribute: position + RL_SHADER_LOC_VERTEX_TEXCOORD01, // Shader location: vertex attribute: texcoord01 + RL_SHADER_LOC_VERTEX_TEXCOORD02, // Shader location: vertex attribute: texcoord02 + RL_SHADER_LOC_VERTEX_NORMAL, // Shader location: vertex attribute: normal + RL_SHADER_LOC_VERTEX_TANGENT, // Shader location: vertex attribute: tangent + RL_SHADER_LOC_VERTEX_COLOR, // Shader location: vertex attribute: color + RL_SHADER_LOC_MATRIX_MVP, // Shader location: matrix uniform: model-view-projection + RL_SHADER_LOC_MATRIX_VIEW, // Shader location: matrix uniform: view (camera transform) + RL_SHADER_LOC_MATRIX_PROJECTION, // Shader location: matrix uniform: projection + RL_SHADER_LOC_MATRIX_MODEL, // Shader location: matrix uniform: model (transform) + RL_SHADER_LOC_MATRIX_NORMAL, // Shader location: matrix uniform: normal + RL_SHADER_LOC_VECTOR_VIEW, // Shader location: vector uniform: view + RL_SHADER_LOC_COLOR_DIFFUSE, // Shader location: vector uniform: diffuse color + RL_SHADER_LOC_COLOR_SPECULAR, // Shader location: vector uniform: specular color + RL_SHADER_LOC_COLOR_AMBIENT, // Shader location: vector uniform: ambient color + RL_SHADER_LOC_MAP_ALBEDO, // Shader location: sampler2d texture: albedo (same as: RL_SHADER_LOC_MAP_DIFFUSE) + RL_SHADER_LOC_MAP_METALNESS, // Shader location: sampler2d texture: metalness (same as: RL_SHADER_LOC_MAP_SPECULAR) + RL_SHADER_LOC_MAP_NORMAL, // Shader location: sampler2d texture: normal + RL_SHADER_LOC_MAP_ROUGHNESS, // Shader location: sampler2d texture: roughness + RL_SHADER_LOC_MAP_OCCLUSION, // Shader location: sampler2d texture: occlusion + RL_SHADER_LOC_MAP_EMISSION, // Shader location: sampler2d texture: emission + RL_SHADER_LOC_MAP_HEIGHT, // Shader location: sampler2d texture: height + RL_SHADER_LOC_MAP_CUBEMAP, // Shader location: samplerCube texture: cubemap + RL_SHADER_LOC_MAP_IRRADIANCE, // Shader location: samplerCube texture: irradiance + RL_SHADER_LOC_MAP_PREFILTER, // Shader location: samplerCube texture: prefilter + RL_SHADER_LOC_MAP_BRDF // Shader location: sampler2d texture: brdf +} rlShaderLocationIndex; + +#define RL_SHADER_LOC_MAP_DIFFUSE RL_SHADER_LOC_MAP_ALBEDO +#define RL_SHADER_LOC_MAP_SPECULAR RL_SHADER_LOC_MAP_METALNESS + +// Shader uniform data type +typedef enum { + RL_SHADER_UNIFORM_FLOAT = 0, // Shader uniform type: float + RL_SHADER_UNIFORM_VEC2, // Shader uniform type: vec2 (2 float) + RL_SHADER_UNIFORM_VEC3, // Shader uniform type: vec3 (3 float) + RL_SHADER_UNIFORM_VEC4, // Shader uniform type: vec4 (4 float) + RL_SHADER_UNIFORM_INT, // Shader uniform type: int + RL_SHADER_UNIFORM_IVEC2, // Shader uniform type: ivec2 (2 int) + RL_SHADER_UNIFORM_IVEC3, // Shader uniform type: ivec3 (3 int) + RL_SHADER_UNIFORM_IVEC4, // Shader uniform type: ivec4 (4 int) + RL_SHADER_UNIFORM_UINT, // Shader uniform type: unsigned int + RL_SHADER_UNIFORM_UIVEC2, // Shader uniform type: uivec2 (2 unsigned int) + RL_SHADER_UNIFORM_UIVEC3, // Shader uniform type: uivec3 (3 unsigned int) + RL_SHADER_UNIFORM_UIVEC4, // Shader uniform type: uivec4 (4 unsigned int) + RL_SHADER_UNIFORM_SAMPLER2D // Shader uniform type: sampler2d +} rlShaderUniformDataType; + +// Shader attribute data types +typedef enum { + RL_SHADER_ATTRIB_FLOAT = 0, // Shader attribute type: float + RL_SHADER_ATTRIB_VEC2, // Shader attribute type: vec2 (2 float) + RL_SHADER_ATTRIB_VEC3, // Shader attribute type: vec3 (3 float) + RL_SHADER_ATTRIB_VEC4 // Shader attribute type: vec4 (4 float) +} rlShaderAttributeDataType; + +// Framebuffer attachment type +// NOTE: By default up to 8 color channels defined, but it can be more +typedef enum { + RL_ATTACHMENT_COLOR_CHANNEL0 = 0, // Framebuffer attachment type: color 0 + RL_ATTACHMENT_COLOR_CHANNEL1 = 1, // Framebuffer attachment type: color 1 + RL_ATTACHMENT_COLOR_CHANNEL2 = 2, // Framebuffer attachment type: color 2 + RL_ATTACHMENT_COLOR_CHANNEL3 = 3, // Framebuffer attachment type: color 3 + RL_ATTACHMENT_COLOR_CHANNEL4 = 4, // Framebuffer attachment type: color 4 + RL_ATTACHMENT_COLOR_CHANNEL5 = 5, // Framebuffer attachment type: color 5 + RL_ATTACHMENT_COLOR_CHANNEL6 = 6, // Framebuffer attachment type: color 6 + RL_ATTACHMENT_COLOR_CHANNEL7 = 7, // Framebuffer attachment type: color 7 + RL_ATTACHMENT_DEPTH = 100, // Framebuffer attachment type: depth + RL_ATTACHMENT_STENCIL = 200, // Framebuffer attachment type: stencil +} rlFramebufferAttachType; + +// Framebuffer texture attachment type +typedef enum { + RL_ATTACHMENT_CUBEMAP_POSITIVE_X = 0, // Framebuffer texture attachment type: cubemap, +X side + RL_ATTACHMENT_CUBEMAP_NEGATIVE_X = 1, // Framebuffer texture attachment type: cubemap, -X side + RL_ATTACHMENT_CUBEMAP_POSITIVE_Y = 2, // Framebuffer texture attachment type: cubemap, +Y side + RL_ATTACHMENT_CUBEMAP_NEGATIVE_Y = 3, // Framebuffer texture attachment type: cubemap, -Y side + RL_ATTACHMENT_CUBEMAP_POSITIVE_Z = 4, // Framebuffer texture attachment type: cubemap, +Z side + RL_ATTACHMENT_CUBEMAP_NEGATIVE_Z = 5, // Framebuffer texture attachment type: cubemap, -Z side + RL_ATTACHMENT_TEXTURE2D = 100, // Framebuffer texture attachment type: texture2d + RL_ATTACHMENT_RENDERBUFFER = 200, // Framebuffer texture attachment type: renderbuffer +} rlFramebufferAttachTextureType; + +// Face culling mode +typedef enum { + RL_CULL_FACE_FRONT = 0, + RL_CULL_FACE_BACK +} rlCullMode; + +//------------------------------------------------------------------------------------ +// Functions Declaration - Matrix operations +//------------------------------------------------------------------------------------ + +#if defined(__cplusplus) +extern "C" { // Prevents name mangling of functions +#endif + +RLAPI void rlMatrixMode(int mode); // Choose the current matrix to be transformed +RLAPI void rlPushMatrix(void); // Push the current matrix to stack +RLAPI void rlPopMatrix(void); // Pop latest inserted matrix from stack +RLAPI void rlLoadIdentity(void); // Reset current matrix to identity matrix +RLAPI void rlTranslatef(float x, float y, float z); // Multiply the current matrix by a translation matrix +RLAPI void rlRotatef(float angle, float x, float y, float z); // Multiply the current matrix by a rotation matrix +RLAPI void rlScalef(float x, float y, float z); // Multiply the current matrix by a scaling matrix +RLAPI void rlMultMatrixf(const float *matf); // Multiply the current matrix by another matrix +RLAPI void rlFrustum(double left, double right, double bottom, double top, double znear, double zfar); +RLAPI void rlOrtho(double left, double right, double bottom, double top, double znear, double zfar); +RLAPI void rlViewport(int x, int y, int width, int height); // Set the viewport area +RLAPI void rlSetClipPlanes(double nearPlane, double farPlane); // Set clip planes distances +RLAPI double rlGetCullDistanceNear(void); // Get cull plane distance near +RLAPI double rlGetCullDistanceFar(void); // Get cull plane distance far + +//------------------------------------------------------------------------------------ +// Functions Declaration - Vertex level operations +//------------------------------------------------------------------------------------ +RLAPI void rlBegin(int mode); // Initialize drawing mode (how to organize vertex) +RLAPI void rlEnd(void); // Finish vertex providing +RLAPI void rlVertex2i(int x, int y); // Define one vertex (position) - 2 int +RLAPI void rlVertex2f(float x, float y); // Define one vertex (position) - 2 float +RLAPI void rlVertex3f(float x, float y, float z); // Define one vertex (position) - 3 float +RLAPI void rlTexCoord2f(float x, float y); // Define one vertex (texture coordinate) - 2 float +RLAPI void rlNormal3f(float x, float y, float z); // Define one vertex (normal) - 3 float +RLAPI void rlColor4ub(unsigned char r, unsigned char g, unsigned char b, unsigned char a); // Define one vertex (color) - 4 byte +RLAPI void rlColor3f(float x, float y, float z); // Define one vertex (color) - 3 float +RLAPI void rlColor4f(float x, float y, float z, float w); // Define one vertex (color) - 4 float + +//------------------------------------------------------------------------------------ +// Functions Declaration - OpenGL style functions (common to 1.1, 3.3+, ES2) +// NOTE: This functions are used to completely abstract raylib code from OpenGL layer, +// some of them are direct wrappers over OpenGL calls, some others are custom +//------------------------------------------------------------------------------------ + +// Vertex buffers state +RLAPI bool rlEnableVertexArray(unsigned int vaoId); // Enable vertex array (VAO, if supported) +RLAPI void rlDisableVertexArray(void); // Disable vertex array (VAO, if supported) +RLAPI void rlEnableVertexBuffer(unsigned int id); // Enable vertex buffer (VBO) +RLAPI void rlDisableVertexBuffer(void); // Disable vertex buffer (VBO) +RLAPI void rlEnableVertexBufferElement(unsigned int id); // Enable vertex buffer element (VBO element) +RLAPI void rlDisableVertexBufferElement(void); // Disable vertex buffer element (VBO element) +RLAPI void rlEnableVertexAttribute(unsigned int index); // Enable vertex attribute index +RLAPI void rlDisableVertexAttribute(unsigned int index); // Disable vertex attribute index +#if defined(GRAPHICS_API_OPENGL_11) +RLAPI void rlEnableStatePointer(int vertexAttribType, void *buffer); // Enable attribute state pointer +RLAPI void rlDisableStatePointer(int vertexAttribType); // Disable attribute state pointer +#endif + +// Textures state +RLAPI void rlActiveTextureSlot(int slot); // Select and active a texture slot +RLAPI void rlEnableTexture(unsigned int id); // Enable texture +RLAPI void rlDisableTexture(void); // Disable texture +RLAPI void rlEnableTextureCubemap(unsigned int id); // Enable texture cubemap +RLAPI void rlDisableTextureCubemap(void); // Disable texture cubemap +RLAPI void rlTextureParameters(unsigned int id, int param, int value); // Set texture parameters (filter, wrap) +RLAPI void rlCubemapParameters(unsigned int id, int param, int value); // Set cubemap parameters (filter, wrap) + +// Shader state +RLAPI void rlEnableShader(unsigned int id); // Enable shader program +RLAPI void rlDisableShader(void); // Disable shader program + +// Framebuffer state +RLAPI void rlEnableFramebuffer(unsigned int id); // Enable render texture (fbo) +RLAPI void rlDisableFramebuffer(void); // Disable render texture (fbo), return to default framebuffer +RLAPI unsigned int rlGetActiveFramebuffer(void); // Get the currently active render texture (fbo), 0 for default framebuffer +RLAPI void rlActiveDrawBuffers(int count); // Activate multiple draw color buffers +RLAPI void rlBlitFramebuffer(int srcX, int srcY, int srcWidth, int srcHeight, int dstX, int dstY, int dstWidth, int dstHeight, int bufferMask); // Blit active framebuffer to main framebuffer +RLAPI void rlBindFramebuffer(unsigned int target, unsigned int framebuffer); // Bind framebuffer (FBO) + +// General render state +RLAPI void rlEnableColorBlend(void); // Enable color blending +RLAPI void rlDisableColorBlend(void); // Disable color blending +RLAPI void rlEnableDepthTest(void); // Enable depth test +RLAPI void rlDisableDepthTest(void); // Disable depth test +RLAPI void rlEnableDepthMask(void); // Enable depth write +RLAPI void rlDisableDepthMask(void); // Disable depth write +RLAPI void rlEnableBackfaceCulling(void); // Enable backface culling +RLAPI void rlDisableBackfaceCulling(void); // Disable backface culling +RLAPI void rlColorMask(bool r, bool g, bool b, bool a); // Color mask control +RLAPI void rlSetCullFace(int mode); // Set face culling mode +RLAPI void rlEnableScissorTest(void); // Enable scissor test +RLAPI void rlDisableScissorTest(void); // Disable scissor test +RLAPI void rlScissor(int x, int y, int width, int height); // Scissor test +RLAPI void rlEnableWireMode(void); // Enable wire mode +RLAPI void rlEnablePointMode(void); // Enable point mode +RLAPI void rlDisableWireMode(void); // Disable wire (and point) mode +RLAPI void rlSetLineWidth(float width); // Set the line drawing width +RLAPI float rlGetLineWidth(void); // Get the line drawing width +RLAPI void rlEnableSmoothLines(void); // Enable line aliasing +RLAPI void rlDisableSmoothLines(void); // Disable line aliasing +RLAPI void rlEnableStereoRender(void); // Enable stereo rendering +RLAPI void rlDisableStereoRender(void); // Disable stereo rendering +RLAPI bool rlIsStereoRenderEnabled(void); // Check if stereo render is enabled + +RLAPI void rlClearColor(unsigned char r, unsigned char g, unsigned char b, unsigned char a); // Clear color buffer with color +RLAPI void rlClearScreenBuffers(void); // Clear used screen buffers (color and depth) +RLAPI void rlCheckErrors(void); // Check and log OpenGL error codes +RLAPI void rlSetBlendMode(int mode); // Set blending mode +RLAPI void rlSetBlendFactors(int glSrcFactor, int glDstFactor, int glEquation); // Set blending mode factor and equation (using OpenGL factors) +RLAPI void rlSetBlendFactorsSeparate(int glSrcRGB, int glDstRGB, int glSrcAlpha, int glDstAlpha, int glEqRGB, int glEqAlpha); // Set blending mode factors and equations separately (using OpenGL factors) + +//------------------------------------------------------------------------------------ +// Functions Declaration - rlgl functionality +//------------------------------------------------------------------------------------ +// rlgl initialization functions +RLAPI void rlglInit(int width, int height); // Initialize rlgl (buffers, shaders, textures, states) +RLAPI void rlglClose(void); // De-initialize rlgl (buffers, shaders, textures) +RLAPI void rlLoadExtensions(void *loader); // Load OpenGL extensions (loader function required) +RLAPI int rlGetVersion(void); // Get current OpenGL version +RLAPI void rlSetFramebufferWidth(int width); // Set current framebuffer width +RLAPI int rlGetFramebufferWidth(void); // Get default framebuffer width +RLAPI void rlSetFramebufferHeight(int height); // Set current framebuffer height +RLAPI int rlGetFramebufferHeight(void); // Get default framebuffer height + +RLAPI unsigned int rlGetTextureIdDefault(void); // Get default texture id +RLAPI unsigned int rlGetShaderIdDefault(void); // Get default shader id +RLAPI int *rlGetShaderLocsDefault(void); // Get default shader locations + +// Render batch management +// NOTE: rlgl provides a default render batch to behave like OpenGL 1.1 immediate mode +// but this render batch API is exposed in case of custom batches are required +RLAPI rlRenderBatch rlLoadRenderBatch(int numBuffers, int bufferElements); // Load a render batch system +RLAPI void rlUnloadRenderBatch(rlRenderBatch batch); // Unload render batch system +RLAPI void rlDrawRenderBatch(rlRenderBatch *batch); // Draw render batch data (Update->Draw->Reset) +RLAPI void rlSetRenderBatchActive(rlRenderBatch *batch); // Set the active render batch for rlgl (NULL for default internal) +RLAPI void rlDrawRenderBatchActive(void); // Update and draw internal render batch +RLAPI bool rlCheckRenderBatchLimit(int vCount); // Check internal buffer overflow for a given number of vertex + +RLAPI void rlSetTexture(unsigned int id); // Set current texture for render batch and check buffers limits + +//------------------------------------------------------------------------------------------------------------------------ + +// Vertex buffers management +RLAPI unsigned int rlLoadVertexArray(void); // Load vertex array (vao) if supported +RLAPI unsigned int rlLoadVertexBuffer(const void *buffer, int size, bool dynamic); // Load a vertex buffer object +RLAPI unsigned int rlLoadVertexBufferElement(const void *buffer, int size, bool dynamic); // Load vertex buffer elements object +RLAPI void rlUpdateVertexBuffer(unsigned int bufferId, const void *data, int dataSize, int offset); // Update vertex buffer object data on GPU buffer +RLAPI void rlUpdateVertexBufferElements(unsigned int id, const void *data, int dataSize, int offset); // Update vertex buffer elements data on GPU buffer +RLAPI void rlUnloadVertexArray(unsigned int vaoId); // Unload vertex array (vao) +RLAPI void rlUnloadVertexBuffer(unsigned int vboId); // Unload vertex buffer object +RLAPI void rlSetVertexAttribute(unsigned int index, int compSize, int type, bool normalized, int stride, int offset); // Set vertex attribute data configuration +RLAPI void rlSetVertexAttributeDivisor(unsigned int index, int divisor); // Set vertex attribute data divisor +RLAPI void rlSetVertexAttributeDefault(int locIndex, const void *value, int attribType, int count); // Set vertex attribute default value, when attribute to provided +RLAPI void rlDrawVertexArray(int offset, int count); // Draw vertex array (currently active vao) +RLAPI void rlDrawVertexArrayElements(int offset, int count, const void *buffer); // Draw vertex array elements +RLAPI void rlDrawVertexArrayInstanced(int offset, int count, int instances); // Draw vertex array (currently active vao) with instancing +RLAPI void rlDrawVertexArrayElementsInstanced(int offset, int count, const void *buffer, int instances); // Draw vertex array elements with instancing + +// Textures management +RLAPI unsigned int rlLoadTexture(const void *data, int width, int height, int format, int mipmapCount); // Load texture data +RLAPI unsigned int rlLoadTextureDepth(int width, int height, bool useRenderBuffer); // Load depth texture/renderbuffer (to be attached to fbo) +RLAPI unsigned int rlLoadTextureCubemap(const void *data, int size, int format, int mipmapCount); // Load texture cubemap data +RLAPI void rlUpdateTexture(unsigned int id, int offsetX, int offsetY, int width, int height, int format, const void *data); // Update texture with new data on GPU +RLAPI void rlGetGlTextureFormats(int format, unsigned int *glInternalFormat, unsigned int *glFormat, unsigned int *glType); // Get OpenGL internal formats +RLAPI const char *rlGetPixelFormatName(unsigned int format); // Get name string for pixel format +RLAPI void rlUnloadTexture(unsigned int id); // Unload texture from GPU memory +RLAPI void rlGenTextureMipmaps(unsigned int id, int width, int height, int format, int *mipmaps); // Generate mipmap data for selected texture +RLAPI void *rlReadTexturePixels(unsigned int id, int width, int height, int format); // Read texture pixel data +RLAPI unsigned char *rlReadScreenPixels(int width, int height); // Read screen pixel data (color buffer) + +// Framebuffer management (fbo) +RLAPI unsigned int rlLoadFramebuffer(void); // Load an empty framebuffer +RLAPI void rlFramebufferAttach(unsigned int fboId, unsigned int texId, int attachType, int texType, int mipLevel); // Attach texture/renderbuffer to a framebuffer +RLAPI bool rlFramebufferComplete(unsigned int id); // Verify framebuffer is complete +RLAPI void rlUnloadFramebuffer(unsigned int id); // Delete framebuffer from GPU + +// Shaders management +RLAPI unsigned int rlLoadShaderCode(const char *vsCode, const char *fsCode); // Load shader from code strings +RLAPI unsigned int rlCompileShader(const char *shaderCode, int type); // Compile custom shader and return shader id (type: RL_VERTEX_SHADER, RL_FRAGMENT_SHADER, RL_COMPUTE_SHADER) +RLAPI unsigned int rlLoadShaderProgram(unsigned int vShaderId, unsigned int fShaderId); // Load custom shader program +RLAPI void rlUnloadShaderProgram(unsigned int id); // Unload shader program +RLAPI int rlGetLocationUniform(unsigned int shaderId, const char *uniformName); // Get shader location uniform +RLAPI int rlGetLocationAttrib(unsigned int shaderId, const char *attribName); // Get shader location attribute +RLAPI void rlSetUniform(int locIndex, const void *value, int uniformType, int count); // Set shader value uniform +RLAPI void rlSetUniformMatrix(int locIndex, Matrix mat); // Set shader value matrix +RLAPI void rlSetUniformMatrices(int locIndex, const Matrix *mat, int count); // Set shader value matrices +RLAPI void rlSetUniformSampler(int locIndex, unsigned int textureId); // Set shader value sampler +RLAPI void rlSetShader(unsigned int id, int *locs); // Set shader currently active (id and locations) + +// Compute shader management +RLAPI unsigned int rlLoadComputeShaderProgram(unsigned int shaderId); // Load compute shader program +RLAPI void rlComputeShaderDispatch(unsigned int groupX, unsigned int groupY, unsigned int groupZ); // Dispatch compute shader (equivalent to *draw* for graphics pipeline) + +// Shader buffer storage object management (ssbo) +RLAPI unsigned int rlLoadShaderBuffer(unsigned int size, const void *data, int usageHint); // Load shader storage buffer object (SSBO) +RLAPI void rlUnloadShaderBuffer(unsigned int ssboId); // Unload shader storage buffer object (SSBO) +RLAPI void rlUpdateShaderBuffer(unsigned int id, const void *data, unsigned int dataSize, unsigned int offset); // Update SSBO buffer data +RLAPI void rlBindShaderBuffer(unsigned int id, unsigned int index); // Bind SSBO buffer +RLAPI void rlReadShaderBuffer(unsigned int id, void *dest, unsigned int count, unsigned int offset); // Read SSBO buffer data (GPU->CPU) +RLAPI void rlCopyShaderBuffer(unsigned int destId, unsigned int srcId, unsigned int destOffset, unsigned int srcOffset, unsigned int count); // Copy SSBO data between buffers +RLAPI unsigned int rlGetShaderBufferSize(unsigned int id); // Get SSBO buffer size + +// Buffer management +RLAPI void rlBindImageTexture(unsigned int id, unsigned int index, int format, bool readonly); // Bind image texture + +// Matrix state management +RLAPI Matrix rlGetMatrixModelview(void); // Get internal modelview matrix +RLAPI Matrix rlGetMatrixProjection(void); // Get internal projection matrix +RLAPI Matrix rlGetMatrixTransform(void); // Get internal accumulated transform matrix +RLAPI Matrix rlGetMatrixProjectionStereo(int eye); // Get internal projection matrix for stereo render (selected eye) +RLAPI Matrix rlGetMatrixViewOffsetStereo(int eye); // Get internal view offset matrix for stereo render (selected eye) +RLAPI void rlSetMatrixProjection(Matrix proj); // Set a custom projection matrix (replaces internal projection matrix) +RLAPI void rlSetMatrixModelview(Matrix view); // Set a custom modelview matrix (replaces internal modelview matrix) +RLAPI void rlSetMatrixProjectionStereo(Matrix right, Matrix left); // Set eyes projection matrices for stereo rendering +RLAPI void rlSetMatrixViewOffsetStereo(Matrix right, Matrix left); // Set eyes view offsets matrices for stereo rendering + +// Quick and dirty cube/quad buffers load->draw->unload +RLAPI void rlLoadDrawCube(void); // Load and draw a cube +RLAPI void rlLoadDrawQuad(void); // Load and draw a quad + +#if defined(__cplusplus) +} +#endif + +#endif // RLGL_H + +/*********************************************************************************** +* +* RLGL IMPLEMENTATION +* +************************************************************************************/ + +#if defined(RLGL_IMPLEMENTATION) + +// Expose OpenGL functions from glad in raylib +#if defined(BUILD_LIBTYPE_SHARED) + #define GLAD_API_CALL_EXPORT + #define GLAD_API_CALL_EXPORT_BUILD +#endif + +#if defined(GRAPHICS_API_OPENGL_11) + #if defined(__APPLE__) + #include // OpenGL 1.1 library for OSX + #include // OpenGL extensions library + #else + // APIENTRY for OpenGL function pointer declarations is required + #if !defined(APIENTRY) + #if defined(_WIN32) + #define APIENTRY __stdcall + #else + #define APIENTRY + #endif + #endif + // WINGDIAPI definition. Some Windows OpenGL headers need it + #if !defined(WINGDIAPI) && defined(_WIN32) + #define WINGDIAPI __declspec(dllimport) + #endif + + #include // OpenGL 1.1 library + #endif +#endif + +#if defined(GRAPHICS_API_OPENGL_33) + #define GLAD_MALLOC RL_MALLOC + #define GLAD_FREE RL_FREE + + #define GLAD_GL_IMPLEMENTATION + #include "external/glad.h" // GLAD extensions loading library, includes OpenGL headers +#endif + +#if defined(GRAPHICS_API_OPENGL_ES3) + #include // OpenGL ES 3.0 library + #define GL_GLEXT_PROTOTYPES + #include // OpenGL ES 2.0 extensions library +#elif defined(GRAPHICS_API_OPENGL_ES2) + // NOTE: OpenGL ES 2.0 can be enabled on Desktop platforms, + // in that case, functions are loaded from a custom glad for OpenGL ES 2.0 + #if defined(PLATFORM_DESKTOP_GLFW) || defined(PLATFORM_DESKTOP_SDL) + #define GLAD_GLES2_IMPLEMENTATION + #include "external/glad_gles2.h" + #else + #define GL_GLEXT_PROTOTYPES + //#include // EGL library -> not required, platform layer + #include // OpenGL ES 2.0 library + #include // OpenGL ES 2.0 extensions library + #endif + + // It seems OpenGL ES 2.0 instancing entry points are not defined on Raspberry Pi + // provided headers (despite being defined in official Khronos GLES2 headers) + #if defined(PLATFORM_DRM) + typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); + typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); + typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISOREXTPROC) (GLuint index, GLuint divisor); + #endif +#endif + +#include // Required for: malloc(), free() +#include // Required for: strcmp(), strlen() [Used in rlglInit(), on extensions loading] +#include // Required for: sqrtf(), sinf(), cosf(), floor(), log() + +//---------------------------------------------------------------------------------- +// Defines and Macros +//---------------------------------------------------------------------------------- +#ifndef PI + #define PI 3.14159265358979323846f +#endif +#ifndef DEG2RAD + #define DEG2RAD (PI/180.0f) +#endif +#ifndef RAD2DEG + #define RAD2DEG (180.0f/PI) +#endif + +#ifndef GL_SHADING_LANGUAGE_VERSION + #define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#endif + +#ifndef GL_COMPRESSED_RGB_S3TC_DXT1_EXT + #define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 +#endif +#ifndef GL_COMPRESSED_RGBA_S3TC_DXT1_EXT + #define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 +#endif +#ifndef GL_COMPRESSED_RGBA_S3TC_DXT3_EXT + #define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 +#endif +#ifndef GL_COMPRESSED_RGBA_S3TC_DXT5_EXT + #define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +#endif +#ifndef GL_ETC1_RGB8_OES + #define GL_ETC1_RGB8_OES 0x8D64 +#endif +#ifndef GL_COMPRESSED_RGB8_ETC2 + #define GL_COMPRESSED_RGB8_ETC2 0x9274 +#endif +#ifndef GL_COMPRESSED_RGBA8_ETC2_EAC + #define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278 +#endif +#ifndef GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG + #define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 +#endif +#ifndef GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG + #define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02 +#endif +#ifndef GL_COMPRESSED_RGBA_ASTC_4x4_KHR + #define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93b0 +#endif +#ifndef GL_COMPRESSED_RGBA_ASTC_8x8_KHR + #define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93b7 +#endif + +#ifndef GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT + #define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF +#endif +#ifndef GL_TEXTURE_MAX_ANISOTROPY_EXT + #define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +#endif + +#ifndef GL_PROGRAM_POINT_SIZE + #define GL_PROGRAM_POINT_SIZE 0x8642 +#endif + +#ifndef GL_LINE_WIDTH + #define GL_LINE_WIDTH 0x0B21 +#endif + +#if defined(GRAPHICS_API_OPENGL_11) + #define GL_UNSIGNED_SHORT_5_6_5 0x8363 + #define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 + #define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#endif + +#if defined(GRAPHICS_API_OPENGL_21) + #define GL_LUMINANCE 0x1909 + #define GL_LUMINANCE_ALPHA 0x190A +#endif + +#if defined(GRAPHICS_API_OPENGL_ES2) + #define glClearDepth glClearDepthf + #if !defined(GRAPHICS_API_OPENGL_ES3) + #define GL_READ_FRAMEBUFFER GL_FRAMEBUFFER + #define GL_DRAW_FRAMEBUFFER GL_FRAMEBUFFER + #endif +#endif + +// Default shader vertex attribute names to set location points +#ifndef RL_DEFAULT_SHADER_ATTRIB_NAME_POSITION + #define RL_DEFAULT_SHADER_ATTRIB_NAME_POSITION "vertexPosition" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_NAME_POSITION +#endif +#ifndef RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD + #define RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD "vertexTexCoord" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD +#endif +#ifndef RL_DEFAULT_SHADER_ATTRIB_NAME_NORMAL + #define RL_DEFAULT_SHADER_ATTRIB_NAME_NORMAL "vertexNormal" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_NAME_NORMAL +#endif +#ifndef RL_DEFAULT_SHADER_ATTRIB_NAME_COLOR + #define RL_DEFAULT_SHADER_ATTRIB_NAME_COLOR "vertexColor" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_NAME_COLOR +#endif +#ifndef RL_DEFAULT_SHADER_ATTRIB_NAME_TANGENT + #define RL_DEFAULT_SHADER_ATTRIB_NAME_TANGENT "vertexTangent" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_NAME_TANGENT +#endif +#ifndef RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD2 + #define RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD2 "vertexTexCoord2" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD2 +#endif +#ifndef RL_DEFAULT_SHADER_ATTRIB_NAME_BONEIDS + #define RL_DEFAULT_SHADER_ATTRIB_NAME_BONEIDS "vertexBoneIds" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_NAME_BONEIDS +#endif +#ifndef RL_DEFAULT_SHADER_ATTRIB_NAME_BONEWEIGHTS + #define RL_DEFAULT_SHADER_ATTRIB_NAME_BONEWEIGHTS "vertexBoneWeights" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_NAME_BONEWEIGHTS +#endif + +#ifndef RL_DEFAULT_SHADER_UNIFORM_NAME_MVP + #define RL_DEFAULT_SHADER_UNIFORM_NAME_MVP "mvp" // model-view-projection matrix +#endif +#ifndef RL_DEFAULT_SHADER_UNIFORM_NAME_VIEW + #define RL_DEFAULT_SHADER_UNIFORM_NAME_VIEW "matView" // view matrix +#endif +#ifndef RL_DEFAULT_SHADER_UNIFORM_NAME_PROJECTION + #define RL_DEFAULT_SHADER_UNIFORM_NAME_PROJECTION "matProjection" // projection matrix +#endif +#ifndef RL_DEFAULT_SHADER_UNIFORM_NAME_MODEL + #define RL_DEFAULT_SHADER_UNIFORM_NAME_MODEL "matModel" // model matrix +#endif +#ifndef RL_DEFAULT_SHADER_UNIFORM_NAME_NORMAL + #define RL_DEFAULT_SHADER_UNIFORM_NAME_NORMAL "matNormal" // normal matrix (transpose(inverse(matModelView)) +#endif +#ifndef RL_DEFAULT_SHADER_UNIFORM_NAME_COLOR + #define RL_DEFAULT_SHADER_UNIFORM_NAME_COLOR "colDiffuse" // color diffuse (base tint color, multiplied by texture color) +#endif +#ifndef RL_DEFAULT_SHADER_UNIFORM_NAME_BONE_MATRICES + #define RL_DEFAULT_SHADER_UNIFORM_NAME_BONE_MATRICES "boneMatrices" // bone matrices +#endif +#ifndef RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE0 + #define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE0 "texture0" // texture0 (texture slot active 0) +#endif +#ifndef RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE1 + #define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE1 "texture1" // texture1 (texture slot active 1) +#endif +#ifndef RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE2 + #define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE2 "texture2" // texture2 (texture slot active 2) +#endif + +//---------------------------------------------------------------------------------- +// Types and Structures Definition +//---------------------------------------------------------------------------------- +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) +typedef struct rlglData { + rlRenderBatch *currentBatch; // Current render batch + rlRenderBatch defaultBatch; // Default internal render batch + + struct { + int vertexCounter; // Current active render batch vertex counter (generic, used for all batches) + float texcoordx, texcoordy; // Current active texture coordinate (added on glVertex*()) + float normalx, normaly, normalz; // Current active normal (added on glVertex*()) + unsigned char colorr, colorg, colorb, colora; // Current active color (added on glVertex*()) + + int currentMatrixMode; // Current matrix mode + Matrix *currentMatrix; // Current matrix pointer + Matrix modelview; // Default modelview matrix + Matrix projection; // Default projection matrix + Matrix transform; // Transform matrix to be used with rlTranslate, rlRotate, rlScale + bool transformRequired; // Require transform matrix application to current draw-call vertex (if required) + Matrix stack[RL_MAX_MATRIX_STACK_SIZE];// Matrix stack for push/pop + int stackCounter; // Matrix stack counter + + unsigned int defaultTextureId; // Default texture used on shapes/poly drawing (required by shader) + unsigned int activeTextureId[RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS]; // Active texture ids to be enabled on batch drawing (0 active by default) + unsigned int defaultVShaderId; // Default vertex shader id (used by default shader program) + unsigned int defaultFShaderId; // Default fragment shader id (used by default shader program) + unsigned int defaultShaderId; // Default shader program id, supports vertex color and diffuse texture + int *defaultShaderLocs; // Default shader locations pointer to be used on rendering + unsigned int currentShaderId; // Current shader id to be used on rendering (by default, defaultShaderId) + int *currentShaderLocs; // Current shader locations pointer to be used on rendering (by default, defaultShaderLocs) + + bool stereoRender; // Stereo rendering flag + Matrix projectionStereo[2]; // VR stereo rendering eyes projection matrices + Matrix viewOffsetStereo[2]; // VR stereo rendering eyes view offset matrices + + // Blending variables + int currentBlendMode; // Blending mode active + int glBlendSrcFactor; // Blending source factor + int glBlendDstFactor; // Blending destination factor + int glBlendEquation; // Blending equation + int glBlendSrcFactorRGB; // Blending source RGB factor + int glBlendDestFactorRGB; // Blending destination RGB factor + int glBlendSrcFactorAlpha; // Blending source alpha factor + int glBlendDestFactorAlpha; // Blending destination alpha factor + int glBlendEquationRGB; // Blending equation for RGB + int glBlendEquationAlpha; // Blending equation for alpha + bool glCustomBlendModeModified; // Custom blending factor and equation modification status + + int framebufferWidth; // Current framebuffer width + int framebufferHeight; // Current framebuffer height + + } State; // Renderer state + struct { + bool vao; // VAO support (OpenGL ES2 could not support VAO extension) (GL_ARB_vertex_array_object) + bool instancing; // Instancing supported (GL_ANGLE_instanced_arrays, GL_EXT_draw_instanced + GL_EXT_instanced_arrays) + bool texNPOT; // NPOT textures full support (GL_ARB_texture_non_power_of_two, GL_OES_texture_npot) + bool texDepth; // Depth textures supported (GL_ARB_depth_texture, GL_OES_depth_texture) + bool texDepthWebGL; // Depth textures supported WebGL specific (GL_WEBGL_depth_texture) + bool texFloat32; // float textures support (32 bit per channel) (GL_OES_texture_float) + bool texFloat16; // half float textures support (16 bit per channel) (GL_OES_texture_half_float) + bool texCompDXT; // DDS texture compression support (GL_EXT_texture_compression_s3tc, GL_WEBGL_compressed_texture_s3tc, GL_WEBKIT_WEBGL_compressed_texture_s3tc) + bool texCompETC1; // ETC1 texture compression support (GL_OES_compressed_ETC1_RGB8_texture, GL_WEBGL_compressed_texture_etc1) + bool texCompETC2; // ETC2/EAC texture compression support (GL_ARB_ES3_compatibility) + bool texCompPVRT; // PVR texture compression support (GL_IMG_texture_compression_pvrtc) + bool texCompASTC; // ASTC texture compression support (GL_KHR_texture_compression_astc_hdr, GL_KHR_texture_compression_astc_ldr) + bool texMirrorClamp; // Clamp mirror wrap mode supported (GL_EXT_texture_mirror_clamp) + bool texAnisoFilter; // Anisotropic texture filtering support (GL_EXT_texture_filter_anisotropic) + bool computeShader; // Compute shaders support (GL_ARB_compute_shader) + bool ssbo; // Shader storage buffer object support (GL_ARB_shader_storage_buffer_object) + + float maxAnisotropyLevel; // Maximum anisotropy level supported (minimum is 2.0f) + int maxDepthBits; // Maximum bits for depth component + + } ExtSupported; // Extensions supported flags +} rlglData; + +typedef void *(*rlglLoadProc)(const char *name); // OpenGL extension functions loader signature (same as GLADloadproc) + +#endif // GRAPHICS_API_OPENGL_33 || GRAPHICS_API_OPENGL_ES2 + +//---------------------------------------------------------------------------------- +// Global Variables Definition +//---------------------------------------------------------------------------------- +static double rlCullDistanceNear = RL_CULL_DISTANCE_NEAR; +static double rlCullDistanceFar = RL_CULL_DISTANCE_FAR; + +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) +static rlglData RLGL = { 0 }; +#endif // GRAPHICS_API_OPENGL_33 || GRAPHICS_API_OPENGL_ES2 + +#if defined(GRAPHICS_API_OPENGL_ES2) && !defined(GRAPHICS_API_OPENGL_ES3) +// NOTE: VAO functionality is exposed through extensions (OES) +static PFNGLGENVERTEXARRAYSOESPROC glGenVertexArrays = NULL; +static PFNGLBINDVERTEXARRAYOESPROC glBindVertexArray = NULL; +static PFNGLDELETEVERTEXARRAYSOESPROC glDeleteVertexArrays = NULL; + +// NOTE: Instancing functionality could also be available through extension +static PFNGLDRAWARRAYSINSTANCEDEXTPROC glDrawArraysInstanced = NULL; +static PFNGLDRAWELEMENTSINSTANCEDEXTPROC glDrawElementsInstanced = NULL; +static PFNGLVERTEXATTRIBDIVISOREXTPROC glVertexAttribDivisor = NULL; +#endif + +//---------------------------------------------------------------------------------- +// Module specific Functions Declaration +//---------------------------------------------------------------------------------- +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) +static void rlLoadShaderDefault(void); // Load default shader +static void rlUnloadShaderDefault(void); // Unload default shader +#if defined(RLGL_SHOW_GL_DETAILS_INFO) +static const char *rlGetCompressedFormatName(int format); // Get compressed format official GL identifier name +#endif // RLGL_SHOW_GL_DETAILS_INFO +#endif // GRAPHICS_API_OPENGL_33 || GRAPHICS_API_OPENGL_ES2 + +static int rlGetPixelDataSize(int width, int height, int format); // Get pixel data size in bytes (image or texture) + +// Auxiliar matrix math functions +typedef struct rl_float16 { + float v[16]; +} rl_float16; +static rl_float16 rlMatrixToFloatV(Matrix mat); // Get float array of matrix data +#define rlMatrixToFloat(mat) (rlMatrixToFloatV(mat).v) // Get float vector for Matrix +static Matrix rlMatrixIdentity(void); // Get identity matrix +static Matrix rlMatrixMultiply(Matrix left, Matrix right); // Multiply two matrices +static Matrix rlMatrixTranspose(Matrix mat); // Transposes provided matrix +static Matrix rlMatrixInvert(Matrix mat); // Invert provided matrix + +//---------------------------------------------------------------------------------- +// Module Functions Definition - Matrix operations +//---------------------------------------------------------------------------------- + +#if defined(GRAPHICS_API_OPENGL_11) +// Fallback to OpenGL 1.1 function calls +//--------------------------------------- +void rlMatrixMode(int mode) +{ + switch (mode) + { + case RL_PROJECTION: glMatrixMode(GL_PROJECTION); break; + case RL_MODELVIEW: glMatrixMode(GL_MODELVIEW); break; + case RL_TEXTURE: glMatrixMode(GL_TEXTURE); break; + default: break; + } +} + +void rlFrustum(double left, double right, double bottom, double top, double znear, double zfar) +{ + glFrustum(left, right, bottom, top, znear, zfar); +} + +void rlOrtho(double left, double right, double bottom, double top, double znear, double zfar) +{ + glOrtho(left, right, bottom, top, znear, zfar); +} + +void rlPushMatrix(void) { glPushMatrix(); } +void rlPopMatrix(void) { glPopMatrix(); } +void rlLoadIdentity(void) { glLoadIdentity(); } +void rlTranslatef(float x, float y, float z) { glTranslatef(x, y, z); } +void rlRotatef(float angle, float x, float y, float z) { glRotatef(angle, x, y, z); } +void rlScalef(float x, float y, float z) { glScalef(x, y, z); } +void rlMultMatrixf(const float *matf) { glMultMatrixf(matf); } +#endif +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) +// Choose the current matrix to be transformed +void rlMatrixMode(int mode) +{ + if (mode == RL_PROJECTION) RLGL.State.currentMatrix = &RLGL.State.projection; + else if (mode == RL_MODELVIEW) RLGL.State.currentMatrix = &RLGL.State.modelview; + //else if (mode == RL_TEXTURE) // Not supported + + RLGL.State.currentMatrixMode = mode; +} + +// Push the current matrix into RLGL.State.stack +void rlPushMatrix(void) +{ + if (RLGL.State.stackCounter >= RL_MAX_MATRIX_STACK_SIZE) TRACELOG(RL_LOG_ERROR, "RLGL: Matrix stack overflow (RL_MAX_MATRIX_STACK_SIZE)"); + + if (RLGL.State.currentMatrixMode == RL_MODELVIEW) + { + RLGL.State.transformRequired = true; + RLGL.State.currentMatrix = &RLGL.State.transform; + } + + RLGL.State.stack[RLGL.State.stackCounter] = *RLGL.State.currentMatrix; + RLGL.State.stackCounter++; +} + +// Pop lattest inserted matrix from RLGL.State.stack +void rlPopMatrix(void) +{ + if (RLGL.State.stackCounter > 0) + { + Matrix mat = RLGL.State.stack[RLGL.State.stackCounter - 1]; + *RLGL.State.currentMatrix = mat; + RLGL.State.stackCounter--; + } + + if ((RLGL.State.stackCounter == 0) && (RLGL.State.currentMatrixMode == RL_MODELVIEW)) + { + RLGL.State.currentMatrix = &RLGL.State.modelview; + RLGL.State.transformRequired = false; + } +} + +// Reset current matrix to identity matrix +void rlLoadIdentity(void) +{ + *RLGL.State.currentMatrix = rlMatrixIdentity(); +} + +// Multiply the current matrix by a translation matrix +void rlTranslatef(float x, float y, float z) +{ + Matrix matTranslation = { + 1.0f, 0.0f, 0.0f, x, + 0.0f, 1.0f, 0.0f, y, + 0.0f, 0.0f, 1.0f, z, + 0.0f, 0.0f, 0.0f, 1.0f + }; + + // NOTE: We transpose matrix with multiplication order + *RLGL.State.currentMatrix = rlMatrixMultiply(matTranslation, *RLGL.State.currentMatrix); +} + +// Multiply the current matrix by a rotation matrix +// NOTE: The provided angle must be in degrees +void rlRotatef(float angle, float x, float y, float z) +{ + Matrix matRotation = rlMatrixIdentity(); + + // Axis vector (x, y, z) normalization + float lengthSquared = x*x + y*y + z*z; + if ((lengthSquared != 1.0f) && (lengthSquared != 0.0f)) + { + float inverseLength = 1.0f/sqrtf(lengthSquared); + x *= inverseLength; + y *= inverseLength; + z *= inverseLength; + } + + // Rotation matrix generation + float sinres = sinf(DEG2RAD*angle); + float cosres = cosf(DEG2RAD*angle); + float t = 1.0f - cosres; + + matRotation.m0 = x*x*t + cosres; + matRotation.m1 = y*x*t + z*sinres; + matRotation.m2 = z*x*t - y*sinres; + matRotation.m3 = 0.0f; + + matRotation.m4 = x*y*t - z*sinres; + matRotation.m5 = y*y*t + cosres; + matRotation.m6 = z*y*t + x*sinres; + matRotation.m7 = 0.0f; + + matRotation.m8 = x*z*t + y*sinres; + matRotation.m9 = y*z*t - x*sinres; + matRotation.m10 = z*z*t + cosres; + matRotation.m11 = 0.0f; + + matRotation.m12 = 0.0f; + matRotation.m13 = 0.0f; + matRotation.m14 = 0.0f; + matRotation.m15 = 1.0f; + + // NOTE: We transpose matrix with multiplication order + *RLGL.State.currentMatrix = rlMatrixMultiply(matRotation, *RLGL.State.currentMatrix); +} + +// Multiply the current matrix by a scaling matrix +void rlScalef(float x, float y, float z) +{ + Matrix matScale = { + x, 0.0f, 0.0f, 0.0f, + 0.0f, y, 0.0f, 0.0f, + 0.0f, 0.0f, z, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f + }; + + // NOTE: We transpose matrix with multiplication order + *RLGL.State.currentMatrix = rlMatrixMultiply(matScale, *RLGL.State.currentMatrix); +} + +// Multiply the current matrix by another matrix +void rlMultMatrixf(const float *matf) +{ + // Matrix creation from array + Matrix mat = { matf[0], matf[4], matf[8], matf[12], + matf[1], matf[5], matf[9], matf[13], + matf[2], matf[6], matf[10], matf[14], + matf[3], matf[7], matf[11], matf[15] }; + + *RLGL.State.currentMatrix = rlMatrixMultiply(mat, *RLGL.State.currentMatrix); +} + +// Multiply the current matrix by a perspective matrix generated by parameters +void rlFrustum(double left, double right, double bottom, double top, double znear, double zfar) +{ + Matrix matFrustum = { 0 }; + + float rl = (float)(right - left); + float tb = (float)(top - bottom); + float fn = (float)(zfar - znear); + + matFrustum.m0 = ((float) znear*2.0f)/rl; + matFrustum.m1 = 0.0f; + matFrustum.m2 = 0.0f; + matFrustum.m3 = 0.0f; + + matFrustum.m4 = 0.0f; + matFrustum.m5 = ((float) znear*2.0f)/tb; + matFrustum.m6 = 0.0f; + matFrustum.m7 = 0.0f; + + matFrustum.m8 = ((float)right + (float)left)/rl; + matFrustum.m9 = ((float)top + (float)bottom)/tb; + matFrustum.m10 = -((float)zfar + (float)znear)/fn; + matFrustum.m11 = -1.0f; + + matFrustum.m12 = 0.0f; + matFrustum.m13 = 0.0f; + matFrustum.m14 = -((float)zfar*(float)znear*2.0f)/fn; + matFrustum.m15 = 0.0f; + + *RLGL.State.currentMatrix = rlMatrixMultiply(*RLGL.State.currentMatrix, matFrustum); +} + +// Multiply the current matrix by an orthographic matrix generated by parameters +void rlOrtho(double left, double right, double bottom, double top, double znear, double zfar) +{ + // NOTE: If left-right and top-botton values are equal it could create a division by zero, + // response to it is platform/compiler dependant + Matrix matOrtho = { 0 }; + + float rl = (float)(right - left); + float tb = (float)(top - bottom); + float fn = (float)(zfar - znear); + + matOrtho.m0 = 2.0f/rl; + matOrtho.m1 = 0.0f; + matOrtho.m2 = 0.0f; + matOrtho.m3 = 0.0f; + matOrtho.m4 = 0.0f; + matOrtho.m5 = 2.0f/tb; + matOrtho.m6 = 0.0f; + matOrtho.m7 = 0.0f; + matOrtho.m8 = 0.0f; + matOrtho.m9 = 0.0f; + matOrtho.m10 = -2.0f/fn; + matOrtho.m11 = 0.0f; + matOrtho.m12 = -((float)left + (float)right)/rl; + matOrtho.m13 = -((float)top + (float)bottom)/tb; + matOrtho.m14 = -((float)zfar + (float)znear)/fn; + matOrtho.m15 = 1.0f; + + *RLGL.State.currentMatrix = rlMatrixMultiply(*RLGL.State.currentMatrix, matOrtho); +} +#endif + +// Set the viewport area (transformation from normalized device coordinates to window coordinates) +// NOTE: We store current viewport dimensions +void rlViewport(int x, int y, int width, int height) +{ + glViewport(x, y, width, height); +} + +// Set clip planes distances +void rlSetClipPlanes(double nearPlane, double farPlane) +{ + rlCullDistanceNear = nearPlane; + rlCullDistanceFar = farPlane; +} + +// Get cull plane distance near +double rlGetCullDistanceNear(void) +{ + return rlCullDistanceNear; +} + +// Get cull plane distance far +double rlGetCullDistanceFar(void) +{ + return rlCullDistanceFar; +} + +//---------------------------------------------------------------------------------- +// Module Functions Definition - Vertex level operations +//---------------------------------------------------------------------------------- +#if defined(GRAPHICS_API_OPENGL_11) +// Fallback to OpenGL 1.1 function calls +//--------------------------------------- +void rlBegin(int mode) +{ + switch (mode) + { + case RL_LINES: glBegin(GL_LINES); break; + case RL_TRIANGLES: glBegin(GL_TRIANGLES); break; + case RL_QUADS: glBegin(GL_QUADS); break; + default: break; + } +} + +void rlEnd(void) { glEnd(); } +void rlVertex2i(int x, int y) { glVertex2i(x, y); } +void rlVertex2f(float x, float y) { glVertex2f(x, y); } +void rlVertex3f(float x, float y, float z) { glVertex3f(x, y, z); } +void rlTexCoord2f(float x, float y) { glTexCoord2f(x, y); } +void rlNormal3f(float x, float y, float z) { glNormal3f(x, y, z); } +void rlColor4ub(unsigned char r, unsigned char g, unsigned char b, unsigned char a) { glColor4ub(r, g, b, a); } +void rlColor3f(float x, float y, float z) { glColor3f(x, y, z); } +void rlColor4f(float x, float y, float z, float w) { glColor4f(x, y, z, w); } +#endif +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) +// Initialize drawing mode (how to organize vertex) +void rlBegin(int mode) +{ + // Draw mode can be RL_LINES, RL_TRIANGLES and RL_QUADS + // NOTE: In all three cases, vertex are accumulated over default internal vertex buffer + if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].mode != mode) + { + if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount > 0) + { + // Make sure current RLGL.currentBatch->draws[i].vertexCount is aligned a multiple of 4, + // that way, following QUADS drawing will keep aligned with index processing + // It implies adding some extra alignment vertex at the end of the draw, + // those vertex are not processed but they are considered as an additional offset + // for the next set of vertex to be drawn + if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].mode == RL_LINES) RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexAlignment = ((RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount < 4)? RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount : RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount%4); + else if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].mode == RL_TRIANGLES) RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexAlignment = ((RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount < 4)? 1 : (4 - (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount%4))); + else RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexAlignment = 0; + + if (!rlCheckRenderBatchLimit(RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexAlignment)) + { + RLGL.State.vertexCounter += RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexAlignment; + RLGL.currentBatch->drawCounter++; + } + } + + if (RLGL.currentBatch->drawCounter >= RL_DEFAULT_BATCH_DRAWCALLS) rlDrawRenderBatch(RLGL.currentBatch); + + RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].mode = mode; + RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount = 0; + RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].textureId = RLGL.State.defaultTextureId; + } +} + +// Finish vertex providing +void rlEnd(void) +{ + // NOTE: Depth increment is dependant on rlOrtho(): z-near and z-far values, + // as well as depth buffer bit-depth (16bit or 24bit or 32bit) + // Correct increment formula would be: depthInc = (zfar - znear)/pow(2, bits) + RLGL.currentBatch->currentDepth += (1.0f/20000.0f); +} + +// Define one vertex (position) +// NOTE: Vertex position data is the basic information required for drawing +void rlVertex3f(float x, float y, float z) +{ + float tx = x; + float ty = y; + float tz = z; + + // Transform provided vector if required + if (RLGL.State.transformRequired) + { + tx = RLGL.State.transform.m0*x + RLGL.State.transform.m4*y + RLGL.State.transform.m8*z + RLGL.State.transform.m12; + ty = RLGL.State.transform.m1*x + RLGL.State.transform.m5*y + RLGL.State.transform.m9*z + RLGL.State.transform.m13; + tz = RLGL.State.transform.m2*x + RLGL.State.transform.m6*y + RLGL.State.transform.m10*z + RLGL.State.transform.m14; + } + + // WARNING: We can't break primitives when launching a new batch + // RL_LINES comes in pairs, RL_TRIANGLES come in groups of 3 vertices and RL_QUADS come in groups of 4 vertices + // We must check current draw.mode when a new vertex is required and finish the batch only if the draw.mode draw.vertexCount is %2, %3 or %4 + if (RLGL.State.vertexCounter > (RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].elementCount*4 - 4)) + { + if ((RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].mode == RL_LINES) && + (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount%2 == 0)) + { + // Reached the maximum number of vertices for RL_LINES drawing + // Launch a draw call but keep current state for next vertices comming + // NOTE: We add +1 vertex to the check for security + rlCheckRenderBatchLimit(2 + 1); + } + else if ((RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].mode == RL_TRIANGLES) && + (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount%3 == 0)) + { + rlCheckRenderBatchLimit(3 + 1); + } + else if ((RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].mode == RL_QUADS) && + (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount%4 == 0)) + { + rlCheckRenderBatchLimit(4 + 1); + } + } + + // Add vertices + RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].vertices[3*RLGL.State.vertexCounter] = tx; + RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].vertices[3*RLGL.State.vertexCounter + 1] = ty; + RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].vertices[3*RLGL.State.vertexCounter + 2] = tz; + + // Add current texcoord + RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].texcoords[2*RLGL.State.vertexCounter] = RLGL.State.texcoordx; + RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].texcoords[2*RLGL.State.vertexCounter + 1] = RLGL.State.texcoordy; + + // Add current normal + RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].normals[3*RLGL.State.vertexCounter] = RLGL.State.normalx; + RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].normals[3*RLGL.State.vertexCounter + 1] = RLGL.State.normaly; + RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].normals[3*RLGL.State.vertexCounter + 2] = RLGL.State.normalz; + + // Add current color + RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].colors[4*RLGL.State.vertexCounter] = RLGL.State.colorr; + RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].colors[4*RLGL.State.vertexCounter + 1] = RLGL.State.colorg; + RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].colors[4*RLGL.State.vertexCounter + 2] = RLGL.State.colorb; + RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].colors[4*RLGL.State.vertexCounter + 3] = RLGL.State.colora; + + RLGL.State.vertexCounter++; + RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount++; +} + +// Define one vertex (position) +void rlVertex2f(float x, float y) +{ + rlVertex3f(x, y, RLGL.currentBatch->currentDepth); +} + +// Define one vertex (position) +void rlVertex2i(int x, int y) +{ + rlVertex3f((float)x, (float)y, RLGL.currentBatch->currentDepth); +} + +// Define one vertex (texture coordinate) +// NOTE: Texture coordinates are limited to QUADS only +void rlTexCoord2f(float x, float y) +{ + RLGL.State.texcoordx = x; + RLGL.State.texcoordy = y; +} + +// Define one vertex (normal) +// NOTE: Normals limited to TRIANGLES only? +void rlNormal3f(float x, float y, float z) +{ + float normalx = x; + float normaly = y; + float normalz = z; + if (RLGL.State.transformRequired) + { + normalx = RLGL.State.transform.m0*x + RLGL.State.transform.m4*y + RLGL.State.transform.m8*z; + normaly = RLGL.State.transform.m1*x + RLGL.State.transform.m5*y + RLGL.State.transform.m9*z; + normalz = RLGL.State.transform.m2*x + RLGL.State.transform.m6*y + RLGL.State.transform.m10*z; + } + float length = sqrtf(normalx*normalx + normaly*normaly + normalz*normalz); + if (length != 0.0f) + { + float ilength = 1.0f/length; + normalx *= ilength; + normaly *= ilength; + normalz *= ilength; + } + RLGL.State.normalx = normalx; + RLGL.State.normaly = normaly; + RLGL.State.normalz = normalz; +} + +// Define one vertex (color) +void rlColor4ub(unsigned char x, unsigned char y, unsigned char z, unsigned char w) +{ + RLGL.State.colorr = x; + RLGL.State.colorg = y; + RLGL.State.colorb = z; + RLGL.State.colora = w; +} + +// Define one vertex (color) +void rlColor4f(float r, float g, float b, float a) +{ + rlColor4ub((unsigned char)(r*255), (unsigned char)(g*255), (unsigned char)(b*255), (unsigned char)(a*255)); +} + +// Define one vertex (color) +void rlColor3f(float x, float y, float z) +{ + rlColor4ub((unsigned char)(x*255), (unsigned char)(y*255), (unsigned char)(z*255), 255); +} + +#endif + +//-------------------------------------------------------------------------------------- +// Module Functions Definition - OpenGL style functions (common to 1.1, 3.3+, ES2) +//-------------------------------------------------------------------------------------- + +// Set current texture to use +void rlSetTexture(unsigned int id) +{ + if (id == 0) + { +#if defined(GRAPHICS_API_OPENGL_11) + rlDisableTexture(); +#else + // NOTE: If quads batch limit is reached, we force a draw call and next batch starts + if (RLGL.State.vertexCounter >= + RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].elementCount*4) + { + rlDrawRenderBatch(RLGL.currentBatch); + } +#endif + } + else + { +#if defined(GRAPHICS_API_OPENGL_11) + rlEnableTexture(id); +#else + if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].textureId != id) + { + if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount > 0) + { + // Make sure current RLGL.currentBatch->draws[i].vertexCount is aligned a multiple of 4, + // that way, following QUADS drawing will keep aligned with index processing + // It implies adding some extra alignment vertex at the end of the draw, + // those vertex are not processed but they are considered as an additional offset + // for the next set of vertex to be drawn + if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].mode == RL_LINES) RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexAlignment = ((RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount < 4)? RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount : RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount%4); + else if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].mode == RL_TRIANGLES) RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexAlignment = ((RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount < 4)? 1 : (4 - (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount%4))); + else RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexAlignment = 0; + + if (!rlCheckRenderBatchLimit(RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexAlignment)) + { + RLGL.State.vertexCounter += RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexAlignment; + + RLGL.currentBatch->drawCounter++; + } + } + + if (RLGL.currentBatch->drawCounter >= RL_DEFAULT_BATCH_DRAWCALLS) rlDrawRenderBatch(RLGL.currentBatch); + + RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].textureId = id; + RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount = 0; + } +#endif + } +} + +// Select and active a texture slot +void rlActiveTextureSlot(int slot) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glActiveTexture(GL_TEXTURE0 + slot); +#endif +} + +// Enable texture +void rlEnableTexture(unsigned int id) +{ +#if defined(GRAPHICS_API_OPENGL_11) + glEnable(GL_TEXTURE_2D); +#endif + glBindTexture(GL_TEXTURE_2D, id); +} + +// Disable texture +void rlDisableTexture(void) +{ +#if defined(GRAPHICS_API_OPENGL_11) + glDisable(GL_TEXTURE_2D); +#endif + glBindTexture(GL_TEXTURE_2D, 0); +} + +// Enable texture cubemap +void rlEnableTextureCubemap(unsigned int id) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glBindTexture(GL_TEXTURE_CUBE_MAP, id); +#endif +} + +// Disable texture cubemap +void rlDisableTextureCubemap(void) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glBindTexture(GL_TEXTURE_CUBE_MAP, 0); +#endif +} + +// Set texture parameters (wrap mode/filter mode) +void rlTextureParameters(unsigned int id, int param, int value) +{ + glBindTexture(GL_TEXTURE_2D, id); + +#if !defined(GRAPHICS_API_OPENGL_11) + // Reset anisotropy filter, in case it was set + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0f); +#endif + + switch (param) + { + case RL_TEXTURE_WRAP_S: + case RL_TEXTURE_WRAP_T: + { + if (value == RL_TEXTURE_WRAP_MIRROR_CLAMP) + { +#if !defined(GRAPHICS_API_OPENGL_11) + if (RLGL.ExtSupported.texMirrorClamp) glTexParameteri(GL_TEXTURE_2D, param, value); + else TRACELOG(RL_LOG_WARNING, "GL: Clamp mirror wrap mode not supported (GL_MIRROR_CLAMP_EXT)"); +#endif + } + else glTexParameteri(GL_TEXTURE_2D, param, value); + + } break; + case RL_TEXTURE_MAG_FILTER: + case RL_TEXTURE_MIN_FILTER: glTexParameteri(GL_TEXTURE_2D, param, value); break; + case RL_TEXTURE_FILTER_ANISOTROPIC: + { +#if !defined(GRAPHICS_API_OPENGL_11) + if (value <= RLGL.ExtSupported.maxAnisotropyLevel) glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, (float)value); + else if (RLGL.ExtSupported.maxAnisotropyLevel > 0.0f) + { + TRACELOG(RL_LOG_WARNING, "GL: Maximum anisotropic filter level supported is %iX", id, (int)RLGL.ExtSupported.maxAnisotropyLevel); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, (float)value); + } + else TRACELOG(RL_LOG_WARNING, "GL: Anisotropic filtering not supported"); +#endif + } break; +#if defined(GRAPHICS_API_OPENGL_33) + case RL_TEXTURE_MIPMAP_BIAS_RATIO: glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_LOD_BIAS, value/100.0f); +#endif + default: break; + } + + glBindTexture(GL_TEXTURE_2D, 0); +} + +// Set cubemap parameters (wrap mode/filter mode) +void rlCubemapParameters(unsigned int id, int param, int value) +{ +#if !defined(GRAPHICS_API_OPENGL_11) + glBindTexture(GL_TEXTURE_CUBE_MAP, id); + + // Reset anisotropy filter, in case it was set + glTexParameterf(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0f); + + switch (param) + { + case RL_TEXTURE_WRAP_S: + case RL_TEXTURE_WRAP_T: + { + if (value == RL_TEXTURE_WRAP_MIRROR_CLAMP) + { + if (RLGL.ExtSupported.texMirrorClamp) glTexParameteri(GL_TEXTURE_CUBE_MAP, param, value); + else TRACELOG(RL_LOG_WARNING, "GL: Clamp mirror wrap mode not supported (GL_MIRROR_CLAMP_EXT)"); + } + else glTexParameteri(GL_TEXTURE_CUBE_MAP, param, value); + + } break; + case RL_TEXTURE_MAG_FILTER: + case RL_TEXTURE_MIN_FILTER: glTexParameteri(GL_TEXTURE_CUBE_MAP, param, value); break; + case RL_TEXTURE_FILTER_ANISOTROPIC: + { + if (value <= RLGL.ExtSupported.maxAnisotropyLevel) glTexParameterf(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAX_ANISOTROPY_EXT, (float)value); + else if (RLGL.ExtSupported.maxAnisotropyLevel > 0.0f) + { + TRACELOG(RL_LOG_WARNING, "GL: Maximum anisotropic filter level supported is %iX", id, (int)RLGL.ExtSupported.maxAnisotropyLevel); + glTexParameterf(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAX_ANISOTROPY_EXT, (float)value); + } + else TRACELOG(RL_LOG_WARNING, "GL: Anisotropic filtering not supported"); + } break; +#if defined(GRAPHICS_API_OPENGL_33) + case RL_TEXTURE_MIPMAP_BIAS_RATIO: glTexParameterf(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_LOD_BIAS, value/100.0f); +#endif + default: break; + } + + glBindTexture(GL_TEXTURE_CUBE_MAP, 0); +#endif +} + +// Enable shader program +void rlEnableShader(unsigned int id) +{ +#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)) + glUseProgram(id); +#endif +} + +// Disable shader program +void rlDisableShader(void) +{ +#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)) + glUseProgram(0); +#endif +} + +// Enable rendering to texture (fbo) +void rlEnableFramebuffer(unsigned int id) +{ +#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)) && defined(RLGL_RENDER_TEXTURES_HINT) + glBindFramebuffer(GL_FRAMEBUFFER, id); +#endif +} + +// return the active render texture (fbo) +unsigned int rlGetActiveFramebuffer(void) +{ + GLint fboId = 0; +#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES3)) && defined(RLGL_RENDER_TEXTURES_HINT) + glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &fboId); +#endif + return fboId; +} + +// Disable rendering to texture +void rlDisableFramebuffer(void) +{ +#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)) && defined(RLGL_RENDER_TEXTURES_HINT) + glBindFramebuffer(GL_FRAMEBUFFER, 0); +#endif +} + +// Blit active framebuffer to main framebuffer +void rlBlitFramebuffer(int srcX, int srcY, int srcWidth, int srcHeight, int dstX, int dstY, int dstWidth, int dstHeight, int bufferMask) +{ +#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES3)) && defined(RLGL_RENDER_TEXTURES_HINT) + glBlitFramebuffer(srcX, srcY, srcWidth, srcHeight, dstX, dstY, dstWidth, dstHeight, bufferMask, GL_NEAREST); +#endif +} + +// Bind framebuffer object (fbo) +void rlBindFramebuffer(unsigned int target, unsigned int framebuffer) +{ +#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)) && defined(RLGL_RENDER_TEXTURES_HINT) + glBindFramebuffer(target, framebuffer); +#endif +} + +// Activate multiple draw color buffers +// NOTE: One color buffer is always active by default +void rlActiveDrawBuffers(int count) +{ +#if ((defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES3)) && defined(RLGL_RENDER_TEXTURES_HINT)) + // NOTE: Maximum number of draw buffers supported is implementation dependant, + // it can be queried with glGet*() but it must be at least 8 + //GLint maxDrawBuffers = 0; + //glGetIntegerv(GL_MAX_DRAW_BUFFERS, &maxDrawBuffers); + + if (count > 0) + { + if (count > 8) TRACELOG(LOG_WARNING, "GL: Max color buffers limited to 8"); + else + { + unsigned int buffers[8] = { +#if defined(GRAPHICS_API_OPENGL_ES3) + GL_COLOR_ATTACHMENT0_EXT, + GL_COLOR_ATTACHMENT1_EXT, + GL_COLOR_ATTACHMENT2_EXT, + GL_COLOR_ATTACHMENT3_EXT, + GL_COLOR_ATTACHMENT4_EXT, + GL_COLOR_ATTACHMENT5_EXT, + GL_COLOR_ATTACHMENT6_EXT, + GL_COLOR_ATTACHMENT7_EXT, +#else + GL_COLOR_ATTACHMENT0, + GL_COLOR_ATTACHMENT1, + GL_COLOR_ATTACHMENT2, + GL_COLOR_ATTACHMENT3, + GL_COLOR_ATTACHMENT4, + GL_COLOR_ATTACHMENT5, + GL_COLOR_ATTACHMENT6, + GL_COLOR_ATTACHMENT7, +#endif + }; + +#if defined(GRAPHICS_API_OPENGL_ES3) + glDrawBuffersEXT(count, buffers); +#else + glDrawBuffers(count, buffers); +#endif + } + } + else TRACELOG(LOG_WARNING, "GL: One color buffer active by default"); +#endif +} + +//---------------------------------------------------------------------------------- +// General render state configuration +//---------------------------------------------------------------------------------- + +// Enable color blending +void rlEnableColorBlend(void) { glEnable(GL_BLEND); } + +// Disable color blending +void rlDisableColorBlend(void) { glDisable(GL_BLEND); } + +// Enable depth test +void rlEnableDepthTest(void) { glEnable(GL_DEPTH_TEST); } + +// Disable depth test +void rlDisableDepthTest(void) { glDisable(GL_DEPTH_TEST); } + +// Enable depth write +void rlEnableDepthMask(void) { glDepthMask(GL_TRUE); } + +// Disable depth write +void rlDisableDepthMask(void) { glDepthMask(GL_FALSE); } + +// Enable backface culling +void rlEnableBackfaceCulling(void) { glEnable(GL_CULL_FACE); } + +// Disable backface culling +void rlDisableBackfaceCulling(void) { glDisable(GL_CULL_FACE); } + +// Set color mask active for screen read/draw +void rlColorMask(bool r, bool g, bool b, bool a) { glColorMask(r, g, b, a); } + +// Set face culling mode +void rlSetCullFace(int mode) +{ + switch (mode) + { + case RL_CULL_FACE_BACK: glCullFace(GL_BACK); break; + case RL_CULL_FACE_FRONT: glCullFace(GL_FRONT); break; + default: break; + } +} + +// Enable scissor test +void rlEnableScissorTest(void) { glEnable(GL_SCISSOR_TEST); } + +// Disable scissor test +void rlDisableScissorTest(void) { glDisable(GL_SCISSOR_TEST); } + +// Scissor test +void rlScissor(int x, int y, int width, int height) { glScissor(x, y, width, height); } + +// Enable wire mode +void rlEnableWireMode(void) +{ +#if defined(GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_33) + // NOTE: glPolygonMode() not available on OpenGL ES + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); +#endif +} + +// Enable point mode +void rlEnablePointMode(void) +{ +#if defined(GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_33) + // NOTE: glPolygonMode() not available on OpenGL ES + glPolygonMode(GL_FRONT_AND_BACK, GL_POINT); + glEnable(GL_PROGRAM_POINT_SIZE); +#endif +} + +// Disable wire mode +void rlDisableWireMode(void) +{ +#if defined(GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_33) + // NOTE: glPolygonMode() not available on OpenGL ES + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); +#endif +} + +// Set the line drawing width +void rlSetLineWidth(float width) { glLineWidth(width); } + +// Get the line drawing width +float rlGetLineWidth(void) +{ + float width = 0; + glGetFloatv(GL_LINE_WIDTH, &width); + return width; +} + +// Enable line aliasing +void rlEnableSmoothLines(void) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_11) + glEnable(GL_LINE_SMOOTH); +#endif +} + +// Disable line aliasing +void rlDisableSmoothLines(void) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_11) + glDisable(GL_LINE_SMOOTH); +#endif +} + +// Enable stereo rendering +void rlEnableStereoRender(void) +{ +#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)) + RLGL.State.stereoRender = true; +#endif +} + +// Disable stereo rendering +void rlDisableStereoRender(void) +{ +#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)) + RLGL.State.stereoRender = false; +#endif +} + +// Check if stereo render is enabled +bool rlIsStereoRenderEnabled(void) +{ +#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)) + return RLGL.State.stereoRender; +#else + return false; +#endif +} + +// Clear color buffer with color +void rlClearColor(unsigned char r, unsigned char g, unsigned char b, unsigned char a) +{ + // Color values clamp to 0.0f(0) and 1.0f(255) + float cr = (float)r/255; + float cg = (float)g/255; + float cb = (float)b/255; + float ca = (float)a/255; + + glClearColor(cr, cg, cb, ca); +} + +// Clear used screen buffers (color and depth) +void rlClearScreenBuffers(void) +{ + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear used buffers: Color and Depth (Depth is used for 3D) + //glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); // Stencil buffer not used... +} + +// Check and log OpenGL error codes +void rlCheckErrors(void) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + int check = 1; + while (check) + { + const GLenum err = glGetError(); + switch (err) + { + case GL_NO_ERROR: check = 0; break; + case 0x0500: TRACELOG(RL_LOG_WARNING, "GL: Error detected: GL_INVALID_ENUM"); break; + case 0x0501: TRACELOG(RL_LOG_WARNING, "GL: Error detected: GL_INVALID_VALUE"); break; + case 0x0502: TRACELOG(RL_LOG_WARNING, "GL: Error detected: GL_INVALID_OPERATION"); break; + case 0x0503: TRACELOG(RL_LOG_WARNING, "GL: Error detected: GL_STACK_OVERFLOW"); break; + case 0x0504: TRACELOG(RL_LOG_WARNING, "GL: Error detected: GL_STACK_UNDERFLOW"); break; + case 0x0505: TRACELOG(RL_LOG_WARNING, "GL: Error detected: GL_OUT_OF_MEMORY"); break; + case 0x0506: TRACELOG(RL_LOG_WARNING, "GL: Error detected: GL_INVALID_FRAMEBUFFER_OPERATION"); break; + default: TRACELOG(RL_LOG_WARNING, "GL: Error detected: Unknown error code: %x", err); break; + } + } +#endif +} + +// Set blend mode +void rlSetBlendMode(int mode) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + if ((RLGL.State.currentBlendMode != mode) || ((mode == RL_BLEND_CUSTOM || mode == RL_BLEND_CUSTOM_SEPARATE) && RLGL.State.glCustomBlendModeModified)) + { + rlDrawRenderBatch(RLGL.currentBatch); + + switch (mode) + { + case RL_BLEND_ALPHA: glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBlendEquation(GL_FUNC_ADD); break; + case RL_BLEND_ADDITIVE: glBlendFunc(GL_SRC_ALPHA, GL_ONE); glBlendEquation(GL_FUNC_ADD); break; + case RL_BLEND_MULTIPLIED: glBlendFunc(GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA); glBlendEquation(GL_FUNC_ADD); break; + case RL_BLEND_ADD_COLORS: glBlendFunc(GL_ONE, GL_ONE); glBlendEquation(GL_FUNC_ADD); break; + case RL_BLEND_SUBTRACT_COLORS: glBlendFunc(GL_ONE, GL_ONE); glBlendEquation(GL_FUNC_SUBTRACT); break; + case RL_BLEND_ALPHA_PREMULTIPLY: glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); glBlendEquation(GL_FUNC_ADD); break; + case RL_BLEND_CUSTOM: + { + // NOTE: Using GL blend src/dst factors and GL equation configured with rlSetBlendFactors() + glBlendFunc(RLGL.State.glBlendSrcFactor, RLGL.State.glBlendDstFactor); glBlendEquation(RLGL.State.glBlendEquation); + + } break; + case RL_BLEND_CUSTOM_SEPARATE: + { + // NOTE: Using GL blend src/dst factors and GL equation configured with rlSetBlendFactorsSeparate() + glBlendFuncSeparate(RLGL.State.glBlendSrcFactorRGB, RLGL.State.glBlendDestFactorRGB, RLGL.State.glBlendSrcFactorAlpha, RLGL.State.glBlendDestFactorAlpha); + glBlendEquationSeparate(RLGL.State.glBlendEquationRGB, RLGL.State.glBlendEquationAlpha); + + } break; + default: break; + } + + RLGL.State.currentBlendMode = mode; + RLGL.State.glCustomBlendModeModified = false; + } +#endif +} + +// Set blending mode factor and equation +void rlSetBlendFactors(int glSrcFactor, int glDstFactor, int glEquation) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + if ((RLGL.State.glBlendSrcFactor != glSrcFactor) || + (RLGL.State.glBlendDstFactor != glDstFactor) || + (RLGL.State.glBlendEquation != glEquation)) + { + RLGL.State.glBlendSrcFactor = glSrcFactor; + RLGL.State.glBlendDstFactor = glDstFactor; + RLGL.State.glBlendEquation = glEquation; + + RLGL.State.glCustomBlendModeModified = true; + } +#endif +} + +// Set blending mode factor and equation separately for RGB and alpha +void rlSetBlendFactorsSeparate(int glSrcRGB, int glDstRGB, int glSrcAlpha, int glDstAlpha, int glEqRGB, int glEqAlpha) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + if ((RLGL.State.glBlendSrcFactorRGB != glSrcRGB) || + (RLGL.State.glBlendDestFactorRGB != glDstRGB) || + (RLGL.State.glBlendSrcFactorAlpha != glSrcAlpha) || + (RLGL.State.glBlendDestFactorAlpha != glDstAlpha) || + (RLGL.State.glBlendEquationRGB != glEqRGB) || + (RLGL.State.glBlendEquationAlpha != glEqAlpha)) + { + RLGL.State.glBlendSrcFactorRGB = glSrcRGB; + RLGL.State.glBlendDestFactorRGB = glDstRGB; + RLGL.State.glBlendSrcFactorAlpha = glSrcAlpha; + RLGL.State.glBlendDestFactorAlpha = glDstAlpha; + RLGL.State.glBlendEquationRGB = glEqRGB; + RLGL.State.glBlendEquationAlpha = glEqAlpha; + + RLGL.State.glCustomBlendModeModified = true; + } +#endif +} + +//---------------------------------------------------------------------------------- +// Module Functions Definition - OpenGL Debug +//---------------------------------------------------------------------------------- +#if defined(RLGL_ENABLE_OPENGL_DEBUG_CONTEXT) && defined(GRAPHICS_API_OPENGL_43) +static void GLAPIENTRY rlDebugMessageCallback(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *message, const void *userParam) +{ + // Ignore non-significant error/warning codes (NVidia drivers) + // NOTE: Here there are the details with a sample output: + // - #131169 - Framebuffer detailed info: The driver allocated storage for renderbuffer 2. (severity: low) + // - #131185 - Buffer detailed info: Buffer object 1 (bound to GL_ELEMENT_ARRAY_BUFFER_ARB, usage hint is GL_ENUM_88e4) + // will use VIDEO memory as the source for buffer object operations. (severity: low) + // - #131218 - Program/shader state performance warning: Vertex shader in program 7 is being recompiled based on GL state. (severity: medium) + // - #131204 - Texture state usage warning: The texture object (0) bound to texture image unit 0 does not have + // a defined base level and cannot be used for texture mapping. (severity: low) + if ((id == 131169) || (id == 131185) || (id == 131218) || (id == 131204)) return; + + const char *msgSource = NULL; + switch (source) + { + case GL_DEBUG_SOURCE_API: msgSource = "API"; break; + case GL_DEBUG_SOURCE_WINDOW_SYSTEM: msgSource = "WINDOW_SYSTEM"; break; + case GL_DEBUG_SOURCE_SHADER_COMPILER: msgSource = "SHADER_COMPILER"; break; + case GL_DEBUG_SOURCE_THIRD_PARTY: msgSource = "THIRD_PARTY"; break; + case GL_DEBUG_SOURCE_APPLICATION: msgSource = "APPLICATION"; break; + case GL_DEBUG_SOURCE_OTHER: msgSource = "OTHER"; break; + default: break; + } + + const char *msgType = NULL; + switch (type) + { + case GL_DEBUG_TYPE_ERROR: msgType = "ERROR"; break; + case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR: msgType = "DEPRECATED_BEHAVIOR"; break; + case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR: msgType = "UNDEFINED_BEHAVIOR"; break; + case GL_DEBUG_TYPE_PORTABILITY: msgType = "PORTABILITY"; break; + case GL_DEBUG_TYPE_PERFORMANCE: msgType = "PERFORMANCE"; break; + case GL_DEBUG_TYPE_MARKER: msgType = "MARKER"; break; + case GL_DEBUG_TYPE_PUSH_GROUP: msgType = "PUSH_GROUP"; break; + case GL_DEBUG_TYPE_POP_GROUP: msgType = "POP_GROUP"; break; + case GL_DEBUG_TYPE_OTHER: msgType = "OTHER"; break; + default: break; + } + + const char *msgSeverity = "DEFAULT"; + switch (severity) + { + case GL_DEBUG_SEVERITY_LOW: msgSeverity = "LOW"; break; + case GL_DEBUG_SEVERITY_MEDIUM: msgSeverity = "MEDIUM"; break; + case GL_DEBUG_SEVERITY_HIGH: msgSeverity = "HIGH"; break; + case GL_DEBUG_SEVERITY_NOTIFICATION: msgSeverity = "NOTIFICATION"; break; + default: break; + } + + TRACELOG(LOG_WARNING, "GL: OpenGL debug message: %s", message); + TRACELOG(LOG_WARNING, " > Type: %s", msgType); + TRACELOG(LOG_WARNING, " > Source = %s", msgSource); + TRACELOG(LOG_WARNING, " > Severity = %s", msgSeverity); +} +#endif + +//---------------------------------------------------------------------------------- +// Module Functions Definition - rlgl functionality +//---------------------------------------------------------------------------------- + +// Initialize rlgl: OpenGL extensions, default buffers/shaders/textures, OpenGL states +void rlglInit(int width, int height) +{ + // Enable OpenGL debug context if required +#if defined(RLGL_ENABLE_OPENGL_DEBUG_CONTEXT) && defined(GRAPHICS_API_OPENGL_43) + if ((glDebugMessageCallback != NULL) && (glDebugMessageControl != NULL)) + { + glDebugMessageCallback(rlDebugMessageCallback, 0); + // glDebugMessageControl(GL_DEBUG_SOURCE_API, GL_DEBUG_TYPE_ERROR, GL_DEBUG_SEVERITY_HIGH, 0, 0, GL_TRUE); + + // Debug context options: + // - GL_DEBUG_OUTPUT - Faster version but not useful for breakpoints + // - GL_DEBUG_OUTPUT_SYNCHRONUS - Callback is in sync with errors, so a breakpoint can be placed on the callback in order to get a stacktrace for the GL error + glEnable(GL_DEBUG_OUTPUT); + glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS); + } +#endif + +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + // Init default white texture + unsigned char pixels[4] = { 255, 255, 255, 255 }; // 1 pixel RGBA (4 bytes) + RLGL.State.defaultTextureId = rlLoadTexture(pixels, 1, 1, RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, 1); + + if (RLGL.State.defaultTextureId != 0) TRACELOG(RL_LOG_INFO, "TEXTURE: [ID %i] Default texture loaded successfully", RLGL.State.defaultTextureId); + else TRACELOG(RL_LOG_WARNING, "TEXTURE: Failed to load default texture"); + + // Init default Shader (customized for GL 3.3 and ES2) + // Loaded: RLGL.State.defaultShaderId + RLGL.State.defaultShaderLocs + rlLoadShaderDefault(); + RLGL.State.currentShaderId = RLGL.State.defaultShaderId; + RLGL.State.currentShaderLocs = RLGL.State.defaultShaderLocs; + + // Init default vertex arrays buffers + // Simulate that the default shader has the location RL_SHADER_LOC_VERTEX_NORMAL to bind the normal buffer for the default render batch + RLGL.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_NORMAL] = RL_DEFAULT_SHADER_ATTRIB_LOCATION_NORMAL; + RLGL.defaultBatch = rlLoadRenderBatch(RL_DEFAULT_BATCH_BUFFERS, RL_DEFAULT_BATCH_BUFFER_ELEMENTS); + RLGL.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_NORMAL] = -1; + RLGL.currentBatch = &RLGL.defaultBatch; + + // Init stack matrices (emulating OpenGL 1.1) + for (int i = 0; i < RL_MAX_MATRIX_STACK_SIZE; i++) RLGL.State.stack[i] = rlMatrixIdentity(); + + // Init internal matrices + RLGL.State.transform = rlMatrixIdentity(); + RLGL.State.projection = rlMatrixIdentity(); + RLGL.State.modelview = rlMatrixIdentity(); + RLGL.State.currentMatrix = &RLGL.State.modelview; +#endif // GRAPHICS_API_OPENGL_33 || GRAPHICS_API_OPENGL_ES2 + + // Initialize OpenGL default states + //---------------------------------------------------------- + // Init state: Depth test + glDepthFunc(GL_LEQUAL); // Type of depth testing to apply + glDisable(GL_DEPTH_TEST); // Disable depth testing for 2D (only used for 3D) + + // Init state: Blending mode + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // Color blending function (how colors are mixed) + glEnable(GL_BLEND); // Enable color blending (required to work with transparencies) + + // Init state: Culling + // NOTE: All shapes/models triangles are drawn CCW + glCullFace(GL_BACK); // Cull the back face (default) + glFrontFace(GL_CCW); // Front face are defined counter clockwise (default) + glEnable(GL_CULL_FACE); // Enable backface culling + + // Init state: Cubemap seamless +#if defined(GRAPHICS_API_OPENGL_33) + glEnable(GL_TEXTURE_CUBE_MAP_SEAMLESS); // Seamless cubemaps (not supported on OpenGL ES 2.0) +#endif + +#if defined(GRAPHICS_API_OPENGL_11) + // Init state: Color hints (deprecated in OpenGL 3.0+) + glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Improve quality of color and texture coordinate interpolation + glShadeModel(GL_SMOOTH); // Smooth shading between vertex (vertex colors interpolation) +#endif + +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + // Store screen size into global variables + RLGL.State.framebufferWidth = width; + RLGL.State.framebufferHeight = height; + + TRACELOG(RL_LOG_INFO, "RLGL: Default OpenGL state initialized successfully"); + //---------------------------------------------------------- +#endif + + // Init state: Color/Depth buffers clear + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Set clear color (black) + glClearDepth(1.0f); // Set clear depth value (default) + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear color and depth buffers (depth buffer required for 3D) +} + +// Vertex Buffer Object deinitialization (memory free) +void rlglClose(void) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + rlUnloadRenderBatch(RLGL.defaultBatch); + + rlUnloadShaderDefault(); // Unload default shader + + glDeleteTextures(1, &RLGL.State.defaultTextureId); // Unload default texture + TRACELOG(RL_LOG_INFO, "TEXTURE: [ID %i] Default texture unloaded successfully", RLGL.State.defaultTextureId); +#endif +} + +// Load OpenGL extensions +// NOTE: External loader function must be provided +void rlLoadExtensions(void *loader) +{ +#if defined(GRAPHICS_API_OPENGL_33) // Also defined for GRAPHICS_API_OPENGL_21 + // NOTE: glad is generated and contains only required OpenGL 3.3 Core extensions (and lower versions) + if (gladLoadGL((GLADloadfunc)loader) == 0) TRACELOG(RL_LOG_WARNING, "GLAD: Cannot load OpenGL extensions"); + else TRACELOG(RL_LOG_INFO, "GLAD: OpenGL extensions loaded successfully"); + + // Get number of supported extensions + GLint numExt = 0; + glGetIntegerv(GL_NUM_EXTENSIONS, &numExt); + TRACELOG(RL_LOG_INFO, "GL: Supported extensions count: %i", numExt); + +#if defined(RLGL_SHOW_GL_DETAILS_INFO) + // Get supported extensions list + // WARNING: glGetStringi() not available on OpenGL 2.1 + TRACELOG(RL_LOG_INFO, "GL: OpenGL extensions:"); + for (int i = 0; i < numExt; i++) TRACELOG(RL_LOG_INFO, " %s", glGetStringi(GL_EXTENSIONS, i)); +#endif + +#if defined(GRAPHICS_API_OPENGL_21) + // Register supported extensions flags + // Optional OpenGL 2.1 extensions + RLGL.ExtSupported.vao = GLAD_GL_ARB_vertex_array_object; + RLGL.ExtSupported.instancing = (GLAD_GL_EXT_draw_instanced && GLAD_GL_ARB_instanced_arrays); + RLGL.ExtSupported.texNPOT = GLAD_GL_ARB_texture_non_power_of_two; + RLGL.ExtSupported.texFloat32 = GLAD_GL_ARB_texture_float; + RLGL.ExtSupported.texFloat16 = GLAD_GL_ARB_texture_float; + RLGL.ExtSupported.texDepth = GLAD_GL_ARB_depth_texture; + RLGL.ExtSupported.maxDepthBits = 32; + RLGL.ExtSupported.texAnisoFilter = GLAD_GL_EXT_texture_filter_anisotropic; + RLGL.ExtSupported.texMirrorClamp = GLAD_GL_EXT_texture_mirror_clamp; +#else + // Register supported extensions flags + // OpenGL 3.3 extensions supported by default (core) + RLGL.ExtSupported.vao = true; + RLGL.ExtSupported.instancing = true; + RLGL.ExtSupported.texNPOT = true; + RLGL.ExtSupported.texFloat32 = true; + RLGL.ExtSupported.texFloat16 = true; + RLGL.ExtSupported.texDepth = true; + RLGL.ExtSupported.maxDepthBits = 32; + RLGL.ExtSupported.texAnisoFilter = true; + RLGL.ExtSupported.texMirrorClamp = true; +#endif + + // Optional OpenGL 3.3 extensions + RLGL.ExtSupported.texCompASTC = GLAD_GL_KHR_texture_compression_astc_hdr && GLAD_GL_KHR_texture_compression_astc_ldr; + RLGL.ExtSupported.texCompDXT = GLAD_GL_EXT_texture_compression_s3tc; // Texture compression: DXT + RLGL.ExtSupported.texCompETC2 = GLAD_GL_ARB_ES3_compatibility; // Texture compression: ETC2/EAC + #if defined(GRAPHICS_API_OPENGL_43) + RLGL.ExtSupported.computeShader = GLAD_GL_ARB_compute_shader; + RLGL.ExtSupported.ssbo = GLAD_GL_ARB_shader_storage_buffer_object; + #endif + +#endif // GRAPHICS_API_OPENGL_33 + +#if defined(GRAPHICS_API_OPENGL_ES3) + // Register supported extensions flags + // OpenGL ES 3.0 extensions supported by default (or it should be) + RLGL.ExtSupported.vao = true; + RLGL.ExtSupported.instancing = true; + RLGL.ExtSupported.texNPOT = true; + RLGL.ExtSupported.texFloat32 = true; + RLGL.ExtSupported.texFloat16 = true; + RLGL.ExtSupported.texDepth = true; + RLGL.ExtSupported.texDepthWebGL = true; + RLGL.ExtSupported.maxDepthBits = 24; + RLGL.ExtSupported.texAnisoFilter = true; + RLGL.ExtSupported.texMirrorClamp = true; + // TODO: Check for additional OpenGL ES 3.0 supported extensions: + //RLGL.ExtSupported.texCompDXT = true; + //RLGL.ExtSupported.texCompETC1 = true; + //RLGL.ExtSupported.texCompETC2 = true; + //RLGL.ExtSupported.texCompPVRT = true; + //RLGL.ExtSupported.texCompASTC = true; + //RLGL.ExtSupported.maxAnisotropyLevel = true; + //RLGL.ExtSupported.computeShader = true; + //RLGL.ExtSupported.ssbo = true; + +#elif defined(GRAPHICS_API_OPENGL_ES2) + + #if defined(PLATFORM_DESKTOP_GLFW) || defined(PLATFORM_DESKTOP_SDL) + // TODO: Support GLAD loader for OpenGL ES 3.0 + if (gladLoadGLES2((GLADloadfunc)loader) == 0) TRACELOG(RL_LOG_WARNING, "GLAD: Cannot load OpenGL ES2.0 functions"); + else TRACELOG(RL_LOG_INFO, "GLAD: OpenGL ES 2.0 loaded successfully"); + #endif + + // Get supported extensions list + GLint numExt = 0; + const char **extList = RL_MALLOC(512*sizeof(const char *)); // Allocate 512 strings pointers (2 KB) + const char *extensions = (const char *)glGetString(GL_EXTENSIONS); // One big const string + + // NOTE: We have to duplicate string because glGetString() returns a const string + int size = strlen(extensions) + 1; // Get extensions string size in bytes + char *extensionsDup = (char *)RL_CALLOC(size, sizeof(char)); + strcpy(extensionsDup, extensions); + extList[numExt] = extensionsDup; + + for (int i = 0; i < size; i++) + { + if (extensionsDup[i] == ' ') + { + extensionsDup[i] = '\0'; + numExt++; + extList[numExt] = &extensionsDup[i + 1]; + } + } + + TRACELOG(RL_LOG_INFO, "GL: Supported extensions count: %i", numExt); + +#if defined(RLGL_SHOW_GL_DETAILS_INFO) + TRACELOG(RL_LOG_INFO, "GL: OpenGL extensions:"); + for (int i = 0; i < numExt; i++) TRACELOG(RL_LOG_INFO, " %s", extList[i]); +#endif + + // Check required extensions + for (int i = 0; i < numExt; i++) + { + // Check VAO support + // NOTE: Only check on OpenGL ES, OpenGL 3.3 has VAO support as core feature + if (strcmp(extList[i], (const char *)"GL_OES_vertex_array_object") == 0) + { + // The extension is supported by our hardware and driver, try to get related functions pointers + // NOTE: emscripten does not support VAOs natively, it uses emulation and it reduces overall performance... + glGenVertexArrays = (PFNGLGENVERTEXARRAYSOESPROC)((rlglLoadProc)loader)("glGenVertexArraysOES"); + glBindVertexArray = (PFNGLBINDVERTEXARRAYOESPROC)((rlglLoadProc)loader)("glBindVertexArrayOES"); + glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSOESPROC)((rlglLoadProc)loader)("glDeleteVertexArraysOES"); + //glIsVertexArray = (PFNGLISVERTEXARRAYOESPROC)loader("glIsVertexArrayOES"); // NOTE: Fails in WebGL, omitted + + if ((glGenVertexArrays != NULL) && (glBindVertexArray != NULL) && (glDeleteVertexArrays != NULL)) RLGL.ExtSupported.vao = true; + } + + // Check instanced rendering support + if (strstr(extList[i], (const char*)"instanced_arrays") != NULL) // Broad check for instanced_arrays + { + // Specific check + if (strcmp(extList[i], (const char *)"GL_ANGLE_instanced_arrays") == 0) // ANGLE + { + glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDEXTPROC)((rlglLoadProc)loader)("glDrawArraysInstancedANGLE"); + glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDEXTPROC)((rlglLoadProc)loader)("glDrawElementsInstancedANGLE"); + glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISOREXTPROC)((rlglLoadProc)loader)("glVertexAttribDivisorANGLE"); + } + else if (strcmp(extList[i], (const char *)"GL_EXT_instanced_arrays") == 0) // EXT + { + glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDEXTPROC)((rlglLoadProc)loader)("glDrawArraysInstancedEXT"); + glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDEXTPROC)((rlglLoadProc)loader)("glDrawElementsInstancedEXT"); + glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISOREXTPROC)((rlglLoadProc)loader)("glVertexAttribDivisorEXT"); + } + else if (strcmp(extList[i], (const char *)"GL_NV_instanced_arrays") == 0) // NVIDIA GLES + { + glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDEXTPROC)((rlglLoadProc)loader)("glDrawArraysInstancedNV"); + glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDEXTPROC)((rlglLoadProc)loader)("glDrawElementsInstancedNV"); + glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISOREXTPROC)((rlglLoadProc)loader)("glVertexAttribDivisorNV"); + } + + // The feature will only be marked as supported if the elements from GL_XXX_instanced_arrays are present + if ((glDrawArraysInstanced != NULL) && (glDrawElementsInstanced != NULL) && (glVertexAttribDivisor != NULL)) RLGL.ExtSupported.instancing = true; + } + else if (strstr(extList[i], (const char *)"draw_instanced") != NULL) + { + // GL_ANGLE_draw_instanced doesn't exist + if (strcmp(extList[i], (const char *)"GL_EXT_draw_instanced") == 0) + { + glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDEXTPROC)((rlglLoadProc)loader)("glDrawArraysInstancedEXT"); + glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDEXTPROC)((rlglLoadProc)loader)("glDrawElementsInstancedEXT"); + } + else if (strcmp(extList[i], (const char*)"GL_NV_draw_instanced") == 0) + { + glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDEXTPROC)((rlglLoadProc)loader)("glDrawArraysInstancedNV"); + glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDEXTPROC)((rlglLoadProc)loader)("glDrawElementsInstancedNV"); + } + + // But the functions will at least be loaded if only GL_XX_EXT_draw_instanced exist + if ((glDrawArraysInstanced != NULL) && (glDrawElementsInstanced != NULL) && (glVertexAttribDivisor != NULL)) RLGL.ExtSupported.instancing = true; + } + + // Check NPOT textures support + // NOTE: Only check on OpenGL ES, OpenGL 3.3 has NPOT textures full support as core feature + if (strcmp(extList[i], (const char *)"GL_OES_texture_npot") == 0) RLGL.ExtSupported.texNPOT = true; + + // Check texture float support + if (strcmp(extList[i], (const char *)"GL_OES_texture_float") == 0) RLGL.ExtSupported.texFloat32 = true; + if (strcmp(extList[i], (const char *)"GL_OES_texture_half_float") == 0) RLGL.ExtSupported.texFloat16 = true; + + // Check depth texture support + if (strcmp(extList[i], (const char *)"GL_OES_depth_texture") == 0) RLGL.ExtSupported.texDepth = true; + if (strcmp(extList[i], (const char *)"GL_WEBGL_depth_texture") == 0) RLGL.ExtSupported.texDepthWebGL = true; // WebGL requires unsized internal format + if (RLGL.ExtSupported.texDepthWebGL) RLGL.ExtSupported.texDepth = true; + + if (strcmp(extList[i], (const char *)"GL_OES_depth24") == 0) RLGL.ExtSupported.maxDepthBits = 24; // Not available on WebGL + if (strcmp(extList[i], (const char *)"GL_OES_depth32") == 0) RLGL.ExtSupported.maxDepthBits = 32; // Not available on WebGL + + // Check texture compression support: DXT + if ((strcmp(extList[i], (const char *)"GL_EXT_texture_compression_s3tc") == 0) || + (strcmp(extList[i], (const char *)"GL_WEBGL_compressed_texture_s3tc") == 0) || + (strcmp(extList[i], (const char *)"GL_WEBKIT_WEBGL_compressed_texture_s3tc") == 0)) RLGL.ExtSupported.texCompDXT = true; + + // Check texture compression support: ETC1 + if ((strcmp(extList[i], (const char *)"GL_OES_compressed_ETC1_RGB8_texture") == 0) || + (strcmp(extList[i], (const char *)"GL_WEBGL_compressed_texture_etc1") == 0)) RLGL.ExtSupported.texCompETC1 = true; + + // Check texture compression support: ETC2/EAC + if (strcmp(extList[i], (const char *)"GL_ARB_ES3_compatibility") == 0) RLGL.ExtSupported.texCompETC2 = true; + + // Check texture compression support: PVR + if (strcmp(extList[i], (const char *)"GL_IMG_texture_compression_pvrtc") == 0) RLGL.ExtSupported.texCompPVRT = true; + + // Check texture compression support: ASTC + if (strcmp(extList[i], (const char *)"GL_KHR_texture_compression_astc_hdr") == 0) RLGL.ExtSupported.texCompASTC = true; + + // Check anisotropic texture filter support + if (strcmp(extList[i], (const char *)"GL_EXT_texture_filter_anisotropic") == 0) RLGL.ExtSupported.texAnisoFilter = true; + + // Check clamp mirror wrap mode support + if (strcmp(extList[i], (const char *)"GL_EXT_texture_mirror_clamp") == 0) RLGL.ExtSupported.texMirrorClamp = true; + } + + // Free extensions pointers + RL_FREE(extList); + RL_FREE(extensionsDup); // Duplicated string must be deallocated +#endif // GRAPHICS_API_OPENGL_ES2 + + // Check OpenGL information and capabilities + //------------------------------------------------------------------------------ + // Show current OpenGL and GLSL version + TRACELOG(RL_LOG_INFO, "GL: OpenGL device information:"); + TRACELOG(RL_LOG_INFO, " > Vendor: %s", glGetString(GL_VENDOR)); + TRACELOG(RL_LOG_INFO, " > Renderer: %s", glGetString(GL_RENDERER)); + TRACELOG(RL_LOG_INFO, " > Version: %s", glGetString(GL_VERSION)); + TRACELOG(RL_LOG_INFO, " > GLSL: %s", glGetString(GL_SHADING_LANGUAGE_VERSION)); + +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + // NOTE: Anisotropy levels capability is an extension + #ifndef GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT + #define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF + #endif + glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &RLGL.ExtSupported.maxAnisotropyLevel); + +#if defined(RLGL_SHOW_GL_DETAILS_INFO) + // Show some OpenGL GPU capabilities + TRACELOG(RL_LOG_INFO, "GL: OpenGL capabilities:"); + GLint capability = 0; + glGetIntegerv(GL_MAX_TEXTURE_SIZE, &capability); + TRACELOG(RL_LOG_INFO, " GL_MAX_TEXTURE_SIZE: %i", capability); + glGetIntegerv(GL_MAX_CUBE_MAP_TEXTURE_SIZE, &capability); + TRACELOG(RL_LOG_INFO, " GL_MAX_CUBE_MAP_TEXTURE_SIZE: %i", capability); + glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &capability); + TRACELOG(RL_LOG_INFO, " GL_MAX_TEXTURE_IMAGE_UNITS: %i", capability); + glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &capability); + TRACELOG(RL_LOG_INFO, " GL_MAX_VERTEX_ATTRIBS: %i", capability); + #if !defined(GRAPHICS_API_OPENGL_ES2) + glGetIntegerv(GL_MAX_UNIFORM_BLOCK_SIZE, &capability); + TRACELOG(RL_LOG_INFO, " GL_MAX_UNIFORM_BLOCK_SIZE: %i", capability); + glGetIntegerv(GL_MAX_DRAW_BUFFERS, &capability); + TRACELOG(RL_LOG_INFO, " GL_MAX_DRAW_BUFFERS: %i", capability); + if (RLGL.ExtSupported.texAnisoFilter) TRACELOG(RL_LOG_INFO, " GL_MAX_TEXTURE_MAX_ANISOTROPY: %.0f", RLGL.ExtSupported.maxAnisotropyLevel); + #endif + glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &capability); + TRACELOG(RL_LOG_INFO, " GL_NUM_COMPRESSED_TEXTURE_FORMATS: %i", capability); + GLint *compFormats = (GLint *)RL_CALLOC(capability, sizeof(GLint)); + glGetIntegerv(GL_COMPRESSED_TEXTURE_FORMATS, compFormats); + for (int i = 0; i < capability; i++) TRACELOG(RL_LOG_INFO, " %s", rlGetCompressedFormatName(compFormats[i])); + RL_FREE(compFormats); + +#if defined(GRAPHICS_API_OPENGL_43) + glGetIntegerv(GL_MAX_VERTEX_ATTRIB_BINDINGS, &capability); + TRACELOG(RL_LOG_INFO, " GL_MAX_VERTEX_ATTRIB_BINDINGS: %i", capability); + glGetIntegerv(GL_MAX_UNIFORM_LOCATIONS, &capability); + TRACELOG(RL_LOG_INFO, " GL_MAX_UNIFORM_LOCATIONS: %i", capability); +#endif // GRAPHICS_API_OPENGL_43 +#else // RLGL_SHOW_GL_DETAILS_INFO + + // Show some basic info about GL supported features + if (RLGL.ExtSupported.vao) TRACELOG(RL_LOG_INFO, "GL: VAO extension detected, VAO functions loaded successfully"); + else TRACELOG(RL_LOG_WARNING, "GL: VAO extension not found, VAO not supported"); + if (RLGL.ExtSupported.texNPOT) TRACELOG(RL_LOG_INFO, "GL: NPOT textures extension detected, full NPOT textures supported"); + else TRACELOG(RL_LOG_WARNING, "GL: NPOT textures extension not found, limited NPOT support (no-mipmaps, no-repeat)"); + if (RLGL.ExtSupported.texCompDXT) TRACELOG(RL_LOG_INFO, "GL: DXT compressed textures supported"); + if (RLGL.ExtSupported.texCompETC1) TRACELOG(RL_LOG_INFO, "GL: ETC1 compressed textures supported"); + if (RLGL.ExtSupported.texCompETC2) TRACELOG(RL_LOG_INFO, "GL: ETC2/EAC compressed textures supported"); + if (RLGL.ExtSupported.texCompPVRT) TRACELOG(RL_LOG_INFO, "GL: PVRT compressed textures supported"); + if (RLGL.ExtSupported.texCompASTC) TRACELOG(RL_LOG_INFO, "GL: ASTC compressed textures supported"); + if (RLGL.ExtSupported.computeShader) TRACELOG(RL_LOG_INFO, "GL: Compute shaders supported"); + if (RLGL.ExtSupported.ssbo) TRACELOG(RL_LOG_INFO, "GL: Shader storage buffer objects supported"); +#endif // RLGL_SHOW_GL_DETAILS_INFO + +#endif // GRAPHICS_API_OPENGL_33 || GRAPHICS_API_OPENGL_ES2 +} + +// Get current OpenGL version +int rlGetVersion(void) +{ + int glVersion = 0; +#if defined(GRAPHICS_API_OPENGL_11) + glVersion = RL_OPENGL_11; +#endif +#if defined(GRAPHICS_API_OPENGL_21) + glVersion = RL_OPENGL_21; +#elif defined(GRAPHICS_API_OPENGL_43) + glVersion = RL_OPENGL_43; +#elif defined(GRAPHICS_API_OPENGL_33) + glVersion = RL_OPENGL_33; +#endif +#if defined(GRAPHICS_API_OPENGL_ES3) + glVersion = RL_OPENGL_ES_30; +#elif defined(GRAPHICS_API_OPENGL_ES2) + glVersion = RL_OPENGL_ES_20; +#endif + + return glVersion; +} + +// Set current framebuffer width +void rlSetFramebufferWidth(int width) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + RLGL.State.framebufferWidth = width; +#endif +} + +// Set current framebuffer height +void rlSetFramebufferHeight(int height) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + RLGL.State.framebufferHeight = height; +#endif +} + +// Get default framebuffer width +int rlGetFramebufferWidth(void) +{ + int width = 0; +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + width = RLGL.State.framebufferWidth; +#endif + return width; +} + +// Get default framebuffer height +int rlGetFramebufferHeight(void) +{ + int height = 0; +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + height = RLGL.State.framebufferHeight; +#endif + return height; +} + +// Get default internal texture (white texture) +// NOTE: Default texture is a 1x1 pixel UNCOMPRESSED_R8G8B8A8 +unsigned int rlGetTextureIdDefault(void) +{ + unsigned int id = 0; +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + id = RLGL.State.defaultTextureId; +#endif + return id; +} + +// Get default shader id +unsigned int rlGetShaderIdDefault(void) +{ + unsigned int id = 0; +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + id = RLGL.State.defaultShaderId; +#endif + return id; +} + +// Get default shader locs +int *rlGetShaderLocsDefault(void) +{ + int *locs = NULL; +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + locs = RLGL.State.defaultShaderLocs; +#endif + return locs; +} + +// Render batch management +//------------------------------------------------------------------------------------------------ +// Load render batch +rlRenderBatch rlLoadRenderBatch(int numBuffers, int bufferElements) +{ + rlRenderBatch batch = { 0 }; + +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + // Initialize CPU (RAM) vertex buffers (position, texcoord, color data and indexes) + //-------------------------------------------------------------------------------------------- + batch.vertexBuffer = (rlVertexBuffer *)RL_MALLOC(numBuffers*sizeof(rlVertexBuffer)); + + for (int i = 0; i < numBuffers; i++) + { + batch.vertexBuffer[i].elementCount = bufferElements; + + batch.vertexBuffer[i].vertices = (float *)RL_MALLOC(bufferElements*3*4*sizeof(float)); // 3 float by vertex, 4 vertex by quad + batch.vertexBuffer[i].texcoords = (float *)RL_MALLOC(bufferElements*2*4*sizeof(float)); // 2 float by texcoord, 4 texcoord by quad + batch.vertexBuffer[i].normals = (float *)RL_MALLOC(bufferElements*3*4*sizeof(float)); // 3 float by vertex, 4 vertex by quad + batch.vertexBuffer[i].colors = (unsigned char *)RL_MALLOC(bufferElements*4*4*sizeof(unsigned char)); // 4 float by color, 4 colors by quad +#if defined(GRAPHICS_API_OPENGL_33) + batch.vertexBuffer[i].indices = (unsigned int *)RL_MALLOC(bufferElements*6*sizeof(unsigned int)); // 6 int by quad (indices) +#endif +#if defined(GRAPHICS_API_OPENGL_ES2) + batch.vertexBuffer[i].indices = (unsigned short *)RL_MALLOC(bufferElements*6*sizeof(unsigned short)); // 6 int by quad (indices) +#endif + + for (int j = 0; j < (3*4*bufferElements); j++) batch.vertexBuffer[i].vertices[j] = 0.0f; + for (int j = 0; j < (2*4*bufferElements); j++) batch.vertexBuffer[i].texcoords[j] = 0.0f; + for (int j = 0; j < (3*4*bufferElements); j++) batch.vertexBuffer[i].normals[j] = 0.0f; + for (int j = 0; j < (4*4*bufferElements); j++) batch.vertexBuffer[i].colors[j] = 0; + + int k = 0; + + // Indices can be initialized right now + for (int j = 0; j < (6*bufferElements); j += 6) + { + batch.vertexBuffer[i].indices[j] = 4*k; + batch.vertexBuffer[i].indices[j + 1] = 4*k + 1; + batch.vertexBuffer[i].indices[j + 2] = 4*k + 2; + batch.vertexBuffer[i].indices[j + 3] = 4*k; + batch.vertexBuffer[i].indices[j + 4] = 4*k + 2; + batch.vertexBuffer[i].indices[j + 5] = 4*k + 3; + + k++; + } + + RLGL.State.vertexCounter = 0; + } + + TRACELOG(RL_LOG_INFO, "RLGL: Render batch vertex buffers loaded successfully in RAM (CPU)"); + //-------------------------------------------------------------------------------------------- + + // Upload to GPU (VRAM) vertex data and initialize VAOs/VBOs + //-------------------------------------------------------------------------------------------- + for (int i = 0; i < numBuffers; i++) + { + if (RLGL.ExtSupported.vao) + { + // Initialize Quads VAO + glGenVertexArrays(1, &batch.vertexBuffer[i].vaoId); + glBindVertexArray(batch.vertexBuffer[i].vaoId); + } + + // Quads - Vertex buffers binding and attributes enable + // Vertex position buffer (shader-location = 0) + glGenBuffers(1, &batch.vertexBuffer[i].vboId[0]); + glBindBuffer(GL_ARRAY_BUFFER, batch.vertexBuffer[i].vboId[0]); + glBufferData(GL_ARRAY_BUFFER, bufferElements*3*4*sizeof(float), batch.vertexBuffer[i].vertices, GL_DYNAMIC_DRAW); + glEnableVertexAttribArray(RLGL.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_POSITION]); + glVertexAttribPointer(RLGL.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_POSITION], 3, GL_FLOAT, 0, 0, 0); + + // Vertex texcoord buffer (shader-location = 1) + glGenBuffers(1, &batch.vertexBuffer[i].vboId[1]); + glBindBuffer(GL_ARRAY_BUFFER, batch.vertexBuffer[i].vboId[1]); + glBufferData(GL_ARRAY_BUFFER, bufferElements*2*4*sizeof(float), batch.vertexBuffer[i].texcoords, GL_DYNAMIC_DRAW); + glEnableVertexAttribArray(RLGL.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_TEXCOORD01]); + glVertexAttribPointer(RLGL.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_TEXCOORD01], 2, GL_FLOAT, 0, 0, 0); + + // Vertex normal buffer (shader-location = 2) + glGenBuffers(1, &batch.vertexBuffer[i].vboId[2]); + glBindBuffer(GL_ARRAY_BUFFER, batch.vertexBuffer[i].vboId[2]); + glBufferData(GL_ARRAY_BUFFER, bufferElements*3*4*sizeof(float), batch.vertexBuffer[i].normals, GL_DYNAMIC_DRAW); + glEnableVertexAttribArray(RLGL.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_NORMAL]); + glVertexAttribPointer(RLGL.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_NORMAL], 3, GL_FLOAT, 0, 0, 0); + + // Vertex color buffer (shader-location = 3) + glGenBuffers(1, &batch.vertexBuffer[i].vboId[3]); + glBindBuffer(GL_ARRAY_BUFFER, batch.vertexBuffer[i].vboId[3]); + glBufferData(GL_ARRAY_BUFFER, bufferElements*4*4*sizeof(unsigned char), batch.vertexBuffer[i].colors, GL_DYNAMIC_DRAW); + glEnableVertexAttribArray(RLGL.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_COLOR]); + glVertexAttribPointer(RLGL.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_COLOR], 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); + + // Fill index buffer + glGenBuffers(1, &batch.vertexBuffer[i].vboId[4]); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, batch.vertexBuffer[i].vboId[4]); +#if defined(GRAPHICS_API_OPENGL_33) + glBufferData(GL_ELEMENT_ARRAY_BUFFER, bufferElements*6*sizeof(int), batch.vertexBuffer[i].indices, GL_STATIC_DRAW); +#endif +#if defined(GRAPHICS_API_OPENGL_ES2) + glBufferData(GL_ELEMENT_ARRAY_BUFFER, bufferElements*6*sizeof(short), batch.vertexBuffer[i].indices, GL_STATIC_DRAW); +#endif + } + + TRACELOG(RL_LOG_INFO, "RLGL: Render batch vertex buffers loaded successfully in VRAM (GPU)"); + + // Unbind the current VAO + if (RLGL.ExtSupported.vao) glBindVertexArray(0); + //-------------------------------------------------------------------------------------------- + + // Init draw calls tracking system + //-------------------------------------------------------------------------------------------- + batch.draws = (rlDrawCall *)RL_MALLOC(RL_DEFAULT_BATCH_DRAWCALLS*sizeof(rlDrawCall)); + + for (int i = 0; i < RL_DEFAULT_BATCH_DRAWCALLS; i++) + { + batch.draws[i].mode = RL_QUADS; + batch.draws[i].vertexCount = 0; + batch.draws[i].vertexAlignment = 0; + //batch.draws[i].vaoId = 0; + //batch.draws[i].shaderId = 0; + batch.draws[i].textureId = RLGL.State.defaultTextureId; + //batch.draws[i].RLGL.State.projection = rlMatrixIdentity(); + //batch.draws[i].RLGL.State.modelview = rlMatrixIdentity(); + } + + batch.bufferCount = numBuffers; // Record buffer count + batch.drawCounter = 1; // Reset draws counter + batch.currentDepth = -1.0f; // Reset depth value + //-------------------------------------------------------------------------------------------- +#endif + + return batch; +} + +// Unload default internal buffers vertex data from CPU and GPU +void rlUnloadRenderBatch(rlRenderBatch batch) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + // Unbind everything + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + + // Unload all vertex buffers data + for (int i = 0; i < batch.bufferCount; i++) + { + // Unbind VAO attribs data + if (RLGL.ExtSupported.vao) + { + glBindVertexArray(batch.vertexBuffer[i].vaoId); + glDisableVertexAttribArray(RL_DEFAULT_SHADER_ATTRIB_LOCATION_POSITION); + glDisableVertexAttribArray(RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD); + glDisableVertexAttribArray(RL_DEFAULT_SHADER_ATTRIB_LOCATION_NORMAL); + glDisableVertexAttribArray(RL_DEFAULT_SHADER_ATTRIB_LOCATION_COLOR); + glBindVertexArray(0); + } + + // Delete VBOs from GPU (VRAM) + glDeleteBuffers(1, &batch.vertexBuffer[i].vboId[0]); + glDeleteBuffers(1, &batch.vertexBuffer[i].vboId[1]); + glDeleteBuffers(1, &batch.vertexBuffer[i].vboId[2]); + glDeleteBuffers(1, &batch.vertexBuffer[i].vboId[3]); + glDeleteBuffers(1, &batch.vertexBuffer[i].vboId[4]); + + // Delete VAOs from GPU (VRAM) + if (RLGL.ExtSupported.vao) glDeleteVertexArrays(1, &batch.vertexBuffer[i].vaoId); + + // Free vertex arrays memory from CPU (RAM) + RL_FREE(batch.vertexBuffer[i].vertices); + RL_FREE(batch.vertexBuffer[i].texcoords); + RL_FREE(batch.vertexBuffer[i].normals); + RL_FREE(batch.vertexBuffer[i].colors); + RL_FREE(batch.vertexBuffer[i].indices); + } + + // Unload arrays + RL_FREE(batch.vertexBuffer); + RL_FREE(batch.draws); +#endif +} + +// Draw render batch +// NOTE: We require a pointer to reset batch and increase current buffer (multi-buffer) +void rlDrawRenderBatch(rlRenderBatch *batch) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + // Update batch vertex buffers + //------------------------------------------------------------------------------------------------------------ + // NOTE: If there is not vertex data, buffers doesn't need to be updated (vertexCount > 0) + // TODO: If no data changed on the CPU arrays --> No need to re-update GPU arrays (use a change detector flag?) + if (RLGL.State.vertexCounter > 0) + { + // Activate elements VAO + if (RLGL.ExtSupported.vao) glBindVertexArray(batch->vertexBuffer[batch->currentBuffer].vaoId); + + // Vertex positions buffer + glBindBuffer(GL_ARRAY_BUFFER, batch->vertexBuffer[batch->currentBuffer].vboId[0]); + glBufferSubData(GL_ARRAY_BUFFER, 0, RLGL.State.vertexCounter*3*sizeof(float), batch->vertexBuffer[batch->currentBuffer].vertices); + //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*4*batch->vertexBuffer[batch->currentBuffer].elementCount, batch->vertexBuffer[batch->currentBuffer].vertices, GL_DYNAMIC_DRAW); // Update all buffer + + // Texture coordinates buffer + glBindBuffer(GL_ARRAY_BUFFER, batch->vertexBuffer[batch->currentBuffer].vboId[1]); + glBufferSubData(GL_ARRAY_BUFFER, 0, RLGL.State.vertexCounter*2*sizeof(float), batch->vertexBuffer[batch->currentBuffer].texcoords); + //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*2*4*batch->vertexBuffer[batch->currentBuffer].elementCount, batch->vertexBuffer[batch->currentBuffer].texcoords, GL_DYNAMIC_DRAW); // Update all buffer + + // Normals buffer + glBindBuffer(GL_ARRAY_BUFFER, batch->vertexBuffer[batch->currentBuffer].vboId[2]); + glBufferSubData(GL_ARRAY_BUFFER, 0, RLGL.State.vertexCounter*3*sizeof(float), batch->vertexBuffer[batch->currentBuffer].normals); + //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*4*batch->vertexBuffer[batch->currentBuffer].elementCount, batch->vertexBuffer[batch->currentBuffer].normals, GL_DYNAMIC_DRAW); // Update all buffer + + // Colors buffer + glBindBuffer(GL_ARRAY_BUFFER, batch->vertexBuffer[batch->currentBuffer].vboId[3]); + glBufferSubData(GL_ARRAY_BUFFER, 0, RLGL.State.vertexCounter*4*sizeof(unsigned char), batch->vertexBuffer[batch->currentBuffer].colors); + //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*4*4*batch->vertexBuffer[batch->currentBuffer].elementCount, batch->vertexBuffer[batch->currentBuffer].colors, GL_DYNAMIC_DRAW); // Update all buffer + + // NOTE: glMapBuffer() causes sync issue + // If GPU is working with this buffer, glMapBuffer() will wait(stall) until GPU to finish its job + // To avoid waiting (idle), you can call first glBufferData() with NULL pointer before glMapBuffer() + // If you do that, the previous data in PBO will be discarded and glMapBuffer() returns a new + // allocated pointer immediately even if GPU is still working with the previous data + + // Another option: map the buffer object into client's memory + // Probably this code could be moved somewhere else... + // batch->vertexBuffer[batch->currentBuffer].vertices = (float *)glMapBuffer(GL_ARRAY_BUFFER, GL_READ_WRITE); + // if (batch->vertexBuffer[batch->currentBuffer].vertices) + // { + // Update vertex data + // } + // glUnmapBuffer(GL_ARRAY_BUFFER); + + // Unbind the current VAO + if (RLGL.ExtSupported.vao) glBindVertexArray(0); + } + //------------------------------------------------------------------------------------------------------------ + + // Draw batch vertex buffers (considering VR stereo if required) + //------------------------------------------------------------------------------------------------------------ + Matrix matProjection = RLGL.State.projection; + Matrix matModelView = RLGL.State.modelview; + + int eyeCount = 1; + if (RLGL.State.stereoRender) eyeCount = 2; + + for (int eye = 0; eye < eyeCount; eye++) + { + if (eyeCount == 2) + { + // Setup current eye viewport (half screen width) + rlViewport(eye*RLGL.State.framebufferWidth/2, 0, RLGL.State.framebufferWidth/2, RLGL.State.framebufferHeight); + + // Set current eye view offset to modelview matrix + rlSetMatrixModelview(rlMatrixMultiply(matModelView, RLGL.State.viewOffsetStereo[eye])); + // Set current eye projection matrix + rlSetMatrixProjection(RLGL.State.projectionStereo[eye]); + } + + // Draw buffers + if (RLGL.State.vertexCounter > 0) + { + // Set current shader and upload current MVP matrix + glUseProgram(RLGL.State.currentShaderId); + + // Create modelview-projection matrix and upload to shader + Matrix matMVP = rlMatrixMultiply(RLGL.State.modelview, RLGL.State.projection); + glUniformMatrix4fv(RLGL.State.currentShaderLocs[RL_SHADER_LOC_MATRIX_MVP], 1, false, rlMatrixToFloat(matMVP)); + + if (RLGL.State.currentShaderLocs[RL_SHADER_LOC_MATRIX_PROJECTION] != -1) + { + glUniformMatrix4fv(RLGL.State.currentShaderLocs[RL_SHADER_LOC_MATRIX_PROJECTION], 1, false, rlMatrixToFloat(RLGL.State.projection)); + } + + // WARNING: For the following setup of the view, model, and normal matrices, it is expected that + // transformations and rendering occur between rlPushMatrix() and rlPopMatrix() + + if (RLGL.State.currentShaderLocs[RL_SHADER_LOC_MATRIX_VIEW] != -1) + { + glUniformMatrix4fv(RLGL.State.currentShaderLocs[RL_SHADER_LOC_MATRIX_VIEW], 1, false, rlMatrixToFloat(RLGL.State.modelview)); + } + + if (RLGL.State.currentShaderLocs[RL_SHADER_LOC_MATRIX_MODEL] != -1) + { + glUniformMatrix4fv(RLGL.State.currentShaderLocs[RL_SHADER_LOC_MATRIX_MODEL], 1, false, rlMatrixToFloat(RLGL.State.transform)); + } + + if (RLGL.State.currentShaderLocs[RL_SHADER_LOC_MATRIX_NORMAL] != -1) + { + glUniformMatrix4fv(RLGL.State.currentShaderLocs[RL_SHADER_LOC_MATRIX_NORMAL], 1, false, rlMatrixToFloat(rlMatrixTranspose(rlMatrixInvert(RLGL.State.transform)))); + } + + if (RLGL.ExtSupported.vao) glBindVertexArray(batch->vertexBuffer[batch->currentBuffer].vaoId); + else + { + // Bind vertex attrib: position (shader-location = 0) + glBindBuffer(GL_ARRAY_BUFFER, batch->vertexBuffer[batch->currentBuffer].vboId[0]); + glVertexAttribPointer(RLGL.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_POSITION], 3, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(RLGL.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_POSITION]); + + // Bind vertex attrib: texcoord (shader-location = 1) + glBindBuffer(GL_ARRAY_BUFFER, batch->vertexBuffer[batch->currentBuffer].vboId[1]); + glVertexAttribPointer(RLGL.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_TEXCOORD01], 2, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(RLGL.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_TEXCOORD01]); + + // Bind vertex attrib: normal (shader-location = 2) + glBindBuffer(GL_ARRAY_BUFFER, batch->vertexBuffer[batch->currentBuffer].vboId[2]); + glVertexAttribPointer(RLGL.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_NORMAL], 3, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(RLGL.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_NORMAL]); + + // Bind vertex attrib: color (shader-location = 3) + glBindBuffer(GL_ARRAY_BUFFER, batch->vertexBuffer[batch->currentBuffer].vboId[3]); + glVertexAttribPointer(RLGL.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_COLOR], 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); + glEnableVertexAttribArray(RLGL.State.currentShaderLocs[RL_SHADER_LOC_VERTEX_COLOR]); + + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, batch->vertexBuffer[batch->currentBuffer].vboId[4]); + } + + // Setup some default shader values + glUniform4f(RLGL.State.currentShaderLocs[RL_SHADER_LOC_COLOR_DIFFUSE], 1.0f, 1.0f, 1.0f, 1.0f); + glUniform1i(RLGL.State.currentShaderLocs[RL_SHADER_LOC_MAP_DIFFUSE], 0); // Active default sampler2D: texture0 + + // Activate additional sampler textures + // Those additional textures will be common for all draw calls of the batch + for (int i = 0; i < RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS; i++) + { + if (RLGL.State.activeTextureId[i] > 0) + { + glActiveTexture(GL_TEXTURE0 + 1 + i); + glBindTexture(GL_TEXTURE_2D, RLGL.State.activeTextureId[i]); + } + } + + // Activate default sampler2D texture0 (one texture is always active for default batch shader) + // NOTE: Batch system accumulates calls by texture0 changes, additional textures are enabled for all the draw calls + glActiveTexture(GL_TEXTURE0); + + for (int i = 0, vertexOffset = 0; i < batch->drawCounter; i++) + { + // Bind current draw call texture, activated as GL_TEXTURE0 and Bound to sampler2D texture0 by default + glBindTexture(GL_TEXTURE_2D, batch->draws[i].textureId); + + if ((batch->draws[i].mode == RL_LINES) || (batch->draws[i].mode == RL_TRIANGLES)) glDrawArrays(batch->draws[i].mode, vertexOffset, batch->draws[i].vertexCount); + else + { + #if defined(GRAPHICS_API_OPENGL_33) + // We need to define the number of indices to be processed: elementCount*6 + // NOTE: The final parameter tells the GPU the offset in bytes from the + // start of the index buffer to the location of the first index to process + glDrawElements(GL_TRIANGLES, batch->draws[i].vertexCount/4*6, GL_UNSIGNED_INT, (GLvoid *)(vertexOffset/4*6*sizeof(GLuint))); + #endif + #if defined(GRAPHICS_API_OPENGL_ES2) + glDrawElements(GL_TRIANGLES, batch->draws[i].vertexCount/4*6, GL_UNSIGNED_SHORT, (GLvoid *)(vertexOffset/4*6*sizeof(GLushort))); + #endif + } + + vertexOffset += (batch->draws[i].vertexCount + batch->draws[i].vertexAlignment); + } + + if (!RLGL.ExtSupported.vao) + { + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + } + + glBindTexture(GL_TEXTURE_2D, 0); // Unbind textures + } + + if (RLGL.ExtSupported.vao) glBindVertexArray(0); // Unbind VAO + + glUseProgram(0); // Unbind shader program + } + + // Restore viewport to default measures + if (eyeCount == 2) rlViewport(0, 0, RLGL.State.framebufferWidth, RLGL.State.framebufferHeight); + //------------------------------------------------------------------------------------------------------------ + + // Reset batch buffers + //------------------------------------------------------------------------------------------------------------ + // Reset vertex counter for next frame + RLGL.State.vertexCounter = 0; + + // Reset depth for next draw + batch->currentDepth = -1.0f; + + // Restore projection/modelview matrices + RLGL.State.projection = matProjection; + RLGL.State.modelview = matModelView; + + // Reset RLGL.currentBatch->draws array + for (int i = 0; i < RL_DEFAULT_BATCH_DRAWCALLS; i++) + { + batch->draws[i].mode = RL_QUADS; + batch->draws[i].vertexCount = 0; + batch->draws[i].textureId = RLGL.State.defaultTextureId; + } + + // Reset active texture units for next batch + for (int i = 0; i < RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS; i++) RLGL.State.activeTextureId[i] = 0; + + // Reset draws counter to one draw for the batch + batch->drawCounter = 1; + //------------------------------------------------------------------------------------------------------------ + + // Change to next buffer in the list (in case of multi-buffering) + batch->currentBuffer++; + if (batch->currentBuffer >= batch->bufferCount) batch->currentBuffer = 0; +#endif +} + +// Set the active render batch for rlgl +void rlSetRenderBatchActive(rlRenderBatch *batch) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + rlDrawRenderBatch(RLGL.currentBatch); + + if (batch != NULL) RLGL.currentBatch = batch; + else RLGL.currentBatch = &RLGL.defaultBatch; +#endif +} + +// Update and draw internal render batch +void rlDrawRenderBatchActive(void) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + rlDrawRenderBatch(RLGL.currentBatch); // NOTE: Stereo rendering is checked inside +#endif +} + +// Check internal buffer overflow for a given number of vertex +// and force a rlRenderBatch draw call if required +bool rlCheckRenderBatchLimit(int vCount) +{ + bool overflow = false; + +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + if ((RLGL.State.vertexCounter + vCount) >= + (RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].elementCount*4)) + { + overflow = true; + + // Store current primitive drawing mode and texture id + int currentMode = RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].mode; + int currentTexture = RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].textureId; + + rlDrawRenderBatch(RLGL.currentBatch); // NOTE: Stereo rendering is checked inside + + // Restore state of last batch so we can continue adding vertices + RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].mode = currentMode; + RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].textureId = currentTexture; + } +#endif + + return overflow; +} + +// Textures data management +//----------------------------------------------------------------------------------------- +// Convert image data to OpenGL texture (returns OpenGL valid Id) +unsigned int rlLoadTexture(const void *data, int width, int height, int format, int mipmapCount) +{ + unsigned int id = 0; + + glBindTexture(GL_TEXTURE_2D, 0); // Free any old binding + + // Check texture format support by OpenGL 1.1 (compressed textures not supported) +#if defined(GRAPHICS_API_OPENGL_11) + if (format >= RL_PIXELFORMAT_COMPRESSED_DXT1_RGB) + { + TRACELOG(RL_LOG_WARNING, "GL: OpenGL 1.1 does not support GPU compressed texture formats"); + return id; + } +#else + if ((!RLGL.ExtSupported.texCompDXT) && ((format == RL_PIXELFORMAT_COMPRESSED_DXT1_RGB) || (format == RL_PIXELFORMAT_COMPRESSED_DXT1_RGBA) || + (format == RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA) || (format == RL_PIXELFORMAT_COMPRESSED_DXT5_RGBA))) + { + TRACELOG(RL_LOG_WARNING, "GL: DXT compressed texture format not supported"); + return id; + } +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + if ((!RLGL.ExtSupported.texCompETC1) && (format == RL_PIXELFORMAT_COMPRESSED_ETC1_RGB)) + { + TRACELOG(RL_LOG_WARNING, "GL: ETC1 compressed texture format not supported"); + return id; + } + + if ((!RLGL.ExtSupported.texCompETC2) && ((format == RL_PIXELFORMAT_COMPRESSED_ETC2_RGB) || (format == RL_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA))) + { + TRACELOG(RL_LOG_WARNING, "GL: ETC2 compressed texture format not supported"); + return id; + } + + if ((!RLGL.ExtSupported.texCompPVRT) && ((format == RL_PIXELFORMAT_COMPRESSED_PVRT_RGB) || (format == RL_PIXELFORMAT_COMPRESSED_PVRT_RGBA))) + { + TRACELOG(RL_LOG_WARNING, "GL: PVRT compressed texture format not supported"); + return id; + } + + if ((!RLGL.ExtSupported.texCompASTC) && ((format == RL_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA) || (format == RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA))) + { + TRACELOG(RL_LOG_WARNING, "GL: ASTC compressed texture format not supported"); + return id; + } +#endif +#endif // GRAPHICS_API_OPENGL_11 + + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + + glGenTextures(1, &id); // Generate texture id + + glBindTexture(GL_TEXTURE_2D, id); + + int mipWidth = width; + int mipHeight = height; + int mipOffset = 0; // Mipmap data offset, only used for tracelog + + // NOTE: Added pointer math separately from function to avoid UBSAN complaining + unsigned char *dataPtr = NULL; + if (data != NULL) dataPtr = (unsigned char *)data; + + // Load the different mipmap levels + for (int i = 0; i < mipmapCount; i++) + { + unsigned int mipSize = rlGetPixelDataSize(mipWidth, mipHeight, format); + + unsigned int glInternalFormat, glFormat, glType; + rlGetGlTextureFormats(format, &glInternalFormat, &glFormat, &glType); + + TRACELOGD("TEXTURE: Load mipmap level %i (%i x %i), size: %i, offset: %i", i, mipWidth, mipHeight, mipSize, mipOffset); + + if (glInternalFormat != 0) + { + if (format < RL_PIXELFORMAT_COMPRESSED_DXT1_RGB) glTexImage2D(GL_TEXTURE_2D, i, glInternalFormat, mipWidth, mipHeight, 0, glFormat, glType, dataPtr); +#if !defined(GRAPHICS_API_OPENGL_11) + else glCompressedTexImage2D(GL_TEXTURE_2D, i, glInternalFormat, mipWidth, mipHeight, 0, mipSize, dataPtr); +#endif + +#if defined(GRAPHICS_API_OPENGL_33) + if (format == RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE) + { + GLint swizzleMask[] = { GL_RED, GL_RED, GL_RED, GL_ONE }; + glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_RGBA, swizzleMask); + } + else if (format == RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA) + { +#if defined(GRAPHICS_API_OPENGL_21) + GLint swizzleMask[] = { GL_RED, GL_RED, GL_RED, GL_ALPHA }; +#elif defined(GRAPHICS_API_OPENGL_33) + GLint swizzleMask[] = { GL_RED, GL_RED, GL_RED, GL_GREEN }; +#endif + glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_RGBA, swizzleMask); + } +#endif + } + + mipWidth /= 2; + mipHeight /= 2; + mipOffset += mipSize; // Increment offset position to next mipmap + if (data != NULL) dataPtr += mipSize; // Increment data pointer to next mipmap + + // Security check for NPOT textures + if (mipWidth < 1) mipWidth = 1; + if (mipHeight < 1) mipHeight = 1; + } + + // Texture parameters configuration + // NOTE: glTexParameteri does NOT affect texture uploading, just the way it's used +#if defined(GRAPHICS_API_OPENGL_ES2) + // NOTE: OpenGL ES 2.0 with no GL_OES_texture_npot support (i.e. WebGL) has limited NPOT support, so CLAMP_TO_EDGE must be used + if (RLGL.ExtSupported.texNPOT) + { + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); // Set texture to repeat on x-axis + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); // Set texture to repeat on y-axis + } + else + { + // NOTE: If using negative texture coordinates (LoadOBJ()), it does not work! + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); // Set texture to clamp on x-axis + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); // Set texture to clamp on y-axis + } +#else + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); // Set texture to repeat on x-axis + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); // Set texture to repeat on y-axis +#endif + + // Magnification and minification filters + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); // Alternative: GL_LINEAR + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); // Alternative: GL_LINEAR + +#if defined(GRAPHICS_API_OPENGL_33) + if (mipmapCount > 1) + { + // Activate Trilinear filtering if mipmaps are available + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); + } +#endif + + // At this point we have the texture loaded in GPU and texture parameters configured + + // NOTE: If mipmaps were not in data, they are not generated automatically + + // Unbind current texture + glBindTexture(GL_TEXTURE_2D, 0); + + if (id > 0) TRACELOG(RL_LOG_INFO, "TEXTURE: [ID %i] Texture loaded successfully (%ix%i | %s | %i mipmaps)", id, width, height, rlGetPixelFormatName(format), mipmapCount); + else TRACELOG(RL_LOG_WARNING, "TEXTURE: Failed to load texture"); + + return id; +} + +// Load depth texture/renderbuffer (to be attached to fbo) +// WARNING: OpenGL ES 2.0 requires GL_OES_depth_texture and WebGL requires WEBGL_depth_texture extensions +unsigned int rlLoadTextureDepth(int width, int height, bool useRenderBuffer) +{ + unsigned int id = 0; + +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + // In case depth textures not supported, we force renderbuffer usage + if (!RLGL.ExtSupported.texDepth) useRenderBuffer = true; + + // NOTE: We let the implementation to choose the best bit-depth + // Possible formats: GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24, GL_DEPTH_COMPONENT32 and GL_DEPTH_COMPONENT32F + unsigned int glInternalFormat = GL_DEPTH_COMPONENT; + +#if (defined(GRAPHICS_API_OPENGL_ES2) || defined(GRAPHICS_API_OPENGL_ES3)) + // WARNING: WebGL platform requires unsized internal format definition (GL_DEPTH_COMPONENT) + // while other platforms using OpenGL ES 2.0 require/support sized internal formats depending on the GPU capabilities + if (!RLGL.ExtSupported.texDepthWebGL || useRenderBuffer) + { + if (RLGL.ExtSupported.maxDepthBits == 32) glInternalFormat = GL_DEPTH_COMPONENT32_OES; + else if (RLGL.ExtSupported.maxDepthBits == 24) glInternalFormat = GL_DEPTH_COMPONENT24_OES; + else glInternalFormat = GL_DEPTH_COMPONENT16; + } +#endif + + if (!useRenderBuffer && RLGL.ExtSupported.texDepth) + { + glGenTextures(1, &id); + glBindTexture(GL_TEXTURE_2D, id); + glTexImage2D(GL_TEXTURE_2D, 0, glInternalFormat, width, height, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + + glBindTexture(GL_TEXTURE_2D, 0); + + TRACELOG(RL_LOG_INFO, "TEXTURE: Depth texture loaded successfully"); + } + else + { + // Create the renderbuffer that will serve as the depth attachment for the framebuffer + // NOTE: A renderbuffer is simpler than a texture and could offer better performance on embedded devices + glGenRenderbuffers(1, &id); + glBindRenderbuffer(GL_RENDERBUFFER, id); + glRenderbufferStorage(GL_RENDERBUFFER, glInternalFormat, width, height); + + glBindRenderbuffer(GL_RENDERBUFFER, 0); + + TRACELOG(RL_LOG_INFO, "TEXTURE: [ID %i] Depth renderbuffer loaded successfully (%i bits)", id, (RLGL.ExtSupported.maxDepthBits >= 24)? RLGL.ExtSupported.maxDepthBits : 16); + } +#endif + + return id; +} + +// Load texture cubemap +// NOTE: Cubemap data is expected to be 6 images in a single data array (one after the other), +// expected the following convention: +X, -X, +Y, -Y, +Z, -Z +unsigned int rlLoadTextureCubemap(const void *data, int size, int format, int mipmapCount) +{ + unsigned int id = 0; + +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + int mipSize = size; + + // NOTE: Added pointer math separately from function to avoid UBSAN complaining + unsigned char *dataPtr = NULL; + if (data != NULL) dataPtr = (unsigned char *)data; + + unsigned int dataSize = rlGetPixelDataSize(size, size, format); + + glGenTextures(1, &id); + glBindTexture(GL_TEXTURE_CUBE_MAP, id); + + unsigned int glInternalFormat, glFormat, glType; + rlGetGlTextureFormats(format, &glInternalFormat, &glFormat, &glType); + + if (glInternalFormat != 0) + { + // Load cubemap faces/mipmaps + for (int i = 0; i < 6*mipmapCount; i++) + { + int mipmapLevel = i/6; + int face = i%6; + + if (data == NULL) + { + if (format < RL_PIXELFORMAT_COMPRESSED_DXT1_RGB) + { + if ((format == RL_PIXELFORMAT_UNCOMPRESSED_R32) || + (format == RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32) || + (format == RL_PIXELFORMAT_UNCOMPRESSED_R16) || + (format == RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16)) TRACELOG(RL_LOG_WARNING, "TEXTURES: Cubemap requested format not supported"); + else glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, mipmapLevel, glInternalFormat, mipSize, mipSize, 0, glFormat, glType, NULL); + } + else TRACELOG(RL_LOG_WARNING, "TEXTURES: Empty cubemap creation does not support compressed format"); + } + else + { + if (format < RL_PIXELFORMAT_COMPRESSED_DXT1_RGB) glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, mipmapLevel, glInternalFormat, mipSize, mipSize, 0, glFormat, glType, (unsigned char *)dataPtr + face*dataSize); + else glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, mipmapLevel, glInternalFormat, mipSize, mipSize, 0, dataSize, (unsigned char *)dataPtr + face*dataSize); + } + +#if defined(GRAPHICS_API_OPENGL_33) + if (format == RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE) + { + GLint swizzleMask[] = { GL_RED, GL_RED, GL_RED, GL_ONE }; + glTexParameteriv(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_SWIZZLE_RGBA, swizzleMask); + } + else if (format == RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA) + { +#if defined(GRAPHICS_API_OPENGL_21) + GLint swizzleMask[] = { GL_RED, GL_RED, GL_RED, GL_ALPHA }; +#elif defined(GRAPHICS_API_OPENGL_33) + GLint swizzleMask[] = { GL_RED, GL_RED, GL_RED, GL_GREEN }; +#endif + glTexParameteriv(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_SWIZZLE_RGBA, swizzleMask); + } +#endif + if (face == 5) + { + mipSize /= 2; + if (data != NULL) dataPtr += dataSize*6; // Increment data pointer to next mipmap + + // Security check for NPOT textures + if (mipSize < 1) mipSize = 1; + + dataSize = rlGetPixelDataSize(mipSize, mipSize, format); + } + } + } + + // Set cubemap texture sampling parameters + if (mipmapCount > 1) glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); + else glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + + glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); +#if defined(GRAPHICS_API_OPENGL_33) + glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE); // Flag not supported on OpenGL ES 2.0 +#endif + + glBindTexture(GL_TEXTURE_CUBE_MAP, 0); +#endif + + if (id > 0) TRACELOG(RL_LOG_INFO, "TEXTURE: [ID %i] Cubemap texture loaded successfully (%ix%i)", id, size, size); + else TRACELOG(RL_LOG_WARNING, "TEXTURE: Failed to load cubemap texture"); + + return id; +} + +// Update already loaded texture in GPU with new data +// NOTE: We don't know safely if internal texture format is the expected one... +void rlUpdateTexture(unsigned int id, int offsetX, int offsetY, int width, int height, int format, const void *data) +{ + glBindTexture(GL_TEXTURE_2D, id); + + unsigned int glInternalFormat, glFormat, glType; + rlGetGlTextureFormats(format, &glInternalFormat, &glFormat, &glType); + + if ((glInternalFormat != 0) && (format < RL_PIXELFORMAT_COMPRESSED_DXT1_RGB)) + { + glTexSubImage2D(GL_TEXTURE_2D, 0, offsetX, offsetY, width, height, glFormat, glType, data); + } + else TRACELOG(RL_LOG_WARNING, "TEXTURE: [ID %i] Failed to update for current texture format (%i)", id, format); +} + +// Get OpenGL internal formats and data type from raylib PixelFormat +void rlGetGlTextureFormats(int format, unsigned int *glInternalFormat, unsigned int *glFormat, unsigned int *glType) +{ + *glInternalFormat = 0; + *glFormat = 0; + *glType = 0; + + switch (format) + { + #if defined(GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_21) || defined(GRAPHICS_API_OPENGL_ES2) + // NOTE: on OpenGL ES 2.0 (WebGL), internalFormat must match format and options allowed are: GL_LUMINANCE, GL_RGB, GL_RGBA + case RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: *glInternalFormat = GL_LUMINANCE; *glFormat = GL_LUMINANCE; *glType = GL_UNSIGNED_BYTE; break; + case RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: *glInternalFormat = GL_LUMINANCE_ALPHA; *glFormat = GL_LUMINANCE_ALPHA; *glType = GL_UNSIGNED_BYTE; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R5G6B5: *glInternalFormat = GL_RGB; *glFormat = GL_RGB; *glType = GL_UNSIGNED_SHORT_5_6_5; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8: *glInternalFormat = GL_RGB; *glFormat = GL_RGB; *glType = GL_UNSIGNED_BYTE; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_SHORT_5_5_5_1; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_SHORT_4_4_4_4; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_BYTE; break; + #if !defined(GRAPHICS_API_OPENGL_11) + #if defined(GRAPHICS_API_OPENGL_ES3) + case RL_PIXELFORMAT_UNCOMPRESSED_R32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_R32F_EXT; *glFormat = GL_RED_EXT; *glType = GL_FLOAT; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_RGB32F_EXT; *glFormat = GL_RGB; *glType = GL_FLOAT; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_RGBA32F_EXT; *glFormat = GL_RGBA; *glType = GL_FLOAT; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R16: if (RLGL.ExtSupported.texFloat16) *glInternalFormat = GL_R16F_EXT; *glFormat = GL_RED_EXT; *glType = GL_HALF_FLOAT; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16: if (RLGL.ExtSupported.texFloat16) *glInternalFormat = GL_RGB16F_EXT; *glFormat = GL_RGB; *glType = GL_HALF_FLOAT; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: if (RLGL.ExtSupported.texFloat16) *glInternalFormat = GL_RGBA16F_EXT; *glFormat = GL_RGBA; *glType = GL_HALF_FLOAT; break; + #else + case RL_PIXELFORMAT_UNCOMPRESSED_R32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_LUMINANCE; *glFormat = GL_LUMINANCE; *glType = GL_FLOAT; break; // NOTE: Requires extension OES_texture_float + case RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_RGB; *glFormat = GL_RGB; *glType = GL_FLOAT; break; // NOTE: Requires extension OES_texture_float + case RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_FLOAT; break; // NOTE: Requires extension OES_texture_float + #if defined(GRAPHICS_API_OPENGL_21) + case RL_PIXELFORMAT_UNCOMPRESSED_R16: if (RLGL.ExtSupported.texFloat16) *glInternalFormat = GL_LUMINANCE; *glFormat = GL_LUMINANCE; *glType = GL_HALF_FLOAT_ARB; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16: if (RLGL.ExtSupported.texFloat16) *glInternalFormat = GL_RGB; *glFormat = GL_RGB; *glType = GL_HALF_FLOAT_ARB; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: if (RLGL.ExtSupported.texFloat16) *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_HALF_FLOAT_ARB; break; + #else // defined(GRAPHICS_API_OPENGL_ES2) + case RL_PIXELFORMAT_UNCOMPRESSED_R16: if (RLGL.ExtSupported.texFloat16) *glInternalFormat = GL_LUMINANCE; *glFormat = GL_LUMINANCE; *glType = GL_HALF_FLOAT_OES; break; // NOTE: Requires extension OES_texture_half_float + case RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16: if (RLGL.ExtSupported.texFloat16) *glInternalFormat = GL_RGB; *glFormat = GL_RGB; *glType = GL_HALF_FLOAT_OES; break; // NOTE: Requires extension OES_texture_half_float + case RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: if (RLGL.ExtSupported.texFloat16) *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_HALF_FLOAT_OES; break; // NOTE: Requires extension OES_texture_half_float + #endif + #endif + #endif + #elif defined(GRAPHICS_API_OPENGL_33) + case RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: *glInternalFormat = GL_R8; *glFormat = GL_RED; *glType = GL_UNSIGNED_BYTE; break; + case RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: *glInternalFormat = GL_RG8; *glFormat = GL_RG; *glType = GL_UNSIGNED_BYTE; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R5G6B5: *glInternalFormat = GL_RGB565; *glFormat = GL_RGB; *glType = GL_UNSIGNED_SHORT_5_6_5; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8: *glInternalFormat = GL_RGB8; *glFormat = GL_RGB; *glType = GL_UNSIGNED_BYTE; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: *glInternalFormat = GL_RGB5_A1; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_SHORT_5_5_5_1; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: *glInternalFormat = GL_RGBA4; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_SHORT_4_4_4_4; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: *glInternalFormat = GL_RGBA8; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_BYTE; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_R32F; *glFormat = GL_RED; *glType = GL_FLOAT; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_RGB32F; *glFormat = GL_RGB; *glType = GL_FLOAT; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_RGBA32F; *glFormat = GL_RGBA; *glType = GL_FLOAT; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R16: if (RLGL.ExtSupported.texFloat16) *glInternalFormat = GL_R16F; *glFormat = GL_RED; *glType = GL_HALF_FLOAT; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16: if (RLGL.ExtSupported.texFloat16) *glInternalFormat = GL_RGB16F; *glFormat = GL_RGB; *glType = GL_HALF_FLOAT; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: if (RLGL.ExtSupported.texFloat16) *glInternalFormat = GL_RGBA16F; *glFormat = GL_RGBA; *glType = GL_HALF_FLOAT; break; + #endif + #if !defined(GRAPHICS_API_OPENGL_11) + case RL_PIXELFORMAT_COMPRESSED_DXT1_RGB: if (RLGL.ExtSupported.texCompDXT) *glInternalFormat = GL_COMPRESSED_RGB_S3TC_DXT1_EXT; break; + case RL_PIXELFORMAT_COMPRESSED_DXT1_RGBA: if (RLGL.ExtSupported.texCompDXT) *glInternalFormat = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; break; + case RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA: if (RLGL.ExtSupported.texCompDXT) *glInternalFormat = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT; break; + case RL_PIXELFORMAT_COMPRESSED_DXT5_RGBA: if (RLGL.ExtSupported.texCompDXT) *glInternalFormat = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; break; + case RL_PIXELFORMAT_COMPRESSED_ETC1_RGB: if (RLGL.ExtSupported.texCompETC1) *glInternalFormat = GL_ETC1_RGB8_OES; break; // NOTE: Requires OpenGL ES 2.0 or OpenGL 4.3 + case RL_PIXELFORMAT_COMPRESSED_ETC2_RGB: if (RLGL.ExtSupported.texCompETC2) *glInternalFormat = GL_COMPRESSED_RGB8_ETC2; break; // NOTE: Requires OpenGL ES 3.0 or OpenGL 4.3 + case RL_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: if (RLGL.ExtSupported.texCompETC2) *glInternalFormat = GL_COMPRESSED_RGBA8_ETC2_EAC; break; // NOTE: Requires OpenGL ES 3.0 or OpenGL 4.3 + case RL_PIXELFORMAT_COMPRESSED_PVRT_RGB: if (RLGL.ExtSupported.texCompPVRT) *glInternalFormat = GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG; break; // NOTE: Requires PowerVR GPU + case RL_PIXELFORMAT_COMPRESSED_PVRT_RGBA: if (RLGL.ExtSupported.texCompPVRT) *glInternalFormat = GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; break; // NOTE: Requires PowerVR GPU + case RL_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: if (RLGL.ExtSupported.texCompASTC) *glInternalFormat = GL_COMPRESSED_RGBA_ASTC_4x4_KHR; break; // NOTE: Requires OpenGL ES 3.1 or OpenGL 4.3 + case RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: if (RLGL.ExtSupported.texCompASTC) *glInternalFormat = GL_COMPRESSED_RGBA_ASTC_8x8_KHR; break; // NOTE: Requires OpenGL ES 3.1 or OpenGL 4.3 + #endif + default: TRACELOG(RL_LOG_WARNING, "TEXTURE: Current format not supported (%i)", format); break; + } +} + +// Unload texture from GPU memory +void rlUnloadTexture(unsigned int id) +{ + glDeleteTextures(1, &id); +} + +// Generate mipmap data for selected texture +// NOTE: Only supports GPU mipmap generation +void rlGenTextureMipmaps(unsigned int id, int width, int height, int format, int *mipmaps) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glBindTexture(GL_TEXTURE_2D, id); + + // Check if texture is power-of-two (POT) + bool texIsPOT = false; + + if (((width > 0) && ((width & (width - 1)) == 0)) && + ((height > 0) && ((height & (height - 1)) == 0))) texIsPOT = true; + + if ((texIsPOT) || (RLGL.ExtSupported.texNPOT)) + { + //glHint(GL_GENERATE_MIPMAP_HINT, GL_DONT_CARE); // Hint for mipmaps generation algorithm: GL_FASTEST, GL_NICEST, GL_DONT_CARE + glGenerateMipmap(GL_TEXTURE_2D); // Generate mipmaps automatically + + #define MIN(a,b) (((a)<(b))? (a):(b)) + #define MAX(a,b) (((a)>(b))? (a):(b)) + + *mipmaps = 1 + (int)floor(log(MAX(width, height))/log(2)); + TRACELOG(RL_LOG_INFO, "TEXTURE: [ID %i] Mipmaps generated automatically, total: %i", id, *mipmaps); + } + else TRACELOG(RL_LOG_WARNING, "TEXTURE: [ID %i] Failed to generate mipmaps", id); + + glBindTexture(GL_TEXTURE_2D, 0); +#else + TRACELOG(RL_LOG_WARNING, "TEXTURE: [ID %i] GPU mipmap generation not supported", id); +#endif +} + +// Read texture pixel data +void *rlReadTexturePixels(unsigned int id, int width, int height, int format) +{ + void *pixels = NULL; + +#if defined(GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_33) + glBindTexture(GL_TEXTURE_2D, id); + + // NOTE: Using texture id, we can retrieve some texture info (but not on OpenGL ES 2.0) + // Possible texture info: GL_TEXTURE_RED_SIZE, GL_TEXTURE_GREEN_SIZE, GL_TEXTURE_BLUE_SIZE, GL_TEXTURE_ALPHA_SIZE + //int width, height, format; + //glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &width); + //glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &height); + //glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_INTERNAL_FORMAT, &format); + + // NOTE: Each row written to or read from by OpenGL pixel operations like glGetTexImage are aligned to a 4 byte boundary by default, which may add some padding + // Use glPixelStorei to modify padding with the GL_[UN]PACK_ALIGNMENT setting + // GL_PACK_ALIGNMENT affects operations that read from OpenGL memory (glReadPixels, glGetTexImage, etc.) + // GL_UNPACK_ALIGNMENT affects operations that write to OpenGL memory (glTexImage, etc.) + glPixelStorei(GL_PACK_ALIGNMENT, 1); + + unsigned int glInternalFormat, glFormat, glType; + rlGetGlTextureFormats(format, &glInternalFormat, &glFormat, &glType); + unsigned int size = rlGetPixelDataSize(width, height, format); + + if ((glInternalFormat != 0) && (format < RL_PIXELFORMAT_COMPRESSED_DXT1_RGB)) + { + pixels = RL_MALLOC(size); + glGetTexImage(GL_TEXTURE_2D, 0, glFormat, glType, pixels); + } + else TRACELOG(RL_LOG_WARNING, "TEXTURE: [ID %i] Data retrieval not suported for pixel format (%i)", id, format); + + glBindTexture(GL_TEXTURE_2D, 0); +#endif + +#if defined(GRAPHICS_API_OPENGL_ES2) + // glGetTexImage() is not available on OpenGL ES 2.0 + // Texture width and height are required on OpenGL ES 2.0, there is no way to get it from texture id + // Two possible Options: + // 1 - Bind texture to color fbo attachment and glReadPixels() + // 2 - Create an fbo, activate it, render quad with texture, glReadPixels() + // We are using Option 1, just need to care for texture format on retrieval + // NOTE: This behaviour could be conditioned by graphic driver... + unsigned int fboId = rlLoadFramebuffer(); + + glBindFramebuffer(GL_FRAMEBUFFER, fboId); + glBindTexture(GL_TEXTURE_2D, 0); + + // Attach our texture to FBO + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, id, 0); + + // We read data as RGBA because FBO texture is configured as RGBA, despite binding another texture format + pixels = (unsigned char *)RL_MALLOC(rlGetPixelDataSize(width, height, RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8)); + glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, pixels); + + glBindFramebuffer(GL_FRAMEBUFFER, 0); + + // Clean up temporal fbo + rlUnloadFramebuffer(fboId); +#endif + + return pixels; +} + +// Read screen pixel data (color buffer) +unsigned char *rlReadScreenPixels(int width, int height) +{ + unsigned char *screenData = (unsigned char *)RL_CALLOC(width*height*4, sizeof(unsigned char)); + + // NOTE 1: glReadPixels returns image flipped vertically -> (0,0) is the bottom left corner of the framebuffer + // NOTE 2: We are getting alpha channel! Be careful, it can be transparent if not cleared properly! + glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, screenData); + + // Flip image vertically! + unsigned char *imgData = (unsigned char *)RL_MALLOC(width*height*4*sizeof(unsigned char)); + + for (int y = height - 1; y >= 0; y--) + { + for (int x = 0; x < (width*4); x++) + { + imgData[((height - 1) - y)*width*4 + x] = screenData[(y*width*4) + x]; // Flip line + + // Set alpha component value to 255 (no trasparent image retrieval) + // NOTE: Alpha value has already been applied to RGB in framebuffer, we don't need it! + if (((x + 1)%4) == 0) imgData[((height - 1) - y)*width*4 + x] = 255; + } + } + + RL_FREE(screenData); + + return imgData; // NOTE: image data should be freed +} + +// Framebuffer management (fbo) +//----------------------------------------------------------------------------------------- +// Load a framebuffer to be used for rendering +// NOTE: No textures attached +unsigned int rlLoadFramebuffer(void) +{ + unsigned int fboId = 0; + +#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)) && defined(RLGL_RENDER_TEXTURES_HINT) + glGenFramebuffers(1, &fboId); // Create the framebuffer object + glBindFramebuffer(GL_FRAMEBUFFER, 0); // Unbind any framebuffer +#endif + + return fboId; +} + +// Attach color buffer texture to an fbo (unloads previous attachment) +// NOTE: Attach type: 0-Color, 1-Depth renderbuffer, 2-Depth texture +void rlFramebufferAttach(unsigned int fboId, unsigned int texId, int attachType, int texType, int mipLevel) +{ +#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)) && defined(RLGL_RENDER_TEXTURES_HINT) + glBindFramebuffer(GL_FRAMEBUFFER, fboId); + + switch (attachType) + { + case RL_ATTACHMENT_COLOR_CHANNEL0: + case RL_ATTACHMENT_COLOR_CHANNEL1: + case RL_ATTACHMENT_COLOR_CHANNEL2: + case RL_ATTACHMENT_COLOR_CHANNEL3: + case RL_ATTACHMENT_COLOR_CHANNEL4: + case RL_ATTACHMENT_COLOR_CHANNEL5: + case RL_ATTACHMENT_COLOR_CHANNEL6: + case RL_ATTACHMENT_COLOR_CHANNEL7: + { + if (texType == RL_ATTACHMENT_TEXTURE2D) glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + attachType, GL_TEXTURE_2D, texId, mipLevel); + else if (texType == RL_ATTACHMENT_RENDERBUFFER) glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + attachType, GL_RENDERBUFFER, texId); + else if (texType >= RL_ATTACHMENT_CUBEMAP_POSITIVE_X) glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + attachType, GL_TEXTURE_CUBE_MAP_POSITIVE_X + texType, texId, mipLevel); + + } break; + case RL_ATTACHMENT_DEPTH: + { + if (texType == RL_ATTACHMENT_TEXTURE2D) glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, texId, mipLevel); + else if (texType == RL_ATTACHMENT_RENDERBUFFER) glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, texId); + + } break; + case RL_ATTACHMENT_STENCIL: + { + if (texType == RL_ATTACHMENT_TEXTURE2D) glFramebufferTexture2D(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_TEXTURE_2D, texId, mipLevel); + else if (texType == RL_ATTACHMENT_RENDERBUFFER) glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, texId); + + } break; + default: break; + } + + glBindFramebuffer(GL_FRAMEBUFFER, 0); +#endif +} + +// Verify render texture is complete +bool rlFramebufferComplete(unsigned int id) +{ + bool result = false; + +#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)) && defined(RLGL_RENDER_TEXTURES_HINT) + glBindFramebuffer(GL_FRAMEBUFFER, id); + + GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); + + if (status != GL_FRAMEBUFFER_COMPLETE) + { + switch (status) + { + case GL_FRAMEBUFFER_UNSUPPORTED: TRACELOG(RL_LOG_WARNING, "FBO: [ID %i] Framebuffer is unsupported", id); break; + case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: TRACELOG(RL_LOG_WARNING, "FBO: [ID %i] Framebuffer has incomplete attachment", id); break; +#if defined(GRAPHICS_API_OPENGL_ES2) + case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS: TRACELOG(RL_LOG_WARNING, "FBO: [ID %i] Framebuffer has incomplete dimensions", id); break; +#endif + case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: TRACELOG(RL_LOG_WARNING, "FBO: [ID %i] Framebuffer has a missing attachment", id); break; + default: break; + } + } + + glBindFramebuffer(GL_FRAMEBUFFER, 0); + + result = (status == GL_FRAMEBUFFER_COMPLETE); +#endif + + return result; +} + +// Unload framebuffer from GPU memory +// NOTE: All attached textures/cubemaps/renderbuffers are also deleted +void rlUnloadFramebuffer(unsigned int id) +{ +#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)) && defined(RLGL_RENDER_TEXTURES_HINT) + // Query depth attachment to automatically delete texture/renderbuffer + int depthType = 0, depthId = 0; + glBindFramebuffer(GL_FRAMEBUFFER, id); // Bind framebuffer to query depth texture type + glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &depthType); + + // TODO: Review warning retrieving object name in WebGL + // WARNING: WebGL: INVALID_ENUM: getFramebufferAttachmentParameter: invalid parameter name + // https://registry.khronos.org/webgl/specs/latest/1.0/ + glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, &depthId); + + unsigned int depthIdU = (unsigned int)depthId; + if (depthType == GL_RENDERBUFFER) glDeleteRenderbuffers(1, &depthIdU); + else if (depthType == GL_TEXTURE) glDeleteTextures(1, &depthIdU); + + // NOTE: If a texture object is deleted while its image is attached to the *currently bound* framebuffer, + // the texture image is automatically detached from the currently bound framebuffer + + glBindFramebuffer(GL_FRAMEBUFFER, 0); + glDeleteFramebuffers(1, &id); + + TRACELOG(RL_LOG_INFO, "FBO: [ID %i] Unloaded framebuffer from VRAM (GPU)", id); +#endif +} + +// Vertex data management +//----------------------------------------------------------------------------------------- +// Load a new attributes buffer +unsigned int rlLoadVertexBuffer(const void *buffer, int size, bool dynamic) +{ + unsigned int id = 0; + +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glGenBuffers(1, &id); + glBindBuffer(GL_ARRAY_BUFFER, id); + glBufferData(GL_ARRAY_BUFFER, size, buffer, dynamic? GL_DYNAMIC_DRAW : GL_STATIC_DRAW); +#endif + + return id; +} + +// Load a new attributes element buffer +unsigned int rlLoadVertexBufferElement(const void *buffer, int size, bool dynamic) +{ + unsigned int id = 0; + +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glGenBuffers(1, &id); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, id); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, size, buffer, dynamic? GL_DYNAMIC_DRAW : GL_STATIC_DRAW); +#endif + + return id; +} + +// Enable vertex buffer (VBO) +void rlEnableVertexBuffer(unsigned int id) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glBindBuffer(GL_ARRAY_BUFFER, id); +#endif +} + +// Disable vertex buffer (VBO) +void rlDisableVertexBuffer(void) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glBindBuffer(GL_ARRAY_BUFFER, 0); +#endif +} + +// Enable vertex buffer element (VBO element) +void rlEnableVertexBufferElement(unsigned int id) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, id); +#endif +} + +// Disable vertex buffer element (VBO element) +void rlDisableVertexBufferElement(void) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); +#endif +} + +// Update vertex buffer with new data +// NOTE: dataSize and offset must be provided in bytes +void rlUpdateVertexBuffer(unsigned int id, const void *data, int dataSize, int offset) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glBindBuffer(GL_ARRAY_BUFFER, id); + glBufferSubData(GL_ARRAY_BUFFER, offset, dataSize, data); +#endif +} + +// Update vertex buffer elements with new data +// NOTE: dataSize and offset must be provided in bytes +void rlUpdateVertexBufferElements(unsigned int id, const void *data, int dataSize, int offset) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, id); + glBufferSubData(GL_ELEMENT_ARRAY_BUFFER, offset, dataSize, data); +#endif +} + +// Enable vertex array object (VAO) +bool rlEnableVertexArray(unsigned int vaoId) +{ + bool result = false; +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + if (RLGL.ExtSupported.vao) + { + glBindVertexArray(vaoId); + result = true; + } +#endif + return result; +} + +// Disable vertex array object (VAO) +void rlDisableVertexArray(void) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + if (RLGL.ExtSupported.vao) glBindVertexArray(0); +#endif +} + +// Enable vertex attribute index +void rlEnableVertexAttribute(unsigned int index) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glEnableVertexAttribArray(index); +#endif +} + +// Disable vertex attribute index +void rlDisableVertexAttribute(unsigned int index) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glDisableVertexAttribArray(index); +#endif +} + +// Draw vertex array +void rlDrawVertexArray(int offset, int count) +{ + glDrawArrays(GL_TRIANGLES, offset, count); +} + +// Draw vertex array elements +void rlDrawVertexArrayElements(int offset, int count, const void *buffer) +{ + // NOTE: Added pointer math separately from function to avoid UBSAN complaining + unsigned short *bufferPtr = (unsigned short *)buffer; + if (offset > 0) bufferPtr += offset; + + glDrawElements(GL_TRIANGLES, count, GL_UNSIGNED_SHORT, (const unsigned short *)bufferPtr); +} + +// Draw vertex array instanced +void rlDrawVertexArrayInstanced(int offset, int count, int instances) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glDrawArraysInstanced(GL_TRIANGLES, 0, count, instances); +#endif +} + +// Draw vertex array elements instanced +void rlDrawVertexArrayElementsInstanced(int offset, int count, const void *buffer, int instances) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + // NOTE: Added pointer math separately from function to avoid UBSAN complaining + unsigned short *bufferPtr = (unsigned short *)buffer; + if (offset > 0) bufferPtr += offset; + + glDrawElementsInstanced(GL_TRIANGLES, count, GL_UNSIGNED_SHORT, (const unsigned short *)bufferPtr, instances); +#endif +} + +#if defined(GRAPHICS_API_OPENGL_11) +// Enable vertex state pointer +void rlEnableStatePointer(int vertexAttribType, void *buffer) +{ + if (buffer != NULL) glEnableClientState(vertexAttribType); + switch (vertexAttribType) + { + case GL_VERTEX_ARRAY: glVertexPointer(3, GL_FLOAT, 0, buffer); break; + case GL_TEXTURE_COORD_ARRAY: glTexCoordPointer(2, GL_FLOAT, 0, buffer); break; + case GL_NORMAL_ARRAY: if (buffer != NULL) glNormalPointer(GL_FLOAT, 0, buffer); break; + case GL_COLOR_ARRAY: if (buffer != NULL) glColorPointer(4, GL_UNSIGNED_BYTE, 0, buffer); break; + //case GL_INDEX_ARRAY: if (buffer != NULL) glIndexPointer(GL_SHORT, 0, buffer); break; // Indexed colors + default: break; + } +} + +// Disable vertex state pointer +void rlDisableStatePointer(int vertexAttribType) +{ + glDisableClientState(vertexAttribType); +} +#endif + +// Load vertex array object (VAO) +unsigned int rlLoadVertexArray(void) +{ + unsigned int vaoId = 0; +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + if (RLGL.ExtSupported.vao) + { + glGenVertexArrays(1, &vaoId); + } +#endif + return vaoId; +} + +// Set vertex attribute +void rlSetVertexAttribute(unsigned int index, int compSize, int type, bool normalized, int stride, int offset) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + // NOTE: Data type could be: GL_BYTE, GL_UNSIGNED_BYTE, GL_SHORT, GL_UNSIGNED_SHORT, GL_INT, GL_UNSIGNED_INT + // Additional types (depends on OpenGL version or extensions): + // - GL_HALF_FLOAT, GL_FLOAT, GL_DOUBLE, GL_FIXED, + // - GL_INT_2_10_10_10_REV, GL_UNSIGNED_INT_2_10_10_10_REV, GL_UNSIGNED_INT_10F_11F_11F_REV + + size_t offsetNative = offset; + glVertexAttribPointer(index, compSize, type, normalized, stride, (void *)offsetNative); +#endif +} + +// Set vertex attribute divisor +void rlSetVertexAttributeDivisor(unsigned int index, int divisor) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glVertexAttribDivisor(index, divisor); +#endif +} + +// Unload vertex array object (VAO) +void rlUnloadVertexArray(unsigned int vaoId) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + if (RLGL.ExtSupported.vao) + { + glBindVertexArray(0); + glDeleteVertexArrays(1, &vaoId); + TRACELOG(RL_LOG_INFO, "VAO: [ID %i] Unloaded vertex array data from VRAM (GPU)", vaoId); + } +#endif +} + +// Unload vertex buffer (VBO) +void rlUnloadVertexBuffer(unsigned int vboId) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glDeleteBuffers(1, &vboId); + //TRACELOG(RL_LOG_INFO, "VBO: Unloaded vertex data from VRAM (GPU)"); +#endif +} + +// Shaders management +//----------------------------------------------------------------------------------------------- +// Load shader from code strings +// NOTE: If shader string is NULL, using default vertex/fragment shaders +unsigned int rlLoadShaderCode(const char *vsCode, const char *fsCode) +{ + unsigned int id = 0; + +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + unsigned int vertexShaderId = 0; + unsigned int fragmentShaderId = 0; + + // Compile vertex shader (if provided) + // NOTE: If not vertex shader is provided, use default one + if (vsCode != NULL) vertexShaderId = rlCompileShader(vsCode, GL_VERTEX_SHADER); + else vertexShaderId = RLGL.State.defaultVShaderId; + + // Compile fragment shader (if provided) + // NOTE: If not vertex shader is provided, use default one + if (fsCode != NULL) fragmentShaderId = rlCompileShader(fsCode, GL_FRAGMENT_SHADER); + else fragmentShaderId = RLGL.State.defaultFShaderId; + + // In case vertex and fragment shader are the default ones, no need to recompile, we can just assign the default shader program id + if ((vertexShaderId == RLGL.State.defaultVShaderId) && (fragmentShaderId == RLGL.State.defaultFShaderId)) id = RLGL.State.defaultShaderId; + else if ((vertexShaderId > 0) && (fragmentShaderId > 0)) + { + // One of or both shader are new, we need to compile a new shader program + id = rlLoadShaderProgram(vertexShaderId, fragmentShaderId); + + // We can detach and delete vertex/fragment shaders (if not default ones) + // NOTE: We detach shader before deletion to make sure memory is freed + if (vertexShaderId != RLGL.State.defaultVShaderId) + { + // WARNING: Shader program linkage could fail and returned id is 0 + if (id > 0) glDetachShader(id, vertexShaderId); + glDeleteShader(vertexShaderId); + } + if (fragmentShaderId != RLGL.State.defaultFShaderId) + { + // WARNING: Shader program linkage could fail and returned id is 0 + if (id > 0) glDetachShader(id, fragmentShaderId); + glDeleteShader(fragmentShaderId); + } + + // In case shader program loading failed, we assign default shader + if (id == 0) + { + // In case shader loading fails, we return the default shader + TRACELOG(RL_LOG_WARNING, "SHADER: Failed to load custom shader code, using default shader"); + id = RLGL.State.defaultShaderId; + } + /* + else + { + // Get available shader uniforms + // NOTE: This information is useful for debug... + int uniformCount = -1; + glGetProgramiv(id, GL_ACTIVE_UNIFORMS, &uniformCount); + + for (int i = 0; i < uniformCount; i++) + { + int namelen = -1; + int num = -1; + char name[256] = { 0 }; // Assume no variable names longer than 256 + GLenum type = GL_ZERO; + + // Get the name of the uniforms + glGetActiveUniform(id, i, sizeof(name) - 1, &namelen, &num, &type, name); + + name[namelen] = 0; + TRACELOGD("SHADER: [ID %i] Active uniform (%s) set at location: %i", id, name, glGetUniformLocation(id, name)); + } + } + */ + } +#endif + + return id; +} + +// Compile custom shader and return shader id +unsigned int rlCompileShader(const char *shaderCode, int type) +{ + unsigned int shader = 0; + +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + shader = glCreateShader(type); + glShaderSource(shader, 1, &shaderCode, NULL); + + GLint success = 0; + glCompileShader(shader); + glGetShaderiv(shader, GL_COMPILE_STATUS, &success); + + if (success == GL_FALSE) + { + switch (type) + { + case GL_VERTEX_SHADER: TRACELOG(RL_LOG_WARNING, "SHADER: [ID %i] Failed to compile vertex shader code", shader); break; + case GL_FRAGMENT_SHADER: TRACELOG(RL_LOG_WARNING, "SHADER: [ID %i] Failed to compile fragment shader code", shader); break; + //case GL_GEOMETRY_SHADER: + #if defined(GRAPHICS_API_OPENGL_43) + case GL_COMPUTE_SHADER: TRACELOG(RL_LOG_WARNING, "SHADER: [ID %i] Failed to compile compute shader code", shader); break; + #elif defined(GRAPHICS_API_OPENGL_33) + case GL_COMPUTE_SHADER: TRACELOG(RL_LOG_WARNING, "SHADER: Compute shaders not enabled. Define GRAPHICS_API_OPENGL_43", shader); break; + #endif + default: break; + } + + int maxLength = 0; + glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &maxLength); + + if (maxLength > 0) + { + int length = 0; + char *log = (char *)RL_CALLOC(maxLength, sizeof(char)); + glGetShaderInfoLog(shader, maxLength, &length, log); + TRACELOG(RL_LOG_WARNING, "SHADER: [ID %i] Compile error: %s", shader, log); + RL_FREE(log); + } + + shader = 0; + } + else + { + switch (type) + { + case GL_VERTEX_SHADER: TRACELOG(RL_LOG_INFO, "SHADER: [ID %i] Vertex shader compiled successfully", shader); break; + case GL_FRAGMENT_SHADER: TRACELOG(RL_LOG_INFO, "SHADER: [ID %i] Fragment shader compiled successfully", shader); break; + //case GL_GEOMETRY_SHADER: + #if defined(GRAPHICS_API_OPENGL_43) + case GL_COMPUTE_SHADER: TRACELOG(RL_LOG_INFO, "SHADER: [ID %i] Compute shader compiled successfully", shader); break; + #elif defined(GRAPHICS_API_OPENGL_33) + case GL_COMPUTE_SHADER: TRACELOG(RL_LOG_WARNING, "SHADER: Compute shaders not enabled. Define GRAPHICS_API_OPENGL_43", shader); break; + #endif + default: break; + } + } +#endif + + return shader; +} + +// Load custom shader strings and return program id +unsigned int rlLoadShaderProgram(unsigned int vShaderId, unsigned int fShaderId) +{ + unsigned int program = 0; + +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + GLint success = 0; + program = glCreateProgram(); + + glAttachShader(program, vShaderId); + glAttachShader(program, fShaderId); + + // NOTE: Default attribute shader locations must be Bound before linking + glBindAttribLocation(program, RL_DEFAULT_SHADER_ATTRIB_LOCATION_POSITION, RL_DEFAULT_SHADER_ATTRIB_NAME_POSITION); + glBindAttribLocation(program, RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD, RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD); + glBindAttribLocation(program, RL_DEFAULT_SHADER_ATTRIB_LOCATION_NORMAL, RL_DEFAULT_SHADER_ATTRIB_NAME_NORMAL); + glBindAttribLocation(program, RL_DEFAULT_SHADER_ATTRIB_LOCATION_COLOR, RL_DEFAULT_SHADER_ATTRIB_NAME_COLOR); + glBindAttribLocation(program, RL_DEFAULT_SHADER_ATTRIB_LOCATION_TANGENT, RL_DEFAULT_SHADER_ATTRIB_NAME_TANGENT); + glBindAttribLocation(program, RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD2, RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD2); + +#ifdef RL_SUPPORT_MESH_GPU_SKINNING + glBindAttribLocation(program, RL_DEFAULT_SHADER_ATTRIB_LOCATION_BONEIDS, RL_DEFAULT_SHADER_ATTRIB_NAME_BONEIDS); + glBindAttribLocation(program, RL_DEFAULT_SHADER_ATTRIB_LOCATION_BONEWEIGHTS, RL_DEFAULT_SHADER_ATTRIB_NAME_BONEWEIGHTS); +#endif + + // NOTE: If some attrib name is no found on the shader, it locations becomes -1 + + glLinkProgram(program); + + // NOTE: All uniform variables are intitialised to 0 when a program links + + glGetProgramiv(program, GL_LINK_STATUS, &success); + + if (success == GL_FALSE) + { + TRACELOG(RL_LOG_WARNING, "SHADER: [ID %i] Failed to link shader program", program); + + int maxLength = 0; + glGetProgramiv(program, GL_INFO_LOG_LENGTH, &maxLength); + + if (maxLength > 0) + { + int length = 0; + char *log = (char *)RL_CALLOC(maxLength, sizeof(char)); + glGetProgramInfoLog(program, maxLength, &length, log); + TRACELOG(RL_LOG_WARNING, "SHADER: [ID %i] Link error: %s", program, log); + RL_FREE(log); + } + + glDeleteProgram(program); + + program = 0; + } + else + { + // Get the size of compiled shader program (not available on OpenGL ES 2.0) + // NOTE: If GL_LINK_STATUS is GL_FALSE, program binary length is zero + //GLint binarySize = 0; + //glGetProgramiv(id, GL_PROGRAM_BINARY_LENGTH, &binarySize); + + TRACELOG(RL_LOG_INFO, "SHADER: [ID %i] Program shader loaded successfully", program); + } +#endif + return program; +} + +// Unload shader program +void rlUnloadShaderProgram(unsigned int id) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glDeleteProgram(id); + + TRACELOG(RL_LOG_INFO, "SHADER: [ID %i] Unloaded shader program data from VRAM (GPU)", id); +#endif +} + +// Get shader location uniform +int rlGetLocationUniform(unsigned int shaderId, const char *uniformName) +{ + int location = -1; +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + location = glGetUniformLocation(shaderId, uniformName); + + //if (location == -1) TRACELOG(RL_LOG_WARNING, "SHADER: [ID %i] Failed to find shader uniform: %s", shaderId, uniformName); + //else TRACELOG(RL_LOG_INFO, "SHADER: [ID %i] Shader uniform (%s) set at location: %i", shaderId, uniformName, location); +#endif + return location; +} + +// Get shader location attribute +int rlGetLocationAttrib(unsigned int shaderId, const char *attribName) +{ + int location = -1; +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + location = glGetAttribLocation(shaderId, attribName); + + //if (location == -1) TRACELOG(RL_LOG_WARNING, "SHADER: [ID %i] Failed to find shader attribute: %s", shaderId, attribName); + //else TRACELOG(RL_LOG_INFO, "SHADER: [ID %i] Shader attribute (%s) set at location: %i", shaderId, attribName, location); +#endif + return location; +} + +// Set shader value uniform +void rlSetUniform(int locIndex, const void *value, int uniformType, int count) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + switch (uniformType) + { + case RL_SHADER_UNIFORM_FLOAT: glUniform1fv(locIndex, count, (float *)value); break; + case RL_SHADER_UNIFORM_VEC2: glUniform2fv(locIndex, count, (float *)value); break; + case RL_SHADER_UNIFORM_VEC3: glUniform3fv(locIndex, count, (float *)value); break; + case RL_SHADER_UNIFORM_VEC4: glUniform4fv(locIndex, count, (float *)value); break; + case RL_SHADER_UNIFORM_INT: glUniform1iv(locIndex, count, (int *)value); break; + case RL_SHADER_UNIFORM_IVEC2: glUniform2iv(locIndex, count, (int *)value); break; + case RL_SHADER_UNIFORM_IVEC3: glUniform3iv(locIndex, count, (int *)value); break; + case RL_SHADER_UNIFORM_IVEC4: glUniform4iv(locIndex, count, (int *)value); break; + #if !defined(GRAPHICS_API_OPENGL_ES2) + case RL_SHADER_UNIFORM_UINT: glUniform1uiv(locIndex, count, (unsigned int *)value); break; + case RL_SHADER_UNIFORM_UIVEC2: glUniform2uiv(locIndex, count, (unsigned int *)value); break; + case RL_SHADER_UNIFORM_UIVEC3: glUniform3uiv(locIndex, count, (unsigned int *)value); break; + case RL_SHADER_UNIFORM_UIVEC4: glUniform4uiv(locIndex, count, (unsigned int *)value); break; + #endif + case RL_SHADER_UNIFORM_SAMPLER2D: glUniform1iv(locIndex, count, (int *)value); break; + default: TRACELOG(RL_LOG_WARNING, "SHADER: Failed to set uniform value, data type not recognized"); + + // TODO: Support glUniform1uiv(), glUniform2uiv(), glUniform3uiv(), glUniform4uiv() + } +#endif +} + +// Set shader value attribute +void rlSetVertexAttributeDefault(int locIndex, const void *value, int attribType, int count) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + switch (attribType) + { + case RL_SHADER_ATTRIB_FLOAT: if (count == 1) glVertexAttrib1fv(locIndex, (float *)value); break; + case RL_SHADER_ATTRIB_VEC2: if (count == 2) glVertexAttrib2fv(locIndex, (float *)value); break; + case RL_SHADER_ATTRIB_VEC3: if (count == 3) glVertexAttrib3fv(locIndex, (float *)value); break; + case RL_SHADER_ATTRIB_VEC4: if (count == 4) glVertexAttrib4fv(locIndex, (float *)value); break; + default: TRACELOG(RL_LOG_WARNING, "SHADER: Failed to set attrib default value, data type not recognized"); + } +#endif +} + +// Set shader value uniform matrix +void rlSetUniformMatrix(int locIndex, Matrix mat) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + float matfloat[16] = { + mat.m0, mat.m1, mat.m2, mat.m3, + mat.m4, mat.m5, mat.m6, mat.m7, + mat.m8, mat.m9, mat.m10, mat.m11, + mat.m12, mat.m13, mat.m14, mat.m15 + }; + glUniformMatrix4fv(locIndex, 1, false, matfloat); +#endif +} + +// Set shader value uniform matrix +void rlSetUniformMatrices(int locIndex, const Matrix *matrices, int count) +{ +#if defined(GRAPHICS_API_OPENGL_33) + glUniformMatrix4fv(locIndex, count, true, (const float *)matrices); +#elif defined(GRAPHICS_API_OPENGL_ES2) + // WARNING: WebGL does not support Matrix transpose ("true" parameter) + // REF: https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/uniformMatrix + glUniformMatrix4fv(locIndex, count, false, (const float *)matrices); +#endif +} + +// Set shader value uniform sampler +void rlSetUniformSampler(int locIndex, unsigned int textureId) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + // Check if texture is already active + for (int i = 0; i < RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS; i++) + { + if (RLGL.State.activeTextureId[i] == textureId) + { + glUniform1i(locIndex, 1 + i); + return; + } + } + + // Register a new active texture for the internal batch system + // NOTE: Default texture is always activated as GL_TEXTURE0 + for (int i = 0; i < RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS; i++) + { + if (RLGL.State.activeTextureId[i] == 0) + { + glUniform1i(locIndex, 1 + i); // Activate new texture unit + RLGL.State.activeTextureId[i] = textureId; // Save texture id for binding on drawing + break; + } + } +#endif +} + +// Set shader currently active (id and locations) +void rlSetShader(unsigned int id, int *locs) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + if (RLGL.State.currentShaderId != id) + { + rlDrawRenderBatch(RLGL.currentBatch); + RLGL.State.currentShaderId = id; + RLGL.State.currentShaderLocs = locs; + } +#endif +} + +// Load compute shader program +unsigned int rlLoadComputeShaderProgram(unsigned int shaderId) +{ + unsigned int program = 0; + +#if defined(GRAPHICS_API_OPENGL_43) + GLint success = 0; + program = glCreateProgram(); + glAttachShader(program, shaderId); + glLinkProgram(program); + + // NOTE: All uniform variables are intitialised to 0 when a program links + + glGetProgramiv(program, GL_LINK_STATUS, &success); + + if (success == GL_FALSE) + { + TRACELOG(RL_LOG_WARNING, "SHADER: [ID %i] Failed to link compute shader program", program); + + int maxLength = 0; + glGetProgramiv(program, GL_INFO_LOG_LENGTH, &maxLength); + + if (maxLength > 0) + { + int length = 0; + char *log = (char *)RL_CALLOC(maxLength, sizeof(char)); + glGetProgramInfoLog(program, maxLength, &length, log); + TRACELOG(RL_LOG_WARNING, "SHADER: [ID %i] Link error: %s", program, log); + RL_FREE(log); + } + + glDeleteProgram(program); + + program = 0; + } + else + { + // Get the size of compiled shader program (not available on OpenGL ES 2.0) + // NOTE: If GL_LINK_STATUS is GL_FALSE, program binary length is zero + //GLint binarySize = 0; + //glGetProgramiv(id, GL_PROGRAM_BINARY_LENGTH, &binarySize); + + TRACELOG(RL_LOG_INFO, "SHADER: [ID %i] Compute shader program loaded successfully", program); + } +#else + TRACELOG(RL_LOG_WARNING, "SHADER: Compute shaders not enabled. Define GRAPHICS_API_OPENGL_43"); +#endif + + return program; +} + +// Dispatch compute shader (equivalent to *draw* for graphics pilepine) +void rlComputeShaderDispatch(unsigned int groupX, unsigned int groupY, unsigned int groupZ) +{ +#if defined(GRAPHICS_API_OPENGL_43) + glDispatchCompute(groupX, groupY, groupZ); +#endif +} + +// Load shader storage buffer object (SSBO) +unsigned int rlLoadShaderBuffer(unsigned int size, const void *data, int usageHint) +{ + unsigned int ssbo = 0; + +#if defined(GRAPHICS_API_OPENGL_43) + glGenBuffers(1, &ssbo); + glBindBuffer(GL_SHADER_STORAGE_BUFFER, ssbo); + glBufferData(GL_SHADER_STORAGE_BUFFER, size, data, usageHint? usageHint : RL_STREAM_COPY); + if (data == NULL) glClearBufferData(GL_SHADER_STORAGE_BUFFER, GL_R8UI, GL_RED_INTEGER, GL_UNSIGNED_BYTE, NULL); // Clear buffer data to 0 + glBindBuffer(GL_SHADER_STORAGE_BUFFER, 0); +#else + TRACELOG(RL_LOG_WARNING, "SSBO: SSBO not enabled. Define GRAPHICS_API_OPENGL_43"); +#endif + + return ssbo; +} + +// Unload shader storage buffer object (SSBO) +void rlUnloadShaderBuffer(unsigned int ssboId) +{ +#if defined(GRAPHICS_API_OPENGL_43) + glDeleteBuffers(1, &ssboId); +#else + TRACELOG(RL_LOG_WARNING, "SSBO: SSBO not enabled. Define GRAPHICS_API_OPENGL_43"); +#endif + +} + +// Update SSBO buffer data +void rlUpdateShaderBuffer(unsigned int id, const void *data, unsigned int dataSize, unsigned int offset) +{ +#if defined(GRAPHICS_API_OPENGL_43) + glBindBuffer(GL_SHADER_STORAGE_BUFFER, id); + glBufferSubData(GL_SHADER_STORAGE_BUFFER, offset, dataSize, data); +#endif +} + +// Get SSBO buffer size +unsigned int rlGetShaderBufferSize(unsigned int id) +{ +#if defined(GRAPHICS_API_OPENGL_43) + GLint64 size = 0; + glBindBuffer(GL_SHADER_STORAGE_BUFFER, id); + glGetBufferParameteri64v(GL_SHADER_STORAGE_BUFFER, GL_BUFFER_SIZE, &size); + return (size > 0)? (unsigned int)size : 0; +#else + return 0; +#endif +} + +// Read SSBO buffer data (GPU->CPU) +void rlReadShaderBuffer(unsigned int id, void *dest, unsigned int count, unsigned int offset) +{ +#if defined(GRAPHICS_API_OPENGL_43) + glBindBuffer(GL_SHADER_STORAGE_BUFFER, id); + glGetBufferSubData(GL_SHADER_STORAGE_BUFFER, offset, count, dest); +#endif +} + +// Bind SSBO buffer +void rlBindShaderBuffer(unsigned int id, unsigned int index) +{ +#if defined(GRAPHICS_API_OPENGL_43) + glBindBufferBase(GL_SHADER_STORAGE_BUFFER, index, id); +#endif +} + +// Copy SSBO buffer data +void rlCopyShaderBuffer(unsigned int destId, unsigned int srcId, unsigned int destOffset, unsigned int srcOffset, unsigned int count) +{ +#if defined(GRAPHICS_API_OPENGL_43) + glBindBuffer(GL_COPY_READ_BUFFER, srcId); + glBindBuffer(GL_COPY_WRITE_BUFFER, destId); + glCopyBufferSubData(GL_COPY_READ_BUFFER, GL_COPY_WRITE_BUFFER, srcOffset, destOffset, count); +#endif +} + +// Bind image texture +void rlBindImageTexture(unsigned int id, unsigned int index, int format, bool readonly) +{ +#if defined(GRAPHICS_API_OPENGL_43) + unsigned int glInternalFormat = 0, glFormat = 0, glType = 0; + + rlGetGlTextureFormats(format, &glInternalFormat, &glFormat, &glType); + glBindImageTexture(index, id, 0, 0, 0, readonly? GL_READ_ONLY : GL_READ_WRITE, glInternalFormat); +#else + TRACELOG(RL_LOG_WARNING, "TEXTURE: Image texture binding not enabled. Define GRAPHICS_API_OPENGL_43"); +#endif +} + +// Matrix state management +//----------------------------------------------------------------------------------------- +// Get internal modelview matrix +Matrix rlGetMatrixModelview(void) +{ + Matrix matrix = rlMatrixIdentity(); +#if defined(GRAPHICS_API_OPENGL_11) + float mat[16]; + glGetFloatv(GL_MODELVIEW_MATRIX, mat); + matrix.m0 = mat[0]; + matrix.m1 = mat[1]; + matrix.m2 = mat[2]; + matrix.m3 = mat[3]; + matrix.m4 = mat[4]; + matrix.m5 = mat[5]; + matrix.m6 = mat[6]; + matrix.m7 = mat[7]; + matrix.m8 = mat[8]; + matrix.m9 = mat[9]; + matrix.m10 = mat[10]; + matrix.m11 = mat[11]; + matrix.m12 = mat[12]; + matrix.m13 = mat[13]; + matrix.m14 = mat[14]; + matrix.m15 = mat[15]; +#else + matrix = RLGL.State.modelview; +#endif + return matrix; +} + +// Get internal projection matrix +Matrix rlGetMatrixProjection(void) +{ +#if defined(GRAPHICS_API_OPENGL_11) + float mat[16]; + glGetFloatv(GL_PROJECTION_MATRIX,mat); + Matrix m; + m.m0 = mat[0]; + m.m1 = mat[1]; + m.m2 = mat[2]; + m.m3 = mat[3]; + m.m4 = mat[4]; + m.m5 = mat[5]; + m.m6 = mat[6]; + m.m7 = mat[7]; + m.m8 = mat[8]; + m.m9 = mat[9]; + m.m10 = mat[10]; + m.m11 = mat[11]; + m.m12 = mat[12]; + m.m13 = mat[13]; + m.m14 = mat[14]; + m.m15 = mat[15]; + return m; +#else + return RLGL.State.projection; +#endif +} + +// Get internal accumulated transform matrix +Matrix rlGetMatrixTransform(void) +{ + Matrix mat = rlMatrixIdentity(); +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + // TODO: Consider possible transform matrices in the RLGL.State.stack + // Is this the right order? or should we start with the first stored matrix instead of the last one? + //Matrix matStackTransform = rlMatrixIdentity(); + //for (int i = RLGL.State.stackCounter; i > 0; i--) matStackTransform = rlMatrixMultiply(RLGL.State.stack[i], matStackTransform); + mat = RLGL.State.transform; +#endif + return mat; +} + +// Get internal projection matrix for stereo render (selected eye) +Matrix rlGetMatrixProjectionStereo(int eye) +{ + Matrix mat = rlMatrixIdentity(); +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + mat = RLGL.State.projectionStereo[eye]; +#endif + return mat; +} + +// Get internal view offset matrix for stereo render (selected eye) +Matrix rlGetMatrixViewOffsetStereo(int eye) +{ + Matrix mat = rlMatrixIdentity(); +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + mat = RLGL.State.viewOffsetStereo[eye]; +#endif + return mat; +} + +// Set a custom modelview matrix (replaces internal modelview matrix) +void rlSetMatrixModelview(Matrix view) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + RLGL.State.modelview = view; +#endif +} + +// Set a custom projection matrix (replaces internal projection matrix) +void rlSetMatrixProjection(Matrix projection) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + RLGL.State.projection = projection; +#endif +} + +// Set eyes projection matrices for stereo rendering +void rlSetMatrixProjectionStereo(Matrix right, Matrix left) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + RLGL.State.projectionStereo[0] = right; + RLGL.State.projectionStereo[1] = left; +#endif +} + +// Set eyes view offsets matrices for stereo rendering +void rlSetMatrixViewOffsetStereo(Matrix right, Matrix left) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + RLGL.State.viewOffsetStereo[0] = right; + RLGL.State.viewOffsetStereo[1] = left; +#endif +} + +// Load and draw a quad in NDC +void rlLoadDrawQuad(void) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + unsigned int quadVAO = 0; + unsigned int quadVBO = 0; + + float vertices[] = { + // Positions Texcoords + -1.0f, 1.0f, 0.0f, 0.0f, 1.0f, + -1.0f, -1.0f, 0.0f, 0.0f, 0.0f, + 1.0f, 1.0f, 0.0f, 1.0f, 1.0f, + 1.0f, -1.0f, 0.0f, 1.0f, 0.0f, + }; + + // Gen VAO to contain VBO + glGenVertexArrays(1, &quadVAO); + glBindVertexArray(quadVAO); + + // Gen and fill vertex buffer (VBO) + glGenBuffers(1, &quadVBO); + glBindBuffer(GL_ARRAY_BUFFER, quadVBO); + glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), &vertices, GL_STATIC_DRAW); + + // Bind vertex attributes (position, texcoords) + glEnableVertexAttribArray(RL_DEFAULT_SHADER_ATTRIB_LOCATION_POSITION); + glVertexAttribPointer(RL_DEFAULT_SHADER_ATTRIB_LOCATION_POSITION, 3, GL_FLOAT, GL_FALSE, 5*sizeof(float), (void *)0); // Positions + glEnableVertexAttribArray(RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD); + glVertexAttribPointer(RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD, 2, GL_FLOAT, GL_FALSE, 5*sizeof(float), (void *)(3*sizeof(float))); // Texcoords + + // Draw quad + glBindVertexArray(quadVAO); + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + glBindVertexArray(0); + + // Delete buffers (VBO and VAO) + glDeleteBuffers(1, &quadVBO); + glDeleteVertexArrays(1, &quadVAO); +#endif +} + +// Load and draw a cube in NDC +void rlLoadDrawCube(void) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + unsigned int cubeVAO = 0; + unsigned int cubeVBO = 0; + + float vertices[] = { + // Positions Normals Texcoords + -1.0f, -1.0f, -1.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, + 1.0f, 1.0f, -1.0f, 0.0f, 0.0f, -1.0f, 1.0f, 1.0f, + 1.0f, -1.0f, -1.0f, 0.0f, 0.0f, -1.0f, 1.0f, 0.0f, + 1.0f, 1.0f, -1.0f, 0.0f, 0.0f, -1.0f, 1.0f, 1.0f, + -1.0f, -1.0f, -1.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, + -1.0f, 1.0f, -1.0f, 0.0f, 0.0f, -1.0f, 0.0f, 1.0f, + -1.0f, -1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, + 1.0f, -1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, + 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, + -1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, + -1.0f, -1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, + -1.0f, 1.0f, 1.0f, -1.0f, 0.0f, 0.0f, 1.0f, 0.0f, + -1.0f, 1.0f, -1.0f, -1.0f, 0.0f, 0.0f, 1.0f, 1.0f, + -1.0f, -1.0f, -1.0f, -1.0f, 0.0f, 0.0f, 0.0f, 1.0f, + -1.0f, -1.0f, -1.0f, -1.0f, 0.0f, 0.0f, 0.0f, 1.0f, + -1.0f, -1.0f, 1.0f, -1.0f, 0.0f, 0.0f, 0.0f, 0.0f, + -1.0f, 1.0f, 1.0f, -1.0f, 0.0f, 0.0f, 1.0f, 0.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, + 1.0f, -1.0f, -1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, + 1.0f, 1.0f, -1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, + 1.0f, -1.0f, -1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, + 1.0f, -1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, + -1.0f, -1.0f, -1.0f, 0.0f, -1.0f, 0.0f, 0.0f, 1.0f, + 1.0f, -1.0f, -1.0f, 0.0f, -1.0f, 0.0f, 1.0f, 1.0f, + 1.0f, -1.0f, 1.0f, 0.0f, -1.0f, 0.0f, 1.0f, 0.0f, + 1.0f, -1.0f, 1.0f, 0.0f, -1.0f, 0.0f, 1.0f, 0.0f, + -1.0f, -1.0f, 1.0f, 0.0f, -1.0f, 0.0f, 0.0f, 0.0f, + -1.0f, -1.0f, -1.0f, 0.0f, -1.0f, 0.0f, 0.0f, 1.0f, + -1.0f, 1.0f, -1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, + 1.0f, 1.0f, -1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, + -1.0f, 1.0f, -1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, + -1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f + }; + + // Gen VAO to contain VBO + glGenVertexArrays(1, &cubeVAO); + glBindVertexArray(cubeVAO); + + // Gen and fill vertex buffer (VBO) + glGenBuffers(1, &cubeVBO); + glBindBuffer(GL_ARRAY_BUFFER, cubeVBO); + glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); + + // Bind vertex attributes (position, normals, texcoords) + glBindVertexArray(cubeVAO); + glEnableVertexAttribArray(RL_DEFAULT_SHADER_ATTRIB_LOCATION_POSITION); + glVertexAttribPointer(RL_DEFAULT_SHADER_ATTRIB_LOCATION_POSITION, 3, GL_FLOAT, GL_FALSE, 8*sizeof(float), (void *)0); // Positions + glEnableVertexAttribArray(RL_DEFAULT_SHADER_ATTRIB_LOCATION_NORMAL); + glVertexAttribPointer(RL_DEFAULT_SHADER_ATTRIB_LOCATION_NORMAL, 3, GL_FLOAT, GL_FALSE, 8*sizeof(float), (void *)(3*sizeof(float))); // Normals + glEnableVertexAttribArray(RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD); + glVertexAttribPointer(RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD, 2, GL_FLOAT, GL_FALSE, 8*sizeof(float), (void *)(6*sizeof(float))); // Texcoords + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindVertexArray(0); + + // Draw cube + glBindVertexArray(cubeVAO); + glDrawArrays(GL_TRIANGLES, 0, 36); + glBindVertexArray(0); + + // Delete VBO and VAO + glDeleteBuffers(1, &cubeVBO); + glDeleteVertexArrays(1, &cubeVAO); +#endif +} + +// Get name string for pixel format +const char *rlGetPixelFormatName(unsigned int format) +{ + switch (format) + { + case RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: return "GRAYSCALE"; break; // 8 bit per pixel (no alpha) + case RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: return "GRAY_ALPHA"; break; // 8*2 bpp (2 channels) + case RL_PIXELFORMAT_UNCOMPRESSED_R5G6B5: return "R5G6B5"; break; // 16 bpp + case RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8: return "R8G8B8"; break; // 24 bpp + case RL_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: return "R5G5B5A1"; break; // 16 bpp (1 bit alpha) + case RL_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: return "R4G4B4A4"; break; // 16 bpp (4 bit alpha) + case RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: return "R8G8B8A8"; break; // 32 bpp + case RL_PIXELFORMAT_UNCOMPRESSED_R32: return "R32"; break; // 32 bpp (1 channel - float) + case RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32: return "R32G32B32"; break; // 32*3 bpp (3 channels - float) + case RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: return "R32G32B32A32"; break; // 32*4 bpp (4 channels - float) + case RL_PIXELFORMAT_UNCOMPRESSED_R16: return "R16"; break; // 16 bpp (1 channel - half float) + case RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16: return "R16G16B16"; break; // 16*3 bpp (3 channels - half float) + case RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: return "R16G16B16A16"; break; // 16*4 bpp (4 channels - half float) + case RL_PIXELFORMAT_COMPRESSED_DXT1_RGB: return "DXT1_RGB"; break; // 4 bpp (no alpha) + case RL_PIXELFORMAT_COMPRESSED_DXT1_RGBA: return "DXT1_RGBA"; break; // 4 bpp (1 bit alpha) + case RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA: return "DXT3_RGBA"; break; // 8 bpp + case RL_PIXELFORMAT_COMPRESSED_DXT5_RGBA: return "DXT5_RGBA"; break; // 8 bpp + case RL_PIXELFORMAT_COMPRESSED_ETC1_RGB: return "ETC1_RGB"; break; // 4 bpp + case RL_PIXELFORMAT_COMPRESSED_ETC2_RGB: return "ETC2_RGB"; break; // 4 bpp + case RL_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: return "ETC2_RGBA"; break; // 8 bpp + case RL_PIXELFORMAT_COMPRESSED_PVRT_RGB: return "PVRT_RGB"; break; // 4 bpp + case RL_PIXELFORMAT_COMPRESSED_PVRT_RGBA: return "PVRT_RGBA"; break; // 4 bpp + case RL_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: return "ASTC_4x4_RGBA"; break; // 8 bpp + case RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: return "ASTC_8x8_RGBA"; break; // 2 bpp + default: return "UNKNOWN"; break; + } +} + +//---------------------------------------------------------------------------------- +// Module specific Functions Definition +//---------------------------------------------------------------------------------- +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) +// Load default shader (just vertex positioning and texture coloring) +// NOTE: This shader program is used for internal buffers +// NOTE: Loaded: RLGL.State.defaultShaderId, RLGL.State.defaultShaderLocs +static void rlLoadShaderDefault(void) +{ + RLGL.State.defaultShaderLocs = (int *)RL_CALLOC(RL_MAX_SHADER_LOCATIONS, sizeof(int)); + + // NOTE: All locations must be reseted to -1 (no location) + for (int i = 0; i < RL_MAX_SHADER_LOCATIONS; i++) RLGL.State.defaultShaderLocs[i] = -1; + + // Vertex shader directly defined, no external file required + const char *defaultVShaderCode = +#if defined(GRAPHICS_API_OPENGL_21) + "#version 120 \n" + "attribute vec3 vertexPosition; \n" + "attribute vec2 vertexTexCoord; \n" + "attribute vec4 vertexColor; \n" + "varying vec2 fragTexCoord; \n" + "varying vec4 fragColor; \n" +#elif defined(GRAPHICS_API_OPENGL_33) + "#version 330 \n" + "in vec3 vertexPosition; \n" + "in vec2 vertexTexCoord; \n" + "in vec4 vertexColor; \n" + "out vec2 fragTexCoord; \n" + "out vec4 fragColor; \n" +#endif + +#if defined(GRAPHICS_API_OPENGL_ES3) + "#version 300 es \n" + "precision mediump float; \n" // Precision required for OpenGL ES3 (WebGL 2) (on some browsers) + "in vec3 vertexPosition; \n" + "in vec2 vertexTexCoord; \n" + "in vec4 vertexColor; \n" + "out vec2 fragTexCoord; \n" + "out vec4 fragColor; \n" +#elif defined(GRAPHICS_API_OPENGL_ES2) + "#version 100 \n" + "precision mediump float; \n" // Precision required for OpenGL ES2 (WebGL) (on some browsers) + "attribute vec3 vertexPosition; \n" + "attribute vec2 vertexTexCoord; \n" + "attribute vec4 vertexColor; \n" + "varying vec2 fragTexCoord; \n" + "varying vec4 fragColor; \n" +#endif + + "uniform mat4 mvp; \n" + "void main() \n" + "{ \n" + " fragTexCoord = vertexTexCoord; \n" + " fragColor = vertexColor; \n" + " gl_Position = mvp*vec4(vertexPosition, 1.0); \n" + "} \n"; + + // Fragment shader directly defined, no external file required + const char *defaultFShaderCode = +#if defined(GRAPHICS_API_OPENGL_21) + "#version 120 \n" + "varying vec2 fragTexCoord; \n" + "varying vec4 fragColor; \n" + "uniform sampler2D texture0; \n" + "uniform vec4 colDiffuse; \n" + "void main() \n" + "{ \n" + " vec4 texelColor = texture2D(texture0, fragTexCoord); \n" + " gl_FragColor = texelColor*colDiffuse*fragColor; \n" + "} \n"; +#elif defined(GRAPHICS_API_OPENGL_33) + "#version 330 \n" + "in vec2 fragTexCoord; \n" + "in vec4 fragColor; \n" + "out vec4 finalColor; \n" + "uniform sampler2D texture0; \n" + "uniform vec4 colDiffuse; \n" + "void main() \n" + "{ \n" + " vec4 texelColor = texture(texture0, fragTexCoord); \n" + " finalColor = texelColor*colDiffuse*fragColor; \n" + "} \n"; +#endif + +#if defined(GRAPHICS_API_OPENGL_ES3) + "#version 300 es \n" + "precision mediump float; \n" // Precision required for OpenGL ES3 (WebGL 2) + "in vec2 fragTexCoord; \n" + "in vec4 fragColor; \n" + "out vec4 finalColor; \n" + "uniform sampler2D texture0; \n" + "uniform vec4 colDiffuse; \n" + "void main() \n" + "{ \n" + " vec4 texelColor = texture(texture0, fragTexCoord); \n" + " finalColor = texelColor*colDiffuse*fragColor; \n" + "} \n"; +#elif defined(GRAPHICS_API_OPENGL_ES2) + "#version 100 \n" + "precision mediump float; \n" // Precision required for OpenGL ES2 (WebGL) + "varying vec2 fragTexCoord; \n" + "varying vec4 fragColor; \n" + "uniform sampler2D texture0; \n" + "uniform vec4 colDiffuse; \n" + "void main() \n" + "{ \n" + " vec4 texelColor = texture2D(texture0, fragTexCoord); \n" + " gl_FragColor = texelColor*colDiffuse*fragColor; \n" + "} \n"; +#endif + + // NOTE: Compiled vertex/fragment shaders are not deleted, + // they are kept for re-use as default shaders in case some shader loading fails + RLGL.State.defaultVShaderId = rlCompileShader(defaultVShaderCode, GL_VERTEX_SHADER); // Compile default vertex shader + RLGL.State.defaultFShaderId = rlCompileShader(defaultFShaderCode, GL_FRAGMENT_SHADER); // Compile default fragment shader + + RLGL.State.defaultShaderId = rlLoadShaderProgram(RLGL.State.defaultVShaderId, RLGL.State.defaultFShaderId); + + if (RLGL.State.defaultShaderId > 0) + { + TRACELOG(RL_LOG_INFO, "SHADER: [ID %i] Default shader loaded successfully", RLGL.State.defaultShaderId); + + // Set default shader locations: attributes locations + RLGL.State.defaultShaderLocs[RL_SHADER_LOC_VERTEX_POSITION] = glGetAttribLocation(RLGL.State.defaultShaderId, RL_DEFAULT_SHADER_ATTRIB_NAME_POSITION); + RLGL.State.defaultShaderLocs[RL_SHADER_LOC_VERTEX_TEXCOORD01] = glGetAttribLocation(RLGL.State.defaultShaderId, RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD); + RLGL.State.defaultShaderLocs[RL_SHADER_LOC_VERTEX_COLOR] = glGetAttribLocation(RLGL.State.defaultShaderId, RL_DEFAULT_SHADER_ATTRIB_NAME_COLOR); + + // Set default shader locations: uniform locations + RLGL.State.defaultShaderLocs[RL_SHADER_LOC_MATRIX_MVP] = glGetUniformLocation(RLGL.State.defaultShaderId, RL_DEFAULT_SHADER_UNIFORM_NAME_MVP); + RLGL.State.defaultShaderLocs[RL_SHADER_LOC_COLOR_DIFFUSE] = glGetUniformLocation(RLGL.State.defaultShaderId, RL_DEFAULT_SHADER_UNIFORM_NAME_COLOR); + RLGL.State.defaultShaderLocs[RL_SHADER_LOC_MAP_DIFFUSE] = glGetUniformLocation(RLGL.State.defaultShaderId, RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE0); + } + else TRACELOG(RL_LOG_WARNING, "SHADER: [ID %i] Failed to load default shader", RLGL.State.defaultShaderId); +} + +// Unload default shader +// NOTE: Unloads: RLGL.State.defaultShaderId, RLGL.State.defaultShaderLocs +static void rlUnloadShaderDefault(void) +{ + glUseProgram(0); + + glDetachShader(RLGL.State.defaultShaderId, RLGL.State.defaultVShaderId); + glDetachShader(RLGL.State.defaultShaderId, RLGL.State.defaultFShaderId); + glDeleteShader(RLGL.State.defaultVShaderId); + glDeleteShader(RLGL.State.defaultFShaderId); + + glDeleteProgram(RLGL.State.defaultShaderId); + + RL_FREE(RLGL.State.defaultShaderLocs); + + TRACELOG(RL_LOG_INFO, "SHADER: [ID %i] Default shader unloaded successfully", RLGL.State.defaultShaderId); +} + +#if defined(RLGL_SHOW_GL_DETAILS_INFO) +// Get compressed format official GL identifier name +static const char *rlGetCompressedFormatName(int format) +{ + switch (format) + { + // GL_EXT_texture_compression_s3tc + case 0x83F0: return "GL_COMPRESSED_RGB_S3TC_DXT1_EXT"; break; + case 0x83F1: return "GL_COMPRESSED_RGBA_S3TC_DXT1_EXT"; break; + case 0x83F2: return "GL_COMPRESSED_RGBA_S3TC_DXT3_EXT"; break; + case 0x83F3: return "GL_COMPRESSED_RGBA_S3TC_DXT5_EXT"; break; + // GL_3DFX_texture_compression_FXT1 + case 0x86B0: return "GL_COMPRESSED_RGB_FXT1_3DFX"; break; + case 0x86B1: return "GL_COMPRESSED_RGBA_FXT1_3DFX"; break; + // GL_IMG_texture_compression_pvrtc + case 0x8C00: return "GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG"; break; + case 0x8C01: return "GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG"; break; + case 0x8C02: return "GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG"; break; + case 0x8C03: return "GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG"; break; + // GL_OES_compressed_ETC1_RGB8_texture + case 0x8D64: return "GL_ETC1_RGB8_OES"; break; + // GL_ARB_texture_compression_rgtc + case 0x8DBB: return "GL_COMPRESSED_RED_RGTC1"; break; + case 0x8DBC: return "GL_COMPRESSED_SIGNED_RED_RGTC1"; break; + case 0x8DBD: return "GL_COMPRESSED_RG_RGTC2"; break; + case 0x8DBE: return "GL_COMPRESSED_SIGNED_RG_RGTC2"; break; + // GL_ARB_texture_compression_bptc + case 0x8E8C: return "GL_COMPRESSED_RGBA_BPTC_UNORM_ARB"; break; + case 0x8E8D: return "GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB"; break; + case 0x8E8E: return "GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB"; break; + case 0x8E8F: return "GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB"; break; + // GL_ARB_ES3_compatibility + case 0x9274: return "GL_COMPRESSED_RGB8_ETC2"; break; + case 0x9275: return "GL_COMPRESSED_SRGB8_ETC2"; break; + case 0x9276: return "GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2"; break; + case 0x9277: return "GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2"; break; + case 0x9278: return "GL_COMPRESSED_RGBA8_ETC2_EAC"; break; + case 0x9279: return "GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC"; break; + case 0x9270: return "GL_COMPRESSED_R11_EAC"; break; + case 0x9271: return "GL_COMPRESSED_SIGNED_R11_EAC"; break; + case 0x9272: return "GL_COMPRESSED_RG11_EAC"; break; + case 0x9273: return "GL_COMPRESSED_SIGNED_RG11_EAC"; break; + // GL_KHR_texture_compression_astc_hdr + case 0x93B0: return "GL_COMPRESSED_RGBA_ASTC_4x4_KHR"; break; + case 0x93B1: return "GL_COMPRESSED_RGBA_ASTC_5x4_KHR"; break; + case 0x93B2: return "GL_COMPRESSED_RGBA_ASTC_5x5_KHR"; break; + case 0x93B3: return "GL_COMPRESSED_RGBA_ASTC_6x5_KHR"; break; + case 0x93B4: return "GL_COMPRESSED_RGBA_ASTC_6x6_KHR"; break; + case 0x93B5: return "GL_COMPRESSED_RGBA_ASTC_8x5_KHR"; break; + case 0x93B6: return "GL_COMPRESSED_RGBA_ASTC_8x6_KHR"; break; + case 0x93B7: return "GL_COMPRESSED_RGBA_ASTC_8x8_KHR"; break; + case 0x93B8: return "GL_COMPRESSED_RGBA_ASTC_10x5_KHR"; break; + case 0x93B9: return "GL_COMPRESSED_RGBA_ASTC_10x6_KHR"; break; + case 0x93BA: return "GL_COMPRESSED_RGBA_ASTC_10x8_KHR"; break; + case 0x93BB: return "GL_COMPRESSED_RGBA_ASTC_10x10_KHR"; break; + case 0x93BC: return "GL_COMPRESSED_RGBA_ASTC_12x10_KHR"; break; + case 0x93BD: return "GL_COMPRESSED_RGBA_ASTC_12x12_KHR"; break; + case 0x93D0: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR"; break; + case 0x93D1: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR"; break; + case 0x93D2: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR"; break; + case 0x93D3: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR"; break; + case 0x93D4: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR"; break; + case 0x93D5: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR"; break; + case 0x93D6: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR"; break; + case 0x93D7: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR"; break; + case 0x93D8: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR"; break; + case 0x93D9: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR"; break; + case 0x93DA: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR"; break; + case 0x93DB: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR"; break; + case 0x93DC: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR"; break; + case 0x93DD: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR"; break; + default: return "GL_COMPRESSED_UNKNOWN"; break; + } +} +#endif // RLGL_SHOW_GL_DETAILS_INFO + +#endif // GRAPHICS_API_OPENGL_33 || GRAPHICS_API_OPENGL_ES2 + +// Get pixel data size in bytes (image or texture) +// NOTE: Size depends on pixel format +static int rlGetPixelDataSize(int width, int height, int format) +{ + int dataSize = 0; // Size in bytes + int bpp = 0; // Bits per pixel + + switch (format) + { + case RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: bpp = 8; break; + case RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: + case RL_PIXELFORMAT_UNCOMPRESSED_R5G6B5: + case RL_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: + case RL_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: bpp = 16; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: bpp = 32; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8: bpp = 24; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R32: bpp = 32; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32: bpp = 32*3; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: bpp = 32*4; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R16: bpp = 16; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16: bpp = 16*3; break; + case RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: bpp = 16*4; break; + case RL_PIXELFORMAT_COMPRESSED_DXT1_RGB: + case RL_PIXELFORMAT_COMPRESSED_DXT1_RGBA: + case RL_PIXELFORMAT_COMPRESSED_ETC1_RGB: + case RL_PIXELFORMAT_COMPRESSED_ETC2_RGB: + case RL_PIXELFORMAT_COMPRESSED_PVRT_RGB: + case RL_PIXELFORMAT_COMPRESSED_PVRT_RGBA: bpp = 4; break; + case RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA: + case RL_PIXELFORMAT_COMPRESSED_DXT5_RGBA: + case RL_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: + case RL_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: bpp = 8; break; + case RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: bpp = 2; break; + default: break; + } + + double bytesPerPixel = (double)bpp/8.0; + dataSize = (int)(bytesPerPixel*width*height); // Total data size in bytes + + // Most compressed formats works on 4x4 blocks, + // if texture is smaller, minimum dataSize is 8 or 16 + if ((width < 4) && (height < 4)) + { + if ((format >= RL_PIXELFORMAT_COMPRESSED_DXT1_RGB) && (format < RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA)) dataSize = 8; + else if ((format >= RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA) && (format < RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA)) dataSize = 16; + } + + return dataSize; +} + +// Auxiliar math functions + +// Get float array of matrix data +static rl_float16 rlMatrixToFloatV(Matrix mat) +{ + rl_float16 result = { 0 }; + + result.v[0] = mat.m0; + result.v[1] = mat.m1; + result.v[2] = mat.m2; + result.v[3] = mat.m3; + result.v[4] = mat.m4; + result.v[5] = mat.m5; + result.v[6] = mat.m6; + result.v[7] = mat.m7; + result.v[8] = mat.m8; + result.v[9] = mat.m9; + result.v[10] = mat.m10; + result.v[11] = mat.m11; + result.v[12] = mat.m12; + result.v[13] = mat.m13; + result.v[14] = mat.m14; + result.v[15] = mat.m15; + + return result; +} + +// Get identity matrix +static Matrix rlMatrixIdentity(void) +{ + Matrix result = { + 1.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f + }; + + return result; +} + +// Get two matrix multiplication +// NOTE: When multiplying matrices... the order matters! +static Matrix rlMatrixMultiply(Matrix left, Matrix right) +{ + Matrix result = { 0 }; + + result.m0 = left.m0*right.m0 + left.m1*right.m4 + left.m2*right.m8 + left.m3*right.m12; + result.m1 = left.m0*right.m1 + left.m1*right.m5 + left.m2*right.m9 + left.m3*right.m13; + result.m2 = left.m0*right.m2 + left.m1*right.m6 + left.m2*right.m10 + left.m3*right.m14; + result.m3 = left.m0*right.m3 + left.m1*right.m7 + left.m2*right.m11 + left.m3*right.m15; + result.m4 = left.m4*right.m0 + left.m5*right.m4 + left.m6*right.m8 + left.m7*right.m12; + result.m5 = left.m4*right.m1 + left.m5*right.m5 + left.m6*right.m9 + left.m7*right.m13; + result.m6 = left.m4*right.m2 + left.m5*right.m6 + left.m6*right.m10 + left.m7*right.m14; + result.m7 = left.m4*right.m3 + left.m5*right.m7 + left.m6*right.m11 + left.m7*right.m15; + result.m8 = left.m8*right.m0 + left.m9*right.m4 + left.m10*right.m8 + left.m11*right.m12; + result.m9 = left.m8*right.m1 + left.m9*right.m5 + left.m10*right.m9 + left.m11*right.m13; + result.m10 = left.m8*right.m2 + left.m9*right.m6 + left.m10*right.m10 + left.m11*right.m14; + result.m11 = left.m8*right.m3 + left.m9*right.m7 + left.m10*right.m11 + left.m11*right.m15; + result.m12 = left.m12*right.m0 + left.m13*right.m4 + left.m14*right.m8 + left.m15*right.m12; + result.m13 = left.m12*right.m1 + left.m13*right.m5 + left.m14*right.m9 + left.m15*right.m13; + result.m14 = left.m12*right.m2 + left.m13*right.m6 + left.m14*right.m10 + left.m15*right.m14; + result.m15 = left.m12*right.m3 + left.m13*right.m7 + left.m14*right.m11 + left.m15*right.m15; + + return result; +} + +// Transposes provided matrix +static Matrix rlMatrixTranspose(Matrix mat) +{ + Matrix result = { 0 }; + + result.m0 = mat.m0; + result.m1 = mat.m4; + result.m2 = mat.m8; + result.m3 = mat.m12; + result.m4 = mat.m1; + result.m5 = mat.m5; + result.m6 = mat.m9; + result.m7 = mat.m13; + result.m8 = mat.m2; + result.m9 = mat.m6; + result.m10 = mat.m10; + result.m11 = mat.m14; + result.m12 = mat.m3; + result.m13 = mat.m7; + result.m14 = mat.m11; + result.m15 = mat.m15; + + return result; +} + +// Invert provided matrix +static Matrix rlMatrixInvert(Matrix mat) +{ + Matrix result = { 0 }; + + // Cache the matrix values (speed optimization) + float a00 = mat.m0, a01 = mat.m1, a02 = mat.m2, a03 = mat.m3; + float a10 = mat.m4, a11 = mat.m5, a12 = mat.m6, a13 = mat.m7; + float a20 = mat.m8, a21 = mat.m9, a22 = mat.m10, a23 = mat.m11; + float a30 = mat.m12, a31 = mat.m13, a32 = mat.m14, a33 = mat.m15; + + float b00 = a00*a11 - a01*a10; + float b01 = a00*a12 - a02*a10; + float b02 = a00*a13 - a03*a10; + float b03 = a01*a12 - a02*a11; + float b04 = a01*a13 - a03*a11; + float b05 = a02*a13 - a03*a12; + float b06 = a20*a31 - a21*a30; + float b07 = a20*a32 - a22*a30; + float b08 = a20*a33 - a23*a30; + float b09 = a21*a32 - a22*a31; + float b10 = a21*a33 - a23*a31; + float b11 = a22*a33 - a23*a32; + + // Calculate the invert determinant (inlined to avoid double-caching) + float invDet = 1.0f/(b00*b11 - b01*b10 + b02*b09 + b03*b08 - b04*b07 + b05*b06); + + result.m0 = (a11*b11 - a12*b10 + a13*b09)*invDet; + result.m1 = (-a01*b11 + a02*b10 - a03*b09)*invDet; + result.m2 = (a31*b05 - a32*b04 + a33*b03)*invDet; + result.m3 = (-a21*b05 + a22*b04 - a23*b03)*invDet; + result.m4 = (-a10*b11 + a12*b08 - a13*b07)*invDet; + result.m5 = (a00*b11 - a02*b08 + a03*b07)*invDet; + result.m6 = (-a30*b05 + a32*b02 - a33*b01)*invDet; + result.m7 = (a20*b05 - a22*b02 + a23*b01)*invDet; + result.m8 = (a10*b10 - a11*b08 + a13*b06)*invDet; + result.m9 = (-a00*b10 + a01*b08 - a03*b06)*invDet; + result.m10 = (a30*b04 - a31*b02 + a33*b00)*invDet; + result.m11 = (-a20*b04 + a21*b02 - a23*b00)*invDet; + result.m12 = (-a10*b09 + a11*b07 - a12*b06)*invDet; + result.m13 = (a00*b09 - a01*b07 + a02*b06)*invDet; + result.m14 = (-a30*b03 + a31*b01 - a32*b00)*invDet; + result.m15 = (a20*b03 - a21*b01 + a22*b00)*invDet; + + return result; +} + +#endif // RLGL_IMPLEMENTATION diff --git a/lab16 with raylib/lib/raylib.dll b/raylib files/raylib-5.5_win64_msvc16 opengl33/lib/raylib.dll similarity index 100% rename from lab16 with raylib/lib/raylib.dll rename to raylib files/raylib-5.5_win64_msvc16 opengl33/lib/raylib.dll diff --git a/raylib files/raylib-5.5_win64_msvc16/lib/raylib.lib b/raylib files/raylib-5.5_win64_msvc16 opengl33/lib/raylib.lib similarity index 100% rename from raylib files/raylib-5.5_win64_msvc16/lib/raylib.lib rename to raylib files/raylib-5.5_win64_msvc16 opengl33/lib/raylib.lib diff --git a/lab16 with raylib/lib/raylibdll.lib b/raylib files/raylib-5.5_win64_msvc16 opengl33/lib/raylibdll.lib similarity index 100% rename from lab16 with raylib/lib/raylibdll.lib rename to raylib files/raylib-5.5_win64_msvc16 opengl33/lib/raylibdll.lib diff --git a/raylib files/raylib-5.5_win64_msvc16/lib/raylibdll.lib b/raylib files/raylib-5.5_win64_msvc16/lib/raylibdll.lib deleted file mode 100644 index c21e0447b06b873d56a7256b82fa2634cccc105a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 400560 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 WRIrV+n&nWZ>wGDtTcrMX`2PdkD2hM;

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