Tutorial: using mouse ===================== We want to use the mouse. At the position of the mouse-pointer a single white pixel is drawn. When moving the mouse, the pixel also moves. When moving the mouse with left mouse-button pressed, a line is drawn from the position where the button was pressed to the actual position. step 1 At first we have to initialize VgaGames and open a window or switch to graphical screen, then to check for the mouse. ==>
int main(int argc, char ** argv) {
char * arg0; // for the name of the program
/* initialize vgagames, always pass argv[0] */
if (vg_init_vgagames(argv[0],0,NULL) < 0) {exit(1);}
/* open window */
if ((arg0=strrchr(argv[0],'/'))==NULL) {arg0=argv[0];} else {arg0++;}
if (vg_window_open(arg0,0,0) < 0) {exit(1);}
/* check for mouse */
if (!vg_mouse_found()) {
fprintf(stderr,"Cannot find a mouse\n");
vg_window_close(); // close window
exit(1);
}
|
/* program loop */
for (;;) {
/* update key and mouse events */
vg_key_update();
if (vg_mouse_x() >= 0) { // mouse inside the window
/* draw the pixel */
int x,y;
x=vg_mouse_x(); // get x-position of mouse
y=vg_mouse_y(); // get y-position of mouse
vg_draw_pixel(NULL,x,y,RGB_WHITE);
/* now flush window out to visible screen */
vg_window_flush();
}
/* wait a little time up to 70 milliseconds */
vg_wait_time(70);
}
|
/* program loop */
for (;;) {
/* update key and mouse events */
vg_key_update();
/* clear the window (not visible unless called vg_window_flush()) */
vg_bitmap_clear(NULL, RGB_BLACK);
if (vg_mouse_x() >= 0) { // mouse inside the window
static int press_x=0, press_y=0; // where mouse-button was pressed
int x,y;
x=vg_mouse_x(); // get x-position of mouse
y=vg_mouse_y(); // get y-position of mouse
/* check whether left mouse-button is pressed */
if (vg_mouse_pressed(MOUSE_LEFT, LONGKEY)) {
/* draw a line */
vg_draw_line(NULL,press_x,press_y,x,y,RGB_WHITE);
} else {
/* draw the pixel */
vg_draw_pixel(NULL,x,y,RGB_WHITE);
press_x=x; // remember mouse x-position
press_y=y; // remember mouse y-position
}
/* now flush window out to visible screen */
vg_window_flush();
}
/* wait a little time up to 70 milliseconds */
vg_wait_time(70);
}
|
/* program loop */
for (;;) {
/* update key and mouse events */
vg_key_update();
if (vg_mouse_x() >= 0) { // mouse inside the window
static int press_x=0, press_y=0; // where mouse-button was pressed
int x,y;
x=vg_mouse_x(); // get x-position of mouse
y=vg_mouse_y(); // get y-position of mouse
/* check whether left mouse-button is pressed */
if (vg_mouse_pressed(MOUSE_LEFT, LONGKEY)) {
/* draw a line */
vg_draw_line(NULL,press_x,press_y,x,y,RGB_WHITE);
} else {
/* draw the pixel */
vg_draw_pixel(NULL,x,y,RGB_WHITE);
press_x=x; // remember mouse x-position
press_y=y; // remember mouse y-position
}
/* here comes an info text */
/* now flush window out to visible screen */
vg_window_flush();
/* check for right mouse-button to end the program,
instead of using SHORTKEY here we also could have used LONGKEY
*/
if (vg_mouse_pressed(MOUSE_RIGHT, SHORTKEY)) {
break;
}
}
/* wait a little time up to 70 milliseconds */
vg_wait_time(70);
}
/* close window */
vg_window_close();
exit(0);
}
|