Add gdk_pixbuf_loader_new_with_type function, to allow handling image
2000-07-27 Elliot Lee <sopwith@redhat.com> * gtk/gdk-pixbuf-loader.[ch]: Add gdk_pixbuf_loader_new_with_type function, to allow handling image formats that cannot be detected by looking at content alone. gdk-pixbuf/ 2000-07-27 Elliot Lee <sopwith@redhat.com> * gdk-pixbuf-io.h, gdk-pixbuf-io.c: Add gdk_pixbuf_get_named_module() function to facilitate above change * io-bmp.c: Don't malloc a temporary buffer - use stack instead. * io-wbmp.c, pixbufloader_wbmp.defs, gdk-pixbuf-io.c, Makefile: Implement loader for WBMP format. **NOTE: I haven't tested this yet, I need to sync it to another machine, but it if it is broken I'm already working on fixing it
This commit is contained in:
parent
de9e8979fd
commit
3ddaa73578
@ -1,3 +1,9 @@
|
|||||||
|
2000-07-27 Elliot Lee <sopwith@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gdk-pixbuf-loader.[ch]: Add gdk_pixbuf_loader_new_with_type
|
||||||
|
function, to allow handling image formats that cannot be detected
|
||||||
|
by looking at content alone.
|
||||||
|
|
||||||
Thu Jul 27 13:13:21 BST 2000 Tony Gale <gale@gtk.org>
|
Thu Jul 27 13:13:21 BST 2000 Tony Gale <gale@gtk.org>
|
||||||
|
|
||||||
* docs/tutorial/*.gif *.jpg *.eps
|
* docs/tutorial/*.gif *.jpg *.eps
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
2000-07-27 Elliot Lee <sopwith@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gdk-pixbuf-loader.[ch]: Add gdk_pixbuf_loader_new_with_type
|
||||||
|
function, to allow handling image formats that cannot be detected
|
||||||
|
by looking at content alone.
|
||||||
|
|
||||||
Thu Jul 27 13:13:21 BST 2000 Tony Gale <gale@gtk.org>
|
Thu Jul 27 13:13:21 BST 2000 Tony Gale <gale@gtk.org>
|
||||||
|
|
||||||
* docs/tutorial/*.gif *.jpg *.eps
|
* docs/tutorial/*.gif *.jpg *.eps
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
2000-07-27 Elliot Lee <sopwith@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gdk-pixbuf-loader.[ch]: Add gdk_pixbuf_loader_new_with_type
|
||||||
|
function, to allow handling image formats that cannot be detected
|
||||||
|
by looking at content alone.
|
||||||
|
|
||||||
Thu Jul 27 13:13:21 BST 2000 Tony Gale <gale@gtk.org>
|
Thu Jul 27 13:13:21 BST 2000 Tony Gale <gale@gtk.org>
|
||||||
|
|
||||||
* docs/tutorial/*.gif *.jpg *.eps
|
* docs/tutorial/*.gif *.jpg *.eps
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
2000-07-27 Elliot Lee <sopwith@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gdk-pixbuf-loader.[ch]: Add gdk_pixbuf_loader_new_with_type
|
||||||
|
function, to allow handling image formats that cannot be detected
|
||||||
|
by looking at content alone.
|
||||||
|
|
||||||
Thu Jul 27 13:13:21 BST 2000 Tony Gale <gale@gtk.org>
|
Thu Jul 27 13:13:21 BST 2000 Tony Gale <gale@gtk.org>
|
||||||
|
|
||||||
* docs/tutorial/*.gif *.jpg *.eps
|
* docs/tutorial/*.gif *.jpg *.eps
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
2000-07-27 Elliot Lee <sopwith@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gdk-pixbuf-loader.[ch]: Add gdk_pixbuf_loader_new_with_type
|
||||||
|
function, to allow handling image formats that cannot be detected
|
||||||
|
by looking at content alone.
|
||||||
|
|
||||||
Thu Jul 27 13:13:21 BST 2000 Tony Gale <gale@gtk.org>
|
Thu Jul 27 13:13:21 BST 2000 Tony Gale <gale@gtk.org>
|
||||||
|
|
||||||
* docs/tutorial/*.gif *.jpg *.eps
|
* docs/tutorial/*.gif *.jpg *.eps
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
2000-07-27 Elliot Lee <sopwith@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gdk-pixbuf-loader.[ch]: Add gdk_pixbuf_loader_new_with_type
|
||||||
|
function, to allow handling image formats that cannot be detected
|
||||||
|
by looking at content alone.
|
||||||
|
|
||||||
Thu Jul 27 13:13:21 BST 2000 Tony Gale <gale@gtk.org>
|
Thu Jul 27 13:13:21 BST 2000 Tony Gale <gale@gtk.org>
|
||||||
|
|
||||||
* docs/tutorial/*.gif *.jpg *.eps
|
* docs/tutorial/*.gif *.jpg *.eps
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
2000-07-27 Elliot Lee <sopwith@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gdk-pixbuf-loader.[ch]: Add gdk_pixbuf_loader_new_with_type
|
||||||
|
function, to allow handling image formats that cannot be detected
|
||||||
|
by looking at content alone.
|
||||||
|
|
||||||
Thu Jul 27 13:13:21 BST 2000 Tony Gale <gale@gtk.org>
|
Thu Jul 27 13:13:21 BST 2000 Tony Gale <gale@gtk.org>
|
||||||
|
|
||||||
* docs/tutorial/*.gif *.jpg *.eps
|
* docs/tutorial/*.gif *.jpg *.eps
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2000-07-27 Elliot Lee <sopwith@redhat.com>
|
||||||
|
* gdk-pixbuf-io.h, gdk-pixbuf-io.c: Add gdk_pixbuf_get_named_module() function to facilitate above change
|
||||||
|
* io-wbmp.c, pixbufloader_wbmp.defs, gdk-pixbuf-io.c, Makefile: Implement loader for WBMP format.
|
||||||
|
* io-bmp.c: Don't malloc a temporary buffer - use stack instead.
|
||||||
|
|
||||||
2000-07-23 Tor Lillqvist <tml@iki.fi>
|
2000-07-23 Tor Lillqvist <tml@iki.fi>
|
||||||
|
|
||||||
Win32 build setup:
|
Win32 build setup:
|
||||||
|
@ -68,6 +68,12 @@ libpixbufloader_bmp_la_SOURCES = io-bmp.c
|
|||||||
libpixbufloader_bmp_la_LDFLAGS = -version-info 1:0:0 -module
|
libpixbufloader_bmp_la_LDFLAGS = -version-info 1:0:0 -module
|
||||||
libpixbufloader_bmp_la_LIBADD =
|
libpixbufloader_bmp_la_LIBADD =
|
||||||
|
|
||||||
|
#
|
||||||
|
# The WBMP loader
|
||||||
|
#
|
||||||
|
libpixbufloader_wbmp_la_SOURCES = io-wbmp.c
|
||||||
|
libpixbufloader_wbmp_la_LDFLAGS = -version-info 1:0:0 -module
|
||||||
|
|
||||||
if HAVE_PNG
|
if HAVE_PNG
|
||||||
PNG_LIB = libpixbufloader-png.la
|
PNG_LIB = libpixbufloader-png.la
|
||||||
endif
|
endif
|
||||||
@ -92,6 +98,8 @@ PNM_LIB = libpixbufloader-pnm.la
|
|||||||
|
|
||||||
BMP_LIB = libpixbufloader-bmp.la
|
BMP_LIB = libpixbufloader-bmp.la
|
||||||
|
|
||||||
|
WBMP_LIB = libpixbufloader-wbmp.la
|
||||||
|
|
||||||
if BUILD_DYNAMIC_MODULES
|
if BUILD_DYNAMIC_MODULES
|
||||||
|
|
||||||
loader_LTLIBRARIES = \
|
loader_LTLIBRARIES = \
|
||||||
@ -103,7 +111,8 @@ loader_LTLIBRARIES = \
|
|||||||
$(XPM_LIB) \
|
$(XPM_LIB) \
|
||||||
$(TIFF_LIB) \
|
$(TIFF_LIB) \
|
||||||
$(PNM_LIB) \
|
$(PNM_LIB) \
|
||||||
$(BMP_LIB)
|
$(BMP_LIB) \
|
||||||
|
$(WBMP_LIB)
|
||||||
|
|
||||||
|
|
||||||
extra_sources =
|
extra_sources =
|
||||||
@ -119,7 +128,8 @@ extra_sources = $(libpixbufloader_png_la_SOURCES) \
|
|||||||
$(libpixbufloader_ras_la_SOURCES) \
|
$(libpixbufloader_ras_la_SOURCES) \
|
||||||
$(libpixbufloader_tiff_la_SOURCES) \
|
$(libpixbufloader_tiff_la_SOURCES) \
|
||||||
$(libpixbufloader_pnm_la_SOURCES) \
|
$(libpixbufloader_pnm_la_SOURCES) \
|
||||||
$(libpixbufloader_bmp_la_SOURCES)
|
$(libpixbufloader_bmp_la_SOURCES) \
|
||||||
|
$(libpixbufloader_wbmp_la_SOURCES)
|
||||||
|
|
||||||
builtin_libraries =
|
builtin_libraries =
|
||||||
endif
|
endif
|
||||||
@ -180,7 +190,8 @@ EXTRA_DIST = \
|
|||||||
pixbuf_ras.def \
|
pixbuf_ras.def \
|
||||||
pixbuf_gif.def \
|
pixbuf_gif.def \
|
||||||
pixbuf_png.def \
|
pixbuf_png.def \
|
||||||
pixbuf_tiff.def
|
pixbuf_tiff.def \
|
||||||
|
pixbuf_wbmp.def
|
||||||
|
|
||||||
makefile.mingw: $(top_builddir)/config.status $(top_srcdir)/gdk-pixbuf/makefile.mingw.in
|
makefile.mingw: $(top_builddir)/config.status $(top_srcdir)/gdk-pixbuf/makefile.mingw.in
|
||||||
cd $(top_builddir) && CONFIG_FILES=gdk-pixbuf/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
cd $(top_builddir) && CONFIG_FILES=gdk-pixbuf/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||||
|
@ -172,6 +172,18 @@ pixbuf_check_bmp (guchar *buffer, int size)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
pixbuf_check_wbmp (guchar *buffer, int size)
|
||||||
|
{
|
||||||
|
if(size < 10) /* at least */
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if(buffer[0] == '\0' /* We only handle type 0 wbmp's for now */)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
static GdkPixbufModule file_formats [] = {
|
static GdkPixbufModule file_formats [] = {
|
||||||
{ "png", pixbuf_check_png, NULL, NULL, NULL, NULL, NULL, NULL },
|
{ "png", pixbuf_check_png, NULL, NULL, NULL, NULL, NULL, NULL },
|
||||||
{ "jpeg", pixbuf_check_jpeg, NULL, NULL, NULL, NULL, NULL, NULL },
|
{ "jpeg", pixbuf_check_jpeg, NULL, NULL, NULL, NULL, NULL, NULL },
|
||||||
@ -183,6 +195,7 @@ static GdkPixbufModule file_formats [] = {
|
|||||||
{ "ras", pixbuf_check_sunras, NULL, NULL, NULL, NULL, NULL, NULL },
|
{ "ras", pixbuf_check_sunras, NULL, NULL, NULL, NULL, NULL, NULL },
|
||||||
{ "ico", pixbuf_check_ico, NULL, NULL, NULL, NULL, NULL, NULL },
|
{ "ico", pixbuf_check_ico, NULL, NULL, NULL, NULL, NULL, NULL },
|
||||||
{ "bmp", pixbuf_check_bmp, NULL, NULL, NULL, NULL, NULL, NULL },
|
{ "bmp", pixbuf_check_bmp, NULL, NULL, NULL, NULL, NULL, NULL },
|
||||||
|
{ "wbmp", pixbuf_check_wbmp, NULL, NULL, NULL, NULL, NULL, NULL }
|
||||||
{ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }
|
{ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -336,39 +349,53 @@ gdk_pixbuf_load_module (GdkPixbufModule *image_module)
|
|||||||
#define m_load_increment(type) extern gboolean mname(type,load_increment) (gpointer context, const guchar *buf, guint size);
|
#define m_load_increment(type) extern gboolean mname(type,load_increment) (gpointer context, const guchar *buf, guint size);
|
||||||
#define m_load_animation(type) extern GdkPixbufAnimation * mname(type,load_animation) (FILE *f);
|
#define m_load_animation(type) extern GdkPixbufAnimation * mname(type,load_animation) (FILE *f);
|
||||||
|
|
||||||
|
/* PNG */
|
||||||
m_load (png);
|
m_load (png);
|
||||||
m_begin_load (png);
|
m_begin_load (png);
|
||||||
m_load_increment (png);
|
m_load_increment (png);
|
||||||
m_stop_load (png);
|
m_stop_load (png);
|
||||||
|
/* BMP */
|
||||||
m_load (bmp);
|
m_load (bmp);
|
||||||
m_begin_load (bmp);
|
m_begin_load (bmp);
|
||||||
m_load_increment (bmp);
|
m_load_increment (bmp);
|
||||||
m_stop_load (bmp);
|
m_stop_load (bmp);
|
||||||
|
/* WBMP */
|
||||||
|
m_load (wbmp);
|
||||||
|
m_begin_load (wbmp);
|
||||||
|
m_load_increment (wbmp);
|
||||||
|
m_stop_load (wbmp);
|
||||||
|
/* GIF */
|
||||||
m_load (gif);
|
m_load (gif);
|
||||||
m_begin_load (gif);
|
m_begin_load (gif);
|
||||||
m_load_increment (gif);
|
m_load_increment (gif);
|
||||||
m_stop_load (gif);
|
m_stop_load (gif);
|
||||||
m_load_animation (gif);
|
m_load_animation (gif);
|
||||||
|
/* ICO */
|
||||||
m_load (ico);
|
m_load (ico);
|
||||||
m_begin_load (ico);
|
m_begin_load (ico);
|
||||||
m_load_increment (ico);
|
m_load_increment (ico);
|
||||||
m_stop_load (ico);
|
m_stop_load (ico);
|
||||||
|
/* JPEG */
|
||||||
m_load (jpeg);
|
m_load (jpeg);
|
||||||
m_begin_load (jpeg);
|
m_begin_load (jpeg);
|
||||||
m_load_increment (jpeg);
|
m_load_increment (jpeg);
|
||||||
m_stop_load (jpeg);
|
m_stop_load (jpeg);
|
||||||
|
/* PNM */
|
||||||
m_load (pnm);
|
m_load (pnm);
|
||||||
m_begin_load (pnm);
|
m_begin_load (pnm);
|
||||||
m_load_increment (pnm);
|
m_load_increment (pnm);
|
||||||
m_stop_load (pnm);
|
m_stop_load (pnm);
|
||||||
|
/* RAS */
|
||||||
m_load (ras);
|
m_load (ras);
|
||||||
m_begin_load (ras);
|
m_begin_load (ras);
|
||||||
m_load_increment (ras);
|
m_load_increment (ras);
|
||||||
m_stop_load (ras);
|
m_stop_load (ras);
|
||||||
|
/* TIFF */
|
||||||
m_load (tiff);
|
m_load (tiff);
|
||||||
m_begin_load (tiff);
|
m_begin_load (tiff);
|
||||||
m_load_increment (tiff);
|
m_load_increment (tiff);
|
||||||
m_stop_load (tiff);
|
m_stop_load (tiff);
|
||||||
|
/* XPM */
|
||||||
m_load (xpm);
|
m_load (xpm);
|
||||||
m_load_xpm_data (xpm);
|
m_load_xpm_data (xpm);
|
||||||
|
|
||||||
@ -393,6 +420,14 @@ gdk_pixbuf_load_module (GdkPixbufModule *image_module)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (strcmp (image_module->module_name, "wbmp") == 0){
|
||||||
|
image_module->load = mname (wbmp,load);
|
||||||
|
image_module->begin_load = mname (wbmp,begin_load);
|
||||||
|
image_module->load_increment = mname (wbmp,load_increment);
|
||||||
|
image_module->stop_load = mname (wbmp,stop_load);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (strcmp (image_module->module_name, "gif") == 0){
|
if (strcmp (image_module->module_name, "gif") == 0){
|
||||||
image_module->load = mname (gif,load);
|
image_module->load = mname (gif,load);
|
||||||
image_module->begin_load = mname (gif,begin_load);
|
image_module->begin_load = mname (gif,begin_load);
|
||||||
@ -450,6 +485,19 @@ gdk_pixbuf_load_module (GdkPixbufModule *image_module)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
GdkPixbufModule *
|
||||||
|
gdk_pixbuf_get_named_module (const char *name)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; file_formats [i].module_name; i++) {
|
||||||
|
if (!strcmp(name, file_formats[i].module_name))
|
||||||
|
return &(file_formats[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
GdkPixbufModule *
|
GdkPixbufModule *
|
||||||
gdk_pixbuf_get_module (guchar *buffer, guint size)
|
gdk_pixbuf_get_module (guchar *buffer, guint size)
|
||||||
{
|
{
|
||||||
|
@ -73,6 +73,7 @@ struct _GdkPixbufModule {
|
|||||||
|
|
||||||
|
|
||||||
GdkPixbufModule *gdk_pixbuf_get_module (guchar *buffer, guint size);
|
GdkPixbufModule *gdk_pixbuf_get_module (guchar *buffer, guint size);
|
||||||
|
GdkPixbufModule *gdk_pixbuf_get_named_module (const char *name);
|
||||||
void gdk_pixbuf_load_module (GdkPixbufModule *image_module);
|
void gdk_pixbuf_load_module (GdkPixbufModule *image_module);
|
||||||
|
|
||||||
|
|
||||||
|
@ -337,25 +337,15 @@ gdk_pixbuf_loader_animation_done (GdkPixbuf *pixbuf,
|
|||||||
gtk_signal_emit (GTK_OBJECT (loader), pixbuf_loader_signals[ANIMATION_DONE]);
|
gtk_signal_emit (GTK_OBJECT (loader), pixbuf_loader_signals[ANIMATION_DONE]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* gdk_pixbuf_loader_new:
|
|
||||||
*
|
|
||||||
* Creates a new pixbuf loader object.
|
|
||||||
*
|
|
||||||
* Return value: A newly-created pixbuf loader.
|
|
||||||
**/
|
|
||||||
GdkPixbufLoader *
|
|
||||||
gdk_pixbuf_loader_new (void)
|
|
||||||
{
|
|
||||||
return g_object_new (GDK_TYPE_PIXBUF_LOADER, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
gdk_pixbuf_loader_load_module (GdkPixbufLoader *loader)
|
gdk_pixbuf_loader_load_module (GdkPixbufLoader *loader, const char *image_type)
|
||||||
{
|
{
|
||||||
GdkPixbufLoaderPrivate *priv = loader->private;
|
GdkPixbufLoaderPrivate *priv = loader->private;
|
||||||
|
|
||||||
priv->image_module = gdk_pixbuf_get_module (priv->header_buf, priv->header_buf_offset);
|
if(image_type)
|
||||||
|
priv->image_module = gdk_pixbuf_get_named_module (image_type);
|
||||||
|
else
|
||||||
|
priv->image_module = gdk_pixbuf_get_module (priv->header_buf, priv->header_buf_offset);
|
||||||
|
|
||||||
if (priv->image_module == NULL)
|
if (priv->image_module == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
@ -387,7 +377,8 @@ gdk_pixbuf_loader_load_module (GdkPixbufLoader *loader)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (priv->image_module->load_increment (priv->context, priv->header_buf, priv->header_buf_offset))
|
if (priv->header_buf_offset
|
||||||
|
&& priv->image_module->load_increment (priv->context, priv->header_buf, priv->header_buf_offset))
|
||||||
return priv->header_buf_offset;
|
return priv->header_buf_offset;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -465,6 +456,38 @@ gdk_pixbuf_loader_write (GdkPixbufLoader *loader,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gdk_pixbuf_loader_new:
|
||||||
|
*
|
||||||
|
* Creates a new pixbuf loader object.
|
||||||
|
*
|
||||||
|
* Return value: A newly-created pixbuf loader.
|
||||||
|
**/
|
||||||
|
GdkPixbufLoader *
|
||||||
|
gdk_pixbuf_loader_new (void)
|
||||||
|
{
|
||||||
|
return g_object_new (GDK_TYPE_PIXBUF_LOADER, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gdk_pixbuf_loader_new_with_type:
|
||||||
|
*
|
||||||
|
* Creates a new pixbuf loader object.
|
||||||
|
*
|
||||||
|
* Return value: A newly-created pixbuf loader.
|
||||||
|
**/
|
||||||
|
GdkPixbufLoader *
|
||||||
|
gdk_pixbuf_loader_new_with_type (const char *image_type)
|
||||||
|
{
|
||||||
|
GdkPixbufLoader *retval;
|
||||||
|
|
||||||
|
retval = g_object_new (GDK_TYPE_PIXBUF_LOADER, NULL);
|
||||||
|
|
||||||
|
gdk_pixbuf_loader_load_module(retval, image_type);
|
||||||
|
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gdk_pixbuf_loader_get_pixbuf:
|
* gdk_pixbuf_loader_get_pixbuf:
|
||||||
* @loader: A pixbuf loader.
|
* @loader: A pixbuf loader.
|
||||||
|
@ -72,6 +72,7 @@ struct _GdkPixbufLoaderClass
|
|||||||
|
|
||||||
GtkType gdk_pixbuf_loader_get_type (void);
|
GtkType gdk_pixbuf_loader_get_type (void);
|
||||||
GdkPixbufLoader * gdk_pixbuf_loader_new (void);
|
GdkPixbufLoader * gdk_pixbuf_loader_new (void);
|
||||||
|
GdkPixbufLoader * gdk_pixbuf_loader_new_with_type (const char *image_type);
|
||||||
gboolean gdk_pixbuf_loader_write (GdkPixbufLoader *loader,
|
gboolean gdk_pixbuf_loader_write (GdkPixbufLoader *loader,
|
||||||
const guchar *buf,
|
const guchar *buf,
|
||||||
gsize count);
|
gsize count);
|
||||||
|
@ -186,7 +186,7 @@ gboolean gdk_pixbuf__bmp_image_load_increment(gpointer data, guchar * buf,
|
|||||||
generic_image_load enters gdk-pixbuf-io. */
|
generic_image_load enters gdk-pixbuf-io. */
|
||||||
GdkPixbuf *gdk_pixbuf__bmp_image_load(FILE * f)
|
GdkPixbuf *gdk_pixbuf__bmp_image_load(FILE * f)
|
||||||
{
|
{
|
||||||
guchar *membuf;
|
guchar membuf[4096];
|
||||||
size_t length;
|
size_t length;
|
||||||
struct bmp_progressive_state *State;
|
struct bmp_progressive_state *State;
|
||||||
|
|
||||||
@ -194,22 +194,16 @@ GdkPixbuf *gdk_pixbuf__bmp_image_load(FILE * f)
|
|||||||
|
|
||||||
State =
|
State =
|
||||||
gdk_pixbuf__bmp_image_begin_load(NULL, NULL, NULL, NULL, NULL);
|
gdk_pixbuf__bmp_image_begin_load(NULL, NULL, NULL, NULL, NULL);
|
||||||
membuf = g_malloc(4096);
|
|
||||||
|
|
||||||
g_assert(membuf != NULL);
|
|
||||||
|
|
||||||
|
|
||||||
while (feof(f) == 0) {
|
while (feof(f) == 0) {
|
||||||
length = fread(membuf, 1, 4096, f);
|
length = fread(membuf, 1, 4096, f);
|
||||||
if (length > 0)
|
if (length > 0)
|
||||||
|
|
||||||
(void)
|
(void)
|
||||||
gdk_pixbuf__bmp_image_load_increment(State,
|
gdk_pixbuf__bmp_image_load_increment(State,
|
||||||
membuf,
|
membuf,
|
||||||
length);
|
length);
|
||||||
|
|
||||||
}
|
}
|
||||||
g_free(membuf);
|
|
||||||
if (State->pixbuf != NULL)
|
if (State->pixbuf != NULL)
|
||||||
gdk_pixbuf_ref(State->pixbuf);
|
gdk_pixbuf_ref(State->pixbuf);
|
||||||
|
|
||||||
|
314
gdk-pixbuf/io-wbmp.c
Normal file
314
gdk-pixbuf/io-wbmp.c
Normal file
@ -0,0 +1,314 @@
|
|||||||
|
/* GdkPixbuf library - Wireless Bitmap image loader
|
||||||
|
*
|
||||||
|
* Copyright (C) 2000 Red Hat, Inc.
|
||||||
|
*
|
||||||
|
* Authors: Elliot Lee <sopwith@redhat.com
|
||||||
|
*
|
||||||
|
* Based on io-bmp.c
|
||||||
|
*
|
||||||
|
* This library 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 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
Known bugs:
|
||||||
|
* Since this is based off the libgd implementation, no extended headers implemented (not required for a WAP client)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include "gdk-pixbuf-private.h"
|
||||||
|
#include "gdk-pixbuf-io.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Progressive loading */
|
||||||
|
|
||||||
|
struct wbmp_progressive_state {
|
||||||
|
ModulePreparedNotifyFunc prepared_func;
|
||||||
|
ModuleUpdatedNotifyFunc updated_func;
|
||||||
|
gpointer user_data;
|
||||||
|
|
||||||
|
gboolean need_type : 1;
|
||||||
|
gboolean need_header : 1;
|
||||||
|
gboolean need_width : 1;
|
||||||
|
gboolean need_height : 1;
|
||||||
|
gboolean needmore : 1;
|
||||||
|
gboolean call_progressive_updates : 1;
|
||||||
|
|
||||||
|
guchar last_buf[16]; /* Just needs to be big enough to hold the largest datum requestable via 'getin' */
|
||||||
|
guint last_len;
|
||||||
|
|
||||||
|
int type;
|
||||||
|
int width, height, curx, cury;
|
||||||
|
|
||||||
|
GdkPixbuf *pixbuf; /* Our "target" */
|
||||||
|
};
|
||||||
|
|
||||||
|
gpointer
|
||||||
|
gdk_pixbuf__wbmp_image_begin_load(ModulePreparedNotifyFunc prepared_func,
|
||||||
|
ModuleUpdatedNotifyFunc updated_func,
|
||||||
|
ModuleFrameDoneNotifyFunc frame_done_func,
|
||||||
|
ModuleAnimationDoneNotifyFunc
|
||||||
|
anim_done_func, gpointer user_data);
|
||||||
|
|
||||||
|
void gdk_pixbuf__wbmp_image_stop_load(gpointer data);
|
||||||
|
gboolean gdk_pixbuf__wbmp_image_load_increment(gpointer data, guchar * buf,
|
||||||
|
guint size);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Shared library entry point --> This should be removed when
|
||||||
|
generic_image_load enters gdk-pixbuf-io. */
|
||||||
|
GdkPixbuf *gdk_pixbuf__wbmp_image_load(FILE * f)
|
||||||
|
{
|
||||||
|
size_t length;
|
||||||
|
char membuf[4096];
|
||||||
|
struct bmp_progressive_state *State;
|
||||||
|
|
||||||
|
GdkPixbuf *pb;
|
||||||
|
|
||||||
|
State = gdk_pixbuf__wbmp_image_begin_load(NULL, NULL, NULL, NULL, NULL);
|
||||||
|
|
||||||
|
while (feof(f) == 0) {
|
||||||
|
length = fread(membuf, 1, 4096, f);
|
||||||
|
if (length > 0)
|
||||||
|
gdk_pixbuf__wbmp_image_load_increment(State,
|
||||||
|
membuf,
|
||||||
|
length);
|
||||||
|
|
||||||
|
}
|
||||||
|
if (State->pixbuf != NULL)
|
||||||
|
gdk_pixbuf_ref(State->pixbuf);
|
||||||
|
|
||||||
|
pb = State->pixbuf;
|
||||||
|
|
||||||
|
gdk_pixbuf__bmp_image_stop_load(State);
|
||||||
|
return pb;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* func - called when we have pixmap created (but no image data)
|
||||||
|
* user_data - passed as arg 1 to func
|
||||||
|
* return context (opaque to user)
|
||||||
|
*/
|
||||||
|
|
||||||
|
gpointer
|
||||||
|
gdk_pixbuf__wbmp_image_begin_load(ModulePreparedNotifyFunc prepared_func,
|
||||||
|
ModuleUpdatedNotifyFunc updated_func,
|
||||||
|
ModuleFrameDoneNotifyFunc frame_done_func,
|
||||||
|
ModuleAnimationDoneNotifyFunc
|
||||||
|
anim_done_func, gpointer user_data)
|
||||||
|
{
|
||||||
|
struct bmp_progressive_state *context;
|
||||||
|
|
||||||
|
context = g_new0(struct bmp_progressive_state, 1);
|
||||||
|
context->prepared_func = prepared_func;
|
||||||
|
context->updated_func = updated_func;
|
||||||
|
context->user_data = user_data;
|
||||||
|
|
||||||
|
context->needmore = context->need_type = context->need_header = context->need_width = context->need_height = TRUE;
|
||||||
|
context->call_progressive_updates = TRUE;
|
||||||
|
context->pixbuf = NULL;
|
||||||
|
|
||||||
|
return (gpointer) context;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* context - returned from image_begin_load
|
||||||
|
*
|
||||||
|
* free context, unref gdk_pixbuf
|
||||||
|
*/
|
||||||
|
void gdk_pixbuf__wbmp_image_stop_load(gpointer data)
|
||||||
|
{
|
||||||
|
struct bmp_progressive_state *context =
|
||||||
|
(struct bmp_progressive_state *) data;
|
||||||
|
|
||||||
|
g_return_if_fail(context != NULL);
|
||||||
|
if (context->pixbuf)
|
||||||
|
gdk_pixbuf_unref(context->pixbuf);
|
||||||
|
|
||||||
|
g_free(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
getin(struct bmp_progressive_state *context, const guchar **buf, guint *buf_size, guchar *ptr, int datum_size)
|
||||||
|
{
|
||||||
|
int last_num, buf_num;
|
||||||
|
|
||||||
|
if((context->last_len + *buf_size) < datum_size)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
/* We know we can pull it out of there */
|
||||||
|
last_num = MIN(datum_size, context->last_len);
|
||||||
|
buf_num = MIN(datum_size-last_num, *buf_size);
|
||||||
|
memcpy(ptr, context->last_buf, last_num);
|
||||||
|
memcpy(ptr+last_num, *buf, buf_num);
|
||||||
|
|
||||||
|
context->last_len -= last_num;
|
||||||
|
if(context->last_len)
|
||||||
|
memmove(context->last_buf, context->last_buf+last_num, context->last_len);
|
||||||
|
*buf_size -= buf_num;
|
||||||
|
*buf += buf_num;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
save_rest(struct bmp_progressive_state *context, const guchar *buf, guint buf_size)
|
||||||
|
{
|
||||||
|
if(buf_size > (sizeof(context->last_buf) - context->last_len))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
memcpy(context->last_buf+context->last_len, buf, buf_size);
|
||||||
|
context->last_len += buf_size;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
get_mbi(struct bmp_progressive_state *context, const guchar **buf, guint *buf_size, int *val)
|
||||||
|
{
|
||||||
|
guchar intbuf[16];
|
||||||
|
int i, n;
|
||||||
|
guchar last;
|
||||||
|
gboolean rv;
|
||||||
|
|
||||||
|
*val = 0;
|
||||||
|
n = i = 0;
|
||||||
|
do {
|
||||||
|
rv = getin(context, buf, buf_size, intbuf+n, 1);
|
||||||
|
if(!rv)
|
||||||
|
goto out;
|
||||||
|
*val <<= 7;
|
||||||
|
*val |= intbuf[n] & 0x7F;
|
||||||
|
n++;
|
||||||
|
} while(n < sizeof(intbuf) && (intbuf[n-1] & 0x80));
|
||||||
|
|
||||||
|
out:
|
||||||
|
if(!rv || !(intbuf[n-1] & 0x80))
|
||||||
|
{
|
||||||
|
rv = save_rest(context, intbuf, n);
|
||||||
|
|
||||||
|
if(!rv)
|
||||||
|
g_error("Couldn't save_rest of intbuf");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* context - from image_begin_load
|
||||||
|
* buf - new image data
|
||||||
|
* size - length of new image data
|
||||||
|
*
|
||||||
|
* append image data onto inrecrementally built output image
|
||||||
|
*/
|
||||||
|
gboolean gdk_pixbuf__bmp_image_load_increment(gpointer data, guchar * buf,
|
||||||
|
guint size)
|
||||||
|
{
|
||||||
|
struct bmp_progressive_state *context =
|
||||||
|
(struct bmp_progressive_state *) data;
|
||||||
|
gboolean bv;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if(context->need_type)
|
||||||
|
{
|
||||||
|
guchar val;
|
||||||
|
|
||||||
|
bv = getin(context, &buf, &size, &val, 1);
|
||||||
|
if(bv)
|
||||||
|
{
|
||||||
|
context->type = val;
|
||||||
|
context->need_type = FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(context->need_header)
|
||||||
|
{
|
||||||
|
guchar val;
|
||||||
|
|
||||||
|
bv = getin(context, &buf, &size, &val, 1);
|
||||||
|
if(bv)
|
||||||
|
{
|
||||||
|
/* We skip over the extended header - val is unused */
|
||||||
|
if(!(val & 0x80))
|
||||||
|
context->need_header = FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(context->need_width)
|
||||||
|
{
|
||||||
|
bv = get_mbi(context, &buf, &size, &context->width);
|
||||||
|
if(bv)
|
||||||
|
context->need_width = FALSE;
|
||||||
|
}
|
||||||
|
else if(context->need_height)
|
||||||
|
{
|
||||||
|
bv = get_mbi(context, &buf, &size, &context->height);
|
||||||
|
if(bv)
|
||||||
|
{
|
||||||
|
context->need_height = FALSE;
|
||||||
|
context->pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, context->width, context->height);
|
||||||
|
if(context->prepared_func)
|
||||||
|
context->prepared_func(context->pixbuf, context->user_data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(context->needmore)
|
||||||
|
{
|
||||||
|
int first_row;
|
||||||
|
first_row = context->cury;
|
||||||
|
for( ; context->cury < context->height; context->cury++, context->curx = 0)
|
||||||
|
{
|
||||||
|
for( ; context->curx < context->width, context->curx += 8)
|
||||||
|
{
|
||||||
|
guchar byte;
|
||||||
|
guchar *ptr;
|
||||||
|
int xoff;
|
||||||
|
bv = getin(context, &buf, &size, &byte, 1);
|
||||||
|
if(!bv)
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
ptr = context->pixbuf->pixels + context->pixbuf->rowstride * context->cury + context->curx * 3;
|
||||||
|
for(xoff = 0; xoff < 8; xoff++, ptr += 3)
|
||||||
|
{
|
||||||
|
guchar pixval;
|
||||||
|
|
||||||
|
if(byte & (1<<xoff))
|
||||||
|
pixval = 0xFF;
|
||||||
|
else
|
||||||
|
pixval = 0x0;
|
||||||
|
|
||||||
|
ptr[0] = ptr[1] = ptr[2] = pixval;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
context->needmore = FALSE;
|
||||||
|
|
||||||
|
out:
|
||||||
|
context->updated_func(context->pixbuf, 0, first_row, context->width, context->cury - first_row + 1,
|
||||||
|
context->user_data);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
bv = FALSE; /* Nothing left to do, stop feeding me data! */
|
||||||
|
|
||||||
|
} while(bv);
|
||||||
|
|
||||||
|
if(size)
|
||||||
|
return save_rest(context, buf, size);
|
||||||
|
else
|
||||||
|
return context->needmore;
|
||||||
|
}
|
5
gdk-pixbuf/pixbufloader_wbmp.def
Normal file
5
gdk-pixbuf/pixbufloader_wbmp.def
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
EXPORTS
|
||||||
|
gdk_pixbuf__wbmp_image_load
|
||||||
|
gdk_pixbuf__wbmp_image_begin_load
|
||||||
|
gdk_pixbuf__wbmp_image_stop_load
|
||||||
|
gdk_pixbuf__wbmp_image_load_increment
|
129
gtk-config.in
Normal file
129
gtk-config.in
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
glib_libs="@glib_libs@"
|
||||||
|
glib_cflags="@glib_cflags@"
|
||||||
|
glib_thread_libs="@glib_thread_libs@"
|
||||||
|
glib_thread_cflags="@glib_thread_cflags@"
|
||||||
|
|
||||||
|
target=@gdktarget@
|
||||||
|
prefix=@prefix@
|
||||||
|
exec_prefix=@exec_prefix@
|
||||||
|
exec_prefix_set=no
|
||||||
|
|
||||||
|
usage()
|
||||||
|
{
|
||||||
|
cat <<EOF
|
||||||
|
Usage: gtk-config [OPTIONS] [LIBRARIES]
|
||||||
|
Options:
|
||||||
|
[--prefix[=DIR]]
|
||||||
|
[--exec-prefix[=DIR]]
|
||||||
|
[--target=gdktarget]
|
||||||
|
[--version]
|
||||||
|
[--libs]
|
||||||
|
[--cflags]
|
||||||
|
Libraries:
|
||||||
|
gtk
|
||||||
|
gthread
|
||||||
|
EOF
|
||||||
|
exit $1
|
||||||
|
}
|
||||||
|
|
||||||
|
if test $# -eq 0; then
|
||||||
|
usage 1 1>&2
|
||||||
|
fi
|
||||||
|
|
||||||
|
lib_gtk=yes
|
||||||
|
|
||||||
|
while test $# -gt 0; do
|
||||||
|
case "$1" in
|
||||||
|
-*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
|
||||||
|
*) optarg= ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
--prefix=*)
|
||||||
|
prefix=$optarg
|
||||||
|
if test $exec_prefix_set = no ; then
|
||||||
|
exec_prefix=$optarg
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
--prefix)
|
||||||
|
echo_prefix=yes
|
||||||
|
;;
|
||||||
|
--exec-prefix=*)
|
||||||
|
exec_prefix=$optarg
|
||||||
|
exec_prefix_set=yes
|
||||||
|
;;
|
||||||
|
--target=*)
|
||||||
|
target=$optarg
|
||||||
|
;;
|
||||||
|
--exec-prefix)
|
||||||
|
echo_exec_prefix=yes
|
||||||
|
;;
|
||||||
|
--version)
|
||||||
|
echo @GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@.@GTK_MICRO_VERSION@
|
||||||
|
;;
|
||||||
|
--cflags)
|
||||||
|
echo_cflags=yes
|
||||||
|
;;
|
||||||
|
--libs)
|
||||||
|
echo_libs=yes
|
||||||
|
;;
|
||||||
|
gtk)
|
||||||
|
lib_gtk=yes
|
||||||
|
;;
|
||||||
|
gthread)
|
||||||
|
lib_gthread=yes
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
usage 1 1>&2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
if test "$echo_prefix" = "yes"; then
|
||||||
|
echo $prefix
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$echo_exec_prefix" = "yes"; then
|
||||||
|
echo $exec_prefix
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$lib_gthread" = "yes"; then
|
||||||
|
glib_cflags="$glib_thread_cflags"
|
||||||
|
glib_libs="$glib_thread_libs"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$echo_cflags" = "yes"; then
|
||||||
|
if test @includedir@ != /usr/include ; then
|
||||||
|
includes=-I@includedir@
|
||||||
|
for i in $glib_cflags ; do
|
||||||
|
if test $i = -I@includedir@ ; then
|
||||||
|
includes=""
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
echo -I@libdir@/gtk+/include $includes $glib_cflags @PANGO_CFLAGS@ @more_cflags@
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$echo_libs" = "yes"; then
|
||||||
|
my_glib_libs=
|
||||||
|
libdirs=-L@libdir@
|
||||||
|
for i in $glib_libs ; do
|
||||||
|
if test $i != -L@libdir@ ; then
|
||||||
|
if test -z "$my_glib_libs" ; then
|
||||||
|
my_glib_libs="$i"
|
||||||
|
else
|
||||||
|
my_glib_libs="$my_glib_libs $i"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
<<<<<<< gtk-config.in
|
||||||
|
echo $libdirs @x_ldflags@ -lgtk $my_glib_libs @INTLLIBS@ @x_libs@ @GDK_WLIBS@ @MATH_LIB@
|
||||||
|
=======
|
||||||
|
echo $libdirs @more_ldflags@ -lgtk-$target -lgdk_pixbuf -lgdk-$target $my_glib_libs @INTLLIBS@ @PANGO_LIBS@ @more_libs@ @GDK_WLIBS@ @MATH_LIB@
|
||||||
|
>>>>>>> 1.21
|
||||||
|
fi
|
||||||
|
|
@ -337,25 +337,15 @@ gdk_pixbuf_loader_animation_done (GdkPixbuf *pixbuf,
|
|||||||
gtk_signal_emit (GTK_OBJECT (loader), pixbuf_loader_signals[ANIMATION_DONE]);
|
gtk_signal_emit (GTK_OBJECT (loader), pixbuf_loader_signals[ANIMATION_DONE]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* gdk_pixbuf_loader_new:
|
|
||||||
*
|
|
||||||
* Creates a new pixbuf loader object.
|
|
||||||
*
|
|
||||||
* Return value: A newly-created pixbuf loader.
|
|
||||||
**/
|
|
||||||
GdkPixbufLoader *
|
|
||||||
gdk_pixbuf_loader_new (void)
|
|
||||||
{
|
|
||||||
return g_object_new (GDK_TYPE_PIXBUF_LOADER, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
gdk_pixbuf_loader_load_module (GdkPixbufLoader *loader)
|
gdk_pixbuf_loader_load_module (GdkPixbufLoader *loader, const char *image_type)
|
||||||
{
|
{
|
||||||
GdkPixbufLoaderPrivate *priv = loader->private;
|
GdkPixbufLoaderPrivate *priv = loader->private;
|
||||||
|
|
||||||
priv->image_module = gdk_pixbuf_get_module (priv->header_buf, priv->header_buf_offset);
|
if(image_type)
|
||||||
|
priv->image_module = gdk_pixbuf_get_named_module (image_type);
|
||||||
|
else
|
||||||
|
priv->image_module = gdk_pixbuf_get_module (priv->header_buf, priv->header_buf_offset);
|
||||||
|
|
||||||
if (priv->image_module == NULL)
|
if (priv->image_module == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
@ -387,7 +377,8 @@ gdk_pixbuf_loader_load_module (GdkPixbufLoader *loader)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (priv->image_module->load_increment (priv->context, priv->header_buf, priv->header_buf_offset))
|
if (priv->header_buf_offset
|
||||||
|
&& priv->image_module->load_increment (priv->context, priv->header_buf, priv->header_buf_offset))
|
||||||
return priv->header_buf_offset;
|
return priv->header_buf_offset;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -465,6 +456,38 @@ gdk_pixbuf_loader_write (GdkPixbufLoader *loader,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gdk_pixbuf_loader_new:
|
||||||
|
*
|
||||||
|
* Creates a new pixbuf loader object.
|
||||||
|
*
|
||||||
|
* Return value: A newly-created pixbuf loader.
|
||||||
|
**/
|
||||||
|
GdkPixbufLoader *
|
||||||
|
gdk_pixbuf_loader_new (void)
|
||||||
|
{
|
||||||
|
return g_object_new (GDK_TYPE_PIXBUF_LOADER, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gdk_pixbuf_loader_new_with_type:
|
||||||
|
*
|
||||||
|
* Creates a new pixbuf loader object.
|
||||||
|
*
|
||||||
|
* Return value: A newly-created pixbuf loader.
|
||||||
|
**/
|
||||||
|
GdkPixbufLoader *
|
||||||
|
gdk_pixbuf_loader_new_with_type (const char *image_type)
|
||||||
|
{
|
||||||
|
GdkPixbufLoader *retval;
|
||||||
|
|
||||||
|
retval = g_object_new (GDK_TYPE_PIXBUF_LOADER, NULL);
|
||||||
|
|
||||||
|
gdk_pixbuf_loader_load_module(retval, image_type);
|
||||||
|
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gdk_pixbuf_loader_get_pixbuf:
|
* gdk_pixbuf_loader_get_pixbuf:
|
||||||
* @loader: A pixbuf loader.
|
* @loader: A pixbuf loader.
|
||||||
|
@ -72,6 +72,7 @@ struct _GdkPixbufLoaderClass
|
|||||||
|
|
||||||
GtkType gdk_pixbuf_loader_get_type (void);
|
GtkType gdk_pixbuf_loader_get_type (void);
|
||||||
GdkPixbufLoader * gdk_pixbuf_loader_new (void);
|
GdkPixbufLoader * gdk_pixbuf_loader_new (void);
|
||||||
|
GdkPixbufLoader * gdk_pixbuf_loader_new_with_type (const char *image_type);
|
||||||
gboolean gdk_pixbuf_loader_write (GdkPixbufLoader *loader,
|
gboolean gdk_pixbuf_loader_write (GdkPixbufLoader *loader,
|
||||||
const guchar *buf,
|
const guchar *buf,
|
||||||
gsize count);
|
gsize count);
|
||||||
|
Loading…
Reference in New Issue
Block a user