Changeset 943f032 in mainline for uspace/lib/ui/src/slider.c
- Timestamp:
- 2021-08-13T22:27:15Z (4 years ago)
- Branches:
- master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- de0c55a
- Parents:
- ce0a5af
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/src/slider.c
rce0a5af r943f032 38 38 #include <gfx/context.h> 39 39 #include <gfx/render.h> 40 #include <gfx/text.h> 40 41 #include <io/pos_event.h> 41 42 #include <stdlib.h> … … 57 58 /** Slider button height */ 58 59 ui_slider_btn_h = 23, 60 /** Slider button width in text mode */ 61 ui_slider_btn_w_text = 3, 59 62 /** Slider button frame thickness */ 60 63 ui_slider_btn_frame_thickness = 1, … … 251 254 { 252 255 gfx_coord2_t dims; 256 gfx_coord_t w; 253 257 254 258 gfx_rect_dims(&slider->rect, &dims); 255 return dims.x - ui_slider_btn_w; 256 } 257 258 /** Paint slider. 259 * 260 * @param slider Slider 261 * @return EOK on success or an error code 262 */ 263 errno_t ui_slider_paint(ui_slider_t *slider) 259 w = slider->res->textmode ? ui_slider_btn_w_text : 260 ui_slider_btn_w; 261 return dims.x - w; 262 } 263 264 /** Paint slider in graphics mode. 265 * 266 * @param slider Slider 267 * @return EOK on success or an error code 268 */ 269 errno_t ui_slider_paint_gfx(ui_slider_t *slider) 264 270 { 265 271 gfx_coord2_t pos; … … 315 321 } 316 322 323 /** Paint slider in text mode. 324 * 325 * @param slider Slider 326 * @return EOK on success or an error code 327 */ 328 errno_t ui_slider_paint_text(ui_slider_t *slider) 329 { 330 gfx_coord2_t pos; 331 gfx_text_fmt_t fmt; 332 gfx_coord_t w, i; 333 char *buf; 334 errno_t rc; 335 336 /* Paint slider groove */ 337 338 pos = slider->rect.p0; 339 340 gfx_text_fmt_init(&fmt); 341 fmt.color = slider->res->wnd_text_color; 342 fmt.halign = gfx_halign_left; 343 fmt.valign = gfx_valign_top; 344 345 w = slider->rect.p1.x - slider->rect.p0.x; 346 buf = malloc(w + 1); 347 if (buf == NULL) 348 return ENOMEM; 349 350 for (i = 0; i < w; i++) 351 buf[i] = '='; 352 buf[w] = '\0'; 353 354 rc = gfx_puttext(slider->res->font, &pos, &fmt, buf); 355 free(buf); 356 if (rc != EOK) 357 goto error; 358 359 /* Paint slider button */ 360 361 pos.x += slider->pos; 362 363 rc = gfx_puttext(slider->res->font, &pos, &fmt, 364 "[O]"); 365 if (rc != EOK) 366 goto error; 367 368 rc = gfx_update(slider->res->gc); 369 if (rc != EOK) 370 goto error; 371 372 return EOK; 373 error: 374 return rc; 375 } 376 377 /** Paint slider. 378 * 379 * @param slider Slider 380 * @return EOK on success or an error code 381 */ 382 errno_t ui_slider_paint(ui_slider_t *slider) 383 { 384 if (slider->res->textmode) 385 return ui_slider_paint_text(slider); 386 else 387 return ui_slider_paint_gfx(slider); 388 } 389 317 390 /** Clear slider button. 318 391 * … … 324 397 gfx_rect_t rect; 325 398 errno_t rc; 399 400 /* No need to clear button in text mode */ 401 if (slider->res->textmode) 402 return EOK; 326 403 327 404 ui_slider_btn_rect(slider, &rect);
Note:
See TracChangeset
for help on using the changeset viewer.