static void expose_event_cb (GtkDrawingArea *drawing_area, GdkEventExpose *eev, gpointer user_data) { GtkWidget *widget; EomPrintPreviewPrivate *priv; cairo_t *cr; widget = GTK_WIDGET (drawing_area); priv = EOM_PRINT_PREVIEW (user_data)->priv; update_relative_sizes (EOM_PRINT_PREVIEW (user_data)); cr = gdk_cairo_create (gtk_widget_get_window (widget)); eom_print_preview_draw (EOM_PRINT_PREVIEW (user_data), cr); if (cairo_status (cr) != CAIRO_STATUS_SUCCESS) { fprintf (stderr, "Cairo is unhappy: %s\n", cairo_status_to_string (cairo_status (cr))); } cairo_destroy (cr); gdk_window_get_pointer (gtk_widget_get_window (widget), NULL, NULL, NULL); }
/** * photos_print_preview_new_with_pixbuf: * @pixbuf: a #GdkPixbuf * * Creates a new #PhotosPrintPreview widget, and sets the #GdkPixbuf to preview * on it. * * Returns: A new #PhotosPrintPreview widget. **/ GtkWidget * photos_print_preview_new_with_pixbuf (GdkPixbuf *pixbuf) { PhotosPrintPreview *preview; g_return_val_if_fail (GDK_IS_PIXBUF (pixbuf), NULL); preview = PHOTOS_PRINT_PREVIEW (photos_print_preview_new ()); preview->priv->pixbuf = g_object_ref (pixbuf); update_relative_sizes (preview); return GTK_WIDGET (preview); }
/** * eom_print_preview_new_with_pixbuf: * @pixbuf: a #GdkPixbuf * * Creates a new #EomPrintPreview widget, and sets the #GdkPixbuf to preview * on it. * * Returns: A new #EomPrintPreview widget. **/ GtkWidget * eom_print_preview_new_with_pixbuf (GdkPixbuf *pixbuf) { EomPrintPreview *preview; g_return_val_if_fail (GDK_IS_PIXBUF (pixbuf), NULL); preview = EOM_PRINT_PREVIEW (eom_print_preview_new ()); preview->priv->image = g_object_ref (pixbuf); update_relative_sizes (preview); return GTK_WIDGET (preview); }
static gboolean draw_cb (GtkDrawingArea *drawing_area, cairo_t *cr, gpointer user_data) { update_relative_sizes (PHOTOS_PRINT_PREVIEW (user_data)); photos_print_preview_draw (PHOTOS_PRINT_PREVIEW (user_data), cr); if (cairo_status (cr) != CAIRO_STATUS_SUCCESS) { fprintf (stderr, "Cairo is unhappy: %s\n", cairo_status_to_string (cairo_status (cr))); } return TRUE; }
static void size_allocate_cb (GtkWidget *widget, GtkAllocation *allocation, gpointer user_data) { PhotosPrintPreview *preview; preview = PHOTOS_PRINT_PREVIEW (user_data); update_relative_sizes (preview); preview->priv->flag_create_surface = TRUE; if (preview->priv->pixbuf_scaled != NULL) { g_object_unref (preview->priv->pixbuf_scaled); preview->priv->pixbuf_scaled = NULL; } g_idle_add ((GSourceFunc) create_surface_when_idle, preview); }
static void photos_print_preview_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { PhotosPrintPreviewPrivate *priv = PHOTOS_PRINT_PREVIEW (object)->priv; gboolean paper_size_changed = FALSE; switch (prop_id) { case PROP_PIXBUF: if (priv->pixbuf) { g_object_unref (priv->pixbuf); } priv->pixbuf = GDK_PIXBUF (g_value_dup_object (value)); if (priv->pixbuf_scaled) { g_object_unref (priv->pixbuf_scaled); priv->pixbuf_scaled = NULL; } priv->flag_create_surface = TRUE; break; case PROP_PIXBUF_X_ALIGN: priv->pixbuf_x_align = g_value_get_float (value); break; case PROP_PIXBUF_Y_ALIGN: priv->pixbuf_y_align = g_value_get_float (value); break; case PROP_PIXBUF_SCALE: priv->i_scale = g_value_get_float (value); priv->flag_create_surface = TRUE; break; case PROP_PAPER_WIDTH: priv->p_width = g_value_get_float (value); paper_size_changed = TRUE; break; case PROP_PAPER_HEIGHT: priv->p_height = g_value_get_float (value); paper_size_changed = TRUE; break; case PROP_PAGE_LEFT_MARGIN: priv->l_margin = g_value_get_float (value); break; case PROP_PAGE_RIGHT_MARGIN: priv->r_margin = g_value_get_float (value); break; case PROP_PAGE_TOP_MARGIN: priv->t_margin = g_value_get_float (value); break; case PROP_PAGE_BOTTOM_MARGIN: priv->b_margin = g_value_get_float (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } if (paper_size_changed) { g_object_set (object, "ratio", priv->p_width/priv->p_height, NULL); } update_relative_sizes (PHOTOS_PRINT_PREVIEW (object)); gtk_widget_queue_draw (priv->area); }