31 for (src = dst = str; *src !=
'\0'; src++) {
48 int height = metrics.
height;
50 cairo_text_extents_t extents;
53 cairo_text_extents(w->
crb,
"A", &extents);
54 double lh = extents.height;
56 if (strstr(w->
label,
"_")) {
57 cairo_text_extents(w->
crb,
"--", &extents);
58 double underline = extents.width;
63 int set_line = (extents.width/len) * pos;
64 cairo_move_to (w->
crb, 10, (height+lh)*0.5);
66 cairo_set_line_width(w->
crb, 1.0);
67 cairo_move_to (w->
crb, 10 + set_line, (height+lh)*0.55);
68 cairo_line_to(w->
crb,10 + set_line + underline, (height+lh)*0.55);
71 cairo_text_extents(w->
crb,w->
label , &extents);
72 cairo_move_to (w->
crb, 10, (height+lh)*0.5);
76 cairo_new_path (w->
crb);
90 XUngrabPointer(w->
app->
dpy,CurrentTime);
124 if (old_value == *(
int*)item_) {
138 int width = metrics.
width;
139 int height = metrics.
height;
143 cairo_rectangle(w->
crb, 0,0,width,height);
144 cairo_fill_preserve(w->
crb);
148 cairo_rectangle(w->
crb, 0,(height-10)*sliderstate,width,10);
156 cairo_paint (w->
crb);
164 int width = metrics.
width;
165 int height = metrics.
height;
169 cairo_rectangle(w->
crb, 0, 0, width , height);
172 }
else if(w->
state==2) {
174 }
else if(w->
state==3) {
177 cairo_fill_preserve(w->
crb);
178 cairo_set_line_width(w->
crb, 1.0);
180 cairo_stroke(w->
crb);
182 cairo_text_extents_t extents;
187 if (strstr(w->
label,
"_")) {
188 cairo_text_extents(w->
crb,
"--", &extents);
189 double underline = extents.width;
194 int set_line = (extents.width/len) * pos;
195 cairo_move_to (w->
crb, 20, (height+extents.height)*0.5);
197 cairo_set_line_width(w->
crb, 1.0);
198 cairo_move_to (w->
crb, 20 + set_line, (height+extents.height)*0.55);
199 cairo_line_to(w->
crb,20 + set_line + underline, (height+extents.height)*0.55);
200 cairo_stroke(w->
crb);
202 cairo_text_extents(w->
crb,w->
label , &extents);
203 cairo_move_to (w->
crb, 20, (height+extents.height)*0.5);
206 cairo_move_to (w->
crb, (width-15), (height+extents.height)*0.5);
207 cairo_show_text(w->
crb,
">");
208 cairo_new_path (w->
crb);
233 XCrossingEvent notify;
234 memset(¬ify, 0,
sizeof(notify));
235 notify.type = LeaveNotify;
236 notify.display = w->
app->
dpy;
237 notify.send_event = True;
238 notify.subwindow = w->
widget;
239 notify.window = w->
widget;
242 notify.same_screen = True;
243 notify.focus = False;
271 int width = metrics.
width;
272 int height = metrics.
height;
276 cairo_rectangle(w->
crb, 0, 0, width , height);
279 }
else if(w->
state==2) {
281 }
else if(w->
state==3) {
284 cairo_fill_preserve(w->
crb);
285 cairo_set_line_width(w->
crb, 1.0);
287 cairo_stroke(w->
crb);
289 cairo_text_extents_t extents;
293 cairo_text_extents(w->
crb,w->
label , &extents);
294 cairo_move_to (w->
crb, 20, (height+extents.height)*0.5);
296 cairo_new_path (w->
crb);
304 int width = metrics.
width-2;
305 int height = metrics.
height-2;
309 cairo_rectangle(w->
crb, 0, 0, width , height);
312 }
else if(w->
state==2) {
314 }
else if(w->
state==3) {
317 cairo_fill_preserve(w->
crb);
318 cairo_set_line_width(w->
crb, 1.0);
320 cairo_stroke(w->
crb);
322 cairo_text_extents_t extents;
325 const char* format[] = {
"%.1f",
"%.2f",
"%.3f"};
328 snprintf(s, 63,
"%d", (
int) value);
329 }
else if (fabs(w->
adj->
step)>0.09) {
330 snprintf(s, 63, format[1-1], value);
332 snprintf(s, 63, format[2-1], value);
335 cairo_text_extents(w->
crb, s, &extents);
336 cairo_move_to (w->
crb, 20, (height+extents.height)*0.5);
337 cairo_show_text(w->
crb, s);
338 cairo_new_path (w->
crb);
346 int width = metrics.
width;
347 int height = metrics.
height;
351 cairo_rectangle(w->
crb, 0, 0, width , height);
354 }
else if(w->
state==2) {
356 }
else if(w->
state==3) {
359 cairo_fill_preserve(w->
crb);
360 cairo_set_line_width(w->
crb, 1.0);
362 cairo_stroke(w->
crb);
364 cairo_text_extents_t extents;
369 if (strstr(w->
label,
"_")) {
370 cairo_text_extents(w->
crb,
"--", &extents);
371 double underline = extents.width;
376 int set_line = (extents.width/len) * pos;
377 cairo_move_to (w->
crb, 20, (height+extents.height)*0.5);
379 cairo_set_line_width(w->
crb, 1.0);
380 cairo_move_to (w->
crb, 20 + set_line, (height+extents.height)*0.55);
381 cairo_line_to(w->
crb,20 + set_line + underline, (height+extents.height)*0.55);
382 cairo_stroke(w->
crb);
384 cairo_text_extents(w->
crb,w->
label , &extents);
385 cairo_move_to (w->
crb, 20, (height+extents.height)*0.5);
388 cairo_new_path (w->
crb);
396 int height = metrics.
height;
398 cairo_arc(w->
crb, height/3, height/2, height/6, 0, 2 * M_PI );
400 cairo_rectangle(w->
crb, height/6, height/3, height/3 , height/3);
406 cairo_arc(w->
crb, height/3, height/2, height/6-2, 0, 2 * M_PI );
408 cairo_rectangle(w->
crb, height/6+1, height/3+1, height/3-2 , height/3-2);
420 int height = metrics.
height;
422 cairo_arc(w->
crb, height/3, height/2, height/6, 0, 2 * M_PI );
424 cairo_rectangle(w->
crb, height/6, height/3, height/3 , height/3);
430 cairo_arc(w->
crb, height/3, height/2, height/6-2, 0, 2 * M_PI );
432 cairo_rectangle(w->
crb, height/6+1, height/3+1, height/3-2 , height/3-2);
446 int height = metrics.
height;
484 int height = metrics.
height;
486 int posy = (above) ? parent->
height : 0;
487 int posx = (above) ? 0 : parent->
width ;
489 int item_width = 1.0;
490 cairo_text_extents_t extents;
493 bool is_not_scrolable =
false;
496 is_not_scrolable =
true;
501 cairo_text_extents(w->
crb,w->
label , &extents);
503 item_width = max(item_width, (
int)extents.width+40);
507 if(item_width<parent->width)item_width = parent->
width;
513 if (y1+(height*elem) > screen_height) y1 = y1-((height*elem)+parent->
height);
xevfunc value_changed_callback
Metrics_t - struct to receive window size, position & visibility Pass this struct to os_get_window_...
void adj_set_state(Adjustment_t *adj, float state)
adj_set_state - set the current state of the Adjustment_t
void adj_set_value(Adjustment_t *adj, float value)
adj_set_value - set the current value to the Adjustment_t
float adj_get_value(Adjustment_t *adj)
adj_get_value - get the current value of the Adjustment_t
void set_adjustment(Adjustment_t *adj, float std_value, float value, float min_value, float max_value, float step, CL_type type)
*set_adjustment - set a new range to a existing Adjustment_t or create if it not exists yet
float adj_get_state(Adjustment_t *adj)
adj_get_state - get the current state of the Adjustment_t
void adj_set_scale(Adjustment_t *adj, float value)
adj_set_scale - internal use to scale the pointer movement (0.1 -1.0)
int childlist_has_child(Childlist_t *childlist)
childlist_has_child - check if a Widget_t Childlist_t contain a child
void use_frame_color_scheme(Widget_t *w, Color_state st)
use_frame_color_scheme - use frame Colors to paint on Widget_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
void use_shadow_color_scheme(Widget_t *w, Color_state st)
use_shadow_color_scheme - use shadow Colors to paint on Widget_t
void use_base_color_scheme(Widget_t *w, Color_state st)
use_base_color_scheme - use base Colors to paint on Widget_t