Banjo API 0.0.1
Multi-purpose C99 API
Loading...
Searching...
No Matches
pixel.h
Go to the documentation of this file.
1
9#pragma once
10
11#include <banjo/api.h>
12
15typedef enum {
20
21 BJ_PIXEL_MODE_XRGB1555 = 0x01000210u,
22 BJ_PIXEL_MODE_RGB565 = 0x01020210u,
23 BJ_PIXEL_MODE_XRGB8888 = 0x01010220u,
24
25 BJ_PIXEL_MODE_BGR24 = 0x02000318u,
27
38BANJO_EXPORT void bj_pixel_rgb(
39 bj_pixel_mode mode,
40 uint32_t value,
41 uint8_t* p_red,
42 uint8_t* p_green,
43 uint8_t* p_blue
44);
45
56BANJO_EXPORT uint32_t bj_pixel_value(
57 bj_pixel_mode mode,
58 uint8_t red,
59 uint8_t green,
60 uint8_t blue
61);
62
78BANJO_EXPORT int bj_compute_pixel_mode(
79 uint8_t bpp,
80 uint32_t red_mask,
81 uint32_t green_mask,
82 uint32_t blue_mask
83);
84
101BANJO_EXPORT size_t bj_compute_bitmap_stride(
102 size_t width,
103 bj_pixel_mode mode
104);
105
107#define BJ_PIXEL_TYPE_INDEX 0x01
109#define BJ_PIXEL_TYPE_BITFIELD 0x02
111#define BJ_PIXEL_TYPE_BYTES 0x03
112
114#define BJ_PIXEL_ORDER_RGB 0x01
116#define BJ_PIXEL_ORDER_XRGB BJ_PIXEL_ORDER_RGB
118#define BJ_PIXEL_ORDER_BGR 0x02
120#define BJ_PIXEL_ORDER_XBGR BJ_PIXEL_ORDER_BGR
122#define BJ_PIXEL_ORDER_RGBX 0x03
124#define BJ_PIXEL_ORDER_BGRX 0x04
126#define BJ_PIXEL_ORDER_ARGB 0x05
128#define BJ_PIXEL_ORDER_ABGR 0x06
130#define BJ_PIXEL_ORDER_RGBA 0x07
132#define BJ_PIXEL_ORDER_BGRA 0x08
133
135#define BJ_PIXEL_LAYOUT_1555 0x00
137#define BJ_PIXEL_LAYOUT_8888 0x01
139#define BJ_PIXEL_LAYOUT_565 0x02
140
148#define BJ_PIXEL_MODE_MAKE(bpp, type, layout, order) (((order & 0xFF) << 24) | ((layout & 0xFF) << 16) | ((type & 0xFF) << 8) | (bpp & 0xFF))
149
154#define BJ_PIXEL_MODE_MAKE_INDEXED(bpp) BJ_PIXEL_MODE_MAKE(bpp, BJ_PIXEL_TYPE_INDEX, 0, 0)
155
161#define BJ_PIXEL_MODE_MAKE_BITFIELD_16(layout, order) BJ_PIXEL_MODE_MAKE(16, BJ_PIXEL_TYPE_BITFIELD, layout, order)
162
168#define BJ_PIXEL_MODE_MAKE_BITFIELD_32(layout, order) BJ_PIXEL_MODE_MAKE(32, BJ_PIXEL_TYPE_BITFIELD, layout, order)
169
175#define BJ_PIXEL_MODE_MAKE_BYTES(bpp, order) BJ_PIXEL_MODE_MAKE(bpp, BJ_PIXEL_TYPE_BYTES, 0, order)
176
181#define BJ_PIXEL_GET_BPP(fmt) ((fmt) & 0xFF)
182
187#define BJ_PIXEL_GET_TYPE(fmt) (((fmt) >> 8) & 0xFF)
188
193#define BJ_PIXEL_GET_LAYOUT(fmt) (((fmt) >> 16) & 0xFF)
194
199#define BJ_PIXEL_GET_ORDER(fmt) (((fmt) >> 24) & 0xFF)
200
General-purpose definitions for Banjo API.
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.
size_t bj_compute_bitmap_stride(size_t width, bj_pixel_mode mode)
Returns the stride used for encoding a bitmaps in Banjo.
uint32_t bj_pixel_value(bj_pixel_mode mode, uint8_t red, uint8_t green, uint8_t blue)
Returns an opaque value representing a pixel color, given its RGB composition.
void bj_pixel_rgb(bj_pixel_mode mode, uint32_t value, uint8_t *p_red, uint8_t *p_green, uint8_t *p_blue)
Gets the RGB value of a pixel given its 32-bits representation.
bj_pixel_mode
Representation of a pixel encoding.
Definition pixel.h:15
@ BJ_PIXEL_MODE_RGB565
16bpp 565-RGB
Definition pixel.h:22
@ BJ_PIXEL_MODE_XRGB8888
32bpp RGB
Definition pixel.h:23
@ BJ_PIXEL_MODE_INDEXED_8
8bpp indexed
Definition pixel.h:19
@ BJ_PIXEL_MODE_INDEXED_4
4bpp indexed
Definition pixel.h:18
@ BJ_PIXEL_MODE_INDEXED_1
1bpp indexed
Definition pixel.h:17
@ BJ_PIXEL_MODE_XRGB1555
16bpp 555-RGB
Definition pixel.h:21
@ BJ_PIXEL_MODE_UNKNOWN
Unknown/Invalid pixel mode.
Definition pixel.h:16
@ BJ_PIXEL_MODE_BGR24
24bpp BGR
Definition pixel.h:25