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