diff options
author | Tim Janik <timj@gtk.org> | 2001-06-26 08:34:26 +0000 |
---|---|---|
committer | Tim Janik <timj@src.gnome.org> | 2001-06-26 08:34:26 +0000 |
commit | 0b7418572ee7a8d900a315e67fcb12a56e21459b (patch) | |
tree | 0bdc0446657458a9df2a26a12f1a037a0396a476 | |
parent | bf0d61a59b9e1b889ba98b36b05a90e76f64eced (diff) | |
download | gtk+-0b7418572ee7a8d900a315e67fcb12a56e21459b.tar.gz |
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.
-rw-r--r-- | docs/reference/gdk-pixbuf/tmpl/creating.sgml | 12 | ||||
-rw-r--r-- | docs/reference/gdk-pixbuf/tmpl/gdk-pixbuf-unused.sgml | 11 | ||||
-rw-r--r-- | docs/reference/gdk-pixbuf/tmpl/gdk-pixbuf.sgml | 3 | ||||
-rw-r--r-- | docs/reference/gtk/tmpl/gtkitemfactory.sgml | 1 | ||||
-rw-r--r-- | gdk-pixbuf/ChangeLog | 16 | ||||
-rw-r--r-- | gdk-pixbuf/Makefile.am | 36 | ||||
-rw-r--r-- | gdk-pixbuf/gdk-pixbuf-data.c | 251 | ||||
-rw-r--r-- | gdk-pixbuf/gdk-pixbuf-private.h | 10 | ||||
-rw-r--r-- | gdk-pixbuf/gdk-pixbuf.h | 18 | ||||
-rw-r--r-- | gtk/gtkiconfactory.c | 10 | ||||
-rw-r--r-- | gtk/gtkitemfactory.c | 8 | ||||
-rw-r--r-- | gtk/gtkitemfactory.h | 8 | ||||
-rw-r--r-- | gtk/stock-icons/Makefile.am | 4 | ||||
-rw-r--r-- | tests/testgtk.c | 2 |
14 files changed, 81 insertions, 309 deletions
diff --git a/docs/reference/gdk-pixbuf/tmpl/creating.sgml b/docs/reference/gdk-pixbuf/tmpl/creating.sgml index 0bbce5405a..1d017da68a 100644 --- a/docs/reference/gdk-pixbuf/tmpl/creating.sgml +++ b/docs/reference/gdk-pixbuf/tmpl/creating.sgml @@ -82,18 +82,6 @@ Creating a pixbuf from image data that is already in memory. @Returns: -<!-- ##### FUNCTION gdk_pixbuf_new_from_inline ##### --> -<para> - -</para> - -@inline_pixbuf: -@copy_pixels: -@length: -@error: -@Returns: - - <!-- ##### FUNCTION gdk_pixbuf_new_subpixbuf ##### --> <para> diff --git a/docs/reference/gdk-pixbuf/tmpl/gdk-pixbuf-unused.sgml b/docs/reference/gdk-pixbuf/tmpl/gdk-pixbuf-unused.sgml index 910ccef35f..099d29a515 100644 --- a/docs/reference/gdk-pixbuf/tmpl/gdk-pixbuf-unused.sgml +++ b/docs/reference/gdk-pixbuf/tmpl/gdk-pixbuf-unused.sgml @@ -552,3 +552,14 @@ End: </para> +<!-- ##### FUNCTION gdk_pixbuf_new_from_inline ##### --> +<para> + +</para> + +@inline_pixbuf: +@copy_pixels: +@length: +@error: +@Returns: + diff --git a/docs/reference/gdk-pixbuf/tmpl/gdk-pixbuf.sgml b/docs/reference/gdk-pixbuf/tmpl/gdk-pixbuf.sgml index 403941efa9..ecc32bc201 100644 --- a/docs/reference/gdk-pixbuf/tmpl/gdk-pixbuf.sgml +++ b/docs/reference/gdk-pixbuf/tmpl/gdk-pixbuf.sgml @@ -20,6 +20,9 @@ Information that describes an image. </para> +@GDK_PIXBUF_ERROR_HEADER_CORRUPT: +@GDK_PIXBUF_ERROR_PIXEL_CORRUPT: +@GDK_PIXBUF_ERROR_UNKNOWN_FORMAT: @GDK_PIXBUF_ERROR_CORRUPT_IMAGE: @GDK_PIXBUF_ERROR_INSUFFICIENT_MEMORY: @GDK_PIXBUF_ERROR_BAD_OPTION_VALUE: diff --git a/docs/reference/gtk/tmpl/gtkitemfactory.sgml b/docs/reference/gtk/tmpl/gtkitemfactory.sgml index 18c4cc601d..abda892595 100644 --- a/docs/reference/gtk/tmpl/gtkitemfactory.sgml +++ b/docs/reference/gtk/tmpl/gtkitemfactory.sgml @@ -77,7 +77,6 @@ GtkItemFactory @callback_action: @item_type: @extra_data: -@extra_data2: <!-- ##### STRUCT GtkItemFactoryItem ##### --> <para> diff --git a/gdk-pixbuf/ChangeLog b/gdk-pixbuf/ChangeLog index a024030d23..992773220d 100644 --- a/gdk-pixbuf/ChangeLog +++ b/gdk-pixbuf/ChangeLog @@ -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> * Makefile.am: Actually update timestamps, so rules don't diff --git a/gdk-pixbuf/Makefile.am b/gdk-pixbuf/Makefile.am index cfe6316664..374ea905a3 100644 --- a/gdk-pixbuf/Makefile.am +++ b/gdk-pixbuf/Makefile.am @@ -164,12 +164,15 @@ TESTS = test-gdk-pixbuf test-loaders noinst_PROGRAMS = $(TESTS) 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_builddir)/gdk-pixbuf \ @INCLUDED_LOADER_DEFINE@ \ @GTK_DEBUG_FLAGS@ \ - @GDK_PIXBUF_DEP_CFLAGS@ + @GDK_PIXBUF_DEP_CFLAGS@ \ +@STRIP_END@ + AM_CPPFLAGS = "-DPIXBUF_LIBDIR=\"$(loaderdir)\"" "-DBUILT_MODULES_DIR=\"$(srcdir)/.libs\"" LDADDS = libgdk_pixbuf-1.3.la @@ -179,12 +182,13 @@ test_loaders_LDADD = $(LDADDS) test_loaders_SOURCES = test-loaders.c test-images.h -bin_PROGRAMS=make-inline-pixbuf - -make_inline_pixbuf_SOURCES=make-inline-pixbuf.c - -make_inline_pixbuf_LDADD = $(LDADDS) +#noinst_PROGRAMS=make-inline-pixbuf +#make_inline_pixbuf_SOURCES=make-inline-pixbuf.c +#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_pixbuf_1_3_la_SOURCES = \ +libgdk_pixbuf_1_3_la_SOURCES = @STRIP_BEGIN@ \ gdk-pixbuf-i18n.h \ gdk-pixbuf.c \ gdk-pixbuf-animation.c \ @@ -203,20 +207,26 @@ libgdk_pixbuf_1_3_la_SOURCES = \ gdk-pixbuf-io.c \ gdk-pixbuf-loader.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_LDFLAGS = \ +libgdk_pixbuf_1_3_la_LDFLAGS = @STRIP_BEGIN@ \ -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_DEPENDENCIES = $(builtin_objs) -libgdk_pixbufinclude_HEADERS = \ +libgdk_pixbufinclude_HEADERS = \ gdk-pixbuf.h \ gdk-pixbuf-loader.h \ - gdk-pixbuf-features.h + gdk-pixbuf-features.h \ + gdk-pixdata.h noinst_HEADERS = \ gdk-pixbuf-io.h \ diff --git a/gdk-pixbuf/gdk-pixbuf-data.c b/gdk-pixbuf/gdk-pixbuf-data.c index 95903b527f..15f5aa8b82 100644 --- a/gdk-pixbuf/gdk-pixbuf-data.c +++ b/gdk-pixbuf/gdk-pixbuf-data.c @@ -78,254 +78,3 @@ gdk_pixbuf_new_from_data (const guchar *data, GdkColorspace colorspace, gboolean 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; -} - diff --git a/gdk-pixbuf/gdk-pixbuf-private.h b/gdk-pixbuf/gdk-pixbuf-private.h index 0bdae8715d..4393cbe336 100644 --- a/gdk-pixbuf/gdk-pixbuf-private.h +++ b/gdk-pixbuf/gdk-pixbuf-private.h @@ -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); #endif diff --git a/gdk-pixbuf/gdk-pixbuf.h b/gdk-pixbuf/gdk-pixbuf.h index 32ab3a8f46..2a32c2fa2b 100644 --- a/gdk-pixbuf/gdk-pixbuf.h +++ b/gdk-pixbuf/gdk-pixbuf.h @@ -75,6 +75,12 @@ typedef void (* GdkPixbufDestroyNotify) (guchar *pixels, gpointer data); #define GDK_PIXBUF_ERROR gdk_pixbuf_error_quark () 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 */ GDK_PIXBUF_ERROR_CORRUPT_IMAGE, /* no mem to load image */ @@ -142,13 +148,11 @@ GdkPixbuf *gdk_pixbuf_new_from_data (const guchar *data, gpointer destroy_fn_data); GdkPixbuf *gdk_pixbuf_new_from_xpm_data (const char **data); - -/* Read an inline pixbuf */ -GdkPixbuf *gdk_pixbuf_new_from_inline (const guchar *inline_pixbuf, - gboolean copy_pixels, - int length, - GError **error); - +GdkPixbuf* gdk_pixbuf_new_from_stream (gint stream_length, + const guint8 *stream, + gboolean copy_pixels, + GError **error); + /* Mutations */ void gdk_pixbuf_fill (GdkPixbuf *pixbuf, guint32 pixel); diff --git a/gtk/gtkiconfactory.c b/gtk/gtkiconfactory.c index ae80f3180b..64c57b33b5 100644 --- a/gtk/gtkiconfactory.c +++ b/gtk/gtkiconfactory.c @@ -335,7 +335,7 @@ sized_icon_set_from_inline (const guchar *inline_data, 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); @@ -361,7 +361,7 @@ sized_with_fallback_icon_set_from_inline (const guchar *fallback_data, 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); @@ -371,7 +371,7 @@ sized_with_fallback_icon_set_from_inline (const guchar *fallback_data, 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); @@ -393,7 +393,7 @@ unsized_icon_set_from_inline (const guchar *inline_data) 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); @@ -1090,7 +1090,7 @@ render_fallback_image (GtkStyle *style, static GtkIconSource fallback_source = { NULL, NULL, 0, 0, 0, TRUE, TRUE, TRUE }; 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, &fallback_source, diff --git a/gtk/gtkitemfactory.c b/gtk/gtkitemfactory.c index ff3b8cdd4f..b47970e760 100644 --- a/gtk/gtkitemfactory.c +++ b/gtk/gtkitemfactory.c @@ -228,8 +228,8 @@ gtk_item_factory_class_init (GtkItemFactoryClass *class) quark_type_toggle_item = g_quark_from_static_string ("<ToggleItem>"); quark_type_image_item = g_quark_from_static_string ("<ImageItem>"); 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_tearoff_item = g_quark_from_static_string ("<Tearoff>"); quark_type_branch = g_quark_from_static_string ("<Branch>"); 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); if (GTK_IS_CHECK_MENU_ITEM (widget)) 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; image = NULL; - pixbuf = gdk_pixbuf_new_from_inline (entry->extra_data, + pixbuf = gdk_pixbuf_new_from_stream (-1, + entry->extra_data, FALSE, - entry->extra_data2, NULL); if (pixbuf) diff --git a/gtk/gtkitemfactory.h b/gtk/gtkitemfactory.h index 536d4ea7be..5132f9d1db 100644 --- a/gtk/gtkitemfactory.h +++ b/gtk/gtkitemfactory.h @@ -99,22 +99,24 @@ struct _GtkItemFactoryEntry * "" -> "<Item>" * "<Title>" -> create a title 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 * "<ToggleItem>" -> create a toggle item * "<RadioItem>" -> create a radio item * <path> -> path of a radio item to link against * "<Separator>" -> create a separator + * "<Tearoff>" -> create a tearoff separator * "<Branch>" -> create an item to hold sub items * "<LastBranch>" -> create a right justified item to hold sub items */ gchar *item_type; /* 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 */ - gpointer extra_data; - guint extra_data2; + gconstpointer extra_data; }; struct _GtkItemFactoryItem diff --git a/gtk/stock-icons/Makefile.am b/gtk/stock-icons/Makefile.am index 22f1234cc9..3ea1084ce6 100644 --- a/gtk/stock-icons/Makefile.am +++ b/gtk/stock-icons/Makefile.am @@ -154,8 +154,8 @@ CLEANFILES += $(noinst_DATA) 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 \ - $(pixbuf_dir)/make-inline-pixbuf $(srcdir)/gtkstockpixbufs.h $(VARIABLES) + $(pixbuf_dir)/gdk-pixbuf-csource --raw --build-list $(VARIABLES) >$(srcdir)/gtkstockpixbufs.h EXTRA_DIST = $(IMAGES) diff --git a/tests/testgtk.c b/tests/testgtk.c index 00aacddafe..91678f469a 100644 --- a/tests/testgtk.c +++ b/tests/testgtk.c @@ -3101,7 +3101,7 @@ static GtkItemFactoryEntry menu_items[] = { "/_Preferences/Shape/_Oval", NULL, gtk_ifactory_cb, 0, "/Preferences/Shape/Rectangle" }, { "/_Preferences/Shape/_Rectangle", NULL, gtk_ifactory_cb, 0, "/Preferences/Shape/Square" }, { "/_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 */ { "/_Preferences/Should_NotAppear", NULL, 0, 0, "<Branch>" }, |