Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/memgfx/src/memgc.c

    r43ffecf rbc52b5b  
    5757static errno_t mem_gc_bitmap_render(void *, gfx_rect_t *, gfx_coord2_t *);
    5858static errno_t mem_gc_bitmap_get_alloc(void *, gfx_bitmap_alloc_t *);
     59static errno_t mem_gc_cursor_get_pos(void *, gfx_coord2_t *);
     60static errno_t mem_gc_cursor_set_pos(void *, gfx_coord2_t *);
     61static errno_t mem_gc_cursor_set_visible(void *, bool);
    5962static void mem_gc_invalidate_rect(mem_gc_t *, gfx_rect_t *);
    6063
     
    6770        .bitmap_destroy = mem_gc_bitmap_destroy,
    6871        .bitmap_render = mem_gc_bitmap_render,
    69         .bitmap_get_alloc = mem_gc_bitmap_get_alloc
     72        .bitmap_get_alloc = mem_gc_bitmap_get_alloc,
     73        .cursor_get_pos = mem_gc_cursor_get_pos,
     74        .cursor_set_pos = mem_gc_cursor_set_pos,
     75        .cursor_set_visible = mem_gc_cursor_set_visible
    7076};
    7177
     
    102108        mem_gc_t *mgc = (mem_gc_t *) arg;
    103109        uint16_t r, g, b;
     110        uint8_t attr;
    104111
    105112        gfx_color_get_rgb_i16(color, &r, &g, &b);
    106         mgc->color = PIXEL(0, r >> 8, g >> 8, b >> 8);
     113        gfx_color_get_ega(color, &attr);
     114        mgc->color = PIXEL(attr, r >> 8, g >> 8, b >> 8);
    107115        return EOK;
    108116}
     
    152160        mem_gc_t *mgc = (mem_gc_t *) arg;
    153161
    154         mgc->update(mgc->cb_arg);
     162        mgc->cb->update(mgc->cb_arg);
    155163        return EOK;
    156164}
     
    162170 * @param rect Bounding rectangle
    163171 * @param alloc Allocation info
    164  * @param update_cb Function called to update a rectangle
    165  * @param cb_arg Argument to callback function
     172 * @param cb Pointer to memory GC callbacks
     173 * @param cb_arg Argument to callback functions
    166174 * @param rgc Place to store pointer to new memory GC
    167175 *
     
    169177 */
    170178errno_t mem_gc_create(gfx_rect_t *rect, gfx_bitmap_alloc_t *alloc,
    171     mem_gc_invalidate_cb_t invalidate_cb, mem_gc_update_cb_t update_cb,
    172     void *cb_arg, mem_gc_t **rgc)
     179    mem_gc_cb_t *cb, void *cb_arg, mem_gc_t **rgc)
    173180{
    174181        mem_gc_t *mgc = NULL;
     
    191198        mgc->alloc = *alloc;
    192199
    193         mgc->invalidate = invalidate_cb;
    194         mgc->update = update_cb;
     200        mgc->cb = cb;
    195201        mgc->cb_arg = cb_arg;
    196202
     
    246252static void mem_gc_invalidate_rect(mem_gc_t *mgc, gfx_rect_t *rect)
    247253{
    248         mgc->invalidate(mgc->cb_arg, rect);
     254        mgc->cb->invalidate(mgc->cb_arg, rect);
    249255}
    250256
     
    464470}
    465471
     472/** Get cursor position on memory GC.
     473 *
     474 * @param arg Memory GC
     475 * @param pos Place to store position
     476 *
     477 * @return EOK on success or an error code
     478 */
     479static errno_t mem_gc_cursor_get_pos(void *arg, gfx_coord2_t *pos)
     480{
     481        mem_gc_t *mgc = (mem_gc_t *) arg;
     482
     483        if (mgc->cb->cursor_get_pos != NULL)
     484                return mgc->cb->cursor_get_pos(mgc->cb_arg, pos);
     485        else
     486                return ENOTSUP;
     487}
     488
     489/** Set cursor position on memory GC.
     490 *
     491 * @param arg Memory GC
     492 * @param pos New position
     493 *
     494 * @return EOK on success or an error code
     495 */
     496static errno_t mem_gc_cursor_set_pos(void *arg, gfx_coord2_t *pos)
     497{
     498        mem_gc_t *mgc = (mem_gc_t *) arg;
     499
     500        if (mgc->cb->cursor_set_pos != NULL)
     501                return mgc->cb->cursor_set_pos(mgc->cb_arg, pos);
     502        else
     503                return ENOTSUP;
     504}
     505
     506/** Set cursor visibility on memory GC.
     507 *
     508 * @param arg Memory GC
     509 * @param visible @c true iff cursor should be made visible
     510 *
     511 * @return EOK on success or an error code
     512 */
     513static errno_t mem_gc_cursor_set_visible(void *arg, bool visible)
     514{
     515        mem_gc_t *mgc = (mem_gc_t *) arg;
     516
     517        if (mgc->cb->cursor_set_visible != NULL)
     518                return mgc->cb->cursor_set_visible(mgc->cb_arg, visible);
     519        else
     520                return ENOTSUP;
     521}
     522
    466523/** @}
    467524 */
Note: See TracChangeset for help on using the changeset viewer.