From ffe01aef80c5eddd650d037a80df76ca4932d135 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Tue, 10 Jan 2017 10:39:07 +0100 Subject: [PATCH] Adding GDISP_IMAGE_PNG_FILE_BUFFER_SIZE configuration option --- gfxconf.example.h | 1 + src/gdisp/gdisp_image_png.c | 12 +++--------- src/gdisp/gdisp_options.h | 13 +++++++++++-- 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 @@ -11,12 +11,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. @@ -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 /** * @} *