aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoel Bodenmann <joel@embedded.pro>2017-01-10 10:39:07 +0100
committerJoel Bodenmann <joel@embedded.pro>2017-01-10 10:39:07 +0100
commitffe01aef80c5eddd650d037a80df76ca4932d135 (patch)
treed563fe2ed7c4650c0b72fa749dcfdcc0bdbcf8de
parentff8aa099497576217fae6b946506a1de1744ca67 (diff)
downloaduGFX-ffe01aef80c5eddd650d037a80df76ca4932d135.tar.gz
uGFX-ffe01aef80c5eddd650d037a80df76ca4932d135.tar.bz2
uGFX-ffe01aef80c5eddd650d037a80df76ca4932d135.zip
Adding GDISP_IMAGE_PNG_FILE_BUFFER_SIZE configuration option
-rw-r--r--gfxconf.example.h1
-rw-r--r--src/gdisp/gdisp_image_png.c12
-rw-r--r--src/gdisp/gdisp_options.h13
3 files changed, 15 insertions, 11 deletions
diff --git a/gfxconf.example.h b/gfxconf.example.h
index 31a6b8a6..c7b836bf 100644
--- a/gfxconf.example.h
+++ b/gfxconf.example.h
@@ -137,6 +137,7 @@
// #define GDISP_NEED_IMAGE_PNG_RGBALPHA_8 TRUE
// #define GDISP_NEED_IMAGE_PNG_RGBALPHA_16 TRUE
// #define GDISP_IMAGE_PNG_BLIT_BUFFER_SIZE 32
+// #define GDISP_IMAGE_PNG_FILE_BUFFER_SIZE 8
// #define GDISP_NEED_IMAGE_ACCOUNTING FALSE
//#define GDISP_NEED_PIXMAP FALSE
diff --git a/src/gdisp/gdisp_image_png.c b/src/gdisp/gdisp_image_png.c
index 9fa1c68e..1b3c2469 100644
--- a/src/gdisp/gdisp_image_png.c
+++ b/src/gdisp/gdisp_image_png.c
@@ -12,12 +12,6 @@
#include "gdisp_image_support.h"
/**
- * How big a byte array to use for input file buffer
- * Bigger is faster but uses more RAM.
- * Must be more than 8 bytes
- */
-#define PNG_FILE_BUFFER_SIZE 8
-/**
* How big a byte array to use for inflate decompression
* Bigger is faster but uses more RAM.
* Must be >= 32768 due to the PNG 32K sliding window
@@ -73,7 +67,7 @@ typedef struct PNG_input {
uint8_t *pbuf; // The pointer to the next byte
uint32_t chunklen; // The number of bytes left in the current PNG chunk
uint32_t chunknext; // The file position of the next PNG chunk
- uint8_t buf[PNG_FILE_BUFFER_SIZE]; // Must be a minimum of 8 bytes to hold a chunk header
+ uint8_t buf[GDISP_IMAGE_PNG_FILE_BUFFER_SIZE]; // Must be a minimum of 8 bytes to hold a chunk header
} PNG_input;
// Handle the display output and windowing
@@ -191,8 +185,8 @@ gotchunk:
// Try to read data some from the chunk
sz = d->i.chunklen;
- if (sz > PNG_FILE_BUFFER_SIZE)
- sz = PNG_FILE_BUFFER_SIZE;
+ if (sz > GDISP_IMAGE_PNG_FILE_BUFFER_SIZE)
+ sz = GDISP_IMAGE_PNG_FILE_BUFFER_SIZE;
if (gfileRead(d->i.f, d->i.buf, sz) != sz)
return FALSE;
d->i.chunklen -= sz;
diff --git a/src/gdisp/gdisp_options.h b/src/gdisp/gdisp_options.h
index ec043769..32429cde 100644
--- a/src/gdisp/gdisp_options.h
+++ b/src/gdisp/gdisp_options.h
@@ -390,7 +390,7 @@
#endif
/**
* @brief The BMP blit buffer size.
- * @details Defaults to TRUE
+ * @details Defaults to 32
* @note Bigger is faster but requires more RAM.
* @note This must be greater than 40 bytes and 32 pixels as we read our headers into this space as well.
*/
@@ -520,12 +520,21 @@
#endif
/**
* @brief The PNG blit buffer size in pixels.
- * @details Defaults to TRUE
+ * @details Defaults to 32
* @note Bigger is faster but requires more RAM.
*/
#ifndef GDISP_IMAGE_PNG_BLIT_BUFFER_SIZE
#define GDISP_IMAGE_PNG_BLIT_BUFFER_SIZE 32
#endif
+ /**
+ * @brief The PNG input file buffer size in bytes.
+ * @details Defaults to 8
+ * @note Bigger is faster but requires more RAM.
+ * @note Must be >= 8
+ */
+ #ifndef GDISP_IMAGE_PNG_FILE_BUFFER_SIZE
+ #define GDISP_IMAGE_PNG_FILE_BUFFER_SIZE 8
+ #endif
/**
* @}
*