summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <ssp@redhat.com>2011-08-01 20:31:48 -0400
committerSøren Sandmann Pedersen <ssp@redhat.com>2011-08-01 20:31:48 -0400
commit88898b8860060e548a84ace736f2032af6a46d25 (patch)
treee5378d916c3a7d2af8a6b0c619c528d5a61c2ff9
parentf1457fcec94aac20d458218021902d64089e93ab (diff)
Move display functionality to image.[ch]
-rw-r--r--image.c58
-rw-r--r--image.h8
-rw-r--r--noise2.c68
-rw-r--r--pngtrans.c65
4 files changed, 72 insertions, 127 deletions
diff --git a/image.c b/image.c
index 59ee9d7..7b64513 100644
--- a/image.c
+++ b/image.c
@@ -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 ();
+}
diff --git a/image.h b/image.h
index c2aee71..1363eed 100644
--- a/image.h
+++ b/image.h
@@ -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);
diff --git a/noise2.c b/noise2.c
index 7e87fec..b308ec2 100644
--- a/noise2.c
+++ b/noise2.c
@@ -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;
}
diff --git a/pngtrans.c b/pngtrans.c
index e3558a0..fea0160 100644
--- a/pngtrans.c
+++ b/pngtrans.c
@@ -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;
}