From ad07b6e656f36d41028e68c0e0f99eb34bfb8fc8 Mon Sep 17 00:00:00 2001 From: Richard Wilson Date: Sat, 3 Apr 2004 11:49:48 +0000 Subject: [PATCH] [project @ 2004-04-03 11:49:48 by rjw] GIF file reading svn path=/import/netsurf/; revision=710 --- riscos/gifread.h | 81 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 riscos/gifread.h 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 + */ + +#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