static void ease_pdf_actor_draw_page (EasePdfActor* self) { #line 415 "ease-pdf-actor.c" PopplerPage* page; double width; double height; cairo_t* cr; GError * _inner_error_ = NULL; #line 58 "ease-pdf-actor.vala" g_return_if_fail (self != NULL); #line 61 "ease-pdf-actor.vala" page = _g_object_ref0 (poppler_document_get_page (self->priv->doc, self->priv->current_page)); #line 62 "ease-pdf-actor.vala" width = (double) 0; #line 62 "ease-pdf-actor.vala" height = (double) 0; #line 63 "ease-pdf-actor.vala" poppler_page_get_size (page, &width, &height); #line 66 "ease-pdf-actor.vala" if (self->priv->texture == NULL) { #line 433 "ease-pdf-actor.c" ClutterCairoTexture* _tmp0_; ClutterActor* _tmp1_; #line 68 "ease-pdf-actor.vala" self->priv->texture = (_tmp0_ = g_object_ref_sink ((ClutterCairoTexture*) clutter_cairo_texture_new ((guint) ((gint) width), (guint) ((gint) height))), _g_object_unref0 (self->priv->texture), _tmp0_); #line 69 "ease-pdf-actor.vala" clutter_container_add_actor ((ClutterContainer*) (_tmp1_ = ((EaseActor*) self)->contents, CLUTTER_IS_GROUP (_tmp1_) ? ((ClutterGroup*) _tmp1_) : NULL), (ClutterActor*) self->priv->texture); #line 71 "ease-pdf-actor.vala" clutter_actor_set_width ((ClutterActor*) self->priv->texture, clutter_actor_get_width (((EaseActor*) self)->contents)); #line 72 "ease-pdf-actor.vala" clutter_actor_set_height ((ClutterActor*) self->priv->texture, clutter_actor_get_height (((EaseActor*) self)->contents)); #line 74 "ease-pdf-actor.vala" g_signal_connect_object ((GObject*) ((EaseActor*) self)->contents, "notify::width", (GCallback) __lambda53__g_object_notify, self, 0); #line 78 "ease-pdf-actor.vala" g_signal_connect_object ((GObject*) ((EaseActor*) self)->contents, "notify::height", (GCallback) __lambda54__g_object_notify, self, 0); #line 448 "ease-pdf-actor.c" } else { #line 86 "ease-pdf-actor.vala" clutter_cairo_texture_set_surface_size (self->priv->texture, (guint) ((gint) width), (guint) ((gint) height)); #line 452 "ease-pdf-actor.c" } #line 90 "ease-pdf-actor.vala" clutter_cairo_texture_clear (self->priv->texture); #line 91 "ease-pdf-actor.vala" cr = clutter_cairo_texture_create (self->priv->texture); #line 92 "ease-pdf-actor.vala" ease_background_cairo_render (self->priv->pdf_element->background, cr, (gint) width, (gint) height, ease_document_get_path (ease_slide_get_parent (ease_element_get_parent (((EaseActor*) self)->element))), &_inner_error_); #line 460 "ease-pdf-actor.c" if (_inner_error_ != NULL) { _cairo_destroy0 (cr); _g_object_unref0 (page); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); g_clear_error (&_inner_error_); return; } #line 94 "ease-pdf-actor.vala" poppler_page_render (page, cr); #line 470 "ease-pdf-actor.c" _cairo_destroy0 (cr); _g_object_unref0 (page); }
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; }
void shell_global_clutter_cairo_texture_draw_clock (ClutterCairoTexture *texture, int hour, int minute) { cairo_t *cr; guint width, height; double xc, yc, radius, hour_radius, minute_radius; double angle; clutter_cairo_texture_get_surface_size (texture, &width, &height); xc = (double)width / 2; yc = (double)height / 2; radius = (double)(MIN(width, height)) / 2 - 2; minute_radius = radius - 3; hour_radius = radius / 2; clutter_cairo_texture_clear (texture); cr = clutter_cairo_texture_create (texture); cairo_set_line_width (cr, 1.0); /* Outline */ cairo_arc (cr, xc, yc, radius, 0.0, 2.0 * M_PI); cairo_stroke (cr); /* Hour hand. (We add a fraction to @hour for the minutes, then * convert to radians, and then subtract pi/2 because cairo's origin * is at 3:00, not 12:00.) */ angle = ((hour + minute / 60.0) / 12.0) * 2.0 * M_PI - M_PI / 2.0; cairo_move_to (cr, xc, yc); cairo_line_to (cr, xc + hour_radius * cos (angle), yc + hour_radius * sin (angle)); cairo_stroke (cr); /* Minute hand */ angle = (minute / 60.0) * 2.0 * M_PI - M_PI / 2.0; cairo_move_to (cr, xc, yc); cairo_line_to (cr, xc + minute_radius * cos (angle), yc + minute_radius * sin (angle)); cairo_stroke (cr); cairo_destroy (cr); }
static void rounded_background_draw_cb (ClutterCairoTexture *texture, cairo_t *cr) { ClutterActorBox allocation; clutter_actor_get_allocation_box (CLUTTER_ACTOR (texture), &allocation); clutter_cairo_texture_clear (CLUTTER_CAIRO_TEXTURE (texture)); _cairo_round_rectangle (cr, allocation.x1, allocation.y1, allocation.x2 - allocation.x1, allocation.y2 - allocation.y1, 6.0); cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); cairo_fill (cr); }
/* Updates the window controls based on whether the stage is fullscreen */ void WindowPanel::draw_window_controls() { clutter_cairo_texture_clear(CLUTTER_CAIRO_TEXTURE(fullscreen_button_)); if (clutter_stage_get_fullscreen(CLUTTER_STAGE(clutter_stage_get_default()))) { // Stage is fullscreen cairo_t * context = clutter_cairo_texture_create(CLUTTER_CAIRO_TEXTURE(fullscreen_button_)); cairo_rectangle(context, 1.0, 1.0, 16.0, 14.0); cairo_rectangle(context, 4.0, 6.0, 10.0, 6.0); cairo_set_source_rgb(context, 1.0, 1.0, 1.0); cairo_set_fill_rule(context, CAIRO_FILL_RULE_EVEN_ODD); cairo_fill_preserve(context); cairo_set_line_width(context, 1.0); cairo_set_source_rgb(context, 0.0, 0.0, 0.0); cairo_stroke(context); cairo_destroy(context); clutter_actor_show(close_button_); } else { // Stage is windowed cairo_t * context = clutter_cairo_texture_create(CLUTTER_CAIRO_TEXTURE(fullscreen_button_)); cairo_rectangle(context, 1.0, 1.0, 16.0, 14.0); cairo_rectangle(context, 4.0, 4.0, 10.0, 8.0); cairo_set_source_rgb(context, 1.0, 1.0, 1.0); cairo_set_fill_rule(context, CAIRO_FILL_RULE_EVEN_ODD); cairo_fill_preserve(context); cairo_set_line_width(context, 1.0); cairo_set_source_rgb(context, 0.0, 0.0, 0.0); cairo_stroke(context); cairo_destroy(context); clutter_actor_hide(close_button_); } }
static void ppg_line_visualizer_draw (PpgVisualizer *visualizer) { PpgLineVisualizerPrivate *priv; PpgModelIter iter; Line *line; PpgColorIter color; cairo_t *cr; GValue value = { 0 }; gfloat height; gfloat width; gdouble x; gdouble y; gdouble begin; gdouble end; gdouble lower; gdouble upper; gdouble val = 0; gint i; g_return_if_fail(PPG_IS_LINE_VISUALIZER(visualizer)); priv = PPG_LINE_VISUALIZER(visualizer)->priv; clutter_cairo_texture_clear(CLUTTER_CAIRO_TEXTURE(priv->actor)); cr = clutter_cairo_texture_create(CLUTTER_CAIRO_TEXTURE(priv->actor)); g_object_get(visualizer, "begin", &begin, "end", &end, NULL); g_object_get(priv->actor, "width", &width, "height", &height, NULL); /* FIXME: */ lower = 0; upper = 200; ppg_color_iter_init(&color); cairo_set_line_width(cr, 1.0); for (i = 0; i < priv->lines->len; i++) { line = &g_array_index(priv->lines, Line, i); cairo_move_to(cr, 0, height); gdk_cairo_set_source_color(cr, &color.color); if (!ppg_model_get_iter_first(line->model, &iter)) { goto next; } do { ppg_model_get_value(line->model, &iter, line->key, &value); if (G_VALUE_HOLDS(&value, G_TYPE_DOUBLE)) { val = g_value_get_double(&value); } else if (G_VALUE_HOLDS(&value, G_TYPE_INT)) { val = g_value_get_int(&value); } else if (G_VALUE_HOLDS(&value, G_TYPE_UINT)) { val = g_value_get_uint(&value); } else { g_critical("HOLDS %s", g_type_name(value.g_type)); g_assert_not_reached(); } x = get_x_offset(begin, end, width, iter.time); y = get_y_offset(lower, upper, height, val); cairo_line_to(cr, x, y); g_value_unset(&value); } while (ppg_model_iter_next(line->model, &iter)); cairo_stroke(cr); next: ppg_color_iter_next(&color); } cairo_destroy(cr); }
static void pkg_graph_2d_paint (PkgGraph2d *graph) { PkgGraph2dPrivate *priv = graph->priv; cairo_t *cr; gfloat w, h; gdouble x0, x1, x2; gdouble y0, y1, y2; gdouble dashes[] = {1., 2.}; gdouble *epochs = NULL; gdouble tmp; gsize n_epochs = 0; gint i; clutter_cairo_texture_clear(CLUTTER_CAIRO_TEXTURE(priv->texture)); clutter_actor_get_size(CLUTTER_ACTOR(graph), &w, &h); /* * Create cairo context and set defaults. */ cr = clutter_cairo_texture_create(CLUTTER_CAIRO_TEXTURE(priv->texture)); cairo_set_line_width(cr, 1.); cairo_set_dash(cr, dashes, 2, 0.); /* * Get coordinates for drawing primary extends. */ pkg_graph_2d_get_primary_extents(graph, &x0, &x1, &x2, &y0, &y1, &y2); /* * Draw the background color. */ cairo_set_source_rgb(cr, 1., 1., 1.); cairo_rectangle(cr, x1, y2, x2 - x1, y1); cairo_fill(cr); /* * Draw the bounding box. */ cairo_set_source_rgb(cr, 0., 0., 0.); cairo_move_to(cr, x0, y2); cairo_line_to(cr, x2, y2); cairo_line_to(cr, x2, y0); cairo_move_to(cr, x0, y1); cairo_line_to(cr, x2, y1); cairo_move_to(cr, x1, y0 - .5); cairo_line_to(cr, x1, y2); cairo_stroke(cr); /* * Draw the x-scale epochs. */ if (pkg_scale_get_epochs(priv->x_scale, &epochs, &n_epochs)) { if (n_epochs > 0) { for (i = 0; i < n_epochs; i++) { if (pkg_scale_translate(priv->x_scale, epochs[i], &tmp)) { PangoFontDescription *font_desc; PangoLayout *layout; gchar *format, *markup; gint pw, ph; /* * Only draw the line if it isn't right near the end of * the visiable region of the graph. */ if (tmp + 5. < floor(w)) { cairo_move_to(cr, tmp, y0 - .5); cairo_line_to(cr, tmp, y2); } /* * Draw the y-scale grid-line value. */ format = pkg_scale_format_string(priv->x_scale, epochs[i]); if (format != NULL) { font_desc = pango_font_description_from_string("Bold Sans 8"); layout = pango_cairo_create_layout(cr); pango_layout_set_font_description(layout, font_desc); markup = g_strdup_printf("<span size=\"smaller\">%s</span>", format); pango_layout_set_markup(layout, markup, -1); pango_layout_get_pixel_size(layout, &pw, &ph); if (i == 0) { cairo_move_to(cr, tmp + 2., y1 + 2.); } else { cairo_move_to(cr, tmp - pw - 2., y1 + 2.); } pango_cairo_show_layout(cr, layout); g_object_unref(layout); pango_font_description_free(font_desc); g_free(format); g_free(markup); } } } cairo_stroke(cr); } } /* * Draw the y-scale epochs. */ if (pkg_scale_get_epochs(priv->y_scale, &epochs, &n_epochs)) { if (n_epochs > 0) { for (i = 0; i < n_epochs; i++) { if (pkg_scale_translate(priv->y_scale, epochs[i], &tmp)) { PangoFontDescription *font_desc; PangoLayout *layout; gchar *format, *markup; gint pw, ph; cairo_move_to(cr, x0, floor(y1 - tmp) + .5); cairo_line_to(cr, x2, floor(y1 - tmp) + .5); /* * Draw the y-scale grid-line value. */ format = pkg_scale_format_string(priv->y_scale, epochs[i]); if (format != NULL) { font_desc = pango_font_description_from_string("Bold Sans 8"); layout = pango_cairo_create_layout(cr); pango_layout_set_font_description(layout, font_desc); markup = g_strdup_printf("<span size=\"smaller\">%s</span>", format); pango_layout_set_markup(layout, markup, -1); pango_layout_get_pixel_size(layout, &pw, &ph); if (i == 0) { cairo_move_to(cr, x1 - pw - 2., y1 - tmp - ph - 2.); } else { cairo_move_to(cr, x1 - pw - 2., y1 - tmp + 2.); } pango_cairo_show_layout(cr, layout); g_object_unref(layout); pango_font_description_free(font_desc); g_free(markup); g_free(format); } } } cairo_stroke(cr); } } priv->x_label = "X Label Here"; priv->y_label = "Y Label Here"; /* * Draw the X scale label. */ if (priv->x_label) { PangoFontDescription *font_desc; PangoLayout *layout; gchar *markup; gint pw, ph; font_desc = pango_font_description_from_string("Bold Sans 10"); layout = pango_cairo_create_layout(cr); pango_layout_set_font_description(layout, font_desc); markup = g_strdup_printf("<span size=\"smaller\">%s</span>", priv->x_label); pango_layout_set_markup(layout, markup, -1); pango_layout_get_pixel_size(layout, &pw, &ph); cairo_move_to(cr, ((w - pw) / 2.), h - ph); pango_cairo_show_layout(cr, layout); g_object_unref(layout); pango_font_description_free(font_desc); g_free(markup); } /* * Draw the Y scale label. */ if (priv->x_label) { PangoFontDescription *font_desc; PangoLayout *layout; gchar *markup; gint pw, ph; font_desc = pango_font_description_from_string("Bold Sans 10"); layout = pango_cairo_create_layout(cr); pango_layout_set_font_description(layout, font_desc); markup = g_strdup_printf("<span size=\"smaller\">%s</span>", priv->y_label); pango_layout_set_markup(layout, markup, -1); pango_layout_get_pixel_size(layout, &pw, &ph); cairo_move_to(cr, 0., h - ((h - pw) / 2.)); cairo_rotate(cr, M_PI / -2.); pango_cairo_show_layout(cr, layout); g_object_unref(layout); pango_font_description_free(font_desc); g_free(markup); } /* * Free cairo context and resources. */ cairo_destroy(cr); /* * Render the children data points. */ pkg_graph_2d_paint_children(graph); }