diff options
-rw-r--r-- | include/nsgif.h | 20 | ||||
-rw-r--r-- | src/gif.c | 17 |
2 files changed, 34 insertions, 3 deletions
diff --git a/include/nsgif.h b/include/nsgif.h index bd0fd58..9eec0f8 100644 --- a/include/nsgif.h +++ b/include/nsgif.h @@ -23,6 +23,9 @@ /** Representation of infinity. */ #define NSGIF_INFINITE (UINT32_MAX) +/** Maximum colour table size */ +#define NSGIF_MAX_COLOURS 256 + /** * Opaque type used by LibNSGIF to represent a GIF object in memory. */ @@ -428,6 +431,23 @@ const nsgif_frame_info_t *nsgif_get_frame_info( uint32_t frame); /** + * Get the global colour palette. + * + * If the GIF has no global colour table, this will return the default + * colour palette. + * + * Colours in same pixel format as \ref nsgif_bitmap_t. + * + * \param[in] gif The \ref nsgif_t object. + * \param[out] table Client buffer to hold the colour table. + * \param[out] entries The number of used entries in the colour table. + */ +void nsgif_global_palette( + const nsgif_t *gif, + uint32_t table[NSGIF_MAX_COLOURS], + size_t *entries); + +/** * Configure handling of small frame delays. * * Historically people created GIFs with a tiny frame delay, however the slow @@ -17,9 +17,6 @@ #include "lzw.h" #include "nsgif.h" -/** Maximum colour table size */ -#define NSGIF_MAX_COLOURS 256 - /** Default minimum allowable frame delay in cs. */ #define NSGIF_FRAME_DELAY_MIN 2 @@ -1672,6 +1669,8 @@ nsgif_error nsgif_data_scan( entry[gif->colour_layout.g] = 0xFF; entry[gif->colour_layout.b] = 0xFF; entry[gif->colour_layout.a] = 0xFF; + + gif->colour_table_size = 2; } if (gif->info.colour_table && @@ -1909,6 +1908,18 @@ const nsgif_frame_info_t *nsgif_get_frame_info( } /* exported function documented in nsgif.h */ +void nsgif_global_palette( + const nsgif_t *gif, + uint32_t table[NSGIF_MAX_COLOURS], + size_t *entries) +{ + size_t len = sizeof(*table) * NSGIF_MAX_COLOURS; + + memcpy(table, gif->global_colour_table, len); + *entries = gif->colour_table_size; +} + +/* exported function documented in nsgif.h */ const char *nsgif_strerror(nsgif_error err) { static const char *const str[] = { |