Updating branch refs/heads/ristretto-0.0 to 20f7ffbc978263b6dff3a6ac5040909a38f9b402 (commit) from 41f49ce624d31417b35e1f8b171148fda8ca5269 (commit)
commit 20f7ffbc978263b6dff3a6ac5040909a38f9b402 Author: Stephan Arts <step...@xfce.org> Date: Thu Apr 30 23:30:32 2009 +0200 Implement hack to check if the image has been rotated ChangeLog | 6 ++++ src/picture_viewer.c | 65 +++++++++++++++++++++++++++++++++----------------- 2 files changed, 49 insertions(+), 22 deletions(-) diff --git a/ChangeLog b/ChangeLog index e690db2..b8c1401 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2009-04-30 Stephan Arts <step...@xfce.org> + * src/picture_viewer.c: Implement a hack to check if the pixbuf has + been rotated. + + +2009-04-30 Stephan Arts <step...@xfce.org> + * src/main_window.c src/main_window_ui.xml: Add Sticky button to the fullscreen-toolbar. diff --git a/src/picture_viewer.c b/src/picture_viewer.c index 85c5eb8..59b6f30 100644 --- a/src/picture_viewer.c +++ b/src/picture_viewer.c @@ -972,31 +972,52 @@ cb_rstto_picture_viewer_queued_repaint (RsttoPictureViewer *viewer) image_width = (gdouble)rstto_image_get_width (viewer->priv->image); image_height = (gdouble)rstto_image_get_height (viewer->priv->image); - p_src_pixbuf = rstto_image_get_pixbuf (viewer->priv->image); - if (p_src_pixbuf) + switch (viewer->priv->state) { - pixbuf_width = (gdouble)gdk_pixbuf_get_width (p_src_pixbuf); - pixbuf_height = (gdouble)gdk_pixbuf_get_height (p_src_pixbuf); - - image_scale = pixbuf_width / image_width; - } - if (viewer->priv->state != RSTTO_PICTURE_VIEWER_STATE_NORMAL) - { - switch (viewer->priv->state) - { - case RSTTO_PICTURE_VIEWER_STATE_PREVIEW: - p_src_pixbuf = rstto_image_get_thumbnail (viewer->priv->image); - if (p_src_pixbuf) + case RSTTO_PICTURE_VIEWER_STATE_NORMAL: + p_src_pixbuf = rstto_image_get_pixbuf (viewer->priv->image); + if (p_src_pixbuf) + { + 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)))) { - thumb_width = (gdouble)gdk_pixbuf_get_width (p_src_pixbuf); - thumb_scale = (thumb_width / image_width); + gdouble tmp_width = image_width; + image_width = image_height; + image_height = tmp_width; } - else - return; - break; - default: - break; - } + image_scale = pixbuf_width / image_width; + } + break; + case RSTTO_PICTURE_VIEWER_STATE_PREVIEW: + p_src_pixbuf = rstto_image_get_thumbnail (viewer->priv->image); + 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 + return; + break; + default: + break; } p_scale = g_object_get_data (G_OBJECT (viewer->priv->image), "viewer-scale"); _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits