47 lines
925 B
C
47 lines
925 B
C
#ifndef RENDERER_COMMON_H
|
|
#define RENDERER_COMMON_H
|
|
|
|
#include <stdbool.h>
|
|
#include <stdint.h>
|
|
|
|
#define FONT_WIDTH 16
|
|
#define FONT_HEIGHT 16
|
|
|
|
typedef struct {
|
|
unsigned int x, y;
|
|
unsigned int color;
|
|
} RenderBase;
|
|
|
|
typedef struct {
|
|
RenderBase base;
|
|
const char *text;
|
|
void *font; // Opaque font pointer
|
|
} RenderText;
|
|
|
|
typedef struct {
|
|
unsigned int x, y;
|
|
unsigned int width, height;
|
|
unsigned int color;
|
|
} RenderObject;
|
|
|
|
typedef struct Renderer Renderer;
|
|
|
|
struct Renderer {
|
|
volatile unsigned int *fb;
|
|
unsigned int width;
|
|
unsigned int height;
|
|
unsigned int pitch;
|
|
|
|
bool (*init)(Renderer *renderer);
|
|
|
|
void (*clear_screen)(Renderer *renderer, unsigned int color);
|
|
void (*draw_text)(Renderer *renderer, RenderText *text_obj);
|
|
};
|
|
|
|
/**
|
|
* Initializes the framebuffer (common across both renderers)
|
|
*/
|
|
bool renderer_init_common(Renderer *renderer);
|
|
|
|
#endif // RENDERER_COMMON_H
|