aboutsummaryrefslogtreecommitdiffstats
path: root/src/gdisp/gdisp_image_gif.c
diff options
context:
space:
mode:
authorinmarket <andrewh@inmarket.com.au>2015-11-24 09:19:58 +1000
committerinmarket <andrewh@inmarket.com.au>2015-11-24 09:19:58 +1000
commit870901880b30a7f81b2d95a815e89542746d62ab (patch)
tree556309cebd0a3c0eaec4951a1ecdee0db6ebc5ac /src/gdisp/gdisp_image_gif.c
parent0ec1a5e4da8815f6d7c31cf7941b76f3d9fd5e28 (diff)
downloaduGFX-870901880b30a7f81b2d95a815e89542746d62ab.tar.gz
uGFX-870901880b30a7f81b2d95a815e89542746d62ab.tar.bz2
uGFX-870901880b30a7f81b2d95a815e89542746d62ab.zip
Prevent naming conflicts when compiling multiple image formats with GFXSINGLEMAKE
Diffstat (limited to 'src/gdisp/gdisp_image_gif.c')
-rw-r--r--src/gdisp/gdisp_image_gif.c290
1 files changed, 145 insertions, 145 deletions
diff --git a/src/gdisp/gdisp_image_gif.c b/src/gdisp/gdisp_image_gif.c
index 0c1ba2c1..f3e9d8dd 100644
--- a/src/gdisp/gdisp_image_gif.c
+++ b/src/gdisp/gdisp_image_gif.c
@@ -15,20 +15,20 @@
* How big an array to allocate for blitting (in pixels)
* Bigger is faster but uses more RAM.
*/
-#define BLIT_BUFFER_SIZE 32
+#define BLIT_BUFFER_SIZE_GIF 32
// We need a special error to indicate the end of file (which may not actually be an error)
-#define GDISP_IMAGE_EOF ((gdispImageError)-1)
-#define GDISP_IMAGE_LOOP ((gdispImageError)-2)
+#define GDISP_IMAGE_GIF_EOF ((gdispImageError)-1)
+#define GDISP_IMAGE_GIF_LOOP ((gdispImageError)-2)
-#define MAX_CODE_BITS 12
-#define CODE_MAX ((1<<MAX_CODE_BITS)-1) // Maximum legal code value
-#define CODE_FLUSH (CODE_MAX+1) // Illegal code to signal flush
-#define CODE_FIRST (CODE_MAX+2) // Illegal code to signal first
-#define CODE_NONE (CODE_MAX+3) // Illegal code to signal empty
+#define GIF_MAX_CODE_BITS 12
+#define GIF_CODE_MAX ((1<<GIF_MAX_CODE_BITS)-1) // Maximum legal code value
+#define GIF_CODE_FLUSH (GIF_CODE_MAX+1) // Illegal code to signal flush
+#define GIF_CODE_FIRST (GIF_CODE_MAX+2) // Illegal code to signal first
+#define GIF_CODE_NONE (GIF_CODE_MAX+3) // Illegal code to signal empty
// Convert bits to masks for that number of bits
-static const uint16_t BitMask[] = {
+static const uint16_t GifBitMask[] = {
0x0000, 0x0001, 0x0003, 0x0007,
0x000f, 0x001f, 0x003f, 0x007f,
0x00ff, 0x01ff, 0x03ff, 0x07ff,
@@ -36,7 +36,7 @@ static const uint16_t BitMask[] = {
};
// Structure for decoding a single frame
-typedef struct imgdecode {
+typedef struct gifimgdecode {
uint8_t blocksz; // The size of the block currently being processed
uint8_t maxpixel; // The maximum allowed pixel value
uint8_t bitsperpixel;
@@ -50,14 +50,14 @@ typedef struct imgdecode {
uint16_t code_last;
uint32_t shiftdata;
color_t * palette;
- uint8_t buf[BLIT_BUFFER_SIZE]; // Buffer for decoded pixels
- uint16_t prefix[1<<MAX_CODE_BITS]; // The LZW table
- uint8_t suffix[1<<MAX_CODE_BITS]; // So we can trace the codes
- uint8_t stack[1<<MAX_CODE_BITS]; // Decoded pixels might be stacked here
-} imgdecode;
+ uint8_t buf[BLIT_BUFFER_SIZE_GIF]; // Buffer for decoded pixels
+ uint16_t prefix[1<<GIF_MAX_CODE_BITS]; // The LZW table
+ uint8_t suffix[1<<GIF_MAX_CODE_BITS]; // So we can trace the codes
+ uint8_t stack[1<<GIF_MAX_CODE_BITS]; // Decoded pixels might be stacked here
+} gifimgdecode;
// The data on a single frame
-typedef struct imgframe {
+typedef struct gifimgframe {
coord_t x, y; // position relative to full image
coord_t width, height; // size of frame
uint16_t delay; // delay after processing
@@ -72,55 +72,55 @@ typedef struct imgframe {
size_t pospal; // The file position of the palette
size_t posimg; // The file position of the image bits
size_t posend; // The file position of the end of the frame
-} imgframe;
+} gifimgframe;
// The data for a cache
-typedef struct imgcache {
- imgframe frame;
+typedef struct gifimgcache {
+ gifimgframe frame;
color_t * palette; // Local palette
uint8_t * imagebits; // Image bits - only saved when caching
- struct imgcache * next; // Next cached frame
-} imgcache;
+ struct gifimgcache *next; // Next cached frame
+} gifimgcache;
// The data for a dispose area
-typedef struct imgdispose {
+typedef struct gifimgdispose {
uint8_t flags; // Frame flags
uint8_t paltrans; // Transparency
coord_t x, y; // position relative to full image
coord_t width, height; // size of dispose area
-} imgdispose;
-
-typedef struct gdispImagePrivate {
- uint8_t flags; // Flags (global)
- #define GIF_LOOP 0x01 // Loop back to first frame
- #define GIF_LOOPFOREVER 0x02 // Looping is forever
- uint8_t bgcolor; // Background Color (global)
- uint16_t loops; // Remaining frame loops (if animated)
- uint16_t palsize; // Global palette size (global)
- pixel_t *palette; // Global palette (global)
- size_t frame0pos; // The position of the first frame
- imgcache * cache; // The list of cached frames
- imgcache * curcache; // The cache of the current frame (if created)
- imgdecode * decode; // The decode data for the decode in progress
- imgframe frame;
- imgdispose dispose;
- pixel_t buf[BLIT_BUFFER_SIZE]; // Buffer for reading and blitting
- } gdispImagePrivate;
+} gifimgdispose;
+
+typedef struct gdispImagePrivate_GIF {
+ uint8_t flags; // Flags (global)
+ #define GIF_LOOP 0x01 // Loop back to first frame
+ #define GIF_LOOPFOREVER 0x02 // Looping is forever
+ uint8_t bgcolor; // Background Color (global)
+ uint16_t loops; // Remaining frame loops (if animated)
+ uint16_t palsize; // Global palette size (global)
+ pixel_t *palette; // Global palette (global)
+ size_t frame0pos; // The position of the first frame
+ gifimgcache * cache; // The list of cached frames
+ gifimgcache * curcache; // The cache of the current frame (if created)
+ gifimgdecode * decode; // The decode data for the decode in progress
+ gifimgframe frame;
+ gifimgdispose dispose;
+ pixel_t buf[BLIT_BUFFER_SIZE_GIF]; // Buffer for reading and blitting
+ } gdispImagePrivate_GIF;
/**
* Get ready for decoding a frame.
*
* Pre: Frame info has been read.
*/
-static gdispImageError startDecode(gdispImage *img) {
- gdispImagePrivate * priv;
- imgdecode * decode;
- uint16_t cnt;
+static gdispImageError startDecodeGif(gdispImage *img) {
+ gdispImagePrivate_GIF * priv;
+ gifimgdecode * decode;
+ uint16_t cnt;
priv = img->priv;
// We need the decode ram, and possibly a palette
- if (!(decode = (imgdecode *)gdispImageAlloc(img, sizeof(imgdecode)+priv->frame.palsize*sizeof(color_t))))
+ if (!(decode = (gifimgdecode *)gdispImageAlloc(img, sizeof(gifimgdecode)+priv->frame.palsize*sizeof(color_t))))
return GDISP_IMAGE_ERR_NOMEMORY;
// We currently have not read any image data block
@@ -148,26 +148,26 @@ static gdispImageError startDecode(gdispImage *img) {
// Get the initial lzw code size and values
gfileSetPos(img->f, priv->frame.posimg);
- if (gfileRead(img->f, &decode->bitsperpixel, 1) != 1 || decode->bitsperpixel >= MAX_CODE_BITS)
+ if (gfileRead(img->f, &decode->bitsperpixel, 1) != 1 || decode->bitsperpixel >= GIF_MAX_CODE_BITS)
goto baddatacleanup;
decode->code_clear = 1 << decode->bitsperpixel;
decode->code_eof = decode->code_clear + 1;
decode->code_max = decode->code_clear + 2;
- decode->code_last = CODE_NONE;
+ decode->code_last = GIF_CODE_NONE;
decode->bitspercode = decode->bitsperpixel+1;
decode->maxcodesz = 1 << decode->bitspercode;
decode->shiftbits = 0;
decode->shiftdata = 0;
decode->stackcnt = 0;
- for(cnt = 0; cnt <= CODE_MAX; cnt++)
- decode->prefix[cnt] = CODE_NONE;
+ for(cnt = 0; cnt <= GIF_CODE_MAX; cnt++)
+ decode->prefix[cnt] = GIF_CODE_NONE;
// All ready to go
priv->decode = decode;
return GDISP_IMAGE_ERR_OK;
baddatacleanup:
- gdispImageFree(img, decode, sizeof(imgdecode)+priv->frame.palsize*sizeof(color_t));
+ gdispImageFree(img, decode, sizeof(gifimgdecode)+priv->frame.palsize*sizeof(color_t));
return GDISP_IMAGE_ERR_BADDATA;
}
@@ -176,24 +176,24 @@ baddatacleanup:
*
* Pre: Frame info has been read.
*/
-static void stopDecode(gdispImage *img) {
- gdispImagePrivate * priv;
+static void stopDecodeGif(gdispImage *img) {
+ gdispImagePrivate_GIF * priv;
priv = img->priv;
// Free the decode data
if (priv->decode) {
- gdispImageFree(img, (void *)priv->decode, sizeof(imgdecode)+priv->frame.palsize*sizeof(color_t));
+ gdispImageFree(img, (void *)priv->decode, sizeof(gifimgdecode)+priv->frame.palsize*sizeof(color_t));
priv->decode = 0;
}
}
-static uint16_t getPrefix(imgdecode *decode, uint16_t code) {
+static uint16_t getPrefixGif(gifimgdecode *decode, uint16_t code) {
uint16_t i;
- for(i=0; code > decode->code_clear && i <= CODE_MAX; i++, code = decode->prefix[code]) {
- if (code > CODE_MAX)
- return CODE_NONE;
+ for(i=0; code > decode->code_clear && i <= GIF_CODE_MAX; i++, code = decode->prefix[code]) {
+ if (code > GIF_CODE_MAX)
+ return GIF_CODE_NONE;
}
return code;
}
@@ -203,16 +203,16 @@ static uint16_t getPrefix(imgdecode *decode, uint16_t code) {
*
* Pre: We are ready for decoding.
*
- * Return: The number of pixels decoded 0 .. BLIT_BUFFER_SIZE-1. 0 means EOF
+ * Return: The number of pixels decoded 0 .. BLIT_BUFFER_SIZE_GIF-1. 0 means EOF
*
* Note: The resulting pixels are stored in decode->buf
*/
-static uint16_t getbytes(gdispImage *img) {
- gdispImagePrivate * priv;
- imgdecode * decode;
- uint16_t cnt;
- uint16_t code, prefix;
- uint8_t bdata;
+static uint16_t getBytesGif(gdispImage *img) {
+ gdispImagePrivate_GIF * priv;
+ gifimgdecode * decode;
+ uint16_t cnt;
+ uint16_t code, prefix;
+ uint8_t bdata;
priv = img->priv;
decode = priv->decode;
@@ -243,16 +243,16 @@ static uint16_t getbytes(gdispImage *img) {
decode->shiftdata |= ((unsigned long)bdata) << decode->shiftbits;
decode->shiftbits += 8;
}
- code = decode->shiftdata & BitMask[decode->bitspercode];
+ code = decode->shiftdata & GifBitMask[decode->bitspercode];
decode->shiftdata >>= decode->bitspercode;
decode->shiftbits -= decode->bitspercode;
/**
* If code cannot fit into bitspercode bits we must raise its size.
- * Note that codes above CODE_MAX are used for special signaling.
- * If we're using MAX_CODE_BITS bits already and we're at the max code, just
+ * Note that codes above GIF_CODE_MAX are used for special signaling.
+ * If we're using GIF_MAX_CODE_BITS bits already and we're at the max code, just
* keep using the table as it is, don't increment decode->bitspercode.
*/
- if (decode->code_max < CODE_MAX + 2 && ++decode->code_max > decode->maxcodesz && decode->bitspercode < MAX_CODE_BITS) {
+ if (decode->code_max < GIF_CODE_MAX + 2 && ++decode->code_max > decode->maxcodesz && decode->bitspercode < GIF_MAX_CODE_BITS) {
decode->maxcodesz <<= 1;
decode->bitspercode++;
}
@@ -271,12 +271,12 @@ static uint16_t getbytes(gdispImage *img) {
if (code == decode->code_clear) {
// Start again
- for(prefix = 0; prefix <= CODE_MAX; prefix++)
- decode->prefix[prefix] = CODE_NONE;
+ for(prefix = 0; prefix <= GIF_CODE_MAX; prefix++)
+ decode->prefix[prefix] = GIF_CODE_NONE;
decode->code_max = decode->code_eof + 1;
decode->bitspercode = decode->bitsperpixel + 1;
decode->maxcodesz = 1 << decode->bitspercode;
- decode->code_last = CODE_NONE;
+ decode->code_last = GIF_CODE_NONE;
continue;
}
@@ -290,7 +290,7 @@ static uint16_t getbytes(gdispImage *img) {
* valid pixel while pushing the suffix pixels on the stack.
* If done, pop the stack in reverse order adding the pixels
*/
- if (decode->prefix[code] != CODE_NONE)
+ if (decode->prefix[code] != GIF_CODE_NONE)
prefix = code;
/**
@@ -301,34 +301,34 @@ static uint16_t getbytes(gdispImage *img) {
*/
else if (code == decode->code_max - 2 && decode->stackcnt < sizeof(decode->stack)) {
prefix = decode->code_last;
- decode->suffix[decode->code_max - 2] = decode->stack[decode->stackcnt++] = getPrefix(decode, decode->code_last);
+ decode->suffix[decode->code_max - 2] = decode->stack[decode->stackcnt++] = getPrefixGif(decode, decode->code_last);
} else
return 0;
/**
- * If the image is OK we should not get a CODE_NONE while tracing.
+ * If the image is OK we should not get a GIF_CODE_NONE while tracing.
* To prevent looping with a bad image we use StackPtr as loop counter
* and stop before overflowing Stack[].
*/
- while (decode->stackcnt < sizeof(decode->stack) && prefix > decode->code_clear && prefix <= CODE_MAX) {
+ while (decode->stackcnt < sizeof(decode->stack) && prefix > decode->code_clear && prefix <= GIF_CODE_MAX) {
decode->stack[decode->stackcnt++] = decode->suffix[prefix];
prefix = decode->prefix[prefix];
}
- if (decode->stackcnt >= sizeof(decode->stack) || prefix > CODE_MAX)
+ if (decode->stackcnt >= sizeof(decode->stack) || prefix > GIF_CODE_MAX)
return 0;
/* Push the last character on stack: */
decode->stack[decode->stackcnt++] = prefix;
}
- if (decode->code_last != CODE_NONE && decode->prefix[decode->code_max - 2] == CODE_NONE) {
+ if (decode->code_last != GIF_CODE_NONE && decode->prefix[decode->code_max - 2] == GIF_CODE_NONE) {
decode->prefix[decode->code_max - 2] = decode->code_last;
/* Only allowed if code is exactly the running code:
* In that case code = XXXCode, CrntCode or the
* prefix code is last code and the suffix char is
* exactly the prefix of last code! */
- decode->suffix[decode->code_max - 2] = getPrefix(decode, code == decode->code_max - 2 ? decode->code_last : code);
+ decode->suffix[decode->code_max - 2] = getPrefixGif(decode, code == decode->code_max - 2 ? decode->code_last : code);
}
decode->code_last = code;
}
@@ -340,11 +340,11 @@ static uint16_t getbytes(gdispImage *img) {
*
* Pre: The file position is at the start of the frame.
*/
-static gdispImageError initFrame(gdispImage *img) {
- gdispImagePrivate * priv;
- imgcache * cache;
- uint8_t blocktype;
- uint8_t blocksz;
+static gdispImageError initFrameGif(gdispImage *img) {
+ gdispImagePrivate_GIF * priv;
+ gifimgcache * cache;
+ uint8_t blocktype;
+ uint8_t blocksz;
priv = img->priv;
@@ -482,16 +482,16 @@ static gdispImageError initFrame(gdispImage *img) {
case 0x3B: //';' - TERMINATE_RECORD_TYPE;
// Are we an looping animation
if (!(priv->flags & GIF_LOOP))
- return GDISP_IMAGE_EOF;
+ return GDISP_IMAGE_GIF_EOF;
if (!(priv->flags & GIF_LOOPFOREVER)) {
if (!priv->loops)
- return GDISP_IMAGE_EOF;
+ return GDISP_IMAGE_GIF_EOF;
priv->loops--;
}
// Seek back to frame0
gfileSetPos(img->f, priv->frame0pos);
- return GDISP_IMAGE_LOOP;
+ return GDISP_IMAGE_GIF_LOOP;
default: // UNDEFINED_RECORD_TYPE;
return GDISP_IMAGE_ERR_UNSUPPORTED;
@@ -500,9 +500,9 @@ static gdispImageError initFrame(gdispImage *img) {
}
void gdispImageClose_GIF(gdispImage *img) {
- gdispImagePrivate * priv;
- imgcache * cache;
- imgcache * ncache;
+ gdispImagePrivate_GIF * priv;
+ gifimgcache * cache;
+ gifimgcache * ncache;
priv = img->priv;
if (priv) {
@@ -510,18 +510,18 @@ void gdispImageClose_GIF(gdispImage *img) {
cache = priv->cache;
while(cache) {
ncache = cache->next;
- gdispImageFree(img, (void *)cache, sizeof(imgcache)+cache->frame.width*cache->frame.height+cache->frame.palsize*sizeof(color_t));
+ gdispImageFree(img, (void *)cache, sizeof(gifimgcache)+cache->frame.width*cache->frame.height+cache->frame.palsize*sizeof(color_t));
cache = ncache;
}
if (priv->palette)
gdispImageFree(img, (void *)priv->palette, priv->palsize*sizeof(color_t));
- gdispImageFree(img, (void *)img->priv, sizeof(gdispImagePrivate));
+ gdispImageFree(img, (void *)img->priv, sizeof(gdispImagePrivate_GIF));
img->priv = 0;
}
}
gdispImageError gdispImageOpen_GIF(gdispImage *img) {
- gdispImagePrivate *priv;
+ gdispImagePrivate_GIF *priv;
uint8_t hdr[6];
uint16_t aword;
@@ -539,7 +539,7 @@ gdispImageError gdispImageOpen_GIF(gdispImage *img) {
img->flags = 0;
/* Allocate our private area */
- if (!(img->priv = (gdispImagePrivate *)gdispImageAlloc(img, sizeof(gdispImagePrivate))))
+ if (!(img->priv = (gdispImagePrivate_GIF *)gdispImageAlloc(img, sizeof(gdispImagePrivate_GIF))))
return GDISP_IMAGE_ERR_NOMEMORY;
/* Initialise the essential bits in the private area */
@@ -579,7 +579,7 @@ gdispImageError gdispImageOpen_GIF(gdispImage *img) {
priv->frame0pos = gfileGetPos(img->f);
// Read the first frame descriptor
- switch(initFrame(img)) {
+ switch(initFrameGif(img)) {
case GDISP_IMAGE_ERR_OK: // Everything OK
img->type = GDISP_IMAGE_TYPE_GIF;
return GDISP_IMAGE_ERR_OK;
@@ -590,8 +590,8 @@ gdispImageError gdispImageOpen_GIF(gdispImage *img) {
nomemcleanup:
gdispImageClose_GIF(img); // Clean up the private data area
return GDISP_IMAGE_ERR_NOMEMORY;
- case GDISP_IMAGE_EOF: // We should have a frame but we don't seem to
- case GDISP_IMAGE_LOOP: // We should have a frame but we don't seem to
+ case GDISP_IMAGE_GIF_EOF: // We should have a frame but we don't seem to
+ case GDISP_IMAGE_GIF_LOOP: // We should have a frame but we don't seem to
case GDISP_IMAGE_ERR_BADDATA: // Oops - something wrong with the data
default:
baddatacleanup:
@@ -601,13 +601,13 @@ gdispImageError gdispImageOpen_GIF(gdispImage *img) {
}
gdispImageError gdispImageCache_GIF(gdispImage *img) {
- gdispImagePrivate * priv;
- imgcache * cache;
- imgdecode * decode;
- uint8_t * p;
- uint8_t * q;
- coord_t mx, my;
- uint16_t cnt;
+ gdispImagePrivate_GIF * priv;
+ gifimgcache * cache;
+ gifimgdecode * decode;
+ uint8_t * p;
+ uint8_t * q;
+ coord_t mx, my;
+ uint16_t cnt;
/* If we are already cached - just return OK */
priv = img->priv;
@@ -615,7 +615,7 @@ gdispImageError gdispImageCache_GIF(gdispImage *img) {
return GDISP_IMAGE_ERR_OK;
/* We need to allocate the frame, the palette and bits for the image */
- if (!(cache = (imgcache *)gdispImageAlloc(img, sizeof(imgcache) + priv->frame.palsize*sizeof(color_t) + priv->frame.width*priv->frame.height)))
+ if (!(cache = (gifimgcache *)gdispImageAlloc(img, sizeof(gifimgcache) + priv->frame.palsize*sizeof(color_t) + priv->frame.width*priv->frame.height)))
return GDISP_IMAGE_ERR_NOMEMORY;
/* Initialise the cache */
@@ -625,7 +625,7 @@ gdispImageError gdispImageCache_GIF(gdispImage *img) {
cache->next = 0;
/* Start the decode */
- switch(startDecode(img)) {
+ switch(startDecodeGif(img)) {
case GDISP_IMAGE_ERR_OK: break;
case GDISP_IMAGE_ERR_NOMEMORY: goto nomemcleanup;
case GDISP_IMAGE_ERR_BADDATA:
@@ -651,7 +651,7 @@ gdispImageError gdispImageCache_GIF(gdispImage *img) {
for(p=cache->imagebits, my=0; my < cache->frame.height; my+=8, p += cache->frame.width*7) {
for(mx=0; mx < cache->frame.width; mx++) {
if (!cnt) {
- if (!(cnt = getbytes(img))) {
+ if (!(cnt = getBytesGif(img))) {
// Sometimes the image EOF is a bit early - treat the rest as transparent
if (decode->code_last != decode->code_eof)
goto baddatacleanup;
@@ -668,7 +668,7 @@ gdispImageError gdispImageCache_GIF(gdispImage *img) {
for(p=cache->imagebits+cache->frame.width*4, my=4; my < cache->frame.height; my+=8, p += cache->frame.width*7) {
for(mx=0; mx < cache->frame.width; mx++) {
if (!cnt) {
- if (!(cnt = getbytes(img))) {
+ if (!(cnt = getBytesGif(img))) {
// Sometimes the image EOF is a bit early - treat the rest as transparent
if (decode->code_last != decode->code_eof)
goto baddatacleanup;
@@ -685,7 +685,7 @@ gdispImageError gdispImageCache_GIF(gdispImage *img) {
for(p=cache->imagebits+cache->frame.width*2, my=2; my < cache->frame.height; my+=4, p += cache->frame.width*3) {
for(mx=0; mx < cache->frame.width; mx++) {
if (!cnt) {
- if (!(cnt = getbytes(img))) {
+ if (!(cnt = getBytesGif(img))) {
// Sometimes the image EOF is a bit early - treat the rest as transparent
if (decode->code_last != decode->code_eof)
goto baddatacleanup;
@@ -702,7 +702,7 @@ gdispImageError gdispImageCache_GIF(gdispImage *img) {
for(p=cache->imagebits+cache->frame.width, my=1; my < cache->frame.height; my+=2, p += cache->frame.width) {
for(mx=0; mx < cache->frame.width; mx++) {
if (!cnt) {
- if (!(cnt = getbytes(img))) {
+ if (!(cnt = getBytesGif(img))) {
// Sometimes the image EOF is a bit early - treat the rest as transparent
if (decode->code_last != decode->code_eof)
goto baddatacleanup;
@@ -721,7 +721,7 @@ gdispImageError gdispImageCache_GIF(gdispImage *img) {
for(my=0; my < cache->frame.height; my++) {
for(mx=0; mx < cache->frame.width; mx++) {
if (!cnt) {
- if (!(cnt = getbytes(img))) {
+ if (!(cnt = getBytesGif(img))) {
// Sometimes the image EOF is a bit early - treat the rest as transparent
if (decode->code_last != decode->code_eof)
goto baddatacleanup;
@@ -736,7 +736,7 @@ gdispImageError gdispImageCache_GIF(gdispImage *img) {
}
}
// We could be pedantic here but extra bytes won't hurt us
- while(getbytes(img));
+ while(getBytesGif(img));
priv->frame.posend = cache->frame.posend = gfileGetPos(img->f);
// Save everything
@@ -747,7 +747,7 @@ gdispImageError gdispImageCache_GIF(gdispImage *img) {
cache->next = priv->cache;
priv->cache = cache;
} else {
- imgcache *pc;
+ gifimgcache *pc;
for(pc = priv->cache; pc; pc = pc->next) {
if (!pc->next || pc->next->frame.posstart > cache->frame.posstart) {
@@ -757,27 +757,27 @@ gdispImageError gdispImageCache_GIF(gdispImage *img) {
}
}
}
- stopDecode(img);
+ stopDecodeGif(img);
return GDISP_IMAGE_ERR_OK;
nomemcleanup:
- stopDecode(img);
- gdispImageFree(img, cache, sizeof(imgcache) + priv->frame.palsize*sizeof(color_t) + priv->frame.width*priv->frame.height);
+ stopDecodeGif(img);
+ gdispImageFree(img, cache, sizeof(gifimgcache) + priv->frame.palsize*sizeof(color_t) + priv->frame.width*priv->frame.height);
return GDISP_IMAGE_ERR_NOMEMORY;
baddatacleanup:
- stopDecode(img);
- gdispImageFree(img, cache, sizeof(imgcache) + priv->frame.palsize*sizeof(color_t) + priv->frame.width*priv->frame.height);
+ stopDecodeGif(img);
+ gdispImageFree(img, cache, sizeof(gifimgcache) + priv->frame.palsize*sizeof(color_t) + priv->frame.width*priv->frame.height);
return GDISP_IMAGE_ERR_BADDATA;
}
gdispImageError gdispGImageDraw_GIF(GDisplay *g, gdispImage *img, coord_t x, coord_t y, coord_t cx, coord_t cy, coord_t sx, coord_t sy) {
- gdispImagePrivate * priv;
- imgdecode * decode;
- uint8_t * q = 0;
- coord_t mx, my, fx, fy;
- uint16_t cnt, gcnt;
- uint8_t col;
+ gdispImagePrivate_GIF * priv;
+ gifimgdecode * decode;
+ uint8_t * q = 0;
+ coord_t mx, my, fx, fy;
+ uint16_t cnt, gcnt;
+ uint8_t col;
priv = img->priv;
@@ -820,7 +820,7 @@ gdispImageError gdispGImageDraw_GIF(GDisplay *g, gdispImage *img, coord_t x, coo
/* Draw from the image cache - if it exists */
if (priv->curcache) {
- imgcache * cache;
+ gifimgcache * cache;
cache = priv->curcache;
q = cache->imagebits+priv->frame.width*sy+sx;
@@ -838,7 +838,7 @@ gdispImageError gdispGImageDraw_GIF(GDisplay *g, gdispImage *img, coord_t x, coo
continue;
}
priv->buf[gcnt++] = cache->palette[col];
- if (gcnt >= BLIT_BUFFER_SIZE) {
+ if (gcnt >= BLIT_BUFFER_SIZE_GIF) {
// We have run out of buffer - dump it to the display
gdispGBlitArea(g, x+mx-sx-gcnt+1, y+my-sy, gcnt, 1, 0, 0, gcnt, priv->buf);
gcnt = 0;
@@ -856,7 +856,7 @@ gdispImageError gdispGImageDraw_GIF(GDisplay *g, gdispImage *img, coord_t x, coo
}
/* Start the decode */
- switch(startDecode(img)) {
+ switch(startDecodeGif(img)) {
case GDISP_IMAGE_ERR_OK: break;
case GDISP_IMAGE_ERR_NOMEMORY: return GDISP_IMAGE_ERR_NOMEMORY;
case GDISP_IMAGE_ERR_BADDATA:
@@ -871,7 +871,7 @@ gdispImageError gdispGImageDraw_GIF(GDisplay *g, gdispImage *img, coord_t x, coo
for(my=0; my < priv->frame.height; my+=8) {
for(gcnt=0, mx=0; mx < priv->frame.width; mx++, q++, cnt--) {
if (!cnt) {
- if (!(cnt = getbytes(img))) {
+ if (!(cnt = getBytesGif(img))) {
// Sometimes the image EOF is a bit early - treat the rest as transparent
if (decode->code_last != decode->code_eof)
goto baddatacleanup;
@@ -892,7 +892,7 @@ gdispImageError gdispGImageDraw_GIF(GDisplay *g, gdispImage *img, coord_t x, coo
continue;
}
priv->buf[gcnt++] = decode->palette[col];
- if (gcnt >= BLIT_BUFFER_SIZE) {
+ if (gcnt >= BLIT_BUFFER_SIZE_GIF) {
// We have run out of buffer - dump it to the display
gdispGBlitArea(g, x+mx-sx-gcnt+1, y+my-sy, gcnt, 1, 0, 0, gcnt, priv->buf);
gcnt = 0;
@@ -917,7 +917,7 @@ gdispImageError gdispGImageDraw_GIF(GDisplay *g, gdispImage *img, coord_t x, coo
for(my=4; my < priv->frame.height; my+=8) {
for(gcnt=0, mx=0; mx < priv->frame.width; mx++, q++, cnt--) {
if (!cnt) {
- if (!(cnt = getbytes(img))) {
+ if (!(cnt = getBytesGif(img))) {
// Sometimes the image EOF is a bit early - treat the rest as transparent
if (decode->code_last != decode->code_eof)
goto baddatacleanup;
@@ -938,7 +938,7 @@ gdispImageError gdispGImageDraw_GIF(GDisplay *g, gdispImage *img, coord_t x, coo
continue;
}
priv->buf[gcnt++] = decode->palette[col];
- if (gcnt >= BLIT_BUFFER_SIZE) {
+ if (gcnt >= BLIT_BUFFER_SIZE_GIF) {
// We have run out of buffer - dump it to the display
gdispGBlitArea(g, x+mx-sx-gcnt+1, y+my-sy, gcnt, 1, 0, 0, gcnt, priv->buf);
gcnt = 0;
@@ -963,7 +963,7 @@ gdispImageError gdispGImageDraw_GIF(GDisplay *g, gdispImage *img, coord_t x, coo
for(my=2; my < priv->frame.height; my+=4) {
for(gcnt=0, mx=0; mx < priv->frame.width; mx++, q++, cnt--) {
if (!cnt) {
- if (!(cnt = getbytes(img))) {
+ if (!(cnt = getBytesGif(img))) {
// Sometimes the image EOF is a bit early - treat the rest as transparent
if (decode->code_last != decode->code_eof)
goto baddatacleanup;
@@ -984,7 +984,7 @@ gdispImageError gdispGImageDraw_GIF(GDisplay *g, gdispImage *img, coord_t x, coo
continue;
}
priv->buf[gcnt++] = decode->palette[col];
- if (gcnt >= BLIT_BUFFER_SIZE) {
+ if (gcnt >= BLIT_BUFFER_SIZE_GIF) {
// We have run out of buffer - dump it to the display
gdispGBlitArea(g, x+mx-sx-gcnt+1, y+my-sy, gcnt, 1, 0, 0, gcnt, priv->buf);
gcnt = 0;
@@ -1009,7 +1009,7 @@ gdispImageError gdispGImageDraw_GIF(GDisplay *g, gdispImage *img, coord_t x, coo
for(my=1; my < priv->frame.height; my+=2) {
for(gcnt=0, mx=0; mx < priv->frame.width; mx++, q++, cnt--) {
if (!cnt) {
- if (!(cnt = getbytes(img))) {
+ if (!(cnt = getBytesGif(img))) {
// Sometimes the image EOF is a bit early - treat the rest as transparent
if (decode->code_last != decode->code_eof)
goto baddatacleanup;
@@ -1030,7 +1030,7 @@ gdispImageError gdispGImageDraw_GIF(GDisplay *g, gdispImage *img, coord_t x, coo
continue;
}
priv->buf[gcnt++] = decode->palette[col];
- if (gcnt >= BLIT_BUFFER_SIZE) {
+ if (gcnt >= BLIT_BUFFER_SIZE_GIF) {
// We have run out of buffer - dump it to the display
gdispGBlitArea(g, x+mx-sx-gcnt+1, y+my-sy, gcnt, 1, 0, 0, gcnt, priv->buf);
gcnt = 0;
@@ -1056,7 +1056,7 @@ gdispImageError gdispGImageDraw_GIF(GDisplay *g, gdispImage *img, coord_t x, coo
for(my=0; my < priv->frame.height; my++) {
for(gcnt=0, mx=0; mx < priv->frame.width; mx++, q++, cnt--) {
if (!cnt) {
- if (!(cnt = getbytes(img))) {
+ if (!(cnt = getBytesGif(img))) {
// Sometimes the image EOF is a bit early - treat the rest as transparent
if (decode->code_last != decode->code_eof)
goto baddatacleanup;
@@ -1077,7 +1077,7 @@ gdispImageError gdispGImageDraw_GIF(GDisplay *g, gdispImage *img, coord_t x, coo
continue;
}
priv->buf[gcnt++] = decode->palette[col];
- if (gcnt >= BLIT_BUFFER_SIZE) {
+ if (gcnt >= BLIT_BUFFER_SIZE_GIF) {
// We have run out of buffer - dump it to the display
gdispGBlitArea(g, x+mx-sx-gcnt+1, y+my-sy, gcnt, 1, 0, 0, gcnt, priv->buf);
gcnt = 0;
@@ -1100,21 +1100,21 @@ gdispImageError gdispGImageDraw_GIF(GDisplay *g, gdispImage *img, coord_t x, coo
}
}
// We could be pedantic here but extra bytes won't hurt us
- while (getbytes(img));
+ while (getBytesGif(img));
priv->frame.posend = gfileGetPos(img->f);
- stopDecode(img);
+ stopDecodeGif(img);
return GDISP_IMAGE_ERR_OK;
baddatacleanup:
- stopDecode(img);
+ stopDecodeGif(img);
return GDISP_IMAGE_ERR_BADDATA;
}
delaytime_t gdispImageNext_GIF(gdispImage *img) {
- gdispImagePrivate * priv;
- delaytime_t delay;
- uint8_t blocksz;
+ gdispImagePrivate_GIF * priv;
+ delaytime_t delay;
+ uint8_t blocksz;
priv = img->priv;
@@ -1140,12 +1140,12 @@ delaytime_t gdispImageNext_GIF(gdispImage *img) {
// Read the next frame descriptor
for(blocksz=0; blocksz < 2; blocksz++) { // 2 loops max to prevent cycling forever with a bad file
- switch(initFrame(img)) {
+ switch(initFrameGif(img)) {
case GDISP_IMAGE_ERR_OK: // Everything OK
return delay;
- case GDISP_IMAGE_LOOP: // Back to the beginning
+ case GDISP_IMAGE_GIF_LOOP: // Back to the beginning
break;
- case GDISP_IMAGE_EOF: // The real End-Of-File
+ case GDISP_IMAGE_GIF_EOF: // The real End-Of-File
case GDISP_IMAGE_ERR_BADDATA: // Oops - something wrong with the data
case GDISP_IMAGE_ERR_NOMEMORY: // Out of Memory
case GDISP_IMAGE_ERR_UNSUPPORTED: // Unsupported