Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/fontedit/fontedit.c

    r266ec54 r211fd68  
    11/*
    2  * Copyright (c) 2020 Jiri Svoboda
     2 * Copyright (c) 2024 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    167167}
    168168
     169/** Adjust font underline Y0.
     170 *
     171 * @param fedit Font editor
     172 */
     173static void font_edit_adjust_underline_y0(font_edit_t *fedit,
     174    gfx_coord_t change)
     175{
     176        gfx_font_metrics_t fmetrics;
     177
     178        gfx_font_get_metrics(fedit->font, &fmetrics);
     179        fmetrics.underline_y0 += change;
     180        (void) gfx_font_set_metrics(fedit->font, &fmetrics);
     181
     182        printf("New underline Y0: %d\n", fmetrics.underline_y0);
     183        font_edit_paint(fedit);
     184}
     185
     186/** Adjust font underline Y1.
     187 *
     188 * @param fedit Font editor
     189 */
     190static void font_edit_adjust_underline_y1(font_edit_t *fedit,
     191    gfx_coord_t change)
     192{
     193        gfx_font_metrics_t fmetrics;
     194
     195        gfx_font_get_metrics(fedit->font, &fmetrics);
     196        fmetrics.underline_y1 += change;
     197        (void) gfx_font_set_metrics(fedit->font, &fmetrics);
     198
     199        printf("New underline Y1: %d\n", fmetrics.underline_y1);
     200        font_edit_paint(fedit);
     201}
     202
    169203/** Handle font editor close event.
    170204 *
     
    314348                font_edit_adjust_leading(fedit, +1);
    315349                break;
     350        case KC_U:
     351                font_edit_adjust_underline_y0(fedit, -1);
     352                break;
     353        case KC_I:
     354                font_edit_adjust_underline_y0(fedit, +1);
     355                break;
     356        case KC_O:
     357                font_edit_adjust_underline_y1(fedit, -1);
     358                break;
     359        case KC_P:
     360                font_edit_adjust_underline_y1(fedit, +1);
     361                break;
    316362        case KC_X:
    317363                (void) gfx_glyph_bmp_clear(fedit->gbmp);
     
    446492 * @param fedit Font editor
    447493 * @param x Starting X coordinate
    448  * @Param y Starting Y coordinate
     494 * @param y Starting Y coordinate
     495 * @param color Color
    449496 * @param str String
    450497 */
    451498static errno_t font_edit_paint_preview_str(font_edit_t *fedit,
    452     gfx_coord_t x, gfx_coord_t y, const char *str)
     499    gfx_coord_t x, gfx_coord_t y, gfx_color_t *color, const char *str)
    453500{
    454501        gfx_text_fmt_t fmt;
     
    456503
    457504        gfx_text_fmt_init(&fmt);
     505        fmt.font = fedit->font;
     506        fmt.color = color;
    458507
    459508        pos.x = x;
    460509        pos.y = y;
    461510
    462         return gfx_puttext(fedit->font, &pos, &fmt, str);
     511        return gfx_puttext(&pos, &fmt, str);
    463512}
    464513
     
    480529                goto error;
    481530
    482         rc = font_edit_paint_preview_str(fedit, 20, 20,
     531        rc = font_edit_paint_preview_str(fedit, 20, 20, color,
    483532            "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
    484533        if (rc != EOK)
    485534                goto error;
    486535
    487         rc = font_edit_paint_preview_str(fedit, 20, 40,
     536        rc = font_edit_paint_preview_str(fedit, 20, 40, color,
    488537            "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG");
    489538        if (rc != EOK)
    490539                goto error;
    491540
    492         rc = font_edit_paint_preview_str(fedit, 20, 60,
     541        rc = font_edit_paint_preview_str(fedit, 20, 60, color,
    493542            "abcdefghijklmnopqrstuvwxyz");
    494543        if (rc != EOK)
    495544                goto error;
    496545
    497         rc = font_edit_paint_preview_str(fedit, 20, 80,
     546        rc = font_edit_paint_preview_str(fedit, 20, 80, color,
    498547            "the quick brown fox jumps over the lazy dog");
    499548        if (rc != EOK)
    500549                goto error;
    501550
    502         rc = font_edit_paint_preview_str(fedit, 20, 100,
     551        rc = font_edit_paint_preview_str(fedit, 20, 100, color,
    503552            "0123456789,./<>?;'\\:\"|[]{}`~!@#$%^&*()-_=+");
    504553        if (rc != EOK)
     
    519568        gfx_color_t *color = NULL;
    520569        gfx_rect_t rect;
     570        gfx_rect_t rect2;
    521571        gfx_rect_t grect;
    522572        gfx_font_metrics_t fmetrics;
     
    562612            fmetrics.leading, &rect);
    563613        rect.p1.x += 100;
     614
     615        rc = gfx_fill_rect(fedit->gc, &rect);
     616        if (rc != EOK)
     617                goto error;
     618
     619        gfx_color_delete(color);
     620
     621        /* Display underline */
     622
     623        rc = gfx_color_new_rgb_i16(0x4000, 0x4000, 0, &color);
     624        if (rc != EOK)
     625                goto error;
     626
     627        rc = gfx_set_color(fedit->gc, color);
     628        if (rc != EOK)
     629                goto error;
     630
     631        font_edit_gpix_to_disp(fedit, 0, fmetrics.underline_y0, &rect);
     632        font_edit_gpix_to_disp(fedit, 10, fmetrics.underline_y1, &rect2);
     633        rect.p1 = rect2.p0;
    564634
    565635        rc = gfx_fill_rect(fedit->gc, &rect);
     
    717787         * to rect
    718788         */
    719         ui_wdecor_rect_from_app(params.style, &rect, &wrect);
     789        ui_wdecor_rect_from_app(ui, params.style, &rect, &wrect);
    720790        off = wrect.p0;
    721791        gfx_rect_rtranslate(&off, &wrect, &params.rect);
Note: See TracChangeset for help on using the changeset viewer.