Changeset cd74fa8 in mainline for uspace/lib/ui/src/pbutton.c
- Timestamp:
- 2021-03-01T22:20:27Z (3 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- d6f46c8
- Parents:
- 9c7dc8e
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/src/pbutton.c
r9c7dc8e rcd74fa8 239 239 } 240 240 241 /** Paint push button. 242 * 243 * @param pbutton Push button 244 * @return EOK on success or an error code 245 */ 246 errno_t ui_pbutton_paint(ui_pbutton_t *pbutton) 241 /** Paint button text shadow. 242 * 243 * @param pbutton Push button 244 * @return EOK on success or an error code 245 */ 246 static errno_t ui_pbutton_paint_text_shadow(ui_pbutton_t *pbutton) 247 { 248 gfx_rect_t rect; 249 errno_t rc; 250 251 rect.p0.x = pbutton->rect.p0.x + 1; 252 rect.p0.y = pbutton->rect.p0.y + 1; 253 rect.p1.x = pbutton->rect.p1.x; 254 rect.p1.y = pbutton->rect.p1.y; 255 256 rc = gfx_set_color(pbutton->res->gc, pbutton->res->btn_shadow_color); 257 if (rc != EOK) 258 goto error; 259 260 rc = gfx_fill_rect(pbutton->res->gc, &rect); 261 if (rc != EOK) 262 goto error; 263 264 return EOK; 265 error: 266 return rc; 267 } 268 269 /** Paint push button in graphic mode. 270 * 271 * @param pbutton Push button 272 * @return EOK on success or an error code 273 */ 274 static errno_t ui_pbutton_paint_gfx(ui_pbutton_t *pbutton) 247 275 { 248 276 gfx_coord2_t pos; … … 308 336 error: 309 337 return rc; 338 } 339 340 /** Paint push button in text mode. 341 * 342 * @param pbutton Push button 343 * @return EOK on success or an error code 344 */ 345 static errno_t ui_pbutton_paint_text(ui_pbutton_t *pbutton) 346 { 347 gfx_coord2_t pos; 348 gfx_text_fmt_t fmt; 349 gfx_rect_t rect; 350 bool depressed; 351 errno_t rc; 352 353 depressed = pbutton->held && pbutton->inside; 354 355 rc = gfx_set_color(pbutton->res->gc, pbutton->res->wnd_face_color); 356 if (rc != EOK) 357 goto error; 358 359 rc = gfx_fill_rect(pbutton->res->gc, &pbutton->rect); 360 if (rc != EOK) 361 goto error; 362 363 rect.p0.x = pbutton->rect.p0.x + (depressed ? 1 : 0); 364 rect.p0.y = pbutton->rect.p0.y; 365 rect.p1.x = pbutton->rect.p1.x - 1 + (depressed ? 1 : 0); 366 rect.p1.y = pbutton->rect.p0.y + 1; 367 368 rc = gfx_set_color(pbutton->res->gc, pbutton->res->btn_highlight_color); 369 if (rc != EOK) 370 goto error; 371 372 rc = gfx_fill_rect(pbutton->res->gc, &rect); 373 if (rc != EOK) 374 goto error; 375 376 /* Center of button rectangle */ 377 pos.x = (rect.p0.x + rect.p1.x) / 2; 378 pos.y = (rect.p0.y + rect.p1.y) / 2; 379 380 gfx_text_fmt_init(&fmt); 381 fmt.color = pbutton->res->btn_text_color; 382 fmt.halign = gfx_halign_center; 383 fmt.valign = gfx_valign_center; 384 385 rc = gfx_puttext(pbutton->res->font, &pos, &fmt, pbutton->caption); 386 if (rc != EOK) 387 goto error; 388 389 if (!depressed) { 390 rc = ui_pbutton_paint_text_shadow(pbutton); 391 if (rc != EOK) 392 goto error; 393 } 394 395 rc = gfx_update(pbutton->res->gc); 396 if (rc != EOK) 397 goto error; 398 399 return EOK; 400 error: 401 return rc; 402 } 403 404 /** Paint push button. 405 * 406 * @param pbutton Push button 407 * @return EOK on success or an error code 408 */ 409 errno_t ui_pbutton_paint(ui_pbutton_t *pbutton) 410 { 411 if (pbutton->res->textmode) 412 return ui_pbutton_paint_text(pbutton); 413 else 414 return ui_pbutton_paint_gfx(pbutton); 310 415 } 311 416
Note:
See TracChangeset
for help on using the changeset viewer.