1 #ifndef GIFDEC_H
2 #define GIFDEC_H
3 
4 #include <stdint.h>
5 #include "../../../misc/lv_fs.h"
6 
7 #if LV_USE_GIF
8 
9 typedef struct gd_Palette {
10     int size;
11     uint8_t colors[0x100 * 3];
12 } gd_Palette;
13 
14 typedef struct gd_GCE {
15     uint16_t delay;
16     uint8_t tindex;
17     uint8_t disposal;
18     int input;
19     int transparency;
20 } gd_GCE;
21 
22 
23 
24 typedef struct gd_GIF {
25     lv_fs_file_t fd;
26     const char * data;
27     uint8_t is_file;
28     uint32_t f_rw_p;
29     int32_t anim_start;
30     uint16_t width, height;
31     uint16_t depth;
32     int32_t loop_count;
33     gd_GCE gce;
34     gd_Palette *palette;
35     gd_Palette lct, gct;
36     void (*plain_text)(
37         struct gd_GIF *gif, uint16_t tx, uint16_t ty,
38         uint16_t tw, uint16_t th, uint8_t cw, uint8_t ch,
39         uint8_t fg, uint8_t bg
40     );
41     void (*comment)(struct gd_GIF *gif);
42     void (*application)(struct gd_GIF *gif, char id[8], char auth[3]);
43     uint16_t fx, fy, fw, fh;
44     uint8_t bgindex;
45     uint8_t *canvas, *frame;
46 } gd_GIF;
47 
48 gd_GIF * gd_open_gif_file(const char *fname);
49 
50 gd_GIF * gd_open_gif_data(const void *data);
51 
52 void gd_render_frame(gd_GIF *gif, uint8_t *buffer);
53 
54 int gd_get_frame(gd_GIF *gif);
55 void gd_rewind(gd_GIF *gif);
56 void gd_close_gif(gd_GIF *gif);
57 
58 #endif /*LV_USE_GIF*/
59 
60 #endif /* GIFDEC_H */
61