Changes in uspace/lib/ui/src/slider.c [0eca788:2ab8ab3] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ui/src/slider.c
r0eca788 r2ab8ab3 1 1 /* 2 * Copyright (c) 202 2Jiri Svoboda2 * Copyright (c) 2021 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 38 38 #include <gfx/context.h> 39 39 #include <gfx/render.h> 40 #include <gfx/text.h>41 40 #include <io/pos_event.h> 42 41 #include <stdlib.h> … … 58 57 /** Slider button height */ 59 58 ui_slider_btn_h = 23, 60 /** Slider button width in text mode */61 ui_slider_btn_w_text = 3,62 /** Slider button height in text mode */63 ui_slider_btn_h_text = 1,64 59 /** Slider button frame thickness */ 65 60 ui_slider_btn_frame_thickness = 1, … … 88 83 * 89 84 * @param resource UI resource 85 * @param caption Caption 90 86 * @param rslider Place to store pointer to new slider 91 87 * @return EOK on success, ENOMEM if out of memory 92 88 */ 93 errno_t ui_slider_create(ui_resource_t *resource, ui_slider_t **rslider) 89 errno_t ui_slider_create(ui_resource_t *resource, const char *caption, 90 ui_slider_t **rslider) 94 91 { 95 92 ui_slider_t *slider; … … 242 239 rect->p0.x = pos.x; 243 240 rect->p0.y = pos.y; 244 245 if (slider->res->textmode) { 246 rect->p1.x = pos.x + ui_slider_btn_w_text; 247 rect->p1.y = pos.y + ui_slider_btn_h_text; 248 } else { 249 rect->p1.x = pos.x + ui_slider_btn_w; 250 rect->p1.y = pos.y + ui_slider_btn_h; 251 } 241 rect->p1.x = pos.x + ui_slider_btn_w; 242 rect->p1.y = pos.y + ui_slider_btn_h; 252 243 } 253 244 … … 260 251 { 261 252 gfx_coord2_t dims; 262 gfx_coord_t w;263 253 264 254 gfx_rect_dims(&slider->rect, &dims); 265 w = slider->res->textmode ? ui_slider_btn_w_text : 266 ui_slider_btn_w; 267 return dims.x - w; 268 } 269 270 /** Paint slider in graphics mode. 255 return dims.x - ui_slider_btn_w; 256 } 257 258 /** Paint slider. 271 259 * 272 260 * @param slider Slider 273 261 * @return EOK on success or an error code 274 262 */ 275 errno_t ui_slider_paint _gfx(ui_slider_t *slider)263 errno_t ui_slider_paint(ui_slider_t *slider) 276 264 { 277 265 gfx_coord2_t pos; … … 327 315 } 328 316 329 /** Paint slider in text mode.330 *331 * @param slider Slider332 * @return EOK on success or an error code333 */334 errno_t ui_slider_paint_text(ui_slider_t *slider)335 {336 gfx_coord2_t pos;337 gfx_text_fmt_t fmt;338 gfx_coord_t w, i;339 char *buf;340 const char *gchar;341 size_t gcharsz;342 errno_t rc;343 344 /* Paint slider groove */345 346 pos = slider->rect.p0;347 348 gfx_text_fmt_init(&fmt);349 fmt.font = slider->res->font;350 fmt.color = slider->res->wnd_text_color;351 fmt.halign = gfx_halign_left;352 fmt.valign = gfx_valign_top;353 354 w = slider->rect.p1.x - slider->rect.p0.x;355 gchar = "\u2550";356 gcharsz = str_size(gchar);357 358 buf = malloc(w * gcharsz + 1);359 if (buf == NULL)360 return ENOMEM;361 362 for (i = 0; i < w; i++)363 str_cpy(buf + i * gcharsz, (w - i) * gcharsz + 1, gchar);364 buf[w * gcharsz] = '\0';365 366 rc = gfx_puttext(&pos, &fmt, buf);367 free(buf);368 if (rc != EOK)369 goto error;370 371 /* Paint slider button */372 373 pos.x += slider->pos;374 375 rc = gfx_puttext(&pos, &fmt, "[O]");376 if (rc != EOK)377 goto error;378 379 rc = gfx_update(slider->res->gc);380 if (rc != EOK)381 goto error;382 383 return EOK;384 error:385 return rc;386 }387 388 /** Paint slider.389 *390 * @param slider Slider391 * @return EOK on success or an error code392 */393 errno_t ui_slider_paint(ui_slider_t *slider)394 {395 if (slider->res->textmode)396 return ui_slider_paint_text(slider);397 else398 return ui_slider_paint_gfx(slider);399 }400 401 317 /** Clear slider button. 402 318 * … … 408 324 gfx_rect_t rect; 409 325 errno_t rc; 410 411 /* No need to clear button in text mode */412 if (slider->res->textmode)413 return EOK;414 326 415 327 ui_slider_btn_rect(slider, &rect); … … 528 440 ui_slider_update(slider, &pos); 529 441 break; 530 case POS_DCLICK:531 break;532 442 } 533 443
Note:
See TracChangeset
for help on using the changeset viewer.