Subversion Repositories freemyipod

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
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