| ... | ... |
@@ -2,8 +2,7 @@ |
| 2 | 2 |
#include "mouse.h" |
| 3 | 3 |
|
| 4 | 4 |
/* |
| 5 |
-Copyright (c) 2021 Devine Lu Linvega |
|
| 6 |
-Copyright (c) 2021 Andrew Alderwick |
|
| 5 |
+Copyright (c) 2021 Devine Lu Linvega, Andrew Alderwick |
|
| 7 | 6 |
|
| 8 | 7 |
Permission to use, copy, modify, and distribute this software for any |
| 9 | 8 |
purpose with or without fee is hereby granted, provided that the above |
| ... | ... |
@@ -14,33 +13,33 @@ WITH REGARD TO THIS SOFTWARE. |
| 14 | 13 |
*/ |
| 15 | 14 |
|
| 16 | 15 |
void |
| 17 |
-mouse_down(Device *d, Uint8 mask) |
|
| 16 |
+mouse_down(Uxn *u, Uint8 *d, Uint8 mask) |
|
| 18 | 17 |
{
|
| 19 |
- d->dat[6] |= mask; |
|
| 20 |
- uxn_eval(d->u, GETVECTOR(d)); |
|
| 18 |
+ d[6] |= mask; |
|
| 19 |
+ uxn_eval(u, GETVEC(d)); |
|
| 21 | 20 |
} |
| 22 | 21 |
|
| 23 | 22 |
void |
| 24 |
-mouse_up(Device *d, Uint8 mask) |
|
| 23 |
+mouse_up(Uxn *u, Uint8 *d, Uint8 mask) |
|
| 25 | 24 |
{
|
| 26 |
- d->dat[6] &= (~mask); |
|
| 27 |
- uxn_eval(d->u, GETVECTOR(d)); |
|
| 25 |
+ d[6] &= (~mask); |
|
| 26 |
+ uxn_eval(u, GETVEC(d)); |
|
| 28 | 27 |
} |
| 29 | 28 |
|
| 30 | 29 |
void |
| 31 |
-mouse_pos(Device *d, Uint16 x, Uint16 y) |
|
| 30 |
+mouse_pos(Uxn *u, Uint8 *d, Uint16 x, Uint16 y) |
|
| 32 | 31 |
{
|
| 33 |
- DEVPOKE16(0x2, x); |
|
| 34 |
- DEVPOKE16(0x4, y); |
|
| 35 |
- uxn_eval(d->u, GETVECTOR(d)); |
|
| 32 |
+ POKDEV(0x2, x); |
|
| 33 |
+ POKDEV(0x4, y); |
|
| 34 |
+ uxn_eval(u, GETVEC(d)); |
|
| 36 | 35 |
} |
| 37 | 36 |
|
| 38 | 37 |
void |
| 39 |
-mouse_scroll(Device *d, Uint16 x, Uint16 y) |
|
| 38 |
+mouse_scroll(Uxn *u, Uint8 *d, Uint16 x, Uint16 y) |
|
| 40 | 39 |
{
|
| 41 |
- DEVPOKE16(0xa, x); |
|
| 42 |
- DEVPOKE16(0xc, -y); |
|
| 43 |
- uxn_eval(d->u, GETVECTOR(d)); |
|
| 44 |
- DEVPOKE16(0xa, 0); |
|
| 45 |
- DEVPOKE16(0xc, 0); |
|
| 40 |
+ POKDEV(0xa, x); |
|
| 41 |
+ POKDEV(0xc, -y); |
|
| 42 |
+ uxn_eval(u, GETVEC(d)); |
|
| 43 |
+ POKDEV(0xa, 0); |
|
| 44 |
+ POKDEV(0xc, 0); |
|
| 46 | 45 |
} |
| ... | ... |
@@ -1,6 +1,5 @@ |
| 1 | 1 |
/* |
| 2 |
-Copyright (c) 2021 Devine Lu Linvega |
|
| 3 |
-Copyright (c) 2021 Andrew Alderwick |
|
| 2 |
+Copyright (c) 2021 Devine Lu Linvega, Andrew Alderwick |
|
| 4 | 3 |
|
| 5 | 4 |
Permission to use, copy, modify, and distribute this software for any |
| 6 | 5 |
purpose with or without fee is hereby granted, provided that the above |
| ... | ... |
@@ -10,7 +9,7 @@ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
| 10 | 9 |
WITH REGARD TO THIS SOFTWARE. |
| 11 | 10 |
*/ |
| 12 | 11 |
|
| 13 |
-void mouse_down(Device *d, Uint8 mask); |
|
| 14 |
-void mouse_up(Device *d, Uint8 mask); |
|
| 15 |
-void mouse_pos(Device *d, Uint16 x, Uint16 y); |
|
| 16 |
-void mouse_scroll(Device *d, Uint16 x, Uint16 y); |
|
| 12 |
+void mouse_down(Uxn *u, Uint8 *d, Uint8 mask); |
|
| 13 |
+void mouse_up(Uxn *u, Uint8 *d, Uint8 mask); |
|
| 14 |
+void mouse_pos(Uxn *u, Uint8 *d, Uint16 x, Uint16 y); |
|
| 15 |
+void mouse_scroll(Uxn *u, Uint8 *d, Uint16 x, Uint16 y); |
| ... | ... |
@@ -26,6 +26,12 @@ typedef unsigned int Uint32; |
| 26 | 26 |
#define DEVPOKE16(x, y) { d->dat[(x)] = (y) >> 8; d->dat[(x) + 1] = (y); }
|
| 27 | 27 |
#define GETVECTOR(d) ((d)->dat[0] << 8 | (d)->dat[1]) |
| 28 | 28 |
|
| 29 |
+/* new macros */ |
|
| 30 |
+ |
|
| 31 |
+#define GETVEC(d) ((d)[0] << 8 | (d)[1]) |
|
| 32 |
+#define POKDEV(x, y) { d[(x)] = (y) >> 8; d[(x) + 1] = (y); }
|
|
| 33 |
+#define PEKDEV(o, x) { (o) = (d[(x)] << 8) + d[(x) + 1]; }
|
|
| 34 |
+ |
|
| 29 | 35 |
/* clang-format on */ |
| 30 | 36 |
|
| 31 | 37 |
typedef struct {
|
| ... | ... |
@@ -402,15 +402,13 @@ handle_events(Uxn *u) |
| 402 | 402 |
} |
| 403 | 403 |
/* Mouse */ |
| 404 | 404 |
else if(event.type == SDL_MOUSEMOTION) |
| 405 |
- mouse_pos(devmouse, |
|
| 406 |
- clamp(event.motion.x - PAD, 0, uxn_screen.width - 1), |
|
| 407 |
- clamp(event.motion.y - PAD, 0, uxn_screen.height - 1)); |
|
| 405 |
+ mouse_pos(u, devmouse->dat, clamp(event.motion.x - PAD, 0, uxn_screen.width - 1), clamp(event.motion.y - PAD, 0, uxn_screen.height - 1)); |
|
| 408 | 406 |
else if(event.type == SDL_MOUSEBUTTONUP) |
| 409 |
- mouse_up(devmouse, SDL_BUTTON(event.button.button)); |
|
| 407 |
+ mouse_up(u, devmouse->dat, SDL_BUTTON(event.button.button)); |
|
| 410 | 408 |
else if(event.type == SDL_MOUSEBUTTONDOWN) |
| 411 |
- mouse_down(devmouse, SDL_BUTTON(event.button.button)); |
|
| 409 |
+ mouse_down(u, devmouse->dat, SDL_BUTTON(event.button.button)); |
|
| 412 | 410 |
else if(event.type == SDL_MOUSEWHEEL) |
| 413 |
- mouse_scroll(devmouse, event.wheel.x, event.wheel.y); |
|
| 411 |
+ mouse_scroll(u, devmouse->dat, event.wheel.x, event.wheel.y); |
|
| 414 | 412 |
/* Controller */ |
| 415 | 413 |
else if(event.type == SDL_TEXTINPUT) |
| 416 | 414 |
controller_key(devctrl, event.text.text[0]); |