diff options
author | Richard Wilson <rjw@netsurf-browser.org> | 2004-04-03 11:49:48 +0000 |
---|---|---|
committer | Richard Wilson <rjw@netsurf-browser.org> | 2004-04-03 11:49:48 +0000 |
commit | ad07b6e656f36d41028e68c0e0f99eb34bfb8fc8 (patch) | |
tree | e44a8331efa59093eb9e1bff219b8dabbf849462 | |
parent | 7872dc57fd3380df584eece25dad5746619b363c (diff) | |
download | netsurf-ad07b6e656f36d41028e68c0e0f99eb34bfb8fc8.tar.gz netsurf-ad07b6e656f36d41028e68c0e0f99eb34bfb8fc8.tar.bz2 |
[project @ 2004-04-03 11:49:48 by rjw]
GIF file reading
svn path=/import/netsurf/; revision=710
-rw-r--r-- | riscos/gifread.h | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/riscos/gifread.h b/riscos/gifread.h new file mode 100644 index 000000000..5cefede29 --- /dev/null +++ b/riscos/gifread.h @@ -0,0 +1,81 @@ +/* + * This file is part of NetSurf, http://netsurf.sourceforge.net/ + * Licensed under the GNU General Public License, + * http://www.opensource.org/licenses/gpl-license + * Copyright 2004 Richard Wilson <not_ginger_matt@sourceforge.net> + */ + +#ifndef _NETSURF_RISCOS_GIFREAD_H_ +#define _NETSURF_RISCOS_GIFREAD_H_ + +#include "oslib/osspriteop.h" + +/* Error return values +*/ +#define GIF_INSUFFICIENT_DATA -1 +#define GIF_DATA_ERROR -2 +#define GIF_INSUFFICIENT_MEMORY -3 +#define GIF_INSUFFICIENT_FRAME_DATA -4 +#define GIF_FRAME_DATA_ERROR -5 + +/* Colour map size constant. Because we don't want to allocate + memory each time we decode a frame we get enough so all frames + will fit in there. +*/ +#define GIF_MAX_COLOURS 256 + +/* Maximum LZW bits available +*/ +#define GIF_MAX_LZW 12 + +/* A simple hold-all for our GIF data +*/ +struct gif_animation { + /* Encoded GIF data + */ + unsigned char *gif_data; + unsigned int buffer_position; + unsigned int buffer_size; + + /* Progressive decoding data + */ + unsigned int global_colours; + unsigned int frame_holders; + unsigned int colour_table_size; + unsigned int *frame_pointers; + + /* Animation data + */ + unsigned int current_frame; + unsigned int decoded_frame; + unsigned int loop_count; + unsigned int *frame_delays; + + /* Decoded GIF data + */ + unsigned int width; + unsigned int height; + unsigned int frame_count; + unsigned int frame_count_partial; + unsigned int background_colour; + unsigned int aspect_ratio; + unsigned int *global_colour_table; + unsigned int *local_colour_table; + + /* Decoded frame data + */ + unsigned int frame_offset_x; + unsigned int frame_offset_y; + unsigned int frame_width; + unsigned int frame_height; + unsigned int background_action; + osspriteop_header *frame_image; +}; + +/* Function declarations +*/ +int gif_initialise(struct gif_animation *gif); +int gif_decode_frame(struct gif_animation *gif, int frame); +void gif_finalise(struct gif_animation *gif); + +#endif |