static void circle_paint_cb (ClutterActor *actor) { const CoglColor fill_color = { 0xff, 0xff, 0xff, 0x80 }; gint i; gdouble angle; guint radius = clutter_actor_get_width (actor) / 2; cogl_set_source_color (&fill_color); angle = *((gdouble *)g_object_get_data (G_OBJECT (actor), "angle")); for (i = 0; i < CIRCLE_S; i++, angle += (2.0 * G_PI) / (gdouble) CIRCLE_S) { gdouble angle2 = angle + ((2.0 * G_PI) / (gdouble)CIRCLE_S) / 2.0; cogl_path_move_to (((radius - CIRCLE_W) * cos (angle)) + radius, ((radius - CIRCLE_W) * sin (angle)) + radius); cogl_path_arc (radius, radius, radius, radius, CLUTTER_ANGLE_FROM_RAD (angle), CLUTTER_ANGLE_FROM_RAD (angle2)); cogl_path_line_to (((radius - CIRCLE_W) * cos (angle2)) + radius, ((radius - CIRCLE_W) * sin (angle2)) + radius); cogl_path_arc (radius, radius, radius - CIRCLE_W, radius - CIRCLE_W, CLUTTER_ANGLE_FROM_RAD (angle2), CLUTTER_ANGLE_FROM_RAD (angle)); cogl_path_close (); cogl_path_fill (); } }
static void paint_circle (ClutterActor *actor) { gfloat radius = MIN (clutter_actor_get_width (actor), clutter_actor_get_height (actor)) / 2.f; cogl_set_source_color4ub (0xff, 0xff, 0xff, 0xff); cogl_path_arc (radius, radius, radius, radius, 0, 360); cogl_path_fill (); }
static void pick (ClutterActor *self, const ClutterColor *color) { ChamplainPointPrivate *priv = GET_PRIVATE (self); gdouble radius = priv->size / 2.0; cogl_path_new (); cogl_set_source_color4ub (color->red, color->green, color->blue, color->alpha); cogl_path_move_to (radius, radius); cogl_path_arc (radius, radius, radius, radius, 0, 360.0); cogl_path_close (); cogl_path_fill (); }
static void mnb_fancy_bin_paint (ClutterActor *actor) { MnbFancyBin *self = MNB_FANCY_BIN (actor); MnbFancyBinPrivate *priv = self->priv; /* Draw the clipped child if necessary */ if (priv->fanciness > 0.0) { MxPadding padding; gfloat width, height; clutter_actor_get_size (actor, &width, &height); mx_widget_get_padding (MX_WIDGET (actor), &padding); /* Create a clip path so that the clone won't poke out * from underneath the background. */ cogl_path_new (); cogl_path_move_to (padding.left + priv->curve_radius, padding.top); cogl_path_arc (width - padding.right - priv->curve_radius, priv->curve_radius + padding.top, priv->curve_radius, priv->curve_radius, 270, 360); cogl_path_arc (width - padding.right - priv->curve_radius, height - padding.bottom - priv->curve_radius, priv->curve_radius, priv->curve_radius, 0, 90); cogl_path_arc (padding.left + priv->curve_radius, height - padding.bottom - priv->curve_radius, priv->curve_radius, priv->curve_radius, 90, 180); cogl_path_arc (padding.left + priv->curve_radius, padding.top + priv->curve_radius, priv->curve_radius, priv->curve_radius, 180, 270); cogl_path_close (); cogl_clip_push_from_path (); /* Paint child */ if (priv->child) clutter_actor_paint (priv->child); cogl_clip_pop (); /* Chain up for background */ CLUTTER_ACTOR_CLASS (mnb_fancy_bin_parent_class)->paint (actor); } /* Draw the un-fancy child */ if ((priv->fanciness < 1.0) && priv->clone) clutter_actor_paint (priv->clone); }