Blame gdk/gdkpixmap.c

Packit Service fb6fa5
/* GDK - The GIMP Drawing Kit
Packit Service fb6fa5
 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * This library is free software; you can redistribute it and/or
Packit Service fb6fa5
 * modify it under the terms of the GNU Lesser General Public
Packit Service fb6fa5
 * License as published by the Free Software Foundation; either
Packit Service fb6fa5
 * version 2 of the License, or (at your option) any later version.
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * This library is distributed in the hope that it will be useful,
Packit Service fb6fa5
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service fb6fa5
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service fb6fa5
 * Lesser General Public License for more details.
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * You should have received a copy of the GNU Lesser General Public
Packit Service fb6fa5
 * License along with this library; if not, write to the
Packit Service fb6fa5
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Packit Service fb6fa5
 * Boston, MA 02111-1307, USA.
Packit Service fb6fa5
 */
Packit Service fb6fa5
Packit Service fb6fa5
/*
Packit Service fb6fa5
 * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
Packit Service fb6fa5
 * file for a list of people on the GTK+ Team.  See the ChangeLog
Packit Service fb6fa5
 * files for a list of changes.  These files are distributed with
Packit Service fb6fa5
 * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
Packit Service fb6fa5
 */
Packit Service fb6fa5
Packit Service fb6fa5
#include "config.h"
Packit Service fb6fa5
#include "gdkpixmap.h"
Packit Service fb6fa5
#include "gdkinternals.h"
Packit Service fb6fa5
#include "gdkpixbuf.h"
Packit Service fb6fa5
#include "gdkscreen.h"
Packit Service fb6fa5
#include "gdkalias.h"
Packit Service fb6fa5
Packit Service fb6fa5
static GdkGC *gdk_pixmap_create_gc      (GdkDrawable     *drawable,
Packit Service fb6fa5
                                         GdkGCValues     *values,
Packit Service fb6fa5
                                         GdkGCValuesMask  mask);
Packit Service fb6fa5
static void   gdk_pixmap_draw_rectangle (GdkDrawable     *drawable,
Packit Service fb6fa5
					 GdkGC           *gc,
Packit Service fb6fa5
					 gboolean         filled,
Packit Service fb6fa5
					 gint             x,
Packit Service fb6fa5
					 gint             y,
Packit Service fb6fa5
					 gint             width,
Packit Service fb6fa5
					 gint             height);
Packit Service fb6fa5
static void   gdk_pixmap_draw_arc       (GdkDrawable     *drawable,
Packit Service fb6fa5
					 GdkGC           *gc,
Packit Service fb6fa5
					 gboolean         filled,
Packit Service fb6fa5
					 gint             x,
Packit Service fb6fa5
					 gint             y,
Packit Service fb6fa5
					 gint             width,
Packit Service fb6fa5
					 gint             height,
Packit Service fb6fa5
					 gint             angle1,
Packit Service fb6fa5
					 gint             angle2);
Packit Service fb6fa5
static void   gdk_pixmap_draw_polygon   (GdkDrawable     *drawable,
Packit Service fb6fa5
					 GdkGC           *gc,
Packit Service fb6fa5
					 gboolean         filled,
Packit Service fb6fa5
					 GdkPoint        *points,
Packit Service fb6fa5
					 gint             npoints);
Packit Service fb6fa5
static void   gdk_pixmap_draw_text      (GdkDrawable     *drawable,
Packit Service fb6fa5
					 GdkFont         *font,
Packit Service fb6fa5
					 GdkGC           *gc,
Packit Service fb6fa5
					 gint             x,
Packit Service fb6fa5
					 gint             y,
Packit Service fb6fa5
					 const gchar     *text,
Packit Service fb6fa5
					 gint             text_length);
Packit Service fb6fa5
static void   gdk_pixmap_draw_text_wc   (GdkDrawable     *drawable,
Packit Service fb6fa5
					 GdkFont         *font,
Packit Service fb6fa5
					 GdkGC           *gc,
Packit Service fb6fa5
					 gint             x,
Packit Service fb6fa5
					 gint             y,
Packit Service fb6fa5
					 const GdkWChar  *text,
Packit Service fb6fa5
					 gint             text_length);
Packit Service fb6fa5
static void   gdk_pixmap_draw_drawable  (GdkDrawable     *drawable,
Packit Service fb6fa5
					 GdkGC           *gc,
Packit Service fb6fa5
					 GdkPixmap       *src,
Packit Service fb6fa5
					 gint             xsrc,
Packit Service fb6fa5
					 gint             ysrc,
Packit Service fb6fa5
					 gint             xdest,
Packit Service fb6fa5
					 gint             ydest,
Packit Service fb6fa5
					 gint             width,
Packit Service fb6fa5
					 gint             height,
Packit Service fb6fa5
					 GdkPixmap       *original_src);
Packit Service fb6fa5
static void   gdk_pixmap_draw_points    (GdkDrawable     *drawable,
Packit Service fb6fa5
					 GdkGC           *gc,
Packit Service fb6fa5
					 GdkPoint        *points,
Packit Service fb6fa5
					 gint             npoints);
Packit Service fb6fa5
static void   gdk_pixmap_draw_segments  (GdkDrawable     *drawable,
Packit Service fb6fa5
					 GdkGC           *gc,
Packit Service fb6fa5
					 GdkSegment      *segs,
Packit Service fb6fa5
					 gint             nsegs);
Packit Service fb6fa5
static void   gdk_pixmap_draw_lines     (GdkDrawable     *drawable,
Packit Service fb6fa5
					 GdkGC           *gc,
Packit Service fb6fa5
					 GdkPoint        *points,
Packit Service fb6fa5
					 gint             npoints);
Packit Service fb6fa5
Packit Service fb6fa5
static void gdk_pixmap_draw_glyphs             (GdkDrawable      *drawable,
Packit Service fb6fa5
						GdkGC            *gc,
Packit Service fb6fa5
						PangoFont        *font,
Packit Service fb6fa5
						gint              x,
Packit Service fb6fa5
						gint              y,
Packit Service fb6fa5
						PangoGlyphString *glyphs);
Packit Service fb6fa5
static void gdk_pixmap_draw_glyphs_transformed (GdkDrawable      *drawable,
Packit Service fb6fa5
						GdkGC            *gc,
Packit Service fb6fa5
						PangoMatrix      *matrix,
Packit Service fb6fa5
						PangoFont        *font,
Packit Service fb6fa5
						gint              x,
Packit Service fb6fa5
						gint              y,
Packit Service fb6fa5
						PangoGlyphString *glyphs);
Packit Service fb6fa5
Packit Service fb6fa5
static void   gdk_pixmap_draw_image     (GdkDrawable     *drawable,
Packit Service fb6fa5
                                         GdkGC           *gc,
Packit Service fb6fa5
                                         GdkImage        *image,
Packit Service fb6fa5
                                         gint             xsrc,
Packit Service fb6fa5
                                         gint             ysrc,
Packit Service fb6fa5
                                         gint             xdest,
Packit Service fb6fa5
                                         gint             ydest,
Packit Service fb6fa5
                                         gint             width,
Packit Service fb6fa5
                                         gint             height);
Packit Service fb6fa5
static void   gdk_pixmap_draw_pixbuf    (GdkDrawable     *drawable,
Packit Service fb6fa5
					 GdkGC           *gc,
Packit Service fb6fa5
					 GdkPixbuf       *pixbuf,
Packit Service fb6fa5
					 gint             src_x,
Packit Service fb6fa5
					 gint             src_y,
Packit Service fb6fa5
					 gint             dest_x,
Packit Service fb6fa5
					 gint             dest_y,
Packit Service fb6fa5
					 gint             width,
Packit Service fb6fa5
					 gint             height,
Packit Service fb6fa5
					 GdkRgbDither     dither,
Packit Service fb6fa5
					 gint             x_dither,
Packit Service fb6fa5
					 gint             y_dither);
Packit Service fb6fa5
static void  gdk_pixmap_draw_trapezoids (GdkDrawable     *drawable,
Packit Service fb6fa5
					 GdkGC	         *gc,
Packit Service fb6fa5
					 GdkTrapezoid    *trapezoids,
Packit Service fb6fa5
					 gint             n_trapezoids);
Packit Service fb6fa5
Packit Service fb6fa5
static void   gdk_pixmap_real_get_size  (GdkDrawable     *drawable,
Packit Service fb6fa5
                                         gint            *width,
Packit Service fb6fa5
                                         gint            *height);
Packit Service fb6fa5
Packit Service fb6fa5
static GdkImage* gdk_pixmap_copy_to_image (GdkDrawable *drawable,
Packit Service fb6fa5
					   GdkImage    *image,
Packit Service fb6fa5
					   gint         src_x,
Packit Service fb6fa5
					   gint         src_y,
Packit Service fb6fa5
					   gint         dest_x,
Packit Service fb6fa5
					   gint         dest_y,
Packit Service fb6fa5
					   gint         width,
Packit Service fb6fa5
					   gint         height);
Packit Service fb6fa5
Packit Service fb6fa5
static cairo_surface_t *gdk_pixmap_ref_cairo_surface (GdkDrawable *drawable);
Packit Service fb6fa5
static cairo_surface_t *gdk_pixmap_create_cairo_surface (GdkDrawable *drawable,
Packit Service fb6fa5
							 int width,
Packit Service fb6fa5
							 int height);
Packit Service fb6fa5
Packit Service fb6fa5
static GdkVisual*   gdk_pixmap_real_get_visual   (GdkDrawable *drawable);
Packit Service fb6fa5
static gint         gdk_pixmap_real_get_depth    (GdkDrawable *drawable);
Packit Service fb6fa5
static void         gdk_pixmap_real_set_colormap (GdkDrawable *drawable,
Packit Service fb6fa5
                                                  GdkColormap *cmap);
Packit Service fb6fa5
static GdkColormap* gdk_pixmap_real_get_colormap (GdkDrawable *drawable);
Packit Service fb6fa5
static GdkScreen*   gdk_pixmap_real_get_screen   (GdkDrawable *drawable);
Packit Service fb6fa5
Packit Service fb6fa5
static void gdk_pixmap_init       (GdkPixmapObject      *pixmap);
Packit Service fb6fa5
static void gdk_pixmap_class_init (GdkPixmapObjectClass *klass);
Packit Service fb6fa5
static void gdk_pixmap_finalize   (GObject              *object);
Packit Service fb6fa5
Packit Service fb6fa5
static gpointer parent_class = NULL;
Packit Service fb6fa5
Packit Service fb6fa5
GType
Packit Service fb6fa5
gdk_pixmap_get_type (void)
Packit Service fb6fa5
{
Packit Service fb6fa5
  static GType object_type = 0;
Packit Service fb6fa5
Packit Service fb6fa5
  if (!object_type)
Packit Service fb6fa5
    object_type = g_type_register_static_simple (GDK_TYPE_DRAWABLE,
Packit Service fb6fa5
						 "GdkPixmap",
Packit Service fb6fa5
						 sizeof (GdkPixmapObjectClass),
Packit Service fb6fa5
						 (GClassInitFunc) gdk_pixmap_class_init,
Packit Service fb6fa5
						 sizeof (GdkPixmapObject),
Packit Service fb6fa5
						 (GInstanceInitFunc) gdk_pixmap_init,
Packit Service fb6fa5
						 0);
Packit Service fb6fa5
  
Packit Service fb6fa5
  return object_type;
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gdk_pixmap_init (GdkPixmapObject *pixmap)
Packit Service fb6fa5
{
Packit Service fb6fa5
  /* 0-initialization is good for all other fields. */
Packit Service fb6fa5
  pixmap->impl = g_object_new (_gdk_pixmap_impl_get_type (), NULL);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gdk_pixmap_class_init (GdkPixmapObjectClass *klass)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GObjectClass *object_class = G_OBJECT_CLASS (klass);
Packit Service fb6fa5
  GdkDrawableClass *drawable_class = GDK_DRAWABLE_CLASS (klass);
Packit Service fb6fa5
  
Packit Service fb6fa5
  parent_class = g_type_class_peek_parent (klass);
Packit Service fb6fa5
Packit Service fb6fa5
  object_class->finalize = gdk_pixmap_finalize;
Packit Service fb6fa5
Packit Service fb6fa5
  drawable_class->create_gc = gdk_pixmap_create_gc;
Packit Service fb6fa5
  drawable_class->draw_rectangle = gdk_pixmap_draw_rectangle;
Packit Service fb6fa5
  drawable_class->draw_arc = gdk_pixmap_draw_arc;
Packit Service fb6fa5
  drawable_class->draw_polygon = gdk_pixmap_draw_polygon;
Packit Service fb6fa5
  drawable_class->draw_text = gdk_pixmap_draw_text;
Packit Service fb6fa5
  drawable_class->draw_text_wc = gdk_pixmap_draw_text_wc;
Packit Service fb6fa5
  drawable_class->draw_drawable_with_src = gdk_pixmap_draw_drawable;
Packit Service fb6fa5
  drawable_class->draw_points = gdk_pixmap_draw_points;
Packit Service fb6fa5
  drawable_class->draw_segments = gdk_pixmap_draw_segments;
Packit Service fb6fa5
  drawable_class->draw_lines = gdk_pixmap_draw_lines;
Packit Service fb6fa5
  drawable_class->draw_glyphs = gdk_pixmap_draw_glyphs;
Packit Service fb6fa5
  drawable_class->draw_glyphs_transformed = gdk_pixmap_draw_glyphs_transformed;
Packit Service fb6fa5
  drawable_class->draw_image = gdk_pixmap_draw_image;
Packit Service fb6fa5
  drawable_class->draw_pixbuf = gdk_pixmap_draw_pixbuf;
Packit Service fb6fa5
  drawable_class->draw_trapezoids = gdk_pixmap_draw_trapezoids;
Packit Service fb6fa5
  drawable_class->get_depth = gdk_pixmap_real_get_depth;
Packit Service fb6fa5
  drawable_class->get_screen = gdk_pixmap_real_get_screen;
Packit Service fb6fa5
  drawable_class->get_size = gdk_pixmap_real_get_size;
Packit Service fb6fa5
  drawable_class->set_colormap = gdk_pixmap_real_set_colormap;
Packit Service fb6fa5
  drawable_class->get_colormap = gdk_pixmap_real_get_colormap;
Packit Service fb6fa5
  drawable_class->get_visual = gdk_pixmap_real_get_visual;
Packit Service fb6fa5
  drawable_class->_copy_to_image = gdk_pixmap_copy_to_image;
Packit Service fb6fa5
  drawable_class->ref_cairo_surface = gdk_pixmap_ref_cairo_surface;
Packit Service fb6fa5
  drawable_class->create_cairo_surface = gdk_pixmap_create_cairo_surface;
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gdk_pixmap_finalize (GObject *object)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GdkPixmapObject *obj = (GdkPixmapObject *) object;
Packit Service fb6fa5
Packit Service fb6fa5
  g_object_unref (obj->impl);
Packit Service fb6fa5
  obj->impl = NULL;
Packit Service fb6fa5
  
Packit Service fb6fa5
  G_OBJECT_CLASS (parent_class)->finalize (object);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
GdkPixmap *
Packit Service fb6fa5
gdk_pixmap_new (GdkDrawable *drawable,
Packit Service fb6fa5
                gint         width,
Packit Service fb6fa5
                gint         height,
Packit Service fb6fa5
                gint         depth)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GdkDrawable *source_drawable;
Packit Service fb6fa5
Packit Service fb6fa5
  if (drawable)
Packit Service fb6fa5
    source_drawable = _gdk_drawable_get_source_drawable (drawable);
Packit Service fb6fa5
  else
Packit Service fb6fa5
    source_drawable = NULL;
Packit Service fb6fa5
  return _gdk_pixmap_new (source_drawable, width, height, depth);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
GdkPixmap *
Packit Service fb6fa5
gdk_bitmap_create_from_data (GdkDrawable *drawable,
Packit Service fb6fa5
                             const gchar *data,
Packit Service fb6fa5
                             gint         width,
Packit Service fb6fa5
                             gint         height)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GdkDrawable *source_drawable;
Packit Service fb6fa5
Packit Service fb6fa5
  if (drawable)
Packit Service fb6fa5
    source_drawable = _gdk_drawable_get_source_drawable (drawable);
Packit Service fb6fa5
  else
Packit Service fb6fa5
    source_drawable = NULL;
Packit Service fb6fa5
  return _gdk_bitmap_create_from_data (source_drawable, data, width, height);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
GdkPixmap*
Packit Service fb6fa5
gdk_pixmap_create_from_data (GdkDrawable    *drawable,
Packit Service fb6fa5
                             const gchar    *data,
Packit Service fb6fa5
                             gint            width,
Packit Service fb6fa5
                             gint            height,
Packit Service fb6fa5
                             gint            depth,
Packit Service fb6fa5
                             const GdkColor *fg,
Packit Service fb6fa5
                             const GdkColor *bg)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GdkDrawable *source_drawable;
Packit Service fb6fa5
Packit Service fb6fa5
  source_drawable = _gdk_drawable_get_source_drawable (drawable);
Packit Service fb6fa5
  return _gdk_pixmap_create_from_data (source_drawable,
Packit Service fb6fa5
                                       data, width, height,
Packit Service fb6fa5
                                       depth, fg,bg);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
Packit Service fb6fa5
static GdkGC *
Packit Service fb6fa5
gdk_pixmap_create_gc (GdkDrawable     *drawable,
Packit Service fb6fa5
                      GdkGCValues     *values,
Packit Service fb6fa5
                      GdkGCValuesMask  mask)
Packit Service fb6fa5
{
Packit Service fb6fa5
  return gdk_gc_new_with_values (((GdkPixmapObject *) drawable)->impl,
Packit Service fb6fa5
                                 values, mask);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gdk_pixmap_draw_rectangle (GdkDrawable *drawable,
Packit Service fb6fa5
			   GdkGC       *gc,
Packit Service fb6fa5
			   gboolean     filled,
Packit Service fb6fa5
			   gint         x,
Packit Service fb6fa5
			   gint         y,
Packit Service fb6fa5
			   gint         width,
Packit Service fb6fa5
			   gint         height)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GdkPixmapObject *private = (GdkPixmapObject *)drawable;
Packit Service fb6fa5
Packit Service fb6fa5
  _gdk_gc_remove_drawable_clip (gc);  
Packit Service fb6fa5
  gdk_draw_rectangle (private->impl, gc, filled,
Packit Service fb6fa5
                      x, y, width, height);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gdk_pixmap_draw_arc (GdkDrawable *drawable,
Packit Service fb6fa5
		     GdkGC       *gc,
Packit Service fb6fa5
		     gboolean     filled,
Packit Service fb6fa5
		     gint         x,
Packit Service fb6fa5
		     gint         y,
Packit Service fb6fa5
		     gint         width,
Packit Service fb6fa5
		     gint         height,
Packit Service fb6fa5
		     gint         angle1,
Packit Service fb6fa5
		     gint         angle2)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GdkPixmapObject *private = (GdkPixmapObject *)drawable;
Packit Service fb6fa5
Packit Service fb6fa5
  _gdk_gc_remove_drawable_clip (gc);  
Packit Service fb6fa5
  gdk_draw_arc (private->impl, gc, filled,
Packit Service fb6fa5
                x, y,
Packit Service fb6fa5
                width, height, angle1, angle2);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gdk_pixmap_draw_polygon (GdkDrawable *drawable,
Packit Service fb6fa5
			 GdkGC       *gc,
Packit Service fb6fa5
			 gboolean     filled,
Packit Service fb6fa5
			 GdkPoint    *points,
Packit Service fb6fa5
			 gint         npoints)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GdkPixmapObject *private = (GdkPixmapObject *)drawable;
Packit Service fb6fa5
Packit Service fb6fa5
  _gdk_gc_remove_drawable_clip (gc);  
Packit Service fb6fa5
  gdk_draw_polygon (private->impl, gc, filled, points, npoints);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gdk_pixmap_draw_text (GdkDrawable *drawable,
Packit Service fb6fa5
		      GdkFont     *font,
Packit Service fb6fa5
		      GdkGC       *gc,
Packit Service fb6fa5
		      gint         x,
Packit Service fb6fa5
		      gint         y,
Packit Service fb6fa5
		      const gchar *text,
Packit Service fb6fa5
		      gint         text_length)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GdkPixmapObject *private = (GdkPixmapObject *)drawable;
Packit Service fb6fa5
Packit Service fb6fa5
  _gdk_gc_remove_drawable_clip (gc);  
Packit Service fb6fa5
  gdk_draw_text (private->impl, font, gc,
Packit Service fb6fa5
                 x, y, text, text_length);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gdk_pixmap_draw_text_wc (GdkDrawable    *drawable,
Packit Service fb6fa5
			 GdkFont        *font,
Packit Service fb6fa5
			 GdkGC          *gc,
Packit Service fb6fa5
			 gint            x,
Packit Service fb6fa5
			 gint            y,
Packit Service fb6fa5
			 const GdkWChar *text,
Packit Service fb6fa5
			 gint            text_length)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GdkPixmapObject *private = (GdkPixmapObject *)drawable;
Packit Service fb6fa5
Packit Service fb6fa5
  _gdk_gc_remove_drawable_clip (gc);  
Packit Service fb6fa5
  gdk_draw_text_wc (private->impl, font, gc,
Packit Service fb6fa5
                    x, y, text, text_length);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gdk_pixmap_draw_drawable (GdkDrawable *drawable,
Packit Service fb6fa5
			  GdkGC       *gc,
Packit Service fb6fa5
			  GdkPixmap   *src,
Packit Service fb6fa5
			  gint         xsrc,
Packit Service fb6fa5
			  gint         ysrc,
Packit Service fb6fa5
			  gint         xdest,
Packit Service fb6fa5
			  gint         ydest,
Packit Service fb6fa5
			  gint         width,
Packit Service fb6fa5
			  gint         height,
Packit Service fb6fa5
			  GdkPixmap   *original_src)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GdkPixmapObject *private = (GdkPixmapObject *)drawable;
Packit Service fb6fa5
Packit Service fb6fa5
  _gdk_gc_remove_drawable_clip (gc);
Packit Service fb6fa5
  /* Call the method directly to avoid getting the composite drawable again */
Packit Service fb6fa5
  GDK_DRAWABLE_GET_CLASS (private->impl)->draw_drawable_with_src (private->impl, gc,
Packit Service fb6fa5
								  src,
Packit Service fb6fa5
								  xsrc, ysrc,
Packit Service fb6fa5
								  xdest, ydest,
Packit Service fb6fa5
								  width, height,
Packit Service fb6fa5
								  original_src);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gdk_pixmap_draw_points (GdkDrawable *drawable,
Packit Service fb6fa5
			GdkGC       *gc,
Packit Service fb6fa5
			GdkPoint    *points,
Packit Service fb6fa5
			gint         npoints)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GdkPixmapObject *private = (GdkPixmapObject *)drawable;
Packit Service fb6fa5
Packit Service fb6fa5
  _gdk_gc_remove_drawable_clip (gc);  
Packit Service fb6fa5
  gdk_draw_points (private->impl, gc, points, npoints);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gdk_pixmap_draw_segments (GdkDrawable *drawable,
Packit Service fb6fa5
			  GdkGC       *gc,
Packit Service fb6fa5
			  GdkSegment  *segs,
Packit Service fb6fa5
			  gint         nsegs)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GdkPixmapObject *private = (GdkPixmapObject *)drawable;
Packit Service fb6fa5
Packit Service fb6fa5
  _gdk_gc_remove_drawable_clip (gc);  
Packit Service fb6fa5
  gdk_draw_segments (private->impl, gc, segs, nsegs);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gdk_pixmap_draw_lines (GdkDrawable *drawable,
Packit Service fb6fa5
		       GdkGC       *gc,
Packit Service fb6fa5
		       GdkPoint    *points,
Packit Service fb6fa5
		       gint         npoints)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GdkPixmapObject *private = (GdkPixmapObject *)drawable;
Packit Service fb6fa5
Packit Service fb6fa5
  _gdk_gc_remove_drawable_clip (gc);  
Packit Service fb6fa5
  gdk_draw_lines (private->impl, gc, points, npoints);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gdk_pixmap_draw_glyphs (GdkDrawable      *drawable,
Packit Service fb6fa5
                        GdkGC            *gc,
Packit Service fb6fa5
                        PangoFont        *font,
Packit Service fb6fa5
                        gint              x,
Packit Service fb6fa5
                        gint              y,
Packit Service fb6fa5
                        PangoGlyphString *glyphs)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GdkPixmapObject *private = (GdkPixmapObject *)drawable;
Packit Service fb6fa5
Packit Service fb6fa5
  _gdk_gc_remove_drawable_clip (gc);  
Packit Service fb6fa5
  gdk_draw_glyphs (private->impl, gc, font, x, y, glyphs);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gdk_pixmap_draw_glyphs_transformed (GdkDrawable      *drawable,
Packit Service fb6fa5
				    GdkGC            *gc,
Packit Service fb6fa5
				    PangoMatrix      *matrix,
Packit Service fb6fa5
				    PangoFont        *font,
Packit Service fb6fa5
				    gint              x,
Packit Service fb6fa5
				    gint              y,
Packit Service fb6fa5
				    PangoGlyphString *glyphs)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GdkPixmapObject *private = (GdkPixmapObject *)drawable;
Packit Service fb6fa5
Packit Service fb6fa5
  _gdk_gc_remove_drawable_clip (gc);  
Packit Service fb6fa5
  gdk_draw_glyphs_transformed (private->impl, gc, matrix, font, x, y, glyphs);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gdk_pixmap_draw_image (GdkDrawable     *drawable,
Packit Service fb6fa5
                       GdkGC           *gc,
Packit Service fb6fa5
                       GdkImage        *image,
Packit Service fb6fa5
                       gint             xsrc,
Packit Service fb6fa5
                       gint             ysrc,
Packit Service fb6fa5
                       gint             xdest,
Packit Service fb6fa5
                       gint             ydest,
Packit Service fb6fa5
                       gint             width,
Packit Service fb6fa5
                       gint             height)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GdkPixmapObject *private = (GdkPixmapObject *)drawable;
Packit Service fb6fa5
Packit Service fb6fa5
  _gdk_gc_remove_drawable_clip (gc);  
Packit Service fb6fa5
  gdk_draw_image (private->impl, gc, image, xsrc, ysrc, xdest, ydest,
Packit Service fb6fa5
                  width, height);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gdk_pixmap_draw_pixbuf (GdkDrawable     *drawable,
Packit Service fb6fa5
			GdkGC           *gc,
Packit Service fb6fa5
			GdkPixbuf       *pixbuf,
Packit Service fb6fa5
			gint             src_x,
Packit Service fb6fa5
			gint             src_y,
Packit Service fb6fa5
			gint             dest_x,
Packit Service fb6fa5
			gint             dest_y,
Packit Service fb6fa5
			gint             width,
Packit Service fb6fa5
			gint             height,
Packit Service fb6fa5
			GdkRgbDither     dither,
Packit Service fb6fa5
			gint             x_dither,
Packit Service fb6fa5
			gint             y_dither)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GdkPixmapObject *private = (GdkPixmapObject *)drawable;
Packit Service fb6fa5
Packit Service fb6fa5
  if (gc)
Packit Service fb6fa5
    _gdk_gc_remove_drawable_clip (gc);  
Packit Service fb6fa5
  gdk_draw_pixbuf (private->impl, gc, pixbuf,
Packit Service fb6fa5
		   src_x, src_y, dest_x, dest_y, width, height,
Packit Service fb6fa5
		   dither, x_dither, y_dither);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gdk_pixmap_draw_trapezoids (GdkDrawable     *drawable,
Packit Service fb6fa5
			    GdkGC	    *gc,
Packit Service fb6fa5
			    GdkTrapezoid    *trapezoids,
Packit Service fb6fa5
			    gint             n_trapezoids)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GdkPixmapObject *private = (GdkPixmapObject *)drawable;
Packit Service fb6fa5
Packit Service fb6fa5
  _gdk_gc_remove_drawable_clip (gc);  
Packit Service fb6fa5
  gdk_draw_trapezoids (private->impl, gc, trapezoids, n_trapezoids);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gdk_pixmap_real_get_size (GdkDrawable *drawable,
Packit Service fb6fa5
                          gint *width,
Packit Service fb6fa5
                          gint *height)
Packit Service fb6fa5
{
Packit Service fb6fa5
  g_return_if_fail (GDK_IS_PIXMAP (drawable));
Packit Service fb6fa5
Packit Service fb6fa5
  gdk_drawable_get_size (GDK_DRAWABLE (((GdkPixmapObject*)drawable)->impl),
Packit Service fb6fa5
                         width, height);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static GdkVisual*
Packit Service fb6fa5
gdk_pixmap_real_get_visual (GdkDrawable *drawable)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GdkColormap *colormap;
Packit Service fb6fa5
Packit Service fb6fa5
  g_return_val_if_fail (GDK_IS_PIXMAP (drawable), NULL);
Packit Service fb6fa5
Packit Service fb6fa5
  colormap = gdk_drawable_get_colormap (drawable);
Packit Service fb6fa5
  return colormap ? gdk_colormap_get_visual (colormap) : NULL;
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static gint
Packit Service fb6fa5
gdk_pixmap_real_get_depth (GdkDrawable *drawable)
Packit Service fb6fa5
{
Packit Service fb6fa5
  gint depth;
Packit Service fb6fa5
  
Packit Service fb6fa5
  g_return_val_if_fail (GDK_IS_PIXMAP (drawable), 0);
Packit Service fb6fa5
Packit Service fb6fa5
  depth = GDK_PIXMAP_OBJECT (drawable)->depth;
Packit Service fb6fa5
Packit Service fb6fa5
  return depth;
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void
Packit Service fb6fa5
gdk_pixmap_real_set_colormap (GdkDrawable *drawable,
Packit Service fb6fa5
                              GdkColormap *cmap)
Packit Service fb6fa5
{
Packit Service fb6fa5
  g_return_if_fail (GDK_IS_PIXMAP (drawable));  
Packit Service fb6fa5
  
Packit Service fb6fa5
  gdk_drawable_set_colormap (((GdkPixmapObject*)drawable)->impl, cmap);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static GdkColormap*
Packit Service fb6fa5
gdk_pixmap_real_get_colormap (GdkDrawable *drawable)
Packit Service fb6fa5
{
Packit Service fb6fa5
  g_return_val_if_fail (GDK_IS_PIXMAP (drawable), NULL);
Packit Service fb6fa5
  
Packit Service fb6fa5
  return gdk_drawable_get_colormap (((GdkPixmapObject*)drawable)->impl);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static GdkImage*
Packit Service fb6fa5
gdk_pixmap_copy_to_image (GdkDrawable     *drawable,
Packit Service fb6fa5
			  GdkImage        *image,
Packit Service fb6fa5
			  gint             src_x,
Packit Service fb6fa5
			  gint             src_y,
Packit Service fb6fa5
			  gint             dest_x,
Packit Service fb6fa5
			  gint             dest_y,
Packit Service fb6fa5
			  gint             width,
Packit Service fb6fa5
			  gint             height)
Packit Service fb6fa5
{
Packit Service fb6fa5
  g_return_val_if_fail (GDK_IS_PIXMAP (drawable), NULL);
Packit Service fb6fa5
  
Packit Service fb6fa5
  return gdk_drawable_copy_to_image (((GdkPixmapObject*)drawable)->impl,
Packit Service fb6fa5
				     image,
Packit Service fb6fa5
				     src_x, src_y, dest_x, dest_y,
Packit Service fb6fa5
				     width, height);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static cairo_surface_t *
Packit Service fb6fa5
gdk_pixmap_ref_cairo_surface (GdkDrawable *drawable)
Packit Service fb6fa5
{
Packit Service fb6fa5
  return _gdk_drawable_ref_cairo_surface (((GdkPixmapObject*)drawable)->impl);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static cairo_surface_t *
Packit Service fb6fa5
gdk_pixmap_create_cairo_surface (GdkDrawable *drawable,
Packit Service fb6fa5
				 int width,
Packit Service fb6fa5
				 int height)
Packit Service fb6fa5
{
Packit Service fb6fa5
  return _gdk_windowing_create_cairo_surface (GDK_PIXMAP_OBJECT(drawable)->impl,
Packit Service fb6fa5
					      width, height);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
Packit Service fb6fa5
Packit Service fb6fa5
static GdkBitmap *
Packit Service fb6fa5
make_solid_mask (GdkScreen *screen, gint width, gint height)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GdkBitmap *bitmap;
Packit Service fb6fa5
  GdkGC *gc;
Packit Service fb6fa5
  GdkGCValues gc_values;
Packit Service fb6fa5
  
Packit Service fb6fa5
  bitmap = gdk_pixmap_new (gdk_screen_get_root_window (screen),
Packit Service fb6fa5
			   width, height, 1);
Packit Service fb6fa5
Packit Service fb6fa5
  gc_values.foreground.pixel = 1;
Packit Service fb6fa5
  gc = gdk_gc_new_with_values (bitmap, &gc_values, GDK_GC_FOREGROUND);
Packit Service fb6fa5
  
Packit Service fb6fa5
  gdk_draw_rectangle (bitmap, gc, TRUE, 0, 0, width, height);
Packit Service fb6fa5
  
Packit Service fb6fa5
  g_object_unref (gc);
Packit Service fb6fa5
  
Packit Service fb6fa5
  return bitmap;
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
#define PACKED_COLOR(c) ((((c)->red   & 0xff00)  << 8) |   \
Packit Service fb6fa5
			  ((c)->green & 0xff00)        |   \
Packit Service fb6fa5
			  ((c)->blue             >> 8))
Packit Service fb6fa5
Packit Service fb6fa5
static GdkPixmap *
Packit Service fb6fa5
gdk_pixmap_colormap_new_from_pixbuf (GdkColormap    *colormap,
Packit Service fb6fa5
				     GdkBitmap     **mask,
Packit Service fb6fa5
				     const GdkColor *transparent_color,
Packit Service fb6fa5
				     GdkPixbuf      *pixbuf)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GdkPixmap *pixmap;
Packit Service fb6fa5
  GdkPixbuf *render_pixbuf;
Packit Service fb6fa5
  GdkGC *tmp_gc;
Packit Service fb6fa5
  GdkScreen *screen = gdk_colormap_get_screen (colormap);
Packit Service fb6fa5
  
Packit Service fb6fa5
  pixmap = gdk_pixmap_new (gdk_screen_get_root_window (screen),
Packit Service fb6fa5
			   gdk_pixbuf_get_width (pixbuf),
Packit Service fb6fa5
			   gdk_pixbuf_get_height (pixbuf),
Packit Service fb6fa5
			   gdk_colormap_get_visual (colormap)->depth);
Packit Service fb6fa5
  gdk_drawable_set_colormap (pixmap, colormap);
Packit Service fb6fa5
  
Packit Service fb6fa5
  if (transparent_color)
Packit Service fb6fa5
    {
Packit Service fb6fa5
      guint32 packed_color = PACKED_COLOR (transparent_color);
Packit Service fb6fa5
      render_pixbuf = gdk_pixbuf_composite_color_simple (pixbuf,
Packit Service fb6fa5
							 gdk_pixbuf_get_width (pixbuf),
Packit Service fb6fa5
							 gdk_pixbuf_get_height (pixbuf),
Packit Service fb6fa5
							 GDK_INTERP_NEAREST,
Packit Service fb6fa5
							 255, 16, packed_color, packed_color);
Packit Service fb6fa5
    }
Packit Service fb6fa5
  else
Packit Service fb6fa5
    render_pixbuf = pixbuf;
Packit Service fb6fa5
Packit Service fb6fa5
  tmp_gc = _gdk_drawable_get_scratch_gc (pixmap, FALSE);
Packit Service fb6fa5
  gdk_draw_pixbuf (pixmap, tmp_gc, render_pixbuf, 0, 0, 0, 0,
Packit Service fb6fa5
		   gdk_pixbuf_get_width (render_pixbuf),
Packit Service fb6fa5
		   gdk_pixbuf_get_height (render_pixbuf),
Packit Service fb6fa5
		   GDK_RGB_DITHER_NORMAL, 0, 0);
Packit Service fb6fa5
Packit Service fb6fa5
  if (render_pixbuf != pixbuf)
Packit Service fb6fa5
    g_object_unref (render_pixbuf);
Packit Service fb6fa5
Packit Service fb6fa5
  if (mask)
Packit Service fb6fa5
    gdk_pixbuf_render_pixmap_and_mask_for_colormap (pixbuf, colormap, NULL, mask, 128);
Packit Service fb6fa5
Packit Service fb6fa5
  if (mask && !*mask)
Packit Service fb6fa5
    *mask = make_solid_mask (screen,
Packit Service fb6fa5
			     gdk_pixbuf_get_width (pixbuf),
Packit Service fb6fa5
			     gdk_pixbuf_get_height (pixbuf));
Packit Service fb6fa5
Packit Service fb6fa5
  return pixmap;
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
/**
Packit Service fb6fa5
 * gdk_pixmap_colormap_create_from_xpm:
Packit Service fb6fa5
 * @drawable: a #GdkDrawable, used to determine default values
Packit Service fb6fa5
 * for the new pixmap. Can be %NULL if @colormap is given.
Packit Service fb6fa5
 * @colormap: the #GdkColormap that the new pixmap will be use.
Packit Service fb6fa5
 * If omitted, the colormap for @window will be used.
Packit Service fb6fa5
 * @mask: a pointer to a place to store a bitmap representing
Packit Service fb6fa5
 * the transparency mask of the XPM file. Can be %NULL,
Packit Service fb6fa5
 * in which case transparency will be ignored.
Packit Service fb6fa5
 * @transparent_color: the color to be used for the pixels
Packit Service fb6fa5
 * that are transparent in the input file. Can be %NULL,
Packit Service fb6fa5
 * in which case a default color will be used.
Packit Service fb6fa5
 * @filename: the filename of a file containing XPM data.
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * Create a pixmap from a XPM file using a particular colormap.
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * Returns: (transfer none): the #GdkPixmap.
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * Deprecated: 2.22: Use a #GdkPixbuf instead. You can use
Packit Service fb6fa5
 * gdk_pixbuf_new_from_file() to create it.
Packit Service fb6fa5
 * If you must use a pixmap, use gdk_pixmap_new() to
Packit Service fb6fa5
 * create it and Cairo to draw the pixbuf onto it.
Packit Service fb6fa5
 */
Packit Service fb6fa5
GdkPixmap*
Packit Service fb6fa5
gdk_pixmap_colormap_create_from_xpm (GdkDrawable    *drawable,
Packit Service fb6fa5
				     GdkColormap    *colormap,
Packit Service fb6fa5
				     GdkBitmap     **mask,
Packit Service fb6fa5
				     const GdkColor *transparent_color,
Packit Service fb6fa5
				     const gchar    *filename)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GdkPixbuf *pixbuf;
Packit Service fb6fa5
  GdkPixmap *pixmap;
Packit Service fb6fa5
Packit Service fb6fa5
  g_return_val_if_fail (drawable != NULL || colormap != NULL, NULL);
Packit Service fb6fa5
  g_return_val_if_fail (drawable == NULL || GDK_IS_DRAWABLE (drawable), NULL);
Packit Service fb6fa5
  g_return_val_if_fail (colormap == NULL || GDK_IS_COLORMAP (colormap), NULL);
Packit Service fb6fa5
Packit Service fb6fa5
  if (colormap == NULL)
Packit Service fb6fa5
    colormap = gdk_drawable_get_colormap (drawable);
Packit Service fb6fa5
  
Packit Service fb6fa5
  pixbuf = gdk_pixbuf_new_from_file (filename, NULL);
Packit Service fb6fa5
  if (!pixbuf)
Packit Service fb6fa5
    return NULL;
Packit Service fb6fa5
Packit Service fb6fa5
  pixmap = gdk_pixmap_colormap_new_from_pixbuf (colormap, mask, transparent_color, pixbuf);
Packit Service fb6fa5
Packit Service fb6fa5
  g_object_unref (pixbuf);
Packit Service fb6fa5
  
Packit Service fb6fa5
  return pixmap;
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
/**
Packit Service fb6fa5
 * gdk_pixmap_create_from_xpm:
Packit Service fb6fa5
 * @drawable: a #GdkDrawable, used to determine default values
Packit Service fb6fa5
 * for the new pixmap.
Packit Service fb6fa5
 * @mask: (out) a pointer to a place to store a bitmap representing
Packit Service fb6fa5
 * the transparency mask of the XPM file. Can be %NULL,
Packit Service fb6fa5
 * in which case transparency will be ignored.
Packit Service fb6fa5
 * @transparent_color: the color to be used for the pixels
Packit Service fb6fa5
 * that are transparent in the input file. Can be %NULL,
Packit Service fb6fa5
 * in which case a default color will be used.
Packit Service fb6fa5
 * @filename: the filename of a file containing XPM data.
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * Create a pixmap from a XPM file.
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * Returns: (transfer none): the #GdkPixmap
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * Deprecated: 2.22: Use a #GdkPixbuf instead. You can use
Packit Service fb6fa5
 * gdk_pixbuf_new_from_file() to create it.
Packit Service fb6fa5
 * If you must use a pixmap, use gdk_pixmap_new() to
Packit Service fb6fa5
 * create it and Cairo to draw the pixbuf onto it.
Packit Service fb6fa5
 */
Packit Service fb6fa5
GdkPixmap*
Packit Service fb6fa5
gdk_pixmap_create_from_xpm (GdkDrawable    *drawable,
Packit Service fb6fa5
			    GdkBitmap     **mask,
Packit Service fb6fa5
			    const GdkColor *transparent_color,
Packit Service fb6fa5
			    const gchar    *filename)
Packit Service fb6fa5
{
Packit Service fb6fa5
  return gdk_pixmap_colormap_create_from_xpm (drawable, NULL, mask,
Packit Service fb6fa5
					      transparent_color, filename);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
/**
Packit Service fb6fa5
 * gdk_pixmap_colormap_create_from_xpm_d:
Packit Service fb6fa5
 * @drawable: a #GdkDrawable, used to determine default values
Packit Service fb6fa5
 *     for the new pixmap. Can be %NULL if @colormap is given.
Packit Service fb6fa5
 * @colormap: the #GdkColormap that the new pixmap will be use.
Packit Service fb6fa5
 *     If omitted, the colormap for @window will be used.
Packit Service fb6fa5
 * @mask: a pointer to a place to store a bitmap representing
Packit Service fb6fa5
 *     the transparency mask of the XPM file. Can be %NULL,
Packit Service fb6fa5
 *     in which case transparency will be ignored.
Packit Service fb6fa5
 * @transparent_color: the color to be used for the pixels
Packit Service fb6fa5
 *     that are transparent in the input file. Can be %NULL,
Packit Service fb6fa5
 *     in which case a default color will be used.
Packit Service fb6fa5
 * @data: Pointer to a string containing the XPM data.
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * Create a pixmap from data in XPM format using a particular
Packit Service fb6fa5
 * colormap.
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * Returns: (transfer none): the #GdkPixmap.
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * Deprecated: 2.22: Use a #GdkPixbuf instead. You can use
Packit Service fb6fa5
 * gdk_pixbuf_new_from_xpm_data() to create it.
Packit Service fb6fa5
 * If you must use a pixmap, use gdk_pixmap_new() to
Packit Service fb6fa5
 * create it and Cairo to draw the pixbuf onto it.
Packit Service fb6fa5
 */
Packit Service fb6fa5
GdkPixmap*
Packit Service fb6fa5
gdk_pixmap_colormap_create_from_xpm_d (GdkDrawable     *drawable,
Packit Service fb6fa5
				       GdkColormap     *colormap,
Packit Service fb6fa5
				       GdkBitmap      **mask,
Packit Service fb6fa5
				       const GdkColor  *transparent_color,
Packit Service fb6fa5
				       gchar          **data)
Packit Service fb6fa5
{
Packit Service fb6fa5
  GdkPixbuf *pixbuf;
Packit Service fb6fa5
  GdkPixmap *pixmap;
Packit Service fb6fa5
Packit Service fb6fa5
  g_return_val_if_fail (drawable != NULL || colormap != NULL, NULL);
Packit Service fb6fa5
  g_return_val_if_fail (drawable == NULL || GDK_IS_DRAWABLE (drawable), NULL);
Packit Service fb6fa5
  g_return_val_if_fail (colormap == NULL || GDK_IS_COLORMAP (colormap), NULL);
Packit Service fb6fa5
Packit Service fb6fa5
  if (colormap == NULL)
Packit Service fb6fa5
    colormap = gdk_drawable_get_colormap (drawable);
Packit Service fb6fa5
  
Packit Service fb6fa5
  pixbuf = gdk_pixbuf_new_from_xpm_data ((const char **)data);
Packit Service fb6fa5
  if (!pixbuf)
Packit Service fb6fa5
    return NULL;
Packit Service fb6fa5
Packit Service fb6fa5
  pixmap = gdk_pixmap_colormap_new_from_pixbuf (colormap, mask, transparent_color, pixbuf);
Packit Service fb6fa5
Packit Service fb6fa5
  g_object_unref (pixbuf);
Packit Service fb6fa5
Packit Service fb6fa5
  return pixmap;
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
/**
Packit Service fb6fa5
 * gdk_pixmap_create_from_xpm_d:
Packit Service fb6fa5
 * @drawable: a #GdkDrawable, used to determine default values
Packit Service fb6fa5
 *     for the new pixmap.
Packit Service fb6fa5
 * @mask: (out): Pointer to a place to store a bitmap representing
Packit Service fb6fa5
 *     the transparency mask of the XPM file. Can be %NULL,
Packit Service fb6fa5
 *     in which case transparency will be ignored.
Packit Service fb6fa5
 * @transparent_color: This color will be used for the pixels
Packit Service fb6fa5
 *     that are transparent in the input file. Can be %NULL
Packit Service fb6fa5
 *     in which case a default color will be used.
Packit Service fb6fa5
 * @data: Pointer to a string containing the XPM data.
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * Create a pixmap from data in XPM format.
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * Returns: (transfer none): the #GdkPixmap.
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * Deprecated: 2.22: Use a #GdkPixbuf instead. You can use
Packit Service fb6fa5
 * gdk_pixbuf_new_from_xpm_data() to create it.
Packit Service fb6fa5
 * If you must use a pixmap, use gdk_pixmap_new() to
Packit Service fb6fa5
 * create it and Cairo to draw the pixbuf onto it.
Packit Service fb6fa5
 */
Packit Service fb6fa5
GdkPixmap*
Packit Service fb6fa5
gdk_pixmap_create_from_xpm_d (GdkDrawable    *drawable,
Packit Service fb6fa5
			      GdkBitmap     **mask,
Packit Service fb6fa5
			      const GdkColor *transparent_color,
Packit Service fb6fa5
			      gchar         **data)
Packit Service fb6fa5
{
Packit Service fb6fa5
  return gdk_pixmap_colormap_create_from_xpm_d (drawable, NULL, mask,
Packit Service fb6fa5
						transparent_color, data);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static GdkScreen*
Packit Service fb6fa5
gdk_pixmap_real_get_screen (GdkDrawable *drawable)
Packit Service fb6fa5
{
Packit Service fb6fa5
    return gdk_drawable_get_screen (GDK_PIXMAP_OBJECT (drawable)->impl);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
/**
Packit Service fb6fa5
 * gdk_pixmap_get_size:
Packit Service fb6fa5
 * @pixmap: a #GdkPixmap
Packit Service fb6fa5
 * @width: (out) (allow-none): location to store @pixmap's width, or %NULL
Packit Service fb6fa5
 * @height: (out) (allow-none): location to store @pixmap's height, or %NULL
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * This function is purely to make it possible to query the size of pixmaps
Packit Service fb6fa5
 * even when compiling without deprecated symbols and you must use pixmaps.
Packit Service fb6fa5
 * It is identical to gdk_drawable_get_size(), but for pixmaps.
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * Since: 2.24
Packit Service fb6fa5
 **/
Packit Service fb6fa5
void
Packit Service fb6fa5
gdk_pixmap_get_size (GdkPixmap *pixmap,
Packit Service fb6fa5
                     gint      *width,
Packit Service fb6fa5
                     gint      *height)
Packit Service fb6fa5
{
Packit Service fb6fa5
    g_return_if_fail (GDK_IS_PIXMAP (pixmap));
Packit Service fb6fa5
Packit Service fb6fa5
    gdk_drawable_get_size (pixmap, width, height);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
#define __GDK_PIXMAP_C__
Packit Service fb6fa5
#include "gdkaliasdef.c"