EU1KY AA
libnsbmp.h
Go to the documentation of this file.
1 /*
2  * Copyright 2006 Richard Wilson <richard.wilson@netsurf-browser.org>
3  * Copyright 2008 Sean Fox <dyntryx@gmail.com>
4  *
5  * This file is part of NetSurf's libnsbmp, http://www.netsurf-browser.org/
6  * Licenced under the MIT License,
7  * http://www.opensource.org/licenses/mit-license.php
8  * !!! Modified by Yury Kuchura to support pixel drawing callback for 8BPP instead of writing to allocated memory
9  */
10 
15 #ifndef libnsbmp_h_
16 #define libnsbmp_h_
17 
18 #include <stdbool.h>
19 #include <stdint.h>
20 #include <stddef.h>
21 
22 /* bmp flags */
23 #define BMP_NEW 0
24 #define BMP_OPAQUE (1 << 0)
25 #define BMP_CLEAR_MEMORY (1 << 1)
27 /* error return values */
28 typedef enum
29 {
30  BMP_OK = 0,
34 } bmp_result;
35 
36 /* encoding types */
37 typedef enum
38 {
43 } bmp_encoding;
44 
45 /* API for Bitmap callbacks
46 */
47 typedef void* (*bmp_bitmap_cb_create)(int width, int height, unsigned int state);
48 typedef void (*bmp_bitmap_cb_destroy)(void *bitmap);
49 typedef unsigned char* (*bmp_bitmap_cb_get_buffer)(void *bitmap);
50 typedef size_t (*bmp_bitmap_cb_get_bpp)(void *bitmap);
51 typedef void (*bmp_bitmap_cb_putcolor)(unsigned int, unsigned int, unsigned int); //Added a callback to put color to given place (YK)
52 
53 /* The Bitmap callbacks function table
54 */
56 {
61  bmp_bitmap_cb_putcolor bitmap_put_color; //Added a callback to put color to given place (YK)
63 
64 typedef struct bmp_image
65 {
67  uint8_t *bmp_data;
68  uint32_t width;
69  uint32_t height;
70  bool decoded;
71  void *bitmap;
74  uint32_t buffer_size;
76  uint32_t bitmap_offset;
77  uint16_t bpp;
78  uint32_t colours;
79  uint32_t *colour_table;
81  uint32_t trans_colour;
83  bool reversed;
84  bool ico;
85  bool opaque;
86  uint32_t mask[4];
87  int32_t shift[4];
88  uint32_t transparent_index;
89 } bmp_image;
90 
91 typedef struct ico_image
92 {
94  struct ico_image *next;
95 } ico_image;
96 
97 typedef struct ico_collection
98 {
100  uint16_t width;
101  uint16_t height;
104  const uint8_t *ico_data;
105  uint32_t buffer_size;
108 
109 #ifdef __cplusplus
110 extern "C" {
111 #endif
112 
115  bmp_bitmap_callback_vt *bitmap_callbacks);
116 bmp_result bmp_analyse(bmp_image *bmp, size_t size, const uint8_t *data);
118 bmp_result bmp_decode_trans(bmp_image *bmp, uint32_t transparent_colour);
119 void bmp_finalise(bmp_image *bmp);
120 
121 bmp_result ico_analyse(ico_collection *ico, size_t size, const uint8_t *data);
122 bmp_image *ico_find(ico_collection *ico, uint16_t width, uint16_t height);
123 void ico_finalise(ico_collection *ico);
124 
125 #ifdef __cplusplus
126 }
127 #endif
128 
129 #endif
struct bmp_image bmp_image
uint32_t colours
Definition: libnsbmp.h:78
bmp_result bmp_decode(bmp_image *bmp)
Definition: libnsbmp.c:758
Definition: libnsbmp.h:97
Definition: libnsbmp.h:39
bmp_result
Definition: libnsbmp.h:28
struct ico_collection ico_collection
bmp_bitmap_cb_get_bpp bitmap_get_bpp
Definition: libnsbmp.h:60
bmp_bitmap_callback_vt bitmap_callbacks
Definition: libnsbmp.h:66
uint16_t height
Definition: libnsbmp.h:101
bmp_result bmp_decode_trans(bmp_image *bmp, uint32_t transparent_colour)
Definition: libnsbmp.c:831
uint32_t buffer_size
Definition: libnsbmp.h:74
void bmp_create(bmp_image *bmp, bmp_bitmap_callback_vt *bitmap_callbacks)
Definition: libnsbmp.c:131
Definition: libnsbmp.h:40
bool reversed
Definition: libnsbmp.h:83
Definition: libnsbmp.h:32
void(* bmp_bitmap_cb_destroy)(void *bitmap)
Definition: libnsbmp.h:48
bmp_encoding
Definition: libnsbmp.h:37
void *(* bmp_bitmap_cb_create)(int width, int height, unsigned int state)
Definition: libnsbmp.h:47
ico_image * first
Definition: libnsbmp.h:106
struct ico_image ico_image
uint32_t trans_colour
Definition: libnsbmp.h:81
bool limited_trans
Definition: libnsbmp.h:80
struct ico_image * next
Definition: libnsbmp.h:94
Definition: libnsbmp.h:55
bool ico
Definition: libnsbmp.h:84
bmp_image * ico_find(ico_collection *ico, uint16_t width, uint16_t height)
Definition: libnsbmp.c:715
void ico_finalise(ico_collection *ico)
Definition: libnsbmp.c:1512
bool decoded
Definition: libnsbmp.h:70
uint8_t * bmp_data
Definition: libnsbmp.h:67
bmp_result bmp_analyse(bmp_image *bmp, size_t size, const uint8_t *data)
Definition: libnsbmp.c:159
Definition: libnsbmp.h:91
void(* bmp_bitmap_cb_putcolor)(unsigned int, unsigned int, unsigned int)
Definition: libnsbmp.h:51
Definition: libnsbmp.h:41
static bmp_bitmap_callback_vt bitmap_callbacks
Definition: LCD.c:382
uint32_t buffer_size
Definition: libnsbmp.h:105
bmp_encoding encoding
Definition: libnsbmp.h:75
uint16_t bpp
Definition: libnsbmp.h:77
const uint8_t * ico_data
Definition: libnsbmp.h:104
bmp_bitmap_cb_get_buffer bitmap_get_buffer
Definition: libnsbmp.h:59
Definition: libnsbmp.h:31
uint32_t * colour_table
Definition: libnsbmp.h:79
void * bitmap
Definition: libnsbmp.h:71
Definition: libnsbmp.h:33
bmp_image bmp
Definition: libnsbmp.h:93
bmp_bitmap_callback_vt bitmap_callbacks
Definition: libnsbmp.h:99
uint32_t transparent_index
Definition: libnsbmp.h:88
struct bmp_bitmap_callback_vt_s bmp_bitmap_callback_vt
uint32_t bitmap_offset
Definition: libnsbmp.h:76
uint16_t width
Definition: libnsbmp.h:100
bool opaque
Definition: libnsbmp.h:85
bmp_bitmap_cb_destroy bitmap_destroy
Definition: libnsbmp.h:58
unsigned char *(* bmp_bitmap_cb_get_buffer)(void *bitmap)
Definition: libnsbmp.h:49
void bmp_finalise(bmp_image *bmp)
Definition: libnsbmp.c:1492
size_t(* bmp_bitmap_cb_get_bpp)(void *bitmap)
Definition: libnsbmp.h:50
uint32_t width
Definition: libnsbmp.h:68
bmp_result ico_analyse(ico_collection *ico, size_t size, const uint8_t *data)
Definition: libnsbmp.c:214
void ico_collection_create(ico_collection *ico, bmp_bitmap_callback_vt *bitmap_callbacks)
Definition: libnsbmp.c:140
bmp_bitmap_cb_create bitmap_create
Definition: libnsbmp.h:57
bmp_bitmap_cb_putcolor bitmap_put_color
Definition: libnsbmp.h:61
uint32_t height
Definition: libnsbmp.h:69
Definition: libnsbmp.h:42
Definition: libnsbmp.h:30
void(Delete(void))
Definition: mainwnd.c:360
Definition: libnsbmp.h:64