64 lines
2.2 KiB
C
64 lines
2.2 KiB
C
|
#ifndef __DRAW_H__
|
||
|
#define __DRAW_H__
|
||
|
|
||
|
#define WIDTH 480
|
||
|
#define HEIGHT 240
|
||
|
|
||
|
typedef unsigned char u8;
|
||
|
typedef signed char i8;
|
||
|
typedef unsigned short u16;
|
||
|
typedef signed short i16;
|
||
|
typedef unsigned int u32;
|
||
|
typedef signed int i32;
|
||
|
typedef u16 Color;
|
||
|
|
||
|
extern Color framebuffer[WIDTH * HEIGHT];
|
||
|
|
||
|
#define rgb565(r, g, b) ((((u16)r & 0b11111000) << 8) | (((u16)g & 0b11111100) << 3) | (((u16)b & 0xff) >> 3))
|
||
|
#define rgb(r, g, b) (((u32)(r & 0xff) << 24) | ((u32)(g & 0xff) << 16) | ((u32)(b & 0xff) << 8) | 0xff)
|
||
|
|
||
|
void from_hsv(u8 h, u8 s, u8 v, u8* r, u8* g, u8* b);
|
||
|
void to_hsv(u8 r, u8 g, u8 b, u8* h, u8* s, u8* v);
|
||
|
void clear_screen();
|
||
|
void draw_point(i32 x, i32 y, Color color);
|
||
|
void fill_rect(i32 x, i32 y, i32 width, i32 height, Color color);
|
||
|
void draw_rect(i32 x, i32 y, i32 width, i32 height, Color color);
|
||
|
void draw_line(i32 x0, i32 y0, i32 x1, i32 y1, Color color);
|
||
|
void draw_circle(i32 xm, i32 ym, i32 r, Color color);
|
||
|
void horizontal_line(i32 x1, i32 x2, i32 y, Color color);
|
||
|
void fill_circle(i32 xm, i32 ym, i32 r, Color color);
|
||
|
void copy(int n, float *points, float* result);
|
||
|
void scale(int n, float* points, float factorX, float factorY);
|
||
|
void translate(int n, float* points, float x, float y);
|
||
|
void rotate(int n, float* points, float angle);
|
||
|
void draw(int n, float* points, int close, Color color);
|
||
|
void fill(int n, float* points, int wrap, Color color);
|
||
|
int point_in_polygon(int n, float* points, float x, float y);
|
||
|
int line_intersect(float* l1, float* l2);
|
||
|
int polygon_intersect(int n, float* a, int m, float* b);
|
||
|
|
||
|
#define MIRROR_V 1
|
||
|
#define MIRROR_H 2
|
||
|
#define ROTATE_L 4
|
||
|
void blit(i32 x, i32 y, i32 source_x, i32 source_y, i32 width, i32 height, Color* source, i32 source_width, i32 source_height);
|
||
|
void blit_masked(i32 x, i32 y, i32 source_x, i32 source_y, i32 width, i32 height, Color mask, Color* source, i32 source_width, i32 source_height);
|
||
|
|
||
|
typedef struct {
|
||
|
char text[4];
|
||
|
u8 width, height;
|
||
|
u16 offset;
|
||
|
} glyph_t;
|
||
|
|
||
|
typedef struct {
|
||
|
u8* pixels;
|
||
|
glyph_t* glyphs;
|
||
|
int num_glyphs;
|
||
|
int line_height;
|
||
|
} font_t;
|
||
|
|
||
|
font_t* load_font(char* font_data, int font_data_size);
|
||
|
void draw_text(font_t* font, i32 x, i32 y, Color color, char* text);
|
||
|
void draw_printf(font_t* font, i32 x, i32 y, Color color, char* format, ...);
|
||
|
|
||
|
#endif
|