1 /*******************************************************************************
2 **3456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789
3 ** 10 20 30 40 50 60 70 80
9 ** Mirco "MacSlow" Mueller <macslow@bangang.de>
11 ** copyright (C) Mirco Mueller, 2006/2007, placed under the terms of the GPL
13 *******************************************************************************/
16 #include "cairo-rendering.h"
22 draw_point (cairo_t
* pCairoContext
,
26 cairo_set_line_width (pCairoContext
, 0.015f
);
27 cairo_arc (pCairoContext
, fX
, fY
, 0.025f
, 0.0f
, G_PI
/ 180.0f
* 360.0f
);
28 cairo_set_source_rgba (pCairoContext
, 0.5f
, 1.0f
, 0.5f
, 0.5f
);
29 cairo_fill_preserve (pCairoContext
);
30 cairo_set_source_rgba (pCairoContext
, 1.0f
, 0.0f
, 0.0f
, 1.0f
);
31 cairo_stroke (pCairoContext
);
35 render_curve (cairo_t
* pCairoContext
,
41 if (pLineOne
== NULL
|| pLineTwo
== NULL
)
44 cairo_save (pCairoContext
);
45 cairo_set_operator (pCairoContext
, CAIRO_OPERATOR_SOURCE
);
46 cairo_scale (pCairoContext
,
47 (gdouble
) iWidth
/ 1.0f
,
48 (gdouble
) iHeight
/ 1.0f
);
49 cairo_set_source_rgba (pCairoContext
, 0.0f
, 0.0f
, 0.0f
, 0.0f
);
50 cairo_paint (pCairoContext
);
51 cairo_set_operator (pCairoContext
, CAIRO_OPERATOR_OVER
);
53 cairo_set_source_rgba (pCairoContext
, 0.0f
, 0.0f
, 0.0f
, 1.0f
);
54 cairo_set_line_cap (pCairoContext
, CAIRO_LINE_CAP_ROUND
);
55 cairo_set_line_width (pCairoContext
, 0.05f
);
56 cairo_move_to (pCairoContext
, pLineOne
->start
.fX
, pLineOne
->start
.fY
);
57 cairo_curve_to (pCairoContext
,
64 cairo_stroke (pCairoContext
);
65 cairo_set_operator (pCairoContext
, CAIRO_OPERATOR_OVER
);
66 cairo_set_line_width (pCairoContext
, 0.01f
);
67 cairo_set_source_rgba (pCairoContext
, 0.25f
, 0.5f
, 1.0f
, 1.0f
);
68 cairo_move_to (pCairoContext
, pLineOne
->start
.fX
, pLineOne
->start
.fY
);
69 cairo_line_to (pCairoContext
, pLineOne
->end
.fX
, pLineOne
->end
.fY
);
70 cairo_stroke (pCairoContext
);
71 cairo_move_to (pCairoContext
, pLineTwo
->start
.fX
, pLineTwo
->start
.fY
);
72 cairo_line_to (pCairoContext
, pLineTwo
->end
.fX
, pLineTwo
->end
.fY
);
73 cairo_stroke (pCairoContext
);
74 draw_point (pCairoContext
, pLineOne
->start
.fX
, pLineOne
->start
.fY
);
75 draw_point (pCairoContext
, pLineOne
->end
.fX
, pLineOne
->end
.fY
);
76 draw_point (pCairoContext
, pLineTwo
->start
.fX
, pLineTwo
->start
.fY
);
77 draw_point (pCairoContext
, pLineTwo
->end
.fX
, pLineTwo
->end
.fY
);
78 cairo_restore (pCairoContext
);
82 render_zini (cairo_t
* pCairoContext
,
86 gdouble fLength
= 1.0f
/ 25.0f
;
90 cairo_save (pCairoContext
);
91 cairo_set_operator (pCairoContext
, CAIRO_OPERATOR_SOURCE
);
92 cairo_set_line_cap (pCairoContext
, CAIRO_LINE_CAP_ROUND
);
93 cairo_set_source_rgba (pCairoContext
, 0.0f
, 0.0f
, 0.0f
, 0.0f
);
94 cairo_scale (pCairoContext
,
95 (gdouble
) iWidth
/ 1.0f
,
96 (gdouble
) iHeight
/ 1.0f
);
97 cairo_paint (pCairoContext
);
98 cairo_set_operator (pCairoContext
, CAIRO_OPERATOR_OVER
);
99 cairo_set_line_width (pCairoContext
, fLength
);
100 for (i
= 0; i
< 60; i
++)
102 cairo_save (pCairoContext
);
103 cairo_translate (pCairoContext
, 0.5f
, 0.5f
);
104 cairo_rotate (pCairoContext
,
106 (g_ulMilliSeconds
+ 10.0f
* i
) *
110 sinf ((g_ulMilliSeconds
+ 10.0f
* i
) / 1000 * 10 * G_PI
);
111 cairo_translate (pCairoContext
, 0.0f
, fY
);
112 cairo_rotate (pCairoContext
, G_PI
/ 180.0f
* 6.0f
* i
);
113 cairo_set_source_rgba (pCairoContext
,
118 cairo_move_to (pCairoContext
, -fLength
, 0.0f
);
119 cairo_line_to (pCairoContext
, fLength
, 0.0f
);
120 cairo_stroke (pCairoContext
);
121 cairo_restore (pCairoContext
);
123 cairo_restore (pCairoContext
);
127 render_flower (cairo_t
* pCairoContext
,
131 cairo_save (pCairoContext
);
132 cairo_set_operator (pCairoContext
, CAIRO_OPERATOR_SOURCE
);
133 cairo_set_source_rgba (pCairoContext
, 0.0f
, 0.0f
, 0.0f
, 0.0f
);
134 cairo_scale (pCairoContext
,
135 (gdouble
) iWidth
/ 1.0f
,
136 (gdouble
) iHeight
/ 1.0f
);
137 cairo_paint (pCairoContext
);
138 cairo_set_operator (pCairoContext
, CAIRO_OPERATOR_OVER
);
140 cairo_translate (pCairoContext
, 0.5f
, 0.5f
);
141 cairo_rotate (pCairoContext
, -G_PI
/ 180.0f
* g_ulMilliSeconds
* 0.36f
);
143 cairo_save (pCairoContext
);
145 cairo_translate (pCairoContext
, -0.5f
, -0.5f
);
146 cairo_move_to (pCairoContext
, 0.5f
, 0.4f
);
147 cairo_curve_to (pCairoContext
, 0.5f
, 0.2f
, 0.6f
, 0.1f
, 0.7f
, 0.1f
);
148 cairo_curve_to (pCairoContext
, 0.8f
, 0.1f
, 0.9f
, 0.2f
, 0.9f
, 0.3f
);
149 cairo_curve_to (pCairoContext
, 0.9f
, 0.4f
, 0.8f
, 0.5f
, 0.6f
, 0.5f
);
150 cairo_curve_to (pCairoContext
, 0.8f
, 0.5f
, 0.9f
, 0.6f
, 0.9f
, 0.7f
);
151 cairo_curve_to (pCairoContext
, 0.9f
, 0.8f
, 0.8f
, 0.9f
, 0.7f
, 0.9f
);
152 cairo_curve_to (pCairoContext
, 0.6f
, 0.9f
, 0.5f
, 0.8f
, 0.5f
, 0.6f
);
153 cairo_curve_to (pCairoContext
, 0.5f
, 0.8f
, 0.4f
, 0.9f
, 0.3f
, 0.9f
);
154 cairo_curve_to (pCairoContext
, 0.2f
, 0.9f
, 0.1f
, 0.8f
, 0.1f
, 0.7f
);
155 cairo_curve_to (pCairoContext
, 0.1f
, 0.6f
, 0.2f
, 0.5f
, 0.3f
, 0.5f
);
156 cairo_curve_to (pCairoContext
, 0.2f
, 0.5f
, 0.1f
, 0.4f
, 0.1f
, 0.3f
);
157 cairo_curve_to (pCairoContext
, 0.1f
, 0.2f
, 0.2f
, 0.1f
, 0.3f
, 0.1f
);
158 cairo_curve_to (pCairoContext
, 0.4f
, 0.1f
, 0.5f
, 0.2f
, 0.5f
, 0.3f
);
160 cairo_restore (pCairoContext
);
162 cairo_set_source_rgba (pCairoContext
, 1.0f
, 0.0f
, 0.0f
, 0.75f
);
163 cairo_fill (pCairoContext
);
164 cairo_restore (pCairoContext
);