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