Mercurial > projects > dwt-linux
diff dwt/internal/gtk/c/gdkpixbuftypes.d @ 11:5f725d09c076
Added dynamic loader from gtkd with cleanup and modifications. Tango only support. No OS.d tie-in yet.
author | John Reimer<terminal.node@gmail.com> |
---|---|
date | Sat, 05 Jan 2008 15:13:44 -0800 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dwt/internal/gtk/c/gdkpixbuftypes.d Sat Jan 05 15:13:44 2008 -0800 @@ -0,0 +1,443 @@ +/****************************************************************************** + + This file is part of gtkD. + + gtkD is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + gtkD 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with gtkD; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +******************************************************************************/ + +module dwt.internal.gtk.c.gdkpixbuftypes; + +public import dwt.internal.gtk.c.glibtypes; +public import dwt.internal.gtk.c.gobjecttypes; +public import dwt.internal.gtk.c.gdktypes; + +/****************************************************************************** + +******************************************************************************/ + +public alias void* AtkFocusHandler; +public struct AtkStateSet; +public struct AtkRectangle; + +/** + * An enumeration containing three sets of flags for a GdkPixdata struct: + * one for the used colorspace, one for the width of the samples and one + * for the encoding of the pixel data. + * GDK_PIXDATA_COLOR_TYPE_RGB + */ +public enum GdkPixdataType +{ + /+* colorspace + alpha +/ + GDK_PIXDATA_COLOR_TYPE_RGB = 0x01, + GDK_PIXDATA_COLOR_TYPE_RGBA = 0x02, + GDK_PIXDATA_COLOR_TYPE_MASK = 0xff, + /+* width, support 8bits only currently +/ + GDK_PIXDATA_SAMPLE_WIDTH_8 = 0x01 << 16, + GDK_PIXDATA_SAMPLE_WIDTH_MASK = 0x0f << 16, + /+* encoding +/ + GDK_PIXDATA_ENCODING_RAW = 0x01 << 24, + GDK_PIXDATA_ENCODING_RLE = 0x02 << 24, + GDK_PIXDATA_ENCODING_MASK = 0x0f << 24 +} +alias GdkPixdataType PixdataType; + +/** + * An enumeration which is used by gdk_pixdata_to_csource() to + * determine the form of C source to be generated. The three values + * GDK_PIXDATA_DUMP_PIXDATA_STREAM, GDK_PIXDATA_DUMP_PIXDATA_STRUCT + * and GDK_PIXDATA_DUMP_MACROS are mutually exclusive, as are + * GDK_PIXBUF_DUMP_GTYPES and GDK_PIXBUF_DUMP_CTYPES. The remaining + * elements are optional flags that can be freely added. + * GDK_PIXDATA_DUMP_PIXDATA_STREAM + */ +public enum GdkPixdataDumpType +{ + /+* type of source to save +/ + GDK_PIXDATA_DUMP_PIXDATA_STREAM = 0, + GDK_PIXDATA_DUMP_PIXDATA_STRUCT = 1, + GDK_PIXDATA_DUMP_MACROS = 2, + /+* type of variables to use +/ + GDK_PIXDATA_DUMP_GTYPES = 0, + GDK_PIXDATA_DUMP_CTYPES = 1 << 8, + GDK_PIXDATA_DUMP_STATIC = 1 << 9, + GDK_PIXDATA_DUMP_CONST = 1 << 10, + /+* save RLE decoder macro? +/ + GDK_PIXDATA_DUMP_RLE_DECODER = 1 << 16 +} +alias GdkPixdataDumpType PixdataDumpType; + +/** + * Flags which allow a module to specify further details about the supported + * operations. + * Since 2.2 + */ +public enum GdkPixbufFormatFlags +{ + WRITABLE = 1 << 0, + SCALABLE = 1 << 1, + THREADSAFE = 1 << 2 +} +alias GdkPixbufFormatFlags PixbufFormatFlags; + + +/** + * Main Gtk struct. + * A GdkPixdata contains pixbuf information in a form suitable for + * serialization and streaming. + * guint32magic; + */ +public struct GdkPixdata{} +// uint magic; /+* GDK_PIXBUF_MAGIC_NUMBER +/ +// gdk-pixbuf-inline.html +// int length; /+* <1 to disable length checks, otherwise: +// gdk-pixbuf-inline.html +// * GDK_PIXDATA_HEADER_LENGTH + pixelData length +// gdk-pixbuf-inline.html +// +/ +// gdk-pixbuf-inline.html +// uint pixdataType; /+* GdkPixdataType +/ +// gdk-pixbuf-inline.html +// uint rowstride; +// gdk-pixbuf-inline.html +// uint width; +// gdk-pixbuf-inline.html +// uint height; +// gdk-pixbuf-inline.html +// byte *pixelData; +// gdk-pixbuf-inline.html + + +/** + * Main Gtk struct. + * And opaque struct representing an animation. + */ +public struct GdkPixbufAnimation{} + + +/** + * And opaque struct representing an iterator which points to a + * certain position in an animation. + */ +public struct GdkPixbufAnimationIter{} + + +/** + * An + */ +public struct GdkPixbufSimpleAnim{} + + +/** + * Main Gtk struct. + * The GdkPixbufLoader struct contains only private + * fields. + */ +public struct GdkPixbufLoader{} + + +/** + * Main Gtk struct. + * A GdkPixbufFormat contains information about the image format accepted by a + * module. Only modules should access the fields directly, applications should + * use the gdk_pixbuf_format_* functions. + * gchar*name; + * the name of the image format. + * GdkPixbufModulePattern*signature; + * the signature of the module. + * gchar*domain; + * the message domain for the description. + * gchar*description; + * a description of the image format. + * gchar**mime_types; + * a NULL-terminated array of MIME types for the image format. + * gchar**extensions; + * a NULL-terminated array of typical filename extensions for the + * image format. + * guint32flags; + * a combination of GdkPixbufFormatFlags. + * gbooleandisabled; + * a boolean determining whether the loader is disabled. + * gchar*license; + * a string containing license information, typically set to + */ +public struct GdkPixbufFormat{} +// char *name; +// gdk-pixbuf-Module-Interface.html +// GdkPixbufModulePattern *signature; +// gdk-pixbuf-Module-Interface.html +// char *domain; +// gdk-pixbuf-Module-Interface.html +// char *description; +// gdk-pixbuf-Module-Interface.html +// char **mimeTypes; +// gdk-pixbuf-Module-Interface.html +// char **extensions; +// gdk-pixbuf-Module-Interface.html +// uint flags; +// gdk-pixbuf-Module-Interface.html +// int disabled; +// gdk-pixbuf-Module-Interface.html +// char *license; +// gdk-pixbuf-Module-Interface.html + + +/** + * The signature of a module is a set of prefixes. Prefixes are encoded as + * pairs of ordinary strings, where the second string, called the mask, if + * not NULL, must be of the same length as the first one and may contain + * ' ', '!', 'x', 'z', and 'n' to indicate bytes that must be matched, + * not matched, "don't-care"-bytes, zeros and non-zeros. + * Each prefix has an associated integer that describes the relevance of + * the prefix, with 0 meaning a mismatch and 100 a "perfect match". + * Starting with gdk-pixbuf 2.8, the first byte of the mask may be '*', + * indicating an unanchored pattern that matches not only at the beginning, + * but also in the middle. Versions prior to 2.8 will interpret the '*' + * like an 'x'. + * The signature of a module is stored as an array of + * GdkPixbufModulePatterns. The array is terminated by a pattern + * where the prefix is NULL. + * GdkPixbufModulePattern *signature[] = { + */ +public struct GdkPixbufModulePattern{} +// char *prefix; +// gdk-pixbuf-Module-Interface.html +// char *mask; +// gdk-pixbuf-Module-Interface.html +// int relevance; +// gdk-pixbuf-Module-Interface.html + + +/** + * A GdkPixbufModule contains the necessary functions to load and save + * images in a certain file format. + * A GdkPixbufModule can be loaded dynamically from a GModule. + * Each loadable module must contain a GdkPixbufModuleFillVtableFunc function + * named fill_vtable, which will get called when the module + * is loaded and must set the function pointers of the GdkPixbufModule. + * char*module_name; + * the name of the module, usually the same as the + */ +public struct GdkPixbufModule{} +// char *moduleName; +// gdk-pixbuf-Module-Interface.html +// char *modulePath; +// gdk-pixbuf-Module-Interface.html +// GModule *modul; +// gdk-pixbuf-Module-Interface.html +// GdkPixbufFormat *info; +// gdk-pixbuf-Module-Interface.html +// GdkPixbuf *(* load) (FILE *f, +// gdk-pixbuf-Module-Interface.html +// GError **error); +// gdk-pixbuf-Module-Interface.html +// GdkPixbuf *(* loadXpmData) ( char **data); +// gdk-pixbuf-Module-Interface.html +// /+* Incremental loading +/ +// gdk-pixbuf-Module-Interface.html +// void* (* beginLoad) (GdkPixbufModuleSizeFunc sizeFunc, +// gdk-pixbuf-Module-Interface.html +// GdkPixbufModulePreparedFunc prepareFunc, +// gdk-pixbuf-Module-Interface.html +// GdkPixbufModuleUpdatedFunc updateFunc, +// gdk-pixbuf-Module-Interface.html +// void* userData, +// gdk-pixbuf-Module-Interface.html +// GError **error); +// gdk-pixbuf-Module-Interface.html +// int (* stopLoad) (void* context, +// gdk-pixbuf-Module-Interface.html +// GError **error); +// gdk-pixbuf-Module-Interface.html +// int (* loadIncrement) (void* context, +// gdk-pixbuf-Module-Interface.html +// char *buf, +// gdk-pixbuf-Module-Interface.html +// uint size, +// gdk-pixbuf-Module-Interface.html +// GError **error); +// gdk-pixbuf-Module-Interface.html +// /+* Animation loading +/ +// gdk-pixbuf-Module-Interface.html +// GdkPixbufAnimation *(* loadAnimation) (FILE *f, +// gdk-pixbuf-Module-Interface.html +// GError **error); +// gdk-pixbuf-Module-Interface.html +// /+* Saving +/ +// gdk-pixbuf-Module-Interface.html +// int (* save) (FILE *f, +// gdk-pixbuf-Module-Interface.html +// GdkPixbuf *pixbuf, +// gdk-pixbuf-Module-Interface.html +// char **paramKeys, +// gdk-pixbuf-Module-Interface.html +// char **paramValues, +// gdk-pixbuf-Module-Interface.html +// GError **error); +// gdk-pixbuf-Module-Interface.html +// int (*saveToCallback) (GdkPixbufSaveFunc saveFunc, +// gdk-pixbuf-Module-Interface.html +// void* userData, +// gdk-pixbuf-Module-Interface.html +// GdkPixbuf *pixbuf, +// gdk-pixbuf-Module-Interface.html +// char **optionKeys, +// gdk-pixbuf-Module-Interface.html +// char **optionValues, +// gdk-pixbuf-Module-Interface.html +// GError **error); +// gdk-pixbuf-Module-Interface.html + + +/** + * Modules supporting animations must derive a type from + * GdkPixbufAnimation, providing suitable implementations of the + * virtual functions. + * GObjectClassparent_class; + * the parent class + * is_static_image() + * returns whether the given animation is just a static image. + * get_static_image() + * returns a static image representing the given animation. + * get_size() + * fills width and height with the frame size of the animation. + * get_iter() + * returns an iterator for the given animation. + */ +public struct GdkPixbufAnimationClass{} +// GObjectClass parentClass; +// gdk-pixbuf-Module-Interface.html +// int (*isStaticImage) (GdkPixbufAnimation *anim); +// gdk-pixbuf-Module-Interface.html +// GdkPixbuf* (*getStaticImage) (GdkPixbufAnimation *anim); +// gdk-pixbuf-Module-Interface.html +// void (*getSize) (GdkPixbufAnimation *anim, +// gdk-pixbuf-Module-Interface.html +// int *width, +// gdk-pixbuf-Module-Interface.html +// int *height); +// gdk-pixbuf-Module-Interface.html +// GdkPixbufAnimationIter* (*getIter) (GdkPixbufAnimation *anim, +// gdk-pixbuf-Module-Interface.html +// GTimeVal *startTime); +// gdk-pixbuf-Module-Interface.html + + +/** + * Modules supporting animations must derive a type from + * GdkPixbufAnimationIter, providing suitable implementations of the + * virtual functions. + * GObjectClassparent_class; + * the parent class + * get_delay_time() + * returns the time in milliseconds that the current frame + */ +public struct GdkPixbufAnimationIterClass{} +// GObjectClass parentClass; +// gdk-pixbuf-Module-Interface.html +// int (*getDelayTime) (GdkPixbufAnimationIter *iter); +// gdk-pixbuf-Module-Interface.html +// GdkPixbuf* (*getPixbuf) (GdkPixbufAnimationIter *iter); +// gdk-pixbuf-Module-Interface.html +// int (*onCurrentlyLoadingFrame) (GdkPixbufAnimationIter *iter); +// gdk-pixbuf-Module-Interface.html +// int (*advance) (GdkPixbufAnimationIter *iter, +// gdk-pixbuf-Module-Interface.html +// GTimeVal *currentTime); +// gdk-pixbuf-Module-Interface.html + + +/* + * Defines the type of the function used to set the vtable of a + * GdkPixbufModule when it is loaded. + * module: + * a GdkPixbufModule. + * Since 2.2 + */ +// void (*GdkPixbufModuleFillVtableFunc) (GdkPixbufModule *module); +public typedef extern(C) void function (GdkPixbufModule*) GdkPixbufModuleFillVtableFunc; + +/* + * Defines the type of the function used to fill a + * GdkPixbufFormat structure with information about a module. + * info: + * a GdkPixbufFormat. + * Since 2.2 + */ +// void (*GdkPixbufModuleFillInfoFunc) (GdkPixbufFormat *info); +public typedef extern(C) void function (GdkPixbufFormat*) GdkPixbufModuleFillInfoFunc; + +/* + * Defines the type of the function that gets called once the size + * of the loaded image is known. + * The function is expected to set width and height to the desired + * size to which the image should be scaled. If a module has no efficient + * way to achieve the desired scaling during the loading of the image, it may + * either ignore the size request, or only approximate it -- gdk-pixbuf will + * then perform the required scaling on the completely loaded image. + * If the function sets width or height to zero, the module should interpret + * this as a hint that it will be closed soon and shouldn't allocate further + * resources. This convention is used to implement gdk_pixbuf_get_file_info() + * efficiently. + * width: + * pointer to a location containing the current image width + * height: + * pointer to a location containing the current image height + * user_data: + * the loader. + * Since 2.2 + */ +// void (*GdkPixbufModuleSizeFunc) (gint *width, gint *height, gpointer user_data); +public typedef extern(C) void function (gint*, gint*, void*) GdkPixbufModuleSizeFunc; + +/* + * Defines the type of the function that gets called once the initial + * setup of pixbuf is done. + * GdkPixbufLoader uses a function of this type to emit the + * "area_prepared" + * signal. + * pixbuf: + * the GdkPixbuf that is currently being loaded. + * anim: + * if an animation is being loaded, the GdkPixbufAnimation, else NULL. + * user_data: + * the loader. + * Since 2.2 + */ +// void (*GdkPixbufModulePreparedFunc) (GdkPixbuf *pixbuf, GdkPixbufAnimation *anim, gpointer user_data); +public typedef extern(C) void function (GdkPixbuf*, GdkPixbufAnimation*, void*) GdkPixbufModulePreparedFunc; + +/* + * Defines the type of the function that gets called every time a region + * of pixbuf is updated. + * GdkPixbufLoader uses a function of this type to emit the + * "area_updated" + * signal. + * pixbuf: + * the GdkPixbuf that is currently being loaded. + * x: + * the X origin of the updated area. + * y: + * the Y origin of the updated area. + * width: + * the width of the updated area. + * height: + * the height of the updated area. + * user_data: + * the loader. + * Since 2.2 + */ +// void (*GdkPixbufModuleUpdatedFunc) (GdkPixbuf *pixbuf, int x, int y, int width, int height, gpointer user_data); +public typedef extern(C) void function (GdkPixbuf*, int, int, int, int, void*) GdkPixbufModuleUpdatedFunc;