XenevaOS
Loading...
Searching...
No Matches
nsgif.h
Go to the documentation of this file.
1/*
2 * Copyright 2004 Richard Wilson <richard.wilson@netsurf-browser.org>
3 * Copyright 2008 Sean Fox <dyntryx@gmail.com>
4 * Copyright 2013-2022 Michael Drake <tlsa@netsurf-browser.org>
5 *
6 * This file is part of NetSurf's libnsgif, http://www.netsurf-browser.org/
7 * Licenced under the MIT License,
8 * http://www.opensource.org/licenses/mit-license.php
9 */
10
16#ifndef NSNSGIF_H
17#define NSNSGIF_H
18
19#include <stdint.h>
20#include <stdbool.h>
21#include <inttypes.h>
22
24#define NSGIF_INFINITE (UINT32_MAX)
25
27#define NSGIF_MAX_COLOURS 256
28
32typedef struct nsgif nsgif_t;
33
52
103
160
173typedef void nsgif_bitmap_t;
174
176typedef struct nsgif_bitmap_cb_vt {
184 nsgif_bitmap_t* (*create)(int width, int height);
185
191 void (*destroy)(nsgif_bitmap_t *bitmap);
192
203 uint8_t* (*get_buffer)(nsgif_bitmap_t *bitmap);
204
205 /* The following functions are optional. */
206
213 void (*set_opaque)(nsgif_bitmap_t *bitmap, bool opaque);
214
222
228 void (*modified)(nsgif_bitmap_t *bitmap);
229
241
248const char *nsgif_strerror(nsgif_error err);
249
260 const nsgif_bitmap_cb_vt *bitmap_vt,
261 nsgif_bitmap_fmt_t bitmap_fmt,
262 nsgif_t **gif_out);
263
269void nsgif_destroy(nsgif_t *gif);
270
301 nsgif_t *gif,
302 size_t size,
303 const uint8_t *data);
304
321 nsgif_t *gif);
322
342 nsgif_t *gif,
343 nsgif_rect_t *area,
344 uint32_t *delay_cs,
345 uint32_t *frame_new);
346
358 nsgif_t *gif,
359 uint32_t frame,
360 nsgif_bitmap_t **bitmap);
361
375 nsgif_t *gif);
376
394
408
415const char *nsgif_str_disposal(enum nsgif_disposal disposal);
416
437
445const nsgif_info_t *nsgif_get_info(const nsgif_t *gif);
446
456 const nsgif_t *gif,
457 uint32_t frame);
458
472 const nsgif_t *gif,
474 size_t *entries);
475
491 const nsgif_t *gif,
492 uint32_t frame,
494 size_t *entries);
495
523 nsgif_t *gif,
524 uint16_t delay_min,
525 uint16_t delay_default);
526
527#endif
#define bool
Definition stdbool.h:35
unsigned int uint32_t
Definition acefiex.h:163
unsigned char uint8_t
Definition acefiex.h:161
unsigned short int uint16_t
Definition acefiex.h:162
uint32_t * table
Definition codec_8859.c:24
size_t size
Definition drm_bridge.h:1299
void * data
Definition kthread.h:30
nsgif_error nsgif_data_scan(nsgif_t *gif, size_t size, const uint8_t *data)
Definition gif.c:1608
nsgif_error
Definition nsgif.h:56
@ NSGIF_ERR_BAD_FRAME
Definition nsgif.h:75
@ NSGIF_ERR_FRAME_DISPLAY
Definition nsgif.h:95
@ NSGIF_OK
Definition nsgif.h:60
@ NSGIF_ERR_OOM
Definition nsgif.h:65
@ NSGIF_ERR_DATA_COMPLETE
Definition nsgif.h:90
@ NSGIF_ERR_END_OF_DATA
Definition nsgif.h:85
@ NSGIF_ERR_ANIMATION_END
Definition nsgif.h:101
@ NSGIF_ERR_DATA
Definition nsgif.h:70
@ NSGIF_ERR_DATA_FRAME
Definition nsgif.h:80
nsgif_error nsgif_create(const nsgif_bitmap_cb_vt *bitmap_vt, nsgif_bitmap_fmt_t bitmap_fmt, nsgif_t **gif_out)
Definition gif.c:1488
void nsgif_bitmap_t
Definition nsgif.h:173
enum nsgif_bitmap_fmt nsgif_bitmap_fmt_t
void nsgif_global_palette(const nsgif_t *gif, uint32_t table[NSGIF_MAX_COLOURS], size_t *entries)
Definition gif.c:2002
const nsgif_info_t * nsgif_get_info(const nsgif_t *gif)
Definition gif.c:1984
#define NSGIF_MAX_COLOURS
Definition nsgif.h:27
struct nsgif_frame_info nsgif_frame_info_t
const nsgif_frame_info_t * nsgif_get_frame_info(const nsgif_t *gif, uint32_t frame)
Definition gif.c:1990
nsgif_error nsgif_frame_prepare(nsgif_t *gif, nsgif_rect_t *area, uint32_t *delay_cs, uint32_t *frame_new)
Definition gif.c:1873
const char * nsgif_strerror(nsgif_error err)
Definition gif.c:2039
nsgif_error nsgif_frame_decode(nsgif_t *gif, uint32_t frame, nsgif_bitmap_t **bitmap)
Definition gif.c:1947
nsgif_disposal
Definition nsgif.h:401
@ NSGIF_DISPOSAL_NONE
Definition nsgif.h:403
@ NSGIF_DISPOSAL_UNSPECIFIED
Definition nsgif.h:402
@ NSGIF_DISPOSAL_RESTORE_BG
Definition nsgif.h:404
@ NSGIF_DISPOSAL_RESTORE_PREV
Definition nsgif.h:405
@ NSGIF_DISPOSAL_RESTORE_QUIRK
Definition nsgif.h:406
nsgif_error nsgif_reset(nsgif_t *gif)
Definition gif.c:1863
void nsgif_destroy(nsgif_t *gif)
Definition gif.c:1383
void nsgif_set_frame_delay_behaviour(nsgif_t *gif, uint16_t delay_min, uint16_t delay_default)
Definition gif.c:1514
struct nsgif_info nsgif_info_t
nsgif_bitmap_fmt
Definition nsgif.h:115
@ NSGIF_BITMAP_FMT_A8B8G8R8
Definition nsgif.h:126
@ NSGIF_BITMAP_FMT_B8G8R8A8
Definition nsgif.h:120
@ NSGIF_BITMAP_FMT_ABGR8888
Definition nsgif.h:158
@ NSGIF_BITMAP_FMT_A8R8G8B8
Definition nsgif.h:123
@ NSGIF_BITMAP_FMT_BGRA8888
Definition nsgif.h:142
@ NSGIF_BITMAP_FMT_R8G8B8A8
Definition nsgif.h:117
@ NSGIF_BITMAP_FMT_ARGB8888
Definition nsgif.h:150
@ NSGIF_BITMAP_FMT_RGBA8888
Definition nsgif.h:134
struct nsgif_rect nsgif_rect_t
const char * nsgif_str_disposal(enum nsgif_disposal disposal)
Definition gif.c:2061
bool nsgif_local_palette(const nsgif_t *gif, uint32_t frame, uint32_t table[NSGIF_MAX_COLOURS], size_t *entries)
Definition gif.c:2014
void nsgif_data_complete(nsgif_t *gif)
Definition gif.c:1763
Definition nsgif.h:176
void(* set_opaque)(nsgif_bitmap_t *bitmap, bool opaque)
Definition nsgif.h:213
bool(* test_opaque)(nsgif_bitmap_t *bitmap)
Definition nsgif.h:221
uint32_t(* get_rowspan)(nsgif_bitmap_t *bitmap)
Definition nsgif.h:239
void(* destroy)(nsgif_bitmap_t *bitmap)
Definition nsgif.h:191
void(* modified)(nsgif_bitmap_t *bitmap)
Definition nsgif.h:228
Definition nsgif.h:420
bool local_palette
Definition nsgif.h:426
nsgif_rect_t rect
Definition nsgif.h:435
bool interlaced
Definition nsgif.h:428
bool display
Definition nsgif.h:422
uint32_t delay
Definition nsgif.h:432
bool transparency
Definition nsgif.h:424
uint8_t disposal
Definition nsgif.h:430
Definition nsgif.h:380
uint32_t width
Definition nsgif.h:382
bool global_palette
Definition nsgif.h:392
uint32_t height
Definition nsgif.h:384
uint32_t frame_count
Definition nsgif.h:386
uint32_t background
Definition nsgif.h:390
int loop_max
Definition nsgif.h:388
Definition nsgif.h:42
uint32_t y0
Definition nsgif.h:46
uint32_t y1
Definition nsgif.h:50
uint32_t x1
Definition nsgif.h:48
uint32_t x0
Definition nsgif.h:44
Definition gif.c:65