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, July 2006, 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
, M_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
, (gdouble
) iWidth
/ 1.0f
, (gdouble
) iHeight
/ 1.0f
);
47 cairo_set_source_rgba (pCairoContext
, 0.0f
, 0.0f
, 0.0f
, 0.0f
);
48 cairo_paint (pCairoContext
);
49 cairo_set_operator (pCairoContext
, CAIRO_OPERATOR_OVER
);
51 cairo_set_source_rgba (pCairoContext
, 0.0f
, 0.0f
, 0.0f
, 1.0f
);
52 cairo_set_line_cap (pCairoContext
, CAIRO_LINE_CAP_ROUND
);
53 cairo_set_line_width (pCairoContext
, 0.05f
);
54 cairo_move_to (pCairoContext
, pLineOne
->start
.fX
, pLineOne
->start
.fY
);
55 cairo_curve_to (pCairoContext
,
62 cairo_stroke (pCairoContext
);
63 cairo_set_operator (pCairoContext
, CAIRO_OPERATOR_OVER
);
64 cairo_set_line_width (pCairoContext
, 0.01f
);
65 cairo_set_source_rgba (pCairoContext
, 0.25f
, 0.5f
, 1.0f
, 1.0f
);
66 cairo_move_to (pCairoContext
, pLineOne
->start
.fX
, pLineOne
->start
.fY
);
67 cairo_line_to (pCairoContext
, pLineOne
->end
.fX
, pLineOne
->end
.fY
);
68 cairo_stroke (pCairoContext
);
69 cairo_move_to (pCairoContext
, pLineTwo
->start
.fX
, pLineTwo
->start
.fY
);
70 cairo_line_to (pCairoContext
, pLineTwo
->end
.fX
, pLineTwo
->end
.fY
);
71 cairo_stroke (pCairoContext
);
72 draw_point (pCairoContext
, pLineOne
->start
.fX
, pLineOne
->start
.fY
);
73 draw_point (pCairoContext
, pLineOne
->end
.fX
, pLineOne
->end
.fY
);
74 draw_point (pCairoContext
, pLineTwo
->start
.fX
, pLineTwo
->start
.fY
);
75 draw_point (pCairoContext
, pLineTwo
->end
.fX
, pLineTwo
->end
.fY
);
76 cairo_restore (pCairoContext
);
80 render_zini (cairo_t
* pCairoContext
,
84 gdouble fLength
= 1.0f
/ 25.0f
;
88 cairo_save (pCairoContext
);
89 cairo_set_operator (pCairoContext
, CAIRO_OPERATOR_SOURCE
);
90 cairo_set_line_cap (pCairoContext
, CAIRO_LINE_CAP_ROUND
);
91 cairo_set_source_rgba (pCairoContext
, 0.0f
, 0.0f
, 0.0f
, 0.0f
);
92 cairo_scale (pCairoContext
, (gdouble
) iWidth
/ 1.0f
, (gdouble
) iHeight
/ 1.0f
);
93 cairo_paint (pCairoContext
);
94 cairo_set_operator (pCairoContext
, CAIRO_OPERATOR_OVER
);
95 cairo_set_line_width (pCairoContext
, fLength
);
96 for (i
= 0; i
< 60; i
++)
98 cairo_save (pCairoContext
);
99 cairo_translate (pCairoContext
, 0.5f
, 0.5f
);
100 cairo_rotate (pCairoContext
, M_PI
/ 180.0f
* (g_ulMilliSeconds
+ 10.0f
* i
) * 0.36f
);
101 fY
= 0.33f
+ 0.0825f
* sinf ((g_ulMilliSeconds
+ 10.0f
*i
)/1000 * 10 * M_PI
);
102 cairo_translate (pCairoContext
, 0.0f
, fY
);
103 cairo_rotate (pCairoContext
, M_PI
/ 180.0f
* 6.0f
* i
);
104 cairo_set_source_rgba (pCairoContext
, 1.0f
, 0.5f
, 0.0f
, i
* 0.01f
);
105 cairo_move_to (pCairoContext
, -fLength
, 0.0f
);
106 cairo_line_to (pCairoContext
, fLength
, 0.0f
);
107 cairo_stroke (pCairoContext
);
108 cairo_restore (pCairoContext
);
110 cairo_restore (pCairoContext
);
114 render_flower (cairo_t
* pCairoContext
,
118 cairo_save (pCairoContext
);
119 cairo_set_operator (pCairoContext
, CAIRO_OPERATOR_SOURCE
);
120 cairo_set_source_rgba (pCairoContext
, 0.0f
, 0.0f
, 0.0f
, 0.0f
);
121 cairo_scale (pCairoContext
, (gdouble
) iWidth
/ 1.0f
, (gdouble
) iHeight
/ 1.0f
);
122 cairo_paint (pCairoContext
);
123 cairo_set_operator (pCairoContext
, CAIRO_OPERATOR_OVER
);
125 cairo_translate (pCairoContext
, 0.5f
, 0.5f
);
126 cairo_rotate (pCairoContext
, -M_PI
/ 180.0f
* g_ulMilliSeconds
* 0.36f
);
128 cairo_save (pCairoContext
);
130 cairo_translate (pCairoContext
, -0.5f
, -0.5f
);
131 cairo_move_to (pCairoContext
, 0.5f
, 0.4f
);
132 cairo_curve_to (pCairoContext
, 0.5f
, 0.2f
, 0.6f
, 0.1f
, 0.7f
, 0.1f
);
133 cairo_curve_to (pCairoContext
, 0.8f
, 0.1f
, 0.9f
, 0.2f
, 0.9f
, 0.3f
);
134 cairo_curve_to (pCairoContext
, 0.9f
, 0.4f
, 0.8f
, 0.5f
, 0.6f
, 0.5f
);
135 cairo_curve_to (pCairoContext
, 0.8f
, 0.5f
, 0.9f
, 0.6f
, 0.9f
, 0.7f
);
136 cairo_curve_to (pCairoContext
, 0.9f
, 0.8f
, 0.8f
, 0.9f
, 0.7f
, 0.9f
);
137 cairo_curve_to (pCairoContext
, 0.6f
, 0.9f
, 0.5f
, 0.8f
, 0.5f
, 0.6f
);
138 cairo_curve_to (pCairoContext
, 0.5f
, 0.8f
, 0.4f
, 0.9f
, 0.3f
, 0.9f
);
139 cairo_curve_to (pCairoContext
, 0.2f
, 0.9f
, 0.1f
, 0.8f
, 0.1f
, 0.7f
);
140 cairo_curve_to (pCairoContext
, 0.1f
, 0.6f
, 0.2f
, 0.5f
, 0.3f
, 0.5f
);
141 cairo_curve_to (pCairoContext
, 0.2f
, 0.5f
, 0.1f
, 0.4f
, 0.1f
, 0.3f
);
142 cairo_curve_to (pCairoContext
, 0.1f
, 0.2f
, 0.2f
, 0.1f
, 0.3f
, 0.1f
);
143 cairo_curve_to (pCairoContext
, 0.4f
, 0.1f
, 0.5f
, 0.2f
, 0.5f
, 0.3f
);
145 cairo_restore (pCairoContext
);
147 cairo_set_source_rgba (pCairoContext
, 1.0f
, 0.0f
, 0.0f
, 0.75f
);
148 cairo_fill (pCairoContext
);
149 cairo_restore (pCairoContext
);