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