blob: 7dbcfb49e042b726d0b0478b6139071bf98868f1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
#ifndef __FBGL_H__
#define __FBGL_H__
#define VERSION "0.1.0"
#define NAME "FBGL"
#define DEFAULT_FB "/dev/fb0"
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <unistd.h>
#include <linux/fb.h>
#include <stddef.h>
#include <stdio.h>
/**
* Structs
*/
typedef struct fbgl {
int width;
int height;
int fd;
size_t screen_size;
uint32_t *pixels;
struct fb_var_screeninfo vinfo; // Variable screen information
struct fb_fix_screeninfo finfo; // Fixed screen information
} fbgl_t;
#ifdef __cplusplus
extern "C" {
#endif
/**
* General purpose methods
*/
char const *fbgl_name_info(void);
char const *fbgl_version_info(void);
/*Create and destroy methods*/
int fbgl_init(const char *device, fbgl_t *fb);
void fbgl_destroy(void);
/**
* Drawing functions
*/
void fbgl_clear(uint32_t color);
void fbgl_put_pixel(int x, int y, uint32_t color);
void fbgl_draw_line(int x0, int y0, int x1, int y1, uint32_t color);
/**
* Display methods
*/
void fbgl_display();
/**
* Access framebuffer data methods
*/
uint32_t *fb_get_data(void);
int fb_get_width(void);
int fb_get_height(void);
#ifdef FBGL_IMPLEMENTATION
char const *fbgl_name_info(void)
{
return NAME;
}
char const *fbgl_version_info(void)
{
return VERSION;
}
int fbgl_init(const char *device, fbgl_t *fb)
{
fb->fd = device == NULL ? open(DEFAULT_FB, O_RDWR) :
open(device, O_RDWR);
if (fb->fd == -1) {
perror("Error openning framebuffer device");
return -1;
}
}
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif // __FBGL_H__
|