Changeset cd74fa8 in mainline for uspace/lib/ui/src/pbutton.c


Ignore:
Timestamp:
2021-03-01T22:20:27Z (3 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
d6f46c8
Parents:
9c7dc8e
Message:

Downsize more controls to make calculator look better

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ui/src/pbutton.c

    r9c7dc8e rcd74fa8  
    239239}
    240240
    241 /** Paint push button.
    242  *
    243  * @param pbutton Push button
    244  * @return EOK on success or an error code
    245  */
    246 errno_t ui_pbutton_paint(ui_pbutton_t *pbutton)
     241/** Paint button text shadow.
     242 *
     243 * @param pbutton Push button
     244 * @return EOK on success or an error code
     245 */
     246static errno_t ui_pbutton_paint_text_shadow(ui_pbutton_t *pbutton)
     247{
     248        gfx_rect_t rect;
     249        errno_t rc;
     250
     251        rect.p0.x = pbutton->rect.p0.x + 1;
     252        rect.p0.y = pbutton->rect.p0.y + 1;
     253        rect.p1.x = pbutton->rect.p1.x;
     254        rect.p1.y = pbutton->rect.p1.y;
     255
     256        rc = gfx_set_color(pbutton->res->gc, pbutton->res->btn_shadow_color);
     257        if (rc != EOK)
     258                goto error;
     259
     260        rc = gfx_fill_rect(pbutton->res->gc, &rect);
     261        if (rc != EOK)
     262                goto error;
     263
     264        return EOK;
     265error:
     266        return rc;
     267}
     268
     269/** Paint push button in graphic mode.
     270 *
     271 * @param pbutton Push button
     272 * @return EOK on success or an error code
     273 */
     274static errno_t ui_pbutton_paint_gfx(ui_pbutton_t *pbutton)
    247275{
    248276        gfx_coord2_t pos;
     
    308336error:
    309337        return rc;
     338}
     339
     340/** Paint push button in text mode.
     341 *
     342 * @param pbutton Push button
     343 * @return EOK on success or an error code
     344 */
     345static errno_t ui_pbutton_paint_text(ui_pbutton_t *pbutton)
     346{
     347        gfx_coord2_t pos;
     348        gfx_text_fmt_t fmt;
     349        gfx_rect_t rect;
     350        bool depressed;
     351        errno_t rc;
     352
     353        depressed = pbutton->held && pbutton->inside;
     354
     355        rc = gfx_set_color(pbutton->res->gc, pbutton->res->wnd_face_color);
     356        if (rc != EOK)
     357                goto error;
     358
     359        rc = gfx_fill_rect(pbutton->res->gc, &pbutton->rect);
     360        if (rc != EOK)
     361                goto error;
     362
     363        rect.p0.x = pbutton->rect.p0.x + (depressed ? 1 : 0);
     364        rect.p0.y = pbutton->rect.p0.y;
     365        rect.p1.x = pbutton->rect.p1.x - 1 + (depressed ? 1 : 0);
     366        rect.p1.y = pbutton->rect.p0.y + 1;
     367
     368        rc = gfx_set_color(pbutton->res->gc, pbutton->res->btn_highlight_color);
     369        if (rc != EOK)
     370                goto error;
     371
     372        rc = gfx_fill_rect(pbutton->res->gc, &rect);
     373        if (rc != EOK)
     374                goto error;
     375
     376        /* Center of button rectangle */
     377        pos.x = (rect.p0.x + rect.p1.x) / 2;
     378        pos.y = (rect.p0.y + rect.p1.y) / 2;
     379
     380        gfx_text_fmt_init(&fmt);
     381        fmt.color = pbutton->res->btn_text_color;
     382        fmt.halign = gfx_halign_center;
     383        fmt.valign = gfx_valign_center;
     384
     385        rc = gfx_puttext(pbutton->res->font, &pos, &fmt, pbutton->caption);
     386        if (rc != EOK)
     387                goto error;
     388
     389        if (!depressed) {
     390                rc = ui_pbutton_paint_text_shadow(pbutton);
     391                if (rc != EOK)
     392                        goto error;
     393        }
     394
     395        rc = gfx_update(pbutton->res->gc);
     396        if (rc != EOK)
     397                goto error;
     398
     399        return EOK;
     400error:
     401        return rc;
     402}
     403
     404/** Paint push button.
     405 *
     406 * @param pbutton Push button
     407 * @return EOK on success or an error code
     408 */
     409errno_t ui_pbutton_paint(ui_pbutton_t *pbutton)
     410{
     411        if (pbutton->res->textmode)
     412                return ui_pbutton_paint_text(pbutton);
     413        else
     414                return ui_pbutton_paint_gfx(pbutton);
    310415}
    311416
Note: See TracChangeset for help on using the changeset viewer.