Ignore:
Timestamp:
Dec 31, 2003, 2:16:47 AM (16 years ago)
Author:
Sam Hocevar
Message:
  • src/io.c: + Mouse support under X11. + Split the mouse motion and mouse click events.
  • examples/demo.c: + Mouse motion support.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/examples/demo.c

    r268 r287  
    7272    while(!quit)
    7373    {
    74         int event = caca_get_event();
    75 
    76         if(event && demo)
     74        int menu = 0, mouse = 0, xmouse = 0, ymouse = 0;
     75        int event;
     76
     77        while((event = caca_get_event()))
     78        {
     79            if(demo && (event & CACA_EVENT_KEY_PRESS))
     80            {
     81                menu = 1;
     82                demo = NULL;
     83            }
     84            else if(event & CACA_EVENT_KEY_PRESS)
     85            {
     86                switch(event & 0xffff)
     87                {
     88                case 'q':
     89                case 'Q':
     90                    demo = NULL;
     91                    quit = 1;
     92                    break;
     93                case 'o':
     94                case 'O':
     95                    outline = (outline + 1) % 3;
     96                    display_menu();
     97                    break;
     98                case 'b':
     99                case 'B':
     100                    bounds = (bounds + 1) % 2;
     101                    display_menu();
     102                    break;
     103                case 'd':
     104                case 'D':
     105                    dithering = (dithering + 1) % 5;
     106                    caca_set_dithering(dithering);
     107                    display_menu();
     108                    break;
     109                case 'c':
     110                    demo = demo_color;
     111                    break;
     112                case 'f':
     113                case 'F':
     114                    demo = demo_all;
     115                    break;
     116                case '1':
     117                    demo = demo_dots;
     118                    break;
     119                case '2':
     120                    demo = demo_lines;
     121                    break;
     122                case '3':
     123                    demo = demo_boxes;
     124                    break;
     125                case '4':
     126                    demo = demo_triangles;
     127                    break;
     128                case '5':
     129                    demo = demo_ellipses;
     130                    break;
     131                case 's':
     132                case 'S':
     133                    if(sprite)
     134                        demo = demo_sprites;
     135                    break;
     136                case 'r':
     137                case 'R':
     138                    demo = demo_render;
     139                    break;
     140                }
     141
     142                if(demo)
     143                    caca_clear();
     144            }
     145            else if(event & CACA_EVENT_MOUSE_MOTION)
     146            {
     147                mouse = 1;
     148                xmouse = (event & 0xfff000) >> 12;
     149                ymouse = event & 0xfff;
     150            }
     151        }
     152
     153        if(menu || (mouse && !demo))
    77154        {
    78155            display_menu();
     156            if(mouse && !demo)
     157            {
     158                caca_set_color(CACA_COLOR_RED, CACA_COLOR_BLACK);
     159                caca_putstr(xmouse, ymouse, "|\\");
     160            }
    79161            caca_refresh();
    80             demo = NULL;
    81         }
    82         else if(event & CACA_EVENT_KEY_PRESS)
    83         {
    84         handle_key:
    85             switch(event & 0xffff)
    86             {
    87             case 'q':
    88             case 'Q':
    89                 demo = NULL;
    90                 quit = 1;
    91                 break;
    92             case 'o':
    93             case 'O':
    94                 outline = (outline + 1) % 3;
    95                 display_menu();
    96                 break;
    97             case 'b':
    98             case 'B':
    99                 bounds = (bounds + 1) % 2;
    100                 display_menu();
    101                 break;
    102             case 'd':
    103             case 'D':
    104                 dithering = (dithering + 1) % 5;
    105                 caca_set_dithering(dithering);
    106                 display_menu();
    107                 break;
    108             case 'c':
    109                 demo = demo_color;
    110                 break;
    111             case 'f':
    112             case 'F':
    113                 demo = demo_all;
    114                 break;
    115             case '1':
    116                 demo = demo_dots;
    117                 break;
    118             case '2':
    119                 demo = demo_lines;
    120                 break;
    121             case '3':
    122                 demo = demo_boxes;
    123                 break;
    124             case '4':
    125                 demo = demo_triangles;
    126                 break;
    127             case '5':
    128                 demo = demo_ellipses;
    129                 break;
    130             case 's':
    131             case 'S':
    132                 if(sprite)
    133                     demo = demo_sprites;
    134                 break;
    135             case 'r':
    136             case 'R':
    137                 demo = demo_render;
    138                 break;
    139             }
    140 
    141         handle_event:
    142             event = caca_get_event();
    143             if(event & CACA_EVENT_KEY_PRESS)
    144                 goto handle_key;
    145             else if(event)
    146                 goto handle_event;
    147 
    148             caca_refresh();
    149 
    150             if(demo)
    151                 caca_clear();
    152         }
    153         else if(event & CACA_EVENT_MOUSE_CLICK)
    154         {
    155             display_menu();
    156             caca_set_color(CACA_COLOR_RED, CACA_COLOR_BLACK);
    157             caca_putstr((event & 0xff00) >> 8, event & 0xff, "|\\");
    158             caca_refresh();
     162            mouse = menu = 0;
    159163        }
    160164
Note: See TracChangeset for help on using the changeset viewer.