gdk-pixbuf-io.h 5.89 KB
Newer Older
1 2 3
/* GdkPixbuf library - Io handling.  This is an internal header for 
 * GdkPixbuf. You should never use it unless you are doing development for 
 * GdkPixbuf itself.
4 5 6 7 8 9 10
 *
 * 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>
 *          Jonathan Blandford <jrb@redhat.com>
11
 *          Michael Fulbright <drmike@redhat.com>
12 13
 *
 * This library is free software; you can redistribute it and/or
14
 * modify it under the terms of the GNU Lesser General Public
15 16 17 18 19 20
 * 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
21
 * Lesser General Public License for more details.
22
 *
23
 * You should have received a copy of the GNU Lesser General Public
24 25 26 27
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 */
28

29
#if !defined (GDK_PIXBUF_H_INSIDE) && !defined (GDK_PIXBUF_COMPILATION)
30 31 32
#error "Only <gdk-pixbuf/gdk-pixbuf.h> can be included directly."
#endif

33 34 35
#ifndef GDK_PIXBUF_IO_H
#define GDK_PIXBUF_IO_H

36
#include <stdio.h>
37 38 39 40
#include <glib.h>
#include <gmodule.h>
#include <gdk-pixbuf/gdk-pixbuf-core.h>
#include <gdk-pixbuf/gdk-pixbuf-animation.h>
41

42
G_BEGIN_DECLS
43

44 45
typedef struct _GdkPixbufFormat GdkPixbufFormat;
 
46 47
GType gdk_pixbuf_format_get_type (void) G_GNUC_CONST;

48
GSList    *gdk_pixbuf_get_formats            (void);
49 50 51 52 53 54
gchar     *gdk_pixbuf_format_get_name        (GdkPixbufFormat *format);
gchar     *gdk_pixbuf_format_get_description (GdkPixbufFormat *format);
gchar    **gdk_pixbuf_format_get_mime_types  (GdkPixbufFormat *format);
gchar    **gdk_pixbuf_format_get_extensions  (GdkPixbufFormat *format);
gboolean   gdk_pixbuf_format_is_writable     (GdkPixbufFormat *format);
gboolean   gdk_pixbuf_format_is_scalable     (GdkPixbufFormat *format);
55 56 57 58
gboolean   gdk_pixbuf_format_is_disabled     (GdkPixbufFormat *format);
void       gdk_pixbuf_format_set_disabled    (GdkPixbufFormat *format,
					      gboolean         disabled);
gchar     *gdk_pixbuf_format_get_license     (GdkPixbufFormat *format);
59

60 61 62
GdkPixbufFormat *gdk_pixbuf_get_file_info    (const gchar     *filename,
					      gint            *width, 
					      gint            *height);
63

64 65 66
GdkPixbufFormat *gdk_pixbuf_format_copy (const GdkPixbufFormat *format);
void             gdk_pixbuf_format_free (GdkPixbufFormat       *format);

67
#ifdef GDK_PIXBUF_ENABLE_BACKEND
68

69

70

71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
typedef void (* GdkPixbufModuleSizeFunc)           (gint *width, 
						    gint *height, 
						    gpointer user_data);

typedef void (* GdkPixbufModulePreparedFunc) (GdkPixbuf          *pixbuf,
					      GdkPixbufAnimation *anim,
					      gpointer            user_data);
typedef void (* GdkPixbufModuleUpdatedFunc)  (GdkPixbuf *pixbuf,
					      int        x,
					      int        y,
					      int        width,
					      int        height,
					      gpointer   user_data);

typedef struct _GdkPixbufModulePattern GdkPixbufModulePattern;
struct _GdkPixbufModulePattern {
87 88
	char *prefix;
	char *mask;
89 90
	int relevance;
};
Havoc Pennington's avatar
Havoc Pennington committed
91

92 93
typedef struct _GdkPixbufModule GdkPixbufModule;
struct _GdkPixbufModule {
94
	char *module_name;
95
	char *module_path;
96
	GModule *module;
97 98
	GdkPixbufFormat *info;
	
Havoc Pennington's avatar
Havoc Pennington committed
99 100
        GdkPixbuf *(* load) (FILE    *f,
                             GError **error);
101
        GdkPixbuf *(* load_xpm_data) (const char **data);
Havoc Pennington's avatar
Havoc Pennington committed
102 103

        /* Incremental loading */
104

105 106 107
        gpointer (* begin_load)     (GdkPixbufModuleSizeFunc size_func,
                                     GdkPixbufModulePreparedFunc prepare_func,
                                     GdkPixbufModuleUpdatedFunc update_func,
108 109 110 111
                                     gpointer user_data,
                                     GError **error);
        gboolean (* stop_load)      (gpointer context,
                                     GError **error);
112 113
        gboolean (* load_increment) (gpointer      context,
                                     const guchar *buf,
Havoc Pennington's avatar
Havoc Pennington committed
114 115
                                     guint         size,
                                     GError      **error);
116 117

	/* Animation loading */
Havoc Pennington's avatar
Havoc Pennington committed
118 119
	GdkPixbufAnimation *(* load_animation) (FILE    *f,
                                                GError **error);
120

121
        /* Saving */
122 123 124 125
        gboolean (* save) (FILE      *f,
                           GdkPixbuf *pixbuf,
                           gchar    **param_keys,
                           gchar    **param_values,
Havoc Pennington's avatar
Havoc Pennington committed
126
                           GError   **error);
127 128 129 130 131 132 133

        gboolean (*save_to_callback) (GdkPixbufSaveFunc save_func,
				      gpointer user_data,
				      GdkPixbuf *pixbuf,
				      gchar **option_keys,
				      gchar **option_values,
				      GError **error);
134
  
Matthias Clasen's avatar
Matthias Clasen committed
135
  /*< private >*/
136 137 138 139 140
	void (*_reserved1) (void); 
	void (*_reserved2) (void); 
	void (*_reserved3) (void); 
	void (*_reserved4) (void); 
	void (*_reserved5) (void); 
141

142
};
143

144 145 146 147 148 149 150 151 152 153 154
typedef void (* GdkPixbufModuleFillVtableFunc) (GdkPixbufModule *module);
typedef void (* GdkPixbufModuleFillInfoFunc) (GdkPixbufFormat *info);

/*  key/value pairs that can be attached by the pixbuf loader  */

gboolean gdk_pixbuf_set_option  (GdkPixbuf   *pixbuf,
                                 const gchar *key,
                                 const gchar *value);

typedef enum /*< skip >*/
{
155
  GDK_PIXBUF_FORMAT_WRITABLE = 1 << 0,
156 157
  GDK_PIXBUF_FORMAT_SCALABLE = 1 << 1,
  GDK_PIXBUF_FORMAT_THREADSAFE = 1 << 2
158 159 160 161 162 163 164 165 166 167
} GdkPixbufFormatFlags;

struct _GdkPixbufFormat {
  gchar *name;
  GdkPixbufModulePattern *signature;
  gchar *domain;
  gchar *description;
  gchar **mime_types;
  gchar **extensions;
  guint32 flags;
168 169
  gboolean disabled;
  gchar *license;
170
};
Havoc Pennington's avatar
Havoc Pennington committed
171

172
#endif /* GDK_PIXBUF_ENABLE_BACKEND */
173

174
G_END_DECLS
175

176
#endif /* GDK_PIXBUF_IO_H */