Changeset 266ec54 in mainline
- Timestamp:
- 2020-11-28T23:06:31Z (4 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- db3c6795
- Parents:
- 554a5f1
- git-author:
- Jiri Svoboda <jiri@…> (2020-11-27 22:30:28)
- git-committer:
- Jiri Svoboda <jiri@…> (2020-11-28 23:06:31)
- Location:
- uspace
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/barber/barber.c
r554a5f1 r266ec54 367 367 * to rect 368 368 */ 369 ui_wdecor_rect_from_app( &rect, &wrect);369 ui_wdecor_rect_from_app(params.style, &rect, &wrect); 370 370 off = wrect.p0; 371 371 gfx_rect_rtranslate(&off, &wrect, ¶ms.rect); -
uspace/app/fontedit/fontedit.c
r554a5f1 r266ec54 717 717 * to rect 718 718 */ 719 ui_wdecor_rect_from_app( &rect, &wrect);719 ui_wdecor_rect_from_app(params.style, &rect, &wrect); 720 720 off = wrect.p0; 721 721 gfx_rect_rtranslate(&off, &wrect, ¶ms.rect); -
uspace/app/gfxdemo/gfxdemo.c
r554a5f1 r266ec54 751 751 * to rect 752 752 */ 753 ui_wdecor_rect_from_app( &rect, &wrect);753 ui_wdecor_rect_from_app(params.style, &rect, &wrect); 754 754 off = wrect.p0; 755 755 gfx_rect_rtranslate(&off, &wrect, ¶ms.rect); -
uspace/app/terminal/terminal.c
r554a5f1 r266ec54 818 818 * to rect 819 819 */ 820 ui_wdecor_rect_from_app( &rect, &wrect);820 ui_wdecor_rect_from_app(wparams.style, &rect, &wrect); 821 821 off = wrect.p0; 822 822 gfx_rect_rtranslate(&off, &wrect, &wparams.rect); -
uspace/app/viewer/viewer.c
r554a5f1 r266ec54 181 181 182 182 ui_window_get_app_rect(window, &arect); 183 gfx_rect_translate(&arect.p0, rect, &irect); 183 184 /* Center image on application area */ 185 gfx_rect_ctr_on_rect(rect, &arect, &irect); 184 186 185 187 if (image != NULL) { … … 239 241 display_spec = argv[i++]; 240 242 } else if (str_cmp(argv[i], "-f") == 0) { 243 ++i; 241 244 fullscreen = true; 242 245 } else { … … 266 269 return 3; 267 270 } 268 }269 270 // TODO Fullscreen mode271 if (fullscreen) {272 printf("Fullscreen mode not implemented.\n");273 return 1;274 271 } 275 272 … … 293 290 params.rect.p1.y = 1; 294 291 292 if (fullscreen) { 293 params.style &= ~ui_wds_decorated; 294 params.placement = ui_wnd_place_full_screen; 295 } 296 295 297 rc = ui_window_create(ui, ¶ms, &window); 296 298 if (rc != EOK) { … … 312 314 * to rect 313 315 */ 314 ui_wdecor_rect_from_app( &lrect, &wrect);316 ui_wdecor_rect_from_app(params.style, &lrect, &wrect); 315 317 off = wrect.p0; 316 318 gfx_rect_rtranslate(&off, &wrect, &rect); 317 rc = ui_window_resize(window, &rect); 318 if (rc != EOK) { 319 printf("Error resizing window.\n"); 320 return 1; 319 320 if (!fullscreen) { 321 rc = ui_window_resize(window, &rect); 322 if (rc != EOK) { 323 printf("Error resizing window.\n"); 324 return 1; 325 } 321 326 } 322 327 -
uspace/lib/gfx/include/gfx/coord.h
r554a5f1 r266ec54 52 52 extern void gfx_rect_envelope(gfx_rect_t *, gfx_rect_t *, gfx_rect_t *); 53 53 extern void gfx_rect_clip(gfx_rect_t *, gfx_rect_t *, gfx_rect_t *); 54 extern void gfx_rect_ctr_on_rect(gfx_rect_t *, gfx_rect_t *, gfx_rect_t *); 54 55 extern void gfx_rect_points_sort(gfx_rect_t *, gfx_rect_t *); 55 56 extern void gfx_rect_dims(gfx_rect_t *, gfx_coord2_t *); -
uspace/lib/gfx/src/coord.c
r554a5f1 r266ec54 238 238 } 239 239 240 /** Center rectangle on rectangle. 241 * 242 * Translate rectangle @a a so that its center coincides with the 243 * center of rectangle @a b, saving the result in @a dest. 244 * 245 * @param a Rectnagle to translate 246 * @param b Rectangle on which to center 247 * @param dest Place to store resulting rectangle 248 */ 249 void gfx_rect_ctr_on_rect(gfx_rect_t *a, gfx_rect_t *b, gfx_rect_t *dest) 250 { 251 gfx_coord2_t adim; 252 gfx_coord2_t bdim; 253 254 gfx_rect_dims(a, &adim); 255 gfx_rect_dims(b, &bdim); 256 257 dest->p0.x = b->p0.x + bdim.x / 2 - adim.x / 2; 258 dest->p0.y = b->p0.y + bdim.y / 2 - adim.y / 2; 259 260 dest->p1.x = dest->p0.x + adim.x; 261 dest->p1.y = dest->p0.y + adim.y; 262 } 263 240 264 /** Sort points of a rectangle. 241 265 * -
uspace/lib/gfx/test/coord.c
r554a5f1 r266ec54 597 597 } 598 598 599 /** Center rectangle on rectangle */ 600 PCUT_TEST(rect_ctr_on_rect) 601 { 602 gfx_rect_t a; 603 gfx_rect_t b; 604 gfx_rect_t dest; 605 606 /* Dimensions: 20 x 20 */ 607 b.p0.x = 10; 608 b.p0.y = 20; 609 b.p1.x = 30; 610 b.p1.y = 40; 611 612 /* Dimensions: 20 x 20 */ 613 a.p0.x = 100; 614 a.p0.y = 200; 615 a.p1.x = 120; 616 a.p1.y = 220; 617 618 /* Centering rectangle of same size should give us the same rectangle */ 619 gfx_rect_ctr_on_rect(&a, &b, &dest); 620 PCUT_ASSERT_INT_EQUALS(b.p0.x, dest.p0.x); 621 PCUT_ASSERT_INT_EQUALS(b.p0.y, dest.p0.y); 622 PCUT_ASSERT_INT_EQUALS(b.p1.x, dest.p1.x); 623 PCUT_ASSERT_INT_EQUALS(b.p1.y, dest.p1.y); 624 625 /* Dimensions: 10 x 10 */ 626 a.p0.x = 100; 627 a.p0.y = 200; 628 a.p1.x = 110; 629 a.p1.y = 210; 630 631 gfx_rect_ctr_on_rect(&a, &b, &dest); 632 PCUT_ASSERT_INT_EQUALS(15, dest.p0.x); 633 PCUT_ASSERT_INT_EQUALS(25, dest.p0.y); 634 PCUT_ASSERT_INT_EQUALS(25, dest.p1.x); 635 PCUT_ASSERT_INT_EQUALS(35, dest.p1.y); 636 } 637 599 638 /** Sort span points that are already sorted should produde indentical points */ 600 639 PCUT_TEST(rect_points_sort_sorted) -
uspace/lib/ui/include/types/ui/wdecor.h
r554a5f1 r266ec54 45 45 /** Window decoration style */ 46 46 typedef enum { 47 /** No style bits */ 47 48 ui_wds_none = 0x0, 48 ui_wds_resizable = 0x1 49 /** Window has a frame */ 50 ui_wds_frame = 0x1, 51 /** Window has a title bar */ 52 ui_wds_titlebar = 0x2, 53 /** Window has a close button */ 54 ui_wds_close_btn = 0x4, 55 /** Window is resizable */ 56 ui_wds_resizable = 0x8, 57 /** Window is decorated (default decoration) */ 58 ui_wds_decorated = ui_wds_frame | ui_wds_titlebar | ui_wds_close_btn 49 59 } ui_wdecor_style_t; 50 60 -
uspace/lib/ui/include/types/ui/window.h
r554a5f1 r266ec54 56 56 ui_wnd_place_bottom_left, 57 57 /** Place window to the bottom-right corner of the screen */ 58 ui_wnd_place_bottom_right 58 ui_wnd_place_bottom_right, 59 /** Place window accross the entire screen */ 60 ui_wnd_place_full_screen 59 61 } ui_wnd_placement_t; 60 62 -
uspace/lib/ui/include/ui/wdecor.h
r554a5f1 r266ec54 52 52 extern errno_t ui_wdecor_paint(ui_wdecor_t *); 53 53 extern void ui_wdecor_pos_event(ui_wdecor_t *, pos_event_t *); 54 extern void ui_wdecor_rect_from_app(gfx_rect_t *, gfx_rect_t *); 54 extern void ui_wdecor_rect_from_app(ui_wdecor_style_t, gfx_rect_t *, 55 gfx_rect_t *); 55 56 56 57 #endif -
uspace/lib/ui/src/wdecor.c
r554a5f1 r266ec54 173 173 ui_wdecor_get_geom(wdecor, &geom); 174 174 175 rc = ui_paint_bevel(wdecor->res->gc, &rect, 176 wdecor->res->wnd_frame_hi_color, 177 wdecor->res->wnd_frame_sh_color, 1, &rect); 178 if (rc != EOK) 179 return rc; 180 181 rc = ui_paint_bevel(wdecor->res->gc, &rect, 182 wdecor->res->wnd_highlight_color, 183 wdecor->res->wnd_shadow_color, 1, &rect); 184 if (rc != EOK) 185 return rc; 186 187 rc = ui_paint_bevel(wdecor->res->gc, &rect, 188 wdecor->res->wnd_face_color, 189 wdecor->res->wnd_face_color, 2, &rect); 190 if (rc != EOK) 191 return rc; 192 193 trect = geom.title_bar_rect; 194 195 rc = ui_paint_bevel(wdecor->res->gc, &trect, 196 wdecor->res->wnd_shadow_color, 197 wdecor->res->wnd_highlight_color, 1, &trect); 198 if (rc != EOK) 199 return rc; 200 201 rc = gfx_set_color(wdecor->res->gc, wdecor->active ? 202 wdecor->res->tbar_act_bg_color : 203 wdecor->res->tbar_inact_bg_color); 204 if (rc != EOK) 205 return rc; 206 207 rc = gfx_fill_rect(wdecor->res->gc, &trect); 208 if (rc != EOK) 209 return rc; 210 211 gfx_text_fmt_init(&fmt); 212 fmt.halign = gfx_halign_center; 213 fmt.valign = gfx_valign_center; 214 215 pos.x = (trect.p0.x + trect.p1.x) / 2; 216 pos.y = (trect.p0.y + trect.p1.y) / 2; 217 218 rc = gfx_set_color(wdecor->res->gc, wdecor->active ? 219 wdecor->res->tbar_act_text_color : 220 wdecor->res->tbar_inact_text_color); 221 if (rc != EOK) 222 return rc; 223 224 rc = gfx_puttext(wdecor->res->font, &pos, &fmt, wdecor->caption); 225 if (rc != EOK) 226 return rc; 227 228 rc = ui_pbutton_paint(wdecor->btn_close); 229 if (rc != EOK) 230 return rc; 175 if ((wdecor->style & ui_wds_frame) != 0) { 176 rc = ui_paint_bevel(wdecor->res->gc, &rect, 177 wdecor->res->wnd_frame_hi_color, 178 wdecor->res->wnd_frame_sh_color, 1, &rect); 179 if (rc != EOK) 180 return rc; 181 182 rc = ui_paint_bevel(wdecor->res->gc, &rect, 183 wdecor->res->wnd_highlight_color, 184 wdecor->res->wnd_shadow_color, 1, &rect); 185 if (rc != EOK) 186 return rc; 187 188 rc = ui_paint_bevel(wdecor->res->gc, &rect, 189 wdecor->res->wnd_face_color, 190 wdecor->res->wnd_face_color, 2, &rect); 191 if (rc != EOK) 192 return rc; 193 } 194 195 if ((wdecor->style & ui_wds_titlebar) != 0) { 196 trect = geom.title_bar_rect; 197 198 rc = ui_paint_bevel(wdecor->res->gc, &trect, 199 wdecor->res->wnd_shadow_color, 200 wdecor->res->wnd_highlight_color, 1, &trect); 201 if (rc != EOK) 202 return rc; 203 204 rc = gfx_set_color(wdecor->res->gc, wdecor->active ? 205 wdecor->res->tbar_act_bg_color : 206 wdecor->res->tbar_inact_bg_color); 207 if (rc != EOK) 208 return rc; 209 210 rc = gfx_fill_rect(wdecor->res->gc, &trect); 211 if (rc != EOK) 212 return rc; 213 214 gfx_text_fmt_init(&fmt); 215 fmt.halign = gfx_halign_center; 216 fmt.valign = gfx_valign_center; 217 218 pos.x = (trect.p0.x + trect.p1.x) / 2; 219 pos.y = (trect.p0.y + trect.p1.y) / 2; 220 221 rc = gfx_set_color(wdecor->res->gc, wdecor->active ? 222 wdecor->res->tbar_act_text_color : 223 wdecor->res->tbar_inact_text_color); 224 if (rc != EOK) 225 return rc; 226 227 rc = gfx_puttext(wdecor->res->font, &pos, &fmt, wdecor->caption); 228 if (rc != EOK) 229 return rc; 230 231 if ((wdecor->style & ui_wds_close_btn) != 0) { 232 rc = ui_pbutton_paint(wdecor->btn_close); 233 if (rc != EOK) 234 return rc; 235 } 236 } 231 237 232 238 return EOK; … … 285 291 void ui_wdecor_get_geom(ui_wdecor_t *wdecor, ui_wdecor_geom_t *geom) 286 292 { 287 geom->interior_rect.p0.x = wdecor->rect.p0.x + 4; 288 geom->interior_rect.p0.y = wdecor->rect.p0.y + 4; 289 geom->interior_rect.p1.x = wdecor->rect.p1.x - 4; 290 geom->interior_rect.p1.y = wdecor->rect.p1.y - 4; 291 292 geom->title_bar_rect.p0 = geom->interior_rect.p0; 293 geom->title_bar_rect.p1.x = geom->interior_rect.p1.x; 294 geom->title_bar_rect.p1.y = geom->interior_rect.p0.y + 22; 295 296 geom->btn_close_rect.p0.x = geom->title_bar_rect.p1.x - 1 - 20; 297 geom->btn_close_rect.p0.y = geom->title_bar_rect.p0.y + 1; 298 geom->btn_close_rect.p1.x = geom->title_bar_rect.p1.x - 1; 299 geom->btn_close_rect.p1.y = geom->title_bar_rect.p0.y + 1 + 20; 300 301 geom->app_area_rect.p0.x = geom->interior_rect.p0.x; 302 geom->app_area_rect.p0.y = geom->title_bar_rect.p1.y; 303 geom->app_area_rect.p1 = geom->interior_rect.p1; 293 /* Does window have a frame? */ 294 if ((wdecor->style & ui_wds_frame) != 0) { 295 geom->interior_rect.p0.x = wdecor->rect.p0.x + 4; 296 geom->interior_rect.p0.y = wdecor->rect.p0.y + 4; 297 geom->interior_rect.p1.x = wdecor->rect.p1.x - 4; 298 geom->interior_rect.p1.y = wdecor->rect.p1.y - 4; 299 } else { 300 geom->interior_rect = wdecor->rect; 301 } 302 303 /* Does window have a title bar? */ 304 if ((wdecor->style & ui_wds_titlebar) != 0) { 305 geom->title_bar_rect.p0 = geom->interior_rect.p0; 306 geom->title_bar_rect.p1.x = geom->interior_rect.p1.x; 307 geom->title_bar_rect.p1.y = geom->interior_rect.p0.y + 22; 308 309 geom->app_area_rect.p0.x = geom->interior_rect.p0.x; 310 geom->app_area_rect.p0.y = geom->title_bar_rect.p1.y; 311 geom->app_area_rect.p1 = geom->interior_rect.p1; 312 } else { 313 geom->title_bar_rect.p0.x = 0; 314 geom->title_bar_rect.p0.y = 0; 315 geom->title_bar_rect.p1.x = 0; 316 geom->title_bar_rect.p1.y = 0; 317 318 geom->app_area_rect = geom->interior_rect; 319 } 320 321 /* Does window have a close button? */ 322 if ((wdecor->style & ui_wds_close_btn) != 0) { 323 geom->btn_close_rect.p0.x = geom->title_bar_rect.p1.x - 1 - 20; 324 geom->btn_close_rect.p0.y = geom->title_bar_rect.p0.y + 1; 325 geom->btn_close_rect.p1.x = geom->title_bar_rect.p1.x - 1; 326 geom->btn_close_rect.p1.y = geom->title_bar_rect.p0.y + 1 + 20; 327 } else { 328 geom->btn_close_rect.p0.x = 0; 329 geom->btn_close_rect.p0.y = 0; 330 geom->btn_close_rect.p1.x = 0; 331 geom->btn_close_rect.p1.y = 0; 332 } 304 333 } 305 334 … … 310 339 * and its decoration. 311 340 * 341 * @param style Decoration style 312 342 * @param app Application area rectangle 313 343 * @param rect Place to store (outer) window decoration rectangle 314 344 */ 315 void ui_wdecor_rect_from_app(gfx_rect_t *app, gfx_rect_t *rect) 316 { 317 rect->p0.x = app->p0.x - 4; 318 rect->p0.y = app->p0.y - 22 - 4; 319 rect->p1.x = app->p1.x + 4; 320 rect->p1.y = app->p1.y + 4; 345 void ui_wdecor_rect_from_app(ui_wdecor_style_t style, gfx_rect_t *app, 346 gfx_rect_t *rect) 347 { 348 *rect = *app; 349 350 if ((style & ui_wds_frame) != 0) { 351 rect->p0.x -= wdecor_edge_w; 352 rect->p0.y -= wdecor_edge_h; 353 rect->p1.x += wdecor_edge_w; 354 rect->p1.y += wdecor_edge_h; 355 } 356 357 if ((style & ui_wds_titlebar) != 0) 358 rect->p0.y -= 22; 321 359 } 322 360 … … 471 509 ui_wdecor_get_geom(wdecor, &geom); 472 510 473 claim = ui_pbutton_pos_event(wdecor->btn_close, event); 474 if (claim == ui_claimed) 475 return; 511 if ((wdecor->style & ui_wds_close_btn) != 0) { 512 claim = ui_pbutton_pos_event(wdecor->btn_close, event); 513 if (claim == ui_claimed) 514 return; 515 } 476 516 477 517 ui_wdecor_frame_pos_event(wdecor, event); 478 518 479 if (event->type == POS_PRESS && 480 gfx_pix_inside_rect(&pos, &geom.title_bar_rect)) 481 ui_wdecor_move(wdecor, &pos); 519 if ((wdecor->style & ui_wds_titlebar) != 0) { 520 if (event->type == POS_PRESS && 521 gfx_pix_inside_rect(&pos, &geom.title_bar_rect)) 522 ui_wdecor_move(wdecor, &pos); 523 } 482 524 } 483 525 -
uspace/lib/ui/src/window.c
r554a5f1 r266ec54 89 89 * 90 90 * Window parameters structure must always be initialized using this function 91 * first. 91 * first. By default, the window will be decorated. To get a non-decorated 92 * window, one needs to clear ui_wds_decorated 93 * (e.g. params->style &= ~ui_wds_decorated). 92 94 * 93 95 * @param params Window parameters structure … … 96 98 { 97 99 memset(params, 0, sizeof(ui_wnd_params_t)); 100 101 /* Make window decorated by default. */ 102 params->style = ui_wds_decorated; 98 103 } 99 104 … … 111 116 display_info_t info; 112 117 gfx_coord2_t pos; 118 gfx_coord2_t scr_dims; 113 119 display_wnd_params_t dparams; 114 120 display_window_t *dwindow = NULL; … … 129 135 130 136 if (ui->display != NULL) { 137 if (params->placement != ui_wnd_place_default) { 138 rc = display_get_info(ui->display, &info); 139 if (rc != EOK) 140 goto error; 141 } 142 143 if (params->placement == ui_wnd_place_full_screen) { 144 /* Make window the size of the screen */ 145 gfx_rect_dims(&info.rect, &scr_dims); 146 gfx_coord2_add(&dparams.rect.p0, &scr_dims, 147 &dparams.rect.p1); 148 } 149 131 150 rc = display_window_create(ui->display, &dparams, &dwnd_cb, 132 151 (void *) window, &dwindow); … … 135 154 136 155 if (params->placement != ui_wnd_place_default) { 137 rc = display_get_info(ui->display, &info);138 if (rc != EOK)139 goto error;140 141 156 pos.x = 0; 142 157 pos.y = 0; … … 146 161 assert(false); 147 162 case ui_wnd_place_top_left: 163 case ui_wnd_place_full_screen: 148 164 pos.x = info.rect.p0.x - params->rect.p0.x; 149 165 pos.y = info.rect.p0.y - params->rect.p0.y; … … 188 204 goto error; 189 205 190 ui_wdecor_set_rect(wdecor, & params->rect);206 ui_wdecor_set_rect(wdecor, &dparams.rect); 191 207 ui_wdecor_set_cb(wdecor, &wdecor_cb, (void *) window); 192 208 ui_wdecor_paint(wdecor); … … 194 210 window->ui = ui; 195 211 window->dwindow = dwindow; 196 window->rect = params->rect;212 window->rect = dparams.rect; 197 213 window->gc = gc; 198 214 window->res = res; -
uspace/lib/ui/test/wdecor.c
r554a5f1 r266ec54 360 360 errno_t rc; 361 361 362 rc = ui_wdecor_create(NULL, "Hello", ui_wds_ none, &wdecor);362 rc = ui_wdecor_create(NULL, "Hello", ui_wds_decorated, &wdecor); 363 363 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 364 364 … … 388 388 } 389 389 390 /** ui_wdecor_get_geom() produces the correct geometry */391 PCUT_TEST(get_geom )390 /** ui_wdecor_get_geom() with ui_wds_none produces the correct geometry */ 391 PCUT_TEST(get_geom_none) 392 392 { 393 393 ui_wdecor_t *wdecor; … … 407 407 ui_wdecor_get_geom(wdecor, &geom); 408 408 409 PCUT_ASSERT_INT_EQUALS(10, geom.interior_rect.p0.x); 410 PCUT_ASSERT_INT_EQUALS(20, geom.interior_rect.p0.y); 411 PCUT_ASSERT_INT_EQUALS(100, geom.interior_rect.p1.x); 412 PCUT_ASSERT_INT_EQUALS(200, geom.interior_rect.p1.y); 413 414 PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.x); 415 PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.y); 416 PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.x); 417 PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.y); 418 419 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x); 420 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y); 421 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.x); 422 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.y); 423 424 PCUT_ASSERT_INT_EQUALS(10, geom.app_area_rect.p0.x); 425 PCUT_ASSERT_INT_EQUALS(20, geom.app_area_rect.p0.y); 426 PCUT_ASSERT_INT_EQUALS(100, geom.app_area_rect.p1.x); 427 PCUT_ASSERT_INT_EQUALS(200, geom.app_area_rect.p1.y); 428 429 ui_wdecor_destroy(wdecor); 430 } 431 432 /** ui_wdecor_get_geom() with ui_wds_frame produces the correct geometry */ 433 PCUT_TEST(get_geom_frame) 434 { 435 ui_wdecor_t *wdecor; 436 gfx_rect_t rect; 437 ui_wdecor_geom_t geom; 438 errno_t rc; 439 440 rc = ui_wdecor_create(NULL, "Hello", ui_wds_frame, &wdecor); 441 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 442 443 rect.p0.x = 10; 444 rect.p0.y = 20; 445 rect.p1.x = 100; 446 rect.p1.y = 200; 447 448 ui_wdecor_set_rect(wdecor, &rect); 449 ui_wdecor_get_geom(wdecor, &geom); 450 409 451 PCUT_ASSERT_INT_EQUALS(14, geom.interior_rect.p0.x); 410 452 PCUT_ASSERT_INT_EQUALS(24, geom.interior_rect.p0.y); … … 412 454 PCUT_ASSERT_INT_EQUALS(196, geom.interior_rect.p1.y); 413 455 456 PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.x); 457 PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p0.y); 458 PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.x); 459 PCUT_ASSERT_INT_EQUALS(0, geom.title_bar_rect.p1.y); 460 461 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x); 462 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y); 463 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.x); 464 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.y); 465 466 PCUT_ASSERT_INT_EQUALS(14, geom.app_area_rect.p0.x); 467 PCUT_ASSERT_INT_EQUALS(24, geom.app_area_rect.p0.y); 468 PCUT_ASSERT_INT_EQUALS(96, geom.app_area_rect.p1.x); 469 PCUT_ASSERT_INT_EQUALS(196, geom.app_area_rect.p1.y); 470 471 ui_wdecor_destroy(wdecor); 472 } 473 474 /** ui_wdecor_get_geom() with ui_wds_frame | ui_wds_titlebar */ 475 PCUT_TEST(get_geom_frame_titlebar) 476 { 477 ui_wdecor_t *wdecor; 478 gfx_rect_t rect; 479 ui_wdecor_geom_t geom; 480 errno_t rc; 481 482 rc = ui_wdecor_create(NULL, "Hello", ui_wds_frame | ui_wds_titlebar, 483 &wdecor); 484 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 485 486 rect.p0.x = 10; 487 rect.p0.y = 20; 488 rect.p1.x = 100; 489 rect.p1.y = 200; 490 491 ui_wdecor_set_rect(wdecor, &rect); 492 ui_wdecor_get_geom(wdecor, &geom); 493 494 PCUT_ASSERT_INT_EQUALS(14, geom.interior_rect.p0.x); 495 PCUT_ASSERT_INT_EQUALS(24, geom.interior_rect.p0.y); 496 PCUT_ASSERT_INT_EQUALS(96, geom.interior_rect.p1.x); 497 PCUT_ASSERT_INT_EQUALS(196, geom.interior_rect.p1.y); 498 414 499 PCUT_ASSERT_INT_EQUALS(14, geom.title_bar_rect.p0.x); 415 500 PCUT_ASSERT_INT_EQUALS(24, geom.title_bar_rect.p0.y); … … 417 502 PCUT_ASSERT_INT_EQUALS(46, geom.title_bar_rect.p1.y); 418 503 504 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.x); 505 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p0.y); 506 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.x); 507 PCUT_ASSERT_INT_EQUALS(0, geom.btn_close_rect.p1.y); 508 509 PCUT_ASSERT_INT_EQUALS(14, geom.app_area_rect.p0.x); 510 PCUT_ASSERT_INT_EQUALS(46, geom.app_area_rect.p0.y); 511 PCUT_ASSERT_INT_EQUALS(96, geom.app_area_rect.p1.x); 512 PCUT_ASSERT_INT_EQUALS(196, geom.app_area_rect.p1.y); 513 514 ui_wdecor_destroy(wdecor); 515 } 516 517 /** ui_wdecor_get_geom() with ui_wds_decorated produces the correct geometry */ 518 PCUT_TEST(get_geom_decorated) 519 { 520 ui_wdecor_t *wdecor; 521 gfx_rect_t rect; 522 ui_wdecor_geom_t geom; 523 errno_t rc; 524 525 rc = ui_wdecor_create(NULL, "Hello", ui_wds_decorated, &wdecor); 526 PCUT_ASSERT_ERRNO_VAL(EOK, rc); 527 528 rect.p0.x = 10; 529 rect.p0.y = 20; 530 rect.p1.x = 100; 531 rect.p1.y = 200; 532 533 ui_wdecor_set_rect(wdecor, &rect); 534 ui_wdecor_get_geom(wdecor, &geom); 535 536 PCUT_ASSERT_INT_EQUALS(14, geom.interior_rect.p0.x); 537 PCUT_ASSERT_INT_EQUALS(24, geom.interior_rect.p0.y); 538 PCUT_ASSERT_INT_EQUALS(96, geom.interior_rect.p1.x); 539 PCUT_ASSERT_INT_EQUALS(196, geom.interior_rect.p1.y); 540 541 PCUT_ASSERT_INT_EQUALS(14, geom.title_bar_rect.p0.x); 542 PCUT_ASSERT_INT_EQUALS(24, geom.title_bar_rect.p0.y); 543 PCUT_ASSERT_INT_EQUALS(96, geom.title_bar_rect.p1.x); 544 PCUT_ASSERT_INT_EQUALS(46, geom.title_bar_rect.p1.y); 545 419 546 PCUT_ASSERT_INT_EQUALS(75, geom.btn_close_rect.p0.x); 420 547 PCUT_ASSERT_INT_EQUALS(25, geom.btn_close_rect.p0.y); … … 441 568 arect.p1.y = 196; 442 569 443 ui_wdecor_rect_from_app(&arect, &rect); 570 ui_wdecor_rect_from_app(ui_wds_none, &arect, &rect); 571 572 PCUT_ASSERT_INT_EQUALS(14, rect.p0.x); 573 PCUT_ASSERT_INT_EQUALS(46, rect.p0.y); 574 PCUT_ASSERT_INT_EQUALS(96, rect.p1.x); 575 PCUT_ASSERT_INT_EQUALS(196, rect.p1.y); 576 577 ui_wdecor_rect_from_app(ui_wds_frame, &arect, &rect); 578 579 PCUT_ASSERT_INT_EQUALS(10, rect.p0.x); 580 PCUT_ASSERT_INT_EQUALS(42, rect.p0.y); 581 PCUT_ASSERT_INT_EQUALS(100, rect.p1.x); 582 PCUT_ASSERT_INT_EQUALS(200, rect.p1.y); 583 584 ui_wdecor_rect_from_app(ui_wds_decorated, &arect, &rect); 444 585 445 586 PCUT_ASSERT_INT_EQUALS(10, rect.p0.x); … … 447 588 PCUT_ASSERT_INT_EQUALS(100, rect.p1.x); 448 589 PCUT_ASSERT_INT_EQUALS(200, rect.p1.y); 590 449 591 } 450 592
Note:
See TracChangeset
for help on using the changeset viewer.