#!/bin/sh # # script to convert pcbm header file to an sgi .rgb file by creating a # C program which includes the header pcbm file, which is compiled, and # then spits out the .rgb file. create_cfile () { cat << EOF /* temp file for frompcbm $1 */ #include #include #define BLACK 0 #define RED 1 #define GREEN 2 #define YELLOW 3 #define BLUE 4 #define MAGENTA 5 #define CYAN 6 #define WHITE 7 #define BLACK2 8 #define RED2 9 #define GREEN2 10 #define YELLOW2 11 #define BLUE2 12 #define MAGENTA2 13 #define CYAN2 14 #define WHITE2 15 #define TP_IDX 16 #define VeryDarkGray 17 #define VeryLightGray 18 #define MediumGray 19 #define MACHCLR0 20 #define MACHCLR1 21 #define MACHCLR2 22 #define MACHCLR3 23 #define MACHCLR4 24 #include "$1.h" int rgb[26] = { 0x000000, 0xff0000, 0x00ff00, 0xffff00, 0x0000ff, 0xff00ff, 0x00ffff, 0xffffff, 0x555555, 0xc67171, 0x71c671, 0x8e8e38, 0x7171c6, 0x8e388e, 0x388383, 0xaaaaaa, 0x606070, 0x2a2a2a, 0xd5d5d5, 0x808080, #ifdef MACHCLR0_CLR MACHCLR0_CLR, #endif #ifdef MACHCLR1_CLR MACHCLR1_CLR, #endif #ifdef MACHCLR2_CLR MACHCLR2_CLR, #endif #ifdef MACHCLR3_CLR MACHCLR3_CLR, #endif #ifdef MACHCLR4_CLR MACHCLR4_CLR, #endif 0 }; short rdata[256][256]; short gdata[256][256]; short bdata[256][256]; main(int argc, char ** argv) { struct pcbm_node *p; IMAGE *img; int x,y; for (y=0; y < 256; y++) for (x = 0; x < 256; x++) { rdata[y][x] = 210; gdata[y][x] = 180; bdata[y][x] = 140; } for (p=$2.bitlist; p->bits; p++) { int r,g,b,c,spr,bx,by,i; c = rgb[p->color]; r = (0xff0000 & c) >> 16; g = (0x00ff00 & c) >> 8; b = (0xff & c); x = p->dx; y = p->dy; spr = (p->w-1)/16 + 1; for (by=0; by < p->h; by++) for (bx=0; bx < p->w; bx+=16) for (i=0; i<16 && (bx+i) < p->w; i++) if (p->bits[(by*spr)+(bx/16)] & (1<<(15-i))) { rdata[y+by][x+bx+i] = r; gdata[y+by][x+bx+i] = g; bdata[y+by][x+bx+i] = b; } } img = iopen(argv[1],"w",RLE(1),3,$2.w,$2.h,3); for (y=0; y < $2.h; y++) { putrow(img,rdata[y],y,0); putrow(img,gdata[y],y,1); putrow(img,bdata[y],y,2); } iclose(img); } EOF } if [ -z "$1" ] then echo "usage: frompcbm filename [iconname]" exit 1 fi PCBMFILE=$1 BASENAME=`echo $1 | sed 's%\.h$%%'` ICONNAME=${2:-$BASENAME} RGBFILE=${BASENAME}.rgb CONVBIN=frompcbm$$ CONVCFILE=${CONVBIN}.c create_cfile $BASENAME $ICONNAME > $CONVCFILE cc -I ${ROOT}/stand/arcs/include $CONVCFILE -limage -o $CONVBIN if [ -x $CONVBIN ] then $CONVBIN $RGBFILE fi rm -f $CONVCFILE $CONVBIN exit 0