aboutsummaryrefslogtreecommitdiffstats
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
parent0ec1a5e4da8815f6d7c31cf7941b76f3d9fd5e28 (diff)
downloaduGFX-870901880b30a7f81b2d95a815e89542746d62ab.tar.gz
uGFX-870901880b30a7f81b2d95a815e89542746d62ab.tar.bz2
uGFX-870901880b30a7f81b2d95a815e89542746d62ab.zip
Prevent naming conflicts when compiling multiple image formats with GFXSINGLEMAKE
-rw-r--r--src/gdisp/gdisp_image_bmp.c40
-rw-r--r--src/gdisp/gdisp_image_gif.c290
-rw-r--r--src/gdisp/gdisp_image_native.c16
3 files changed, 173 insertions, 173 deletions
diff --git a/src/gdisp/gdisp_image_bmp.c b/src/gdisp/gdisp_image_bmp.c
index cc3235c0..73549ae3 100644
--- a/src/gdisp/gdisp_image_bmp.c
+++ b/src/gdisp/gdisp_image_bmp.c
@@ -16,9 +16,9 @@
* Bigger is faster but uses more RAM.
* This must be greater than 40 bytes and 32 pixels as we read our headers into this space as well
*/
-#define BLIT_BUFFER_SIZE 32
+#define BLIT_BUFFER_SIZE_BMP 32
-typedef struct gdispImagePrivate {
+typedef struct gdispImagePrivate_BMP {
uint8_t bmpflags;
#define BMP_V2 0x01 // Version 2 (old) header format
#define BMP_V4 0x02 // Version 4 (alpha support) header format
@@ -49,8 +49,8 @@ typedef struct gdispImagePrivate {
#endif
size_t frame0pos;
pixel_t *frame0cache;
- pixel_t buf[BLIT_BUFFER_SIZE];
- } gdispImagePrivate;
+ pixel_t buf[BLIT_BUFFER_SIZE_BMP];
+ } gdispImagePrivate_BMP;
void gdispImageClose_BMP(gdispImage *img) {
if (img->priv) {
@@ -60,13 +60,13 @@ void gdispImageClose_BMP(gdispImage *img) {
#endif
if (img->priv->frame0cache)
gdispImageFree(img, (void *)img->priv->frame0cache, img->width*img->height*sizeof(pixel_t));
- gdispImageFree(img, (void *)img->priv, sizeof(gdispImagePrivate));
+ gdispImageFree(img, (void *)img->priv, sizeof(gdispImagePrivate_BMP));
img->priv = 0;
}
}
gdispImageError gdispImageOpen_BMP(gdispImage *img) {
- gdispImagePrivate *priv;
+ gdispImagePrivate_BMP *priv;
uint8_t hdr[2];
uint16_t aword;
uint32_t adword;
@@ -89,7 +89,7 @@ gdispImageError gdispImageOpen_BMP(gdispImage *img) {
img->flags = 0;
/* Allocate our private area */
- if (!(img->priv = (gdispImagePrivate *)gdispImageAlloc(img, sizeof(gdispImagePrivate))))
+ if (!(img->priv = (gdispImagePrivate_BMP *)gdispImageAlloc(img, sizeof(gdispImagePrivate_BMP))))
return GDISP_IMAGE_ERR_NOMEMORY;
/* Initialise the essential bits in the private area */
@@ -357,7 +357,7 @@ unsupportedcleanup:
}
static coord_t getPixels(gdispImage *img, coord_t x) {
- gdispImagePrivate * priv;
+ gdispImagePrivate_BMP * priv;
color_t * pc;
coord_t len;
@@ -376,7 +376,7 @@ static coord_t getPixels(gdispImage *img, coord_t x) {
pc = priv->buf;
len = 0;
- while(x < img->width && len <= BLIT_BUFFER_SIZE-32) {
+ while(x < img->width && len <= BLIT_BUFFER_SIZE_BMP-32) {
if (gfileRead(img->f, &b, 4) != 4)
return 0;
@@ -406,7 +406,7 @@ static coord_t getPixels(gdispImage *img, coord_t x) {
while(x < img->width) {
if (priv->bmpflags & BMP_RLE_ENC) {
- while (priv->rlerun && len <= BLIT_BUFFER_SIZE-2 && x < img->width) {
+ while (priv->rlerun && len <= BLIT_BUFFER_SIZE_BMP-2 && x < img->width) {
*pc++ = priv->palette[priv->rlecode >> 4];
priv->rlerun--;
len++;
@@ -421,7 +421,7 @@ static coord_t getPixels(gdispImage *img, coord_t x) {
if (priv->rlerun) // Return if we have more run to do
return len;
} else if (priv->bmpflags & BMP_RLE_ABS) {
- while (priv->rlerun && len <= BLIT_BUFFER_SIZE-2 && x < img->width) {
+ while (priv->rlerun && len <= BLIT_BUFFER_SIZE_BMP-2 && x < img->width) {
if (gfileRead(img->f, &b, 1) != 1)
return 0;
*pc++ = priv->palette[b[0] >> 4];
@@ -481,7 +481,7 @@ static coord_t getPixels(gdispImage *img, coord_t x) {
{
uint8_t b[4];
- while(x < img->width && len <= BLIT_BUFFER_SIZE-8) {
+ while(x < img->width && len <= BLIT_BUFFER_SIZE_BMP-8) {
if (gfileRead(img->f, &b, 4) != 4)
return 0;
@@ -512,7 +512,7 @@ static coord_t getPixels(gdispImage *img, coord_t x) {
while(x < img->width) {
if (priv->bmpflags & BMP_RLE_ENC) {
- while (priv->rlerun && len < BLIT_BUFFER_SIZE && x < img->width) {
+ while (priv->rlerun && len < BLIT_BUFFER_SIZE_BMP && x < img->width) {
*pc++ = priv->palette[priv->rlecode];
priv->rlerun--;
len++;
@@ -521,7 +521,7 @@ static coord_t getPixels(gdispImage *img, coord_t x) {
if (priv->rlerun) // Return if we have more run to do
return len;
} else if (priv->bmpflags & BMP_RLE_ABS) {
- while (priv->rlerun && len < BLIT_BUFFER_SIZE && x < img->width) {
+ while (priv->rlerun && len < BLIT_BUFFER_SIZE_BMP && x < img->width) {
if (gfileRead(img->f, &b, 1) != 1)
return 0;
*pc++ = priv->palette[b[0]];
@@ -575,7 +575,7 @@ static coord_t getPixels(gdispImage *img, coord_t x) {
{
uint8_t b[4];
- while(x < img->width && len <= BLIT_BUFFER_SIZE-4) {
+ while(x < img->width && len <= BLIT_BUFFER_SIZE_BMP-4) {
if (gfileRead(img->f, &b, 4) != 4)
return 0;
@@ -597,7 +597,7 @@ static coord_t getPixels(gdispImage *img, coord_t x) {
uint16_t w[2];
color_t r, g, b;
- while(x < img->width && len <= BLIT_BUFFER_SIZE-2) {
+ while(x < img->width && len <= BLIT_BUFFER_SIZE_BMP-2) {
if (gfileRead(img->f, &w, 4) != 4)
return 0;
gdispImageMakeLE16(w[0]);
@@ -642,7 +642,7 @@ static coord_t getPixels(gdispImage *img, coord_t x) {
{
uint8_t b[3];
- while(x < img->width && len < BLIT_BUFFER_SIZE) {
+ while(x < img->width && len < BLIT_BUFFER_SIZE_BMP) {
if (gfileRead(img->f, &b, 3) != 3)
return 0;
*pc++ = RGB2COLOR(b[2], b[1], b[0]);
@@ -665,7 +665,7 @@ static coord_t getPixels(gdispImage *img, coord_t x) {
uint32_t dw;
color_t r, g, b;
- while(x < img->width && len < BLIT_BUFFER_SIZE) {
+ while(x < img->width && len < BLIT_BUFFER_SIZE_BMP) {
if (gfileRead(img->f, &dw, 4) != 4)
return 0;
gdispImageMakeLE32(dw);
@@ -696,7 +696,7 @@ static coord_t getPixels(gdispImage *img, coord_t x) {
}
gdispImageError gdispImageCache_BMP(gdispImage *img) {
- gdispImagePrivate * priv;
+ gdispImagePrivate_BMP * priv;
color_t * pcs;
color_t * pcd;
coord_t pos, x, y;
@@ -752,7 +752,7 @@ gdispImageError gdispImageCache_BMP(gdispImage *img) {
}
gdispImageError gdispGImageDraw_BMP(GDisplay *g, gdispImage *img, coord_t x, coord_t y, coord_t cx, coord_t cy, coord_t sx, coord_t sy) {
- gdispImagePrivate * priv;
+ gdispImagePrivate_BMP * priv;
coord_t mx, my;
coord_t pos, len, st;
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
diff --git a/src/gdisp/gdisp_image_native.c b/src/gdisp/gdisp_image_native.c
index 9ed0f664..df7c9f72 100644
--- a/src/gdisp/gdisp_image_native.c
+++ b/src/gdisp/gdisp_image_native.c
@@ -15,10 +15,10 @@
* How big a pixel array to allocate for blitting
* Bigger is faster but uses more RAM.
*/
-#define BLIT_BUFFER_SIZE 32
+#define BLIT_BUFFER_SIZE_NATIVE 32
-#define HEADER_SIZE 8
-#define FRAME0POS (HEADER_SIZE)
+#define HEADER_SIZE_NATIVE 8
+#define FRAME0POS_NATIVE (HEADER_SIZE_NATIVE)
/**
* Helper Routines Needed
@@ -28,7 +28,7 @@ void gdispImageFree(gdispImage *img, void *ptr, size_t sz);
typedef struct gdispImagePrivate {
pixel_t *frame0cache;
- pixel_t buf[BLIT_BUFFER_SIZE];
+ pixel_t buf[BLIT_BUFFER_SIZE_NATIVE];
} gdispImagePrivate;
void gdispImageClose_NATIVE(gdispImage *img) {
@@ -41,7 +41,7 @@ void gdispImageClose_NATIVE(gdispImage *img) {
}
gdispImageError gdispImageOpen_NATIVE(gdispImage *img) {
- uint8_t hdr[HEADER_SIZE];
+ uint8_t hdr[HEADER_SIZE_NATIVE];
/* Read the 8 byte header */
if (gfileRead(img->f, hdr, 8) != 8)
@@ -81,7 +81,7 @@ gdispImageError gdispImageCache_NATIVE(gdispImage *img) {
return GDISP_IMAGE_ERR_NOMEMORY;
/* Read the entire bitmap into cache */
- gfileSetPos(img->f, FRAME0POS);
+ gfileSetPos(img->f, FRAME0POS_NATIVE);
if (gfileRead(img->f, img->priv->frame0cache, len) != len)
return GDISP_IMAGE_ERR_BADDATA;
@@ -104,7 +104,7 @@ gdispImageError gdispGImageDraw_NATIVE(GDisplay *g, gdispImage *img, coord_t x,
}
/* For this image decoder we cheat and just seek straight to the region we want to display */
- pos = FRAME0POS + (img->width * sy + sx) * sizeof(pixel_t);
+ pos = FRAME0POS_NATIVE + (img->width * sy + sx) * sizeof(pixel_t);
/* Cycle through the lines */
for(;cy;cy--, y++) {
@@ -116,7 +116,7 @@ gdispImageError gdispGImageDraw_NATIVE(GDisplay *g, gdispImage *img, coord_t x,
// Read the data
len = gfileRead(img->f,
img->priv->buf,
- mcx > BLIT_BUFFER_SIZE ? (BLIT_BUFFER_SIZE*sizeof(pixel_t)) : (mcx * sizeof(pixel_t)))
+ mcx > BLIT_BUFFER_SIZE_NATIVE ? (BLIT_BUFFER_SIZE_NATIVE*sizeof(pixel_t)) : (mcx * sizeof(pixel_t)))
/ sizeof(pixel_t);
if (!len)
return GDISP_IMAGE_ERR_BADDATA;