restrcuct
This commit is contained in:
59
include/renderer.h
Normal file
59
include/renderer.h
Normal file
@@ -0,0 +1,59 @@
|
||||
#ifndef RENDERER_H
|
||||
#define RENDERER_H
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdbool.h>
|
||||
#include "font_pack.h"
|
||||
|
||||
typedef struct RenderObject {
|
||||
unsigned int x, y;
|
||||
unsigned int width, height;
|
||||
unsigned int color;
|
||||
} RenderObject;
|
||||
|
||||
typedef struct RenderText {
|
||||
RenderObject base; // Position, size, color
|
||||
const char *text; // String to render
|
||||
const FontPack *font; // Font used for rendering
|
||||
} RenderText;
|
||||
|
||||
typedef struct Renderer {
|
||||
volatile unsigned int *fb;
|
||||
unsigned int width;
|
||||
unsigned int height;
|
||||
unsigned int pitch;
|
||||
|
||||
void (*clear_screen)(struct Renderer *renderer, unsigned int color);
|
||||
void (*draw_rect)(struct Renderer *renderer, RenderObject *obj);
|
||||
void (*draw_text)(struct Renderer *renderer, RenderText *text);
|
||||
void (*draw_objects)(struct Renderer *renderer, RenderObject *objs[], unsigned int count);
|
||||
} Renderer;
|
||||
|
||||
// ===== Window definition =====
|
||||
typedef struct Window {
|
||||
RenderObject frame; // Outer frame of the window
|
||||
RenderObject content_area; // Area inside window (excluding titlebar)
|
||||
RenderText title_bar; // Title bar text
|
||||
unsigned int background_color; // Background fill color for content
|
||||
bool visible; // Visibility flag
|
||||
} Window;
|
||||
|
||||
// Function to initialize a Window
|
||||
void window_init(Window *win,
|
||||
unsigned int x, unsigned int y,
|
||||
unsigned int width, unsigned int height,
|
||||
const char *title, const FontPack *font,
|
||||
unsigned int title_color, unsigned int bg_color,
|
||||
unsigned int text_color);
|
||||
|
||||
// Function to render the Window
|
||||
void window_draw(Renderer *renderer, Window *win);
|
||||
|
||||
// ===== Renderer functions =====
|
||||
bool renderer_init(Renderer *renderer);
|
||||
void clear_screen_impl(Renderer *renderer, unsigned int color);
|
||||
void draw_rect_impl(Renderer *renderer, RenderObject *obj);
|
||||
void draw_text_impl(Renderer *renderer, RenderText *text);
|
||||
void draw_objects_impl(Renderer *renderer, RenderObject *objs[], unsigned int count);
|
||||
|
||||
#endif // RENDERER_H
|
||||
Reference in New Issue
Block a user