summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--demos/testpixbuf.c514
-rw-r--r--gdk-pixbuf/ChangeLog4
-rw-r--r--gdk-pixbuf/gdk-pixbuf-cache.h8
-rw-r--r--gdk-pixbuf/gdk-pixbuf-data.c12
-rw-r--r--gdk-pixbuf/gdk-pixbuf-drawable.h8
-rw-r--r--gdk-pixbuf/gdk-pixbuf-io.c20
-rw-r--r--gdk-pixbuf/gdk-pixbuf.c241
-rw-r--r--gdk-pixbuf/gdk-pixbuf.h82
-rw-r--r--gdk-pixbuf/io-bmp.c22
-rw-r--r--gdk-pixbuf/io-gif.c263
-rw-r--r--gdk-pixbuf/io-jpeg.c16
-rw-r--r--gdk-pixbuf/io-png.c386
-rw-r--r--gdk-pixbuf/io-tiff.c105
-rw-r--r--gdk-pixbuf/io-xpm.c609
-rw-r--r--gdk-pixbuf/pixbuf.h18
-rw-r--r--gdk/gdkpixbuf-drawable.c63
16 files changed, 1191 insertions, 1180 deletions
diff --git a/demos/testpixbuf.c b/demos/testpixbuf.c
index 297d2d2776..e9b984ea16 100644
--- a/demos/testpixbuf.c
+++ b/demos/testpixbuf.c
@@ -29,301 +29,297 @@
#define DEFAULT_HEIGHT 24
static const unsigned char default_image[] = {
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0xae, 0xb3, 0xb3, 0xc6, 0xc9, 0xcd, 0xd7, 0xd4, 0xdf,
-0xec, 0xde, 0xf3, 0xe7, 0xcb, 0xe9, 0xd9, 0xb5, 0xd3, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0xb1, 0xb7, 0xa5,
-0xb0, 0xb8, 0xad, 0xb3, 0xb9, 0xb6, 0xc1, 0xc6, 0xc8, 0xd5, 0xd3, 0xdc,
-0xec, 0xde, 0xf3, 0xe5, 0xca, 0xe6, 0xe0, 0xbb, 0xd7, 0xe1, 0xad, 0xc2,
-0xe3, 0xac, 0xa3, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0xca, 0xc1, 0xa4, 0xc5, 0xc7, 0xac,
-0xb7, 0xbe, 0xaf, 0xad, 0xb4, 0xaf, 0xbd, 0xc2, 0xc3, 0xd1, 0xd0, 0xd8,
-0xec, 0xde, 0xf3, 0xe5, 0xc7, 0xe4, 0xe0, 0xb6, 0xd1, 0xe7, 0xa9, 0xb4,
-0xed, 0xcd, 0xb6, 0xd6, 0xcf, 0xae, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0x00, 0x00, 0x00, 0xdf, 0xa7, 0x9f, 0xdd, 0xbf, 0xaa, 0xcf, 0xc5, 0xa9,
-0xc1, 0xc4, 0xac, 0xb2, 0xba, 0xaf, 0xb6, 0xbb, 0xbb, 0xcd, 0xce, 0xd4,
-0xec, 0xde, 0xf3, 0xe4, 0xc4, 0xe1, 0xe0, 0xaf, 0xc7, 0xea, 0xbc, 0xae,
-0xe1, 0xd6, 0xb6, 0xc7, 0xcc, 0xae, 0xa2, 0xab, 0x9a, 0x00, 0x00, 0x00,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0x00, 0x00, 0x00, 0xe3, 0xab, 0xc0, 0xe6, 0xa3, 0xa7, 0xdf, 0xba, 0xa8,
-0xcf, 0xc5, 0xa9, 0xbd, 0xc2, 0xae, 0xad, 0xb4, 0xaf, 0xc6, 0xc9, 0xcd,
-0xec, 0xde, 0xf3, 0xe2, 0xbf, 0xdc, 0xe7, 0xa9, 0xb4, 0xe7, 0xd6, 0xb8,
-0xc7, 0xcc, 0xae, 0xac, 0xb6, 0xa6, 0x9d, 0xa8, 0x9f, 0x00, 0x00, 0x00,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
-0xd9, 0xaf, 0xcf, 0xe1, 0xb4, 0xd2, 0xe2, 0xb0, 0xcb, 0xe4, 0xa9, 0xbb,
-0xe2, 0xb2, 0xa6, 0xcf, 0xc5, 0xa9, 0x6a, 0x6a, 0x6a, 0x0d, 0x0d, 0x0d,
-0x0d, 0x0d, 0x0d, 0x6a, 0x6a, 0x6a, 0xed, 0xcd, 0xb6, 0xc7, 0xcc, 0xae,
-0xa6, 0xb1, 0xa3, 0x98, 0xa2, 0x9c, 0x8f, 0x97, 0x96, 0x7e, 0x84, 0x85,
-0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
-0xe8, 0xc6, 0xe7, 0xe5, 0xc2, 0xe3, 0xe3, 0xbd, 0xdd, 0xe1, 0xb6, 0xd5,
-0xe2, 0xb0, 0xcb, 0x6a, 0x6a, 0x6a, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x6a, 0x6a, 0x6a, 0x9d, 0xa8, 0x9f,
-0x8f, 0x97, 0x96, 0x8b, 0x90, 0x92, 0x97, 0x9e, 0xa2, 0xa0, 0xa7, 0xae,
-0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
-0xe7, 0xd3, 0xed, 0xe8, 0xd1, 0xed, 0xe8, 0xce, 0xec, 0xe9, 0xcc, 0xeb,
-0xe8, 0xc6, 0xe7, 0x0d, 0x0d, 0x0d, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x0d, 0x0d, 0x0d, 0x97, 0x9e, 0xa2,
-0xa7, 0xae, 0xb7, 0xb2, 0xb6, 0xc5, 0xba, 0xbc, 0xce, 0xbf, 0xbe, 0xd3,
-0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
-0xe9, 0xdf, 0xf0, 0xe9, 0xdf, 0xf0, 0xe9, 0xdf, 0xf0, 0xe9, 0xdf, 0xf0,
-0xe9, 0xdf, 0xf0, 0x0d, 0x0d, 0x0d, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x0d, 0x0d, 0x0d, 0xe1, 0xd2, 0xf7,
-0xe1, 0xd2, 0xf7, 0xe1, 0xd2, 0xf7, 0xe1, 0xd2, 0xf7, 0xe1, 0xd2, 0xf7,
-0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
-0xca, 0xc7, 0xd2, 0xc5, 0xc4, 0xcd, 0xbf, 0xbf, 0xc7, 0xb8, 0xb9, 0xc0,
-0xae, 0xaf, 0xb6, 0x6a, 0x6a, 0x6a, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x6a, 0x6a, 0x6a, 0xd5, 0xa8, 0xe1,
-0xd8, 0xb2, 0xe9, 0xd9, 0xb8, 0xed, 0xdb, 0xbd, 0xf0, 0xdc, 0xbf, 0xf1,
-0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
-0xa4, 0xa6, 0xac, 0xa8, 0xaa, 0xaf, 0xa0, 0xa6, 0xa8, 0x98, 0x9e, 0x9c,
-0xa1, 0xa8, 0x9e, 0xb1, 0xb6, 0xa1, 0x6a, 0x6a, 0x6a, 0x0d, 0x0d, 0x0d,
-0x0d, 0x0d, 0x0d, 0x6a, 0x6a, 0x6a, 0xc0, 0x8c, 0xad, 0xcc, 0x90, 0xb5,
-0xd3, 0x94, 0xca, 0xd6, 0xa2, 0xdb, 0xd5, 0xa8, 0xe1, 0xcf, 0xa7, 0xdf,
-0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0x00, 0x00, 0x00, 0x98, 0x9f, 0x9b, 0xa1, 0xa8, 0x9e, 0xac, 0xb3, 0xa0,
-0xb9, 0xb9, 0xa4, 0xd0, 0xb8, 0xa8, 0xc5, 0xb5, 0xb8, 0xb6, 0xbb, 0xad,
-0xe3, 0xd7, 0xb5, 0xdd, 0xb4, 0xa9, 0xcb, 0x89, 0xac, 0xc0, 0x8c, 0xad,
-0xc8, 0x91, 0xb5, 0xd1, 0x8d, 0xb7, 0xd3, 0x94, 0xca, 0x00, 0x00, 0x00,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0x00, 0x00, 0x00, 0xa1, 0xa7, 0x98, 0xb1, 0xb6, 0xa1, 0xbd, 0xb9, 0xa5,
-0xd0, 0xb8, 0xa8, 0xca, 0xb5, 0xb7, 0xb8, 0xb1, 0xb1, 0xc2, 0xc8, 0xb2,
-0xe3, 0xd7, 0xb5, 0xe1, 0xbf, 0xaf, 0xdb, 0x92, 0x9a, 0xbe, 0x82, 0xa6,
-0xc0, 0x8c, 0xad, 0xc8, 0x91, 0xb4, 0xc7, 0x8b, 0xb0, 0x00, 0x00, 0x00,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0xbc, 0xb6, 0xa1, 0xd0, 0xb8, 0xa8,
-0xcd, 0xb6, 0xb7, 0xc0, 0xb4, 0xb5, 0xb1, 0xb1, 0xaa, 0xca, 0xd1, 0xb4,
-0xe3, 0xd7, 0xb5, 0xe2, 0xc1, 0xb0, 0xdb, 0xa8, 0xa3, 0xd2, 0x8a, 0xa9,
-0xb7, 0x7e, 0xa2, 0xbd, 0x89, 0xa9, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0xc9, 0xaf, 0xaf,
-0xc5, 0xb5, 0xb8, 0xb8, 0xb1, 0xb1, 0xb6, 0xbb, 0xad, 0xd0, 0xd6, 0xb5,
-0xe3, 0xd7, 0xb5, 0xe2, 0xbf, 0xaf, 0xdd, 0xb4, 0xa9, 0xdb, 0x92, 0x9a,
-0xc6, 0x84, 0xa7, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0xac, 0xaa, 0xa6, 0xbd, 0xc3, 0xb0, 0xd2, 0xd7, 0xb5,
-0xe3, 0xd7, 0xb5, 0xe2, 0xbf, 0xae, 0xdb, 0xb6, 0xa8, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
-0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xae, 0xb3, 0xb3, 0xc6, 0xc9, 0xcd, 0xd7, 0xd4, 0xdf,
+ 0xec, 0xde, 0xf3, 0xe7, 0xcb, 0xe9, 0xd9, 0xb5, 0xd3, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0xb1, 0xb7, 0xa5,
+ 0xb0, 0xb8, 0xad, 0xb3, 0xb9, 0xb6, 0xc1, 0xc6, 0xc8, 0xd5, 0xd3, 0xdc,
+ 0xec, 0xde, 0xf3, 0xe5, 0xca, 0xe6, 0xe0, 0xbb, 0xd7, 0xe1, 0xad, 0xc2,
+ 0xe3, 0xac, 0xa3, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0xca, 0xc1, 0xa4, 0xc5, 0xc7, 0xac,
+ 0xb7, 0xbe, 0xaf, 0xad, 0xb4, 0xaf, 0xbd, 0xc2, 0xc3, 0xd1, 0xd0, 0xd8,
+ 0xec, 0xde, 0xf3, 0xe5, 0xc7, 0xe4, 0xe0, 0xb6, 0xd1, 0xe7, 0xa9, 0xb4,
+ 0xed, 0xcd, 0xb6, 0xd6, 0xcf, 0xae, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0x00, 0x00, 0x00, 0xdf, 0xa7, 0x9f, 0xdd, 0xbf, 0xaa, 0xcf, 0xc5, 0xa9,
+ 0xc1, 0xc4, 0xac, 0xb2, 0xba, 0xaf, 0xb6, 0xbb, 0xbb, 0xcd, 0xce, 0xd4,
+ 0xec, 0xde, 0xf3, 0xe4, 0xc4, 0xe1, 0xe0, 0xaf, 0xc7, 0xea, 0xbc, 0xae,
+ 0xe1, 0xd6, 0xb6, 0xc7, 0xcc, 0xae, 0xa2, 0xab, 0x9a, 0x00, 0x00, 0x00,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0x00, 0x00, 0x00, 0xe3, 0xab, 0xc0, 0xe6, 0xa3, 0xa7, 0xdf, 0xba, 0xa8,
+ 0xcf, 0xc5, 0xa9, 0xbd, 0xc2, 0xae, 0xad, 0xb4, 0xaf, 0xc6, 0xc9, 0xcd,
+ 0xec, 0xde, 0xf3, 0xe2, 0xbf, 0xdc, 0xe7, 0xa9, 0xb4, 0xe7, 0xd6, 0xb8,
+ 0xc7, 0xcc, 0xae, 0xac, 0xb6, 0xa6, 0x9d, 0xa8, 0x9f, 0x00, 0x00, 0x00,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
+ 0xd9, 0xaf, 0xcf, 0xe1, 0xb4, 0xd2, 0xe2, 0xb0, 0xcb, 0xe4, 0xa9, 0xbb,
+ 0xe2, 0xb2, 0xa6, 0xcf, 0xc5, 0xa9, 0x6a, 0x6a, 0x6a, 0x0d, 0x0d, 0x0d,
+ 0x0d, 0x0d, 0x0d, 0x6a, 0x6a, 0x6a, 0xed, 0xcd, 0xb6, 0xc7, 0xcc, 0xae,
+ 0xa6, 0xb1, 0xa3, 0x98, 0xa2, 0x9c, 0x8f, 0x97, 0x96, 0x7e, 0x84, 0x85,
+ 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
+ 0xe8, 0xc6, 0xe7, 0xe5, 0xc2, 0xe3, 0xe3, 0xbd, 0xdd, 0xe1, 0xb6, 0xd5,
+ 0xe2, 0xb0, 0xcb, 0x6a, 0x6a, 0x6a, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x6a, 0x6a, 0x6a, 0x9d, 0xa8, 0x9f,
+ 0x8f, 0x97, 0x96, 0x8b, 0x90, 0x92, 0x97, 0x9e, 0xa2, 0xa0, 0xa7, 0xae,
+ 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
+ 0xe7, 0xd3, 0xed, 0xe8, 0xd1, 0xed, 0xe8, 0xce, 0xec, 0xe9, 0xcc, 0xeb,
+ 0xe8, 0xc6, 0xe7, 0x0d, 0x0d, 0x0d, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x0d, 0x0d, 0x0d, 0x97, 0x9e, 0xa2,
+ 0xa7, 0xae, 0xb7, 0xb2, 0xb6, 0xc5, 0xba, 0xbc, 0xce, 0xbf, 0xbe, 0xd3,
+ 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
+ 0xe9, 0xdf, 0xf0, 0xe9, 0xdf, 0xf0, 0xe9, 0xdf, 0xf0, 0xe9, 0xdf, 0xf0,
+ 0xe9, 0xdf, 0xf0, 0x0d, 0x0d, 0x0d, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x0d, 0x0d, 0x0d, 0xe1, 0xd2, 0xf7,
+ 0xe1, 0xd2, 0xf7, 0xe1, 0xd2, 0xf7, 0xe1, 0xd2, 0xf7, 0xe1, 0xd2, 0xf7,
+ 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
+ 0xca, 0xc7, 0xd2, 0xc5, 0xc4, 0xcd, 0xbf, 0xbf, 0xc7, 0xb8, 0xb9, 0xc0,
+ 0xae, 0xaf, 0xb6, 0x6a, 0x6a, 0x6a, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x6a, 0x6a, 0x6a, 0xd5, 0xa8, 0xe1,
+ 0xd8, 0xb2, 0xe9, 0xd9, 0xb8, 0xed, 0xdb, 0xbd, 0xf0, 0xdc, 0xbf, 0xf1,
+ 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
+ 0xa4, 0xa6, 0xac, 0xa8, 0xaa, 0xaf, 0xa0, 0xa6, 0xa8, 0x98, 0x9e, 0x9c,
+ 0xa1, 0xa8, 0x9e, 0xb1, 0xb6, 0xa1, 0x6a, 0x6a, 0x6a, 0x0d, 0x0d, 0x0d,
+ 0x0d, 0x0d, 0x0d, 0x6a, 0x6a, 0x6a, 0xc0, 0x8c, 0xad, 0xcc, 0x90, 0xb5,
+ 0xd3, 0x94, 0xca, 0xd6, 0xa2, 0xdb, 0xd5, 0xa8, 0xe1, 0xcf, 0xa7, 0xdf,
+ 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0x00, 0x00, 0x00, 0x98, 0x9f, 0x9b, 0xa1, 0xa8, 0x9e, 0xac, 0xb3, 0xa0,
+ 0xb9, 0xb9, 0xa4, 0xd0, 0xb8, 0xa8, 0xc5, 0xb5, 0xb8, 0xb6, 0xbb, 0xad,
+ 0xe3, 0xd7, 0xb5, 0xdd, 0xb4, 0xa9, 0xcb, 0x89, 0xac, 0xc0, 0x8c, 0xad,
+ 0xc8, 0x91, 0xb5, 0xd1, 0x8d, 0xb7, 0xd3, 0x94, 0xca, 0x00, 0x00, 0x00,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0x00, 0x00, 0x00, 0xa1, 0xa7, 0x98, 0xb1, 0xb6, 0xa1, 0xbd, 0xb9, 0xa5,
+ 0xd0, 0xb8, 0xa8, 0xca, 0xb5, 0xb7, 0xb8, 0xb1, 0xb1, 0xc2, 0xc8, 0xb2,
+ 0xe3, 0xd7, 0xb5, 0xe1, 0xbf, 0xaf, 0xdb, 0x92, 0x9a, 0xbe, 0x82, 0xa6,
+ 0xc0, 0x8c, 0xad, 0xc8, 0x91, 0xb4, 0xc7, 0x8b, 0xb0, 0x00, 0x00, 0x00,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0xbc, 0xb6, 0xa1, 0xd0, 0xb8, 0xa8,
+ 0xcd, 0xb6, 0xb7, 0xc0, 0xb4, 0xb5, 0xb1, 0xb1, 0xaa, 0xca, 0xd1, 0xb4,
+ 0xe3, 0xd7, 0xb5, 0xe2, 0xc1, 0xb0, 0xdb, 0xa8, 0xa3, 0xd2, 0x8a, 0xa9,
+ 0xb7, 0x7e, 0xa2, 0xbd, 0x89, 0xa9, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0xc9, 0xaf, 0xaf,
+ 0xc5, 0xb5, 0xb8, 0xb8, 0xb1, 0xb1, 0xb6, 0xbb, 0xad, 0xd0, 0xd6, 0xb5,
+ 0xe3, 0xd7, 0xb5, 0xe2, 0xbf, 0xaf, 0xdd, 0xb4, 0xa9, 0xdb, 0x92, 0x9a,
+ 0xc6, 0x84, 0xa7, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xac, 0xaa, 0xa6, 0xbd, 0xc3, 0xb0, 0xd2, 0xd7, 0xb5,
+ 0xe3, 0xd7, 0xb5, 0xe2, 0xbf, 0xae, 0xdb, 0xb6, 0xa8, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff
};
-
-
static void
quit_func (GtkWidget *widget, gpointer dummy)
{
- gtk_main_quit ();
+ gtk_main_quit ();
}
+static void
expose_func (GtkWidget *drawing_area, GdkEventExpose *event, gpointer data)
{
- GdkPixBuf *pixbuf;
- gint x1, y1, x2, y2;
-
- pixbuf = (GdkPixBuf *)gtk_object_get_data(GTK_OBJECT(drawing_area), "pixbuf");
-
- if (pixbuf->art_pixbuf->has_alpha){
- gdk_draw_rgb_32_image (drawing_area->window,
- drawing_area->style->black_gc,
- event->area.x, event->area.y,
- event->area.width,
- event->area.height,
- GDK_RGB_DITHER_MAX,
- pixbuf->art_pixbuf->pixels
- + (event->area.y * pixbuf->art_pixbuf->rowstride)
- + (event->area.x * pixbuf->art_pixbuf->n_channels),
- pixbuf->art_pixbuf->rowstride);
- }else{
- gdk_draw_rgb_image (drawing_area->window,
- drawing_area->style->white_gc,
- event->area.x, event->area.y,
- event->area.width,
- event->area.height,
- GDK_RGB_DITHER_NORMAL,
- pixbuf->art_pixbuf->pixels
- + (event->area.y * pixbuf->art_pixbuf->rowstride)
- + (event->area.x * pixbuf->art_pixbuf->n_channels),
- pixbuf->art_pixbuf->rowstride);
- }
+ GdkPixbuf *pixbuf;
+ gint x1, y1, x2, y2;
+
+ pixbuf = (GdkPixbuf *)gtk_object_get_data(GTK_OBJECT(drawing_area), "pixbuf");
+
+ if (pixbuf->art_pixbuf->has_alpha) {
+ gdk_draw_rgb_32_image (drawing_area->window,
+ drawing_area->style->black_gc,
+ event->area.x, event->area.y,
+ event->area.width,
+ event->area.height,
+ GDK_RGB_DITHER_MAX,
+ pixbuf->art_pixbuf->pixels
+ + (event->area.y * pixbuf->art_pixbuf->rowstride)
+ + (event->area.x * pixbuf->art_pixbuf->n_channels),
+ pixbuf->art_pixbuf->rowstride);
+ } else {
+ gdk_draw_rgb_image (drawing_area->window,
+ drawing_area->style->white_gc,
+ event->area.x, event->area.y,
+ event->area.width,
+ event->area.height,
+ GDK_RGB_DITHER_NORMAL,
+ pixbuf->art_pixbuf->pixels
+ + (event->area.y * pixbuf->art_pixbuf->rowstride)
+ + (event->area.x * pixbuf->art_pixbuf->n_channels),
+ pixbuf->art_pixbuf->rowstride);
+ }
}
+static void
config_func (GtkWidget *drawing_area, GdkEventConfigure *event, gpointer data)
{
- GdkPixBuf *pixbuf, *spb;
+ GdkPixbuf *pixbuf, *spb;
- pixbuf = (GdkPixBuf *)gtk_object_get_data(GTK_OBJECT(drawing_area), "pixbuf");
+ pixbuf = (GdkPixbuf *)gtk_object_get_data(GTK_OBJECT(drawing_area), "pixbuf");
- g_print("X:%d Y:%d\n", event->width, event->height);
+ g_print("X:%d Y:%d\n", event->width, event->height);
- if (((event->width) != (pixbuf->art_pixbuf->width)) ||
- ((event->height) != (pixbuf->art_pixbuf->height)))
- gdk_pixbuf_scale(pixbuf, event->width, event->height);
+ if (((event->width) != (pixbuf->art_pixbuf->width)) ||
+ ((event->height) != (pixbuf->art_pixbuf->height)))
+ gdk_pixbuf_scale(pixbuf, event->width, event->height);
}
-void
-new_testrgb_window (GdkPixBuf *pixbuf)
+static void
+new_testrgb_window (GdkPixbuf *pixbuf)
{
- GtkWidget *window;
- GtkWidget *vbox;
- GtkWidget *button;
- GtkWidget *drawing_area;
- gint w, h;
+ GtkWidget *window;
+ GtkWidget *vbox;
+ GtkWidget *button;
+ GtkWidget *drawing_area;
+ gint w, h;
- w = pixbuf->art_pixbuf->width;
- h = pixbuf->art_pixbuf->height;
+ w = pixbuf->art_pixbuf->width;
+ h = pixbuf->art_pixbuf->height;
- window = gtk_widget_new (gtk_window_get_type (),
- "GtkObject::user_data", NULL,
- "GtkWindow::type", GTK_WINDOW_TOPLEVEL,
- "GtkWindow::title", "testrgb",
- "GtkWindow::allow_shrink", TRUE,
- NULL);
- gtk_signal_connect (GTK_OBJECT (window), "destroy",
- (GtkSignalFunc) quit_func, NULL);
+ window = gtk_widget_new (gtk_window_get_type (),
+ "GtkObject::user_data", NULL,
+ "GtkWindow::type", GTK_WINDOW_TOPLEVEL,
+ "GtkWindow::title", "testrgb",
+ "GtkWindow::allow_shrink", TRUE,
+ NULL);
+ gtk_signal_connect (GTK_OBJECT (window), "destroy",
+ (GtkSignalFunc) quit_func, NULL);
- vbox = gtk_vbox_new (FALSE, 0);
+ vbox = gtk_vbox_new (FALSE, 0);
- drawing_area = gtk_drawing_area_new ();
+ drawing_area = gtk_drawing_area_new ();
- gtk_drawing_area_size (GTK_DRAWING_AREA(drawing_area), w, h);
- gtk_box_pack_start (GTK_BOX (vbox), drawing_area, TRUE, TRUE, 0);
+ gtk_drawing_area_size (GTK_DRAWING_AREA(drawing_area), w, h);
+ gtk_box_pack_start (GTK_BOX (vbox), drawing_area, TRUE, TRUE, 0);
- gtk_signal_connect (GTK_OBJECT(drawing_area), "expose_event",
- GTK_SIGNAL_FUNC(expose_func), NULL);
- gtk_signal_connect (GTK_OBJECT(drawing_area), "configure_event",
- GTK_SIGNAL_FUNC (config_func), NULL);
+ gtk_signal_connect (GTK_OBJECT(drawing_area), "expose_event",
+ GTK_SIGNAL_FUNC(expose_func), NULL);
+ gtk_signal_connect (GTK_OBJECT(drawing_area), "configure_event",
+ GTK_SIGNAL_FUNC (config_func), NULL);
- gtk_object_set_data (GTK_OBJECT(drawing_area), "pixbuf", pixbuf);
+ gtk_object_set_data (GTK_OBJECT(drawing_area), "pixbuf", pixbuf);
- gtk_widget_show (drawing_area);
+ gtk_widget_show (drawing_area);
- button = gtk_button_new_with_label ("Quit");
- gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
- gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
- (GtkSignalFunc) gtk_widget_destroy,
- GTK_OBJECT (window));
+ button = gtk_button_new_with_label ("Quit");
+ gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
+ gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
+ (GtkSignalFunc) gtk_widget_destroy,
+ GTK_OBJECT (window));
- gtk_widget_show (button);
+ gtk_widget_show (button);
- gtk_container_add (GTK_CONTAINER (window), vbox);
- gtk_widget_show (vbox);
+ gtk_container_add (GTK_CONTAINER (window), vbox);
+ gtk_widget_show (vbox);
- gtk_widget_show (window);
+ gtk_widget_show (window);
}
int
main (int argc, char **argv)
{
- int i;
- int found_valid = FALSE;
-
- GdkPixBuf *pixbuf;
-
- gtk_init (&argc, &argv);
-
- gdk_rgb_set_verbose (TRUE);
-
- gdk_rgb_init ();
-
- gtk_widget_set_default_colormap (gdk_rgb_get_cmap ());
- gtk_widget_set_default_visual (gdk_rgb_get_visual ());
-
- i = 1;
- if (argc == 1)
- {
- pixbuf = gdk_pixbuf_load_image_from_rgb_d(default_image,
- DEFAULT_WIDTH,
- DEFAULT_HEIGHT);
- if (pixbuf)
- {
- new_testrgb_window (pixbuf);
- found_valid = TRUE;
- }
- } else {
- for (i = 1; i < argc; i++)
- {
- pixbuf = gdk_pixbuf_load_image (argv[i]);
- pixbuf = gdk_pixbuf_rotate(pixbuf, 10.0);
+ int i;
+ int found_valid = FALSE;
+
+ GdkPixbuf *pixbuf;
+
+ gtk_init (&argc, &argv);
+
+ gdk_rgb_set_verbose (TRUE);
+
+ gdk_rgb_init ();
+
+ gtk_widget_set_default_colormap (gdk_rgb_get_cmap ());
+ gtk_widget_set_default_visual (gdk_rgb_get_visual ());
+
+ i = 1;
+ if (argc == 1) {
+ pixbuf = gdk_pixbuf_load_image_from_rgb_d(default_image,
+ DEFAULT_WIDTH,
+ DEFAULT_HEIGHT);
+ if (pixbuf) {
+ new_testrgb_window (pixbuf);
+ found_valid = TRUE;
+ }
+ } else {
+ for (i = 1; i < argc; i++) {
+ pixbuf = gdk_pixbuf_load_image (argv[i]);
+ pixbuf = gdk_pixbuf_rotate(pixbuf, 10.0);
- if (pixbuf)
- {
- new_testrgb_window (pixbuf);
- found_valid = TRUE;
- }
- }
- }
-
- if (found_valid)
- gtk_main ();
-
- return 0;
+ if (pixbuf) {
+ new_testrgb_window (pixbuf);
+ found_valid = TRUE;
+ }
+ }
+ }
+
+ if (found_valid)
+ gtk_main ();
+
+ return 0;
}
diff --git a/gdk-pixbuf/ChangeLog b/gdk-pixbuf/ChangeLog
index e1a37347f4..714bde5050 100644
--- a/gdk-pixbuf/ChangeLog
+++ b/gdk-pixbuf/ChangeLog
@@ -1,3 +1,7 @@
+1999-10-18 Federico Mena Quintero <federico@redhat.com>
+
+ * src/*: Reindented to use the GNOME Indentation.
+
1999-10-18 Havoc Pennington <hp@pobox.com>
* configure.in: Use AM_PATH_GLIB instead of glib-config directly
diff --git a/gdk-pixbuf/gdk-pixbuf-cache.h b/gdk-pixbuf/gdk-pixbuf-cache.h
index 0afe745a4f..00669e7c16 100644
--- a/gdk-pixbuf/gdk-pixbuf-cache.h
+++ b/gdk-pixbuf/gdk-pixbuf-cache.h
@@ -4,12 +4,12 @@
/* The optional cache interface */
typedef struct {
int dummy;
-} GdkPixBufCache;
+} GdkPixbufCache;
-GdkPixBufCache *gdk_pixbuf_cache_new (long image_cache_limit,
+GdkPixbufCache *gdk_pixbuf_cache_new (long image_cache_limit,
long pixmap_bitmap_cache_limit);
-void gdk_pixbuf_cache_destroy (GdkPixBufCache *cache);
+void gdk_pixbuf_cache_destroy (GdkPixbufCache *cache);
-GdkPixBuf *gdk_pixbuf_cache_load_image (GdkPixBufCache *cache,
+GdkPixbuf *gdk_pixbuf_cache_load_image (GdkPixbufCache *cache,
const char *file);
#endif
diff --git a/gdk-pixbuf/gdk-pixbuf-data.c b/gdk-pixbuf/gdk-pixbuf-data.c
index 1e8e7aedb2..b14244b461 100644
--- a/gdk-pixbuf/gdk-pixbuf-data.c
+++ b/gdk-pixbuf/gdk-pixbuf-data.c
@@ -1,5 +1,5 @@
/*
- * gdk-pixbuf-data.c: Code to load images into GdkPixBufs from constant data
+ * gdk-pixbuf-data.c: Code to load images into GdkPixbufs from constant data
*
* Author:
* Michael Fulbright (drmike@redhat.com)
@@ -15,10 +15,10 @@
/* This function does all the work. */
-static GdkPixBuf *
+static GdkPixbuf *
_pixbuf_create_from_rgb_d(unsigned char *data, int w, int h)
{
- GdkPixBuf *pixbuf;
+ GdkPixbuf *pixbuf;
ArtPixBuf *art_pixbuf;
art_u8 *pixels;
@@ -40,12 +40,10 @@ _pixbuf_create_from_rgb_d(unsigned char *data, int w, int h)
}
-GdkPixBuf *
-gdk_pixbuf_load_image_from_rgb_d (unsigned char *data,
- int rgb_width, int rgb_height)
+GdkPixbuf *
+gdk_pixbuf_load_image_from_rgb_d (unsigned char *data, int rgb_width, int rgb_height)
{
g_return_val_if_fail (data != NULL, NULL);
return _pixbuf_create_from_rgb_d(data, rgb_width, rgb_height);
}
-
diff --git a/gdk-pixbuf/gdk-pixbuf-drawable.h b/gdk-pixbuf/gdk-pixbuf-drawable.h
index 5e8ed5dc60..4335a2bee9 100644
--- a/gdk-pixbuf/gdk-pixbuf-drawable.h
+++ b/gdk-pixbuf/gdk-pixbuf-drawable.h
@@ -4,11 +4,7 @@
#include <gdk/gdk.h>
#include <gdk-pixbuf.h>
-GdkPixBuf *gdk_pixbuf_rgb_from_drawable (GdkWindow *window,
- gint x, gint y,
- gint width, gint height);
-GdkPixBuf *gdk_pixbuf_rgba_from_drawable (GdkWindow *window,
- gint x, gint y,
- gint width, gint height);
+GdkPixbuf *gdk_pixbuf_rgb_from_drawable (GdkWindow *window, gint x, gint y, gint width, gint height);
+GdkPixbuf *gdk_pixbuf_rgba_from_drawable (GdkWindow *window, gint x, gint y, gint width, gint height);
#endif /* _GDK_PIXBUF_DRAWABLE_H_ */
diff --git a/gdk-pixbuf/gdk-pixbuf-io.c b/gdk-pixbuf/gdk-pixbuf-io.c
index 72d611dbdd..a1400feba4 100644
--- a/gdk-pixbuf/gdk-pixbuf-io.c
+++ b/gdk-pixbuf/gdk-pixbuf-io.c
@@ -1,5 +1,5 @@
/*
- * gdk-pixbuf-io.c: Code to load images into GdkPixBufs
+ * gdk-pixbuf-io.c: Code to load images into GdkPixbufs
*
* Author:
* Miguel de Icaza (miguel@gnu.org)
@@ -106,7 +106,7 @@ pixbuf_check_ppm (unsigned char *buffer, int size)
if (size < 20)
return FALSE;
- if (buffer [0] == 'P'){
+ if (buffer [0] == 'P') {
if (buffer [1] == '1' ||
buffer [1] == '2' ||
buffer [1] == '3' ||
@@ -122,8 +122,8 @@ static struct {
char *module_name;
gboolean (*format_check)(unsigned char *buffer, int size);
GModule *module;
- GdkPixBuf *(*load)(FILE *f);
- int (*save)(GdkPixBuf *p, FILE *f, ...);
+ GdkPixbuf *(*load)(FILE *f);
+ int (*save)(GdkPixbuf *p, FILE *f, ...);
} file_formats [] = {
{ "png", pixbuf_check_png, NULL, NULL, NULL },
{ "jpeg", pixbuf_check_jpeg, NULL, NULL, NULL },
@@ -163,10 +163,10 @@ image_handler_load (int idx)
file_formats [idx].save = save_sym;
}
-GdkPixBuf *
+GdkPixbuf *
gdk_pixbuf_load_image (const char *file)
{
- GdkPixBuf *pixbuf;
+ GdkPixbuf *pixbuf;
gint n, i;
FILE *f;
char buffer [128];
@@ -176,17 +176,17 @@ gdk_pixbuf_load_image (const char *file)
return NULL;
n = fread (&buffer, 1, sizeof (buffer), f);
- if (n == 0){
+ if (n == 0) {
fclose (f);
return NULL;
}
- for (i = 0; file_formats [i].module_name; i++){
- if ((*file_formats [i].format_check)(buffer, n)){
+ for (i = 0; file_formats [i].module_name; i++) {
+ if ((*file_formats [i].format_check)(buffer, n)) {
if (!file_formats [i].load)
image_handler_load (i);
- if (!file_formats [i].load){
+ if (!file_formats [i].load) {
fclose (f);
return NULL;
}
diff --git a/gdk-pixbuf/gdk-pixbuf.c b/gdk-pixbuf/gdk-pixbuf.c
index a9f9a50a39..231f115a97 100644
--- a/gdk-pixbuf/gdk-pixbuf.c
+++ b/gdk-pixbuf/gdk-pixbuf.c
@@ -1,14 +1,31 @@
-/*
- * gdk-pixbuf.c: Resource management.
+/* GdkPixbuf library
*
- * Authors:
- * Miguel de Icaza (miguel@gnu.org)
- * Mark Crichton (crichton@gimp.org)
+ * Copyright (C) 1999 The Free Software Foundation
+ *
+ * Authors: Mark Crichton <crichton@gimp.org>
+ * Miguel de Icaza <miguel@gnu.org>
+ * Federico Mena-Quintero <federico@gimp.org>
+ * Carsten Haitzler <raster@rasterman.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library 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.
*/
#include <config.h>
-#include <glib.h>
#include <math.h>
+#include <glib.h>
#include <libart_lgpl/art_misc.h>
#include <libart_lgpl/art_affine.h>
#include <libart_lgpl/art_pixbuf.h>
@@ -16,96 +33,96 @@
#include <libart_lgpl/art_alphagamma.h>
#include "gdk-pixbuf.h"
+
void
-gdk_pixbuf_destroy (GdkPixBuf *pixbuf)
+gdk_pixbuf_destroy (GdkPixbuf *pixbuf)
{
- art_pixbuf_free (pixbuf->art_pixbuf);
- pixbuf->art_pixbuf = NULL;
- g_free (pixbuf);
+ art_pixbuf_free (pixbuf->art_pixbuf);
+ pixbuf->art_pixbuf = NULL;
+ g_free (pixbuf);
}
-GdkPixBuf *
-gdk_pixbuf_new (ArtPixBuf *art_pixbuf,
- GdkPixBufUnrefFunc *unref_fn)
+GdkPixbuf *
+gdk_pixbuf_new (ArtPixBuf *art_pixbuf, GdkPixbufUnrefFunc *unref_fn)
{
- GdkPixBuf *pixbuf;
+ GdkPixbuf *pixbuf;
if (!art_pixbuf)
return NULL;
- pixbuf = g_new (GdkPixBuf, 1);
- pixbuf->ref_count = 1;
- pixbuf->unref_fn = unref_fn;
+ pixbuf = g_new (GdkPixbuf, 1);
+ pixbuf->ref_count = 1;
+ pixbuf->unref_fn = unref_fn;
pixbuf->art_pixbuf = art_pixbuf;
return pixbuf;
}
void
-gdk_pixbuf_ref (GdkPixBuf *pixbuf)
+gdk_pixbuf_ref (GdkPixbuf *pixbuf)
{
- g_return_if_fail (pixbuf != NULL);
- g_return_if_fail (pixbuf->ref_count > 0);
+ g_return_if_fail (pixbuf != NULL);
+ g_return_if_fail (pixbuf->ref_count > 0);
- pixbuf->ref_count++;
+ pixbuf->ref_count++;
}
void
-gdk_pixbuf_unref (GdkPixBuf *pixbuf)
+gdk_pixbuf_unref (GdkPixbuf *pixbuf)
{
- g_return_if_fail (pixbuf != NULL);
- g_return_if_fail (pixbuf->ref_count > 0);
+ g_return_if_fail (pixbuf != NULL);
+ g_return_if_fail (pixbuf->ref_count > 0);
- pixbuf->ref_count--;
+ pixbuf->ref_count--;
- if (pixbuf->ref_count == 0)
- gdk_pixbuf_destroy (pixbuf);
+ if (pixbuf->ref_count == 0)
+ gdk_pixbuf_destroy (pixbuf);
}
-GdkPixBuf *
-gdk_pixbuf_scale (const GdkPixBuf *pixbuf, gint w, gint h)
+GdkPixbuf *
+gdk_pixbuf_scale (const GdkPixbuf *pixbuf, gint w, gint h)
{
- art_u8 *pixels;
- gint rowstride;
- double affine[6];
- ArtAlphaGamma *alphagamma;
- ArtPixBuf *art_pixbuf = NULL;
- GdkPixBuf *copy = NULL;
+ art_u8 *pixels;
+ gint rowstride;
+ double affine[6];
+ ArtAlphaGamma *alphagamma;
+ ArtPixBuf *art_pixbuf = NULL;
+ GdkPixbuf *copy = NULL;
- alphagamma = NULL;
+ alphagamma = NULL;
- affine[1] = affine[2] = affine[4] = affine[5] = 0;
+ affine[1] = affine[2] = affine[4] = affine[5] = 0;
- affine[0] = w / (double)(pixbuf->art_pixbuf->width);
- affine[3] = h / (double)(pixbuf->art_pixbuf->height);
+ affine[0] = w / (double)(pixbuf->art_pixbuf->width);
+ affine[3] = h / (double)(pixbuf->art_pixbuf->height);
- /* rowstride = w * pixbuf->art_pixbuf->n_channels; */
- rowstride = w * 3;
+ /* rowstride = w * pixbuf->art_pixbuf->n_channels; */
+ rowstride = w * 3;
- pixels = art_alloc (h * rowstride);
- art_rgb_pixbuf_affine (pixels, 0, 0, w, h, rowstride,
- pixbuf->art_pixbuf,
- affine, ART_FILTER_NEAREST, alphagamma);
+ pixels = art_alloc (h * rowstride);
+ art_rgb_pixbuf_affine (pixels, 0, 0, w, h, rowstride,
+ pixbuf->art_pixbuf,
+ affine, ART_FILTER_NEAREST, alphagamma);
- if (pixbuf->art_pixbuf->has_alpha)
- /* should be rgba */
- art_pixbuf = art_pixbuf_new_rgb(pixels, w, h, rowstride);
- else
- art_pixbuf = art_pixbuf_new_rgb(pixels, w, h, rowstride);
+ if (pixbuf->art_pixbuf->has_alpha)
+ /* should be rgba */
+ art_pixbuf = art_pixbuf_new_rgb(pixels, w, h, rowstride);
+ else
+ art_pixbuf = art_pixbuf_new_rgb(pixels, w, h, rowstride);
- copy = gdk_pixbuf_new (art_pixbuf, NULL);
+ copy = gdk_pixbuf_new (art_pixbuf, NULL);
- if (!copy)
- art_free (pixels);
-
- return copy;
+ if (!copy)
+ art_free (pixels);
+
+ return copy;
}
-GdkPixBuf *
-gdk_pixbuf_duplicate (const GdkPixBuf *pixbuf)
+GdkPixbuf *
+gdk_pixbuf_duplicate (const GdkPixbuf *pixbuf)
{
- GdkPixBuf *copy = g_new (GdkPixBuf, 1);
+ GdkPixbuf *copy = g_new (GdkPixbuf, 1);
copy->ref_count = 1;
copy->unref_fn = pixbuf->unref_fn;
@@ -114,59 +131,59 @@ gdk_pixbuf_duplicate (const GdkPixBuf *pixbuf)
return copy;
}
-GdkPixBuf *
-gdk_pixbuf_rotate (GdkPixBuf *pixbuf, gdouble angle)
+GdkPixbuf *
+gdk_pixbuf_rotate (GdkPixbuf *pixbuf, gdouble angle)
{
- art_u8 *pixels;
- gint rowstride, w, h;
- gdouble rad;
- double rot[6], trans[6], affine[6];
- ArtAlphaGamma *alphagamma = NULL;
- ArtPixBuf *art_pixbuf = NULL;
-
- w = pixbuf->art_pixbuf->width;
- h = pixbuf->art_pixbuf->height;
-
- rad = (M_PI * angle / 180.0);
-
- rot[0] = cos(rad);
- rot[1] = sin(rad);
- rot[2] = -sin(rad);
- rot[3] = cos(rad);
- rot[4] = rot[5] = 0;
-
- trans[0] = trans[3] = 1;
- trans[1] = trans[2] = 0;
- trans[4] = -(double)w / 2.0;
- trans[5] = -(double)h / 2.0;
-
- art_affine_multiply(rot, trans, rot);
-
- trans[0] = trans[3] = 1;
- trans[1] = trans[2] = 0;
- trans[4] = (double)w / 2.0;
- trans[5] = (double)h / 2.0;
-
- art_affine_multiply(affine, rot, trans);
-
- g_print("Affine: %e %e %e %e %e %e\n", affine[0], affine[1], affine[2],
- affine[3], affine[4], affine[5]);
-
- /* rowstride = w * pixbuf->art_pixbuf->n_channels; */
- rowstride = w * 3;
-
- pixels = art_alloc (h * rowstride);
- art_rgb_pixbuf_affine (pixels, 0, 0, w, h, rowstride,
- pixbuf->art_pixbuf,
- affine, ART_FILTER_NEAREST, alphagamma);
- if (pixbuf->art_pixbuf->has_alpha)
- /* should be rgba */
- art_pixbuf = art_pixbuf_new_rgb(pixels, w, h, rowstride);
- else
- art_pixbuf = art_pixbuf_new_rgb(pixels, w, h, rowstride);
-
- art_pixbuf_free (pixbuf->art_pixbuf);
- pixbuf->art_pixbuf = art_pixbuf;
-
- return pixbuf;
+ art_u8 *pixels;
+ gint rowstride, w, h;
+ gdouble rad;
+ double rot[6], trans[6], affine[6];
+ ArtAlphaGamma *alphagamma = NULL;
+ ArtPixBuf *art_pixbuf = NULL;
+
+ w = pixbuf->art_pixbuf->width;
+ h = pixbuf->art_pixbuf->height;
+
+ rad = (M_PI * angle / 180.0);
+
+ rot[0] = cos(rad);
+ rot[1] = sin(rad);
+ rot[2] = -sin(rad);
+ rot[3] = cos(rad);
+ rot[4] = rot[5] = 0;
+
+ trans[0] = trans[3] = 1;
+ trans[1] = trans[2] = 0;
+ trans[4] = -(double)w / 2.0;
+ trans[5] = -(double)h / 2.0;
+
+ art_affine_multiply(rot, trans, rot);
+
+ trans[0] = trans[3] = 1;
+ trans[1] = trans[2] = 0;
+ trans[4] = (double)w / 2.0;
+ trans[5] = (double)h / 2.0;
+
+ art_affine_multiply(affine, rot, trans);
+
+ g_print("Affine: %e %e %e %e %e %e\n", affine[0], affine[1], affine[2],
+ affine[3], affine[4], affine[5]);
+
+ /* rowstride = w * pixbuf->art_pixbuf->n_channels; */
+ rowstride = w * 3;
+
+ pixels = art_alloc (h * rowstride);
+ art_rgb_pixbuf_affine (pixels, 0, 0, w, h, rowstride,
+ pixbuf->art_pixbuf,
+ affine, ART_FILTER_NEAREST, alphagamma);
+ if (pixbuf->art_pixbuf->has_alpha)
+ /* should be rgba */
+ art_pixbuf = art_pixbuf_new_rgb(pixels, w, h, rowstride);
+ else
+ art_pixbuf = art_pixbuf_new_rgb(pixels, w, h, rowstride);
+
+ art_pixbuf_free (pixbuf->art_pixbuf);
+ pixbuf->art_pixbuf = art_pixbuf;
+
+ return pixbuf;
}
diff --git a/gdk-pixbuf/gdk-pixbuf.h b/gdk-pixbuf/gdk-pixbuf.h
index 811f147f03..7f4cece9cd 100644
--- a/gdk-pixbuf/gdk-pixbuf.h
+++ b/gdk-pixbuf/gdk-pixbuf.h
@@ -1,34 +1,72 @@
-#ifndef _GDK_PIXBUF_H_
-#define _GDK_PIXBUF_H_
+/* GdkPixbuf library
+ *
+ * Copyright (C) 1999 The Free Software Foundation
+ *
+ * Authors: Mark Crichton <crichton@gimp.org>
+ * Miguel de Icaza <miguel@gnu.org>
+ * Federico Mena-Quintero <federico@gimp.org>
+ * Carsten Haitzler <raster@rasterman.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library 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.
+ */
+
+#ifndef GDK_PIXBUF_H
+#define GDK_PIXBUF_H
#include <libart_lgpl/art_misc.h>
#include <libart_lgpl/art_pixbuf.h>
#include <glib.h>
-typedef struct _GdkPixBuf GdkPixBuf;
-typedef void (*GdkPixBufUnrefFunc) (GdkPixBuf *pixbuf);
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
-struct _GdkPixBuf
-{
- int ref_count;
- ArtPixBuf *art_pixbuf;
- GdkPixBufUnrefFunc *unref_fn;
+typedef struct _GdkPixbuf GdkPixbuf;
+typedef void (* GdkPixbufUnrefFunc) (GdkPixbuf *pixbuf);
+
+struct _GdkPixbuf {
+ int ref_count;
+ ArtPixBuf *art_pixbuf;
+ GdkPixbufUnrefFunc *unref_fn;
};
-GdkPixBuf *gdk_pixbuf_load_image (const char *file);
-void gdk_pixbuf_save_image (const char *format_id, const char *file, ...);
-GdkPixBuf *gdk_pixbuf_new (ArtPixBuf *art_pixbuf,
- GdkPixBufUnrefFunc *unref_fn);
-void gdk_pixbuf_ref (GdkPixBuf *pixbuf);
-void gdk_pixbuf_unref (GdkPixBuf *pixbuf);
-GdkPixBuf *gdk_pixbuf_duplicate (const GdkPixBuf *pixbuf);
-GdkPixBuf *gdk_pixbuf_scale (const GdkPixBuf *pixbuf, gint w, gint h);
-GdkPixBuf *gdk_pixbuf_rotate (GdkPixBuf *pixbuf, gdouble angle);
+
+
+GdkPixbuf *gdk_pixbuf_load_image (const char *file);
+void gdk_pixbuf_save_image (const char *format_id, const char *file, ...);
+
+GdkPixbuf *gdk_pixbuf_new (ArtPixBuf *art_pixbuf, GdkPixbufUnrefFunc *unref_fn);
+
+void gdk_pixbuf_ref (GdkPixbuf *pixbuf);
+void gdk_pixbuf_unref (GdkPixbuf *pixbuf);
+
+GdkPixbuf *gdk_pixbuf_duplicate (const GdkPixbuf *pixbuf);
+GdkPixbuf *gdk_pixbuf_scale (const GdkPixbuf *pixbuf, gint w, gint h);
+GdkPixbuf *gdk_pixbuf_rotate (GdkPixbuf *pixbuf, gdouble angle);
+
+void gdk_pixbuf_destroy (GdkPixbuf *pixbuf);
-void gdk_pixbuf_destroy (GdkPixBuf *pixbuf);
+GdkPixbuf *gdk_pixbuf_load_image_from_rgb_d (unsigned char *data, int rgb_width, int rgb_height);
-GdkPixBuf *gdk_pixbuf_load_image_from_rgb_d (unsigned char *data,
- int rgb_width, int rgb_height);
+
+#ifdef __cplusplus
+}
+#endif
-#endif /* _GDK_PIXBUF_H_ */
+#endif
diff --git a/gdk-pixbuf/io-bmp.c b/gdk-pixbuf/io-bmp.c
index 13451b4b26..f58a32e01b 100644
--- a/gdk-pixbuf/io-bmp.c
+++ b/gdk-pixbuf/io-bmp.c
@@ -1,5 +1,5 @@
/*
- * io-bmp.c: GdkPixBuf I/O for BMP files.
+ * io-bmp.c: GdkPixbuf I/O for BMP files.
*
* Copyright (C) 1999 Mark Crichton
* Author: Mark Crichton <crichton@gimp.org>
@@ -30,18 +30,18 @@
/* Loosely based off the BMP loader from The GIMP, hence it's complexity */
/* Shared library entry point */
-GdkPixBuf *image_load(FILE * f)
+GdkPixbuf *image_load(FILE * f)
{
- art_u8 *pixels;
- ArtPixBuf *art_pixbuf;
+ art_u8 *pixels;
+ ArtPixBuf *art_pixbuf;
- /* Ok, now stuff the GdkPixBuf with goodies */
+ /* Ok, now stuff the GdkPixbuf with goodies */
- if (is_trans)
- art_pixbuf = art_pixbuf_new_rgba (pixels, w, h, (w * 4));
- else
- art_pixbuf = art_pixbuf_new_rgb (pixels, w, h, (w * 3));
+ if (is_trans)
+ art_pixbuf = art_pixbuf_new_rgba (pixels, w, h, (w * 4));
+ else
+ art_pixbuf = art_pixbuf_new_rgb (pixels, w, h, (w * 3));
- /* Ok, I'm anal...shoot me */
- return gdk_pixbuf_new (art_pixbuf, NULL);
+ /* Ok, I'm anal...shoot me */
+ return gdk_pixbuf_new (art_pixbuf, NULL);
}
diff --git a/gdk-pixbuf/io-gif.c b/gdk-pixbuf/io-gif.c
index 98c9bbcaad..87d97931f4 100644
--- a/gdk-pixbuf/io-gif.c
+++ b/gdk-pixbuf/io-gif.c
@@ -1,5 +1,5 @@
/*
- * io-gif.c: GdkPixBuf I/O for GIF files.
+ * io-gif.c: GdkPixbuf I/O for GIF files.
* ...second verse, same as the first...
*
* Copyright (C) 1999 Mark Crichton
@@ -29,148 +29,149 @@
#include <gif_lib.h>
/* Shared library entry point */
-GdkPixBuf *image_load(FILE * f)
+GdkPixbuf *
+image_load(FILE *f)
{
- gint fn, is_trans = FALSE;
- gint done = 0;
- gint t_color = -1;
- gint w, h, i, j;
- art_u8 *pixels, *tmpptr;
- GifFileType *gif;
- GifRowType *rows;
- GifRecordType rec;
- ColorMapObject *cmap;
- int intoffset[] =
- {0, 4, 2, 1};
- int intjump[] =
- {8, 8, 4, 2};
-
- GdkPixBuf *pixbuf;
- ArtPixBuf *art_pixbuf;
-
- g_return_val_if_fail(f != NULL, NULL);
-
- fn = fileno(f);
+ gint fn, is_trans = FALSE;
+ gint done = 0;
+ gint t_color = -1;
+ gint w, h, i, j;
+ art_u8 *pixels, *tmpptr;
+ GifFileType *gif;
+ GifRowType *rows;
+ GifRecordType rec;
+ ColorMapObject *cmap;
+ int intoffset[] =
+ {0, 4, 2, 1};
+ int intjump[] =
+ {8, 8, 4, 2};
+
+ GdkPixbuf *pixbuf;
+ ArtPixBuf *art_pixbuf;
+
+ g_return_val_if_fail(f != NULL, NULL);
+
+ fn = fileno(f);
/* lseek(fn, 0, 0);*/
- gif = DGifOpenFileHandle(fn);
-
- if (!gif) {
- g_error("DGifOpenFilehandle FAILED");
- PrintGifError();
- return NULL;
- }
- /* Now we do the ungodly mess of loading a GIF image
- * I used to remember when I liked this file format...
- * of course, I still coded in assembler then.
- * This comes from gdk_imlib, with some cleanups.
- */
-
- do {
- if (DGifGetRecordType(gif, &rec) == GIF_ERROR) {
- PrintGifError();
- rec = TERMINATE_RECORD_TYPE;
- }
- if ((rec == IMAGE_DESC_RECORD_TYPE) && (!done)) {
- if (DGifGetImageDesc(gif) == GIF_ERROR) {
+ gif = DGifOpenFileHandle(fn);
+
+ if (!gif) {
+ g_error("DGifOpenFilehandle FAILED");
PrintGifError();
- rec = TERMINATE_RECORD_TYPE;
- }
- w = gif->Image.Width;
- h = gif->Image.Height;
- rows = g_malloc0(h * sizeof(GifRowType *));
- if (!rows) {
- DGifCloseFile(gif);
return NULL;
- }
- for (i = 0; i < h; i++) {
- rows[i] = g_malloc0(w * sizeof(GifPixelType));
- if (!rows[i]) {
- DGifCloseFile(gif);
- for (i = 0; i < h; i++)
- if (rows[i])
- g_free(rows[i]);
- free(rows);
- return NULL;
- }
- }
- if (gif->Image.Interlace) {
- for (i = 0; i < 4; i++) {
- for (j = intoffset[i]; j < h; j += intjump[i])
- DGifGetLine(gif, rows[j], w);
+ }
+ /* Now we do the ungodly mess of loading a GIF image
+ * I used to remember when I liked this file format...
+ * of course, I still coded in assembler then.
+ * This comes from gdk_imlib, with some cleanups.
+ */
+
+ do {
+ if (DGifGetRecordType(gif, &rec) == GIF_ERROR) {
+ PrintGifError();
+ rec = TERMINATE_RECORD_TYPE;
}
- } else {
- for (i = 0; i < h; i++)
- DGifGetLine(gif, rows[i], w);
- }
- done = 1;
- } else if (rec == EXTENSION_RECORD_TYPE) {
- gint ext_code;
- GifByteType *ext;
-
- DGifGetExtension(gif, &ext_code, &ext);
- while (ext) {
- if ((ext_code == 0xf9) &&
- (ext[1] & 1) && (t_color < 0)) {
- is_trans = TRUE;
- t_color = (gint) ext[4];
+ if ((rec == IMAGE_DESC_RECORD_TYPE) && (!done)) {
+ if (DGifGetImageDesc(gif) == GIF_ERROR) {
+ PrintGifError();
+ rec = TERMINATE_RECORD_TYPE;
+ }
+ w = gif->Image.Width;
+ h = gif->Image.Height;
+ rows = g_malloc0(h * sizeof(GifRowType *));
+ if (!rows) {
+ DGifCloseFile(gif);
+ return NULL;
+ }
+ for (i = 0; i < h; i++) {
+ rows[i] = g_malloc0(w * sizeof(GifPixelType));
+ if (!rows[i]) {
+ DGifCloseFile(gif);
+ for (i = 0; i < h; i++)
+ if (rows[i])
+ g_free(rows[i]);
+ free(rows);
+ return NULL;
+ }
+ }
+ if (gif->Image.Interlace) {
+ for (i = 0; i < 4; i++) {
+ for (j = intoffset[i]; j < h; j += intjump[i])
+ DGifGetLine(gif, rows[j], w);
+ }
+ } else {
+ for (i = 0; i < h; i++)
+ DGifGetLine(gif, rows[i], w);
+ }
+ done = 1;
+ } else if (rec == EXTENSION_RECORD_TYPE) {
+ gint ext_code;
+ GifByteType *ext;
+
+ DGifGetExtension(gif, &ext_code, &ext);
+ while (ext) {
+ if ((ext_code == 0xf9) &&
+ (ext[1] & 1) && (t_color < 0)) {
+ is_trans = TRUE;
+ t_color = (gint) ext[4];
+ }
+ ext = NULL;
+ DGifGetExtensionNext(gif, &ext);
+ }
}
- ext = NULL;
- DGifGetExtensionNext(gif, &ext);
- }
}
- }
- while (rec != TERMINATE_RECORD_TYPE);
-
- /* Ok, we're loaded, now to convert from indexed -> RGB
- * with alpha if necessary
- */
-
- if (is_trans)
- pixels = art_alloc(h * w * 4);
- else
- pixels = art_alloc(h * w * 3);
- tmpptr = pixels;
-
- if (!pixels)
- return NULL;
-
- /* The meat of the transformation */
- /* Get the right palette */
- cmap = (gif->Image.ColorMap ? gif->Image.ColorMap : gif->SColorMap);
-
- /* Unindex the data, and pack it in RGB(A) order.
- * Note for transparent GIFs, the alpha is set to 0
- * for the transparent color, and 0xFF for everything else.
- * I think that's right...
- */
-
- for (i = 0; i < h; i++) {
- for (j = 0; j < w; j++) {
- tmpptr[0] = cmap->Colors[rows[i][j]].Red;
- tmpptr[1] = cmap->Colors[rows[i][j]].Green;
- tmpptr[2] = cmap->Colors[rows[i][j]].Blue;
- if (is_trans && (rows[i][j] == t_color))
- tmpptr[3] = 0;
- else
- tmpptr[3] = 0xFF;
- tmpptr += (is_trans ? 4 : 3);
+ while (rec != TERMINATE_RECORD_TYPE);
+
+ /* Ok, we're loaded, now to convert from indexed -> RGB
+ * with alpha if necessary
+ */
+
+ if (is_trans)
+ pixels = art_alloc(h * w * 4);
+ else
+ pixels = art_alloc(h * w * 3);
+ tmpptr = pixels;
+
+ if (!pixels)
+ return NULL;
+
+ /* The meat of the transformation */
+ /* Get the right palette */
+ cmap = (gif->Image.ColorMap ? gif->Image.ColorMap : gif->SColorMap);
+
+ /* Unindex the data, and pack it in RGB(A) order.
+ * Note for transparent GIFs, the alpha is set to 0
+ * for the transparent color, and 0xFF for everything else.
+ * I think that's right...
+ */
+
+ for (i = 0; i < h; i++) {
+ for (j = 0; j < w; j++) {
+ tmpptr[0] = cmap->Colors[rows[i][j]].Red;
+ tmpptr[1] = cmap->Colors[rows[i][j]].Green;
+ tmpptr[2] = cmap->Colors[rows[i][j]].Blue;
+ if (is_trans && (rows[i][j] == t_color))
+ tmpptr[3] = 0;
+ else
+ tmpptr[3] = 0xFF;
+ tmpptr += (is_trans ? 4 : 3);
+ }
+ g_free(rows[i]);
}
- g_free(rows[i]);
- }
- g_free(rows);
+ g_free(rows);
- if (is_trans)
- art_pixbuf = art_pixbuf_new_rgba(pixels, w, h, (w * 4));
- else
- art_pixbuf = art_pixbuf_new_rgb(pixels, w, h, (w * 3));
+ if (is_trans)
+ art_pixbuf = art_pixbuf_new_rgba(pixels, w, h, (w * 4));
+ else
+ art_pixbuf = art_pixbuf_new_rgb(pixels, w, h, (w * 3));
- pixbuf = gdk_pixbuf_new (art_pixbuf, NULL);
+ pixbuf = gdk_pixbuf_new (art_pixbuf, NULL);
- /* Ok, I'm anal...shoot me */
- if (!pixbuf)
- art_free(pixels);
+ /* Ok, I'm anal...shoot me */
+ if (!pixbuf)
+ art_free(pixels);
- return pixbuf;
+ return pixbuf;
}
image_save() {}
diff --git a/gdk-pixbuf/io-jpeg.c b/gdk-pixbuf/io-jpeg.c
index aa9fa775f1..448e8c4fd1 100644
--- a/gdk-pixbuf/io-jpeg.c
+++ b/gdk-pixbuf/io-jpeg.c
@@ -1,5 +1,5 @@
/*
- io-jpeg.c: GdkPixBuf loader for jpeg files.
+ io-jpeg.c: GdkPixbuf loader for jpeg files.
Based on io-jpeg from gdk_imlib, but not much.
@@ -19,10 +19,9 @@
#include <jpeglib.h>
/* error handler data */
-struct iojpeg_JPEG_error_mgr
-{
+struct iojpeg_JPEG_error_mgr {
struct jpeg_error_mgr pub;
- sigjmp_buf setjmp_buffer;
+ sigjmp_buf setjmp_buffer;
};
static void
@@ -39,17 +38,18 @@ g_JPEGFatalErrorHandler(j_common_ptr cinfo)
return;
}
-GdkPixBuf *image_load(FILE *f)
+GdkPixbuf *
+image_load(FILE *f)
{
int w,h,i,j;
art_u8 *pixels=NULL, *dptr;
unsigned char *lines[4], /* Used to expand rows, via rec_outbuf_height, from
- the header file:
- "* Usually rec_outbuf_height will be 1 or 2, at most 4." */
+ the header file:
+ "* Usually rec_outbuf_height will be 1 or 2, at most 4." */
**lptr;
struct jpeg_decompress_struct cinfo;
struct iojpeg_JPEG_error_mgr jerr;
- GdkPixBuf *pixbuf;
+ GdkPixbuf *pixbuf;
/* setup error handler */
cinfo.err = jpeg_std_error(&(jerr.pub));
diff --git a/gdk-pixbuf/io-png.c b/gdk-pixbuf/io-png.c
index c574deab12..b1a3971a88 100644
--- a/gdk-pixbuf/io-png.c
+++ b/gdk-pixbuf/io-png.c
@@ -1,5 +1,5 @@
/*
- * io-png.c: GdkPixBuf I/O for PNG files.
+ * io-png.c: GdkPixbuf I/O for PNG files.
* Copyright (C) 1999 Mark Crichton
* Author: Mark Crichton <crichton@gimp.org>
*
@@ -26,214 +26,216 @@
#include <png.h>
/* Shared library entry point */
-GdkPixBuf *image_load(FILE * f)
+GdkPixbuf *
+image_load (FILE *f)
{
- png_structp png_ptr;
- png_infop info_ptr, end_info;
- gint i, depth, ctype, inttype, passes, bpp; /* bpp = BYTES/pixel */
- png_uint_32 w, h, x, y;
- png_bytepp rows;
- art_u8 *pixels, *temp, *rowdata;
- GdkPixBuf *pixbuf;
- ArtPixBuf *art_pixbuf;
-
- g_return_val_if_fail (f != NULL, NULL);
-
- png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING,
- NULL, NULL, NULL);
- if (!png_ptr)
- return NULL;
-
- info_ptr = png_create_info_struct (png_ptr);
- if (!info_ptr) {
- png_destroy_read_struct (&png_ptr, NULL, NULL);
- return NULL;
- }
-
- end_info = png_create_info_struct (png_ptr);
- if (!end_info) {
- png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
- return NULL;
- }
-
- if (setjmp (png_ptr->jmpbuf)) {
- png_destroy_read_struct (&png_ptr, &info_ptr, &end_info);
- return NULL;
- }
-
- png_init_io (png_ptr, f);
- png_read_info (png_ptr, info_ptr);
- png_get_IHDR (png_ptr, info_ptr, &w, &h, &depth, &ctype, &inttype,
- NULL, NULL);
-
- /* Ok, we want to work with 24 bit images.
- * However, PNG can vary depth per channel.
- * So, we use the png_set_expand function to expand
- * everything into a format libart expects.
- * We also use png_set_strip_16 to reduce down to 8 bit/chan.
- */
- if (ctype == PNG_COLOR_TYPE_PALETTE && depth <= 8)
- png_set_expand (png_ptr);
-
- if (ctype == PNG_COLOR_TYPE_GRAY && depth < 8)
- png_set_expand (png_ptr);
-
- if (png_get_valid (png_ptr, info_ptr, PNG_INFO_tRNS)) {
- png_set_expand (png_ptr);
- g_warning ("FIXME: We are going to crash");
- }
-
- if (depth == 16)
- png_set_strip_16 (png_ptr);
-
- /* We also have png "packing" bits into bytes if < 8 */
- if (depth < 8)
- png_set_packing (png_ptr);
-
- /* Lastly, if the PNG is greyscale, convert to RGB */
- if (ctype == PNG_COLOR_TYPE_GRAY || ctype == PNG_COLOR_TYPE_GRAY_ALPHA)
- png_set_gray_to_rgb (png_ptr);
-
- /* ...and if we're interlaced... */
- passes = png_set_interlace_handling (png_ptr);
-
- /* Update our info structs */
- png_read_update_info (png_ptr, info_ptr);
-
- /* Allocate some memory and set up row array */
- /* This "inhales vigorously"... */
- if (ctype & PNG_COLOR_MASK_ALPHA)
- bpp = 4;
- else
- bpp = 3;
-
- pixels = art_alloc (w * h * bpp);
- rows = g_malloc (h * sizeof(png_bytep));
-
- if (!pixels || !rows) {
- png_destroy_read_struct (&png_ptr, &info_ptr, &end_info);
- return NULL;
- }
- /* Icky code, but it has to be done... */
- for (i = 0; i < h; i++) {
- if ((rows[i] = g_malloc (w * sizeof (art_u8) * bpp)) == NULL) {
- int n;
- for (n = 0; n < i; n++)
- g_free (rows[i]);
- g_free (rows);
- art_free (pixels);
- png_destroy_read_struct (&png_ptr, &info_ptr, &end_info);
- return NULL;
+ png_structp png_ptr;
+ png_infop info_ptr, end_info;
+ gint i, depth, ctype, inttype, passes, bpp; /* bpp = BYTES/pixel */
+ png_uint_32 w, h, x, y;
+ png_bytepp rows;
+ art_u8 *pixels, *temp, *rowdata;
+ GdkPixbuf *pixbuf;
+ ArtPixBuf *art_pixbuf;
+
+ g_return_val_if_fail (f != NULL, NULL);
+
+ png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING,
+ NULL, NULL, NULL);
+ if (!png_ptr)
+ return NULL;
+
+ info_ptr = png_create_info_struct (png_ptr);
+ if (!info_ptr) {
+ png_destroy_read_struct (&png_ptr, NULL, NULL);
+ return NULL;
+ }
+
+ end_info = png_create_info_struct (png_ptr);
+ if (!end_info) {
+ png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
+ return NULL;
+ }
+
+ if (setjmp (png_ptr->jmpbuf)) {
+ png_destroy_read_struct (&png_ptr, &info_ptr, &end_info);
+ return NULL;
+ }
+
+ png_init_io (png_ptr, f);
+ png_read_info (png_ptr, info_ptr);
+ png_get_IHDR (png_ptr, info_ptr, &w, &h, &depth, &ctype, &inttype,
+ NULL, NULL);
+
+ /* Ok, we want to work with 24 bit images.
+ * However, PNG can vary depth per channel.
+ * So, we use the png_set_expand function to expand
+ * everything into a format libart expects.
+ * We also use png_set_strip_16 to reduce down to 8 bit/chan.
+ */
+ if (ctype == PNG_COLOR_TYPE_PALETTE && depth <= 8)
+ png_set_expand (png_ptr);
+
+ if (ctype == PNG_COLOR_TYPE_GRAY && depth < 8)
+ png_set_expand (png_ptr);
+
+ if (png_get_valid (png_ptr, info_ptr, PNG_INFO_tRNS)) {
+ png_set_expand (png_ptr);
+ g_warning ("FIXME: We are going to crash");
}
- }
- /* And we FINALLY get here... */
- png_read_image (png_ptr, rows);
- png_destroy_read_struct (&png_ptr, &info_ptr, &end_info);
+ if (depth == 16)
+ png_set_strip_16 (png_ptr);
- /* Now stuff the bytes into pixels & free rows[y] */
+ /* We also have png "packing" bits into bytes if < 8 */
+ if (depth < 8)
+ png_set_packing (png_ptr);
- temp = pixels;
+ /* Lastly, if the PNG is greyscale, convert to RGB */
+ if (ctype == PNG_COLOR_TYPE_GRAY || ctype == PNG_COLOR_TYPE_GRAY_ALPHA)
+ png_set_gray_to_rgb (png_ptr);
- for (y = 0; y < h; y++) {
- (png_bytep) rowdata = rows[y];
- for (x = 0; x < w; x++) {
- temp[0] = rowdata[(x * bpp)];
- temp[1] = rowdata[(x * bpp) + 1];
- temp[2] = rowdata[(x * bpp) + 2];
- if (bpp == 4)
- temp[3] = rowdata[(x * bpp) + 3];
- temp += bpp;
+ /* ...and if we're interlaced... */
+ passes = png_set_interlace_handling (png_ptr);
+
+ /* Update our info structs */
+ png_read_update_info (png_ptr, info_ptr);
+
+ /* Allocate some memory and set up row array */
+ /* This "inhales vigorously"... */
+ if (ctype & PNG_COLOR_MASK_ALPHA)
+ bpp = 4;
+ else
+ bpp = 3;
+
+ pixels = art_alloc (w * h * bpp);
+ rows = g_malloc (h * sizeof(png_bytep));
+
+ if (!pixels || !rows) {
+ png_destroy_read_struct (&png_ptr, &info_ptr, &end_info);
+ return NULL;
+ }
+ /* Icky code, but it has to be done... */
+ for (i = 0; i < h; i++) {
+ if ((rows[i] = g_malloc (w * sizeof (art_u8) * bpp)) == NULL) {
+ int n;
+ for (n = 0; n < i; n++)
+ g_free (rows[i]);
+ g_free (rows);
+ art_free (pixels);
+ png_destroy_read_struct (&png_ptr, &info_ptr, &end_info);
+ return NULL;
+ }
}
- g_free (rows[y]);
- }
- g_free (rows);
- if (ctype & PNG_COLOR_MASK_ALPHA)
- art_pixbuf = art_pixbuf_new_rgba (pixels, w, h, (w * 4));
- else
- art_pixbuf = art_pixbuf_new_rgb (pixels, w, h, (w * 3));
+ /* And we FINALLY get here... */
+ png_read_image (png_ptr, rows);
+ png_destroy_read_struct (&png_ptr, &info_ptr, &end_info);
- pixbuf = gdk_pixbuf_new (art_pixbuf, NULL);
+ /* Now stuff the bytes into pixels & free rows[y] */
+
+ temp = pixels;
+
+ for (y = 0; y < h; y++) {
+ (png_bytep) rowdata = rows[y];
+ for (x = 0; x < w; x++) {
+ temp[0] = rowdata[(x * bpp)];
+ temp[1] = rowdata[(x * bpp) + 1];
+ temp[2] = rowdata[(x * bpp) + 2];
+ if (bpp == 4)
+ temp[3] = rowdata[(x * bpp) + 3];
+ temp += bpp;
+ }
+ g_free (rows[y]);
+ }
+ g_free (rows);
- if (!pixbuf)
- art_free (pixels);
+ if (ctype & PNG_COLOR_MASK_ALPHA)
+ art_pixbuf = art_pixbuf_new_rgba (pixels, w, h, (w * 4));
+ else
+ art_pixbuf = art_pixbuf_new_rgb (pixels, w, h, (w * 3));
- return pixbuf;
+ pixbuf = gdk_pixbuf_new (art_pixbuf, NULL);
+
+ if (!pixbuf)
+ art_free (pixels);
+
+ return pixbuf;
}
-int image_save(GdkPixBuf *pixbuf, FILE *file)
+int
+image_save (GdkPixbuf *pixbuf, FILE *file)
{
- png_structp png_ptr;
- png_infop info_ptr;
- art_u8 *data;
- gint y, h, w;
- png_bytepp row_ptr;
- png_color_8 sig_bit;
- gint type;
-
- g_return_val_if_fail(file != NULL, FALSE);
- g_return_val_if_fail(pixbuf != NULL, FALSE);
-
- h = pixbuf->art_pixbuf->height;
- w = pixbuf->art_pixbuf->width;
-
- png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING,
- NULL, NULL, NULL);
- if (png_ptr == NULL) {
- fclose(file);
- return FALSE;
- }
-
- info_ptr = png_create_info_struct(png_ptr);
- if (info_ptr == NULL) {
- fclose(file);
- png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
- return FALSE;
- }
-
- if (setjmp(png_ptr->jmpbuf)) {
- fclose(file);
- png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
- return FALSE;
- }
-
- png_init_io(png_ptr, file);
- if (pixbuf->art_pixbuf->has_alpha) {
- sig_bit.alpha = 8;
- type = PNG_COLOR_TYPE_RGB_ALPHA;
- } else {
- sig_bit.alpha = 0;
- type = PNG_COLOR_TYPE_RGB;
- }
-
- sig_bit.red = sig_bit.green = sig_bit.blue = 8;
- png_set_IHDR(png_ptr, info_ptr, w, h, 8, type, PNG_INTERLACE_NONE,
- PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE);
- png_set_sBIT(png_ptr, info_ptr, &sig_bit);
- png_write_info(png_ptr, info_ptr);
- png_set_shift(png_ptr, &sig_bit);
- png_set_packing(png_ptr);
-
- data = pixbuf->art_pixbuf->pixels;
- row_ptr = g_new(png_byte *, h);
-
- for (y = 0; y < h; y++)
- row_ptr[y] = data + y * pixbuf->art_pixbuf->rowstride;
+ png_structp png_ptr;
+ png_infop info_ptr;
+ art_u8 *data;
+ gint y, h, w;
+ png_bytepp row_ptr;
+ png_color_8 sig_bit;
+ gint type;
+
+ g_return_val_if_fail(file != NULL, FALSE);
+ g_return_val_if_fail(pixbuf != NULL, FALSE);
+
+ h = pixbuf->art_pixbuf->height;
+ w = pixbuf->art_pixbuf->width;
+
+ png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING,
+ NULL, NULL, NULL);
+ if (png_ptr == NULL) {
+ fclose(file);
+ return FALSE;
+ }
+
+ info_ptr = png_create_info_struct(png_ptr);
+ if (info_ptr == NULL) {
+ fclose(file);
+ png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
+ return FALSE;
+ }
+
+ if (setjmp(png_ptr->jmpbuf)) {
+ fclose(file);
+ png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
+ return FALSE;
+ }
+
+ png_init_io(png_ptr, file);
+ if (pixbuf->art_pixbuf->has_alpha) {
+ sig_bit.alpha = 8;
+ type = PNG_COLOR_TYPE_RGB_ALPHA;
+ } else {
+ sig_bit.alpha = 0;
+ type = PNG_COLOR_TYPE_RGB;
+ }
+
+ sig_bit.red = sig_bit.green = sig_bit.blue = 8;
+ png_set_IHDR(png_ptr, info_ptr, w, h, 8, type, PNG_INTERLACE_NONE,
+ PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE);
+ png_set_sBIT(png_ptr, info_ptr, &sig_bit);
+ png_write_info(png_ptr, info_ptr);
+ png_set_shift(png_ptr, &sig_bit);
+ png_set_packing(png_ptr);
+
+ data = pixbuf->art_pixbuf->pixels;
+ row_ptr = g_new(png_byte *, h);
+
+ for (y = 0; y < h; y++)
+ row_ptr[y] = data + y * pixbuf->art_pixbuf->rowstride;
#if 0
- {
- if (pixbuf->art_pixbuf->has_alpha)
- row_ptr[y] = data + (w * y * 4);
- else
- row_ptr[y] = data + (w * y * 3);
- }
+ {
+ if (pixbuf->art_pixbuf->has_alpha)
+ row_ptr[y] = data + (w * y * 4);
+ else
+ row_ptr[y] = data + (w * y * 3);
+ }
#endif
- png_write_image(png_ptr, row_ptr);
- g_free (row_ptr);
+ png_write_image(png_ptr, row_ptr);
+ g_free (row_ptr);
- png_write_end(png_ptr, info_ptr);
- png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
+ png_write_end(png_ptr, info_ptr);
+ png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
- return TRUE;
+ return TRUE;
}
diff --git a/gdk-pixbuf/io-tiff.c b/gdk-pixbuf/io-tiff.c
index 1ade9ce296..6fa935d7db 100644
--- a/gdk-pixbuf/io-tiff.c
+++ b/gdk-pixbuf/io-tiff.c
@@ -1,5 +1,5 @@
/*
- * io-tiff.c: GdkPixBuf I/O for TIFF files.
+ * io-tiff.c: GdkPixbuf I/O for TIFF files.
* Copyright (C) 1999 Mark Crichton
* Author: Mark Crichton <crichton@gimp.org>
*
@@ -30,68 +30,69 @@
#include "gdk-pixbuf.h"
/*#include "gdk-pixbuf-io.h" */
-GdkPixBuf *image_load(FILE * f)
+GdkPixbuf *
+image_load (FILE *f)
{
- GdkPixBuf *pixbuf;
- TIFF *tiff;
- art_u8 *pixels, *tmppix;
- gint w, h, x, y, num_pixs, fd;
- uint32 *rast, *tmp_rast;
+ GdkPixbuf *pixbuf;
+ TIFF *tiff;
+ art_u8 *pixels, *tmppix;
+ gint w, h, x, y, num_pixs, fd;
+ uint32 *rast, *tmp_rast;
- g_return_val_if_fail(f != NULL, NULL);
+ g_return_val_if_fail(f != NULL, NULL);
- fd = fileno(f);
- tiff = TIFFFdOpen(fd, "libpixbuf-tiff", "r");
+ fd = fileno(f);
+ tiff = TIFFFdOpen(fd, "libpixbuf-tiff", "r");
- if (!tiff)
- return NULL;
+ if (!tiff)
+ return NULL;
- TIFFGetField(tiff, TIFFTAG_IMAGEWIDTH, &w);
- TIFFGetField(tiff, TIFFTAG_IMAGELENGTH, &h);
- num_pixs = w * h;
+ TIFFGetField(tiff, TIFFTAG_IMAGEWIDTH, &w);
+ TIFFGetField(tiff, TIFFTAG_IMAGELENGTH, &h);
+ num_pixs = w * h;
- /* Yes, it needs to be _TIFFMalloc... */
- rast = (uint32 *) _TIFFmalloc(num_pixs * sizeof(uint32));
+ /* Yes, it needs to be _TIFFMalloc... */
+ rast = (uint32 *) _TIFFmalloc(num_pixs * sizeof(uint32));
- if (!rast) {
- TIFFClose(tiff);
- return NULL;
- }
-
- if (TIFFReadRGBAImage(tiff, w, h, rast, 0)) {
- pixels = art_alloc(num_pixs * 4);
- if (!pixels) {
- _TIFFfree(rast);
- TIFFClose(tiff);
- return NULL;
+ if (!rast) {
+ TIFFClose(tiff);
+ return NULL;
}
- tmppix = pixels;
- for (y = 0; y < h; y++) {
- /* Unexplainable...are tiffs backwards? */
- /* Also looking at the GIMP plugin, this
- * whole reading thing can be a bit more
- * robust.
- */
- tmp_rast = rast + ((h - y - 1) * w);
- for (x = 0; x < w; x++) {
- tmppix[0] = TIFFGetR(*tmp_rast);
- tmppix[1] = TIFFGetG(*tmp_rast);
- tmppix[2] = TIFFGetB(*tmp_rast);
- tmppix[3] = TIFFGetA(*tmp_rast);
- tmp_rast++;
- tmppix += 4;
- }
+ if (TIFFReadRGBAImage(tiff, w, h, rast, 0)) {
+ pixels = art_alloc(num_pixs * 4);
+ if (!pixels) {
+ _TIFFfree(rast);
+ TIFFClose(tiff);
+ return NULL;
+ }
+ tmppix = pixels;
+
+ for (y = 0; y < h; y++) {
+ /* Unexplainable...are tiffs backwards? */
+ /* Also looking at the GIMP plugin, this
+ * whole reading thing can be a bit more
+ * robust.
+ */
+ tmp_rast = rast + ((h - y - 1) * w);
+ for (x = 0; x < w; x++) {
+ tmppix[0] = TIFFGetR(*tmp_rast);
+ tmppix[1] = TIFFGetG(*tmp_rast);
+ tmppix[2] = TIFFGetB(*tmp_rast);
+ tmppix[3] = TIFFGetA(*tmp_rast);
+ tmp_rast++;
+ tmppix += 4;
+ }
+ }
}
- }
- _TIFFfree(rast);
- TIFFClose(tiff);
+ _TIFFfree(rast);
+ TIFFClose(tiff);
- pixbuf = gdk_pixbuf_new (art_pixbuf_new_rgba (pixels, w, h, (w * 4)),
- NULL);
+ pixbuf = gdk_pixbuf_new (art_pixbuf_new_rgba (pixels, w, h, (w * 4)),
+ NULL);
- if (!pixbuf)
- art_free (pixels);
+ if (!pixbuf)
+ art_free (pixels);
- return pixbuf;
+ return pixbuf;
}
diff --git a/gdk-pixbuf/io-xpm.c b/gdk-pixbuf/io-xpm.c
index 6cd89fc3c1..d21fe0434a 100644
--- a/gdk-pixbuf/io-xpm.c
+++ b/gdk-pixbuf/io-xpm.c
@@ -1,5 +1,5 @@
/*
- * io-xpm.c: GdkPixBuf I/O for XPM files.
+ * io-xpm.c: GdkPixbuf I/O for XPM files.
* Copyright (C) 1999 Mark Crichton
* Author: Mark Crichton <crichton@gimp.org>
*
@@ -38,399 +38,394 @@
*/
enum buf_op {
- op_header,
- op_cmap,
- op_body
+ op_header,
+ op_cmap,
+ op_body
};
typedef struct {
- gchar *color_string;
- GdkColor color;
- gint transparent;
+ gchar *color_string;
+ GdkColor color;
+ gint transparent;
} _XPMColor;
struct file_handle {
- FILE *infile;
- gchar *buffer;
- guint buffer_size;
+ FILE *infile;
+ gchar *buffer;
+ guint buffer_size;
} file_handle;
struct mem_handle {
- gchar **data;
- int offset;
+ gchar **data;
+ int offset;
} mem_handle;
static gint
- xpm_seek_string(FILE * infile,
- const gchar * str,
- gint skip_comments)
+xpm_seek_string(FILE *infile, const gchar *str, gint skip_comments)
{
- char instr[1024];
+ char instr[1024];
- while (!feof(infile)) {
- fscanf(infile, "%1023s", instr);
- if (skip_comments == TRUE && strcmp(instr, "/*") == 0) {
- fscanf(infile, "%1023s", instr);
- while (!feof(infile) && strcmp(instr, "*/") != 0)
+ while (!feof(infile)) {
fscanf(infile, "%1023s", instr);
- fscanf(infile, "%1023s", instr);
+ if (skip_comments == TRUE && strcmp(instr, "/*") == 0) {
+ fscanf(infile, "%1023s", instr);
+ while (!feof(infile) && strcmp(instr, "*/") != 0)
+ fscanf(infile, "%1023s", instr);
+ fscanf(infile, "%1023s", instr);
+ }
+ if (strcmp(instr, str) == 0)
+ return TRUE;
}
- if (strcmp(instr, str) == 0)
- return TRUE;
- }
- return FALSE;
+ return FALSE;
}
static gint
- xpm_seek_char(FILE * infile,
- gchar c)
+xpm_seek_char(FILE *infile, gchar c)
{
- gint b, oldb;
-
- while ((b = getc(infile)) != EOF) {
- if (c != b && b == '/') {
- b = getc(infile);
- if (b == EOF)
- return FALSE;
- else if (b == '*') { /* we have a comment */
- b = -1;
- do {
- oldb = b;
- b = getc(infile);
- if (b == EOF)
- return FALSE;
- }
- while (!(oldb == '*' && b == '/'));
- }
- } else if (c == b)
- return TRUE;
- }
- return FALSE;
+ gint b, oldb;
+
+ while ((b = getc(infile)) != EOF) {
+ if (c != b && b == '/') {
+ b = getc(infile);
+ if (b == EOF)
+ return FALSE;
+ else if (b == '*') { /* we have a comment */
+ b = -1;
+ do {
+ oldb = b;
+ b = getc(infile);
+ if (b == EOF)
+ return FALSE;
+ }
+ while (!(oldb == '*' && b == '/'));
+ }
+ } else if (c == b)
+ return TRUE;
+ }
+ return FALSE;
}
static gint
- xpm_read_string(FILE * infile,
- gchar ** buffer,
- guint * buffer_size)
+xpm_read_string(FILE *infile, gchar **buffer, guint *buffer_size)
{
- gint c;
- guint cnt = 0, bufsiz, ret = FALSE;
- gchar *buf;
-
- buf = *buffer;
- bufsiz = *buffer_size;
- if (buf == NULL) {
- bufsiz = 10 * sizeof(gchar);
- buf = g_new(gchar, bufsiz);
- }
- do
- c = getc(infile);
- while (c != EOF && c != '"');
-
- if (c != '"')
- goto out;
-
- while ((c = getc(infile)) != EOF) {
- if (cnt == bufsiz) {
- guint new_size = bufsiz * 2;
- if (new_size > bufsiz)
- bufsiz = new_size;
- else
- goto out;
-
- buf = (gchar *) g_realloc(buf, bufsiz);
- buf[bufsiz - 1] = '\0';
+ gint c;
+ guint cnt = 0, bufsiz, ret = FALSE;
+ gchar *buf;
+
+ buf = *buffer;
+ bufsiz = *buffer_size;
+ if (buf == NULL) {
+ bufsiz = 10 * sizeof(gchar);
+ buf = g_new(gchar, bufsiz);
}
+
+ do {
+ c = getc(infile);
+ } while (c != EOF && c != '"');
+
if (c != '"')
- buf[cnt++] = c;
- else {
- buf[cnt] = 0;
- ret = TRUE;
- break;
+ goto out;
+
+ while ((c = getc(infile)) != EOF) {
+ if (cnt == bufsiz) {
+ guint new_size = bufsiz * 2;
+ if (new_size > bufsiz)
+ bufsiz = new_size;
+ else
+ goto out;
+
+ buf = (gchar *) g_realloc(buf, bufsiz);
+ buf[bufsiz - 1] = '\0';
+ }
+ if (c != '"')
+ buf[cnt++] = c;
+ else {
+ buf[cnt] = 0;
+ ret = TRUE;
+ break;
+ }
}
- }
- out:
- buf[bufsiz - 1] = '\0'; /* ensure null termination for errors */
- *buffer = buf;
- *buffer_size = bufsiz;
- return ret;
+ out:
+ buf[bufsiz - 1] = '\0'; /* ensure null termination for errors */
+ *buffer = buf;
+ *buffer_size = bufsiz;
+ return ret;
}
static gchar *
- xpm_skip_whitespaces(gchar * buffer)
+xpm_skip_whitespaces(gchar *buffer)
{
- gint32 index = 0;
+ gint32 index = 0;
- while (buffer[index] != 0 && (buffer[index] == 0x20 || buffer[index] == 0x09))
- index++;
+ while (buffer[index] != 0 && (buffer[index] == 0x20 || buffer[index] == 0x09))
+ index++;
- return &buffer[index];
+ return &buffer[index];
}
static gchar *
- xpm_skip_string(gchar * buffer)
+xpm_skip_string(gchar *buffer)
{
- gint32 index = 0;
+ gint32 index = 0;
- while (buffer[index] != 0 && buffer[index] != 0x20 && buffer[index] != 0x09)
- index++;
+ while (buffer[index] != 0 && buffer[index] != 0x20 && buffer[index] != 0x09)
+ index++;
- return &buffer[index];
+ return &buffer[index];
}
/* Xlib crashed once at a color name lengths around 125 */
#define MAX_COLOR_LEN 120
static gchar *
- xpm_extract_color(gchar * buffer)
+xpm_extract_color(gchar *buffer)
{
- gint counter, numnames;
- gchar *ptr = NULL, ch, temp[128];
- gchar color[MAX_COLOR_LEN], *retcol;
- gint space;
- counter = 0;
- while (ptr == NULL) {
- if (buffer[counter] == 'c') {
- ch = buffer[counter + 1];
- if (ch == 0x20 || ch == 0x09)
- ptr = &buffer[counter + 1];
- } else if (buffer[counter] == 0)
- return NULL;
-
- counter++;
- }
- ptr = xpm_skip_whitespaces(ptr);
-
- if (ptr[0] == 0)
- return NULL;
- else if (ptr[0] == '#') {
- counter = 1;
- while (ptr[counter] != 0 &&
- ((ptr[counter] >= '0' && ptr[counter] <= '9') ||
- (ptr[counter] >= 'a' && ptr[counter] <= 'f') ||
- (ptr[counter] >= 'A' && ptr[counter] <= 'F')))
- counter++;
- retcol = g_new(gchar, counter + 1);
- strncpy(retcol, ptr, counter);
-
- retcol[counter] = 0;
-
- return retcol;
- }
- color[0] = 0;
- numnames = 0;
-
- space = MAX_COLOR_LEN - 1;
- while (space > 0) {
- sscanf(ptr, "%127s", temp);
-
- if (((gint) ptr[0] == 0) ||
- (strcmp("s", temp) == 0) || (strcmp("m", temp) == 0) ||
- (strcmp("g", temp) == 0) || (strcmp("g4", temp) == 0)) {
- break;
- } else {
- if (numnames > 0) {
- space -= 1;
- strcat(color, " ");
- }
- strncat(color, temp, space);
- space -= MIN(space, strlen(temp));
- ptr = xpm_skip_string(ptr);
- ptr = xpm_skip_whitespaces(ptr);
- numnames++;
+ gint counter, numnames;
+ gchar *ptr = NULL, ch, temp[128];
+ gchar color[MAX_COLOR_LEN], *retcol;
+ gint space;
+ counter = 0;
+ while (ptr == NULL) {
+ if (buffer[counter] == 'c') {
+ ch = buffer[counter + 1];
+ if (ch == 0x20 || ch == 0x09)
+ ptr = &buffer[counter + 1];
+ } else if (buffer[counter] == 0)
+ return NULL;
+
+ counter++;
+ }
+ ptr = xpm_skip_whitespaces(ptr);
+
+ if (ptr[0] == 0)
+ return NULL;
+ else if (ptr[0] == '#') {
+ counter = 1;
+ while (ptr[counter] != 0 &&
+ ((ptr[counter] >= '0' && ptr[counter] <= '9') ||
+ (ptr[counter] >= 'a' && ptr[counter] <= 'f') ||
+ (ptr[counter] >= 'A' && ptr[counter] <= 'F')))
+ counter++;
+ retcol = g_new(gchar, counter + 1);
+ strncpy(retcol, ptr, counter);
+
+ retcol[counter] = 0;
+
+ return retcol;
+ }
+ color[0] = 0;
+ numnames = 0;
+
+ space = MAX_COLOR_LEN - 1;
+ while (space > 0) {
+ sscanf(ptr, "%127s", temp);
+
+ if (((gint) ptr[0] == 0) ||
+ (strcmp("s", temp) == 0) || (strcmp("m", temp) == 0) ||
+ (strcmp("g", temp) == 0) || (strcmp("g4", temp) == 0)) {
+ break;
+ } else {
+ if (numnames > 0) {
+ space -= 1;
+ strcat(color, " ");
+ }
+ strncat(color, temp, space);
+ space -= MIN(space, strlen(temp));
+ ptr = xpm_skip_string(ptr);
+ ptr = xpm_skip_whitespaces(ptr);
+ numnames++;
+ }
}
- }
- retcol = g_strdup(color);
- return retcol;
+ retcol = g_strdup(color);
+ return retcol;
}
-
/* (almost) direct copy from gdkpixmap.c... loads an XPM from a file */
static gchar *
- file_buffer(enum buf_op op, gpointer handle)
+file_buffer(enum buf_op op, gpointer handle)
{
- struct file_handle *h = handle;
-
- switch (op) {
- case op_header:
- if (xpm_seek_string(h->infile, "XPM", FALSE) != TRUE)
- break;
-
- if (xpm_seek_char(h->infile, '{') != TRUE)
- break;
- /* Fall through to the next xpm_seek_char. */
-
- case op_cmap:
- xpm_seek_char(h->infile, '"');
- fseek(h->infile, -1, SEEK_CUR);
- /* Fall through to the xpm_read_string. */
-
- case op_body:
- xpm_read_string(h->infile, &h->buffer, &h->buffer_size);
- return h->buffer;
- }
- return 0;
+ struct file_handle *h = handle;
+
+ switch (op) {
+ case op_header:
+ if (xpm_seek_string(h->infile, "XPM", FALSE) != TRUE)
+ break;
+
+ if (xpm_seek_char(h->infile, '{') != TRUE)
+ break;
+ /* Fall through to the next xpm_seek_char. */
+
+ case op_cmap:
+ xpm_seek_char(h->infile, '"');
+ fseek(h->infile, -1, SEEK_CUR);
+ /* Fall through to the xpm_read_string. */
+
+ case op_body:
+ xpm_read_string(h->infile, &h->buffer, &h->buffer_size);
+ return h->buffer;
+ }
+ return 0;
}
/* This reads from memory */
static gchar *
- mem_buffer(enum buf_op op, gpointer handle)
+mem_buffer(enum buf_op op, gpointer handle)
{
- struct mem_handle *h = handle;
- switch (op) {
- case op_header:
- case op_cmap:
- case op_body:
- if (h->data[h->offset])
- return h->data[h->offset++];
- }
- return NULL;
+ struct mem_handle *h = handle;
+ switch (op) {
+ case op_header:
+ case op_cmap:
+ case op_body:
+ if (h->data[h->offset])
+ return h->data[h->offset++];
+ }
+ 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)
+static GdkPixbuf *
+_pixbuf_create_from_xpm(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;
- gchar pixel_str[32];
- GHashTable *color_hash;
- _XPMColor *colors, *color, *fallbackcolor;
- art_u8 *pixels, *pixtmp;
- GdkPixBuf *pixbuf;
- ArtPixBuf *art_pixbuf;
-
- buffer = (*get_buf) (op_header, handle);
- if (!buffer) {
- g_warning("No XPM header found");
- return NULL;
- }
- sscanf(buffer, "%d %d %d %d", &w, &h, &n_col, &cpp);
- if (cpp >= 32) {
- g_warning("XPM has more than 31 chars per pixel.");
- return NULL;
- }
- /* The hash is used for fast lookups of color from chars */
- color_hash = g_hash_table_new(g_str_hash, g_str_equal);
-
- name_buf = g_new(gchar, n_col * (cpp + 1));
- colors = g_new(_XPMColor, n_col);
-
- for (cnt = 0; cnt < n_col; cnt++) {
- gchar *color_name;
-
- buffer = (*get_buf) (op_cmap, handle);
+ gint w, h, n_col, cpp;
+ gint cnt, xcnt, ycnt, wbytes, n, ns;
+ gint is_trans = FALSE;
+ gchar *buffer, *name_buf;
+ gchar pixel_str[32];
+ GHashTable *color_hash;
+ _XPMColor *colors, *color, *fallbackcolor;
+ art_u8 *pixels, *pixtmp;
+ GdkPixbuf *pixbuf;
+ ArtPixBuf *art_pixbuf;
+
+ buffer = (*get_buf) (op_header, handle);
if (!buffer) {
- g_warning("Can't load XPM colormap");
- g_hash_table_destroy(color_hash);
- g_free(name_buf);
- g_free(colors);
- return NULL;
+ g_warning("No XPM header found");
+ return NULL;
}
- color = &colors[cnt];
- color->color_string = &name_buf[cnt * (cpp + 1)];
- strncpy(color->color_string, buffer, cpp);
- color->color_string[cpp] = 0;
- buffer += strlen(color->color_string);
- color->transparent = FALSE;
-
- color_name = xpm_extract_color(buffer);
-
- if ((color_name == NULL) || (g_strcasecmp(color_name, "None") == 0)
- || (gdk_color_parse(color_name, &color->color) == FALSE)) {
- color->transparent = TRUE;
- is_trans = TRUE;
+ sscanf(buffer, "%d %d %d %d", &w, &h, &n_col, &cpp);
+ if (cpp >= 32) {
+ g_warning("XPM has more than 31 chars per pixel.");
+ return NULL;
}
+ /* The hash is used for fast lookups of color from chars */
+ color_hash = g_hash_table_new(g_str_hash, g_str_equal);
+
+ name_buf = g_new(gchar, n_col * (cpp + 1));
+ colors = g_new(_XPMColor, n_col);
+
+ for (cnt = 0; cnt < n_col; cnt++) {
+ gchar *color_name;
+
+ buffer = (*get_buf) (op_cmap, handle);
+ if (!buffer) {
+ g_warning("Can't load XPM colormap");
+ g_hash_table_destroy(color_hash);
+ g_free(name_buf);
+ g_free(colors);
+ return NULL;
+ }
+ color = &colors[cnt];
+ color->color_string = &name_buf[cnt * (cpp + 1)];
+ strncpy(color->color_string, buffer, cpp);
+ color->color_string[cpp] = 0;
+ buffer += strlen(color->color_string);
+ color->transparent = FALSE;
+
+ color_name = xpm_extract_color(buffer);
+
+ if ((color_name == NULL) || (g_strcasecmp(color_name, "None") == 0)
+ || (gdk_color_parse(color_name, &color->color) == FALSE)) {
+ color->transparent = TRUE;
+ is_trans = TRUE;
+ }
- g_free(color_name);
- g_hash_table_insert(color_hash, color->color_string, color);
-
- if (cnt == 0)
- fallbackcolor = color;
- }
+ g_free(color_name);
+ g_hash_table_insert(color_hash, color->color_string, color);
- if (is_trans)
- pixels = art_alloc(w * h * 4);
- else
- pixels = art_alloc(w * h * 3);
+ if (cnt == 0)
+ fallbackcolor = color;
+ }
- if (!pixels) {
- g_warning("XPM: Cannot alloc ArtBuf");
+ if (is_trans)
+ pixels = art_alloc(w * h * 4);
+ else
+ pixels = art_alloc(w * h * 3);
+
+ if (!pixels) {
+ g_warning("XPM: Cannot alloc ArtBuf");
+ g_hash_table_destroy(color_hash);
+ g_free(colors);
+ g_free(name_buf);
+ return NULL;
+ }
+ wbytes = w * cpp;
+ pixtmp = pixels;
+
+ for (ycnt = 0; ycnt < h; ycnt++) {
+ buffer = (*get_buf) (op_body, handle);
+ if ((!buffer) || (strlen(buffer) < wbytes))
+ continue;
+ for (n = 0, cnt = 0, xcnt = 0; n < wbytes; n += cpp, xcnt++) {
+ strncpy(pixel_str, &buffer[n], cpp);
+ pixel_str[cpp] = 0;
+ ns = 0;
+
+ color = g_hash_table_lookup(color_hash, pixel_str);
+
+ /* Bad XPM...punt */
+ if (!color)
+ color = fallbackcolor;
+
+ *pixtmp++ = (color->color.red)>>8;
+ *pixtmp++ = (color->color.green)>>8;
+ *pixtmp++ = (color->color.blue)>>8;
+
+ if ((is_trans) && (color->transparent)) {
+ *pixtmp++ = 0;
+ } else if (is_trans) {
+ *pixtmp++ = 0xFF;
+ }
+ }
+ }
g_hash_table_destroy(color_hash);
g_free(colors);
g_free(name_buf);
- return NULL;
- }
- wbytes = w * cpp;
- pixtmp = pixels;
-
- for (ycnt = 0; ycnt < h; ycnt++) {
- buffer = (*get_buf) (op_body, handle);
- if ((!buffer) || (strlen(buffer) < wbytes))
- continue;
- for (n = 0, cnt = 0, xcnt = 0; n < wbytes; n += cpp, xcnt++) {
- strncpy(pixel_str, &buffer[n], cpp);
- pixel_str[cpp] = 0;
- ns = 0;
-
- color = g_hash_table_lookup(color_hash, pixel_str);
-
- /* Bad XPM...punt */
- if (!color)
- color = fallbackcolor;
-
- *pixtmp++ = (color->color.red)>>8;
- *pixtmp++ = (color->color.green)>>8;
- *pixtmp++ = (color->color.blue)>>8;
-
- if ((is_trans) && (color->transparent)) {
- *pixtmp++ = 0;
- } else if (is_trans) {
- *pixtmp++ = 0xFF;
- }
- }
- }
- g_hash_table_destroy(color_hash);
- g_free(colors);
- g_free(name_buf);
- /* Ok, now stuff the GdkPixBuf with goodies */
+ /* Ok, now stuff the GdkPixbuf with goodies */
- if (is_trans)
- art_pixbuf = art_pixbuf_new_rgba(pixels, w, h, (w * 4));
- else
- art_pixbuf = art_pixbuf_new_rgb(pixels, w, h, (w * 3));
+ if (is_trans)
+ art_pixbuf = art_pixbuf_new_rgba(pixels, w, h, (w * 4));
+ else
+ art_pixbuf = art_pixbuf_new_rgb(pixels, w, h, (w * 3));
- pixbuf = gdk_pixbuf_new (art_pixbuf, NULL);
+ pixbuf = gdk_pixbuf_new (art_pixbuf, NULL);
- if (!pixbuf)
- art_free(pixels);
+ if (!pixbuf)
+ art_free(pixels);
- return pixbuf;
+ return pixbuf;
}
/* Shared library entry point for file loading */
-GdkPixBuf *image_load(FILE * f)
+GdkPixbuf *
+image_load (FILE *f)
{
- GdkPixBuf *pixbuf;
- struct file_handle h;
+ GdkPixbuf *pixbuf;
+ struct file_handle h;
- g_return_val_if_fail(f != NULL, NULL);
+ g_return_val_if_fail(f != NULL, NULL);
- memset(&h, 0, sizeof(h));
- h.infile = f;
- pixbuf = _pixbuf_create_from_xpm(file_buffer, &h);
- g_free(h.buffer);
+ memset(&h, 0, sizeof(h));
+ h.infile = f;
+ pixbuf = _pixbuf_create_from_xpm(file_buffer, &h);
+ g_free(h.buffer);
- return pixbuf;
+ return pixbuf;
}
image_save()
diff --git a/gdk-pixbuf/pixbuf.h b/gdk-pixbuf/pixbuf.h
deleted file mode 100644
index 181aa06642..0000000000
--- a/gdk-pixbuf/pixbuf.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef _GDK_PIXBUF_H_
-#define _GDK_PIXBUF_H_
-
-#include <libart_lgpl/art_pixbuf.h>
-
-typedef struct {
- int ref_count;
- ArtPixBuf *pixbuf;
- void (*unref_func)(void *gdkpixbuf);
-} GdkPixBuf;
-
-GdkPixBuf *gdk_pixbuf_load_image (const char *file);
-void gdk_pixbuf_save_image (const char *format_id, const char *file, ...);
-void gdk_pixbuf_ref (GdkPixBuf *pixbuf);
-void gdk_pixbuf_unref (GdkPixBuf *pixbuf);
-GdkPixBuf gdk_pixbuf_duplicate (GdkPixBuf *pixbuf);
-
-#endif /* _GDK_PIXBUF_H_ */
diff --git a/gdk/gdkpixbuf-drawable.c b/gdk/gdkpixbuf-drawable.c
index aa7b9b1ed2..73e02365bd 100644
--- a/gdk/gdkpixbuf-drawable.c
+++ b/gdk/gdkpixbuf-drawable.c
@@ -1,5 +1,5 @@
/*
- * Creates an GdkPixBuf from a Drawable
+ * Creates an GdkPixbuf from a Drawable
*
* Author:
* Cody Russell <bratsche@dfw.net>
@@ -14,10 +14,8 @@
/* private function */
-static GdkPixBuf *
-gdk_pixbuf_from_drawable_core (GdkWindow *window,
- gint x, gint y,
- gint width, gint height,
+static GdkPixbuf *
+gdk_pixbuf_from_drawable_core (GdkWindow *window, gint x, gint y, gint width, gint height,
gint with_alpha)
{
GdkImage *image;
@@ -41,26 +39,20 @@ gdk_pixbuf_from_drawable_core (GdkWindow *window,
&window_width, &window_height, NULL);
gdk_window_get_origin(window, &window_x, &window_y);
- if(window_x < 0)
- {
+ if(window_x < 0) {
x = ABS(window_x);
width = window_width - x;
- }
- else
- {
+ } else {
width = CLAMP(window_x + window_width, window_x,
- screen_width) - window_x;
+ screen_width) - window_x;
}
- if(window_y < 0)
- {
+ if(window_y < 0) {
y = ABS(window_y);
height = window_height - y;
- }
- else
- {
+ } else {
height = CLAMP(window_y + window_height, window_y,
- screen_height) - window_y;
+ screen_height) - window_y;
}
image = gdk_image_get (window, x, y, width, height);
@@ -72,8 +64,7 @@ gdk_pixbuf_from_drawable_core (GdkWindow *window,
buff = art_alloc (rowstride * height);
pixels = buff;
- switch (image->depth)
- {
+ switch (image->depth) {
case 0:
case 1:
case 2:
@@ -83,10 +74,8 @@ gdk_pixbuf_from_drawable_core (GdkWindow *window,
case 6:
case 7:
case 8:
- for (yy = 0; yy < height; yy++)
- {
- for (xx = 0; xx < width; xx++)
- {
+ for (yy = 0; yy < height; yy++) {
+ for (xx = 0; xx < width; xx++) {
pixel = gdk_image_get_pixel (image, xx, yy);
pixels[0] = colormap->colors[pixel].red;
pixels[1] = colormap->colors[pixel].green;
@@ -94,17 +83,15 @@ gdk_pixbuf_from_drawable_core (GdkWindow *window,
if (with_alpha)
pixels[3] = 0;
pixels += fatness;
-
+
}
}
break;
case 16:
case 15:
- for (yy = 0; yy < height; yy++)
- {
- for (xx = 0; xx < width; xx++)
- {
+ for (yy = 0; yy < height; yy++) {
+ for (xx = 0; xx < width; xx++) {
pixel = gdk_image_get_pixel (image, xx, yy);
r = (pixel >> 8) & 0xf8;
g = (pixel >> 3) & 0xfc;
@@ -121,10 +108,8 @@ gdk_pixbuf_from_drawable_core (GdkWindow *window,
case 24:
case 32:
- for (yy = 0; yy < height; yy++)
- {
- for (xx = 0; xx < width; xx++)
- {
+ for (yy = 0; yy < height; yy++) {
+ for (xx = 0; xx < width; xx++) {
pixel = gdk_image_get_pixel (image, xx, yy);
r = (pixel >> 16) & 0xff;
g = (pixel >> 8) & 0xff;
@@ -151,18 +136,14 @@ gdk_pixbuf_from_drawable_core (GdkWindow *window,
/* Public functions */
-GdkPixBuf *
-gdk_pixbuf_rgb_from_drawable (GdkWindow *window,
- gint x, gint y,
- gint width, gint height)
+GdkPixbuf *
+gdk_pixbuf_rgb_from_drawable (GdkWindow *window, gint x, gint y, gint width, gint height)
{
return gdk_pixbuf_from_drawable_core (window, x, y, width, height, 0);
}
-
-GdkPixBuf *
-gdk_pixbuf_rgba_from_drawable (GdkWindow *window,
- gint x, gint y,
- gint width, gint height)
+
+GdkPixbuf *
+gdk_pixbuf_rgba_from_drawable (GdkWindow *window, gint x, gint y, gint width, gint height)
{
return gdk_pixbuf_from_drawable_core (window, x, y, width, height, 1);
}