diff options
author | Morten Welinder <terra@gnome.org> | 2004-03-02 17:03:04 +0000 |
---|---|---|
committer | Morten Welinder <mortenw@src.gnome.org> | 2004-03-02 17:03:04 +0000 |
commit | e4cec76b6d34a99522a8c9e3573a0b7c94feee2d (patch) | |
tree | b12a0316a0c16d840df895253b14c422849d1b94 /tests/testfilechooser.c | |
parent | c0b55fe0d8e4893b2799ea1c15ea72fe73451164 (diff) | |
download | gtk+-e4cec76b6d34a99522a8c9e3573a0b7c94feee2d.tar.gz |
Don't scale images that are small enough to fit. Avoid using incompatibly
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.
Diffstat (limited to 'tests/testfilechooser.c')
-rw-r--r-- | tests/testfilechooser.c | 36 |
1 files changed, 16 insertions, 20 deletions
diff --git a/tests/testfilechooser.c b/tests/testfilechooser.c index 8b96c3fad4..9fbb270783 100644 --- a/tests/testfilechooser.c +++ b/tests/testfilechooser.c @@ -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)) { |