2003-06-30 16:44:03 +04:00
|
|
|
/*
|
|
|
|
* 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 2003 Philip Pemberton <philpem@users.sourceforge.net>
|
2004-03-18 00:05:55 +03:00
|
|
|
* Copyright 2004 Richard Wilson <not_ginger_matt@hotmail.com>
|
2003-06-05 17:24:28 +04:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _NETSURF_RISCOS_GIF_H_
|
|
|
|
#define _NETSURF_RISCOS_GIF_H_
|
|
|
|
|
2003-09-08 01:08:13 +04:00
|
|
|
#include "oslib/osspriteop.h"
|
|
|
|
|
|
|
|
struct content;
|
|
|
|
|
|
|
|
struct content_gif_data {
|
|
|
|
unsigned long buffer_pos;
|
2004-03-18 00:05:55 +03:00
|
|
|
|
|
|
|
/* The sprite area containing the 8bpp frames.
|
|
|
|
*/
|
2003-09-08 01:08:13 +04:00
|
|
|
osspriteop_area *sprite_area;
|
2004-03-18 00:05:55 +03:00
|
|
|
|
|
|
|
/* The sprite image of the current 8bpp frame
|
|
|
|
*/
|
2003-09-08 01:08:13 +04:00
|
|
|
char *sprite_image;
|
2004-03-18 00:05:55 +03:00
|
|
|
|
|
|
|
/* The sprite header of the current 32bpp image.
|
|
|
|
*/
|
|
|
|
osspriteop_header *buffer_header;
|
|
|
|
|
|
|
|
/** The current frame number of the GIF to display, [0...(max-1)]
|
|
|
|
*/
|
|
|
|
unsigned int current_frame;
|
|
|
|
|
|
|
|
/** The current frame that we hold a 32bpp version of [0...(max-1)]
|
|
|
|
*/
|
|
|
|
unsigned int expanded_frame;
|
|
|
|
|
|
|
|
/** Whether the GIF should be animated
|
|
|
|
*/
|
|
|
|
bool animate_gif;
|
|
|
|
|
|
|
|
/** Whether the GIF should loop
|
|
|
|
*/
|
|
|
|
bool loop_gif;
|
|
|
|
|
|
|
|
/** The number of cs unprocessed as the next transition has
|
|
|
|
not yet occurred.
|
|
|
|
*/
|
|
|
|
unsigned int remainder_time;
|
|
|
|
|
|
|
|
/** The total number of frames
|
|
|
|
*/
|
|
|
|
unsigned int total_frames;
|
|
|
|
|
|
|
|
/** An array of times (in cs) for the frame transitions between each frame
|
|
|
|
*/
|
|
|
|
unsigned int *frame_transitions;
|
|
|
|
|
2003-09-08 01:08:13 +04:00
|
|
|
};
|
2003-06-05 17:24:28 +04:00
|
|
|
|
|
|
|
void nsgif_init(void);
|
2003-12-27 23:15:23 +03:00
|
|
|
void nsgif_create(struct content *c, const char *params[]);
|
2003-06-05 17:24:28 +04:00
|
|
|
int nsgif_convert(struct content *c, unsigned int width, unsigned int height);
|
|
|
|
void nsgif_destroy(struct content *c);
|
2004-03-18 00:05:55 +03:00
|
|
|
int nsgif_animate(struct content *c, unsigned int advance_time);
|
2003-06-05 17:24:28 +04:00
|
|
|
void nsgif_redraw(struct content *c, long x, long y,
|
2003-09-10 21:10:25 +04:00
|
|
|
unsigned long width, unsigned long height,
|
2004-02-25 18:12:58 +03:00
|
|
|
long clip_x0, long clip_y0, long clip_x1, long clip_y1,
|
|
|
|
float scale);
|
2004-03-18 00:05:55 +03:00
|
|
|
osspriteop_header *nsgif_get_sprite_address(struct content *c, unsigned int frame);
|
2003-06-05 17:24:28 +04:00
|
|
|
#endif
|