gdk-pixbuf.h 4.57 KB
Newer Older
1
/* GdkPixbuf library - Main header file
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
 *
 * Copyright (C) 1999 The Free Software Foundation
 *
 * Authors: Mark Crichton <crichton@gimp.org>
 *          Miguel de Icaza <miguel@gnu.org>
 *          Federico Mena-Quintero <federico@gimp.org>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 */

#ifndef GDK_PIXBUF_H
#define GDK_PIXBUF_H
Arturo Espinosa's avatar
Arturo Espinosa committed
27

28
#include <libart_lgpl/art_misc.h>
Arturo Espinosa's avatar
Arturo Espinosa committed
29
#include <libart_lgpl/art_pixbuf.h>
30
#include <gdk/gdk.h>
Arturo Espinosa's avatar
Arturo Espinosa committed
31

32 33 34 35 36
#ifdef __cplusplus
extern "C" {
#endif


Michael Meeks's avatar
Michael Meeks committed
37

Jonathan Blandford's avatar
Jonathan Blandford committed
38
/* GdkPixbuf structures */
39
typedef struct _GdkPixbuf GdkPixbuf;
Jonathan Blandford's avatar
Jonathan Blandford committed
40 41 42 43 44 45 46 47 48 49 50 51
typedef struct _GdkPixbufFrame GdkPixbufFrame;
typedef struct _GdkPixbufAnimation GdkPixbufAnimation;

typedef enum
{
	GDK_PIXBUF_FRAME_RETAIN,
	GDK_PIXBUF_FRAME_DISPOSE,
	GDK_PIXBUF_FRAME_REVERT
} GdkPixbufFrameAction;

struct _GdkPixbuf
{
52
	/* Reference count */
53
	int ref_count;
54 55

	/* Libart pixbuf */
56
	ArtPixBuf *art_pixbuf;
Michael Meeks's avatar
Michael Meeks committed
57
};
Arturo Espinosa's avatar
Arturo Espinosa committed
58

Jonathan Blandford's avatar
Jonathan Blandford committed
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77

struct _GdkPixbufFrame
{
	GdkPixbuf *pixbuf;

	GdkPixbufFrame *next;
	gushort x_offset;
	gushort y_offset;
	guint delaytime;
	GdkPixbufFrameAction action;
};


struct _GdkPixbufAnimation
{
        int n_frames;
        GList *frames;
};

78 79


80
/* Convenience functions */
81

82 83 84 85 86 87 88 89
ArtPixFormat gdk_pixbuf_get_format          (GdkPixbuf *pixbuf);
int          gdk_pixbuf_get_n_channels      (GdkPixbuf *pixbuf);
int          gdk_pixbuf_get_has_alpha       (GdkPixbuf *pixbuf);
int          gdk_pixbuf_get_bits_per_sample (GdkPixbuf *pixbuf);
guchar      *gdk_pixbuf_get_pixels          (GdkPixbuf *pixbuf);
int          gdk_pixbuf_get_width           (GdkPixbuf *pixbuf);
int          gdk_pixbuf_get_height          (GdkPixbuf *pixbuf);
int          gdk_pixbuf_get_rowstride       (GdkPixbuf *pixbuf);
90

91
/* Reference counting */
92 93 94 95

void gdk_pixbuf_ref (GdkPixbuf *pixbuf);
void gdk_pixbuf_unref (GdkPixbuf *pixbuf);

96
/* Constructors */
97
/* Wrap a libart pixbuf */
98

99
GdkPixbuf *gdk_pixbuf_new_from_art_pixbuf (ArtPixBuf *art_pixbuf);
100

101 102 103 104
/* Create a blank pixbuf with an optimal rowstride and a new buffer */

GdkPixbuf *gdk_pixbuf_new (ArtPixFormat format, gboolean has_alpha, int bits_per_sample,
			   int width, int height);
105

106 107
/* Simple loading */

Jonathan Blandford's avatar
Jonathan Blandford committed
108 109 110 111 112 113 114 115 116
GdkPixbuf *gdk_pixbuf_new_from_file     (const char        *filename);
GdkPixbuf *gdk_pixbuf_new_from_data     (guchar *data,
					 ArtPixFormat format,
					 gboolean has_alpha,
					 int width, int height,
					 int rowstride,
					 ArtDestroyNotify dfunc,
					 gpointer dfunc_data);
GdkPixbuf *gdk_pixbuf_new_from_xpm_data (const gchar      **data);
117

118 119 120 121 122
/* Adding or removing alpha */

GdkPixbuf *gdk_pixbuf_add_alpha (GdkPixbuf *pixbuf, gboolean substitute_color,
				 guchar r, guchar g, guchar b);

123 124 125 126 127 128 129 130 131 132 133 134 135
/* Rendering to a drawable */

typedef enum {
	GDK_PIXBUF_ALPHA_BILEVEL,
	GDK_PIXBUF_ALPHA_FULL
} GdkPixbufAlphaMode;

void gdk_pixbuf_render_threshold_alpha (GdkPixbuf *pixbuf, GdkBitmap *bitmap,
					int src_x, int src_y,
					int dest_x, int dest_y,
					int width, int height,
					int alpha_threshold);

136 137
void gdk_pixbuf_render_to_drawable (GdkPixbuf *pixbuf,
				    GdkDrawable *drawable, GdkGC *gc,
138 139 140 141 142 143
				    int src_x, int src_y,
				    int dest_x, int dest_y,
				    int width, int height,
				    GdkRgbDither dither,
				    int x_dither, int y_dither);

144 145 146 147 148 149 150 151 152
void gdk_pixbuf_render_to_drawable_alpha (GdkPixbuf *pixbuf, GdkDrawable *drawable,
					  int src_x, int src_y,
					  int dest_x, int dest_y,
					  int width, int height,
					  GdkPixbufAlphaMode alpha_mode,
					  int alpha_threshold,
					  GdkRgbDither dither,
					  int x_dither, int y_dither);

153 154 155 156 157 158 159

/* Fetching a region from a drawable */
GdkPixbuf *gdk_pixbuf_get_from_drawable (GdkPixbuf *dest,
					 GdkDrawable *src, GdkColormap *cmap,
					 int src_x, int src_y,
					 int dest_x, int dest_y,
					 int width, int height);
Jonathan Blandford's avatar
Jonathan Blandford committed
160 161 162 163 164 165 166 167 168



/* Animation loading */

GdkPixbufAnimation *gdk_pixbuf_animation_new_from_file (const char         *filename);
GdkPixbufAnimation *gdk_pixbuf_animation_destroy       (GdkPixbufAnimation *animation,
							gboolean            free_frames);

169

170

171 172 173
#ifdef __cplusplus
}
#endif
174

175
#endif