Electronics & Programming

develissimo

Open Source electronics development and programming

  • You are not logged in.
  • Root
  • » GTK+
  • » Fwd: Can't copy the right image from window [RSS Feed]

#1 June 18, 2010 12:07:46

Tigran P.
Registered: 2009-11-02
Reputation: +  0  -
Profile   Send e-mail  

Fwd: Can't copy the right image from window


Hi, i tried to copy from the GdkWindow an image with the function
gdk_drawable_copy_to_image() but everytime i get different images under
Ubuntu with gnome, in KDE it allways copied the right image . I tried to
set USE_XFT = 0 to disable antialiasing, but it didn't help.

Please look at the attached file. Use this command to compile:
gcc `pkg-config --cflags gtk+-2.0 --libs gtk+-2.0 glib-2.0 gthread-2.0`
copy_from_window.c

The image saved in window_image.jpg doesn't match with drawn on the window
image.


--
Tigran Piloyan

Linux Verification Center, ISPRAS, RAU
web:http://www.linuxtesting.orge-mail: tigran.pilo***@*inuxtesting.org#include <gtk/gtk.h>
#include <glib.h>
#include <stdio.h>

int main (int argc, char **argv)
{
GdkWindow *window = NULL;
GdkWindowAttr attr;
GdkRectangle rectangle;
GdkColormap *colormap = NULL;
GdkImage *image = NULL;
GdkGC *gc = NULL;
GdkColor color;
GError *err = NULL;
gchar *buffer;
gsize count;
GdkPixbuf *pixbuf = NULL;

gtk_init(&argc, &argv);

colormap = gdk_colormap_get_system();
if(colormap == NULL)
{
printf("Unable to create a GdkColormap,gdk_colormap_get_system returns NULL.");
return 1;
}

rectangle.x = 0;
rectangle.y = 0;
rectangle.width = 300;
rectangle.height = 300;

attr.title = "Window";
attr.x = 0;
attr.y = 0;
attr.width = 500;
attr.height = 600;
attr.wclass = GDK_INPUT_OUTPUT;
attr.window_type = GDK_WINDOW_TOPLEVEL;

window = gdk_window_new(NULL, &attr, GDK_WA_X | GDK_WA_Y |GDK_WA_TITLE);
if(window == NULL)
{
printf("The gdk_window_new function returned NULL, unable to create GdkWindow.");
return 1;
}

gdk_window_show(window);
gdk_flush();
sleep(3);

gc = gdk_gc_new(window);
if(gc == NULL)
{
printf("Unable to create a GdkGC, gdk_gc_new returns NULL.");
return 1;
}

color.red = 100 * (65535 / 255);
color.green = 50 * (65535 / 255);
color.blue = 100 * (65535 / 255);

gdk_gc_set_rgb_fg_color(gc, &color);

gdk_window_begin_paint_rect(window, &rectangle);
gdk_draw_rectangle(window, gc, TRUE, 0, 0, 200, 200);
gdk_window_end_paint(window);

image = gdk_drawable_copy_to_image(window, NULL, 0, 0, 0, 0, attr.width, attr.height);
if(image == NULL)
{
printf("Unable to create a GdkImage, gdk_drawable_copy_to_image returns NULL.");
return 1;
}

pixbuf = gdk_pixbuf_get_from_image (NULL, image, colormap, 0, 0, 0, 0, attr.width, attr.height);
if(pixbuf == NULL)
{
printf("Unable to create a GdkPixbuf, gdk_pixbuf_get_from_image returns NULL.");
return 1;
}

gdk_pixbuf_save_to_buffer (pixbuf, &buffer, &count, "jpeg", &err, "quality", "100", NULL);

gdk_pixbuf_save(pixbuf, "window_image.jpg", "jpeg", &err, "quality", "100", NULL);

sleep(3);

return 0;
}_______________________________________________
gtk-list mailing list
gtk-list@gnome.orghttp://mail.gnome.org/mailman/listinfo/gtk-list

Offline

  • Root
  • » GTK+
  • » Fwd: Can't copy the right image from window [RSS Feed]

Board footer

Moderator control

Enjoy the 16th of December
PoweredBy

The Forums are managed by develissimo stuff members, if you find any issues or misplaced content please help us to fix it. Thank you! Tell us via Contact Options
Leave a Message
Welcome to Develissimo Live Support