345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
0
|
#include "../src/draw.h" |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
1
|
|
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
2
|
int main() { |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
3
|
draw_debug = true; |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
4
|
draw_window *window; int32_t w = 800, h = 600; |
0db5818 |
Jakob Wakeling |
2024-03-10 23:32:36 |
5
|
if (draw_window_init(&window, w, h, "Draw", 0) == -1) { return -1; } |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
6
|
|
e9e9867 |
Jakob Wakeling |
2024-03-11 22:03:59 |
7
|
bool left = false, right = false; |
0db5818 |
Jakob Wakeling |
2024-03-10 23:32:36 |
8
|
uint32_t colour = 0xffff0000; |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
9
|
|
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
10
|
draw_buffer *buf = draw_buffer_init(w, h); |
0db5818 |
Jakob Wakeling |
2024-03-10 23:32:36 |
11
|
draw_buffer_clear(buf, 0xff000000); |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
12
|
|
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
13
|
for (draw_event e; (e = draw_window_event(window)).kind != DRAW_EVENT_EXIT;) switch (e.kind) { |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
14
|
case DRAW_EVENT_KEY: { |
0db5818 |
Jakob Wakeling |
2024-03-10 23:32:36 |
15
|
if (e.key.code == DRAW_KEY_1) { colour = 0xffff0000; } |
0db5818 |
Jakob Wakeling |
2024-03-10 23:32:36 |
16
|
if (e.key.code == DRAW_KEY_2) { colour = 0xff00ff00; } |
0db5818 |
Jakob Wakeling |
2024-03-10 23:32:36 |
17
|
if (e.key.code == DRAW_KEY_3) { colour = 0xff0000ff; } |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
18
|
} break; |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
19
|
case DRAW_EVENT_MOUSE: { |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
20
|
if (e.mouse.button == DRAW_MOUSE_LEFT) { |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
21
|
if (e.mouse.direction == DRAW_PRESS) { left = true; } |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
22
|
if (e.mouse.direction == DRAW_RELEASE) { left = false; } |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
23
|
} |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
24
|
else if (e.mouse.button == DRAW_MOUSE_RIGHT) { |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
25
|
if (e.mouse.direction == DRAW_PRESS) { right = true; } |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
26
|
if (e.mouse.direction == DRAW_RELEASE) { right = false; } |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
27
|
} |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
28
|
|
e9e9867 |
Jakob Wakeling |
2024-03-11 22:03:59 |
29
|
if (left) { draw_buffer_circle(buf, (point){e.mouse.x, e.mouse.y}, 6, colour, true); } |
e9e9867 |
Jakob Wakeling |
2024-03-11 22:03:59 |
30
|
if (right) { draw_buffer_circle(buf, (point){e.mouse.x, e.mouse.y}, 6, 0xff000000, true); } |
e9e9867 |
Jakob Wakeling |
2024-03-11 22:03:59 |
31
|
if (left || right) { goto redraw; } |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
32
|
} break; |
0db5818 |
Jakob Wakeling |
2024-03-10 23:32:36 |
33
|
case DRAW_EVENT_PAINT: redraw: { |
e9e9867 |
Jakob Wakeling |
2024-03-11 22:03:59 |
34
|
draw_window_draw(window, (point){0, 0}, buf, buf->bounds); |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
35
|
} break; |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
36
|
case DRAW_EVENT_RESIZE: { |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
37
|
w = e.resize.w; h = e.resize.h; |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
38
|
|
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
39
|
draw_buffer *old = buf; |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
40
|
buf = draw_buffer_init(w, h); |
0db5818 |
Jakob Wakeling |
2024-03-10 23:32:36 |
41
|
draw_buffer_clear(buf, 0xff000000); |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
42
|
draw_buffer_copy(buf, old, (point){0, 0}, old->bounds); |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
43
|
draw_buffer_free(&old); |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
44
|
} break; |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
45
|
default: { /* ignore */ } break; |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
46
|
} |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
47
|
|
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
48
|
quit: |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
49
|
draw_window_free(&window); return 0; |
345d96c |
Jakob Wakeling |
2024-03-10 19:36:28 |
50
|
} |
|
|
|
51
|
|