Make it possible to call gdk_pixbuf_loader_set_size (loader, 0, 0) by

Wed Jan  7 01:17:36 2004  Matthias Clasen  <maclas@gmx.de>

	* gdk-pixbuf-loader.c (gdk_pixbuf_loader_size_func):
	* gdk-pixbuf-loader.c (gdk_pixbuf_loader_set_size):
	* gdk-pixbuf-loader.c (gdk_pixbuf_loader_init): Make it possible
	to call gdk_pixbuf_loader_set_size (loader, 0, 0) by changing
	the initial values of priv->width/height to -1.

	* io-tiff.c (tiff_image_parse):
	* io-ras.c (RAS2State):
	* io-pnm.c (gdk_pixbuf__pnm_image_load_increment):
	* io-pcx.c (gdk_pixbuf__pcx_load_increment):
	* io-jpeg.c (gdk_pixbuf__jpeg_image_load_increment):
	* io-png.c (png_info_callback):
	* io-ico.c (DecodeHeader):
	* io-bmp.c (DecodeHeader): Call size_func once the size is known,
	even if the module can't make use of the scaling information. If
	size_func returns 0, don't allocate a pixbuf and return, if
	necessary with an error.

	* gdk-pixbuf.h:
	* gdk-pixbuf-io.c (gdk_pixbuf_get_file_info): A new function
	to determine the type and size of an image file without loading
	it completely.  (#53725)
This commit is contained in:
Matthias Clasen
2004-01-07 00:26:58 +00:00
committed by Matthias Clasen
parent 72b7abd535
commit 5b26e695a1
16 changed files with 266 additions and 29 deletions

View File

@ -208,6 +208,9 @@ gdk_pixbuf_loader_init (GdkPixbufLoader *loader)
GdkPixbufLoaderPrivate *priv;
priv = g_new0 (GdkPixbufLoaderPrivate, 1);
priv->width = -1;
priv->height = -1;
loader->priv = priv;
}
@ -253,7 +256,7 @@ gdk_pixbuf_loader_set_size (GdkPixbufLoader *loader,
gint height)
{
GdkPixbufLoaderPrivate *priv = GDK_PIXBUF_LOADER (loader)->priv;
g_return_if_fail (width > 0 && height > 0);
g_return_if_fail (width >= 0 && height >= 0);
if (!priv->size_fixed)
{
@ -268,7 +271,7 @@ gdk_pixbuf_loader_size_func (gint *width, gint *height, gpointer loader)
GdkPixbufLoaderPrivate *priv = GDK_PIXBUF_LOADER (loader)->priv;
/* allow calling gdk_pixbuf_loader_set_size() before the signal */
if (priv->width == 0 && priv->height == 0)
if (priv->width == -1 && priv->height == -1)
{
priv->width = *width;
priv->height = *height;