Ignore:
Timestamp:
Mar 23, 2006, 7:36:59 PM (15 years ago)
Author:
Sam Hocevar
Message:
  • Massive rework of the event handling code, as per the TODO list.
Location:
libcaca/trunk/test
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/test/colors.c

    r677 r681  
    2525    cucul_t *qq;
    2626    caca_t *kk;
     27    struct caca_event ev;
    2728    int i, j;
    2829
     
    5051
    5152    caca_display(kk);
    52     caca_wait_event(kk, CACA_EVENT_KEY_PRESS);
     53    caca_wait_event(kk, CACA_EVENT_KEY_PRESS, &ev);
    5354
    5455    caca_detach(kk);
  • libcaca/trunk/test/demo.c

    r678 r681  
    6969    while(!quit)
    7070    {
     71        struct caca_event ev;
    7172        int menu = 0, mouse = 0, xmouse = 0, ymouse = 0;
    72         int event;
    73 
    74         while((event = caca_get_event(kk, CACA_EVENT_ANY)))
     73
     74        while(caca_get_event(kk, CACA_EVENT_ANY, &ev))
    7575        {
    76             if(demo && (event & CACA_EVENT_KEY_PRESS))
     76            if(demo && (ev.type & CACA_EVENT_KEY_PRESS))
    7777            {
    7878                menu = 1;
    7979                demo = NULL;
    8080            }
    81             else if(event & CACA_EVENT_KEY_PRESS)
     81            else if(ev.type & CACA_EVENT_KEY_PRESS)
    8282            {
    83                 switch(event & 0xffff)
     83                switch(ev.data.key.c)
    8484                {
    8585                case 'q':
     
    140140                    cucul_clear(qq);
    141141            }
    142             else if(event & CACA_EVENT_MOUSE_MOTION)
     142            else if(ev.type & CACA_EVENT_MOUSE_MOTION)
    143143            {
    144144                mouse = 1;
    145                 xmouse = (event & 0xfff000) >> 12;
    146                 ymouse = event & 0xfff;
     145                xmouse = ev.data.mouse.x;
     146                ymouse = ev.data.mouse.y;
    147147            }
    148148        }
  • libcaca/trunk/test/dithering.c

    r677 r681  
    3535int main(void)
    3636{
     37    struct caca_event ev;
    3738    cucul_t *qq;
    3839    caca_t *kk;
     
    124125    caca_display(kk);
    125126
    126     while(!caca_get_event(kk, CACA_EVENT_KEY_PRESS));
     127    caca_wait_event(kk, CACA_EVENT_KEY_PRESS, &ev);
    127128
    128129    caca_detach(kk);
  • libcaca/trunk/test/event.c

    r678 r681  
    2424static caca_t *kk;
    2525
    26 static void print_event(int, int, unsigned int);
     26static void print_event(int, int, struct caca_event *);
    2727
    2828int main(int argc, char **argv)
    2929{
    30     int *events;
     30    struct caca_event *events;
    3131    int i, h, quit;
    3232
     
    4848    caca_display(kk);
    4949
    50     events = malloc(h * sizeof(int));
    51     memset(events, 0, h * sizeof(int));
     50    events = malloc(h * sizeof(struct caca_event));
     51    memset(events, 0, h * sizeof(struct caca_event));
    5252
    5353    for(quit = 0; quit < 4; )
    5454    {
     55        struct caca_event ev;
    5556        static char const * quit_string[] = { "", "q", "qu", "qui", "quit" };
    56         unsigned int event = caca_wait_event(kk, CACA_EVENT_ANY);
     57        int ret = caca_wait_event(kk, CACA_EVENT_ANY, &ev);
    5758
    58         if(!event)
     59        if(!ret)
    5960            continue;
    6061
     
    6263        {
    6364            /* "quit" quits */
    64             if(event & CACA_EVENT_KEY_PRESS)
     65            if(ev.type & CACA_EVENT_KEY_PRESS)
    6566            {
    66                 int key = event & ~CACA_EVENT_KEY_PRESS;
     67                int key = ev.data.key.c;
    6768                if((key == 'q' && quit == 0) || (key == 'u' && quit == 1)
    6869                    || (key == 'i' && quit == 2) || (key == 't' && quit == 3))
     
    7475            }
    7576
    76             memmove(events + 1, events, (h - 1) * sizeof(int));
    77             events[0] = event;
     77            memmove(events + 1, events, (h - 1) * sizeof(struct caca_event));
     78            events[0] = ev;
    7879
    79             event = caca_get_event(kk, CACA_EVENT_ANY);
     80            ret = caca_get_event(kk, CACA_EVENT_ANY, &ev);
    8081        }
    81         while(event);
     82        while(ret);
    8283
    8384        cucul_clear(qq);
     
    8687        cucul_set_color(qq, CUCUL_COLOR_WHITE, CUCUL_COLOR_BLUE);
    8788        cucul_draw_line(qq, 0, 0, cucul_get_width(qq) - 1, 0, " ");
    88         print_event(0, 0, events[0]);
     89        print_event(0, 0, events);
    8990
    9091        cucul_draw_line(qq, 0, h, cucul_get_width(qq) - 1, h, " ");
     
    9394        /* Print previous events */
    9495        cucul_set_color(qq, CUCUL_COLOR_WHITE, CUCUL_COLOR_BLACK);
    95         for(i = 1; i < h && events[i]; i++)
    96             print_event(0, i, events[i]);
     96        for(i = 1; i < h && events[i].type; i++)
     97            print_event(0, i, events + i);
    9798
    9899        caca_display(kk);
     
    106107}
    107108
    108 static void print_event(int x, int y, unsigned int event)
     109static void print_event(int x, int y, struct caca_event *ev)
    109110{
    110111    int character;
    111112
    112     switch(event & 0xff000000)
     113    switch(ev->type)
    113114    {
    114115    case CACA_EVENT_NONE:
     
    116117        break;
    117118    case CACA_EVENT_KEY_PRESS:
    118         character = event & 0x00ffffff;
     119        character = ev->data.key.c;
    119120        cucul_printf(qq, x, y, "CACA_EVENT_KEY_PRESS 0x%02x (%c)", character,
    120121                     (character > 0x20 && character < 0x80) ? character : '?');
    121122        break;
    122123    case CACA_EVENT_KEY_RELEASE:
    123         character = event & 0x00ffffff;
     124        character = ev->data.key.c;
    124125        cucul_printf(qq, x, y, "CACA_EVENT_KEY_RELEASE 0x%02x (%c)", character,
    125126                     (character > 0x20 && character < 0x80) ? character : '?');
     
    127128    case CACA_EVENT_MOUSE_MOTION:
    128129        cucul_printf(qq, x, y, "CACA_EVENT_MOUSE_MOTION %u %u",
    129                      (event & 0x00fff000) >> 12, event & 0x00000fff);
     130                     ev->data.mouse.x, ev->data.mouse.y);
    130131        break;
    131132    case CACA_EVENT_MOUSE_PRESS:
    132133        cucul_printf(qq, x, y, "CACA_EVENT_MOUSE_PRESS %u",
    133                      event & 0x00ffffff);
     134                     ev->data.mouse.button);
    134135        break;
    135136    case CACA_EVENT_MOUSE_RELEASE:
    136137        cucul_printf(qq, x, y, "CACA_EVENT_MOUSE_RELEASE %u",
    137                      event & 0x00ffffff);
     138                     ev->data.mouse.button);
    138139        break;
    139140    case CACA_EVENT_RESIZE:
    140         cucul_printf(qq, x, y, "CACA_EVENT_RESIZE");
     141        cucul_printf(qq, x, y, "CACA_EVENT_RESIZE %u %u",
     142                     ev->data.resize.w, ev->data.resize.h);
    141143        break;
    142144    default:
  • libcaca/trunk/test/gamma.c

    r680 r681  
    3434int main(void)
    3535{
     36    struct caca_event ev;
    3637    cucul_t *qq, *gg, *mask;
    3738    caca_t *kk;
     
    6263    for(x = 0; ; x++)
    6364    {
    64         int ev = caca_get_event(kk, CACA_EVENT_KEY_PRESS);
     65        int ret = caca_get_event(kk, CACA_EVENT_KEY_PRESS, &ev);
    6566
    66         if(ev == (CACA_EVENT_KEY_PRESS | CACA_KEY_LEFT))
    67             gam /= 1.03;
    68         else if(ev == (CACA_EVENT_KEY_PRESS | CACA_KEY_RIGHT))
    69             gam *= 1.03;
    70         else if(ev == (CACA_EVENT_KEY_PRESS | CACA_KEY_DOWN))
    71             gam = 1.0;
    72         else if(ev == (CACA_EVENT_KEY_PRESS | CACA_KEY_ESCAPE))
    73             break;
     67        if(ret)
     68        {
     69            if(ev.data.key.c == CACA_KEY_LEFT)
     70                gam /= 1.03;
     71            else if(ev.data.key.c == CACA_KEY_RIGHT)
     72                gam *= 1.03;
     73            else if(ev.data.key.c == CACA_KEY_DOWN)
     74                gam = 1.0;
     75            else if(ev.data.key.c == CACA_KEY_ESCAPE)
     76                break;
     77        }
    7478
    7579        /* Resize the spare canvas, just in case the main one changed */
  • libcaca/trunk/test/hsv.c

    r677 r681  
    2929int main(void)
    3030{
     31    struct caca_event ev;
    3132    cucul_t *qq;
    3233    caca_t *kk;
     
    5354    caca_display(kk);
    5455
    55     while(!caca_get_event(kk, CACA_EVENT_KEY_PRESS));
     56    caca_wait_event(kk, CACA_EVENT_KEY_PRESS, &ev);
    5657
    5758    caca_detach(kk);
  • libcaca/trunk/test/spritedit.c

    r678 r681  
    5454    while(!quit)
    5555    {
     56        struct caca_event ev;
    5657        int xa, ya, xb, yb;
    5758        char buf[BUFSIZ];
    58         int event;
    5959
    60         while((event = caca_get_event(kk, CACA_EVENT_KEY_PRESS)))
     60        while(caca_get_event(kk, CACA_EVENT_KEY_PRESS, &ev))
    6161        {
    62             switch(event & 0x00ffffff)
     62            switch(ev.data.key.c)
    6363            {
    6464            case 0:
  • libcaca/trunk/test/transform.c

    r677 r681  
    5050int main(void)
    5151{
     52    struct caca_event ev;
    5253    cucul_t *qq, *normal, *flip, *flop, *rotate;
    5354    caca_t *kk;
     
    108109    caca_display(kk);
    109110
    110     while(!caca_get_event(kk, CACA_EVENT_KEY_PRESS));
     111    caca_wait_event(kk, CACA_EVENT_KEY_PRESS, &ev);
    111112
    112113    caca_detach(kk);
  • libcaca/trunk/test/unicode.c

    r677 r681  
    2727int main(void)
    2828{
     29    struct caca_event ev;
    2930    cucul_t *qq;
    3031    caca_t *kk;
     
    8788    caca_display(kk);
    8889
    89     while(!caca_get_event(kk, CACA_EVENT_KEY_PRESS));
     90    caca_wait_event(kk, CACA_EVENT_KEY_PRESS, &ev);
    9091
    9192    caca_detach(kk);
Note: See TracChangeset for help on using the changeset viewer.