Changes in uspace/srv/hid/console/gcons.c [2ae1e6e:7e752b2] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/hid/console/gcons.c
r2ae1e6e r7e752b2 38 38 #include <stdio.h> 39 39 #include <sys/mman.h> 40 #include <str ing.h>40 #include <str.h> 41 41 #include <align.h> 42 42 #include <bool.h> … … 54 54 #define STATUS_HEIGHT 48 55 55 56 #define MAIN_COLOR 0xffffff 56 #define COLOR_MAIN 0xffffff 57 #define COLOR_FOREGROUND 0x202020 58 #define COLOR_BACKGROUND 0xffffff 59 60 extern char _binary_gfx_helenos_ppm_start[0]; 61 extern int _binary_gfx_helenos_ppm_size; 62 extern char _binary_gfx_nameic_ppm_start[0]; 63 extern int _binary_gfx_nameic_ppm_size; 64 65 extern char _binary_gfx_anim_1_ppm_start[0]; 66 extern int _binary_gfx_anim_1_ppm_size; 67 extern char _binary_gfx_anim_2_ppm_start[0]; 68 extern int _binary_gfx_anim_2_ppm_size; 69 extern char _binary_gfx_anim_3_ppm_start[0]; 70 extern int _binary_gfx_anim_3_ppm_size; 71 extern char _binary_gfx_anim_4_ppm_start[0]; 72 extern int _binary_gfx_anim_4_ppm_size; 73 74 extern char _binary_gfx_cons_selected_ppm_start[0]; 75 extern int _binary_gfx_cons_selected_ppm_size; 76 extern char _binary_gfx_cons_idle_ppm_start[0]; 77 extern int _binary_gfx_cons_idle_ppm_size; 78 extern char _binary_gfx_cons_has_data_ppm_start[0]; 79 extern int _binary_gfx_cons_has_data_ppm_size; 80 extern char _binary_gfx_cons_kernel_ppm_start[0]; 81 extern int _binary_gfx_cons_kernel_ppm_size; 57 82 58 83 static bool use_gcons = false; … … 82 107 static size_t active_console = 0; 83 108 84 s ize_t mouse_x;85 s ize_t mouse_y;86 87 bool btn_pressed;88 s ize_t btn_x;89 s ize_t btn_y;109 static ipcarg_t mouse_x = 0; 110 static ipcarg_t mouse_y= 0; 111 112 static bool btn_pressed = false; 113 static ipcarg_t btn_x = 0; 114 static ipcarg_t btn_y = 0; 90 115 91 116 static void vp_switch(int vp) … … 95 120 96 121 /** Create view port */ 97 static int vp_create( size_t x, size_t y, size_t width, size_t height)122 static int vp_create(ipcarg_t x, ipcarg_t y, ipcarg_t width, ipcarg_t height) 98 123 { 99 124 return async_req_2_0(fbphone, FB_VIEWPORT_CREATE, (x << 16) | y, … … 112 137 113 138 /** Transparent putchar */ 114 static void tran_putch(wchar_t ch, size_t col, size_t row)139 static void tran_putch(wchar_t ch, ipcarg_t col, ipcarg_t row) 115 140 { 116 141 async_msg_3(fbphone, FB_PUTCHAR, ch, col, row); … … 132 157 133 158 char data[5]; 134 snprintf(data, 5, "% u", index + 1);159 snprintf(data, 5, "%zu", index + 1); 135 160 136 161 size_t i; … … 259 284 void gcons_mouse_move(ssize_t dx, ssize_t dy) 260 285 { 261 mouse_x = limit(mouse_x + dx, 0, xres); 262 mouse_y = limit(mouse_y + dy, 0, yres); 263 286 ssize_t nx = (ssize_t) mouse_x + dx; 287 ssize_t ny = (ssize_t) mouse_y + dy; 288 289 if (!use_gcons) 290 return; 291 292 mouse_x = (size_t) limit(nx, 0, xres); 293 mouse_y = (size_t) limit(ny, 0, yres); 294 264 295 if (active_console != KERNEL_CONSOLE) 265 296 async_msg_2(fbphone, FB_POINTER_MOVE, mouse_x, mouse_y); 266 297 } 267 298 268 static int gcons_find_conbut(i nt x, int y)269 { 270 i nt status_start = STATUS_START + (xres - 800) / 2;299 static int gcons_find_conbut(ipcarg_t x, ipcarg_t y) 300 { 301 ipcarg_t status_start = STATUS_START + (xres - 800) / 2; 271 302 272 303 if ((y < STATUS_TOP) || (y >= STATUS_TOP + STATUS_HEIGHT)) … … 278 309 if (x >= status_start + (STATUS_WIDTH + STATUS_SPACE) * CONSOLE_COUNT) 279 310 return -1; 311 280 312 if (((x - status_start) % (STATUS_WIDTH + STATUS_SPACE)) < STATUS_SPACE) 281 313 return -1; 282 314 283 return (x - status_start) / (STATUS_WIDTH + STATUS_SPACE); 315 ipcarg_t btn = (x - status_start) / (STATUS_WIDTH + STATUS_SPACE); 316 317 if (btn < CONSOLE_COUNT) 318 return btn; 319 320 return -1; 284 321 } 285 322 … … 287 324 * 288 325 * @param state New state (true - pressed, false - depressed) 326 * 289 327 */ 290 328 int gcons_mouse_btn(bool state) 291 329 { 292 int conbut; 330 /* Ignore mouse clicks if no buttons 331 are drawn at all */ 332 if (xres < 800) 333 return -1; 293 334 294 335 if (state) { 295 conbut = gcons_find_conbut(mouse_x, mouse_y);336 int conbut = gcons_find_conbut(mouse_x, mouse_y); 296 337 if (conbut != -1) { 297 338 btn_pressed = true; … … 307 348 btn_pressed = false; 308 349 309 conbut = gcons_find_conbut(mouse_x, mouse_y);350 int conbut = gcons_find_conbut(mouse_x, mouse_y); 310 351 if (conbut == gcons_find_conbut(btn_x, btn_y)) 311 352 return conbut; … … 313 354 return -1; 314 355 } 315 316 356 317 357 /** Draw a PPM pixmap to framebuffer … … 321 361 * @param x Coordinate of upper left corner 322 362 * @param y Coordinate of upper left corner 323 */ 324 static void draw_pixmap(char *logo, size_t size, int x, int y) 325 { 326 char *shm; 327 int rc; 328 363 * 364 */ 365 static void draw_pixmap(char *logo, size_t size, ipcarg_t x, ipcarg_t y) 366 { 329 367 /* Create area */ 330 shm = mmap(NULL, size, PROTO_READ | PROTO_WRITE, MAP_SHARED |368 char *shm = mmap(NULL, size, PROTO_READ | PROTO_WRITE, MAP_SHARED | 331 369 MAP_ANONYMOUS, 0, 0); 332 370 if (shm == MAP_FAILED) … … 336 374 337 375 /* Send area */ 338 rc = async_req_1_0(fbphone, FB_PREPARE_SHM, (ipcarg_t) shm);376 int rc = async_req_1_0(fbphone, FB_PREPARE_SHM, (ipcarg_t) shm); 339 377 if (rc) 340 378 goto exit; … … 356 394 } 357 395 358 extern char _binary_gfx_helenos_ppm_start[0];359 extern int _binary_gfx_helenos_ppm_size;360 extern char _binary_gfx_nameic_ppm_start[0];361 extern int _binary_gfx_nameic_ppm_size;362 363 396 /** Redraws console graphics */ 364 397 void gcons_redraw_console(void) 365 398 { 366 int i;367 368 399 if (!use_gcons) 369 400 return; 370 401 371 402 vp_switch(0); 372 set_rgb_color( MAIN_COLOR, MAIN_COLOR);403 set_rgb_color(COLOR_MAIN, COLOR_MAIN); 373 404 clear(); 374 405 draw_pixmap(_binary_gfx_helenos_ppm_start, … … 377 408 (size_t) &_binary_gfx_nameic_ppm_size, 5, 17); 378 409 410 unsigned int i; 379 411 for (i = 0; i < CONSOLE_COUNT; i++) 380 412 redraw_state(i); … … 393 425 static int make_pixmap(char *data, size_t size) 394 426 { 395 char *shm;396 int rc;397 int pxid = -1;398 399 427 /* Create area */ 400 shm = mmap(NULL, size, PROTO_READ | PROTO_WRITE, MAP_SHARED |428 char *shm = mmap(NULL, size, PROTO_READ | PROTO_WRITE, MAP_SHARED | 401 429 MAP_ANONYMOUS, 0, 0); 402 430 if (shm == MAP_FAILED) … … 405 433 memcpy(shm, data, size); 406 434 435 int pxid = -1; 436 407 437 /* Send area */ 408 rc = async_req_1_0(fbphone, FB_PREPARE_SHM, (ipcarg_t) shm);438 int rc = async_req_1_0(fbphone, FB_PREPARE_SHM, (ipcarg_t) shm); 409 439 if (rc) 410 440 goto exit; … … 432 462 } 433 463 434 extern char _binary_gfx_anim_1_ppm_start[0];435 extern int _binary_gfx_anim_1_ppm_size;436 extern char _binary_gfx_anim_2_ppm_start[0];437 extern int _binary_gfx_anim_2_ppm_size;438 extern char _binary_gfx_anim_3_ppm_start[0];439 extern int _binary_gfx_anim_3_ppm_size;440 extern char _binary_gfx_anim_4_ppm_start[0];441 extern int _binary_gfx_anim_4_ppm_size;442 443 464 static void make_anim(void) 444 465 { 445 int an = async_req_1_0(fbphone, FB_ANIM_CREATE, cstatus_vp[KERNEL_CONSOLE]); 466 int an = async_req_1_0(fbphone, FB_ANIM_CREATE, 467 cstatus_vp[KERNEL_CONSOLE]); 446 468 if (an < 0) 447 469 return; 448 470 449 471 int pm = make_pixmap(_binary_gfx_anim_1_ppm_start, 450 ( int) &_binary_gfx_anim_1_ppm_size);472 (size_t) &_binary_gfx_anim_1_ppm_size); 451 473 async_msg_2(fbphone, FB_ANIM_ADDPIXMAP, an, pm); 452 474 453 475 pm = make_pixmap(_binary_gfx_anim_2_ppm_start, 454 ( int) &_binary_gfx_anim_2_ppm_size);476 (size_t) &_binary_gfx_anim_2_ppm_size); 455 477 async_msg_2(fbphone, FB_ANIM_ADDPIXMAP, an, pm); 456 478 457 479 pm = make_pixmap(_binary_gfx_anim_3_ppm_start, 458 ( int) &_binary_gfx_anim_3_ppm_size);480 (size_t) &_binary_gfx_anim_3_ppm_size); 459 481 async_msg_2(fbphone, FB_ANIM_ADDPIXMAP, an, pm); 460 482 461 483 pm = make_pixmap(_binary_gfx_anim_4_ppm_start, 462 ( int) &_binary_gfx_anim_4_ppm_size);484 (size_t) &_binary_gfx_anim_4_ppm_size); 463 485 async_msg_2(fbphone, FB_ANIM_ADDPIXMAP, an, pm); 464 486 … … 467 489 animation = an; 468 490 } 469 470 extern char _binary_gfx_cons_selected_ppm_start[0];471 extern int _binary_gfx_cons_selected_ppm_size;472 extern char _binary_gfx_cons_idle_ppm_start[0];473 extern int _binary_gfx_cons_idle_ppm_size;474 extern char _binary_gfx_cons_has_data_ppm_start[0];475 extern int _binary_gfx_cons_has_data_ppm_size;476 extern char _binary_gfx_cons_kernel_ppm_start[0];477 extern int _binary_gfx_cons_kernel_ppm_size;478 491 479 492 /** Initialize nice graphical console environment */ … … 500 513 501 514 /* Create status buttons */ 502 size_t status_start = STATUS_START + (xres - 800) / 2;515 ipcarg_t status_start = STATUS_START + (xres - 800) / 2; 503 516 size_t i; 504 517 for (i = 0; i < CONSOLE_COUNT; i++) { … … 511 524 512 525 vp_switch(cstatus_vp[i]); 513 set_rgb_color( 0x202020, 0xffffff);526 set_rgb_color(COLOR_FOREGROUND, COLOR_BACKGROUND); 514 527 } 515 528
Note:
See TracChangeset
for help on using the changeset viewer.