From: uz Date: Sun, 27 Sep 2009 11:24:43 +0000 (+0000) Subject: Add mouse_setbox/mouse_getbox to the demo. X-Git-Tag: V2.13.0rc1~15 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=717840962b452f6120005aec92b26b4f66a4e17e;p=cc65 Add mouse_setbox/mouse_getbox to the demo. git-svn-id: svn://svn.cc65.org/cc65/trunk@4243 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- diff --git a/samples/mousedemo.c b/samples/mousedemo.c index 96b39eea4..1bea09a0d 100644 --- a/samples/mousedemo.c +++ b/samples/mousedemo.c @@ -84,13 +84,13 @@ static void DoWarning (void) -static void ShowState (unsigned char Invisible) -/* Display cursor visibility */ +static void ShowState (unsigned char Jailed, unsigned char Invisible) +/* Display jail and cursor state */ { gotoxy (0, 6); cclear (40); gotoxy (0, 6); - cprintf ("Mouse cursor %svisible", Invisible? "in" : ""); + cprintf ("Mouse cursor %svisible%s", Invisible? "in" : "", Jailed? ", jailed" : ""); } @@ -98,8 +98,11 @@ static void ShowState (unsigned char Invisible) int main (void) { struct mouse_info info; + struct mouse_box full_box; + struct mouse_box small_box; unsigned char Invisible; unsigned char Done; + unsigned char Jailed; /* Initialize the debugger */ DbgInit (0); @@ -134,47 +137,73 @@ int main (void) CheckError ("mouse_load_driver", mouse_load_driver (&mouse_def_callbacks, mouse_stddrv)); + /* Get the initial mouse bounding box */ + mouse_getbox (&full_box); + /* Print a help line */ revers (1); - cputsxy (0, 0, "d: debug h: hide q: quit s: show "); + cputsxy (0, 0, "d)ebug h)ide q)uit s)how j)ail "); revers (0); /* Test loop */ Done = 0; - ShowState (Invisible = 1); + Jailed = 0; + Invisible = 1; + ShowState (Jailed, Invisible); while (!Done) { + + /* Get the current mouse coordinates and button states and print them */ + mouse_info (&info); + gotoxy (0, 2); + cprintf ("X = %3d", info.pos.x); + gotoxy (0, 3); + cprintf ("Y = %3d", info.pos.y); + gotoxy (0, 4); + cprintf ("LB = %c", (info.buttons & MOUSE_BTN_LEFT)? '1' : '0'); + gotoxy (0, 5); + cprintf ("RB = %c", (info.buttons & MOUSE_BTN_RIGHT)? '1' : '0'); + + /* Handle user input */ if (kbhit ()) { switch (tolower (cgetc ())) { + case 'd': BREAK(); break; + case 'h': - ShowState (++Invisible); + ShowState (Jailed, ++Invisible); mouse_hide (); break; + + case 'j': + if (Jailed) { + Jailed = 0; + mouse_setbox (&full_box); + } else { + Jailed = 1; + small_box.minx = info.pos.x - 10; + small_box.miny = info.pos.y - 10; + small_box.maxx = info.pos.x + 10; + small_box.maxy = info.pos.y + 10; + mouse_setbox (&small_box); + } + ShowState (Jailed, Invisible); + break; + case 's': if (Invisible) { - ShowState (--Invisible); + ShowState (Jailed, --Invisible); mouse_show (); } break; + case 'q': Done = 1; break; } } - /* Get the current mouse coordinates and button states and print them */ - mouse_info (&info); - gotoxy (0, 2); - cprintf ("X = %3d", info.pos.x); - gotoxy (0, 3); - cprintf ("Y = %3d", info.pos.y); - gotoxy (0, 4); - cprintf ("LB = %c", (info.buttons & MOUSE_BTN_LEFT)? '1' : '0'); - gotoxy (0, 5); - cprintf ("RB = %c", (info.buttons & MOUSE_BTN_RIGHT)? '1' : '0'); - } /* Uninstall and unload the mouse driver */