+
+static void
+set_color (cairo_t *cr, color_t *color)
+{
+ cairo_set_source_rgb (cr, color->r, color->g, color->b);
+}
+
+#define XO_HEAD_CENTER_X 320
+#define XO_HEAD_CENTER_Y 211.5
+#define XO_HEAD_RADIUS 12.25
+#define XO_BODY_CENTER_X 320
+#define XO_BODY_CENTER_Y 250
+#define XO_BODY_DELTA 20.5
+#define XO_BODY_LINE_WIDTH 12.25
+#define XO_OUTLINE_EXTRA 2.5
+#define XO_OUTLINE_SHRINK 1.1
+#define XO_DOTS_CENTER_X 320
+#define XO_DOTS_CENTER_Y 240
+#define XO_DOTS_POSITION_RADIUS 112.5
+#define XO_DOTS_DOT_RADIUS 5.5
+#define XO_DOTS_NUM_DOTS 30
+#define XO_RING_CENTER_X 320
+#define XO_RING_CENTER_Y 240
+#define XO_RING_INNER_RADIUS 63
+#define XO_RING_OUTER_RADIUS 118
+
+static void
+draw_head (cairo_t *cr, double extra)
+{
+ cairo_arc (cr,
+ XO_HEAD_CENTER_X,
+ XO_HEAD_CENTER_Y,
+ XO_HEAD_RADIUS + extra,
+ 0, 2 * M_PI);
+ cairo_fill (cr);
+}
+
+static void
+draw_body (cairo_t *cr, double extra)
+{
+ cairo_move_to (cr,
+ XO_BODY_CENTER_X - XO_BODY_DELTA,
+ XO_BODY_CENTER_Y - XO_BODY_DELTA);
+ cairo_rel_line_to (cr, XO_BODY_DELTA, XO_BODY_DELTA);
+ cairo_rel_line_to (cr, XO_BODY_DELTA, -XO_BODY_DELTA);
+ cairo_move_to (cr,
+ XO_BODY_CENTER_X - XO_BODY_DELTA,
+ XO_BODY_CENTER_Y + XO_BODY_DELTA);
+ cairo_rel_line_to (cr, XO_BODY_DELTA, -XO_BODY_DELTA);
+ cairo_rel_line_to (cr, XO_BODY_DELTA, XO_BODY_DELTA);
+ cairo_set_line_width (cr, XO_BODY_LINE_WIDTH + 2 * extra);
+ cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND);
+ cairo_stroke (cr);
+}
+
+static void
+draw_dots (cairo_t *cr)
+{
+ int i;
+
+ cairo_save (cr);
+
+ set_color (cr, &dot_gray);
+
+ cairo_translate (cr, XO_DOTS_CENTER_X, XO_DOTS_CENTER_Y);
+ cairo_rotate (cr, - M_PI_2);
+
+ for (i = 0; i < XO_DOTS_NUM_DOTS; i++) {
+ cairo_arc (cr,
+ XO_DOTS_POSITION_RADIUS, 0,
+ XO_DOTS_DOT_RADIUS,
+ 0, 2 * M_PI);
+ cairo_fill (cr);
+ cairo_rotate (cr, 2 * M_PI / XO_DOTS_NUM_DOTS);
+ }
+
+ cairo_restore (cr);
+}
+
+static void
+draw_ring (cairo_t *cr)
+{
+ cairo_save (cr);
+
+ cairo_arc (cr,
+ XO_RING_CENTER_X,
+ XO_RING_CENTER_Y,
+ XO_RING_INNER_RADIUS,
+ 0, 2 * M_PI);
+ cairo_arc (cr,
+ XO_RING_CENTER_X,
+ XO_RING_CENTER_Y,
+ XO_RING_OUTER_RADIUS,
+ 0, 2 * M_PI);
+ set_color (cr, &ring_white);
+
+ cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD);
+ cairo_fill (cr);
+
+ cairo_restore (cr);
+}
+