| 881 |
theseven |
1 |
#ifndef __INTERFACE_FRAMEBUFFER_FRAMEBUFFER_H__
|
|
|
2 |
#define __INTERFACE_FRAMEBUFFER_FRAMEBUFFER_H__
|
|
|
3 |
|
|
|
4 |
#include "global.h"
|
|
|
5 |
|
|
|
6 |
|
|
|
7 |
enum __attribute__((packed)) framebuffer_format
|
|
|
8 |
{
|
|
|
9 |
FRAMEBUFFER_FORMAT_I1 = 0,
|
|
|
10 |
FRAMEBUFFER_FORMAT_X1R1G1B1,
|
|
|
11 |
FRAMEBUFFER_FORMAT_I1R1G1B1,
|
|
|
12 |
FRAMEBUFFER_FORMAT_X7I1,
|
|
|
13 |
FRAMEBUFFER_FORMAT_X5R1G1B1,
|
|
|
14 |
FRAMEBUFFER_FORMAT_X2R2G2B2,
|
|
|
15 |
FRAMEBUFFER_FORMAT_R2G3B3,
|
|
|
16 |
FRAMEBUFFER_FORMAT_X1R5G5B5_LE,
|
|
|
17 |
FRAMEBUFFER_FORMAT_X1R5G5B5_BE,
|
|
|
18 |
FRAMEBUFFER_FORMAT_R5G6B5_LE,
|
|
|
19 |
FRAMEBUFFER_FORMAT_R5G6B5_BE,
|
|
|
20 |
FRAMEBUFFER_FORMAT_R8G8B8_LE,
|
|
|
21 |
FRAMEBUFFER_FORMAT_R8G8B8_BE,
|
|
|
22 |
FRAMEBUFFER_FORMAT_X31I1_LE,
|
|
|
23 |
FRAMEBUFFER_FORMAT_X31I1_BE,
|
|
|
24 |
FRAMEBUFFER_FORMAT_X8R8G8B8_LE,
|
|
|
25 |
FRAMEBUFFER_FORMAT_X8R8G8B8_BE,
|
|
|
26 |
};
|
|
|
27 |
|
|
|
28 |
extern const uint8_t framebuffer_format_wordsize[];
|
|
|
29 |
|
|
|
30 |
enum __attribute__((packed)) framebuffer_conversion_quality
|
|
|
31 |
{
|
|
|
32 |
FRAMEBUFFER_CONVERSION_QUALITY_CLIP,
|
|
|
33 |
FRAMEBUFFER_CONVERSION_QUALITY_DITHER,
|
|
|
34 |
};
|
|
|
35 |
|
|
|
36 |
struct __attribute__((packed,aligned(4))) framebuffer_instance
|
|
|
37 |
{
|
|
|
38 |
uint16_t width;
|
|
|
39 |
uint16_t height;
|
|
|
40 |
enum framebuffer_format format;
|
|
|
41 |
uint32_t reserved : 24;
|
|
|
42 |
void* data;
|
|
|
43 |
void (*update_handler)(const void* arg, const struct framebuffer_instance* instance, int x, int y, int w, int h);
|
|
|
44 |
const void* update_handler_arg;
|
|
|
45 |
};
|
|
|
46 |
|
|
|
47 |
|
|
|
48 |
extern uint32_t framebuffer_color_to_rgb888_be(enum framebuffer_format format, uint32_t color);
|
|
|
49 |
extern uint32_t framebuffer_color_from_rgb888_be(enum framebuffer_format format, uint32_t color);
|
|
|
50 |
extern uint32_t framebuffer_convert_color(enum framebuffer_format from, enum framebuffer_format to, uint32_t color);
|
|
|
51 |
extern uint32_t framebuffer_get_pixel(const struct framebuffer_instance* instance, int x, int y);
|
|
|
52 |
extern void framebuffer_set_pixel(const struct framebuffer_instance* instance, int x, int y, uint32_t color);
|
|
|
53 |
extern void framebuffer_fill(const struct framebuffer_instance* instance, int x, int y, int w, int h,
|
|
|
54 |
enum framebuffer_format format, uint32_t color, enum framebuffer_conversion_quality quality);
|
|
|
55 |
extern void framebuffer_blit(const struct framebuffer_instance* infb, int inx, int iny,
|
|
|
56 |
const struct framebuffer_instance* outfb, int outx, int outy,
|
|
|
57 |
int w, int h, enum framebuffer_conversion_quality quality);
|
|
|
58 |
extern void framebuffer_update(const struct framebuffer_instance* instance, int x, int y, int w, int h);
|
|
|
59 |
|
|
|
60 |
|
|
|
61 |
#endif
|