static gboolean on_skeleton_draw (ClutterCanvas *canvas, cairo_t *cairo, gint width, gint height, gpointer user_data) { ClutterColor *color; SkeltrackJoint *head, *left_hand, *right_hand, *left_shoulder, *right_shoulder, *left_elbow, *right_elbow; if (list == NULL) return FALSE; head = skeltrack_joint_list_get_joint (list, SKELTRACK_JOINT_ID_HEAD); left_hand = skeltrack_joint_list_get_joint (list, SKELTRACK_JOINT_ID_LEFT_HAND); right_hand = skeltrack_joint_list_get_joint (list, SKELTRACK_JOINT_ID_RIGHT_HAND); left_shoulder = skeltrack_joint_list_get_joint (list, SKELTRACK_JOINT_ID_LEFT_SHOULDER); right_shoulder = skeltrack_joint_list_get_joint (list, SKELTRACK_JOINT_ID_RIGHT_SHOULDER); left_elbow = skeltrack_joint_list_get_joint (list, SKELTRACK_JOINT_ID_LEFT_ELBOW); right_elbow = skeltrack_joint_list_get_joint (list, SKELTRACK_JOINT_ID_RIGHT_ELBOW); /* Paint it white */ color = clutter_color_new (255, 255, 255, 255); clutter_cairo_set_source_color (cairo, color); cairo_rectangle (cairo, 0, 0, width, height); cairo_fill (cairo); clutter_color_free (color); paint_joint (cairo, head, 50, "#FFF800"); connect_joints (cairo, left_shoulder, right_shoulder, "#afafaf"); connect_joints (cairo, left_shoulder, left_elbow, "#afafaf"); connect_joints (cairo, right_shoulder, right_elbow, "#afafaf"); connect_joints (cairo, right_hand, right_elbow, "#afafaf"); connect_joints (cairo, left_hand, left_elbow, "#afafaf"); paint_joint (cairo, left_hand, 30, "#C2FF00"); paint_joint (cairo, right_hand, 30, "#00FAFF"); skeltrack_joint_list_free (list); list = NULL; return FALSE; }
static void on_texture_draw (ClutterCairoTexture *texture, cairo_t *cairo, gpointer user_data) { guint width, height; ClutterColor *color; SkeltrackJoint *head, *left_hand, *right_hand, *left_shoulder, *right_shoulder, *left_elbow, *right_elbow; if (list == NULL) return; head = skeltrack_joint_list_get_joint (list, SKELTRACK_JOINT_ID_HEAD); left_hand = skeltrack_joint_list_get_joint (list, SKELTRACK_JOINT_ID_LEFT_HAND); right_hand = skeltrack_joint_list_get_joint (list, SKELTRACK_JOINT_ID_RIGHT_HAND); left_shoulder = skeltrack_joint_list_get_joint (list, SKELTRACK_JOINT_ID_LEFT_SHOULDER); right_shoulder = skeltrack_joint_list_get_joint (list, SKELTRACK_JOINT_ID_RIGHT_SHOULDER); left_elbow = skeltrack_joint_list_get_joint (list, SKELTRACK_JOINT_ID_LEFT_ELBOW); right_elbow = skeltrack_joint_list_get_joint (list, SKELTRACK_JOINT_ID_RIGHT_ELBOW); /* Paint it white */ clutter_cairo_texture_clear (texture); clutter_cairo_texture_get_surface_size (texture, &width, &height); color = clutter_color_new (255, 255, 255, 255); clutter_cairo_set_source_color (cairo, color); cairo_rectangle (cairo, 0, 0, width, height); cairo_fill (cairo); clutter_color_free (color); paint_joint (cairo, head, 50, "#FFF800"); connect_joints (cairo, left_shoulder, right_shoulder, "#afafaf"); connect_joints (cairo, left_shoulder, left_elbow, "#afafaf"); connect_joints (cairo, right_shoulder, right_elbow, "#afafaf"); connect_joints (cairo, right_hand, right_elbow, "#afafaf"); connect_joints (cairo, left_hand, left_elbow, "#afafaf"); paint_joint (cairo, left_hand, 30, "#C2FF00"); paint_joint (cairo, right_hand, 30, "#00FAFF"); skeltrack_joint_list_free (list); list = NULL; }
static void on_track_joints (GObject *obj, GAsyncResult *res, gpointer user_data) { guint i; BufferInfo *buffer_info; guint16 *reduced; gint width, height, reduced_width, reduced_height; ClutterContent *content; GError *error = NULL; buffer_info = (BufferInfo *) user_data; reduced = (guint16 *) buffer_info->reduced_buffer; width = buffer_info->width; height = buffer_info->height; reduced_width = buffer_info->reduced_width; reduced_height = buffer_info->reduced_height; list = skeltrack_skeleton_track_joints_finish (skeleton, res, &error); if (error == NULL) { if (SHOW_SKELETON) { content = clutter_actor_get_content (depth_tex); clutter_content_invalidate (content); } } else { g_warning ("%s\n", error->message); g_error_free (error); } g_slice_free1 (reduced_width * reduced_height * sizeof (guint16), reduced); g_slice_free (BufferInfo, buffer_info); skeltrack_joint_list_free (list); }