1 #ifndef DRAW_RGBLED_H
2 #define DRAW_RGBLED_H
3 #include<stdint.h>
cairo_code_draw_rgbLED_get_width()4 inline int cairo_code_draw_rgbLED_get_width()
5 {
6 return 19;
7 }
cairo_code_draw_rgbLED_get_height()8 inline int cairo_code_draw_rgbLED_get_height()
9 {
10 return 19;
11 }
cairo_code_draw_rgbLED_render(cairo_t * cr,uint8_t val,float r,float g,float b)12 inline void cairo_code_draw_rgbLED_render(cairo_t *cr, uint8_t val, float r, float g, float b)
13 {
14 cairo_pattern_t *pattern;
15 cairo_matrix_t matrix;
16
17 //dark
18 cairo_set_operator(cr, CAIRO_OPERATOR_OVER);
19 pattern = cairo_pattern_create_rgba(.3,.3,.3,1);
20 cairo_set_source(cr, pattern);
21 cairo_pattern_destroy(pattern);
22 cairo_new_path(cr);
23 cairo_move_to(cr, 15.699219, 9.375);
24 cairo_curve_to(cr, 15.699219, 12.859375, 12.875, 15.683594, 9.390625, 15.683594);
25 cairo_curve_to(cr, 5.910156, 15.683594, 3.085938, 12.859375, 3.085938, 9.375);
26 cairo_curve_to(cr, 3.085938, 5.894531, 5.910156, 3.070312, 9.390625, 3.070312);
27 cairo_curve_to(cr, 12.875, 3.070312, 15.699219, 5.894531, 15.699219, 9.375);
28 cairo_close_path(cr);
29 cairo_set_tolerance(cr, 0.1);
30 cairo_set_antialias(cr, CAIRO_ANTIALIAS_DEFAULT);
31 cairo_set_fill_rule(cr, CAIRO_FILL_RULE_WINDING);
32 cairo_fill_preserve(cr);
33 /********border************/
34 cairo_set_operator(cr, CAIRO_OPERATOR_OVER);
35 cairo_set_line_width(cr, 1.5);
36 cairo_set_miter_limit(cr, 4);
37 cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT);
38 cairo_set_line_join(cr, CAIRO_LINE_JOIN_MITER);
39 pattern = cairo_pattern_create_rgba(0.101961,0.101961,0.101961,1);
40 cairo_set_source(cr, pattern);
41 cairo_pattern_destroy(pattern);
42 cairo_new_path(cr);
43 cairo_move_to(cr, 15.699219, 9.375);
44 cairo_curve_to(cr, 15.699219, 12.859375, 12.875, 15.683594, 9.390625, 15.683594);
45 cairo_curve_to(cr, 5.910156, 15.683594, 3.085938, 12.859375, 3.085938, 9.375);
46 cairo_curve_to(cr, 3.085938, 5.894531, 5.910156, 3.070312, 9.390625, 3.070312);
47 cairo_curve_to(cr, 12.875, 3.070312, 15.699219, 5.894531, 15.699219, 9.375);
48 cairo_close_path(cr);
49 cairo_set_tolerance(cr, 0.1);
50 cairo_set_antialias(cr, CAIRO_ANTIALIAS_DEFAULT);
51 cairo_stroke_preserve(cr);
52 /********light************/
53 if(val)
54 {
55 cairo_set_operator(cr, CAIRO_OPERATOR_OVER);
56 pattern = cairo_pattern_create_rgba(r,g,b,1);
57 cairo_set_source(cr, pattern);
58 cairo_pattern_destroy(pattern);
59 cairo_new_path(cr);
60 cairo_move_to(cr, 15.929688, 9.375);
61 cairo_curve_to(cr, 15.929688, 12.988281, 13.003906, 15.914062, 9.390625, 15.914062);
62 cairo_curve_to(cr, 5.78125, 15.914062, 2.855469, 12.988281, 2.855469, 9.375);
63 cairo_curve_to(cr, 2.855469, 5.765625, 5.78125, 2.839844, 9.390625, 2.839844);
64 cairo_curve_to(cr, 13.003906, 2.839844, 15.929688, 5.765625, 15.929688, 9.375);
65 cairo_close_path(cr);
66 cairo_set_tolerance(cr, 0.1);
67 cairo_set_antialias(cr, CAIRO_ANTIALIAS_DEFAULT);
68 cairo_set_fill_rule(cr, CAIRO_FILL_RULE_WINDING);
69 cairo_fill_preserve(cr);
70 /********************/
71 cairo_set_operator(cr, CAIRO_OPERATOR_OVER);
72 cairo_set_line_width(cr, 3.858536);
73 cairo_set_miter_limit(cr, 4);
74 cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT);
75 cairo_set_line_join(cr, CAIRO_LINE_JOIN_MITER);
76 pattern = cairo_pattern_create_radial(70, 189.425, 0, 70, 189.425, 7.306019);
77 cairo_pattern_add_color_stop_rgba(pattern, 0,r,g,b,1);
78 cairo_pattern_add_color_stop_rgba(pattern, .75,r,g,b,1);
79 cairo_pattern_add_color_stop_rgba(pattern, 1,r,g,b,0.4);
80 cairo_matrix_init(&matrix, 0.86675,0.000000312469,-0.000000305437,0.886706,61.859452,181.110871);
81 cairo_pattern_set_matrix(pattern, &matrix);
82 cairo_pattern_set_extend(pattern, CAIRO_EXTEND_PAD);
83 cairo_pattern_set_filter(pattern, CAIRO_FILTER_GOOD);
84 cairo_set_source(cr, pattern);
85 cairo_pattern_destroy(pattern);
86 cairo_new_path(cr);
87 cairo_move_to(cr, 15.929688, 9.375);
88 cairo_curve_to(cr, 15.929688, 12.988281, 13.003906, 15.914062, 9.390625, 15.914062);
89 cairo_curve_to(cr, 5.78125, 15.914062, 2.855469, 12.988281, 2.855469, 9.375);
90 cairo_curve_to(cr, 2.855469, 5.765625, 5.78125, 2.839844, 9.390625, 2.839844);
91 cairo_curve_to(cr, 13.003906, 2.839844, 15.929688, 5.765625, 15.929688, 9.375);
92 cairo_close_path(cr);
93 cairo_set_tolerance(cr, 0.1);
94 cairo_set_antialias(cr, CAIRO_ANTIALIAS_DEFAULT);
95 cairo_stroke_preserve(cr);
96 }//if on
97 /********************/
98 }
99 #endif
100