/** * gs_screenshot_image_show_blurred: **/ static void gs_screenshot_image_show_blurred (GsScreenshotImage *ssimg, const gchar *filename_thumb) { GsScreenshotImagePrivate *priv; _cleanup_object_unref_ AsImage *im = NULL; _cleanup_object_unref_ GdkPixbuf *pb = NULL; priv = gs_screenshot_image_get_instance_private (ssimg); /* create an helper which can do the blurring for us */ im = as_image_new (); if (!as_image_load_filename (im, filename_thumb, NULL)) return; pb = as_image_save_pixbuf (im, priv->width * priv->scale, priv->height * priv->scale, AS_IMAGE_SAVE_FLAG_BLUR); if (pb == NULL) return; if (g_strcmp0 (priv->current_image, "image1") == 0) { gs_image_set_from_pixbuf_with_scale (GTK_IMAGE (priv->image1), pb, priv->scale); } else { gs_image_set_from_pixbuf_with_scale (GTK_IMAGE (priv->image2), pb, priv->scale); } }
static void gs_screenshot_image_show_blurred (GsScreenshotImage *ssimg, const gchar *filename_thumb) { g_autoptr(AsImage) im = NULL; g_autoptr(GdkPixbuf) pb = NULL; /* create an helper which can do the blurring for us */ im = as_image_new (); if (!as_image_load_filename (im, filename_thumb, NULL)) return; pb = as_image_save_pixbuf (im, ssimg->width * ssimg->scale, ssimg->height * ssimg->scale, AS_IMAGE_SAVE_FLAG_BLUR); if (pb == NULL) return; if (g_strcmp0 (ssimg->current_image, "image1") == 0) { gs_image_set_from_pixbuf_with_scale (GTK_IMAGE (ssimg->image1), pb, (gint) ssimg->scale); } else { gs_image_set_from_pixbuf_with_scale (GTK_IMAGE (ssimg->image2), pb, (gint) ssimg->scale); } }
/** * as_screenshot_show_image: **/ static void as_screenshot_show_image (GsScreenshotImage *ssimg) { GsScreenshotImagePrivate *priv; _cleanup_object_unref_ GdkPixbuf *pixbuf_bg = NULL; _cleanup_object_unref_ GdkPixbuf *pixbuf = NULL; priv = gs_screenshot_image_get_instance_private (ssimg); /* no need to composite */ if (priv->width == G_MAXUINT || priv->height == G_MAXUINT) { pixbuf_bg = gdk_pixbuf_new_from_file (priv->filename, NULL); } else { /* this is always going to have alpha */ pixbuf = gdk_pixbuf_new_from_file_at_scale (priv->filename, priv->width * priv->scale, priv->height * priv->scale, FALSE, NULL); if (pixbuf != NULL) { if (gs_screenshot_image_use_desktop_background (ssimg, pixbuf)) { pixbuf_bg = gs_screenshot_image_get_desktop_pixbuf (ssimg); if (pixbuf_bg == NULL) { pixbuf_bg = g_object_ref (pixbuf); } else { gdk_pixbuf_composite (pixbuf, pixbuf_bg, 0, 0, priv->width, priv->height, 0, 0, 1.0f, 1.0f, GDK_INTERP_NEAREST, 255); } } else { pixbuf_bg = g_object_ref (pixbuf); } } } /* show icon */ if (g_strcmp0 (priv->current_image, "image1") == 0) { if (pixbuf_bg != NULL) { gs_image_set_from_pixbuf_with_scale (GTK_IMAGE (priv->image2), pixbuf_bg, priv->scale); } gtk_stack_set_visible_child_name (GTK_STACK (priv->stack), "image2"); priv->current_image = "image2"; } else { if (pixbuf_bg != NULL) { gs_image_set_from_pixbuf_with_scale (GTK_IMAGE (priv->image1), pixbuf_bg, priv->scale); } gtk_stack_set_visible_child_name (GTK_STACK (priv->stack), "image1"); priv->current_image = "image1"; } gtk_widget_show (GTK_WIDGET (ssimg)); }
/** * gs_image_set_from_pixbuf: **/ void gs_image_set_from_pixbuf (GtkImage *image, const GdkPixbuf *pixbuf) { gint scale; scale = gdk_pixbuf_get_width (pixbuf) / 64; gs_image_set_from_pixbuf_with_scale (image, pixbuf, scale); }
static void as_screenshot_show_image (GsScreenshotImage *ssimg) { g_autoptr(GdkPixbuf) pixbuf = NULL; /* no need to composite */ if (ssimg->width == G_MAXUINT || ssimg->height == G_MAXUINT) { pixbuf = gdk_pixbuf_new_from_file (ssimg->filename, NULL); } else { /* this is always going to have alpha */ pixbuf = gdk_pixbuf_new_from_file_at_scale (ssimg->filename, (gint) (ssimg->width * ssimg->scale), (gint) (ssimg->height * ssimg->scale), FALSE, NULL); } /* show icon */ if (g_strcmp0 (ssimg->current_image, "image1") == 0) { if (pixbuf != NULL) { gs_image_set_from_pixbuf_with_scale (GTK_IMAGE (ssimg->image2), pixbuf, (gint) ssimg->scale); } gtk_stack_set_visible_child_name (GTK_STACK (ssimg->stack), "image2"); ssimg->current_image = "image2"; } else { if (pixbuf != NULL) { gs_image_set_from_pixbuf_with_scale (GTK_IMAGE (ssimg->image1), pixbuf, (gint) ssimg->scale); } gtk_stack_set_visible_child_name (GTK_STACK (ssimg->stack), "image1"); ssimg->current_image = "image1"; } gtk_widget_show (GTK_WIDGET (ssimg)); ssimg->showing_image = TRUE; }