Changes in uspace/lib/ui/src/slider.c [2ab8ab3:ff6e91b] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/src/slider.c
r2ab8ab3 rff6e91b 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 const char *gchar; 335 size_t gcharsz; 336 errno_t rc; 337 338 /* Paint slider groove */ 339 340 pos = slider->rect.p0; 341 342 gfx_text_fmt_init(&fmt); 343 fmt.color = slider->res->wnd_text_color; 344 fmt.halign = gfx_halign_left; 345 fmt.valign = gfx_valign_top; 346 347 w = slider->rect.p1.x - slider->rect.p0.x; 348 gchar = "\u2550"; 349 gcharsz = str_size(gchar); 350 351 buf = malloc(w * gcharsz + 1); 352 if (buf == NULL) 353 return ENOMEM; 354 355 for (i = 0; i < w; i++) 356 str_cpy(buf + i * gcharsz, (w - i) * gcharsz + 1, gchar); 357 buf[w * gcharsz] = '\0'; 358 359 rc = gfx_puttext(slider->res->font, &pos, &fmt, buf); 360 free(buf); 361 if (rc != EOK) 362 goto error; 363 364 /* Paint slider button */ 365 366 pos.x += slider->pos; 367 368 rc = gfx_puttext(slider->res->font, &pos, &fmt, 369 "[O]"); 370 if (rc != EOK) 371 goto error; 372 373 rc = gfx_update(slider->res->gc); 374 if (rc != EOK) 375 goto error; 376 377 return EOK; 378 error: 379 return rc; 380 } 381 382 /** Paint slider. 383 * 384 * @param slider Slider 385 * @return EOK on success or an error code 386 */ 387 errno_t ui_slider_paint(ui_slider_t *slider) 388 { 389 if (slider->res->textmode) 390 return ui_slider_paint_text(slider); 391 else 392 return ui_slider_paint_gfx(slider); 393 } 394 317 395 /** Clear slider button. 318 396 * … … 324 402 gfx_rect_t rect; 325 403 errno_t rc; 404 405 /* No need to clear button in text mode */ 406 if (slider->res->textmode) 407 return EOK; 326 408 327 409 ui_slider_btn_rect(slider, &rect);
Note:
See TracChangeset
for help on using the changeset viewer.