From 7069bfb303e86354406c94d59e1e2e47f126c984 Mon Sep 17 00:00:00 2001 From: lvntky Date: Mon, 18 Nov 2024 22:45:57 +0300 Subject: initial --- fbgl.h | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 fbgl.h (limited to 'fbgl.h') diff --git a/fbgl.h b/fbgl.h new file mode 100644 index 0000000..7dbcfb4 --- /dev/null +++ b/fbgl.h @@ -0,0 +1,92 @@ +#ifndef __FBGL_H__ +#define __FBGL_H__ + +#define VERSION "0.1.0" +#define NAME "FBGL" +#define DEFAULT_FB "/dev/fb0" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/** +* 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__ -- cgit v1.2.3