summaryrefslogtreecommitdiff
path: root/src/eog-image-jpeg.c
diff options
context:
space:
mode:
authorLucas Rocha <lucasr@gnome.org>2007-09-09 13:31:53 +0000
committerLucas Almeida Rocha <lucasr@src.gnome.org>2007-09-09 13:31:53 +0000
commit9ae5c5f8ae20c00de69a0f724f66c23a56845e80 (patch)
tree72cdc68af2c4e2b3690a2530c9c1f589b7416435 /src/eog-image-jpeg.c
parentedfc068f3b9f7ef0964f304f5fb969b2066f4298 (diff)
downloadeog-9ae5c5f8ae20c00de69a0f724f66c23a56845e80.tar.gz
take the auto-orientation into account before saving image. added
2007-09-09 Lucas Rocha <lucasr@gnome.org> * src/eog-image-jpeg.c (init_transform_info): take the auto-orientation into account before saving image. * src/eog-image-private.h: added "trans_autorotate" attribute. * src/eog-image.c (eog_image_dispose, eog_image_init, eog_image_needs_transformation, eog_image_apply_transformations, eog_image_real_autorotate, eog_image_reset_modifications): create separate instance of EogTransform for the auto-orientation in order to avoid wrong orientation of thumbnails. Fixes bug #465583. svn path=/trunk/; revision=4069
Diffstat (limited to 'src/eog-image-jpeg.c')
-rw-r--r--src/eog-image-jpeg.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/eog-image-jpeg.c b/src/eog-image-jpeg.c
index 539d5267..ed9019af 100644
--- a/src/eog-image-jpeg.c
+++ b/src/eog-image-jpeg.c
@@ -114,13 +114,27 @@ output_message_handler (j_common_ptr cinfo)
static void
init_transform_info (EogImage *image, jpeg_transform_info *info)
{
- JXFORM_CODE trans_code = JXFORM_NONE;
+ EogImagePrivate *priv;
+ EogTransform *composition = NULL;
EogTransformType transformation;
+ JXFORM_CODE trans_code = JXFORM_NONE;
g_return_if_fail (EOG_IS_IMAGE (image));
- if (image->priv->trans != NULL) {
- transformation = eog_transform_get_transform_type (image->priv->trans);
+ priv = image->priv;
+
+ if (priv->trans != NULL && priv->trans_autorotate != NULL) {
+ composition = eog_transform_compose (priv->trans,
+ priv->trans_autorotate);
+ } else if (priv->trans != NULL) {
+ composition = g_object_ref (priv->trans);
+ } else if (priv->trans_autorotate != NULL) {
+ composition = g_object_ref (priv->trans_autorotate);
+ }
+
+ if (composition != NULL) {
+ transformation = eog_transform_get_transform_type (composition);
+
switch (transformation) {
case EOG_TRANSFORM_ROT_90:
trans_code = JXFORM_ROT_90;
@@ -146,8 +160,9 @@ init_transform_info (EogImage *image, jpeg_transform_info *info)
info->transform = trans_code;
info->trim = FALSE;
info->force_grayscale = FALSE;
-}
+ g_object_unref (composition);
+}
static gboolean
_save_jpeg_as_jpeg (EogImage *image, const char *file, EogImageSaveInfo *source,