[gthumb] viewer: added a way to get the modified image



commit 1a98a3f8d68b61569c0d1aca1ce1a6dbeed89abc
Author: Paolo Bacchilega <paobac src gnome org>
Date:   Sun Oct 6 17:40:01 2013 +0200

    viewer: added a way to get the modified image
    
    used in the desktop background tool

 extensions/desktop_background/actions.c         |    2 +-
 extensions/image_viewer/gth-image-histogram.c   |    2 +-
 extensions/image_viewer/gth-image-viewer-page.c |   25 +++++++++-------------
 extensions/image_viewer/gth-image-viewer-page.h |    3 +-
 gthumb/gth-image-preloader.c                    |   16 ++++++++++++++
 gthumb/gth-image-preloader.h                    |    1 +
 6 files changed, 31 insertions(+), 18 deletions(-)
---
diff --git a/extensions/desktop_background/actions.c b/extensions/desktop_background/actions.c
index a67cc49..6e63bae 100644
--- a/extensions/desktop_background/actions.c
+++ b/extensions/desktop_background/actions.c
@@ -316,7 +316,7 @@ gth_browser_activate_action_tool_desktop_background (GtkAction  *action,
                        GthImage *image;
                        GthTask  *task;
 
-                       image = gth_image_new_for_surface (gth_image_viewer_page_get_image 
(GTH_IMAGE_VIEWER_PAGE (viewer_page)));
+                       image = gth_image_new_for_surface (gth_image_viewer_page_get_modified_image 
(GTH_IMAGE_VIEWER_PAGE (viewer_page)));
                        file_data = gth_file_data_new (wdata->new_style.file, NULL);
                        task = gth_save_image_task_new (image,
                                                        "image/jpeg",
diff --git a/extensions/image_viewer/gth-image-histogram.c b/extensions/image_viewer/gth-image-histogram.c
index 27695c8..aa944b8 100644
--- a/extensions/image_viewer/gth-image-histogram.c
+++ b/extensions/image_viewer/gth-image-histogram.c
@@ -74,7 +74,7 @@ gth_image_histogram_real_set_file (GthPropertyView *base,
                return;
        }
 
-       gth_histogram_calculate_for_image (self->priv->histogram, gth_image_viewer_page_get_image 
(GTH_IMAGE_VIEWER_PAGE (viewer_page)));
+       gth_histogram_calculate_for_image (self->priv->histogram, gth_image_viewer_page_get_current_image 
(GTH_IMAGE_VIEWER_PAGE (viewer_page)));
 }
 
 
diff --git a/extensions/image_viewer/gth-image-viewer-page.c b/extensions/image_viewer/gth-image-viewer-page.c
index de735f2..999cfe4 100644
--- a/extensions/image_viewer/gth-image-viewer-page.c
+++ b/extensions/image_viewer/gth-image-viewer-page.c
@@ -1618,18 +1618,25 @@ gth_image_viewer_page_set_pixbuf (GthImageViewerPage *self,
 
 
 cairo_surface_t *
-gth_image_viewer_page_get_image (GthImageViewerPage *self)
+gth_image_viewer_page_get_current_image (GthImageViewerPage *self)
 {
        return gth_image_viewer_get_current_image (GTH_IMAGE_VIEWER (self->priv->viewer));
 }
 
 
+cairo_surface_t *
+gth_image_viewer_page_get_modified_image (GthImageViewerPage *self)
+{
+       return gth_image_preloader_get_modified_image (self->priv->preloader);
+}
+
+
 void
 gth_image_viewer_page_set_image (GthImageViewerPage *self,
                                 cairo_surface_t    *image,
                                 gboolean            add_to_history)
 {
-       if (gth_image_viewer_page_get_image (self) == image)
+       if (gth_image_viewer_page_get_current_image (self) == image)
                return;
 
        if (add_to_history)
@@ -1816,20 +1823,8 @@ gth_image_viewer_page_get_original (GthImageViewerPage    *self,
                                                  gth_image_viewer_page_get_original);
        data->cancellable = (cancellable != NULL) ? g_object_ref (cancellable) : g_cancellable_new ();
 
-       if (self->priv->image_changed) {
-               GthImage *image;
-
-               image = gth_image_new_for_surface (gth_image_viewer_page_get_image (self));
-               g_simple_async_result_set_op_res_gpointer (data->result,
-                                                          image,
-                                                          (GDestroyNotify) g_object_unref);
-               g_simple_async_result_complete_in_idle (data->result);
-
-               return;
-       }
-
        gth_image_preloader_load (self->priv->preloader,
-                                 self->priv->file_data,
+                                 self->priv->image_changed ? GTH_MODIFIED_IMAGE : self->priv->file_data,
                                  -1,
                                  data->cancellable,
                                  original_image_ready_cb,
diff --git a/extensions/image_viewer/gth-image-viewer-page.h b/extensions/image_viewer/gth-image-viewer-page.h
index ee7f018..01dd37c 100644
--- a/extensions/image_viewer/gth-image-viewer-page.h
+++ b/extensions/image_viewer/gth-image-viewer-page.h
@@ -52,7 +52,8 @@ GdkPixbuf *        gth_image_viewer_page_get_pixbuf           (GthImageViewerPage      
*page)
 void               gth_image_viewer_page_set_pixbuf            (GthImageViewerPage      *page,
                                                                 GdkPixbuf               *pixbuf,
                                                                 gboolean                 add_to_history);
-cairo_surface_t *  gth_image_viewer_page_get_image             (GthImageViewerPage      *page);
+cairo_surface_t *  gth_image_viewer_page_get_current_image     (GthImageViewerPage      *page);
+cairo_surface_t *  gth_image_viewer_page_get_modified_image    (GthImageViewerPage      *page);
 void               gth_image_viewer_page_set_image             (GthImageViewerPage      *page,
                                                                 cairo_surface_t         *image,
                                                                 gboolean                 add_to_history);
diff --git a/gthumb/gth-image-preloader.c b/gthumb/gth-image-preloader.c
index 7a49b93..f4b3352 100644
--- a/gthumb/gth-image-preloader.c
+++ b/gthumb/gth-image-preloader.c
@@ -828,3 +828,19 @@ gth_image_preloader_set_modified_image (GthImagePreloader *self,
        cache_data->error = NULL;
        _gth_image_preloader_add_to_cache (self, cache_data);
 }
+
+
+cairo_surface_t *
+gth_image_preloader_get_modified_image (GthImagePreloader *self)
+{
+       GList *scan;
+
+       for (scan = self->priv->cache->head; scan; scan = scan->next) {
+               CacheData *cache_data = scan->data;
+
+               if ((cache_data->file_data == GTH_MODIFIED_IMAGE) && (cache_data->requested_size == -1))
+                       return gth_image_get_cairo_surface (cache_data->image);
+       }
+
+       return NULL;
+}
diff --git a/gthumb/gth-image-preloader.h b/gthumb/gth-image-preloader.h
index dec9506..78134fd 100644
--- a/gthumb/gth-image-preloader.h
+++ b/gthumb/gth-image-preloader.h
@@ -69,5 +69,6 @@ gboolean            gth_image_preloader_load_finish                    (GthImagePreloader   
           *
                                                                  GError                        **error);
 void                gth_image_preloader_set_modified_image      (GthImagePreloader              *self,
                                                                  cairo_surface_t                *image);
+cairo_surface_t *   gth_image_preloader_get_modified_image      (GthImagePreloader              *self);
 
 #endif /* GTH_IMAGE_PRELOADER_H */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]