Mercurial > geeqie
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(); +} + +