Files
kernel/include/sys/display.h
T
2020-06-19 16:40:50 +03:00

39 lines
893 B
C

#pragma once
#include "sys/types.h"
#include "sys/list.h"
// Not a text mode
#define DISP_GRAPHIC (1 << 0)
// Has a linear framebuffer
#define DISP_LFB (1 << 1)
struct display {
// Text modes: set character at y, x
void (*setc) (uint16_t y, uint16_t x, uint16_t c);
// If DISP_GRAPHIC and not DISP_LFB
void (*setpixel) (uint32_t x, uint32_t y, uint32_t c);
uint32_t flags;
// If DISP_GRAPHIC
uint32_t width_pixels, height_pixels;
uint32_t bpp, pitch;
// If DISP_LFB
uintptr_t framebuffer;
uint16_t width_chars, height_chars;
// Private data
void *data;
struct list_head list;
};
extern int g_display_blink_state;
void display_add(struct display *d);
struct display *display_create(void);
void display_setc(struct display *disp, uint16_t y, uint16_t x, uint16_t ch);
struct display *display_get_default(void);