Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ui/src/slider.c

    rff6e91b r2ab8ab3  
    3838#include <gfx/context.h>
    3939#include <gfx/render.h>
    40 #include <gfx/text.h>
    4140#include <io/pos_event.h>
    4241#include <stdlib.h>
     
    5857        /** Slider button height */
    5958        ui_slider_btn_h = 23,
    60         /** Slider button width in text mode */
    61         ui_slider_btn_w_text = 3,
    6259        /** Slider button frame thickness */
    6360        ui_slider_btn_frame_thickness = 1,
     
    254251{
    255252        gfx_coord2_t dims;
    256         gfx_coord_t w;
    257253
    258254        gfx_rect_dims(&slider->rect, &dims);
    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.
     255        return dims.x - ui_slider_btn_w;
     256}
     257
     258/** Paint slider.
    265259 *
    266260 * @param slider Slider
    267261 * @return EOK on success or an error code
    268262 */
    269 errno_t ui_slider_paint_gfx(ui_slider_t *slider)
     263errno_t ui_slider_paint(ui_slider_t *slider)
    270264{
    271265        gfx_coord2_t pos;
     
    321315}
    322316
    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 
    395317/** Clear slider button.
    396318 *
     
    402324        gfx_rect_t rect;
    403325        errno_t rc;
    404 
    405         /* No need to clear button in text mode */
    406         if (slider->res->textmode)
    407                 return EOK;
    408326
    409327        ui_slider_btn_rect(slider, &rect);
Note: See TracChangeset for help on using the changeset viewer.