Ignore:
File:
1 edited

Legend:

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

    r3d588be rd0dfbba  
    11/*
    2  * Copyright (c) 2024 Jiri Svoboda
     2 * Copyright (c) 2026 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    3636#include <display.h>
    3737#include <fibril.h>
     38#include <fibril_synch.h>
    3839#include <gfx/bitmap.h>
    3940#include <gfx/color.h>
     
    6162};
    6263
     64static void uiwnd_resize_event(ui_window_t *, void *);
    6365static void uiwnd_close_event(ui_window_t *, void *);
    6466static void uiwnd_kbd_event(ui_window_t *, void *, kbd_event_t *);
    6567
    6668static ui_window_cb_t ui_window_cb = {
     69        .resize = uiwnd_resize_event,
    6770        .close = uiwnd_close_event,
    6871        .kbd = uiwnd_kbd_event
     
    7982static console_ctrl_t *con = NULL;
    8083static bool textmode;
     84static console_gc_t *cgc = NULL;
     85static unsigned scr_width, scr_height;
    8186static ui_t *ui;
    8287
     
    99104        usec_t usec;
    100105        cons_event_t cevent;
     106        sysarg_t cols, rows;
    101107
    102108        if (ui != NULL)
     
    113119                                                demo_kbd_event(&cevent.ev.key);
    114120                                                fibril_mutex_lock(&quit_lock);
     121                                        } else if (cevent.type == CEV_RESIZE) {
     122                                                rc = console_get_size(con,
     123                                                    &cols, &rows);
     124                                                if (rc == EOK) {
     125                                                        scr_width = cols;
     126                                                        scr_height = rows;
     127                                                }
     128                                                rc = console_gc_resize(cgc);
     129                                                if (rc != EOK)
     130                                                        exit(1);
    115131                                        }
    116132                                }
     
    10241040 *
    10251041 * @param gc Graphic context
    1026  * @param w Width
    1027  * @param h Height
    1028  */
    1029 static errno_t demo_loop(gfx_context_t *gc, gfx_coord_t w, gfx_coord_t h)
    1030 {
    1031         errno_t rc;
    1032 
    1033         (void) demo_font_init(gc, w, h);
     1042 */
     1043static errno_t demo_loop(gfx_context_t *gc)
     1044{
     1045        errno_t rc;
     1046
     1047        (void) demo_font_init(gc, scr_width, scr_height);
    10341048
    10351049        while (!quit) {
    1036                 rc = demo_rects(gc, w, h);
    1037                 if (rc != EOK)
    1038                         goto error;
    1039 
    1040                 rc = demo_bitmap(gc, w, h);
    1041                 if (rc != EOK)
    1042                         goto error;
    1043 
    1044                 rc = demo_bitmap2(gc, w, h);
    1045                 if (rc != EOK)
    1046                         goto error;
    1047 
    1048                 rc = demo_bitmap_kc(gc, w, h);
    1049                 if (rc != EOK)
    1050                         goto error;
    1051 
    1052                 rc = demo_text(gc, w, h);
    1053                 if (rc != EOK)
    1054                         goto error;
    1055 
    1056                 rc = demo_text_abbr(gc, w, h);
    1057                 if (rc != EOK)
    1058                         goto error;
    1059 
    1060                 rc = demo_clip(gc, w, h);
     1050                rc = demo_rects(gc, scr_width, scr_height);
     1051                if (rc != EOK)
     1052                        goto error;
     1053
     1054                rc = demo_bitmap(gc, scr_width, scr_height);
     1055                if (rc != EOK)
     1056                        goto error;
     1057
     1058                rc = demo_bitmap2(gc, scr_width, scr_height);
     1059                if (rc != EOK)
     1060                        goto error;
     1061
     1062                rc = demo_bitmap_kc(gc, scr_width, scr_height);
     1063                if (rc != EOK)
     1064                        goto error;
     1065
     1066                rc = demo_text(gc, scr_width, scr_height);
     1067                if (rc != EOK)
     1068                        goto error;
     1069
     1070                rc = demo_text_abbr(gc, scr_width, scr_height);
     1071                if (rc != EOK)
     1072                        goto error;
     1073
     1074                rc = demo_clip(gc, scr_width, scr_height);
    10611075                if (rc != EOK)
    10621076                        goto error;
     
    10731087static errno_t demo_console(void)
    10741088{
    1075         console_gc_t *cgc = NULL;
    10761089        gfx_context_t *gc;
    10771090        sysarg_t cols, rows;
     
    10951108        textmode = true;
    10961109
    1097         rc = demo_loop(gc, cols, rows);
     1110        scr_width = cols;
     1111        scr_height = rows;
     1112
     1113        rc = demo_loop(gc);
    10981114        if (rc != EOK)
    10991115                return rc;
     
    11121128
    11131129        ui_lock(args->ui);
    1114         rc = demo_loop(args->gc, args->dims.x, args->dims.y);
     1130        scr_width = args->dims.x;
     1131        scr_height = args->dims.y;
     1132        rc = demo_loop(args->gc);
    11151133        ui_unlock(args->ui);
    11161134        ui_quit(args->ui);
     
    11541172
    11551173        /* Do not decorate the window in fullscreen mode */
    1156         if (ui_is_fullscreen(ui))
     1174        if (ui_is_fullscreen(ui)) {
    11571175                params.style &= ~ui_wds_decorated;
     1176                params.placement = ui_wnd_place_full_screen;
     1177        }
    11581178
    11591179        /*
     
    12591279        textmode = false;
    12601280
    1261         rc = demo_loop(gc, 400, 300);
     1281        scr_width = 400;
     1282        scr_height = 300;
     1283        rc = demo_loop(gc);
    12621284        if (rc != EOK)
    12631285                return rc;
     
    13111333        (void)arg;
    13121334        demo_kbd_event(event);
     1335}
     1336
     1337static void uiwnd_resize_event(ui_window_t *window, void *arg)
     1338{
     1339        gfx_rect_t rect;
     1340        gfx_coord2_t dims;
     1341
     1342        ui_window_get_app_rect(window, &rect);
     1343        gfx_rect_dims(&rect, &dims);
     1344        scr_width = dims.x;
     1345        scr_height = dims.y;
    13131346}
    13141347
     
    13551388        }
    13561389
    1357         if (i >= argc || str_cmp(argv[i], "display") == 0) {
    1358                 rc = demo_display(display_svc);
     1390        if (i >= argc || str_cmp(argv[i], "ui") == 0) {
     1391                rc = demo_ui(ui_display_spec);
    13591392                if (rc != EOK)
    13601393                        return 1;
     
    13631396                if (rc != EOK)
    13641397                        return 1;
    1365         } else if (str_cmp(argv[i], "ui") == 0) {
    1366                 rc = demo_ui(ui_display_spec);
     1398        } else if (str_cmp(argv[i], "display") == 0) {
     1399                rc = demo_display(display_svc);
    13671400                if (rc != EOK)
    13681401                        return 1;
Note: See TracChangeset for help on using the changeset viewer.