| 
				
				
				
				 | 
			
			 | 
			
			@ -1,8 +1,9 @@ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			/******************************************************************************************* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   raygui n">v1.2 - IMGUI (Immedite Mode GUI) library for raylib (https://github.com/raysan5/raylib) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   raygui mf">1.0 - IMGUI (Immedite Mode GUI) library for raylib (https://github.com/raysan5/raylib) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   raygui is a library for creating simple IMGUI interfaces. It provides a set of basic components: | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   raygui is a library for creating simple IMGUI interfaces using raylib.  | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   It provides a set of basic components: | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*       - Label | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*       - Button | 
			
		
		
	
	
		
			
				| 
				
				
				
					
						
					
				
				 | 
			
			 | 
			
			@ -16,31 +17,51 @@ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*       - Spinner | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*       - TextBox | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   It also provides a set of functions for styling the components based on a set of properties. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   USAGE: | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*    | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   Include this file in any C/C++ file that requires it; in ONLY one of them, write: | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*       #define RAYGUI_IMPLEMENTATION | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   before the #include of this file. This expands out the actual implementation into that file. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*    | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   It also provides a set of functions for styling the components based on its properties (size, color). | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*  | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   CONFIGURATION: | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*    | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   You can #define RAYGUI_STANDALONE to avoid raylib.h inclusion (not dependant on raylib functions and types). | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*       NOTE: Some external funtions are required for drawing and input management, check implementation code. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   #define RAYGUI_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 RAYGUI_STATIC (defined by default) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*       The generated implementation will stay private inside implementation file and all  | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*       internal symbols and functions will only be visible inside that file. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   #define RAYGUI_STANDALONE | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*       Avoid raylib.h header inclusion in this file. Data types defined on raylib are defined | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*       internally in the library and input management and drawing functions must be provided by | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*       the user (check library implementation for further details). | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   You can #define RAY_MALLOC() to replace malloc() and free() function by your own. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   #define RAYGUI_MALLOC() | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   #define RAYGUI_FREE() | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*       You can define your own malloc/free implementation replacing stdlib.h malloc()/free() functions. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*       Otherwise it will include stdlib.h and use the C standard library malloc()/free() function. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*        | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   LIMITATIONS:  | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   You can #define RAYGUI_STATIC to make the implementation private to the file that generates the implementation, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*       // TODO. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   VERSIONS AND CREDITS: | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   l">VERSIONS: | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   1.2 (07-Jun-2016) Converted to header-only by Ramon Santamaria | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   1.1 (07-Mar-2016) Reviewed and expanded by Albert Martos, Ian Eito, Sergio Martinez and Ramon Santamaria. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   1.0 (27-Aug-2015) Initial release. Implemented by Kevin Gato, Daniel Nicolás and Ramon Santamaria. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   1.0 (07-Jun-2016) Converted to header-only by Ramon Santamaria. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   0.9 (07-Mar-2016) Reviewed and tested by Albert Martos, Ian Eito, Sergio Martinez and Ramon Santamaria. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   0.8 (27-Aug-2015) Initial release. Implemented by Kevin Gato, Daniel Nicolás and Ramon Santamaria. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   CONTRIBUTORS: | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*       Ramon Santamaria: Functions design and naming conventions. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*       Kevin Gato: Initial implementation of basic components. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*       Daniel Nicolas: Initial implementation of basic components. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*       Albert Martos: Review and testing of library. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*       Ian Eito: Review and testing of the library. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*       Sergio Martinez: Review and testing of the library. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   LICENSE: zlib/libpng | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   Copyright (c) 2015-2016 emegeme (@emegemegames) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   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. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			* | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -355,29 +376,27 @@ RAYGUIDEF int GetStyleProperty(int guiProperty);                          // Get | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif // RAYGUI_H | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			/********************************************************************************************************* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			/*********************************************************************************** | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*       RAYGUI IMPLEMENTATION | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   RAYGUI IMPLEMENTATION | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			***********************************************************************************o">***********************/ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			************************************************************************************/ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(RAYGUI_IMPLEMENTATION) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#include <stdio.h>      // Required for: FILE, fopen(), fclose(), fprintf(), feof(), fscanf() | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                        // NOTE: Those functions are only used in SaveGuiStyle() and LoadGuiStyle() | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#include <stdio.h>          // Required for: FILE, fopen(), fclose(), fprintf(), feof(), fscanf() | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                            // NOTE: Those functions are only used in SaveGuiStyle() and LoadGuiStyle() | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                         | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#include <stdlib.h>     // Required for: malloc(), free() [Used only on LoadGuiStyle()] | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#include <string.h>     // Required for: strcmp() [Used only on LoadGuiStyle()] | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#include <stdarg.h>     // Required for: va_list, va_start(), vfprintf(), va_end() | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			/* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// NOTE: Example on how to define custom functions | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if !defined(RAY_MALLOC) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    #include <stdlib.h> | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    #define RAY_MALLOC(size,c) malloc(size) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    #define RAY_FREE(ptr,c) free(ptr) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// Check if custom malloc/free functions defined, if not, using standard ones | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if !defined(RAYGUI_MALLOC) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    #include <stdlib.h>     // Required for: malloc(), free() [Used only on LoadGuiStyle()] | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			     | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    #define RAYGUI_MALLOC(size)  malloc(size) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    #define RAYGUI_FREE(ptr)     free(ptr) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*/ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#include <string.h>         // Required for: strcmp() [Used only on LoadGuiStyle()] | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#include <stdarg.h>         // Required for: va_list, va_start(), vfprintf(), va_end() | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			//---------------------------------------------------------------------------------- | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// Defines and Macros | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -1272,7 +1291,7 @@ RAYGUIDEF void LoadGuiStyle(const char *fileName) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        int value; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } StyleProperty; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			     | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    StyleProperty *styleProp = (StyleProperty *)malloc(MAX_STYLE_PROPERTIES*sizeof(StyleProperty));;  | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    StyleProperty *styleProp = (StyleProperty *)RAYGUI_MALLOC(MAX_STYLE_PROPERTIES*sizeof(StyleProperty));;  | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    int counter = 0; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			     | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    FILE *styleFile = fopen(fileName, "rt"); | 
			
		
		
	
	
		
			
				| 
				
				
				
					
						
					
				
				 | 
			
			 | 
			
			@ -1297,7 +1316,7 @@ RAYGUIDEF void LoadGuiStyle(const char *fileName) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			     | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    free(styleProp); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    RAYGUI_FREE(styleProp); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// Set one style property value | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
				
				 | 
			
			 | 
			
			
 |