| 
				
				
				
				 | 
			
			 | 
			
			@ -1,7 +1,7 @@ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			/********************************************************************************************** | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   gif.h by Charlie Tangora [ctangora -at- gmail -dot- com] | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   adapted to C99 and reformatted by Ramon Santamaria (@raysan5) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   rgif.h original implementation by Charlie Tangora [ctangora -at- gmail -dot- com] | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   adapted to C99, reformatted and renamed by Ramon Santamaria (@raysan5) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   This file offers a simple, very limited way to create animated GIFs directly in code. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			* | 
			
		
		
	
	
		
			
				| 
				
				
				
					
						
					
				
				 | 
			
			 | 
			
			@ -17,7 +17,7 @@ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   CONFIGURATION: | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   #define GIF_IMPLEMENTATION | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   #define RGIF_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. | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -56,14 +56,14 @@ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#include <stdio.h>          // Required for: FILE | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			//#define GIF_STATIC | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#ifdef GIF_STATIC | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    #define GIFDEF static              // Functions just visible to module including this file | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			//#define RGIF_STATIC | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#ifdef RGIF_STATIC | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    #define RGIFDEF static              // Functions just visible to module including this file | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#else | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    #ifdef __cplusplus | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        #define GIFDEF extern "C"      // Functions visible from other files (no name mangling of functions in C++) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        #define RGIFDEF extern "C"      // Functions visible from other files (no name mangling of functions in C++) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    #else | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        #define GIFDEF extern          // Functions visible from other files | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        #define RGIFDEF extern          // Functions visible from other files | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    #endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
	
		
			
				| 
				
				
				
					
						
					
				
				 | 
			
			 | 
			
			@ -72,9 +72,9 @@ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			//---------------------------------------------------------------------------------- | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// NOTE: By default use bitDepth = 8, dither = false | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			GIFDEF bool GifBegin(const char *filename, unsigned int width, unsigned int height, unsigned int delay, unsigned int bitDepth, bool dither); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			GIFDEF bool GifWriteFrame(const unsigned char *image, unsigned int width, unsigned int height, unsigned int delay, int bitDepth, bool dither); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			GIFDEF bool GifEnd(); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			RGIFDEF bool GifBegin(const char *filename, unsigned int width, unsigned int height, unsigned int delay, unsigned int bitDepth, bool dither); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			RGIFDEF bool GifWriteFrame(const unsigned char *image, unsigned int width, unsigned int height, unsigned int delay, int bitDepth, bool dither); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			RGIFDEF bool GifEnd(); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif // GIF_H | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
	
		
			
				| 
				
				
				
					
						
					
				
				 | 
			
			 | 
			
			@ -85,7 +85,7 @@ GIFDEF bool GifEnd(); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			************************************************************************************/ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(GIF_IMPLEMENTATION) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(RGIF_IMPLEMENTATION) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#include <stdio.h>          // Required for: FILE, fopen(), fclose() | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#include <string.h>         // Required for: memcpy() | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -186,7 +186,7 @@ static void GifWriteLzwImage(FILE *f, unsigned char *image, unsigned int left, u | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// Creates a gif file | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// NOTE: Initializes internal file pointer (only one gif recording at a time) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// The delay value is the time between frames in hundredths of a second - note that not all viewers pay much attention to this value. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			GIFDEF bool GifBegin(const char *filename, unsigned int width, unsigned int height, unsigned int delay, unsigned int bitDepth, bool dither) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			RGIFDEF bool GifBegin(const char *filename, unsigned int width, unsigned int height, unsigned int delay, unsigned int bitDepth, bool dither) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if _MSC_VER >= 1400 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
				gifFile = 0; | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -248,7 +248,7 @@ GIFDEF bool GifBegin(const char *filename, unsigned int width, unsigned int heig | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// NOTE: gifFile should have been initialized with GifBegin() | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// AFAIK, it is legal to use different bit depths for different frames of an image - | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// this may be handy to save bits in animations that don't change much. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			GIFDEF bool GifWriteFrame(const unsigned char *image, unsigned int width, unsigned int height, unsigned int delay, int bitDepth, bool dither) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			RGIFDEF bool GifWriteFrame(const unsigned char *image, unsigned int width, unsigned int height, unsigned int delay, int bitDepth, bool dither) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (!gifFile) return false; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			     | 
			
		
		
	
	
		
			
				| 
				
				
				
					
						
					
				
				 | 
			
			 | 
			
			@ -268,7 +268,7 @@ GIFDEF bool GifWriteFrame(const unsigned char *image, unsigned int width, unsign | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// Writes the EOF code, closes the file handle, and frees temp memory used by a GIF. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// Many if not most viewers will still display a GIF properly if the EOF code is missing, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// but it's still a good idea to write it out. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			GIFDEF bool GifEnd() | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			RGIFDEF bool GifEnd() | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (!gifFile) return false; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			     | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -910,4 +910,4 @@ static void GifWriteLzwImage(FILE *f, unsigned char *image, unsigned int left, u | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    GIF_TEMP_FREE(codetree); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif // GIF_IMPLEMENTATION | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif // RGIF_IMPLEMENTATION |