static void
draw_body (cairo_t *cr, double extra, double spin_transition)
{
+ double angle, x, y;
+
cairo_save (cr);
cairo_move_to (cr,
cairo_rel_line_to (cr, XO_BODY_DELTA, XO_BODY_DELTA);
cairo_translate (cr, XO_HEAD_CENTER_X, XO_HEAD_CENTER_Y);
- cairo_rotate (cr, 2 * M_PI * spin_transition);
+
+ angle = 2 * M_PI * spin_transition;
+ y = cos (angle) * XO_DOTS_POSITION_RADIUS;
+ x = sin (angle) * XO_DOTS_POSITION_RADIUS;
+ angle = atan2 (x, y + XO_BODY_CENTER_Y - XO_HEAD_CENTER_Y);
+
+ cairo_rotate (cr, angle);
cairo_translate (cr, -XO_HEAD_CENTER_X, -XO_HEAD_CENTER_Y);
cairo_move_to (cr,
cairo_translate (cr, XO_DOTS_CENTER_X, XO_DOTS_CENTER_Y);
cairo_rotate (cr, - 1.5 * M_PI);
- for (i = 0; i < num_dots; i++) {
+ for (i = 0; i <= num_dots; i++) {
if (i != 0) {
cairo_arc (cr,
XO_DOTS_POSITION_RADIUS, 0,
goto DONE;
if (anim_stage < ANIM_FADE) {
- draw_dots (cr, (XO_DOTS_NUM_DOTS + 1) * spin_transition);
+ draw_dots (cr, (XO_DOTS_NUM_DOTS) * spin_transition);
} else {
draw_ring (cr);
}