hm, second attempt. it's fight CVS time again.
Tue Jun 26 09:48:02 2001 Tim Janik <timj@gtk.org> * Makefile.am (noinst_PROGRAMS): get rid of make-inline-pixbuf * gdk-pixbuf-data.[hc]: provide gdk_pixbuf_new_from_stream() instead from gdk_pixbuf_new_from_inline(). * gdk-pixdata.[hc]: auxillary GdkPixdata structure, public installed API for applications that need to serialize/deserialize on their own (gimp, BEAST). * gdk-pixbuf/gdk-pixbuf-csource.c: provide publically installed program that can dump images in CSource format and Pixbuf stream format. supports RLE encoding, MACRO formatting etc... invoke with --help. Tue Jun 26 10:04:30 2001 Tim Janik <timj@gtk.org> * gtk/gtkiconfactory.c: * gtk/gtkitemfactory.c: use gdk_pixbuf_new_from_stream(). fixed up item factory so inlined pixbufs actually work.
This commit is contained in:
parent
bf0d61a59b
commit
0b7418572e
@ -82,18 +82,6 @@ Creating a pixbuf from image data that is already in memory.
|
|||||||
@Returns:
|
@Returns:
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION gdk_pixbuf_new_from_inline ##### -->
|
|
||||||
<para>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
@inline_pixbuf:
|
|
||||||
@copy_pixels:
|
|
||||||
@length:
|
|
||||||
@error:
|
|
||||||
@Returns:
|
|
||||||
|
|
||||||
|
|
||||||
<!-- ##### FUNCTION gdk_pixbuf_new_subpixbuf ##### -->
|
<!-- ##### FUNCTION gdk_pixbuf_new_subpixbuf ##### -->
|
||||||
<para>
|
<para>
|
||||||
|
|
||||||
|
@ -552,3 +552,14 @@ End:
|
|||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ##### FUNCTION gdk_pixbuf_new_from_inline ##### -->
|
||||||
|
<para>
|
||||||
|
|
||||||
|
</para>
|
||||||
|
|
||||||
|
@inline_pixbuf:
|
||||||
|
@copy_pixels:
|
||||||
|
@length:
|
||||||
|
@error:
|
||||||
|
@Returns:
|
||||||
|
|
||||||
|
@ -20,6 +20,9 @@ Information that describes an image.
|
|||||||
|
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
@GDK_PIXBUF_ERROR_HEADER_CORRUPT:
|
||||||
|
@GDK_PIXBUF_ERROR_PIXEL_CORRUPT:
|
||||||
|
@GDK_PIXBUF_ERROR_UNKNOWN_FORMAT:
|
||||||
@GDK_PIXBUF_ERROR_CORRUPT_IMAGE:
|
@GDK_PIXBUF_ERROR_CORRUPT_IMAGE:
|
||||||
@GDK_PIXBUF_ERROR_INSUFFICIENT_MEMORY:
|
@GDK_PIXBUF_ERROR_INSUFFICIENT_MEMORY:
|
||||||
@GDK_PIXBUF_ERROR_BAD_OPTION_VALUE:
|
@GDK_PIXBUF_ERROR_BAD_OPTION_VALUE:
|
||||||
|
@ -77,7 +77,6 @@ GtkItemFactory
|
|||||||
@callback_action:
|
@callback_action:
|
||||||
@item_type:
|
@item_type:
|
||||||
@extra_data:
|
@extra_data:
|
||||||
@extra_data2:
|
|
||||||
|
|
||||||
<!-- ##### STRUCT GtkItemFactoryItem ##### -->
|
<!-- ##### STRUCT GtkItemFactoryItem ##### -->
|
||||||
<para>
|
<para>
|
||||||
|
@ -1,3 +1,19 @@
|
|||||||
|
Tue Jun 26 09:48:02 2001 Tim Janik <timj@gtk.org>
|
||||||
|
|
||||||
|
* Makefile.am (noinst_PROGRAMS): get rid of make-inline-pixbuf
|
||||||
|
|
||||||
|
* gdk-pixbuf-data.[hc]: provide gdk_pixbuf_new_from_stream()
|
||||||
|
instead from gdk_pixbuf_new_from_inline().
|
||||||
|
|
||||||
|
* gdk-pixdata.[hc]: auxillary GdkPixdata structure, public
|
||||||
|
installed API for applications that need to serialize/deserialize
|
||||||
|
on their own (gimp, BEAST).
|
||||||
|
|
||||||
|
* gdk-pixbuf/gdk-pixbuf-csource.c: provide publically installed
|
||||||
|
program that can dump images in CSource format and Pixbuf
|
||||||
|
stream format. supports RLE encoding, MACRO formatting etc...
|
||||||
|
invoke with --help.
|
||||||
|
|
||||||
Mon Jun 25 00:28:11 2001 Owen Taylor <otaylor@redhat.com>
|
Mon Jun 25 00:28:11 2001 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* Makefile.am: Actually update timestamps, so rules don't
|
* Makefile.am: Actually update timestamps, so rules don't
|
||||||
|
@ -164,12 +164,15 @@ TESTS = test-gdk-pixbuf test-loaders
|
|||||||
noinst_PROGRAMS = $(TESTS)
|
noinst_PROGRAMS = $(TESTS)
|
||||||
|
|
||||||
DEPS = libgdk_pixbuf-1.3.la
|
DEPS = libgdk_pixbuf-1.3.la
|
||||||
INCLUDES = -I$(top_srcdir) -I$(top_builddir) \
|
INCLUDES = @STRIP_BEGIN@ \
|
||||||
|
-I$(top_srcdir) -I$(top_builddir) \
|
||||||
-I$(top_srcdir)/gdk-pixbuf \
|
-I$(top_srcdir)/gdk-pixbuf \
|
||||||
-I$(top_builddir)/gdk-pixbuf \
|
-I$(top_builddir)/gdk-pixbuf \
|
||||||
@INCLUDED_LOADER_DEFINE@ \
|
@INCLUDED_LOADER_DEFINE@ \
|
||||||
@GTK_DEBUG_FLAGS@ \
|
@GTK_DEBUG_FLAGS@ \
|
||||||
@GDK_PIXBUF_DEP_CFLAGS@
|
@GDK_PIXBUF_DEP_CFLAGS@ \
|
||||||
|
@STRIP_END@
|
||||||
|
|
||||||
AM_CPPFLAGS = "-DPIXBUF_LIBDIR=\"$(loaderdir)\"" "-DBUILT_MODULES_DIR=\"$(srcdir)/.libs\""
|
AM_CPPFLAGS = "-DPIXBUF_LIBDIR=\"$(loaderdir)\"" "-DBUILT_MODULES_DIR=\"$(srcdir)/.libs\""
|
||||||
|
|
||||||
LDADDS = libgdk_pixbuf-1.3.la
|
LDADDS = libgdk_pixbuf-1.3.la
|
||||||
@ -179,12 +182,13 @@ test_loaders_LDADD = $(LDADDS)
|
|||||||
|
|
||||||
test_loaders_SOURCES = test-loaders.c test-images.h
|
test_loaders_SOURCES = test-loaders.c test-images.h
|
||||||
|
|
||||||
bin_PROGRAMS=make-inline-pixbuf
|
#noinst_PROGRAMS=make-inline-pixbuf
|
||||||
|
#make_inline_pixbuf_SOURCES=make-inline-pixbuf.c
|
||||||
make_inline_pixbuf_SOURCES=make-inline-pixbuf.c
|
#make_inline_pixbuf_LDADD = $(LDADDS)
|
||||||
|
|
||||||
make_inline_pixbuf_LDADD = $(LDADDS)
|
|
||||||
|
|
||||||
|
bin_PROGRAMS = gdk-pixbuf-csource
|
||||||
|
gdk_pixbuf_csource_SOURCES = gdk-pixbuf-csource.c
|
||||||
|
gdk_pixbuf_csource_LDADD = $(LDADDS)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -195,7 +199,7 @@ BUILT_SOURCES=gdk-pixbuf-marshal.h gdk-pixbuf-marshal.c
|
|||||||
|
|
||||||
libgdk_pixbufincludedir = $(includedir)/gtk-2.0/gdk-pixbuf
|
libgdk_pixbufincludedir = $(includedir)/gtk-2.0/gdk-pixbuf
|
||||||
|
|
||||||
libgdk_pixbuf_1_3_la_SOURCES = \
|
libgdk_pixbuf_1_3_la_SOURCES = @STRIP_BEGIN@ \
|
||||||
gdk-pixbuf-i18n.h \
|
gdk-pixbuf-i18n.h \
|
||||||
gdk-pixbuf.c \
|
gdk-pixbuf.c \
|
||||||
gdk-pixbuf-animation.c \
|
gdk-pixbuf-animation.c \
|
||||||
@ -203,20 +207,26 @@ libgdk_pixbuf_1_3_la_SOURCES = \
|
|||||||
gdk-pixbuf-io.c \
|
gdk-pixbuf-io.c \
|
||||||
gdk-pixbuf-loader.c \
|
gdk-pixbuf-loader.c \
|
||||||
gdk-pixbuf-scale.c \
|
gdk-pixbuf-scale.c \
|
||||||
gdk-pixbuf-util.c
|
gdk-pixbuf-util.c \
|
||||||
|
gdk-pixdata.c \
|
||||||
|
@STRIP_END@
|
||||||
|
|
||||||
|
|
||||||
$(libgdk_pixbuf_1_3_la_OBJECTS): gdk-pixbuf-marshal.h gdk-pixbuf-marshal.c
|
$(libgdk_pixbuf_1_3_la_OBJECTS): gdk-pixbuf-marshal.h gdk-pixbuf-marshal.c
|
||||||
|
|
||||||
libgdk_pixbuf_1_3_la_LDFLAGS = \
|
libgdk_pixbuf_1_3_la_LDFLAGS = @STRIP_BEGIN@ \
|
||||||
-version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
|
-version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
|
||||||
@LIBTOOL_EXPORT_OPTIONS@
|
@LIBTOOL_EXPORT_OPTIONS@ \
|
||||||
|
@STRIP_END@
|
||||||
|
|
||||||
libgdk_pixbuf_1_3_la_LIBADD = pixops/libpixops.la $(builtin_objs) $(GDK_PIXBUF_DEP_LIBS)
|
libgdk_pixbuf_1_3_la_LIBADD = pixops/libpixops.la $(builtin_objs) $(GDK_PIXBUF_DEP_LIBS)
|
||||||
libgdk_pixbuf_1_3_la_DEPENDENCIES = $(builtin_objs)
|
libgdk_pixbuf_1_3_la_DEPENDENCIES = $(builtin_objs)
|
||||||
|
|
||||||
libgdk_pixbufinclude_HEADERS = \
|
libgdk_pixbufinclude_HEADERS = \
|
||||||
gdk-pixbuf.h \
|
gdk-pixbuf.h \
|
||||||
gdk-pixbuf-loader.h \
|
gdk-pixbuf-loader.h \
|
||||||
gdk-pixbuf-features.h
|
gdk-pixbuf-features.h \
|
||||||
|
gdk-pixdata.h
|
||||||
|
|
||||||
noinst_HEADERS = \
|
noinst_HEADERS = \
|
||||||
gdk-pixbuf-io.h \
|
gdk-pixbuf-io.h \
|
||||||
|
@ -78,254 +78,3 @@ gdk_pixbuf_new_from_data (const guchar *data, GdkColorspace colorspace, gboolean
|
|||||||
|
|
||||||
return pixbuf;
|
return pixbuf;
|
||||||
}
|
}
|
||||||
|
|
||||||
static guint32
|
|
||||||
read_int (const guchar **p)
|
|
||||||
{
|
|
||||||
guint32 num;
|
|
||||||
|
|
||||||
/* Note most significant bytes are first in the byte stream */
|
|
||||||
num =
|
|
||||||
(*p)[3] |
|
|
||||||
((*p)[2] << 8) |
|
|
||||||
((*p)[1] << 16) |
|
|
||||||
((*p)[0] << 24);
|
|
||||||
|
|
||||||
*p += 4;
|
|
||||||
|
|
||||||
return num;
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
|
||||||
read_bool (const guchar **p)
|
|
||||||
{
|
|
||||||
gboolean val = **p != 0;
|
|
||||||
|
|
||||||
++(*p);
|
|
||||||
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
|
|
||||||
static GdkPixbuf*
|
|
||||||
read_raw_inline (const guchar *data,
|
|
||||||
gboolean copy_pixels,
|
|
||||||
int length,
|
|
||||||
GError **error)
|
|
||||||
{
|
|
||||||
GdkPixbuf *pixbuf;
|
|
||||||
const guchar *p = data;
|
|
||||||
guint32 rowstride, width, height, colorspace,
|
|
||||||
n_channels, bits_per_sample;
|
|
||||||
gboolean has_alpha;
|
|
||||||
|
|
||||||
if (length >= 0 && length < 12) {
|
|
||||||
/* Not enough buffer to hold the width/height/rowstride */
|
|
||||||
g_set_error (error,
|
|
||||||
GDK_PIXBUF_ERROR,
|
|
||||||
GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
|
|
||||||
_("Image data is partially missing"));
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
rowstride = read_int (&p);
|
|
||||||
width = read_int (&p);
|
|
||||||
height = read_int (&p);
|
|
||||||
|
|
||||||
if (rowstride < width) {
|
|
||||||
g_set_error (error,
|
|
||||||
GDK_PIXBUF_ERROR,
|
|
||||||
GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
|
|
||||||
_("Image has an incorrect pixel rowstride, perhaps the data was corrupted somehow."));
|
|
||||||
return NULL; /* bad data from untrusted source. */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* rowstride >= width, so we can trust width */
|
|
||||||
|
|
||||||
length -= 12;
|
|
||||||
|
|
||||||
/* There's some better way like G_MAXINT/height > rowstride
|
|
||||||
* but I'm not sure it works, so stick to this for now.
|
|
||||||
*/
|
|
||||||
if (((double)height) * ((double)rowstride) > (double)G_MAXINT) {
|
|
||||||
g_set_error (error,
|
|
||||||
GDK_PIXBUF_ERROR,
|
|
||||||
GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
|
|
||||||
_("Image size is impossibly large, perhaps the data was corrupted somehow"));
|
|
||||||
|
|
||||||
return NULL; /* overflow */
|
|
||||||
}
|
|
||||||
|
|
||||||
if (length >= 0 &&
|
|
||||||
length < (height * rowstride + 13)) {
|
|
||||||
/* Not enough buffer to hold the remaining header
|
|
||||||
* information plus the data.
|
|
||||||
*/
|
|
||||||
g_set_error (error,
|
|
||||||
GDK_PIXBUF_ERROR,
|
|
||||||
GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
|
|
||||||
_("Image data is partially missing, probably it was corrupted somehow."));
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Read the remaining 13 bytes of header information */
|
|
||||||
|
|
||||||
has_alpha = read_bool (&p) != FALSE;
|
|
||||||
colorspace = read_int (&p);
|
|
||||||
n_channels = read_int (&p);
|
|
||||||
bits_per_sample = read_int (&p);
|
|
||||||
|
|
||||||
if (colorspace != GDK_COLORSPACE_RGB) {
|
|
||||||
g_set_error (error,
|
|
||||||
GDK_PIXBUF_ERROR,
|
|
||||||
GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
|
|
||||||
_("Image has an unknown colorspace code (%d), perhaps the image data was corrupted"),
|
|
||||||
colorspace);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bits_per_sample != 8) {
|
|
||||||
g_set_error (error,
|
|
||||||
GDK_PIXBUF_ERROR,
|
|
||||||
GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
|
|
||||||
_("Image has an improper number of bits per sample (%d), perhaps the image data was corrupted"),
|
|
||||||
bits_per_sample);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (has_alpha && n_channels != 4) {
|
|
||||||
g_set_error (error,
|
|
||||||
GDK_PIXBUF_ERROR,
|
|
||||||
GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
|
|
||||||
_("Image has an improper number of channels (%d), perhaps the image data was corrupted"),
|
|
||||||
n_channels);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!has_alpha && n_channels != 3) {
|
|
||||||
g_set_error (error,
|
|
||||||
GDK_PIXBUF_ERROR,
|
|
||||||
GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
|
|
||||||
_("Image has an improper number of channels (%d), perhaps the image data was corrupted"),
|
|
||||||
n_channels);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (copy_pixels) {
|
|
||||||
guchar *pixels;
|
|
||||||
gint dest_rowstride;
|
|
||||||
gint row;
|
|
||||||
|
|
||||||
pixbuf = gdk_pixbuf_new (colorspace,
|
|
||||||
has_alpha, bits_per_sample,
|
|
||||||
width, height);
|
|
||||||
|
|
||||||
if (pixbuf == NULL) {
|
|
||||||
g_set_error (error,
|
|
||||||
GDK_PIXBUF_ERROR,
|
|
||||||
GDK_PIXBUF_ERROR_INSUFFICIENT_MEMORY,
|
|
||||||
_("Not enough memory to store a %d by %d image; try exiting some applications to free memory."),
|
|
||||||
width, height);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
pixels = gdk_pixbuf_get_pixels (pixbuf);
|
|
||||||
dest_rowstride = gdk_pixbuf_get_rowstride (pixbuf);
|
|
||||||
|
|
||||||
for (row = 0; row < height; row++) {
|
|
||||||
memcpy (pixels, p, rowstride);
|
|
||||||
pixels += dest_rowstride;
|
|
||||||
p += rowstride;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
pixbuf = gdk_pixbuf_new_from_data (p,
|
|
||||||
colorspace,
|
|
||||||
has_alpha,
|
|
||||||
bits_per_sample,
|
|
||||||
width, height,
|
|
||||||
rowstride,
|
|
||||||
NULL, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
return pixbuf;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gdk_pixbuf_new_from_inline:
|
|
||||||
* @inline_pixbuf: An inlined GdkPixbuf
|
|
||||||
* @copy_pixels: whether to copy the pixels out of the inline data, or to use them in-place
|
|
||||||
* @length: length of the inline data
|
|
||||||
* @error: return location for error
|
|
||||||
*
|
|
||||||
* Create a #GdkPixbuf from a custom format invented to store pixbuf
|
|
||||||
* data in C program code. This library comes with a program called
|
|
||||||
* "make-inline-pixbuf" that can write out a variable definition
|
|
||||||
* containing an inlined pixbuf. This is useful if you want to ship a
|
|
||||||
* program with images, but don't want to depend on any external
|
|
||||||
* files.
|
|
||||||
*
|
|
||||||
* The inline data format contains the pixels in #GdkPixbuf's native
|
|
||||||
* format. Since the inline pixbuf is read-only static data, you
|
|
||||||
* don't need to copy it unless you intend to write to it.
|
|
||||||
*
|
|
||||||
* If you create a pixbuf from const inline data compiled into your
|
|
||||||
* program, it's probably safe to ignore errors, since things will
|
|
||||||
* always succeed. For non-const inline data, you could get out of
|
|
||||||
* memory. For untrusted inline data located at runtime, you could
|
|
||||||
* have corrupt inline data in addition.
|
|
||||||
*
|
|
||||||
* Return value: A newly-created #GdkPixbuf structure with a reference count of
|
|
||||||
* 1, or NULL If error is set.
|
|
||||||
**/
|
|
||||||
GdkPixbuf*
|
|
||||||
gdk_pixbuf_new_from_inline (const guchar *inline_pixbuf,
|
|
||||||
gboolean copy_pixels,
|
|
||||||
int length,
|
|
||||||
GError **error)
|
|
||||||
{
|
|
||||||
const guchar *p;
|
|
||||||
GdkPixbuf *pixbuf;
|
|
||||||
GdkPixbufInlineFormat format;
|
|
||||||
|
|
||||||
if (length >= 0 && length < 8) {
|
|
||||||
/* not enough bytes to contain even the magic number
|
|
||||||
* and format code.
|
|
||||||
*/
|
|
||||||
g_set_error (error,
|
|
||||||
GDK_PIXBUF_ERROR,
|
|
||||||
GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
|
|
||||||
_("Image contained no data."));
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
p = inline_pixbuf;
|
|
||||||
|
|
||||||
if (read_int (&p) != GDK_PIXBUF_INLINE_MAGIC_NUMBER) {
|
|
||||||
g_set_error (error,
|
|
||||||
GDK_PIXBUF_ERROR,
|
|
||||||
GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
|
|
||||||
_("Image isn't in the correct format (inline GdkPixbuf format)"));
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
format = read_int (&p);
|
|
||||||
|
|
||||||
switch (format)
|
|
||||||
{
|
|
||||||
case GDK_PIXBUF_INLINE_RAW:
|
|
||||||
pixbuf = read_raw_inline (p, copy_pixels, length - 8, error);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
g_set_error (error,
|
|
||||||
GDK_PIXBUF_ERROR,
|
|
||||||
GDK_PIXBUF_ERROR_UNKNOWN_TYPE,
|
|
||||||
_("This version of the software is unable to read images with type code %d"),
|
|
||||||
format);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return pixbuf;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@ -130,16 +130,6 @@ struct _GdkPixbufAnimationIterClass {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define GDK_PIXBUF_INLINE_MAGIC_NUMBER 0x47646B50 /* 'GdkP' */
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
GDK_PIXBUF_INLINE_RAW = 0,
|
|
||||||
GDK_PIXBUF_INLINE_RLE = 1
|
|
||||||
} GdkPixbufInlineFormat;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
GdkPixbufAnimation* gdk_pixbuf_non_anim_new (GdkPixbuf *pixbuf);
|
GdkPixbufAnimation* gdk_pixbuf_non_anim_new (GdkPixbuf *pixbuf);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -75,6 +75,12 @@ typedef void (* GdkPixbufDestroyNotify) (guchar *pixels, gpointer data);
|
|||||||
#define GDK_PIXBUF_ERROR gdk_pixbuf_error_quark ()
|
#define GDK_PIXBUF_ERROR gdk_pixbuf_error_quark ()
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
/* stream header corrupt */
|
||||||
|
GDK_PIXBUF_ERROR_HEADER_CORRUPT,
|
||||||
|
/* stream pixel data corrupt */
|
||||||
|
GDK_PIXBUF_ERROR_PIXEL_CORRUPT,
|
||||||
|
/* stream header corrupt */
|
||||||
|
GDK_PIXBUF_ERROR_UNKNOWN_FORMAT,
|
||||||
/* image data hosed */
|
/* image data hosed */
|
||||||
GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
|
GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
|
||||||
/* no mem to load image */
|
/* no mem to load image */
|
||||||
@ -142,11 +148,9 @@ GdkPixbuf *gdk_pixbuf_new_from_data (const guchar *data,
|
|||||||
gpointer destroy_fn_data);
|
gpointer destroy_fn_data);
|
||||||
|
|
||||||
GdkPixbuf *gdk_pixbuf_new_from_xpm_data (const char **data);
|
GdkPixbuf *gdk_pixbuf_new_from_xpm_data (const char **data);
|
||||||
|
GdkPixbuf* gdk_pixbuf_new_from_stream (gint stream_length,
|
||||||
/* Read an inline pixbuf */
|
const guint8 *stream,
|
||||||
GdkPixbuf *gdk_pixbuf_new_from_inline (const guchar *inline_pixbuf,
|
|
||||||
gboolean copy_pixels,
|
gboolean copy_pixels,
|
||||||
int length,
|
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
/* Mutations */
|
/* Mutations */
|
||||||
|
@ -335,7 +335,7 @@ sized_icon_set_from_inline (const guchar *inline_data,
|
|||||||
|
|
||||||
set = gtk_icon_set_new ();
|
set = gtk_icon_set_new ();
|
||||||
|
|
||||||
source.pixbuf = gdk_pixbuf_new_from_inline (inline_data, FALSE, -1, NULL);
|
source.pixbuf = gdk_pixbuf_new_from_stream (-1, inline_data, FALSE, NULL);
|
||||||
|
|
||||||
g_assert (source.pixbuf);
|
g_assert (source.pixbuf);
|
||||||
|
|
||||||
@ -361,7 +361,7 @@ sized_with_fallback_icon_set_from_inline (const guchar *fallback_data,
|
|||||||
|
|
||||||
set = gtk_icon_set_new ();
|
set = gtk_icon_set_new ();
|
||||||
|
|
||||||
source.pixbuf = gdk_pixbuf_new_from_inline (inline_data, FALSE, -1, NULL);
|
source.pixbuf = gdk_pixbuf_new_from_stream (-1, inline_data, FALSE, NULL);
|
||||||
|
|
||||||
g_assert (source.pixbuf);
|
g_assert (source.pixbuf);
|
||||||
|
|
||||||
@ -371,7 +371,7 @@ sized_with_fallback_icon_set_from_inline (const guchar *fallback_data,
|
|||||||
|
|
||||||
source.any_size = TRUE;
|
source.any_size = TRUE;
|
||||||
|
|
||||||
source.pixbuf = gdk_pixbuf_new_from_inline (fallback_data, FALSE, -1, NULL);
|
source.pixbuf = gdk_pixbuf_new_from_stream (-1, fallback_data, FALSE, NULL);
|
||||||
|
|
||||||
g_assert (source.pixbuf);
|
g_assert (source.pixbuf);
|
||||||
|
|
||||||
@ -393,7 +393,7 @@ unsized_icon_set_from_inline (const guchar *inline_data)
|
|||||||
|
|
||||||
set = gtk_icon_set_new ();
|
set = gtk_icon_set_new ();
|
||||||
|
|
||||||
source.pixbuf = gdk_pixbuf_new_from_inline (inline_data, FALSE, -1, NULL);
|
source.pixbuf = gdk_pixbuf_new_from_stream (-1, inline_data, FALSE, NULL);
|
||||||
|
|
||||||
g_assert (source.pixbuf);
|
g_assert (source.pixbuf);
|
||||||
|
|
||||||
@ -1090,7 +1090,7 @@ render_fallback_image (GtkStyle *style,
|
|||||||
static GtkIconSource fallback_source = { NULL, NULL, 0, 0, 0, TRUE, TRUE, TRUE };
|
static GtkIconSource fallback_source = { NULL, NULL, 0, 0, 0, TRUE, TRUE, TRUE };
|
||||||
|
|
||||||
if (fallback_source.pixbuf == NULL)
|
if (fallback_source.pixbuf == NULL)
|
||||||
fallback_source.pixbuf = gdk_pixbuf_new_from_inline (MISSING_IMAGE_INLINE, FALSE, -1, NULL);
|
fallback_source.pixbuf = gdk_pixbuf_new_from_stream (-1, MISSING_IMAGE_INLINE, FALSE, NULL);
|
||||||
|
|
||||||
return gtk_style_render_icon (style,
|
return gtk_style_render_icon (style,
|
||||||
&fallback_source,
|
&fallback_source,
|
||||||
|
@ -228,8 +228,8 @@ gtk_item_factory_class_init (GtkItemFactoryClass *class)
|
|||||||
quark_type_toggle_item = g_quark_from_static_string ("<ToggleItem>");
|
quark_type_toggle_item = g_quark_from_static_string ("<ToggleItem>");
|
||||||
quark_type_image_item = g_quark_from_static_string ("<ImageItem>");
|
quark_type_image_item = g_quark_from_static_string ("<ImageItem>");
|
||||||
quark_type_stock_item = g_quark_from_static_string ("<StockItem>");
|
quark_type_stock_item = g_quark_from_static_string ("<StockItem>");
|
||||||
quark_type_tearoff_item = g_quark_from_static_string ("<Tearoff>");
|
|
||||||
quark_type_separator_item = g_quark_from_static_string ("<Separator>");
|
quark_type_separator_item = g_quark_from_static_string ("<Separator>");
|
||||||
|
quark_type_tearoff_item = g_quark_from_static_string ("<Tearoff>");
|
||||||
quark_type_branch = g_quark_from_static_string ("<Branch>");
|
quark_type_branch = g_quark_from_static_string ("<Branch>");
|
||||||
quark_type_last_branch = g_quark_from_static_string ("<LastBranch>");
|
quark_type_last_branch = g_quark_from_static_string ("<LastBranch>");
|
||||||
}
|
}
|
||||||
@ -1228,14 +1228,14 @@ gtk_item_factory_create_item (GtkItemFactory *ifactory,
|
|||||||
gtk_radio_menu_item_set_group (GTK_RADIO_MENU_ITEM (widget), radio_group);
|
gtk_radio_menu_item_set_group (GTK_RADIO_MENU_ITEM (widget), radio_group);
|
||||||
if (GTK_IS_CHECK_MENU_ITEM (widget))
|
if (GTK_IS_CHECK_MENU_ITEM (widget))
|
||||||
gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (widget), TRUE);
|
gtk_check_menu_item_set_show_toggle (GTK_CHECK_MENU_ITEM (widget), TRUE);
|
||||||
if (GTK_IS_IMAGE_MENU_ITEM (widget))
|
if (type_id == quark_type_image_item)
|
||||||
{
|
{
|
||||||
GdkPixbuf *pixbuf = NULL;
|
GdkPixbuf *pixbuf = NULL;
|
||||||
image = NULL;
|
image = NULL;
|
||||||
|
|
||||||
pixbuf = gdk_pixbuf_new_from_inline (entry->extra_data,
|
pixbuf = gdk_pixbuf_new_from_stream (-1,
|
||||||
|
entry->extra_data,
|
||||||
FALSE,
|
FALSE,
|
||||||
entry->extra_data2,
|
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
if (pixbuf)
|
if (pixbuf)
|
||||||
|
@ -99,22 +99,24 @@ struct _GtkItemFactoryEntry
|
|||||||
* "" -> "<Item>"
|
* "" -> "<Item>"
|
||||||
* "<Title>" -> create a title item
|
* "<Title>" -> create a title item
|
||||||
* "<Item>" -> create a simple item
|
* "<Item>" -> create a simple item
|
||||||
|
* "<ImageItem>" -> create an item holding an image
|
||||||
|
* "<StockItem>" -> create an item holding a stock image
|
||||||
* "<CheckItem>" -> create a check item
|
* "<CheckItem>" -> create a check item
|
||||||
* "<ToggleItem>" -> create a toggle item
|
* "<ToggleItem>" -> create a toggle item
|
||||||
* "<RadioItem>" -> create a radio item
|
* "<RadioItem>" -> create a radio item
|
||||||
* <path> -> path of a radio item to link against
|
* <path> -> path of a radio item to link against
|
||||||
* "<Separator>" -> create a separator
|
* "<Separator>" -> create a separator
|
||||||
|
* "<Tearoff>" -> create a tearoff separator
|
||||||
* "<Branch>" -> create an item to hold sub items
|
* "<Branch>" -> create an item to hold sub items
|
||||||
* "<LastBranch>" -> create a right justified item to hold sub items
|
* "<LastBranch>" -> create a right justified item to hold sub items
|
||||||
*/
|
*/
|
||||||
gchar *item_type;
|
gchar *item_type;
|
||||||
|
|
||||||
/* Extra data for some item types:
|
/* Extra data for some item types:
|
||||||
* ImageItem -> pointer to inline pixbuf + inline pixbuf length
|
* ImageItem -> pointer to inlined pixbuf stream
|
||||||
* StockItem -> name of stock item
|
* StockItem -> name of stock item
|
||||||
*/
|
*/
|
||||||
gpointer extra_data;
|
gconstpointer extra_data;
|
||||||
guint extra_data2;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _GtkItemFactoryItem
|
struct _GtkItemFactoryItem
|
||||||
|
@ -154,8 +154,8 @@ CLEANFILES += $(noinst_DATA)
|
|||||||
|
|
||||||
pixbuf_dir = $(top_builddir)/gdk-pixbuf
|
pixbuf_dir = $(top_builddir)/gdk-pixbuf
|
||||||
|
|
||||||
gtkstockpixbufs.h: $(pixbuf_dir)/make-inline-pixbuf $(IMAGES)
|
gtkstockpixbufs.h: $(pixbuf_dir)/gdk-pixbuf-csource $(IMAGES)
|
||||||
GDK_PIXBUF_MODULEDIR=$(pixbuf_dir)/.libs \
|
GDK_PIXBUF_MODULEDIR=$(pixbuf_dir)/.libs \
|
||||||
$(pixbuf_dir)/make-inline-pixbuf $(srcdir)/gtkstockpixbufs.h $(VARIABLES)
|
$(pixbuf_dir)/gdk-pixbuf-csource --raw --build-list $(VARIABLES) >$(srcdir)/gtkstockpixbufs.h
|
||||||
|
|
||||||
EXTRA_DIST = $(IMAGES)
|
EXTRA_DIST = $(IMAGES)
|
||||||
|
@ -3101,7 +3101,7 @@ static GtkItemFactoryEntry menu_items[] =
|
|||||||
{ "/_Preferences/Shape/_Oval", NULL, gtk_ifactory_cb, 0, "/Preferences/Shape/Rectangle" },
|
{ "/_Preferences/Shape/_Oval", NULL, gtk_ifactory_cb, 0, "/Preferences/Shape/Rectangle" },
|
||||||
{ "/_Preferences/Shape/_Rectangle", NULL, gtk_ifactory_cb, 0, "/Preferences/Shape/Square" },
|
{ "/_Preferences/Shape/_Rectangle", NULL, gtk_ifactory_cb, 0, "/Preferences/Shape/Square" },
|
||||||
{ "/_Preferences/Shape/_Oval", NULL, gtk_ifactory_cb, 0, "/Preferences/Shape/Rectangle" },
|
{ "/_Preferences/Shape/_Oval", NULL, gtk_ifactory_cb, 0, "/Preferences/Shape/Rectangle" },
|
||||||
{ "/_Preferences/Shape/_Image", NULL, gtk_ifactory_cb, 0, "<ImageItem>", (gchar**) apple, sizeof(apple) },
|
{ "/_Preferences/Shape/_Image", NULL, gtk_ifactory_cb, 0, "<ImageItem>", apple },
|
||||||
|
|
||||||
/* For testing deletion of menus */
|
/* For testing deletion of menus */
|
||||||
{ "/_Preferences/Should_NotAppear", NULL, 0, 0, "<Branch>" },
|
{ "/_Preferences/Should_NotAppear", NULL, 0, 0, "<Branch>" },
|
||||||
|
Loading…
Reference in New Issue
Block a user