15 if(Bread(bi, &v, 1) != 1)
16 sysfatal("get8: short read");
26 return get8() << 8 | v;
35 return get16() << 16 | v;
42 u32int *p, *d, *cols, *buf;
46 cols = mallocz(dx * sizeof *cols, 1);
47 buf = mallocz(dx * dy * sizeof *buf, 1);
48 if(cols == nil || buf == nil)
49 sysfatal("mallocz: %r");
51 for(p=cols; p<cols+dx; p++)
53 for(p=cols; p<cols+dx; p++){
56 if((h = get8()) == 0xff)
60 for(d=buf+(p-cols)+h*dx; n-->0; d+=dx)
73 static u32int buf[4096];
75 for(p=buf; p<buf+nelem(buf); p++)
87 if((bp = Bopen(f, OREAD)) == nil)
88 sysfatal("getpal: %r");
89 for(p=pal; p<pal+nelem(pal); p++){
90 if(Bread(bp, u, 3) != 3)
91 sysfatal("getpal: short read: %r");
92 *p = u[2]<<16 | u[1]<<8 | u[0];
100 fprint(2, "usage: %s [-f] [-p palette] pic\n", argv0);
105 main(int argc, char **argv)
112 p = "/mnt/wad/playpal";
114 case 'f': flat = 1; break;
115 case 'p': p = EARGF(usage()); break;
120 if((fd = open(*argv, OREAD)) < 0)
121 sysfatal("open: %r");
123 bi = Bfdopen(fd, OREAD);
124 bo = Bfdopen(1, OWRITE);
125 if(bi == nil || bo == nil)
126 sysfatal("Bfdopen: %r");
127 buf = flat ? unflat() : unpic();
128 Bprint(bo, "%11s %11d %11d %11d %11d ",
129 chantostr(c, XBGR32), 0, 0, dx, dy);
130 Bwrite(bo, buf, dx * dy * sizeof *buf);