Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ipcgfx/src/server.c

    rfc4abca r5fc8244  
    11/*
    2  * Copyright (c) 2019 Jiri Svoboda
     2 * Copyright (c) 2021 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    4141#include <gfx/color.h>
    4242#include <gfx/render.h>
    43 #include <ipc/bd.h>
    4443#include <ipcgfx/ipc/gc.h>
    4544#include <ipcgfx/server.h>
     
    5251static ipc_gc_srv_bitmap_t *gc_bitmap_lookup(ipc_gc_srv_t *, sysarg_t);
    5352
    54 static void gc_set_rgb_color_srv(ipc_gc_srv_t *srvgc, ipc_call_t *call)
    55 {
    56         uint16_t r, g, b;
    57         gfx_color_t *color;
    58         errno_t rc;
    59 
    60         r = ipc_get_arg1(call);
    61         g = ipc_get_arg2(call);
    62         b = ipc_get_arg3(call);
    63 
    64         rc = gfx_color_new_rgb_i16(r, g, b, &color);
    65         if (rc != EOK) {
    66                 async_answer_0(call, ENOMEM);
    67                 return;
    68         }
    69 
    70         rc = gfx_set_color(srvgc->gc, color);
    71         async_answer_0(call, rc);
    72 }
    73 
    74 static void gc_fill_rect_srv(ipc_gc_srv_t *srvgc, ipc_call_t *call)
     53static void gc_set_clip_rect_srv(ipc_gc_srv_t *srvgc, ipc_call_t *call)
    7554{
    7655        gfx_rect_t rect;
     
    8261        rect.p1.y = ipc_get_arg4(call);
    8362
     63        rc = gfx_set_clip_rect(srvgc->gc, &rect);
     64        async_answer_0(call, rc);
     65}
     66
     67static void gc_set_clip_rect_null_srv(ipc_gc_srv_t *srvgc, ipc_call_t *call)
     68{
     69        errno_t rc;
     70
     71        rc = gfx_set_clip_rect(srvgc->gc, NULL);
     72        async_answer_0(call, rc);
     73}
     74
     75static void gc_set_rgb_color_srv(ipc_gc_srv_t *srvgc, ipc_call_t *call)
     76{
     77        uint16_t r, g, b;
     78        gfx_color_t *color;
     79        errno_t rc;
     80
     81        r = ipc_get_arg1(call);
     82        g = ipc_get_arg2(call);
     83        b = ipc_get_arg3(call);
     84
     85        rc = gfx_color_new_rgb_i16(r, g, b, &color);
     86        if (rc != EOK) {
     87                async_answer_0(call, ENOMEM);
     88                return;
     89        }
     90
     91        rc = gfx_set_color(srvgc->gc, color);
     92        async_answer_0(call, rc);
     93}
     94
     95static void gc_fill_rect_srv(ipc_gc_srv_t *srvgc, ipc_call_t *call)
     96{
     97        gfx_rect_t rect;
     98        errno_t rc;
     99
     100        rect.p0.x = ipc_get_arg1(call);
     101        rect.p0.y = ipc_get_arg2(call);
     102        rect.p1.x = ipc_get_arg3(call);
     103        rect.p1.y = ipc_get_arg4(call);
     104
    84105        rc = gfx_fill_rect(srvgc->gc, &rect);
     106        async_answer_0(call, rc);
     107}
     108
     109static void gc_update_srv(ipc_gc_srv_t *srvgc, ipc_call_t *call)
     110{
     111        errno_t rc;
     112
     113        rc = gfx_update(srvgc->gc);
    85114        async_answer_0(call, rc);
    86115}
     
    353382
    354383                switch (method) {
     384                case GC_SET_CLIP_RECT:
     385                        gc_set_clip_rect_srv(&srvgc, &call);
     386                        break;
     387                case GC_SET_CLIP_RECT_NULL:
     388                        gc_set_clip_rect_null_srv(&srvgc, &call);
     389                        break;
    355390                case GC_SET_RGB_COLOR:
    356391                        gc_set_rgb_color_srv(&srvgc, &call);
     
    358393                case GC_FILL_RECT:
    359394                        gc_fill_rect_srv(&srvgc, &call);
     395                        break;
     396                case GC_UPDATE:
     397                        gc_update_srv(&srvgc, &call);
    360398                        break;
    361399                case GC_BITMAP_CREATE:
Note: See TracChangeset for help on using the changeset viewer.