0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff
};
+
+static const char * book_open_xpm[] = {
+"16 16 4 1",
+" c None s None",
+". c black",
+"X c #808080",
+"o c white",
+" ",
+" .. ",
+" .Xo. ... ",
+" .Xoo. ..oo. ",
+" .Xooo.Xooo... ",
+" .Xooo.oooo.X. ",
+" .Xooo.Xooo.X. ",
+" .Xooo.oooo.X. ",
+" .Xooo.Xooo.X. ",
+" .Xooo.oooo.X. ",
+" .Xoo.Xoo..X. ",
+" .Xo.o..ooX. ",
+" .X..XXXXX. ",
+" ..X....... ",
+" .. ",
+" "};
+
+static const char * book_closed_xpm[] = {
+"16 16 6 1",
+" c None s None",
+". c black",
+"X c red",
+"o c yellow",
+"O c #808080",
+"# c white",
+" ",
+" .. ",
+" ..XX. ",
+" ..XXXXX. ",
+" ..XXXXXXXX. ",
+".ooXXXXXXXXX. ",
+"..ooXXXXXXXXX. ",
+".X.ooXXXXXXXXX. ",
+".XX.ooXXXXXX.. ",
+" .XX.ooXXX..#O ",
+" .XX.oo..##OO. ",
+" .XX..##OO.. ",
+" .X.#OO.. ",
+" ..O.. ",
+" .. ",
+" "};
+
+static const char * mini_page_xpm[] = {
+"16 16 4 1",
+" c None s None",
+". c black",
+"X c white",
+"o c #808080",
+" ",
+" ....... ",
+" .XXXXX.. ",
+" .XoooX.X. ",
+" .XXXXX.... ",
+" .XooooXoo.o ",
+" .XXXXXXXX.o ",
+" .XooooooX.o ",
+" .XXXXXXXX.o ",
+" .XooooooX.o ",
+" .XXXXXXXX.o ",
+" .XooooooX.o ",
+" .XXXXXXXX.o ",
+" ..........o ",
+" oooooooooo ",
+" "};
+
+static const char * gtk_mini_xpm[] = {
+"15 20 17 1",
+" c None",
+". c #14121F",
+"+ c #278828",
+"@ c #9B3334",
+"# c #284C72",
+"$ c #24692A",
+"% c #69282E",
+"& c #37C539",
+"* c #1D2F4D",
+"= c #6D7076",
+"- c #7D8482",
+"; c #E24A49",
+"> c #515357",
+", c #9B9C9B",
+"' c #2FA232",
+") c #3CE23D",
+"! c #3B6CCB",
+" ",
+" ***> ",
+" >.*!!!* ",
+" ***....#*= ",
+" *!*.!!!**!!# ",
+" .!!#*!#*!!!!# ",
+" @%#!.##.*!!$& ",
+" @;%*!*.#!#')) ",
+" @;;@%!!*$&)'' ",
+" @%.%@%$'&)$+' ",
+" @;...@$'*'*)+ ",
+" @;%..@$+*.')$ ",
+" @;%%;;$+..$)# ",
+" @;%%;@$$$'.$# ",
+" %;@@;;$$+))&* ",
+" %;;;@+$&)&* ",
+" %;;@'))+> ",
+" %;@'&# ",
+" >%$$ ",
+" >= "};
+
+const gchar ** xpms[] = {
+ book_open_xpm,
+ book_closed_xpm,
+ mini_page_xpm,
+ gtk_mini_xpm,
+ NULL
+};
+
static void
quit_func (GtkWidget *widget, gpointer dummy)
{
i = 1;
if (argc == 1) {
+ const gchar*** xpmp;
+
pixbuf = gdk_pixbuf_new_from_data ((guchar *) default_image, ART_PIX_RGB, FALSE,
DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_WIDTH * 3,
NULL, NULL);
new_testrgb_window (pixbuf);
+
+ xpmp = xpms;
+ while (*xpmp) {
+ pixbuf = gdk_pixbuf_new_from_xpm_data (*xpmp);
+ new_testrgb_window (pixbuf);
+ ++xpmp;
+ }
+
found_valid = TRUE;
} else {
for (i = 1; i < argc; i++) {
+1999-10-22 Havoc Pennington <hp@pobox.com>
+
+ * src/io-xpm.c (mem_buffer): Clean up stupid
+ increment-inside-array-dereference thing
+
+ * src/testpixbuf.c: Add XPM data tests.
+
+ * src/io-xpm.c: Make the XPM data buffer const, fix const
+ correctness throughout the code.
+
1999-10-22 Havoc Pennington <hp@pobox.com>
* src/gdk-pixbuf.h: Export gdk_pixbuf_new_from_xpm_data()
return ret;
}
-static gchar *
-xpm_skip_whitespaces (gchar *buffer)
+static const gchar *
+xpm_skip_whitespaces (const gchar *buffer)
{
gint32 index = 0;
return &buffer[index];
}
-static gchar *
-xpm_skip_string (gchar *buffer)
+static const gchar *
+xpm_skip_string (const gchar *buffer)
{
gint32 index = 0;
#define MAX_COLOR_LEN 120
static gchar *
-xpm_extract_color (gchar *buffer)
+xpm_extract_color (const gchar *buffer)
{
gint counter, numnames;
- gchar *ptr = NULL, ch, temp[128];
+ const gchar *ptr = NULL;
+ gchar ch, temp[128];
gchar color[MAX_COLOR_LEN], *retcol;
gint space;
/* (almost) direct copy from gdkpixmap.c... loads an XPM from a file */
-static gchar *
+static const gchar *
file_buffer (enum buf_op op, gpointer handle)
{
struct file_handle *h = handle;
}
/* This reads from memory */
-static gchar *
+static const gchar *
mem_buffer (enum buf_op op, gpointer handle)
{
struct mem_handle *h = handle;
case op_header:
case op_cmap:
case op_body:
- if (h->data[h->offset])
- return h->data[h->offset++];
+ if (h->data[h->offset]) {
+ const gchar* retval;
+
+ retval = h->data[h->offset];
+ h->offset += 1;
+ return retval;
+ }
+ break;
default:
g_assert_not_reached ();
+ break;
}
return NULL;
/* This function does all the work. */
static GdkPixbuf *
-pixbuf_create_from_xpm (gchar * (*get_buf) (enum buf_op op, gpointer handle), gpointer handle)
+pixbuf_create_from_xpm (const gchar * (*get_buf) (enum buf_op op, gpointer handle), gpointer handle)
{
gint w, h, n_col, cpp;
gint cnt, xcnt, ycnt, wbytes, n, ns;
gint is_trans = FALSE;
- gchar *buffer, *name_buf;
+ const gchar *buffer;
+ gchar *name_buf;
gchar pixel_str[32];
GHashTable *color_hash;
_XPMColor *colors, *color, *fallbackcolor;