]> Pileus Git - ~andy/gtk/commitdiff
Don't scale images that are small enough to fit. Avoid using incompatibly
authorMorten Welinder <terra@gnome.org>
Tue, 2 Mar 2004 17:03:04 +0000 (17:03 +0000)
committerMorten Welinder <mortenw@src.gnome.org>
Tue, 2 Mar 2004 17:03:04 +0000 (17:03 +0000)
2004-03-02  Morten Welinder  <terra@gnome.org>

* tests/testfilechooser.c (size_prepared_cb): Don't scale images
that are small enough to fit.  Avoid using incompatibly typed data
pointer.

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
tests/testfilechooser.c

index adaeafdcdeda2c632e28dd2f6fc1561e45308126..be4cdd762ee7039686096ce60ea58a60111da022 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2004-03-02  Morten Welinder  <terra@gnome.org>
 
+       * tests/testfilechooser.c (size_prepared_cb): Don't scale images
+       that are small enough to fit.  Avoid using incompatibly typed data
+       pointer.
+
        * gtk/gtkfilechooserdefault.c
        (gtk_file_chooser_default_get_resizable_hints): Test the
        resize_horizontally pointer, not the deferenced pointer.
index adaeafdcdeda2c632e28dd2f6fc1561e45308126..be4cdd762ee7039686096ce60ea58a60111da022 100644 (file)
@@ -1,5 +1,9 @@
 2004-03-02  Morten Welinder  <terra@gnome.org>
 
+       * tests/testfilechooser.c (size_prepared_cb): Don't scale images
+       that are small enough to fit.  Avoid using incompatibly typed data
+       pointer.
+
        * gtk/gtkfilechooserdefault.c
        (gtk_file_chooser_default_get_resizable_hints): Test the
        resize_horizontally pointer, not the deferenced pointer.
index adaeafdcdeda2c632e28dd2f6fc1561e45308126..be4cdd762ee7039686096ce60ea58a60111da022 100644 (file)
@@ -1,5 +1,9 @@
 2004-03-02  Morten Welinder  <terra@gnome.org>
 
+       * tests/testfilechooser.c (size_prepared_cb): Don't scale images
+       that are small enough to fit.  Avoid using incompatibly typed data
+       pointer.
+
        * gtk/gtkfilechooserdefault.c
        (gtk_file_chooser_default_get_resizable_hints): Test the
        resize_horizontally pointer, not the deferenced pointer.
index adaeafdcdeda2c632e28dd2f6fc1561e45308126..be4cdd762ee7039686096ce60ea58a60111da022 100644 (file)
@@ -1,5 +1,9 @@
 2004-03-02  Morten Welinder  <terra@gnome.org>
 
+       * tests/testfilechooser.c (size_prepared_cb): Don't scale images
+       that are small enough to fit.  Avoid using incompatibly typed data
+       pointer.
+
        * gtk/gtkfilechooserdefault.c
        (gtk_file_chooser_default_get_resizable_hints): Test the
        resize_horizontally pointer, not the deferenced pointer.
index adaeafdcdeda2c632e28dd2f6fc1561e45308126..be4cdd762ee7039686096ce60ea58a60111da022 100644 (file)
@@ -1,5 +1,9 @@
 2004-03-02  Morten Welinder  <terra@gnome.org>
 
+       * tests/testfilechooser.c (size_prepared_cb): Don't scale images
+       that are small enough to fit.  Avoid using incompatibly typed data
+       pointer.
+
        * gtk/gtkfilechooserdefault.c
        (gtk_file_chooser_default_get_resizable_hints): Test the
        resize_horizontally pointer, not the deferenced pointer.
index 8b96c3fad46ce3986e4e29054dfdf61257d804d1..9fbb270783006d33799643480309b2a9dc35e0ec 100644 (file)
@@ -82,7 +82,7 @@ response_cb (GtkDialog *dialog,
     }
   else
     g_print ("Dialog was closed\n");
-  
+
   gtk_main_quit ();
 }
 
@@ -138,20 +138,19 @@ static void
 size_prepared_cb (GdkPixbufLoader *loader, 
                  int              width,
                  int              height,
-                 gpointer         data)
+                 int             *data)
 {
-       struct {
-               int width;
-               int height;
-       } *info = data;
-
-       if ((double)height * (double)info->width >
-           (double)width * (double)info->height) {
-               width = 0.5 + (double)width * (double)info->height / (double)height;
-               height = info->height;
+       int des_width = data[0];
+       int des_height = data[1];
+
+       if (des_height >= height && des_width >= width) {
+               /* Nothing */
+       } else if ((double)height * des_width > (double)width * des_height) {
+               width = 0.5 + (double)width * des_height / (double)height;
+               height = des_height;
        } else {
-               height = 0.5 + (double)height * (double)info->width / (double)width;
-               width = info->width;
+               height = 0.5 + (double)height * des_width / (double)width;
+               width = des_width;
        }
 
        gdk_pixbuf_loader_set_size (loader, width, height);
@@ -165,10 +164,7 @@ my_new_from_file_at_size (const char *filename,
 {
        GdkPixbufLoader *loader;
        GdkPixbuf       *pixbuf;
-       struct {
-               int width;
-               int height;
-       } info;
+       int              info[2];
        struct stat st;
 
        guchar buffer [4096];
@@ -204,9 +200,9 @@ my_new_from_file_at_size (const char *filename,
 #ifdef DONT_PRESERVE_ASPECT
        gdk_pixbuf_loader_set_size (loader, width, height);
 #else
-       info.width = width;
-       info.height = height;
-       g_signal_connect (loader, "size-prepared", G_CALLBACK (&size_prepared_cb), &info);
+       info[0] = width;
+       info[1] = height;
+       g_signal_connect (loader, "size-prepared", G_CALLBACK (size_prepared_cb), info);
 #endif 
 
        while (!feof (f)) {