28 cairo_pattern_t *pat = cairo_pattern_create_linear (2, 2, width, 2);
29 cairo_pattern_add_color_stop_rgba(pat, 0.0, c->
base[0], c->
base[1], c->
base[2], c->
base[3]);
30 cairo_pattern_add_color_stop_rgba(pat, 0.5, 0.0, 0.0, 0.0, 0.0);
31 cairo_pattern_add_color_stop_rgba(pat, 1.0, c->
base[0], c->
base[1], c->
base[2], c->
base[3]);
32 cairo_set_source(w->
crb, pat);
33 cairo_pattern_destroy (pat);
39 cairo_pattern_t *pat = cairo_pattern_create_linear (2, 2, 2, height);
40 cairo_pattern_add_color_stop_rgba(pat, 0.0, c->
base[0], c->
base[1], c->
base[2], c->
base[3]);
41 cairo_pattern_add_color_stop_rgba(pat, 0.5, 0.0, 0.0, 0.0, 0.0);
42 cairo_pattern_add_color_stop_rgba(pat, 1.0, c->
base[0], c->
base[1], c->
base[2], c->
base[3]);
43 cairo_set_source(w->
crb, pat);
44 cairo_pattern_destroy (pat);
51 int size = width/slider->
frames;
52 double x = (double)width_t/(
double)size;
53 double y = (double)height_t/(
double)height;
54 double x1 = (double)size/(
double)width_t;
55 double y1 = (double)height/(
double)height_t;
56 double s = x>y ? y : x;
57 double s1 = x1>y1 ? y1 : x1;
58 int posx = (width_t/2 -(size*s)/2);
59 int posy = (height_t/2 - ((height*s)/2));
61 int findex = (int)(((slider->
frames)-1) * sliderstate);
63 cairo_scale(w->
crb, s,s);
64 cairo_translate(w->
crb, posx * ((1-s)/s), posy * ((1-s)/s));
65 cairo_set_source_surface (w->
crb, w->
image, -size*findex + posx, posy);
66 cairo_rectangle(w->
crb, posx, posy, size, height);
68 cairo_scale(w->
crb, s1,s1);
69 cairo_restore(w->
crb);
76 int width = metrics.
width-2;
77 int height = metrics.
height-2;
79 float center = (float)width/2;
80 float upcenter = (float)width;
87 cairo_move_to (w->
crb, center, center);
88 cairo_line_to(w->
crb,center,height-center-10);
89 cairo_set_line_cap (w->
crb,CAIRO_LINE_CAP_ROUND);
90 cairo_set_line_width(w->
crb,center);
94 cairo_move_to (w->
crb, center, center);
95 cairo_line_to(w->
crb,center,height-center-10);
96 cairo_set_line_width(w->
crb,center/10);
100 cairo_arc(w->
crb,center, (height-center-10) -
101 ((height-10-upcenter) * sliderstate), center/2, 0, 2 * M_PI );
102 cairo_fill_preserve(w->
crb);
103 cairo_set_line_width(w->
crb,1);
104 cairo_stroke(w->
crb);
108 cairo_arc(w->
crb,center, (height-center-10) -
109 ((height-10-upcenter) * sliderstate), center/3, 0, 2 * M_PI );
110 cairo_fill_preserve(w->
crb);
112 cairo_set_line_width(w->
crb,center/15);
113 cairo_stroke(w->
crb);
114 cairo_new_path (w->
crb);
117 cairo_text_extents_t extents;
120 cairo_text_extents(w->
crb,w->
label , &extents);
122 cairo_move_to (w->
crb, center-extents.width/2, height);
124 cairo_new_path (w->
crb);
127 const char* format[] = {
"%.1f",
"%.2f",
"%.3f"};
130 snprintf(s, 63,
"%d", (
int) value);
131 }
else if (fabs(w->
adj->
step)>0.09) {
132 snprintf(s, 63, format[1-1], value);
134 snprintf(s, 63, format[2-1], value);
137 cairo_text_extents(w->
crb,s , &extents);
138 cairo_move_to (w->
crb, center-extents.width/2, extents.height );
139 cairo_show_text(w->
crb, s);
140 cairo_new_path (w->
crb);
147 int width = metrics.
width-2;
148 int height = metrics.
height-2;
150 float center = (float)height/2;
151 float upcenter = (float)height;
158 cairo_move_to (w->
crb, center, center);
159 cairo_line_to(w->
crb,width-center-10,center);
160 cairo_set_line_cap (w->
crb,CAIRO_LINE_CAP_ROUND);
161 cairo_set_line_width(w->
crb,center);
162 cairo_stroke(w->
crb);
165 cairo_move_to (w->
crb, center, center);
166 cairo_line_to(w->
crb,width-center-10,center);
167 cairo_set_line_width(w->
crb,center/10);
168 cairo_stroke(w->
crb);
171 cairo_arc(w->
crb, (center) +
172 ((width-10-upcenter) * sliderstate),center, center/2, 0, 2 * M_PI );
173 cairo_fill_preserve(w->
crb);
174 cairo_set_line_width(w->
crb,1);
175 cairo_stroke(w->
crb);
178 cairo_arc(w->
crb, (center) +
179 ((width-10-upcenter) * sliderstate),center, center/3, 0, 2 * M_PI );
180 cairo_fill_preserve(w->
crb);
182 cairo_set_line_width(w->
crb,center/15);
183 cairo_stroke(w->
crb);
184 cairo_new_path (w->
crb);
186 cairo_text_extents_t extents;
189 cairo_text_extents(w->
crb,w->
label , &extents);
191 cairo_move_to (w->
crb, width/2-extents.width/2, height );
193 cairo_new_path (w->
crb);
197 const char* format[] = {
"%.1f",
"%.2f",
"%.3f"};
200 snprintf(s, 63,
"%d", (
int) value);
201 }
else if (fabs(w->
adj->
step)>0.09) {
202 snprintf(s, 63, format[1-1], value);
204 snprintf(s, 63, format[2-1], value);
206 cairo_text_extents(w->
crb,s , &extents);
207 cairo_move_to (w->
crb, width/2-extents.width/2, extents.height );
208 cairo_show_text(w->
crb, s);
209 cairo_new_path (w->
crb);
Color_t - struct used to set cairo color for Widget_t.
Metrics_t - struct to receive window size, position & visibility Pass this struct to os_get_window_...
float adj_get_value(Adjustment_t *adj)
adj_get_value - get the current value of the Adjustment_t
float adj_get_state(Adjustment_t *adj)
adj_get_state - get the current state of the Adjustment_t
Color_state get_color_state(Widget_t *wid)
get_color_state - get the Color_state to use in relation to the Widget_t state
void use_text_color_scheme(Widget_t *w, Color_state st)
use_text_color_scheme - use text Colors to paint on Widget_t
void use_bg_color_scheme(Widget_t *w, Color_state st)
use_bg_color_scheme - use background Colors to paint on Widget_t
void use_fg_color_scheme(Widget_t *w, Color_state st)
use_fg_color_scheme - use forground Colors to paint on Widget_t
Colors * get_color_scheme(Widget_t *wid, Color_state st)
get_color_scheme - get pointer to the Colors struct to use in relation to the Color_state
void use_shadow_color_scheme(Widget_t *w, Color_state st)
use_shadow_color_scheme - use shadow Colors to paint on Widget_t
Color_state
Color_state - select color mode to use on Widget_t.
void _slider_released(void *w_, void *button_, void *user_data)
_slider_released - redraw the slider when button released
void _draw_hslider(void *w_, void *user_data)
_draw_hslider - internal draw the slider to the buffer
void _pattern_hslider(Widget_t *w, Color_state st, int height)
_pattern_hslider - set pattern for the slider base
void _draw_vslider(void *w_, void *user_data)
_draw_vslider - internal draw the slider to the buffer
void _draw_image_slider(Widget_t *w, int width_t, int height_t)
_draw_image_slider - draw slider from a horizontal sprite image
void _pattern_vslider(Widget_t *w, Color_state st, int width)
_pattern_vslider - set pattern for the slider base