diff options
-rw-r--r-- | image.c | 58 | ||||
-rw-r--r-- | image.h | 8 | ||||
-rw-r--r-- | noise2.c | 68 | ||||
-rw-r--r-- | pngtrans.c | 65 |
4 files changed, 72 insertions, 127 deletions
@@ -1,4 +1,5 @@ #include <glib.h> +#include <gtk/gtk.h> #include "image.h" complex_image_t * @@ -157,3 +158,60 @@ pixbuf_from_complex_image (complex_image_t *image, convert_type_t convert) return pixbuf; } +static gboolean +on_expose (GtkWidget *widget, GdkEventExpose *expose, gpointer data) +{ + GdkPixbuf *pixbuf = data; + int i, j; + int pwidth = gdk_pixbuf_get_width (pixbuf); + int pheight = gdk_pixbuf_get_height (pixbuf); + int dwidth, dheight; + + gdk_drawable_get_size (widget->window, &dwidth, &dheight); + + for (i = 0; i < dheight; i += pheight) + { + for (j = 0; j < dwidth; j += pwidth) + { + gdk_draw_pixbuf (widget->window, NULL, + pixbuf, 0, 0, j, i, pwidth, pheight, + GDK_RGB_DITHER_NONE, + 0, 0); + } + } + return TRUE; +} + +void +complex_image_show (const char *title, + complex_image_t *image, + convert_type_t convert) +{ + GtkWidget *window, *da; + GdkPixbuf *pixbuf; + int argc; + char **argv; + char *arg0 = g_strdup (title); + + argc = 1; + argv = (char **)&arg0; + + gtk_init (&argc, &argv); + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + + da = gtk_drawing_area_new (); + + gtk_container_add (GTK_CONTAINER (window), da); + + gtk_window_set_default_size (GTK_WINDOW (window), image->width * 2, image->height * 2); + + pixbuf = pixbuf_from_complex_image (image, convert); + + g_signal_connect (da, "expose_event", G_CALLBACK (on_expose), pixbuf); + g_signal_connect (window, "delete_event", G_CALLBACK (gtk_main_quit), NULL); + + gtk_widget_show_all (window); + + gtk_main (); +} @@ -32,4 +32,10 @@ typedef enum } convert_type_t; GdkPixbuf * -pixbuf_from_complex_image (complex_image_t *image, convert_type_t convert); +pixbuf_from_complex_image (complex_image_t *image, + convert_type_t convert); + +void +complex_image_show (const char *title, + complex_image_t *image, + convert_type_t convert); @@ -5,66 +5,6 @@ #include <gdk/gdkpixbuf.h> #include "fft.h" #include "image.h" - -#define SIZE 1024 -#define SIZE 1024 - -static gboolean -on_expose (GtkWidget *widget, GdkEventExpose *expose, gpointer data) -{ - GdkPixbuf *pixbuf = data; - int i, j; - int pwidth = gdk_pixbuf_get_width (pixbuf); - int pheight = gdk_pixbuf_get_height (pixbuf); - int dwidth, dheight; - - gdk_drawable_get_size (widget->window, &dwidth, &dheight); - - for (i = 0; i < dheight; i += pheight) - { - for (j = 0; j < dwidth; j += pwidth) - { - gdk_draw_pixbuf (widget->window, NULL, - pixbuf, 0, 0, j, i, pwidth, pheight, - GDK_RGB_DITHER_NONE, - 0, 0); - } - } - return TRUE; -} - -static void -display (const char *name, complex_image_t *image, convert_type_t type) -{ - GtkWidget *window, *da; - GdkPixbuf *pixbuf; - int argc; - char **argv; - char *arg0 = g_strdup (name); - - argc = 1; - argv = (char **)&arg0; - - gtk_init (&argc, &argv); - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - - da = gtk_drawing_area_new (); - - gtk_container_add (GTK_CONTAINER (window), da); - - gtk_window_set_default_size (GTK_WINDOW (window), SIZE, SIZE); - - pixbuf = pixbuf_from_complex_image (image, type); - - g_signal_connect (da, "expose_event", G_CALLBACK (on_expose), pixbuf); - g_signal_connect (window, "delete_event", G_CALLBACK (gtk_main_quit), NULL); - - gtk_widget_show_all (window); - - gtk_main (); -} - static void image_fft (complex_image_t *image) { @@ -160,7 +100,7 @@ main (int argc, char **argv) make_noise (image); - display ("test", image, CONVERT_RE); + complex_image_show ("test", image, CONVERT_RE); image_fft (image); @@ -168,15 +108,15 @@ main (int argc, char **argv) low_pass (low_passed, 2 * image->width); - display ("low passed", low_passed, CONVERT_MAG); + complex_image_show ("low passed", low_passed, CONVERT_MAG); complex_image_subtract (image, low_passed); - display ("ssubtracted", image, CONVERT_MAG); + complex_image_show ("ssubtracted", image, CONVERT_MAG); image_ifft (image); - display ("test", image, CONVERT_RE); + complex_image_show ("test", image, CONVERT_RE); return 0; } @@ -6,65 +6,6 @@ #include "fft.h" #include "image.h" -#define SIZE 1024 -#define SIZE 1024 - -static gboolean -on_expose (GtkWidget *widget, GdkEventExpose *expose, gpointer data) -{ - GdkPixbuf *pixbuf = data; - int i, j; - int pwidth = gdk_pixbuf_get_width (pixbuf); - int pheight = gdk_pixbuf_get_height (pixbuf); - int dwidth, dheight; - - gdk_drawable_get_size (widget->window, &dwidth, &dheight); - - for (i = 0; i < dheight; i += pheight) - { - for (j = 0; j < dwidth; j += pwidth) - { - gdk_draw_pixbuf (widget->window, NULL, - pixbuf, 0, 0, j, i, pwidth, pheight, - GDK_RGB_DITHER_NONE, - 0, 0); - } - } - return TRUE; -} - -static void -display (const char *name, complex_image_t *image, convert_type_t type) -{ - GtkWidget *window, *da; - GdkPixbuf *pixbuf; - int argc; - char **argv; - char *arg0 = g_strdup (name); - - argc = 1; - argv = (char **)&arg0; - - gtk_init (&argc, &argv); - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - - da = gtk_drawing_area_new (); - - gtk_container_add (GTK_CONTAINER (window), da); - - gtk_window_set_default_size (GTK_WINDOW (window), SIZE, SIZE); - - pixbuf = pixbuf_from_complex_image (image, type); - - g_signal_connect (da, "expose_event", G_CALLBACK (on_expose), pixbuf); - g_signal_connect (window, "delete_event", G_CALLBACK (gtk_main_quit), NULL); - - gtk_widget_show_all (window); - - gtk_main (); -} - static void image_fft (complex_image_t *image) { @@ -144,15 +85,15 @@ main (int argc, char **argv) image_fft (image); - display ("test", image, CONVERT_MAG); + complex_image_show ("test", image, CONVERT_MAG); low_pass (image, 2 * image->width); - display ("test", image, CONVERT_MAG); + complex_image_show ("test", image, CONVERT_MAG); image_ifft (image); - display ("test", image, CONVERT_RE); + complex_image_show ("test", image, CONVERT_RE); return 0; } |