commit 983dda3
uint
·
2026-06-06 17:59:13 +0000 UTC
parent 0c50d4e
basic-window: add brushstroke, gradient
1 files changed,
+44,
-12
+44,
-12
1@@ -2,24 +2,30 @@
2
3 #include "../../maus.h"
4
5+int mx, my;
6+
7 void handle_ev(Maus* mw, MausEvent* ev)
8 {
9 switch (ev->type) {
10 case MAUS_EV_CLOSE:
11 maus_close(mw);
12 exit(EXIT_SUCCESS);
13+ break;
14 case MAUS_EV_KEY:
15 if (ev->key.key == MAUS_KEY_Q) {
16 maus_close(mw);
17 exit(EXIT_SUCCESS);
18- }
19+ } break;
20 case MAUS_EV_MOUSE_BUTTON:
21 break;
22- case MAUS_EV_MOUSE_MOTION:
23- break;
24+ case MAUS_EV_MOUSE_MOTION: {
25+ mx = ev->mouse.motion.x;
26+ my = ev->mouse.motion.y;
27+
28+ } break;
29 case MAUS_EV_RESIZE: {
30 maus_resize(mw, ev->resize.width, ev->resize.height);
31- }
32+ } break;
33 case MAUS_EV_NONE:
34 break;
35 }
36@@ -33,21 +39,47 @@ int main(void)
37 maus_create_window(mw);
38
39 MausEvent ev;
40- /* waiting -- used in applications
41- for (;;) {
42- maus_event_wait(mw, &ev);
43- handle_ev(&ev, mw);
44- }
45- */
46+ // waiting -- used in applications
47+ /* for (;;) { */
48+ /* maus_event_wait(mw, &ev); */
49+ /* handle_ev(&ev, mw); */
50+ /* } */
51
52- /* constant polling -- used in games */
53+
54+ // constant polling -- used in games
55+ maus_fb_clear(mw, MAUS_COL_RGBA(255, 255, 255, 255));
56+ MausColor red = { 255, 255, 0, 0 };
57 for (;;) {
58 while (maus_event_poll(mw, &ev))
59 (void) handle_ev(mw, &ev);
60- maus_fb_clear(mw, MAUS_COL_RGBA(255, 255, 255, 255));
61+ if (mx >= 0 && my >= 0 &&
62+ mx < (int32_t)mw->width &&
63+ my < (int32_t)mw->height) {
64+ MAUS_PIXEL_AT(mw, mx, my) = MAUS_UNPACK_COL(red);
65+ }
66+
67+ red.b++;
68+ for (uint32_t y = 0; y < mw->height/2; y++) {
69+ for (uint32_t x = 0; x < mw->width/2; x++) {
70+ MAUS_PIXEL_AT(mw, x, y) = MAUS_UNPACK_COL(red);
71+ }
72+ }
73+
74 maus_present(mw);
75 }
76
77+ // rainbow
78+ /* uint8_t r = 0; */
79+ /* uint8_t g = 86; */
80+ /* uint8_t b = 172; */
81+ /* for (;;) { */
82+ /* while (maus_event_poll(mw, &ev)) */
83+ /* (void) handle_ev(mw, &ev); */
84+
85+ /* maus_fb_clear(mw, MAUS_COL_RGBA(r++, g++, b++, 255)); */
86+ /* maus_present(mw); */
87+ /* } */
88+
89 maus_close(mw);
90 }
91