#pragma warn -use static char *sccsid = "@(#)TIFF/mk2dtab.c 1.02, Copyright (c) Sam Leffler, Dieter Linde, "__DATE__; #pragma warn .use /* * Copyright (c) 1988, 1990 by Sam Leffler, Oct 8 1990 * All rights reserved. * * This file is provided for unrestricted use provided that this legend is included on all tape media and as a part of the * software program in whole or part. Users may copy, modify or distribute this file at will. * * Program to construct packed state tables used by 2d decompression algorithms (G3 + G4). * The tables are indexed by PACK(code, len) and the result, if nonzero, indicates a code match * and the new decoding state. */ #include <stdlib.h> #include "tiffio.h" #define PACK(code, len) (((len) << 2) + (code)) #define PASS 1 #define HORIZONTAL 2 #define VERTICAL 3 #define EXTENSION 4 #define UNCOMPRESSED 1 #define PACKINFO(mode, v) (((v) << 4) + mode) #define UNPACKMODE(v) ((v) & 0xf) #define UNPACKINFO(v) ((v) >> 4) /**************************************************************************** * */ void main( void ) { #define NTABENTS (PACK(0xf, 10) + 1) short tab[NTABENTS]; char *sep; int i; bzero(tab, sizeof(tab)); tab[PACK(0x1, 4)] = PACKINFO(PASS, 0); tab[PACK(0x1, 3)] = PACKINFO(HORIZONTAL, 0); tab[PACK(0x1, 1)] = PACKINFO(VERTICAL, 0); tab[PACK(0x3, 3)] = PACKINFO(VERTICAL, 1); tab[PACK(0x3, 6)] = PACKINFO(VERTICAL, 2); tab[PACK(0x3, 7)] = PACKINFO(VERTICAL, 3); tab[PACK(0x2, 3)] = PACKINFO(VERTICAL, -1); tab[PACK(0x2, 6)] = PACKINFO(VERTICAL, -2); tab[PACK(0x2, 7)] = PACKINFO(VERTICAL, -3); tab[PACK(0xf, 10)] = PACKINFO(EXTENSION, UNCOMPRESSED); printf("static short g32dtab[%d] = {\n", NTABENTS); sep = " "; for (i = 0; i < NTABENTS; i++) { printf("%s%4d", sep, tab[i]); if (((i + 1) % 8) == 0) { printf(", /* 0x%02x - 0x%02x */\n", i - 7, i); sep = " "; } else sep = ", "; } if (i % NTABENTS) putchar('\n'); printf("};\n"); exit(0); }