Changes in uspace/lib/ui/src/resource.c [214aefb:ef4d684] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/src/resource.c
r214aefb ref4d684 1 1 /* 2 * Copyright (c) 202 1Jiri Svoboda2 * Copyright (c) 2023 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 47 47 static const char *ui_typeface_path = "/data/font/helena.tpf"; 48 48 49 /** Create new UI resource .49 /** Create new UI resource in graphics mode. 50 50 * 51 51 * @param gc Graphic context 52 * @param textmode @c true if running in text mode53 52 * @param rresource Place to store pointer to new UI resource 54 53 * @return EOK on success, ENOMEM if out of memory 55 54 */ 56 errno_t ui_resource_create(gfx_context_t *gc, bool textmode,55 static errno_t ui_resource_create_gfx(gfx_context_t *gc, 57 56 ui_resource_t **rresource) 58 57 { … … 63 62 gfx_color_t *btn_frame_color = NULL; 64 63 gfx_color_t *btn_face_color = NULL; 64 gfx_color_t *btn_face_lit_color = NULL; 65 65 gfx_color_t *btn_text_color = NULL; 66 66 gfx_color_t *btn_highlight_color = NULL; … … 68 68 gfx_color_t *wnd_face_color = NULL; 69 69 gfx_color_t *wnd_text_color = NULL; 70 gfx_color_t *wnd_dis_text_color = NULL; 71 gfx_color_t *wnd_text_hgl_color = NULL; 70 72 gfx_color_t *wnd_sel_text_color = NULL; 73 gfx_color_t *wnd_sel_text_hgl_color = NULL; 71 74 gfx_color_t *wnd_sel_text_bg_color = NULL; 72 75 gfx_color_t *wnd_frame_hi_color = NULL; … … 81 84 gfx_color_t *entry_bg_color = NULL; 82 85 gfx_color_t *entry_act_bg_color = NULL; 86 gfx_color_t *entry_sel_text_fg_color = NULL; 87 gfx_color_t *entry_sel_text_bg_color = NULL; 88 gfx_color_t *sbar_trough_color = NULL; 89 gfx_color_t *sbar_act_trough_color = NULL; 83 90 errno_t rc; 84 91 … … 87 94 return ENOMEM; 88 95 89 if (textmode) { 90 /* Create dummy font for text mode */ 91 rc = gfx_typeface_create(gc, &tface); 92 if (rc != EOK) 93 goto error; 94 95 rc = gfx_font_create_textmode(tface, &font); 96 if (rc != EOK) 97 goto error; 98 } else { 99 rc = gfx_typeface_open(gc, ui_typeface_path, &tface); 100 if (rc != EOK) 101 goto error; 102 103 finfo = gfx_typeface_first_font(tface); 104 if (finfo == NULL) { 105 rc = EIO; 106 goto error; 107 } 108 109 rc = gfx_font_open(finfo, &font); 110 if (rc != EOK) 111 goto error; 96 rc = gfx_typeface_open(gc, ui_typeface_path, &tface); 97 if (rc != EOK) 98 goto error; 99 100 finfo = gfx_typeface_first_font(tface); 101 if (finfo == NULL) { 102 rc = EIO; 103 goto error; 112 104 } 113 105 106 rc = gfx_font_open(finfo, &font); 107 if (rc != EOK) 108 goto error; 109 114 110 rc = gfx_color_new_rgb_i16(0, 0, 0, &btn_frame_color); 115 111 if (rc != EOK) … … 117 113 118 114 rc = gfx_color_new_rgb_i16(0xc8c8, 0xc8c8, 0xc8c8, &btn_face_color); 115 if (rc != EOK) 116 goto error; 117 118 rc = gfx_color_new_rgb_i16(0xe8e8, 0xe8e8, 0xe8e8, &btn_face_lit_color); 119 119 if (rc != EOK) 120 120 goto error; … … 141 141 goto error; 142 142 143 rc = gfx_color_new_rgb_i16(0x9696, 0x9696, 0x9696, &wnd_dis_text_color); 144 if (rc != EOK) 145 goto error; 146 147 rc = gfx_color_new_rgb_i16(0, 0, 0, &wnd_text_hgl_color); 148 if (rc != EOK) 149 goto error; 150 143 151 rc = gfx_color_new_rgb_i16(0xffff, 0xffff, 0xffff, &wnd_sel_text_color); 152 if (rc != EOK) 153 goto error; 154 155 rc = gfx_color_new_rgb_i16(0xffff, 0xffff, 0xffff, 156 &wnd_sel_text_hgl_color); 144 157 if (rc != EOK) 145 158 goto error; … … 195 208 196 209 rc = gfx_color_new_rgb_i16(0xc8c8, 0xc8c8, 0xc8c8, &entry_act_bg_color); 210 if (rc != EOK) 211 goto error; 212 213 rc = gfx_color_new_rgb_i16(0xffff, 0xffff, 0xffff, 214 &entry_sel_text_fg_color); 215 if (rc != EOK) 216 goto error; 217 218 rc = gfx_color_new_rgb_i16(0, 0, 0xffff, &entry_sel_text_bg_color); 219 if (rc != EOK) 220 goto error; 221 222 rc = gfx_color_new_rgb_i16(0xe4e4, 0xe4e4, 0xe4e4, 223 &sbar_trough_color); 224 if (rc != EOK) 225 goto error; 226 227 rc = gfx_color_new_rgb_i16(0x5858, 0x5858, 0x5858, 228 &sbar_act_trough_color); 197 229 if (rc != EOK) 198 230 goto error; … … 201 233 resource->tface = tface; 202 234 resource->font = font; 203 resource->textmode = textmode;235 resource->textmode = false; 204 236 205 237 resource->btn_frame_color = btn_frame_color; 206 238 resource->btn_face_color = btn_face_color; 239 resource->btn_face_lit_color = btn_face_lit_color; 207 240 resource->btn_text_color = btn_text_color; 208 241 resource->btn_highlight_color = btn_highlight_color; … … 211 244 resource->wnd_face_color = wnd_face_color; 212 245 resource->wnd_text_color = wnd_text_color; 246 resource->wnd_dis_text_color = wnd_dis_text_color; 247 resource->wnd_text_hgl_color = wnd_text_hgl_color; 213 248 resource->wnd_sel_text_color = wnd_sel_text_color; 249 resource->wnd_sel_text_hgl_color = wnd_sel_text_hgl_color; 214 250 resource->wnd_sel_text_bg_color = wnd_sel_text_bg_color; 215 251 resource->wnd_frame_hi_color = wnd_frame_hi_color; … … 226 262 resource->entry_bg_color = entry_bg_color; 227 263 resource->entry_act_bg_color = entry_act_bg_color; 264 resource->entry_sel_text_fg_color = entry_sel_text_fg_color; 265 resource->entry_sel_text_bg_color = entry_sel_text_bg_color; 266 267 resource->sbar_trough_color = sbar_trough_color; 268 resource->sbar_act_trough_color = sbar_act_trough_color; 228 269 229 270 *rresource = resource; … … 234 275 if (btn_face_color != NULL) 235 276 gfx_color_delete(btn_face_color); 277 if (btn_face_lit_color != NULL) 278 gfx_color_delete(btn_face_lit_color); 236 279 if (btn_text_color != NULL) 237 280 gfx_color_delete(btn_text_color); … … 245 288 if (wnd_text_color != NULL) 246 289 gfx_color_delete(wnd_text_color); 290 if (wnd_dis_text_color != NULL) 291 gfx_color_delete(wnd_dis_text_color); 292 if (wnd_text_hgl_color != NULL) 293 gfx_color_delete(wnd_text_hgl_color); 247 294 if (wnd_sel_text_color != NULL) 248 295 gfx_color_delete(wnd_sel_text_color); 296 if (wnd_sel_text_hgl_color != NULL) 297 gfx_color_delete(wnd_sel_text_hgl_color); 249 298 if (wnd_sel_text_bg_color != NULL) 250 299 gfx_color_delete(wnd_sel_text_bg_color); … … 271 320 if (entry_bg_color != NULL) 272 321 gfx_color_delete(entry_bg_color); 322 if (entry_sel_text_fg_color != NULL) 323 gfx_color_delete(entry_sel_text_fg_color); 324 if (entry_sel_text_bg_color != NULL) 325 gfx_color_delete(entry_sel_text_bg_color); 273 326 if (entry_act_bg_color != NULL) 274 327 gfx_color_delete(entry_act_bg_color); 328 329 if (sbar_trough_color != NULL) 330 gfx_color_delete(sbar_trough_color); 331 if (sbar_act_trough_color != NULL) 332 gfx_color_delete(sbar_act_trough_color); 275 333 276 334 if (tface != NULL) … … 280 338 } 281 339 340 /** Create new UI resource in text mode. 341 * 342 * @param gc Graphic context 343 * @param rresource Place to store pointer to new UI resource 344 * @return EOK on success, ENOMEM if out of memory 345 */ 346 static errno_t ui_resource_create_text(gfx_context_t *gc, 347 ui_resource_t **rresource) 348 { 349 ui_resource_t *resource; 350 gfx_typeface_t *tface = NULL; 351 gfx_font_t *font = NULL; 352 gfx_color_t *btn_frame_color = NULL; 353 gfx_color_t *btn_face_color = NULL; 354 gfx_color_t *btn_face_lit_color = NULL; 355 gfx_color_t *btn_text_color = NULL; 356 gfx_color_t *btn_highlight_color = NULL; 357 gfx_color_t *btn_shadow_color = NULL; 358 gfx_color_t *wnd_face_color = NULL; 359 gfx_color_t *wnd_text_color = NULL; 360 gfx_color_t *wnd_dis_text_color = NULL; 361 gfx_color_t *wnd_text_hgl_color = NULL; 362 gfx_color_t *wnd_sel_text_color = NULL; 363 gfx_color_t *wnd_sel_text_hgl_color = NULL; 364 gfx_color_t *wnd_sel_text_bg_color = NULL; 365 gfx_color_t *wnd_frame_hi_color = NULL; 366 gfx_color_t *wnd_frame_sh_color = NULL; 367 gfx_color_t *wnd_highlight_color = NULL; 368 gfx_color_t *wnd_shadow_color = NULL; 369 gfx_color_t *tbar_act_bg_color = NULL; 370 gfx_color_t *tbar_inact_bg_color = NULL; 371 gfx_color_t *tbar_act_text_color = NULL; 372 gfx_color_t *tbar_inact_text_color = NULL; 373 gfx_color_t *entry_fg_color = NULL; 374 gfx_color_t *entry_bg_color = NULL; 375 gfx_color_t *entry_sel_text_fg_color = NULL; 376 gfx_color_t *entry_sel_text_bg_color = NULL; 377 gfx_color_t *entry_act_bg_color = NULL; 378 gfx_color_t *sbar_trough_color = NULL; 379 gfx_color_t *sbar_act_trough_color = NULL; 380 errno_t rc; 381 382 resource = calloc(1, sizeof(ui_resource_t)); 383 if (resource == NULL) 384 return ENOMEM; 385 386 /* Create dummy font for text mode */ 387 rc = gfx_typeface_create(gc, &tface); 388 if (rc != EOK) 389 goto error; 390 391 rc = gfx_font_create_textmode(tface, &font); 392 if (rc != EOK) 393 goto error; 394 395 rc = gfx_color_new_ega(0x07, &btn_frame_color); 396 if (rc != EOK) 397 goto error; 398 399 rc = gfx_color_new_ega(0x20, &btn_face_color); 400 if (rc != EOK) 401 goto error; 402 403 rc = gfx_color_new_ega(0x30, &btn_face_lit_color); 404 if (rc != EOK) 405 goto error; 406 407 rc = gfx_color_new_ega(0x20, &btn_text_color); 408 if (rc != EOK) 409 goto error; 410 411 rc = gfx_color_new_ega(0x20, &btn_highlight_color); 412 if (rc != EOK) 413 goto error; 414 415 rc = gfx_color_new_ega(0x01, &btn_shadow_color); 416 if (rc != EOK) 417 goto error; 418 419 rc = gfx_color_new_ega(0x70, &wnd_face_color); 420 if (rc != EOK) 421 goto error; 422 423 rc = gfx_color_new_ega(0x70, &wnd_text_color); 424 if (rc != EOK) 425 goto error; 426 427 rc = gfx_color_new_ega(0x78, &wnd_dis_text_color); 428 if (rc != EOK) 429 goto error; 430 431 rc = gfx_color_new_ega(0x74, &wnd_text_hgl_color); 432 if (rc != EOK) 433 goto error; 434 435 rc = gfx_color_new_ega(0x07, &wnd_sel_text_color); 436 if (rc != EOK) 437 goto error; 438 439 rc = gfx_color_new_ega(0x04, &wnd_sel_text_hgl_color); 440 if (rc != EOK) 441 goto error; 442 443 rc = gfx_color_new_ega(0x07, &wnd_sel_text_bg_color); 444 if (rc != EOK) 445 goto error; 446 447 rc = gfx_color_new_ega(0x70, &wnd_frame_hi_color); 448 if (rc != EOK) 449 goto error; 450 451 rc = gfx_color_new_ega(0x01, &wnd_frame_sh_color); 452 if (rc != EOK) 453 goto error; 454 455 rc = gfx_color_new_ega(0x70, &wnd_highlight_color); 456 if (rc != EOK) 457 goto error; 458 459 rc = gfx_color_new_ega(0x01, &wnd_shadow_color); 460 if (rc != EOK) 461 goto error; 462 463 rc = gfx_color_new_ega(0x70, &tbar_act_bg_color); 464 if (rc != EOK) 465 goto error; 466 467 rc = gfx_color_new_ega(0x70, &tbar_act_text_color); 468 if (rc != EOK) 469 goto error; 470 471 rc = gfx_color_new_ega(0x07, &tbar_inact_bg_color); 472 if (rc != EOK) 473 goto error; 474 475 rc = gfx_color_new_ega(0x07, &tbar_inact_text_color); 476 if (rc != EOK) 477 goto error; 478 479 rc = gfx_color_new_ega(0x07, &entry_fg_color); 480 if (rc != EOK) 481 goto error; 482 483 rc = gfx_color_new_ega(0x07, &entry_bg_color); 484 if (rc != EOK) 485 goto error; 486 487 rc = gfx_color_new_ega(0x1e, &entry_sel_text_fg_color); 488 if (rc != EOK) 489 goto error; 490 491 rc = gfx_color_new_ega(0x1e, &entry_sel_text_bg_color); 492 if (rc != EOK) 493 goto error; 494 495 rc = gfx_color_new_ega(0x37, &entry_act_bg_color); 496 if (rc != EOK) 497 goto error; 498 499 rc = gfx_color_new_ega(0x07, &sbar_trough_color); 500 if (rc != EOK) 501 goto error; 502 503 rc = gfx_color_new_ega(0x07, &sbar_act_trough_color); 504 if (rc != EOK) 505 goto error; 506 507 resource->gc = gc; 508 resource->tface = tface; 509 resource->font = font; 510 resource->textmode = true; 511 512 resource->btn_frame_color = btn_frame_color; 513 resource->btn_face_color = btn_face_color; 514 resource->btn_face_lit_color = btn_face_lit_color; 515 resource->btn_text_color = btn_text_color; 516 resource->btn_highlight_color = btn_highlight_color; 517 resource->btn_shadow_color = btn_shadow_color; 518 519 resource->wnd_face_color = wnd_face_color; 520 resource->wnd_text_color = wnd_text_color; 521 resource->wnd_dis_text_color = wnd_dis_text_color; 522 resource->wnd_text_hgl_color = wnd_text_hgl_color; 523 resource->wnd_sel_text_color = wnd_sel_text_color; 524 resource->wnd_sel_text_hgl_color = wnd_sel_text_hgl_color; 525 resource->wnd_sel_text_bg_color = wnd_sel_text_bg_color; 526 resource->wnd_frame_hi_color = wnd_frame_hi_color; 527 resource->wnd_frame_sh_color = wnd_frame_sh_color; 528 resource->wnd_highlight_color = wnd_highlight_color; 529 resource->wnd_shadow_color = wnd_shadow_color; 530 531 resource->tbar_act_bg_color = tbar_act_bg_color; 532 resource->tbar_act_text_color = tbar_act_text_color; 533 resource->tbar_inact_bg_color = tbar_inact_bg_color; 534 resource->tbar_inact_text_color = tbar_inact_text_color; 535 536 resource->entry_fg_color = entry_fg_color; 537 resource->entry_bg_color = entry_bg_color; 538 resource->entry_act_bg_color = entry_act_bg_color; 539 resource->entry_sel_text_fg_color = entry_sel_text_fg_color; 540 resource->entry_sel_text_bg_color = entry_sel_text_bg_color; 541 542 resource->sbar_trough_color = sbar_trough_color; 543 resource->sbar_act_trough_color = sbar_act_trough_color; 544 545 *rresource = resource; 546 return EOK; 547 error: 548 if (btn_frame_color != NULL) 549 gfx_color_delete(btn_frame_color); 550 if (btn_face_color != NULL) 551 gfx_color_delete(btn_face_color); 552 if (btn_face_lit_color != NULL) 553 gfx_color_delete(btn_face_lit_color); 554 if (btn_text_color != NULL) 555 gfx_color_delete(btn_text_color); 556 if (btn_highlight_color != NULL) 557 gfx_color_delete(btn_highlight_color); 558 if (btn_shadow_color != NULL) 559 gfx_color_delete(btn_shadow_color); 560 561 if (wnd_face_color != NULL) 562 gfx_color_delete(wnd_face_color); 563 if (wnd_text_color != NULL) 564 gfx_color_delete(wnd_text_color); 565 if (wnd_dis_text_color != NULL) 566 gfx_color_delete(wnd_dis_text_color); 567 if (wnd_text_hgl_color != NULL) 568 gfx_color_delete(wnd_text_hgl_color); 569 if (wnd_sel_text_color != NULL) 570 gfx_color_delete(wnd_sel_text_color); 571 if (wnd_sel_text_hgl_color != NULL) 572 gfx_color_delete(wnd_sel_text_hgl_color); 573 if (wnd_sel_text_bg_color != NULL) 574 gfx_color_delete(wnd_sel_text_bg_color); 575 if (wnd_frame_hi_color != NULL) 576 gfx_color_delete(wnd_frame_hi_color); 577 if (wnd_frame_sh_color != NULL) 578 gfx_color_delete(wnd_frame_sh_color); 579 if (wnd_highlight_color != NULL) 580 gfx_color_delete(wnd_highlight_color); 581 if (wnd_shadow_color != NULL) 582 gfx_color_delete(wnd_shadow_color); 583 584 if (tbar_act_bg_color != NULL) 585 gfx_color_delete(tbar_act_bg_color); 586 if (tbar_act_text_color != NULL) 587 gfx_color_delete(tbar_act_text_color); 588 if (tbar_inact_bg_color != NULL) 589 gfx_color_delete(tbar_inact_bg_color); 590 if (tbar_inact_text_color != NULL) 591 gfx_color_delete(tbar_inact_text_color); 592 593 if (entry_fg_color != NULL) 594 gfx_color_delete(entry_fg_color); 595 if (entry_bg_color != NULL) 596 gfx_color_delete(entry_bg_color); 597 if (entry_act_bg_color != NULL) 598 gfx_color_delete(entry_act_bg_color); 599 if (entry_sel_text_fg_color != NULL) 600 gfx_color_delete(entry_sel_text_fg_color); 601 if (entry_sel_text_bg_color != NULL) 602 gfx_color_delete(entry_sel_text_bg_color); 603 if (sbar_trough_color != NULL) 604 gfx_color_delete(sbar_trough_color); 605 if (sbar_act_trough_color != NULL) 606 gfx_color_delete(sbar_act_trough_color); 607 608 if (tface != NULL) 609 gfx_typeface_destroy(tface); 610 free(resource); 611 return rc; 612 } 613 614 /** Create new UI resource. 615 * 616 * @param gc Graphic context 617 * @param textmode @c true if running in text mode 618 * @param rresource Place to store pointer to new UI resource 619 * @return EOK on success, ENOMEM if out of memory 620 */ 621 errno_t ui_resource_create(gfx_context_t *gc, bool textmode, 622 ui_resource_t **rresource) 623 { 624 if (textmode) 625 return ui_resource_create_text(gc, rresource); 626 else 627 return ui_resource_create_gfx(gc, rresource); 628 } 629 282 630 /** Destroy UI resource. 283 631 * … … 291 639 gfx_color_delete(resource->btn_frame_color); 292 640 gfx_color_delete(resource->btn_face_color); 641 gfx_color_delete(resource->btn_face_lit_color); 293 642 gfx_color_delete(resource->btn_text_color); 294 643 gfx_color_delete(resource->btn_highlight_color); … … 297 646 gfx_color_delete(resource->wnd_face_color); 298 647 gfx_color_delete(resource->wnd_text_color); 648 gfx_color_delete(resource->wnd_dis_text_color); 299 649 gfx_color_delete(resource->wnd_sel_text_color); 300 650 gfx_color_delete(resource->wnd_sel_text_bg_color); … … 312 662 gfx_color_delete(resource->entry_bg_color); 313 663 gfx_color_delete(resource->entry_act_bg_color); 664 gfx_color_delete(resource->entry_sel_text_fg_color); 665 gfx_color_delete(resource->entry_sel_text_bg_color); 666 667 gfx_color_delete(resource->sbar_trough_color); 668 gfx_color_delete(resource->sbar_act_trough_color); 314 669 315 670 gfx_font_close(resource->font); … … 346 701 } 347 702 703 /** Get the UI font. 704 * 705 * @param resource UI resource 706 * @return UI font 707 */ 708 gfx_font_t *ui_resource_get_font(ui_resource_t *resource) 709 { 710 return resource->font; 711 } 712 713 /** Determine if resource is textmode. 714 * 715 * @param resource UI resource 716 * @return @c true iff resource is textmode 717 */ 718 bool ui_resource_is_textmode(ui_resource_t *resource) 719 { 720 return resource->textmode; 721 } 722 723 /** Get the UI window face color. 724 * 725 * @param resource UI resource 726 * @return UI window face color 727 */ 728 gfx_color_t *ui_resource_get_wnd_face_color(ui_resource_t *resource) 729 { 730 return resource->wnd_face_color; 731 } 732 733 /** Get the UI window text color. 734 * 735 * @param resource UI resource 736 * @return UI window text color 737 */ 738 gfx_color_t *ui_resource_get_wnd_text_color(ui_resource_t *resource) 739 { 740 return resource->wnd_text_color; 741 } 742 348 743 /** @} 349 744 */
Note:
See TracChangeset
for help on using the changeset viewer.