Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 7470d97 in mainline for uspace/drv/fb/kfb/port.c


Ignore:
Timestamp:
2021-04-30T15:05:06Z (7 months ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Children:
051349b
Parents:
252d03c
Message:

Add GC operation to set clipping rectangle

The number of changed files is due to the proliferation of GC
implementations, mostly these are just dummies in unit tests.
Definitely need to tame those in the future.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/fb/kfb/port.c

    r252d03c r7470d97  
    11/*
    2  * Copyright (c) 2019 Jiri Svoboda
     2 * Copyright (c) 2021 Jiri Svoboda
    33 * Copyright (c) 2006 Jakub Vana
    44 * Copyright (c) 2006 Ondrej Palkovsky
     
    6969        sysarg_t paddr;
    7070        gfx_rect_t rect;
     71        gfx_rect_t clip_rect;
    7172        size_t offset;
    7273        size_t scanline;
     
    9798static errno_t kfb_ddev_get_info(void *, ddev_info_t *);
    9899
     100static errno_t kfb_gc_set_clip_rect(void *, gfx_rect_t *);
    99101static errno_t kfb_gc_set_color(void *, gfx_color_t *);
    100102static errno_t kfb_gc_fill_rect(void *, gfx_rect_t *);
     
    111113
    112114static gfx_context_ops_t kfb_gc_ops = {
     115        .set_clip_rect = kfb_gc_set_clip_rect,
    113116        .set_color = kfb_gc_set_color,
    114117        .fill_rect = kfb_gc_fill_rect,
     
    134137        ddev_info_init(info);
    135138        info->rect = kfb->rect;
     139        return EOK;
     140}
     141
     142/** Set clipping rectangle on KFB.
     143 *
     144 * @param arg KFB
     145 * @param rect Rectangle or @c NULL
     146 *
     147 * @return EOK on success or an error code
     148 */
     149static errno_t kfb_gc_set_clip_rect(void *arg, gfx_rect_t *rect)
     150{
     151        kfb_t *kfb = (kfb_t *) arg;
     152
     153        if (rect != NULL)
     154                gfx_rect_clip(rect, &kfb->rect, &kfb->clip_rect);
     155        else
     156                kfb->clip_rect = kfb->rect;
     157
    136158        return EOK;
    137159}
     
    361383}
    362384
    363 #include <stdio.h>
    364385static void kfb_client_conn(ipc_call_t *icall, void *arg)
    365386{
     
    372393        kfb = (kfb_t *) ddf_fun_data_get((ddf_fun_t *) arg);
    373394
    374         printf("kfb_client_conn arg2=%lu arg3=%lu arg4=%lu\n",
    375             (unsigned long) ipc_get_arg2(icall),
    376             (unsigned long) ipc_get_arg3(icall),
    377             (unsigned long) ipc_get_arg4(icall));
    378 
    379395        gc_id = ipc_get_arg3(icall);
    380396
     
    500516        kfb->rect.p1.x = width;
    501517        kfb->rect.p1.y = height;
     518
     519        kfb->clip_rect = kfb->rect;
    502520
    503521        kfb->paddr = paddr;
Note: See TracChangeset for help on using the changeset viewer.