Banjo API 1.0.0-rc.2
Low-level C99 game development API
Loading...
Searching...
No Matches
pixel.h
Go to the documentation of this file.
1
79#ifndef BJ_PIXEL_H
80#define BJ_PIXEL_H
81
82#include <banjo/api.h>
83
98#ifndef BJ_NO_TYPEDEF
100#endif
101
113 enum bj_pixel_mode mode,
114 uint32_t value,
115 uint8_t* red,
116 uint8_t* green,
117 uint8_t* blue
118);
119
131 enum bj_pixel_mode mode,
132 uint8_t red,
133 uint8_t green,
134 uint8_t blue
135);
136
153 uint8_t bpp,
154 uint32_t red_mask,
155 uint32_t green_mask,
156 uint32_t blue_mask
157);
158
176 size_t width,
177 enum bj_pixel_mode mode
178);
179
181#define BJ_PIXEL_TYPE_INDEX 0x01
183#define BJ_PIXEL_TYPE_BITFIELD 0x02
185#define BJ_PIXEL_TYPE_BYTES 0x03
186
188#define BJ_PIXEL_ORDER_RGB 0x01
190#define BJ_PIXEL_ORDER_XRGB BJ_PIXEL_ORDER_RGB
192#define BJ_PIXEL_ORDER_BGR 0x02
194#define BJ_PIXEL_ORDER_XBGR BJ_PIXEL_ORDER_BGR
196#define BJ_PIXEL_ORDER_RGBX 0x03
198#define BJ_PIXEL_ORDER_BGRX 0x04
200#define BJ_PIXEL_ORDER_ARGB 0x05
202#define BJ_PIXEL_ORDER_ABGR 0x06
204#define BJ_PIXEL_ORDER_RGBA 0x07
206#define BJ_PIXEL_ORDER_BGRA 0x08
207
209#define BJ_PIXEL_LAYOUT_1555 0x00
211#define BJ_PIXEL_LAYOUT_8888 0x01
213#define BJ_PIXEL_LAYOUT_565 0x02
214
222#define BJ_PIXEL_MODE_MAKE(bpp, type, layout, order) (((order & 0xFF) << 24) | ((layout & 0xFF) << 16) | ((type & 0xFF) << 8) | (bpp & 0xFF))
223
228#define BJ_PIXEL_MODE_MAKE_INDEXED(bpp) BJ_PIXEL_MODE_MAKE(bpp, BJ_PIXEL_TYPE_INDEX, 0, 0)
229
235#define BJ_PIXEL_MODE_MAKE_BITFIELD_16(layout, order) BJ_PIXEL_MODE_MAKE(16, BJ_PIXEL_TYPE_BITFIELD, layout, order)
236
242#define BJ_PIXEL_MODE_MAKE_BITFIELD_32(layout, order) BJ_PIXEL_MODE_MAKE(32, BJ_PIXEL_TYPE_BITFIELD, layout, order)
243
249#define BJ_PIXEL_MODE_MAKE_BYTES(bpp, order) BJ_PIXEL_MODE_MAKE(bpp, BJ_PIXEL_TYPE_BYTES, 0, order)
250
255#define BJ_PIXEL_GET_BPP(fmt) ((fmt) & 0xFF)
256
261#define BJ_PIXEL_GET_TYPE(fmt) (((fmt) >> 8) & 0xFF)
262
267#define BJ_PIXEL_GET_LAYOUT(fmt) (((fmt) >> 16) & 0xFF)
268
273#define BJ_PIXEL_GET_ORDER(fmt) (((fmt) >> 24) & 0xFF)
274
275#endif
General-purpose definitions for Banjo API.
#define BANJO_EXPORT
Definition api.h:163
int bj_compute_pixel_mode(uint8_t bpp, uint32_t red_mask, uint32_t green_mask, uint32_t blue_mask)
Determine the most suitable bj_pixel_mode from a set of masks.
void bj_make_pixel_rgb(enum bj_pixel_mode mode, uint32_t value, uint8_t *red, uint8_t *green, uint8_t *blue)
Gets the RGB value of a pixel given its 32-bits representation.
size_t bj_compute_bitmap_stride(size_t width, enum bj_pixel_mode mode)
Returns the stride used for encoding a bitmaps in Banjo.
uint32_t bj_get_pixel_value(enum bj_pixel_mode mode, uint8_t red, uint8_t green, uint8_t blue)
Returns an opaque value representing a pixel colour, given its RGB composition.
bj_pixel_mode
Representation of a pixel encoding.
Definition pixel.h:86
@ BJ_PIXEL_MODE_RGB565
16bpp 565-RGB
Definition pixel.h:93
@ BJ_PIXEL_MODE_XRGB8888
32bpp RGB
Definition pixel.h:94
@ BJ_PIXEL_MODE_INDEXED_8
8bpp indexed
Definition pixel.h:90
@ BJ_PIXEL_MODE_INDEXED_4
4bpp indexed
Definition pixel.h:89
@ BJ_PIXEL_MODE_INDEXED_1
1bpp indexed
Definition pixel.h:88
@ BJ_PIXEL_MODE_XRGB1555
16bpp 555-RGB
Definition pixel.h:92
@ BJ_PIXEL_MODE_UNKNOWN
Unknown/Invalid pixel mode.
Definition pixel.h:87
@ BJ_PIXEL_MODE_BGR24
24bpp BGR
Definition pixel.h:96