home *** CD-ROM | disk | FTP | other *** search
/ Stars of Shareware: Programmierung / SOURCE.mdf / programm / msdos / c / xv221src / tiff / mkspans.c < prev    next >
C/C++ Source or Header  |  1992-04-01  |  1KB  |  51 lines

  1. #ifndef lint
  2. static char rcsid[] = "$Header: /usr/people/sam/tiff/libtiff/RCS/mkspans.c,v 1.4 90/10/08 17:17:29 sam Exp $";
  3. #endif
  4.  
  5. #include "tiffcompat.h"
  6.  
  7. /*
  8.  * Hack program to construct tables used to find
  9.  * runs of zeros and ones in Group 3 Fax encoding.
  10.  */
  11.  
  12. dumparray(name, runs)
  13.     char *name;
  14.     unsigned char runs[256];
  15. {
  16.     register int i;
  17.     register char *sep;
  18.     printf("static u_char %s[256] = {\n", name);
  19.     sep = "    ";
  20.     for (i = 0; i < 256; i++) {
  21.         printf("%s%d", sep, runs[i]);
  22.         if (((i + 1) % 16) == 0) {
  23.             printf(",    /* 0x%02x - 0x%02x */\n", i-15, i);
  24.             sep = "    ";
  25.         } else
  26.             sep = ", ";
  27.     }
  28.     printf("\n};\n");
  29. }
  30.  
  31. main()
  32. {
  33.     unsigned char runs[2][256];
  34.  
  35.     bzero(runs[0], 256*sizeof (char));
  36.     bzero(runs[1], 256*sizeof (char));
  37.     { register int run, runlen, i;
  38.       runlen = 1;
  39.       for (run = 0x80; run != 0xff; run = (run>>1)|0x80) {
  40.         for (i = run-1; i >= 0; i--) {
  41.             runs[1][run|i] = runlen;
  42.             runs[0][(~(run|i)) & 0xff] = runlen;
  43.         }
  44.         runlen++;
  45.       }
  46.       runs[1][0xff] = runs[0][0] = 8;
  47.     }
  48.     dumparray("bruns", runs[0]);
  49.     dumparray("wruns", runs[1]);
  50. }
  51.