1 #ifndef DRAW_SQUAREDIAL_H
2 #define DRAW_SQUAREDIAL_H
cairo_code_draw_squareDial_get_width()3 inline int cairo_code_draw_squareDial_get_width()
4 {
5 return 88;
6 }
cairo_code_draw_squareDial_get_height()7 inline int cairo_code_draw_squareDial_get_height()
8 {
9 return 88;
10 }
cairo_code_draw_squareDial_render(cairo_t * cr,int ccw,float r,float g,float b,float val)11 inline void cairo_code_draw_squareDial_render(cairo_t *cr, int ccw, float r, float g, float b, float val)
12 {
13 cairo_pattern_t *pattern;
14
15 cairo_set_operator(cr, CAIRO_OPERATOR_OVER);
16 cairo_set_line_width(cr, 6);
17 cairo_set_miter_limit(cr, 4);
18 cairo_set_line_cap(cr, CAIRO_LINE_CAP_SQUARE);
19 cairo_set_line_join(cr, CAIRO_LINE_JOIN_MITER);
20 pattern = cairo_pattern_create_rgba(r,g,b,1);
21 cairo_set_source(cr, pattern);
22 cairo_pattern_destroy(pattern);
23 cairo_new_path(cr);
24
25 if(!ccw)
26 {
27 cairo_move_to(cr, 84.9, 84.9);
28 cairo_line_to(cr, 3.1, 84.9);
29 if(val<.4)
30 {
31 cairo_line_to(cr, 3.1, (val/.4)*9.1 + (1-val/.4)*84.9 - 6);
32 }
33 else if(val<.6)
34 {
35 cairo_line_to(cr, 3.1, 3.1);
36 cairo_line_to(cr, ((val-.4)/.2)*84.9 + (1-(val-.4)/.2)*3.1, 3.1);
37 }
38 else
39 {
40 cairo_line_to(cr, 3.1, 3.1);
41 cairo_line_to(cr, 84.9, 3.1);
42 cairo_line_to(cr, 84.9, ((val-.6)/.4)*75.9 + (1-(val-.6)/.4)*3.1);
43 }
44 }
45 else
46 {
47 cairo_move_to(cr, 3.1, 84.9);
48 cairo_line_to(cr, 84.9, 84.9);
49 val = 1-val;
50 if(val<.4)
51 {
52 cairo_line_to(cr, 84.9, (val/.4)*9.1 + (1-val/.4)*84.9 - 6);
53 }
54 else if(val<.6)
55 {
56 cairo_line_to(cr, 84.9, 3.1);
57 cairo_line_to(cr, ((val-.4)/.2)*3.1 + (1-(val-.4)/.2)*84.9, 3.1);
58 }
59 else
60 {
61 cairo_line_to(cr, 84.9, 3.1);
62 cairo_line_to(cr, 3.1, 3.1);
63 cairo_line_to(cr, 3.1, ((val-.6)/.4)*75.9 + (1-(val-.6)/.4)*3.1);
64 }
65 }
66
67 cairo_set_tolerance(cr, 0.1);
68 cairo_set_antialias(cr, CAIRO_ANTIALIAS_DEFAULT);
69 cairo_stroke_preserve(cr);
70 /********************/
71 }
cairo_code_draw_squareDialr_render(cairo_t * cr,float val)72 inline void cairo_code_draw_squareDialr_render(cairo_t *cr, float val)
73 {
74 cairo_code_draw_squareDial_render(cr, 0, 1, 0, 0, val);
75 }
76
cairo_code_draw_squareDialbccw_render(cairo_t * cr,float val)77 inline void cairo_code_draw_squareDialbccw_render(cairo_t *cr, float val)
78 {
79 cairo_code_draw_squareDial_render(cr, 1, 0, 0, 1, val);
80 }
81
cairo_code_draw_squareDialgccw_render(cairo_t * cr,float val)82 inline void cairo_code_draw_squareDialgccw_render(cairo_t *cr, float val)
83 {
84 cairo_code_draw_squareDial_render(cr, 1, 0, 0.88235, 0, val);
85 }
86
cairo_code_draw_squareDialo_render(cairo_t * cr,float val)87 inline void cairo_code_draw_squareDialo_render(cairo_t *cr, float val)
88 {
89 cairo_code_draw_squareDial_render(cr, 0, 1, .33333, 0, val);
90 }
91
cairo_code_draw_squareDialy_render(cairo_t * cr,float val)92 inline void cairo_code_draw_squareDialy_render(cairo_t *cr, float val)
93 {
94 cairo_code_draw_squareDial_render(cr, 0, 0.92157, 0.92157, 0, val);
95 }
96
cairo_code_draw_squareDialpccw_render(cairo_t * cr,float val)97 inline void cairo_code_draw_squareDialpccw_render(cairo_t *cr, float val)
98 {
99 cairo_code_draw_squareDial_render(cr, 1, 0.78431, 0, 1, val);
100 }
101 #endif
102