/* Default QT Palette Generator by Mike Melanson (mike at multimedia.cx) based on code ripped out of the XAnim media application: http://xanim.polter.net/ This program generates a C header file with the default palette colors used in Quicktime multimedia files. To use this program: 1) Define whether you want the colors printed in RGBA or BGRA order. The program will print RGBA order unless you uncomment the line: //#define PRINT_BGRA 2) Compile the program: cc qtcolors.c -o qtcolors 3) Run the program and pipe the output to a .h file: qtcolors > qtpalette.h */ #include //#define PRINT_BGRA #define xaULONG unsigned long #define xaLONG long #define xaUBYTE unsigned char int qt_2map[] = { 0x93, 0x65, 0x5e, 0xff, 0xff, 0xff, 0xdf, 0xd0, 0xab, 0x00, 0x00, 0x00 }; /* MAX */ int qt_4map[] = { 0xff, 0xfb, 0xff, 0xef, 0xd9, 0xbb, 0xe8, 0xc9, 0xb1, 0x93, 0x65, 0x5e, 0xfc, 0xde, 0xe8, 0x9d, 0x88, 0x91, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x47, 0x48, 0x37, 0x7a, 0x5e, 0x55, 0xdf, 0xd0, 0xab, 0xff, 0xfb, 0xf9, 0xe8, 0xca, 0xc5, 0x8a, 0x7c, 0x77, 0x00, 0x00, 0x00 }; void QT_Create_Default_Cmap(cnum) xaULONG cnum; { xaLONG r,g,b,i; if (cnum == 4) { printf ("unsigned char qt_default_palette_4[4 * 4] = {\n"); for(i=0;i<4;i++) { int d = i * 3; #ifdef PRINT_BGRA printf (" 0x%02X, 0x%02X, 0x%02X, 0x00", qt_2map[d + 2], qt_2map[d + 1], qt_2map[d + 0]); #else printf (" 0x%02X, 0x%02X, 0x%02X, 0x00", qt_2map[d + 0], qt_2map[d + 1], qt_2map[d + 2]); #endif printf ("%c\n", (i < 3) ? ',' : ' '); } printf ("};\n\n"); } else if (cnum == 16) { printf ("unsigned char qt_default_palette_16[16 * 4] = {\n"); for(i=0;i<16;i++) { int d = i * 3; #ifdef PRINT_BGRA printf (" 0x%02X, 0x%02X, 0x%02X, 0x00", qt_4map[d + 2], qt_4map[d + 1], qt_4map[d + 0]); #else printf (" 0x%02X, 0x%02X, 0x%02X, 0x00", qt_4map[d + 0], qt_4map[d + 1], qt_4map[d + 2]); #endif printf ("%c\n", (i < 15) ? ',' : ' '); } printf ("};\n\n"); } else { static xaUBYTE pat[10] = {0xee,0xdd,0xbb,0xaa,0x88,0x77,0x55,0x44,0x22,0x11}; r = g = b = 0xff; printf ("unsigned char qt_default_palette_256[256 * 4] = {\n"); for(i=0;i<215;i++) { #ifdef PRINT_BGRA printf (" /* %3d, 0x%02X */ 0x%02X, 0x%02X, 0x%02X, 0x00,\n", i, i, b, g, r); #else printf (" /* %3d, 0x%02X */ 0x%02X, 0x%02X, 0x%02X, 0x00,\n", i, i, r, g, b); #endif b -= 0x33; if (b < 0) { b = 0xff; g -= 0x33; if (g < 0) { g = 0xff; r -= 0x33; } } } for(i=0;i<10;i++) { #ifdef PRINT_BGRA printf (" /* %3d, 0x%02X */ 0x%02X, 0x%02X, 0x%02X, 0x00,\n", 215 + i, 215 + i, 0, 0, pat[i]); #else printf (" /* %3d, 0x%02X */ 0x%02X, 0x%02X, 0x%02X, 0x00,\n", 215 + i, 215 + i, pat[i], 0, 0); #endif } for(i=0;i<10;i++) { printf (" /* %3d, 0x%02X */ 0x%02X, 0x%02X, 0x%02X, 0x00,\n", 225 + i, 225 + i, 0, pat[i], 0); } for(i=0;i<10;i++) { #ifdef PRINT_BGRA printf (" /* %3d, 0x%02X */ 0x%02X, 0x%02X, 0x%02X, 0x00,\n", 235 + i, 235 + i, pat[i], 0, 0); #else printf (" /* %3d, 0x%02X */ 0x%02X, 0x%02X, 0x%02X, 0x00,\n", 235 + i, 235 + i, 0, 0, pat[i]); #endif } for(i=0;i<10;i++) { printf (" /* %3d, 0x%02X */ 0x%02X, 0x%02X, 0x%02X, 0x00,\n", 245 + i, 245 + i, pat[i], pat[i], pat[i]); } printf (" /* 255, 0xFF */ 0x00, 0x00, 0x00, 0x00\n"); printf ("};\n\n"); } } int main() { printf ( "// Default Palettes for Quicktime Files\n" \ "// Automatically generated from a utility derived from XAnim:\n" \ "// http://xanim.polter.net/\n\n" \ "#ifndef QTPALETTE_H\n" \ "#define QTPALETTE_H\n\n"); QT_Create_Default_Cmap(4); QT_Create_Default_Cmap(16); QT_Create_Default_Cmap(256); printf ("#endif\n"); return 0; }