Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ui/src/resource.c

    ref4d684 r03145ee  
    11/*
    2  * Copyright (c) 2023 Jiri Svoboda
     2 * Copyright (c) 2020 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    4747static const char *ui_typeface_path = "/data/font/helena.tpf";
    4848
    49 /** Create new UI resource in graphics mode.
     49/** Create new UI resource.
    5050 *
    5151 * @param gc Graphic context
     
    5353 * @return EOK on success, ENOMEM if out of memory
    5454 */
    55 static errno_t ui_resource_create_gfx(gfx_context_t *gc,
    56     ui_resource_t **rresource)
     55errno_t ui_resource_create(gfx_context_t *gc, ui_resource_t **rresource)
    5756{
    5857        ui_resource_t *resource;
     
    6261        gfx_color_t *btn_frame_color = NULL;
    6362        gfx_color_t *btn_face_color = NULL;
    64         gfx_color_t *btn_face_lit_color = NULL;
    6563        gfx_color_t *btn_text_color = NULL;
    6664        gfx_color_t *btn_highlight_color = NULL;
     
    6866        gfx_color_t *wnd_face_color = NULL;
    6967        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;
    72         gfx_color_t *wnd_sel_text_color = NULL;
    73         gfx_color_t *wnd_sel_text_hgl_color = NULL;
    74         gfx_color_t *wnd_sel_text_bg_color = NULL;
    7568        gfx_color_t *wnd_frame_hi_color = NULL;
    7669        gfx_color_t *wnd_frame_sh_color = NULL;
     
    8376        gfx_color_t *entry_fg_color = NULL;
    8477        gfx_color_t *entry_bg_color = NULL;
    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;
    9078        errno_t rc;
    9179
     
    116104                goto error;
    117105
    118         rc = gfx_color_new_rgb_i16(0xe8e8, 0xe8e8, 0xe8e8, &btn_face_lit_color);
    119         if (rc != EOK)
    120                 goto error;
    121 
    122106        rc = gfx_color_new_rgb_i16(0, 0, 0, &btn_text_color);
    123107        if (rc != EOK)
     
    141125                goto error;
    142126
    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 
    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);
    157         if (rc != EOK)
    158                 goto error;
    159 
    160         rc = gfx_color_new_rgb_i16(0x5858, 0x6a6a, 0xc4c4,
    161             &wnd_sel_text_bg_color);
    162         if (rc != EOK)
    163                 goto error;
    164 
    165127        rc = gfx_color_new_rgb_i16(0x8888, 0x8888, 0x8888, &wnd_frame_hi_color);
    166128        if (rc != EOK)
    167129                goto error;
    168130
    169         rc = gfx_color_new_rgb_i16(0x4444, 0x4444, 0x4444, &wnd_frame_sh_color);
     131        rc = gfx_color_new_rgb_i16(0, 0, 0, &wnd_frame_sh_color);
    170132        if (rc != EOK)
    171133                goto error;
     
    204166
    205167        rc = gfx_color_new_rgb_i16(0xffff, 0xffff, 0xffff, &entry_bg_color);
    206         if (rc != EOK)
    207                 goto error;
    208 
    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);
    229168        if (rc != EOK)
    230169                goto error;
     
    233172        resource->tface = tface;
    234173        resource->font = font;
    235         resource->textmode = false;
    236174
    237175        resource->btn_frame_color = btn_frame_color;
    238176        resource->btn_face_color = btn_face_color;
    239         resource->btn_face_lit_color = btn_face_lit_color;
    240177        resource->btn_text_color = btn_text_color;
    241178        resource->btn_highlight_color = btn_highlight_color;
     
    244181        resource->wnd_face_color = wnd_face_color;
    245182        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;
    248         resource->wnd_sel_text_color = wnd_sel_text_color;
    249         resource->wnd_sel_text_hgl_color = wnd_sel_text_hgl_color;
    250         resource->wnd_sel_text_bg_color = wnd_sel_text_bg_color;
    251183        resource->wnd_frame_hi_color = wnd_frame_hi_color;
    252184        resource->wnd_frame_sh_color = wnd_frame_sh_color;
     
    261193        resource->entry_fg_color = entry_fg_color;
    262194        resource->entry_bg_color = entry_bg_color;
    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;
    269195
    270196        *rresource = resource;
     
    275201        if (btn_face_color != NULL)
    276202                gfx_color_delete(btn_face_color);
    277         if (btn_face_lit_color != NULL)
    278                 gfx_color_delete(btn_face_lit_color);
    279203        if (btn_text_color != NULL)
    280204                gfx_color_delete(btn_text_color);
     
    288212        if (wnd_text_color != NULL)
    289213                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);
    294         if (wnd_sel_text_color != NULL)
    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);
    298         if (wnd_sel_text_bg_color != NULL)
    299                 gfx_color_delete(wnd_sel_text_bg_color);
    300214        if (wnd_frame_hi_color != NULL)
    301215                gfx_color_delete(wnd_frame_hi_color);
     
    320234        if (entry_bg_color != NULL)
    321235                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);
    326         if (entry_act_bg_color != NULL)
    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);
    333236
    334237        if (tface != NULL)
     
    338241}
    339242
    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 
    630243/** Destroy UI resource.
    631244 *
     
    639252        gfx_color_delete(resource->btn_frame_color);
    640253        gfx_color_delete(resource->btn_face_color);
    641         gfx_color_delete(resource->btn_face_lit_color);
    642254        gfx_color_delete(resource->btn_text_color);
    643255        gfx_color_delete(resource->btn_highlight_color);
     
    646258        gfx_color_delete(resource->wnd_face_color);
    647259        gfx_color_delete(resource->wnd_text_color);
    648         gfx_color_delete(resource->wnd_dis_text_color);
    649         gfx_color_delete(resource->wnd_sel_text_color);
    650         gfx_color_delete(resource->wnd_sel_text_bg_color);
    651260        gfx_color_delete(resource->wnd_frame_hi_color);
    652261        gfx_color_delete(resource->wnd_frame_sh_color);
     
    661270        gfx_color_delete(resource->entry_fg_color);
    662271        gfx_color_delete(resource->entry_bg_color);
    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);
    669272
    670273        gfx_font_close(resource->font);
     
    673276}
    674277
    675 /** Set UI resource expose callback.
    676  *
    677  * @param resource Resource
    678  * @param cb Callback
    679  * @param arg Callback argument
    680  */
    681 void ui_resource_set_expose_cb(ui_resource_t *resource,
    682     ui_expose_cb_t cb, void *arg)
    683 {
    684         resource->expose_cb = cb;
    685         resource->expose_arg = arg;
    686 }
    687 
    688 /** Force UI repaint after an area has been exposed.
    689  *
    690  * This is called when a popup disappears, which could have exposed some
    691  * other UI elements. It causes complete repaint of the UI.
    692  *
    693  * NOTE Ideally we could specify the exposed rectangle and then limit
    694  * the repaint to just that. That would, however, require means of
    695  * actually clipping the repaint operation.
    696  */
    697 void ui_resource_expose(ui_resource_t *resource)
    698 {
    699         if (resource->expose_cb != NULL)
    700                 resource->expose_cb(resource->expose_arg);
    701 }
    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 
    743278/** @}
    744279 */
Note: See TracChangeset for help on using the changeset viewer.