diff src/image.c @ 3:c0e337a01cb7

0.8.0
author gqview
date Thu, 13 Apr 2000 12:55:19 +0000
parents b3e0e515fabf
children e149abcda4eb
line wrap: on
line diff
--- a/src/image.c	Thu Apr 13 12:53:03 2000 +0000
+++ b/src/image.c	Thu Apr 13 12:55:19 2000 +0000
@@ -1,6 +1,6 @@
 /*
  * GQview image viewer
- * (C)1999 John Ellis
+ * (C)2000 John Ellis
  *
  * Author: John Ellis
  *
@@ -9,6 +9,7 @@
 #include "gqview.h"
 #include "image.h"
 #include "icons/img_unknown.xpm"
+#include <gdk/gdkx.h>
 
 static gchar *zoom_as_text(gint zoom, gfloat scale);
 static void set_zoom_label(GtkWidget *label, gint zoom, gfloat scale);
@@ -737,6 +738,7 @@
 void image_area_free(ImageWindow *imd)
 {
 	g_free(imd->image_path);
+	g_free(imd->title);
 
 	if (imd->image_pixmap) gdk_imlib_free_pixmap(imd->image_pixmap);
 	if (imd->image_data) gdk_imlib_destroy_image(imd->image_data);
@@ -771,3 +773,40 @@
 	return zoom;
 }
 
+/*
+ *-----------------------------------------------------------------------------
+ * image widget misc utils
+ *-----------------------------------------------------------------------------
+ */ 
+
+void image_area_to_root(ImageWindow *imd, gint scaled)
+{                                                                               
+	GdkVisual *gdkvisual;
+	GdkWindow *rootwindow;
+	GdkPixmap *pixmap;
+
+	if (!imd || !imd->image_data) return;
+
+
+	rootwindow = (GdkWindow *) &gdk_root_parent;	/* hmm, don't know, correct? */
+	gdkvisual = gdk_window_get_visual(rootwindow);
+	if (gdkvisual != gdk_imlib_get_visual()) return;
+
+	if (scaled)
+		{
+		gdk_imlib_render(imd->image_data, gdk_screen_width(), gdk_screen_height());
+		}
+	else
+		{
+		gdk_imlib_render(imd->image_data, imd->width, imd->height);
+		}
+
+	pixmap = gdk_imlib_move_image(imd->image_data);
+	gdk_window_set_back_pixmap(rootwindow, pixmap, FALSE);
+	gdk_window_clear(rootwindow);
+	gdk_imlib_free_pixmap(pixmap);
+
+	gdk_flush();
+}
+
+