[Xfce4-commits] <ristretto:ristretto-0.0> Re-implement image rotation to work with the new rendering method

Stephan Arts noreply at xfce.org
Sun Oct 23 19:14:10 CEST 2011


Updating branch refs/heads/ristretto-0.0
         to 1f40e6b21f7fcad72dd19442570ccdf12cc8a6a0 (commit)
       from 35499a94d25bde24f109593fe41b8f04b358202a (commit)

commit 1f40e6b21f7fcad72dd19442570ccdf12cc8a6a0
Author: Stephan Arts <stephan at thor.(none)>
Date:   Sat May 16 10:49:05 2009 +0200

    Re-implement image rotation to work with the new rendering method

 ChangeLog                         |   14 ++
 src/Makefile.am                   |    4 +-
 src/image.c                       |  152 +++------------------
 src/image.h                       |   12 +-
 src/image_transform_orientation.c |  278 -------------------------------------
 src/image_transform_orientation.h |   67 ---------
 src/image_transformation.c        |   72 ----------
 src/image_transformation.h        |   64 ---------
 src/main_window.c                 |   43 +++++--
 src/picture_viewer.c              |  217 +++++++++++++++++++++--------
 10 files changed, 229 insertions(+), 694 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 9b3d98b..bab5a96 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2009-05-16  Stephan Arts <stephan at xfce.org>
+
+	* src/image.c
+	  src/image.h
+	  src/main_window.c
+	  src/picture_viewer.c
+	  src/image_transformation.h
+	  src/image_transformation.c
+	  src/image_transform_orientation.h
+	  src/image_transform_orientation.c
+	  src/Makefile.am: Re-implement image-rotation, now it finally works with
+	  the new rendering method.
+
+
 2009-05-15  Stephan Arts <stephan at xfce.org>
 
 	* src/main_window.c: Set current_uri on open_folder dialog
diff --git a/src/Makefile.am b/src/Makefile.am
index 1fed4dc..8ef558d 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -4,8 +4,6 @@ ristretto_SOURCES = \
 	navigator.c navigator.h \
 	image.c image.h \
 	image_cache.c image_cache.h \
-	image_transformation.c image_transformation.h \
-	image_transform_orientation.c image_transform_orientation.h \
 	picture_viewer.c picture_viewer.h \
 	settings.c settings.h \
 	preferences_dialog.h preferences_dialog.c \
@@ -27,7 +25,7 @@ ristretto_CFLAGS = \
 	$(LIBXFCEGUI4_CFLAGS) \
 	-DDATADIR=\"$(datadir)\" \
 	-DSRCDIR=\"$(top_srcdir)\" \
-	-DLOCALEDIR=\"$(localedir)\"
+	-DLOCALEDIR=\"$(localedir)\" -pg
  
 ristretto_LDADD = \
 	$(GTK_LIBS) \
diff --git a/src/image.c b/src/image.c
index 62d3f3a..b175bbd 100644
--- a/src/image.c
+++ b/src/image.c
@@ -28,8 +28,6 @@
 
 #include "image.h"
 #include "image_cache.h"
-#include "image_transformation.h"
-#include "image_transform_orientation.h"
 
 #ifndef RSTTO_IMAGE_BUFFER_SIZE
 /* #define RSTTO_IMAGE_BUFFER_SIZE 1024 */
@@ -108,6 +106,7 @@ struct _RsttoImagePriv
 
     /* Image data */
     /**************/
+    RsttoImageOrientation orientation;
     GdkPixbufLoader *loader;
     ExifData *exif_data;
     GdkPixbuf *thumbnail;
@@ -119,8 +118,6 @@ struct _RsttoImagePriv
     GdkPixbufAnimation  *animation;
     GdkPixbufAnimationIter *iter;
     gint    animation_timeout_id;
-
-    GList *transformations;
 };
 
 
@@ -210,13 +207,6 @@ rstto_image_dispose (GObject *object)
         image->priv->pixbuf = NULL;
     }
 
-    if (image->priv->transformations)
-    {
-        g_list_foreach (image->priv->transformations, (GFunc)g_object_unref, NULL);
-        g_list_free (image->priv->transformations);
-        image->priv->transformations = NULL;
-    }
-
     if (image->priv->buffer)
     {
         g_free (image->priv->buffer);
@@ -240,7 +230,6 @@ rstto_image_new (GFile *file)
     RsttoImage *image = g_object_new (RSTTO_TYPE_IMAGE, NULL);
     gchar *file_path = g_file_get_path (file);
     ExifEntry *exif_entry = NULL;
-    RsttoImageTransformation *transformation = NULL;
     RsttoImageOrientation orientation;
 
     image->priv->file = file;
@@ -253,40 +242,13 @@ rstto_image_new (GFile *file)
     }
     if (exif_entry && exif_entry->data != NULL)
     {
-        orientation = exif_get_short (exif_entry->data, exif_data_get_byte_order (exif_entry->parent->parent));
-        switch (orientation)
-        {
-            default:
-            case RSTTO_IMAGE_ORIENT_NONE:
-                transformation = rstto_image_transform_orientation_new ( FALSE, FALSE, GDK_PIXBUF_ROTATE_NONE);
-                break;
-            case RSTTO_IMAGE_ORIENT_90:
-                transformation = rstto_image_transform_orientation_new ( FALSE, FALSE, GDK_PIXBUF_ROTATE_CLOCKWISE);
-                break;
-            case RSTTO_IMAGE_ORIENT_180:
-                transformation = rstto_image_transform_orientation_new ( FALSE, FALSE, GDK_PIXBUF_ROTATE_UPSIDEDOWN);
-                break;
-            case RSTTO_IMAGE_ORIENT_270:
-                transformation = rstto_image_transform_orientation_new ( FALSE, FALSE, GDK_PIXBUF_ROTATE_COUNTERCLOCKWISE);
-                break;
-            case RSTTO_IMAGE_ORIENT_FLIP_HORIZONTAL:
-                transformation = rstto_image_transform_orientation_new ( FALSE, TRUE, GDK_PIXBUF_ROTATE_NONE);
-                break;
-            case RSTTO_IMAGE_ORIENT_FLIP_VERTICAL:
-                transformation = rstto_image_transform_orientation_new ( TRUE, FALSE, GDK_PIXBUF_ROTATE_NONE);
-                break;
-            case RSTTO_IMAGE_ORIENT_TRANSPOSE:
-                transformation = rstto_image_transform_orientation_new ( FALSE, TRUE, GDK_PIXBUF_ROTATE_CLOCKWISE);
-                break;
-            case RSTTO_IMAGE_ORIENT_TRANSVERSE:
-                transformation = rstto_image_transform_orientation_new ( TRUE, FALSE, GDK_PIXBUF_ROTATE_CLOCKWISE);
-                break;
-        }
+        image->priv->orientation = exif_get_short (exif_entry->data, exif_data_get_byte_order (exif_entry->parent->parent));
+        if (image->priv->orientation == 0)
+            image->priv->orientation = RSTTO_IMAGE_ORIENT_NONE;
     }
-
-    if (transformation)
+    else
     {
-        rstto_image_push_transformation (image, G_OBJECT (transformation), NULL);
+        image->priv->orientation = RSTTO_IMAGE_ORIENT_NONE;
     }
 
     return image;
@@ -470,13 +432,6 @@ rstto_image_unload (RsttoImage *image)
         image->priv->iter = NULL;
     }
 
-    if (image->priv->transformations)
-    {
-        g_list_foreach (image->priv->transformations, (GFunc)g_object_unref, NULL);
-        g_list_free (image->priv->transformations);
-        image->priv->transformations = NULL;
-    }
-
 }
 
 
@@ -595,59 +550,6 @@ rstto_image_set_pixbuf (RsttoImage *image, GdkPixbuf *pixbuf)
 }
 
 /**
- * rstto_image_push_transformation:
- * @image          : 
- * @transformation :
- * @error          :
- *
- * Return value: TRUE on success.
- */
-gboolean
-rstto_image_push_transformation (RsttoImage *image, GObject *object, GError **error)
-{
-    g_return_val_if_fail (RSTTO_IS_IMAGE_TRANSFORMATION (object), FALSE);
-    RsttoImageTransformation *transformation = RSTTO_IMAGE_TRANSFORMATION (object);
-
-    g_object_ref (transformation);
-    /* Perform the transformation, on success add it to the stack */
-    if (transformation->transform (transformation, image) == TRUE)
-    {
-        image->priv->transformations = g_list_prepend (image->priv->transformations, transformation);
-        return TRUE;
-    }
-    g_object_unref (transformation);
-    return FALSE;
-}
-
-
-/**
- * rstto_image_pop_transformation:
- * @image          : 
- * @error          :
- *
- * Return value: TRUE on success.
- */
-gboolean
-rstto_image_pop_transformation (RsttoImage *image, GError **error)
-{
-    if (image->priv->transformations)
-    {
-        RsttoImageTransformation *transformation = image->priv->transformations->data;
-
-        if (transformation->revert (transformation, image) == TRUE)
-        {
-            /* remove the first item from the list */
-            image->priv->transformations = g_list_delete_link (image->priv->transformations, image->priv->transformations);
-            g_object_unref (transformation);
-            transformation = NULL;
-            return TRUE;
-        }
-    }
-    return FALSE;
-}
-
-
-/**
  * PRIVATE CALLBACKS 
  */
 
@@ -729,7 +631,6 @@ cb_rstto_image_closed (GdkPixbufLoader *loader, RsttoImage *image)
     g_return_if_fail (loader == image->priv->loader);
 
     GdkPixbuf *pixbuf = NULL;
-    RsttoImageTransformation *transformation = NULL;
 
     g_object_unref (image->priv->loader);
     image->priv->loader = NULL;
@@ -737,19 +638,6 @@ cb_rstto_image_closed (GdkPixbufLoader *loader, RsttoImage *image)
    
     if (image->priv->pixbuf != NULL)
     {
-        /* Get to the bottom of the transformation list */
-        GList *transform_iter = g_list_last (image->priv->transformations);
-        while (transform_iter != NULL)
-        {
-            transformation = transform_iter->data;
-
-            /* Transform source image */
-            transformation->transform (transformation, image);
-
-            transform_iter = g_list_previous (transform_iter);
-        }
-
-
         g_signal_emit(G_OBJECT(image), rstto_image_signals[RSTTO_IMAGE_SIGNAL_UPDATED], 0, image, NULL);
     }
 }
@@ -763,7 +651,6 @@ cb_rstto_image_closed (GdkPixbufLoader *loader, RsttoImage *image)
 static gboolean
 cb_rstto_image_update(RsttoImage *image)
 {
-    RsttoImageTransformation *transformation = NULL;
 
     if (image->priv->iter)
     {
@@ -777,20 +664,6 @@ cb_rstto_image_update(RsttoImage *image)
             }
 
             image->priv->pixbuf = gdk_pixbuf_animation_iter_get_pixbuf (image->priv->iter);
-            if (image->priv->pixbuf)
-            {
-                /* Get to the bottom of the transformation list */
-                GList *transform_iter = g_list_last (image->priv->transformations);
-                while (transform_iter != NULL)
-                {
-                    transformation = transform_iter->data;
-
-                    /* Transform source image */
-                    transformation->transform (transformation, image);
-
-                    transform_iter = g_list_previous (transform_iter);
-                }
-            }
         }
 
         gint time = gdk_pixbuf_animation_iter_get_delay_time (image->priv->iter);
@@ -822,3 +695,16 @@ rstto_image_get_size (RsttoImage *image)
     }
     return 0;
 }
+
+RsttoImageOrientation
+rstto_image_get_orientation (RsttoImage *image)
+{
+    return image->priv->orientation;
+}
+
+void
+rstto_image_set_orientation (RsttoImage *image, RsttoImageOrientation orientation)
+{
+    image->priv->orientation = orientation;
+    g_signal_emit (G_OBJECT(image), rstto_image_signals[RSTTO_IMAGE_SIGNAL_UPDATED], 0, image, NULL);
+}
diff --git a/src/image.h b/src/image.h
index 05b0846..87b7c27 100644
--- a/src/image.h
+++ b/src/image.h
@@ -81,15 +81,13 @@ GFile *rstto_image_get_file (RsttoImage *image);
 void rstto_image_unload (RsttoImage *image);
 gboolean rstto_image_load (RsttoImage *image, gboolean empty_cache, guint max_size, gboolean preload, GError **error);
 
-gboolean
-rstto_image_push_transformation (RsttoImage *image, GObject *transformation, GError **error);
-gboolean
-rstto_image_pop_transformation (RsttoImage *image, GError **error);
-
-/* Should only be used by image-transformation implementations */
-void rstto_image_set_pixbuf (RsttoImage *image, GdkPixbuf *pixbuf);
 guint rstto_image_get_size (RsttoImage *image);
 
+void
+rstto_image_set_orientation (RsttoImage *image, RsttoImageOrientation orientation);
+RsttoImageOrientation
+rstto_image_get_orientation (RsttoImage *image);
+
 G_END_DECLS
 
 #endif /* __RISTRETTO_IMAGE_H__ */
diff --git a/src/image_transform_orientation.c b/src/image_transform_orientation.c
deleted file mode 100644
index c984e20..0000000
--- a/src/image_transform_orientation.c
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
- *  Copyright (c) 2009 Stephan Arts <stephan at xfce.org>
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU Library General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-
-#include <glib.h>
-#include <gio/gio.h>
-#include <gdk/gdk.h>
-
-#include <libexif/exif-data.h>
-
-#include "image.h"
-#include "image_transformation.h"
-#include "image_transform_orientation.h"
-
-static void
-rstto_image_transform_orientation_init  (GObject *);
-static void
-rstto_image_transform_orientation_class_init (GObjectClass *);
-
-static void
-rstto_image_transform_orientation_get_property (GObject    *object,
-                                                guint       property_id,
-                                                GValue     *value,
-                                                GParamSpec *pspec);
-static void
-rstto_image_transform_orientation_set_property (GObject      *object,
-                                                guint         property_id,
-                                                const GValue *value,
-                                                GParamSpec   *pspec);
-
-static gboolean
-rstto_image_transform_orientation_transform (RsttoImageTransformation *transformation, RsttoImage *image);
-static gboolean
-rstto_image_transform_orientation_revert (RsttoImageTransformation *transformation, RsttoImage *image);
-
-enum
-{
-    PROP_0,
-    PROP_TRANSFORM_FLIP_VERTICAL,
-    PROP_TRANSFORM_FLIP_HORIZONTAL,
-    PROP_TRANSFORM_ROTATION
-};
-
-GType
-rstto_image_transform_orientation_get_type ()
-{
-    static GType rstto_image_transform_orientation_type = 0;
-
-    if (!rstto_image_transform_orientation_type)
-    {
-        static const GTypeInfo rstto_image_transform_orientation_info = 
-        {
-            sizeof (RsttoImageTransformOrientationClass),
-            (GBaseInitFunc) NULL,
-            (GBaseFinalizeFunc) NULL,
-            (GClassInitFunc) rstto_image_transform_orientation_class_init,
-            (GClassFinalizeFunc) NULL,
-            NULL,
-            sizeof (RsttoImageTransformOrientation),
-            0,
-            (GInstanceInitFunc) rstto_image_transform_orientation_init,
-            NULL
-        };
-
-        rstto_image_transform_orientation_type = g_type_register_static (RSTTO_TYPE_IMAGE_TRANSFORMATION, "RsttoImageTransformOrientation", &rstto_image_transform_orientation_info, 0);
-    }
-    return rstto_image_transform_orientation_type;
-}
-
-
-static void
-rstto_image_transform_orientation_init (GObject *object)
-{
-    RsttoImageTransformation *transformation = RSTTO_IMAGE_TRANSFORMATION (object);
-    
-    transformation->transform = rstto_image_transform_orientation_transform;
-    transformation->revert = rstto_image_transform_orientation_revert;
-}
-
-static void
-rstto_image_transform_orientation_class_init (GObjectClass *object_class)
-{
-    GParamSpec *pspec;
-
-    object_class->set_property = rstto_image_transform_orientation_set_property;
-    object_class->get_property = rstto_image_transform_orientation_get_property;
-
-    pspec = g_param_spec_boolean ("flip-vertical",
-                                  "",
-                                  "Indicates if this performs a vertical flip",
-                                  FALSE /* default value */,
-                                  G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE);
-
-    g_object_class_install_property (object_class,
-                                     PROP_TRANSFORM_FLIP_VERTICAL,
-                                     pspec);
-
-    pspec = g_param_spec_boolean ("flip-horizontal",
-                                  "",
-                                  "Indicates if this performs a horizontal flip",
-                                  FALSE /* default value */,
-                                  G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE);
-
-    g_object_class_install_property (object_class,
-                                     PROP_TRANSFORM_FLIP_HORIZONTAL,
-                                     pspec);
-
-
-    pspec = g_param_spec_uint ("rotation",
-                               "",
-                               "Indicates how it rotates",
-                               0 /* minimum */,
-                               360 /* maximum */,
-                               0 /* default value */,
-                               G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE);
-
-    g_object_class_install_property (object_class,
-                                     PROP_TRANSFORM_ROTATION,
-                                     pspec);
-
-}
-
-RsttoImageTransformation *
-rstto_image_transform_orientation_new (gboolean flip_vertical, 
-                                       gboolean flip_horizontal,
-                                       GdkPixbufRotation rotation)
-{
-    RsttoImageTransformation *transformation = g_object_new (RSTTO_TYPE_IMAGE_TRANSFORM_ORIENTATION, 
-                                                             "flip-vertical", flip_vertical,
-                                                             "flip-horizontal", flip_horizontal,
-                                                             "rotation", rotation,
-                                                             NULL);
-
-    return transformation;
-}
-
-static gboolean
-rstto_image_transform_orientation_transform (RsttoImageTransformation *transformation, RsttoImage *image)
-{
-    RsttoImageTransformOrientation *trans_orientation = RSTTO_IMAGE_TRANSFORM_ORIENTATION (transformation);
-    GdkPixbuf *tmp_pixbuf = NULL;
-
-    if (trans_orientation->flip_vertical)
-    {
-        tmp_pixbuf = rstto_image_get_pixbuf (image);       
-        if (tmp_pixbuf)
-        {
-            g_object_ref (tmp_pixbuf);
-            /* Flip vertically (pass FALSE to gdk_pixbuf_flip) */
-            rstto_image_set_pixbuf (image, gdk_pixbuf_flip (tmp_pixbuf, FALSE));
-            g_object_unref (tmp_pixbuf);
-        }
-    }   
-
-    if (trans_orientation->flip_horizontal)
-    {
-        tmp_pixbuf = rstto_image_get_pixbuf (image);       
-        if (tmp_pixbuf)
-        {
-            g_object_ref (tmp_pixbuf);
-            /* Flip horizontally (pass TRUE to gdk_pixbuf_flip) */
-            rstto_image_set_pixbuf (image, gdk_pixbuf_flip (tmp_pixbuf, TRUE));
-            g_object_unref (tmp_pixbuf);
-        }
-    }   
-
-    
-    tmp_pixbuf = rstto_image_get_pixbuf (image);       
-    if (tmp_pixbuf)
-    {
-        g_object_ref (tmp_pixbuf);
-        rstto_image_set_pixbuf (image, gdk_pixbuf_rotate_simple (tmp_pixbuf, (360+(trans_orientation->rotation))%360));
-        g_object_unref (tmp_pixbuf);
-    }
-
-    return TRUE;
-}
-
-static gboolean
-rstto_image_transform_orientation_revert (RsttoImageTransformation *transformation, RsttoImage *image)
-{
-    RsttoImageTransformOrientation *trans_orientation = RSTTO_IMAGE_TRANSFORM_ORIENTATION (transformation);
-    GdkPixbuf *tmp_pixbuf = NULL;
-
-    if (trans_orientation->flip_vertical)
-    {
-        tmp_pixbuf = rstto_image_get_pixbuf (image);       
-        if (tmp_pixbuf)
-        {
-            /* Flip vertically (pass FALSE to gdk_pixbuf_flip) */
-            rstto_image_set_pixbuf (image, gdk_pixbuf_flip (tmp_pixbuf, FALSE));
-            g_object_unref (tmp_pixbuf);
-        }
-    }   
-
-    if (trans_orientation->flip_horizontal)
-    {
-        tmp_pixbuf = rstto_image_get_pixbuf (image);       
-        if (tmp_pixbuf)
-        {
-            /* Flip horizontally (pass TRUE to gdk_pixbuf_flip) */
-            rstto_image_set_pixbuf (image, gdk_pixbuf_flip (tmp_pixbuf, TRUE));
-            g_object_unref (tmp_pixbuf);
-        }
-    }   
-
-    tmp_pixbuf = rstto_image_get_pixbuf (image);       
-    g_object_ref (tmp_pixbuf);
-    rstto_image_set_pixbuf (image, gdk_pixbuf_rotate_simple (tmp_pixbuf, 360-((360+(trans_orientation->rotation))%360)));
-    g_object_unref (tmp_pixbuf);
-
-    return TRUE;
-}
-
-static void
-rstto_image_transform_orientation_set_property (GObject      *object,
-                                                guint         property_id,
-                                                const GValue *value,
-                                                GParamSpec   *pspec)
-{
-    RsttoImageTransformOrientation *transformation = RSTTO_IMAGE_TRANSFORM_ORIENTATION (object);
-
-    switch (property_id)
-    {
-        case PROP_TRANSFORM_FLIP_VERTICAL:
-            transformation->flip_vertical = g_value_get_boolean (value);
-            break;
-        case PROP_TRANSFORM_FLIP_HORIZONTAL:
-            transformation->flip_horizontal = g_value_get_boolean (value);
-            break;
-        case PROP_TRANSFORM_ROTATION:
-            transformation->rotation = g_value_get_uint (value);
-            break;
-        default:
-            break;
-    }
-}
-
-
-static void
-rstto_image_transform_orientation_get_property (GObject    *object,
-                                                guint       property_id,
-                                                GValue     *value,
-                                                GParamSpec *pspec)
-{
-    RsttoImageTransformOrientation *transformation = RSTTO_IMAGE_TRANSFORM_ORIENTATION (object);
-
-    switch (property_id)
-    {
-        case PROP_TRANSFORM_FLIP_VERTICAL:
-            g_value_set_boolean (value, transformation->flip_vertical);
-            break;
-        case PROP_TRANSFORM_FLIP_HORIZONTAL:
-            g_value_set_boolean (value, transformation->flip_horizontal);
-            break;
-        case PROP_TRANSFORM_ROTATION:
-            g_value_set_uint (value, transformation->rotation);
-            break;
-        default:
-            break;
-    }
-}
diff --git a/src/image_transform_orientation.h b/src/image_transform_orientation.h
deleted file mode 100644
index 6604369..0000000
--- a/src/image_transform_orientation.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU Library General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef __RISTRETTO_IMAGE_TRANSFORM_ORIENTATION_H__
-#define __RISTRETTO_IMAGE_TRANSFORM_ORIENTATION_H__
-
-G_BEGIN_DECLS
-
-#define RSTTO_TYPE_IMAGE_TRANSFORM_ORIENTATION rstto_image_transform_orientation_get_type()
-
-#define RSTTO_IMAGE_TRANSFORM_ORIENTATION(obj)( \
-        G_TYPE_CHECK_INSTANCE_CAST ((obj), \
-                RSTTO_TYPE_IMAGE_TRANSFORM_ORIENTATION, \
-                RsttoImageTransformOrientation))
-
-#define RSTTO_IS_IMAGE_TRANSFORM_ORIENTATION(obj)( \
-        G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
-                RSTTO_TYPE_IMAGE_TRANSFORM_ORIENTATION))
-
-#define RSTTO_IMAGE_TRANSFORM_ORIENTATION_CLASS(klass)( \
-        G_TYPE_CHECK_CLASS_CAST ((klass), \
-                RSTTO_TYPE_IMAGE_TRANSFORM_ORIENTATION, \
-                RsttoImageTransformOrientationClass))
-
-#define RSTTO_IS_IMAGE_TRANSFORM_ORIENTATION_CLASS(klass)( \
-        G_TYPE_CHECK_CLASS_TYPE ((klass), \
-                RSTTO_TYPE_IMAGE_TRANSFORM_ORIENTATION()))
-
-typedef struct _RsttoImageTransformOrientation RsttoImageTransformOrientation;
-
-struct _RsttoImageTransformOrientation
-{
-    RsttoImageTransformation parent;
-
-    gboolean          flip_horizontal;
-    gboolean          flip_vertical;
-    GdkPixbufRotation rotation;
-};
-
-typedef struct _RsttoImageTransformOrientationClass RsttoImageTransformOrientationClass;
-
-struct _RsttoImageTransformOrientationClass
-{
-    RsttoImageTransformationClass parent_class;
-};
-
-RsttoImageTransformation *
-rstto_image_transform_orientation_new (gboolean flip_vertical, 
-                                       gboolean flip_horizontal,
-                                       GdkPixbufRotation rotation);
-
-G_END_DECLS
-
-#endif /* __RISTRETTO_IMAGE_TRANSFORM_ORIENTATION_H__ */
diff --git a/src/image_transformation.c b/src/image_transformation.c
deleted file mode 100644
index b7e350d..0000000
--- a/src/image_transformation.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- *  Copyright (c) 2009 Stephan Arts <stephan at xfce.org>
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU Library General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-
-#include <glib.h>
-#include <gio/gio.h>
-#include <gdk/gdk.h>
-
-#include <libexif/exif-data.h>
-
-#include "image.h"
-#include "image_transformation.h"
-
-static void
-rstto_image_transformation_init (GObject *);
-static void
-rstto_image_transformation_class_init (GObjectClass *);
-
-GType
-rstto_image_transformation_get_type ()
-{
-    static GType rstto_image_transformation_type = 0;
-
-    if (!rstto_image_transformation_type)
-    {
-        static const GTypeInfo rstto_image_transformation_info = 
-        {
-            sizeof (RsttoImageTransformationClass),
-            (GBaseInitFunc) NULL,
-            (GBaseFinalizeFunc) NULL,
-            (GClassInitFunc) rstto_image_transformation_class_init,
-            (GClassFinalizeFunc) NULL,
-            NULL,
-            sizeof (RsttoImageTransformation),
-            0,
-            (GInstanceInitFunc) rstto_image_transformation_init,
-            NULL
-        };
-
-        rstto_image_transformation_type = g_type_register_static (G_TYPE_OBJECT, "RsttoImageTransformation", &rstto_image_transformation_info, 0);
-    }
-    return rstto_image_transformation_type;
-}
-
-
-static void
-rstto_image_transformation_init (GObject *object)
-{
-
-}
-
-static void
-rstto_image_transformation_class_init (GObjectClass *object_class)
-{
-
-}
diff --git a/src/image_transformation.h b/src/image_transformation.h
deleted file mode 100644
index 29a1e9c..0000000
--- a/src/image_transformation.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU Library General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef __RISTRETTO_IMAGE_TRANSFORMATION_H__
-#define __RISTRETTO_IMAGE_TRANSFORMATION_H__
-
-G_BEGIN_DECLS
-
-#define RSTTO_TYPE_IMAGE_TRANSFORMATION rstto_image_transformation_get_type()
-
-#define RSTTO_IMAGE_TRANSFORMATION(obj)( \
-        G_TYPE_CHECK_INSTANCE_CAST ((obj), \
-                RSTTO_TYPE_IMAGE_TRANSFORMATION, \
-                RsttoImageTransformation))
-
-#define RSTTO_IS_IMAGE_TRANSFORMATION(obj)( \
-        G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
-                RSTTO_TYPE_IMAGE_TRANSFORMATION))
-
-#define RSTTO_IMAGE_TRANSFORMATION_CLASS(klass)( \
-        G_TYPE_CHECK_CLASS_CAST ((klass), \
-                RSTTO_TYPE_IMAGE_TRANSFORMATION, \
-                RsttoImageTransformationClass))
-
-#define RSTTO_IS_IMAGE_TRANSFORMATION_CLASS(klass)( \
-        G_TYPE_CHECK_CLASS_TYPE ((klass), \
-                RSTTO_TYPE_IMAGE_TRANSFORMATION()))
-
-typedef struct _RsttoImageTransformation RsttoImageTransformation;
-
-struct _RsttoImageTransformation
-{
-    GObject parent;
-
-    gboolean (*transform)(RsttoImageTransformation *, RsttoImage *);
-    gboolean (*revert)(RsttoImageTransformation *, RsttoImage *);
-};
-
-typedef struct _RsttoImageTransformationClass RsttoImageTransformationClass;
-
-struct _RsttoImageTransformationClass
-{
-    GObjectClass parent_class;
-};
-
-GType
-rstto_image_transformation_get_type ();
-
-G_END_DECLS
-
-#endif /* __RISTRETTO_IMAGE_TRANSFORMATION_H__ */
diff --git a/src/main_window.c b/src/main_window.c
index a0d273b..4e37b7e 100644
--- a/src/main_window.c
+++ b/src/main_window.c
@@ -28,9 +28,6 @@
 
 #include "image.h"
 
-#include "image_transformation.h"
-#include "image_transform_orientation.h"
-
 #include "settings.h"
 #include "navigator.h"
 #include "picture_viewer.h"
@@ -778,7 +775,6 @@ cb_rstto_main_window_zoom_out (GtkWidget *widget, RsttoMainWindow *window)
 static void
 cb_rstto_main_window_rotate_cw (GtkWidget *widget, RsttoMainWindow *window)
 {
-    RsttoImageTransformation *transform;
     RsttoImage *image = NULL;
 
     RsttoSettings *settings_manager = rstto_settings_new();
@@ -792,9 +788,23 @@ cb_rstto_main_window_rotate_cw (GtkWidget *widget, RsttoMainWindow *window)
 
     if (image)
     {
-        transform = rstto_image_transform_orientation_new ( FALSE, FALSE, GDK_PIXBUF_ROTATE_CLOCKWISE);
-        rstto_image_push_transformation (image, G_OBJECT (transform), NULL);
-        rstto_image_load (image, TRUE, g_value_get_uint (&max_size), FALSE, NULL);
+        switch (rstto_image_get_orientation (image))
+        {
+            case RSTTO_IMAGE_ORIENT_NONE:
+                rstto_image_set_orientation (image, RSTTO_IMAGE_ORIENT_270);
+                break;
+            case RSTTO_IMAGE_ORIENT_90:
+                rstto_image_set_orientation (image, RSTTO_IMAGE_ORIENT_NONE);
+                break;
+            case RSTTO_IMAGE_ORIENT_180:
+                rstto_image_set_orientation (image, RSTTO_IMAGE_ORIENT_90);
+                break;
+            case RSTTO_IMAGE_ORIENT_270:
+                rstto_image_set_orientation (image, RSTTO_IMAGE_ORIENT_180);
+                break;
+            default:
+                g_debug ("O: %d", rstto_image_get_orientation (image));
+        }
     }
 
     g_value_unset (&max_size);
@@ -810,7 +820,6 @@ cb_rstto_main_window_rotate_cw (GtkWidget *widget, RsttoMainWindow *window)
 static void
 cb_rstto_main_window_rotate_ccw (GtkWidget *widget, RsttoMainWindow *window)
 {
-    RsttoImageTransformation *transform;
     RsttoImage *image = NULL;
 
     RsttoSettings *settings_manager = rstto_settings_new();
@@ -824,9 +833,21 @@ cb_rstto_main_window_rotate_ccw (GtkWidget *widget, RsttoMainWindow *window)
 
     if (image)
     {
-        transform = rstto_image_transform_orientation_new ( FALSE, FALSE, GDK_PIXBUF_ROTATE_COUNTERCLOCKWISE);
-        rstto_image_push_transformation (image, G_OBJECT (transform), NULL);
-        rstto_image_load (image, TRUE, g_value_get_uint (&max_size), FALSE, NULL);
+        switch (rstto_image_get_orientation (image))
+        {
+            case RSTTO_IMAGE_ORIENT_NONE:
+                rstto_image_set_orientation (image, RSTTO_IMAGE_ORIENT_90);
+                break;
+            case RSTTO_IMAGE_ORIENT_90:
+                rstto_image_set_orientation (image, RSTTO_IMAGE_ORIENT_180);
+                break;
+            case RSTTO_IMAGE_ORIENT_180:
+                rstto_image_set_orientation (image, RSTTO_IMAGE_ORIENT_270);
+                break;
+            case RSTTO_IMAGE_ORIENT_270:
+                rstto_image_set_orientation (image, RSTTO_IMAGE_ORIENT_NONE);
+                break;
+        }
     }
     g_value_unset (&max_size);
 }
diff --git a/src/picture_viewer.c b/src/picture_viewer.c
index 59b6f30..c891798 100644
--- a/src/picture_viewer.c
+++ b/src/picture_viewer.c
@@ -730,8 +730,18 @@ rstto_picture_viewer_calculate_scale (RsttoPictureViewer *viewer)
 
     if (viewer->priv->image != NULL)
     {   
-        width = rstto_image_get_width (viewer->priv->image);
-        height = rstto_image_get_height (viewer->priv->image);
+        switch(rstto_image_get_orientation (viewer->priv->image))
+        {
+            default:
+                width = rstto_image_get_width (viewer->priv->image);
+                height = rstto_image_get_height (viewer->priv->image);
+                break;
+            case RSTTO_IMAGE_ORIENT_270:
+            case RSTTO_IMAGE_ORIENT_90:
+                height = rstto_image_get_width (viewer->priv->image);
+                width = rstto_image_get_height (viewer->priv->image);
+                break;
+        }
     }
 
     if (width > 0 && height > 0)
@@ -883,42 +893,85 @@ rstto_picture_viewer_calculate_adjustments (RsttoPictureViewer *viewer, gdouble
 
             image_scale = pixbuf_width / image_width;
 
-
-            if(viewer->hadjustment)
+            switch (rstto_image_get_orientation (viewer->priv->image))
             {
-                viewer->hadjustment->page_size = widget->allocation.width / image_scale;
-                viewer->hadjustment->upper = image_width * (scale / image_scale);
-                viewer->hadjustment->lower = 0;
-                viewer->hadjustment->step_increment = 1;
-                viewer->hadjustment->page_increment = 100;
-                if((viewer->hadjustment->value + viewer->hadjustment->page_size) > viewer->hadjustment->upper)
-                {
-                    viewer->hadjustment->value = viewer->hadjustment->upper - viewer->hadjustment->page_size;
-                    hadjustment_changed = TRUE;
-                }
-                if(viewer->hadjustment->value < viewer->hadjustment->lower)
-                {
-                    viewer->hadjustment->value = viewer->hadjustment->lower;
-                    hadjustment_changed = TRUE;
-                }
-            }
-            if(viewer->vadjustment)
-            {
-                viewer->vadjustment->page_size = widget->allocation.height / image_scale;
-                viewer->vadjustment->upper = image_height * (scale / image_scale);
-                viewer->vadjustment->lower = 0;
-                viewer->vadjustment->step_increment = 1;
-                viewer->vadjustment->page_increment = 100;
-                if((viewer->vadjustment->value + viewer->vadjustment->page_size) > viewer->vadjustment->upper)
-                {
-                    viewer->vadjustment->value = viewer->vadjustment->upper - viewer->vadjustment->page_size;
-                    vadjustment_changed = TRUE;
-                }
-                if(viewer->vadjustment->value < viewer->vadjustment->lower)
-                {
-                    viewer->vadjustment->value = viewer->vadjustment->lower;
-                    vadjustment_changed = TRUE;
-                }
+                default:
+                    if(viewer->hadjustment)
+                    {
+                        viewer->hadjustment->page_size = widget->allocation.width / image_scale;
+                        viewer->hadjustment->upper = image_width * (scale / image_scale);
+                        viewer->hadjustment->lower = 0;
+                        viewer->hadjustment->step_increment = 1;
+                        viewer->hadjustment->page_increment = 100;
+                        if((viewer->hadjustment->value + viewer->hadjustment->page_size) > viewer->hadjustment->upper)
+                        {
+                            viewer->hadjustment->value = viewer->hadjustment->upper - viewer->hadjustment->page_size;
+                            hadjustment_changed = TRUE;
+                        }
+                        if(viewer->hadjustment->value < viewer->hadjustment->lower)
+                        {
+                            viewer->hadjustment->value = viewer->hadjustment->lower;
+                            hadjustment_changed = TRUE;
+                        }
+                    }
+                    if(viewer->vadjustment)
+                    {
+                        viewer->vadjustment->page_size = widget->allocation.height / image_scale;
+                        viewer->vadjustment->upper = image_height * (scale / image_scale);
+                        viewer->vadjustment->lower = 0;
+                        viewer->vadjustment->step_increment = 1;
+                        viewer->vadjustment->page_increment = 100;
+                        if((viewer->vadjustment->value + viewer->vadjustment->page_size) > viewer->vadjustment->upper)
+                        {
+                            viewer->vadjustment->value = viewer->vadjustment->upper - viewer->vadjustment->page_size;
+                            vadjustment_changed = TRUE;
+                        }
+                        if(viewer->vadjustment->value < viewer->vadjustment->lower)
+                        {
+                            viewer->vadjustment->value = viewer->vadjustment->lower;
+                            vadjustment_changed = TRUE;
+                        }
+                    }
+                    break;
+                case RSTTO_IMAGE_ORIENT_270:
+                case RSTTO_IMAGE_ORIENT_90:
+                    if(viewer->hadjustment)
+                    {
+                        viewer->hadjustment->page_size = widget->allocation.width / image_scale;
+                        viewer->hadjustment->upper = image_height * (scale / image_scale);
+                        viewer->hadjustment->lower = 0;
+                        viewer->hadjustment->step_increment = 1;
+                        viewer->hadjustment->page_increment = 100;
+                        if((viewer->hadjustment->value + viewer->hadjustment->page_size) > viewer->hadjustment->upper)
+                        {
+                            viewer->hadjustment->value = viewer->hadjustment->upper - viewer->hadjustment->page_size;
+                            hadjustment_changed = TRUE;
+                        }
+                        if(viewer->hadjustment->value < viewer->hadjustment->lower)
+                        {
+                            viewer->hadjustment->value = viewer->hadjustment->lower;
+                            hadjustment_changed = TRUE;
+                        }
+                    }
+                    if(viewer->vadjustment)
+                    {
+                        viewer->vadjustment->page_size = widget->allocation.height / image_scale;
+                        viewer->vadjustment->upper = image_width * (scale / image_scale);
+                        viewer->vadjustment->lower = 0;
+                        viewer->vadjustment->step_increment = 1;
+                        viewer->vadjustment->page_increment = 100;
+                        if((viewer->vadjustment->value + viewer->vadjustment->page_size) > viewer->vadjustment->upper)
+                        {
+                            viewer->vadjustment->value = viewer->vadjustment->upper - viewer->vadjustment->page_size;
+                            vadjustment_changed = TRUE;
+                        }
+                        if(viewer->vadjustment->value < viewer->vadjustment->lower)
+                        {
+                            viewer->vadjustment->value = viewer->vadjustment->lower;
+                            vadjustment_changed = TRUE;
+                        }
+                    }
+                    break;
             }
 
             if (viewer->vadjustment && viewer->hadjustment)
@@ -956,6 +1009,7 @@ cb_rstto_picture_viewer_queued_repaint (RsttoPictureViewer *viewer)
 {
     GdkPixbuf *p_src_pixbuf = NULL;
     GdkPixbuf *p_tmp_pixbuf = NULL;
+    GdkPixbuf *p_tmp_pixbuf2 = NULL;
     gdouble *p_scale = NULL;
     gboolean *p_fit_to_screen= NULL;
     gdouble scale = 1;
@@ -981,17 +1035,6 @@ cb_rstto_picture_viewer_queued_repaint (RsttoPictureViewer *viewer)
                     pixbuf_width = (gdouble)gdk_pixbuf_get_width (p_src_pixbuf);
                     pixbuf_height = (gdouble)gdk_pixbuf_get_height (p_src_pixbuf);
 
-                    /** HACK HACK HACK
-                      * Because the image-dimensions do not get modified when the image is rotated,
-                      * we have to check here... and fix it ourselves
-                      */
-                    if ((((pixbuf_width / pixbuf_height) > 1) && ((image_width / image_height < 1))) ||
-                        (((pixbuf_width / pixbuf_height) < 1) && ((image_width / image_height > 1))))
-                    {
-                        gdouble tmp_width = image_width;
-                        image_width = image_height;
-                        image_height = tmp_width;
-                    }
                     image_scale = pixbuf_width / image_width;
                 }
                 break;
@@ -1000,17 +1043,6 @@ cb_rstto_picture_viewer_queued_repaint (RsttoPictureViewer *viewer)
                 if (p_src_pixbuf)
                 {
                     thumb_width = (gdouble)gdk_pixbuf_get_width (p_src_pixbuf);
-                    /** HACK HACK HACK
-                      * Because the image-dimensions do not get modified when the image is rotated,
-                      * we have to check here... and fix it ourselves
-                      */
-                    if ((((pixbuf_width / pixbuf_height) > 1) && ((image_width / image_height < 1))) ||
-                        (((pixbuf_width / pixbuf_height) < 1) && ((image_width / image_height > 1))))
-                    {
-                        gdouble tmp_width = image_width;
-                        image_width = image_height;
-                        image_height = tmp_width;
-                    }
                     thumb_scale = (thumb_width / image_width);
                 }
                 else
@@ -1046,10 +1078,76 @@ cb_rstto_picture_viewer_queued_repaint (RsttoPictureViewer *viewer)
         }
         if (p_src_pixbuf)
         {
+            gdouble x, y;
+
+            switch (rstto_image_get_orientation (viewer->priv->image))
+            {
+                default:
+                case RSTTO_IMAGE_ORIENT_NONE:
+                    x = viewer->hadjustment->value * image_scale;
+                    y = viewer->vadjustment->value * image_scale;
+                    p_tmp_pixbuf = gdk_pixbuf_new_subpixbuf (p_src_pixbuf,
+                                               (gint)(x/scale * thumb_scale * image_scale), 
+                                               (gint)(y/scale * thumb_scale * image_scale),
+                                               (gint)((widget->allocation.width / scale) < image_width?
+                                                      (widget->allocation.width / scale)*thumb_scale*image_scale:image_width*thumb_scale*image_scale),
+                                               (gint)((widget->allocation.height / scale) < image_height?
+                                                      (widget->allocation.height / scale)*image_scale*thumb_scale:image_height*thumb_scale*image_scale));
+                    break;
+                case RSTTO_IMAGE_ORIENT_90:
+                    x = viewer->vadjustment->value * image_scale;
+                    y = (viewer->hadjustment->upper - (viewer->hadjustment->value + viewer->hadjustment->page_size)) * image_scale;
+                    if (y < 0) y = 0;
+                    //y = viewer->hadjustment->value * image_scale;
+                    p_tmp_pixbuf = gdk_pixbuf_new_subpixbuf (p_src_pixbuf,
+                                               (gint)(x/scale * thumb_scale * image_scale), 
+                                               (gint)(y/scale * thumb_scale * image_scale),
+                                               (gint)((widget->allocation.height/ scale) < image_width?
+                                                      (widget->allocation.height/ scale)*thumb_scale*image_scale:image_width*thumb_scale*image_scale),
+                                               (gint)((widget->allocation.width/ scale) < image_height?
+                                                      (widget->allocation.width/ scale)*image_scale*thumb_scale:image_height*thumb_scale*image_scale));
+                    p_tmp_pixbuf2 = gdk_pixbuf_rotate_simple (p_tmp_pixbuf, GDK_PIXBUF_ROTATE_CLOCKWISE);
+                    g_object_unref (p_tmp_pixbuf);
+                    p_tmp_pixbuf = p_tmp_pixbuf2;
+                    break;
+                case RSTTO_IMAGE_ORIENT_180:
+                    x = (viewer->vadjustment->upper - (viewer->vadjustment->value + viewer->vadjustment->page_size)) * image_scale;
+                    if (x < 0) x = 0;
+                    y = (viewer->hadjustment->upper - (viewer->hadjustment->value + viewer->hadjustment->page_size)) * image_scale;
+                    if (y < 0) y = 0;
+                    //y = viewer->hadjustment->value * image_scale;
+                    p_tmp_pixbuf = gdk_pixbuf_new_subpixbuf (p_src_pixbuf,
+                                               (gint)(x/scale * thumb_scale * image_scale), 
+                                               (gint)(y/scale * thumb_scale * image_scale),
+                                               (gint)((widget->allocation.height/ scale) < image_width?
+                                                      (widget->allocation.height/ scale)*thumb_scale*image_scale:image_width*thumb_scale*image_scale),
+                                               (gint)((widget->allocation.width/ scale) < image_height?
+                                                      (widget->allocation.width/ scale)*image_scale*thumb_scale:image_height*thumb_scale*image_scale));
+                    p_tmp_pixbuf2 = gdk_pixbuf_rotate_simple (p_tmp_pixbuf, GDK_PIXBUF_ROTATE_UPSIDEDOWN);
+                    g_object_unref (p_tmp_pixbuf);
+                    p_tmp_pixbuf = p_tmp_pixbuf2;
+                    break;
+                case RSTTO_IMAGE_ORIENT_270:
+                    x = (viewer->vadjustment->upper - (viewer->vadjustment->value + viewer->vadjustment->page_size)) * image_scale;
+                    if (x < 0) x = 0;
+                    y = viewer->hadjustment->value * image_scale;
+                    p_tmp_pixbuf = gdk_pixbuf_new_subpixbuf (p_src_pixbuf,
+                                               (gint)(x/scale * thumb_scale * image_scale), 
+                                               (gint)(y/scale * thumb_scale * image_scale),
+                                               (gint)((widget->allocation.height/ scale) < image_width?
+                                                      (widget->allocation.height/ scale)*thumb_scale*image_scale:image_width*thumb_scale*image_scale),
+                                               (gint)((widget->allocation.width/ scale) < image_height?
+                                                      (widget->allocation.width/ scale)*image_scale*thumb_scale:image_height*thumb_scale*image_scale));
+                    p_tmp_pixbuf2 = gdk_pixbuf_rotate_simple (p_tmp_pixbuf, GDK_PIXBUF_ROTATE_COUNTERCLOCKWISE);
+                    g_object_unref (p_tmp_pixbuf);
+                    p_tmp_pixbuf = p_tmp_pixbuf2;
+                    break;
+            }
             /**
              *  tmp_scale is the factor between the original image and the thumbnail,
              *  when looking at the actual image, tmp_scale == 1.0
              */
+            /*
             gdouble x = viewer->hadjustment->value * image_scale;
             gdouble y = viewer->vadjustment->value * image_scale;
 
@@ -1060,6 +1158,7 @@ cb_rstto_picture_viewer_queued_repaint (RsttoPictureViewer *viewer)
                                                       (widget->allocation.width / scale)*thumb_scale*image_scale:image_width*thumb_scale*image_scale),
                                                (gint)((widget->allocation.height / scale) < image_height?
                                                       (widget->allocation.height / scale)*image_scale*thumb_scale:image_height*thumb_scale*image_scale));
+            */
 
             if(p_tmp_pixbuf)
             {


More information about the Xfce4-commits mailing list