gdk-pixbuf.h 6.92 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 <libart_lgpl/art_filterlevel.h>
31
#include <gdk/gdk.h>
Arturo Espinosa's avatar
Arturo Espinosa committed
32

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

37
#include <gdk-pixbuf/gdk-pixbuf-features.h>
Michael Meeks's avatar
Michael Meeks committed
38

Jonathan Blandford's avatar
Jonathan Blandford committed
39
/* GdkPixbuf structures */
40
typedef struct _GdkPixbuf GdkPixbuf;
Jonathan Blandford's avatar
Jonathan Blandford committed
41 42 43
typedef struct _GdkPixbufFrame GdkPixbufFrame;
typedef struct _GdkPixbufAnimation GdkPixbufAnimation;

44
struct _GdkPixbuf {
45
	/* Reference count */
46
	int ref_count;
47 48

	/* Libart pixbuf */
49
	ArtPixBuf *art_pixbuf;
Michael Meeks's avatar
Michael Meeks committed
50
};
Arturo Espinosa's avatar
Arturo Espinosa committed
51

52 53 54 55 56 57
/* GIF-like animation overlay modes for frames */
typedef enum {
	GDK_PIXBUF_FRAME_RETAIN,
	GDK_PIXBUF_FRAME_DISPOSE,
	GDK_PIXBUF_FRAME_REVERT
} GdkPixbufFrameAction;
Jonathan Blandford's avatar
Jonathan Blandford committed
58

59 60
struct _GdkPixbufFrame {
	/* The pixbuf with this frame's image data */
Jonathan Blandford's avatar
Jonathan Blandford committed
61 62
	GdkPixbuf *pixbuf;

63 64 65 66 67 68 69 70
	/* Offsets for overlaying onto the animation's area */
	int x_offset;
	int y_offset;

	/* Frame duration in ms */
	int delay_time;

	/* Overlay mode */
Jonathan Blandford's avatar
Jonathan Blandford committed
71 72 73
	GdkPixbufFrameAction action;
};

74 75 76
struct _GdkPixbufAnimation {
	/* Reference count */
	int ref_count;
Jonathan Blandford's avatar
Jonathan Blandford committed
77

78
	/* Number of frames */
Jonathan Blandford's avatar
Jonathan Blandford committed
79
        int n_frames;
80 81

	/* List of GdkPixbufFrame structures */
Jonathan Blandford's avatar
Jonathan Blandford committed
82 83 84
        GList *frames;
};

85 86


87
/* Convenience functions */
88

89 90 91 92 93 94 95 96
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);
97

98
/* Reference counting */
99 100 101 102

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

103 104
/* Wrap a libart pixbuf */
GdkPixbuf *gdk_pixbuf_new_from_art_pixbuf (ArtPixBuf *art_pixbuf);
105

106 107 108
/* 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);
109

110 111
/* Simple loading */

112 113 114 115 116 117 118 119 120
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);
121

122
GdkPixbuf *gdk_pixbuf_new_from_xpm_data (const char **data);
123

124
/* Adding an alpha channel */
125 126 127
GdkPixbuf *gdk_pixbuf_add_alpha (GdkPixbuf *pixbuf, gboolean substitute_color,
				 guchar r, guchar g, guchar b);

128 129
/* Rendering to a drawable */

130
/* Alpha compositing mode */
131 132 133 134 135 136 137 138 139 140 141
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);

142 143
void gdk_pixbuf_render_to_drawable (GdkPixbuf *pixbuf,
				    GdkDrawable *drawable, GdkGC *gc,
144 145 146 147 148 149
				    int src_x, int src_y,
				    int dest_x, int dest_y,
				    int width, int height,
				    GdkRgbDither dither,
				    int x_dither, int y_dither);

150 151 152 153 154 155 156 157 158
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);

159 160 161 162 163 164
/* 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
165

166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221
/* Scaling */

void gdk_pixbuf_scale           (GdkPixbuf      *src,
				 GdkPixbuf      *dest,
				 int             dest_x,
				 int             dest_y,
				 int             dest_width,
				 int             dest_height,
				 double          offset_x,
				 double          offset_y,
				 double          scale_x,
				 double          scale_y,
				 ArtFilterLevel  filter_level);
void gdk_pixbuf_composite       (GdkPixbuf      *src,
				 GdkPixbuf      *dest,
				 int             dest_x,
				 int             dest_y,
				 int             dest_width,
				 int             dest_height,
				 double          offset_x,
				 double          offset_y,
				 double          scale_x,
				 double          scale_y,
				 ArtFilterLevel  filter_level,
				 int             overall_alpha);
void gdk_pixbuf_composite_color (GdkPixbuf      *src,
				 GdkPixbuf      *dest,
				 int             dest_x,
				 int             dest_y,
				 int             dest_width,
				 int             dest_height,
				 double          offset_x,
				 double          offset_y,
				 double          scale_x,
				 double          scale_y,
				 ArtFilterLevel  filter_level,
				 int             overall_alpha,
				 int             check_x,
				 int             check_y,
				 int             check_size,
				 art_u32         color1,
				 art_u32         color2);

GdkPixbuf *gdk_pixbuf_scale_simple           (GdkPixbuf      *src,
					      int             dest_width,
					      int             dest_height,
					      ArtFilterLevel  filter_level);
GdkPixbuf *gdk_pixbuf_composite_color_simple (GdkPixbuf      *src,
					      int             dest_width,
					      int             dest_height,
					      ArtFilterLevel  filter_level,
					      int             overall_alpha,
					      int             check_size,
					      art_u32         color1,
					      art_u32         color2);

222
/* Animation support */
Jonathan Blandford's avatar
Jonathan Blandford committed
223

224
GdkPixbufAnimation *gdk_pixbuf_animation_new_from_file (const char *filename);
Jonathan Blandford's avatar
Jonathan Blandford committed
225

226 227
void gdk_pixbuf_animation_ref (GdkPixbufAnimation *animation);
void gdk_pixbuf_animation_unref (GdkPixbufAnimation *animation);
228

229 230 231 232
/* General (presently empty) initialization hooks, primarily for gnome-libs */
void gdk_pixbuf_preinit(gpointer app, gpointer modinfo);
void gdk_pixbuf_postinit(gpointer app, gpointer modinfo);

233

234

235 236 237
#ifdef __cplusplus
}
#endif
238

239
#endif