Changes in uspace/srv/hid/console/gcons.c [9f1362d4:19f857a] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/hid/console/gcons.c
r9f1362d4 r19f857a 54 54 #define STATUS_HEIGHT 48 55 55 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; 56 #define MAIN_COLOR 0xffffff 82 57 83 58 static bool use_gcons = false; … … 107 82 static size_t active_console = 0; 108 83 109 s tatic ipcarg_t mouse_x = 0;110 s tatic ipcarg_t mouse_y= 0;111 112 static bool btn_pressed = false;113 s tatic ipcarg_t btn_x = 0;114 s tatic ipcarg_t btn_y = 0;84 size_t mouse_x; 85 size_t mouse_y; 86 87 bool btn_pressed; 88 size_t btn_x; 89 size_t btn_y; 115 90 116 91 static void vp_switch(int vp) … … 120 95 121 96 /** Create view port */ 122 static int vp_create( ipcarg_t x, ipcarg_t y, ipcarg_t width, ipcarg_t height)97 static int vp_create(size_t x, size_t y, size_t width, size_t height) 123 98 { 124 99 return async_req_2_0(fbphone, FB_VIEWPORT_CREATE, (x << 16) | y, … … 137 112 138 113 /** Transparent putchar */ 139 static void tran_putch(wchar_t ch, ipcarg_t col, ipcarg_t row)114 static void tran_putch(wchar_t ch, size_t col, size_t row) 140 115 { 141 116 async_msg_3(fbphone, FB_PUTCHAR, ch, col, row); … … 284 259 void gcons_mouse_move(ssize_t dx, ssize_t dy) 285 260 { 286 ssize_t nx = (ssize_t) mouse_x + dx; 287 ssize_t ny = (ssize_t) mouse_y + dy; 288 289 mouse_x = (size_t) limit(nx, 0, xres); 290 mouse_y = (size_t) limit(ny, 0, yres); 291 261 mouse_x = limit(mouse_x + dx, 0, xres); 262 mouse_y = limit(mouse_y + dy, 0, yres); 263 292 264 if (active_console != KERNEL_CONSOLE) 293 265 async_msg_2(fbphone, FB_POINTER_MOVE, mouse_x, mouse_y); 294 266 } 295 267 296 static int gcons_find_conbut(i pcarg_t x, ipcarg_t y)297 { 298 i pcarg_t status_start = STATUS_START + (xres - 800) / 2;268 static int gcons_find_conbut(int x, int y) 269 { 270 int status_start = STATUS_START + (xres - 800) / 2; 299 271 300 272 if ((y < STATUS_TOP) || (y >= STATUS_TOP + STATUS_HEIGHT)) … … 306 278 if (x >= status_start + (STATUS_WIDTH + STATUS_SPACE) * CONSOLE_COUNT) 307 279 return -1; 308 309 280 if (((x - status_start) % (STATUS_WIDTH + STATUS_SPACE)) < STATUS_SPACE) 310 281 return -1; 311 282 312 ipcarg_t btn = (x - status_start) / (STATUS_WIDTH + STATUS_SPACE); 313 314 if (btn < CONSOLE_COUNT) 315 return btn; 316 317 return -1; 283 return (x - status_start) / (STATUS_WIDTH + STATUS_SPACE); 318 284 } 319 285 … … 321 287 * 322 288 * @param state New state (true - pressed, false - depressed) 323 *324 289 */ 325 290 int gcons_mouse_btn(bool state) 326 291 { 327 /* Ignore mouse clicks if no buttons 328 are drawn at all */ 329 if (xres < 800) 330 return -1; 292 int conbut; 331 293 332 294 if (state) { 333 intconbut = gcons_find_conbut(mouse_x, mouse_y);295 conbut = gcons_find_conbut(mouse_x, mouse_y); 334 296 if (conbut != -1) { 335 297 btn_pressed = true; … … 345 307 btn_pressed = false; 346 308 347 intconbut = gcons_find_conbut(mouse_x, mouse_y);309 conbut = gcons_find_conbut(mouse_x, mouse_y); 348 310 if (conbut == gcons_find_conbut(btn_x, btn_y)) 349 311 return conbut; … … 351 313 return -1; 352 314 } 315 353 316 354 317 /** Draw a PPM pixmap to framebuffer … … 358 321 * @param x Coordinate of upper left corner 359 322 * @param y Coordinate of upper left corner 360 * 361 */ 362 static void draw_pixmap(char *logo, size_t size, ipcarg_t x, ipcarg_t y) 363 { 323 */ 324 static void draw_pixmap(char *logo, size_t size, int x, int y) 325 { 326 char *shm; 327 int rc; 328 364 329 /* Create area */ 365 char *shm = mmap(NULL, size, PROTO_READ | PROTO_WRITE, MAP_SHARED |330 shm = mmap(NULL, size, PROTO_READ | PROTO_WRITE, MAP_SHARED | 366 331 MAP_ANONYMOUS, 0, 0); 367 332 if (shm == MAP_FAILED) … … 371 336 372 337 /* Send area */ 373 intrc = async_req_1_0(fbphone, FB_PREPARE_SHM, (ipcarg_t) shm);338 rc = async_req_1_0(fbphone, FB_PREPARE_SHM, (ipcarg_t) shm); 374 339 if (rc) 375 340 goto exit; … … 391 356 } 392 357 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 393 363 /** Redraws console graphics */ 394 364 void gcons_redraw_console(void) 395 365 { 366 int i; 367 396 368 if (!use_gcons) 397 369 return; 398 370 399 371 vp_switch(0); 400 set_rgb_color( COLOR_MAIN, COLOR_MAIN);372 set_rgb_color(MAIN_COLOR, MAIN_COLOR); 401 373 clear(); 402 374 draw_pixmap(_binary_gfx_helenos_ppm_start, … … 405 377 (size_t) &_binary_gfx_nameic_ppm_size, 5, 17); 406 378 407 unsigned int i;408 379 for (i = 0; i < CONSOLE_COUNT; i++) 409 380 redraw_state(i); … … 422 393 static int make_pixmap(char *data, size_t size) 423 394 { 395 char *shm; 396 int rc; 397 int pxid = -1; 398 424 399 /* Create area */ 425 char *shm = mmap(NULL, size, PROTO_READ | PROTO_WRITE, MAP_SHARED |400 shm = mmap(NULL, size, PROTO_READ | PROTO_WRITE, MAP_SHARED | 426 401 MAP_ANONYMOUS, 0, 0); 427 402 if (shm == MAP_FAILED) … … 430 405 memcpy(shm, data, size); 431 406 432 int pxid = -1;433 434 407 /* Send area */ 435 intrc = async_req_1_0(fbphone, FB_PREPARE_SHM, (ipcarg_t) shm);408 rc = async_req_1_0(fbphone, FB_PREPARE_SHM, (ipcarg_t) shm); 436 409 if (rc) 437 410 goto exit; … … 459 432 } 460 433 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 461 443 static void make_anim(void) 462 444 { 463 int an = async_req_1_0(fbphone, FB_ANIM_CREATE, 464 cstatus_vp[KERNEL_CONSOLE]); 445 int an = async_req_1_0(fbphone, FB_ANIM_CREATE, cstatus_vp[KERNEL_CONSOLE]); 465 446 if (an < 0) 466 447 return; … … 486 467 animation = an; 487 468 } 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; 488 478 489 479 /** Initialize nice graphical console environment */ … … 510 500 511 501 /* Create status buttons */ 512 ipcarg_t status_start = STATUS_START + (xres - 800) / 2;502 size_t status_start = STATUS_START + (xres - 800) / 2; 513 503 size_t i; 514 504 for (i = 0; i < CONSOLE_COUNT; i++) { … … 521 511 522 512 vp_switch(cstatus_vp[i]); 523 set_rgb_color( COLOR_FOREGROUND, COLOR_BACKGROUND);513 set_rgb_color(0x202020, 0xffffff); 524 514 } 525 515
Note:
See TracChangeset
for help on using the changeset viewer.