pike.git / src / post_modules / GTK2 / source / gdkpixmap.pre

version» Context lines:

pike.git/src/post_modules/GTK2/source/gdkpixmap.pre:1: - /* -*- C -*- */ - class GDK2.Pixmap; - inherit GDK2.Drawable; +     - //! This class creates a GDK2.Pixmap from either an GDK2.Image or - //! Image.image object (or a numeric ID, see your X-manual for XIDs). - //! <p> The GDK2.Pixmap object can be used in a lot - //! of different GTK widgets. The most notable is the W(Pixmap) - //! widget.</p> - //! - //! NOIMG - %{ - #ifdef __NT__ - #include <gdk/gdkwin32.h> - #else - #include <gdk/gdkx.h> - #endif -  - GdkImage *pgtk2_pixmap_setup(struct object *o, int *free) - { -  if (get_gdkobject(o,image)) -  return get_gdkobject(o,image); -  else { -  *free=1; -  return gdkimage_from_pikeimage(o,GDK_IMAGE_FASTEST,0); -  } - } -  - void pgtk2__pixmap_draw(GdkImage *i) - { -  GdkGC *gc; -  if (THIS->extra_data) -  gc=THIS->extra_data; -  else -  THIS->extra_data=gc=gdk_gc_new(GDK_DRAWABLE(THIS->obj)); -  gdk_draw_image(GDK_DRAWABLE(THIS->obj),gc,i,0,0,0,0, -  i->width,i->height); - } - %} -  - void create(int|object image) - //! Create a new GDK2.Pixmap object. - //! Argument is a GDK2.Image object or a Image.Image object - { -  GdkImage *i; -  int f=0; -  struct object *o; -  GdkPixmap *gp; -  pgtk2_verify_setup(); -  pgtk2_verify_not_inited(); -  -  if (TYPEOF(Pike_sp[-args]) == PIKE_T_OBJECT) { -  get_all_args("create",args,"%o",&o); -  i=pgtk2_pixmap_setup(o,&f); -  -  gp=gdk_pixmap_new(0,i->width,i->height,i->depth); -  THIS->obj=G_OBJECT(gp); -  if (!THIS->obj) { -  if (f) -  g_object_unref(i); -  Pike_error("Failed to create pixmap.\n"); -  } -  pgtk2__pixmap_draw(i); -  if (f) -  g_object_unref(i); -  } else if (args && TYPEOF(Pike_sp[-1]) == PIKE_T_INT) { -  gp=gdk_pixmap_foreign_new(Pike_sp[-1].u.integer); -  THIS->obj=G_OBJECT(gp); -  if (!THIS->obj) -  Pike_error("Failed to find remote pixmap\n"); -  } -  pgtk2_pop_n_elems(args); -  pgtk2__init_this_object(); - } -  - void set(GDK2.Image|Image.Image image) - //! Argument is a GDK2.Image object or an Image.image object. - //! It is much faster to use an gdkImage object, especially one - //! allocated in shared memory. This is only an issue if you are - //! going to change the contents of the pixmap often, toggling between - //! a small number of images. - { -  struct object *o; -  int f=0; -  GdkImage *i; -  get_all_args("set", args, "%o", &o ); -  pgtk2__pixmap_draw(i=pgtk2_pixmap_setup(o,&f)); -  if (f) -  g_object_unref(i); -  -  RETURN_THIS(); - } -  - void destroy() - { -  /* -  if (THIS->obj) -  g_object_unref(THIS->obj); -  THIS->obj=0; -  -  Done by g.object -  */ -  -  if (THIS->extra_data) -  g_object_unref(THIS->extra_data); -  THIS->extra_data=0; -  pgtk2_pop_n_elems(args); -  push_int(0); - } -  - void ref() - //! Ref this object. - { -  g_object_ref(THIS->obj); -  RETURN_THIS(); - } -  - void unref() - //! Unref this object. - { -  g_object_unref(THIS->obj); -  RETURN_THIS(); - } -  +    Newline at end of file removed.