diff options
author | Perberos <[email protected]> | 2011-12-01 22:24:23 -0300 |
---|---|---|
committer | Perberos <[email protected]> | 2011-12-01 22:24:23 -0300 |
commit | 0e004c696b0e68b2cff37a4c3315b022a35eaf43 (patch) | |
tree | 43261e815529cb9518ed7be37af13b846af8b26b /test/test-eel-pixbuf-scale.c | |
download | caja-0e004c696b0e68b2cff37a4c3315b022a35eaf43.tar.bz2 caja-0e004c696b0e68b2cff37a4c3315b022a35eaf43.tar.xz |
moving from https://github.com/perberos/mate-desktop-environment
Diffstat (limited to 'test/test-eel-pixbuf-scale.c')
-rw-r--r-- | test/test-eel-pixbuf-scale.c | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/test/test-eel-pixbuf-scale.c b/test/test-eel-pixbuf-scale.c new file mode 100644 index 00000000..485c922f --- /dev/null +++ b/test/test-eel-pixbuf-scale.c @@ -0,0 +1,83 @@ +#include "test.h" + +#include <eel/eel-gdk-pixbuf-extensions.h> + +#include <sys/time.h> + + +#define N_SCALES 100 + +#define DEST_WIDTH 32 +#define DEST_HEIGHT 32 + +int +main (int argc, char* argv[]) +{ + GdkPixbuf *pixbuf, *scaled; + GError *error; + struct timeval t1, t2; + int i; + + test_init (&argc, &argv); + + if (argc != 2) { + printf ("Usage: test <image filename>\n"); + exit (1); + } + + error = NULL; + pixbuf = gdk_pixbuf_new_from_file (argv[1], &error); + + if (pixbuf == NULL) { + printf ("error loading pixbuf: %s\n", error->message); + exit (1); + } + + printf ("scale factors: %f, %f\n", + (double)gdk_pixbuf_get_width(pixbuf)/DEST_WIDTH, + (double)gdk_pixbuf_get_height(pixbuf)/DEST_HEIGHT); + + gettimeofday(&t1, NULL); + for (i = 0; i < N_SCALES; i++) { + scaled = eel_gdk_pixbuf_scale_down (pixbuf, DEST_WIDTH, DEST_HEIGHT); + g_object_unref (scaled); + } + gettimeofday(&t2, NULL); + g_print ("Time for eel_gdk_pixbuf_scale_down: %ld msecs\n", + (t2.tv_sec - t1.tv_sec) * 1000 + (t2.tv_usec - t1.tv_usec) / 1000); + + + + gettimeofday(&t1, NULL); + for (i = 0; i < N_SCALES; i++) { + scaled = gdk_pixbuf_scale_simple (pixbuf, DEST_WIDTH, DEST_HEIGHT, GDK_INTERP_NEAREST); + g_object_unref (scaled); + } + gettimeofday(&t2, NULL); + g_print ("Time for INTERP_NEAREST: %ld msecs\n", + (t2.tv_sec - t1.tv_sec) * 1000 + (t2.tv_usec - t1.tv_usec) / 1000); + + + gettimeofday(&t1, NULL); + for (i = 0; i < N_SCALES; i++) { + scaled = gdk_pixbuf_scale_simple (pixbuf, DEST_WIDTH, DEST_HEIGHT, GDK_INTERP_BILINEAR); + g_object_unref (scaled); + } + gettimeofday(&t2, NULL); + g_print ("Time for INTERP_BILINEAR: %ld msecs\n", + (t2.tv_sec - t1.tv_sec) * 1000 + (t2.tv_usec - t1.tv_usec) / 1000); + + scaled = eel_gdk_pixbuf_scale_down (pixbuf, DEST_WIDTH, DEST_HEIGHT); + gdk_pixbuf_save (scaled, "eel_scaled.png", "png", NULL, NULL); + g_object_unref (scaled); + + scaled = gdk_pixbuf_scale_simple (pixbuf, DEST_WIDTH, DEST_HEIGHT, GDK_INTERP_NEAREST); + gdk_pixbuf_save (scaled, "nearest_scaled.png", "png", NULL, NULL); + g_object_unref (scaled); + + scaled = gdk_pixbuf_scale_simple (pixbuf, DEST_WIDTH, DEST_HEIGHT, GDK_INTERP_BILINEAR); + gdk_pixbuf_save (scaled, "bilinear_scaled.png", "png", NULL, NULL); + g_object_unref (scaled); + + return 0; +} |