Changeset 297b1b3 in mainline for uspace/lib/ui/src/rbutton.c


Ignore:
Timestamp:
2021-08-13T15:58:50Z (3 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
320abf3
Parents:
307d4d2
Message:

Radio button text mode

File:
1 edited

Legend:

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

    r307d4d2 r297b1b3  
    186186}
    187187
    188 /** Paint radio button.
     188/** Paint radio button in graphics mode.
    189189 *
    190190 * @param rbutton Radio button
    191191 * @return EOK on success or an error code
    192192 */
    193 errno_t ui_rbutton_paint(ui_rbutton_t *rbutton)
     193errno_t ui_rbutton_paint_gfx(ui_rbutton_t *rbutton)
    194194{
    195195        gfx_coord2_t pos;
     
    202202        center.y = rbutton->rect.p0.y + rbutton_oframe_r;
    203203
    204         /* Paint rbutton frame */
     204        /* Paint radio button frame */
    205205
    206206        rc = gfx_set_color(rbutton->group->res->gc,
     
    244244                goto error;
    245245
    246         /* Paint rbutton interior */
     246        /* Paint radio button interior */
    247247        depressed = rbutton->held && rbutton->inside;
    248248
     
    294294error:
    295295        return rc;
     296}
     297
     298/** Paint radio button in text mode.
     299 *
     300 * @param rbutton Radio button
     301 * @return EOK on success or an error code
     302 */
     303errno_t ui_rbutton_paint_text(ui_rbutton_t *rbutton)
     304{
     305        gfx_coord2_t pos;
     306        gfx_text_fmt_t fmt;
     307        bool depressed;
     308        errno_t rc;
     309
     310        /* Paint radio button */
     311
     312        depressed = rbutton->held && rbutton->inside;
     313
     314        pos.x = rbutton->rect.p0.x;
     315        pos.y = rbutton->rect.p0.y;
     316
     317        gfx_text_fmt_init(&fmt);
     318        fmt.color = depressed ? rbutton->group->res->entry_act_bg_color :
     319            rbutton->group->res->wnd_text_color;
     320        fmt.halign = gfx_halign_left;
     321        fmt.valign = gfx_valign_top;
     322
     323        rc = gfx_puttext(rbutton->group->res->font, &pos, &fmt,
     324            rbutton->group->selected == rbutton ? "(*)" : "( )");
     325        if (rc != EOK)
     326                goto error;
     327
     328        /* Paint radio button label */
     329
     330        pos.x += 4;
     331
     332        gfx_text_fmt_init(&fmt);
     333        fmt.color = rbutton->group->res->wnd_text_color;
     334        fmt.halign = gfx_halign_left;
     335        fmt.valign = gfx_valign_center;
     336
     337        rc = gfx_puttext(rbutton->group->res->font, &pos, &fmt,
     338            rbutton->caption);
     339        if (rc != EOK)
     340                goto error;
     341
     342        rc = gfx_update(rbutton->group->res->gc);
     343        if (rc != EOK)
     344                goto error;
     345
     346        return EOK;
     347error:
     348        return rc;
     349}
     350
     351/** Paint radio button.
     352 *
     353 * @param rbutton Radio button
     354 * @return EOK on success or an error code
     355 */
     356errno_t ui_rbutton_paint(ui_rbutton_t *rbutton)
     357{
     358        if (rbutton->group->res->textmode)
     359                return ui_rbutton_paint_text(rbutton);
     360        else
     361                return ui_rbutton_paint_gfx(rbutton);
    296362}
    297363
Note: See TracChangeset for help on using the changeset viewer.