7 #define OC(x,xi) ((x)*factor+(xi))
8 #define BM(x,xi,y,yi) bm[OC(y,yi)*w+OC(x,xi)]
10 #define COMP(r,g,b) ((r) | ((g)<<8) | ((b) << 16))
12 #define R(comp) ((comp) & 0xff)
13 #define G(comp) (((comp)>>8) & 0xff)
14 #define B(comp) (((comp)>>16) & 0xff)
29 fprintf(stderr
, "Usage: squash factor\n");
32 factor
= atoi(argv
[1]);
34 if ( sscanf(lbuf
, "(%d,%d)", &w
, &h
) != 2) {
35 fprintf(stderr
, "%s: bad size spec: %s\n", argv
[0], lbuf
);
40 printf("(%d,%d)\n", nw
, nh
);
41 if ( (bm
= (long *)malloc(h
*w
*sizeof(long))) == 0) {
42 fprintf(stderr
, "%s: No memory\n", argv
[0]);
45 if ( (nbm
= (long *)malloc(nh
*nw
*sizeof(long))) == 0) {
46 fprintf(stderr
, "%s: No memory\n", argv
[0]);
49 while( !feof(stdin
) ) {
51 if ( feof(stdin
) ) break;
53 fprintf(stderr
, "Reading %d\n", h
*w
*sizeof(long));
54 if ( (i
=fread(bm
, 1, h
*w
*sizeof(long), stdin
)) != h
*w
*sizeof(long)) {
55 fprintf(stderr
, "%s: short read, %d wanted %d\n", argv
[0],
60 for( y
=0; y
<nh
; y
++) {
61 for ( x
=0; x
<nw
; x
++) {
64 *nbmp
++ = BM(x
,0,y
,0);
67 if (nbmp
- nbm
!= nh
* nw
) fprintf(stderr
, "%d %d\n", nbmp
-nbm
, nh
*nw
);
68 fprintf(stderr
, "Writing %d\n", (nbmp
-nbm
)*sizeof(long));
69 fwrite(nbm
, 1, (nbmp
-nbm
)*sizeof(long), stdout
);