blob: c4d03e9cedb25bf623af596925251798eff48d7c [file] [log] [blame]
Guido van Rossume4bddea1991-10-30 11:52:48 +00001#include <stdio.h>
2
3long *bm;
4long h, w;
5long factor;
6
7#define OC(x,xi) ((x)*factor+(xi))
8#define BM(x,xi,y,yi) bm[OC(y,yi)*w+OC(x,xi)]
9
10#define COMP(r,g,b) ((r) | ((g)<<8) | ((b) << 16))
11
12#define R(comp) ((comp) & 0xff)
13#define G(comp) (((comp)>>8) & 0xff)
14#define B(comp) (((comp)>>16) & 0xff)
15
16main(argc, argv)
17 char **argv;
18{
19 char lbuf[100];
20 int nh, nw;
21 int x, y, xi, yi;
22 int num;
23 int r, g, b;
24 long data;
25 long *nbm, *nbmp;
26 int i;
27
28 if( argc != 2) {
29 fprintf(stderr, "Usage: squash factor\n");
30 exit(1);
31 }
32 factor = atoi(argv[1]);
33 gets(lbuf);
34 if ( sscanf(lbuf, "(%d,%d)", &w, &h) != 2) {
35 fprintf(stderr, "%s: bad size spec: %s\n", argv[0], lbuf);
36 exit(1);
37 }
38 nh = h / factor;
39 nw = w / factor;
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]);
43 exit(1);
44 }
45 if ( (nbm = (long *)malloc(nh*nw*sizeof(long))) == 0) {
46 fprintf(stderr, "%s: No memory\n", argv[0]);
47 exit(1);
48 }
49 while( !feof(stdin) ) {
50 gets(lbuf);
51 if ( feof(stdin) ) break;
52 puts(lbuf);
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],
56 i, h*w*sizeof(long));
57 exit(1);
58 }
59 nbmp = nbm;
60 for( y=0; y<nh; y++) {
61 for ( x=0; x<nw; x++) {
62 r = g = b = 0;
63 num = 0;
64 *nbmp++ = BM(x,0,y,0);
65 }
66 }
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);
70 }
71 exit(0);
72}