Changes in uspace/app/gfxdemo/gfxdemo.c [0a411bbf:d0dfbba] in mainline
- File:
-
- 1 edited
-
uspace/app/gfxdemo/gfxdemo.c (modified) (21 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/gfxdemo/gfxdemo.c
r0a411bbf rd0dfbba 1 1 /* 2 * Copyright (c) 202 4Jiri Svoboda2 * Copyright (c) 2026 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 36 36 #include <display.h> 37 37 #include <fibril.h> 38 #include <fibril_synch.h> 38 39 #include <gfx/bitmap.h> 39 40 #include <gfx/color.h> … … 61 62 }; 62 63 64 static void uiwnd_resize_event(ui_window_t *, void *); 63 65 static void uiwnd_close_event(ui_window_t *, void *); 64 66 static void uiwnd_kbd_event(ui_window_t *, void *, kbd_event_t *); 65 67 66 68 static ui_window_cb_t ui_window_cb = { 69 .resize = uiwnd_resize_event, 67 70 .close = uiwnd_close_event, 68 71 .kbd = uiwnd_kbd_event … … 78 81 static gfx_coord_t vpad; 79 82 static console_ctrl_t *con = NULL; 83 static bool textmode; 84 static console_gc_t *cgc = NULL; 85 static unsigned scr_width, scr_height; 80 86 static ui_t *ui; 81 87 82 88 /** Determine if we are running in text mode. 83 89 * 84 * @param w Screen width85 * @param h Screen height86 90 * @return @c true iff we are running in text mode 87 91 */ 88 static bool demo_is_text(gfx_coord_t w, gfx_coord_t h) 89 { 90 // XXX Need a proper way to determine text mode 91 return w <= 80; 92 static bool demo_is_text(void) 93 { 94 return textmode; 92 95 } 93 96 … … 101 104 usec_t usec; 102 105 cons_event_t cevent; 106 sysarg_t cols, rows; 103 107 104 108 if (ui != NULL) … … 115 119 demo_kbd_event(&cevent.ev.key); 116 120 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); 117 131 } 118 132 } … … 181 195 182 196 /* XXX Crude way of detecting text mode */ 183 if ( w < 256) {197 if (demo_is_text()) { 184 198 /* Create dummy font for text mode */ 185 199 rc = gfx_typeface_create(gc, &tface); … … 270 284 271 285 if (font != NULL) { 272 if (demo_is_text( w, h)) {286 if (demo_is_text()) { 273 287 rc = gfx_color_new_ega(0x1e, &color); 274 288 if (rc != EOK) … … 719 733 gfx_color_delete(color); 720 734 721 if (demo_is_text( w, h)) {735 if (demo_is_text()) { 722 736 rc = gfx_color_new_ega(0x1f, &color); 723 737 if (rc != EOK) … … 807 821 808 822 for (i = 0; i < 8; i++) { 809 if (demo_is_text( w, h)) {823 if (demo_is_text()) { 810 824 rc = gfx_color_new_ega(i != 0 ? i : 0x10, &color); 811 825 if (rc != EOK) … … 884 898 gfx_color_delete(color); 885 899 886 if (demo_is_text( w, h)) {900 if (demo_is_text()) { 887 901 rc = gfx_color_new_ega(0x1f, &color); 888 902 if (rc != EOK) … … 1026 1040 * 1027 1041 * @param gc Graphic context 1028 * @param w Width 1029 * @param h Height 1030 */ 1031 static errno_t demo_loop(gfx_context_t *gc, gfx_coord_t w, gfx_coord_t h) 1032 { 1033 errno_t rc; 1034 1035 (void) demo_font_init(gc, w, h); 1042 */ 1043 static errno_t demo_loop(gfx_context_t *gc) 1044 { 1045 errno_t rc; 1046 1047 (void) demo_font_init(gc, scr_width, scr_height); 1036 1048 1037 1049 while (!quit) { 1038 rc = demo_rects(gc, w, h);1039 if (rc != EOK) 1040 goto error; 1041 1042 rc = demo_bitmap(gc, w, h);1043 if (rc != EOK) 1044 goto error; 1045 1046 rc = demo_bitmap2(gc, w, h);1047 if (rc != EOK) 1048 goto error; 1049 1050 rc = demo_bitmap_kc(gc, w, h);1051 if (rc != EOK) 1052 goto error; 1053 1054 rc = demo_text(gc, w, h);1055 if (rc != EOK) 1056 goto error; 1057 1058 rc = demo_text_abbr(gc, w, h);1059 if (rc != EOK) 1060 goto error; 1061 1062 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); 1063 1075 if (rc != EOK) 1064 1076 goto error; … … 1075 1087 static errno_t demo_console(void) 1076 1088 { 1077 console_gc_t *cgc = NULL;1078 1089 gfx_context_t *gc; 1079 1090 sysarg_t cols, rows; … … 1094 1105 gc = console_gc_get_ctx(cgc); 1095 1106 1096 rc = demo_loop(gc, cols, rows); 1107 /* Currently console is always text. */ 1108 textmode = true; 1109 1110 scr_width = cols; 1111 scr_height = rows; 1112 1113 rc = demo_loop(gc); 1097 1114 if (rc != EOK) 1098 1115 return rc; … … 1111 1128 1112 1129 ui_lock(args->ui); 1113 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); 1114 1133 ui_unlock(args->ui); 1115 1134 ui_quit(args->ui); … … 1153 1172 1154 1173 /* Do not decorate the window in fullscreen mode */ 1155 if (ui_is_fullscreen(ui)) 1174 if (ui_is_fullscreen(ui)) { 1156 1175 params.style &= ~ui_wds_decorated; 1176 params.placement = ui_wnd_place_full_screen; 1177 } 1157 1178 1158 1179 /* … … 1192 1213 task_retval(0); 1193 1214 1215 textmode = ui_is_textmode(ui); 1216 1194 1217 args.gc = gc; 1195 1218 args.dims = dims; … … 1253 1276 task_retval(0); 1254 1277 1255 rc = demo_loop(gc, 400, 300); 1278 /* FIXME Assuming display service is not text mode. */ 1279 textmode = false; 1280 1281 scr_width = 400; 1282 scr_height = 300; 1283 rc = demo_loop(gc); 1256 1284 if (rc != EOK) 1257 1285 return rc; … … 1305 1333 (void)arg; 1306 1334 demo_kbd_event(event); 1335 } 1336 1337 static 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; 1307 1346 } 1308 1347 … … 1349 1388 } 1350 1389 1351 if (i >= argc || str_cmp(argv[i], " display") == 0) {1352 rc = demo_ display(display_svc);1390 if (i >= argc || str_cmp(argv[i], "ui") == 0) { 1391 rc = demo_ui(ui_display_spec); 1353 1392 if (rc != EOK) 1354 1393 return 1; … … 1357 1396 if (rc != EOK) 1358 1397 return 1; 1359 } else if (str_cmp(argv[i], " ui") == 0) {1360 rc = demo_ ui(ui_display_spec);1398 } else if (str_cmp(argv[i], "display") == 0) { 1399 rc = demo_display(display_svc); 1361 1400 if (rc != EOK) 1362 1401 return 1;
Note:
See TracChangeset
for help on using the changeset viewer.
