Ignore:
Timestamp:
Oct 20, 2007, 12:22:13 AM (12 years ago)
Author:
Sam Hocevar
Message:
  • Implemented caca_set_cursor() on the X11, ncurses and S-Lang drivers.
  • Use caca_set_cursor() in test/input.c.
Location:
libcaca/trunk/caca
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/caca/driver_ncurses.c

    r1785 r1837  
    351351        }
    352352    }
     353   
     354    x = cucul_get_cursor_x(dp->cv);
     355    y = cucul_get_cursor_y(dp->cv);
     356    move(y, x);
     357
    353358    refresh();
    354359}
     
    532537}
    533538
     539static void ncurses_set_cursor(caca_display_t *dp, int flags)
     540{
     541    curs_set(flags ? 2 : 0);
     542}
     543
    534544/*
    535545 * XXX: following functions are local
     
    804814    dp->drv.get_event = ncurses_get_event;
    805815    dp->drv.set_mouse = NULL;
    806     dp->drv.set_cursor = NULL;
     816    dp->drv.set_cursor = ncurses_set_cursor;
    807817
    808818    return 0;
  • libcaca/trunk/caca/driver_slang.c

    r1776 r1837  
    259259        }
    260260    }
     261    SLsmg_gotorc(cucul_get_cursor_y(dp->cv), cucul_get_cursor_x(dp->cv));
    261262    SLsmg_refresh();
    262263}
     
    401402    ev->data.key.utf8[0] = '\0';
    402403    return 1;
     404}
     405
     406static void slang_set_cursor(caca_display_t *dp, int flags)
     407{
     408    SLtt_set_cursor_visibility(flags ? 1 : 0);
    403409}
    404410
     
    523529    dp->drv.get_event = slang_get_event;
    524530    dp->drv.set_mouse = NULL;
    525     dp->drv.set_cursor = NULL;
     531    dp->drv.set_cursor = slang_set_cursor;
    526532
    527533    return 0;
  • libcaca/trunk/caca/driver_x11.c

    r1780 r1837  
    6565#endif
    6666    uint32_t max_char;
     67    int cursor_flags;
    6768};
    6869
     
    243244                                            DefaultScreen(dp->drv.p->dpy)));
    244245    dp->drv.p->pointer = None;
     246
     247    dp->drv.p->cursor_flags = 0;
    245248
    246249    return 0;
     
    328331                          *attrs, *chars);
    329332        }
     333    }
     334
     335    /* Print the cursor if necessary */
     336    if(dp->drv.p->cursor_flags)
     337    {
     338        XSetForeground(dp->drv.p->dpy, dp->drv.p->gc,
     339                       dp->drv.p->colors[0xfff]);
     340        x = cucul_get_cursor_x(dp->cv);
     341        y = cucul_get_cursor_y(dp->cv);
     342        XFillRectangle(dp->drv.p->dpy, dp->drv.p->pixmap, dp->drv.p->gc,
     343                       x * dp->drv.p->font_width, y * dp->drv.p->font_height,
     344                       dp->drv.p->font_width, dp->drv.p->font_height);
    330345    }
    331346
     
    537552}
    538553
     554static void x11_set_cursor(caca_display_t *dp, int flags)
     555{
     556    dp->drv.p->cursor_flags = flags;
     557}
     558
    539559/*
    540560 * XXX: following functions are local
     
    771791    dp->drv.get_event = x11_get_event;
    772792    dp->drv.set_mouse = x11_set_mouse;
    773     dp->drv.set_cursor = NULL;
     793    dp->drv.set_cursor = x11_set_cursor;
    774794
    775795    return 0;
Note: See TracChangeset for help on using the changeset viewer.