|
|
@ -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 |