39 lines
893 B
C
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);
|