Annotation of 43BSDReno/contrib/isode-beta/others/quipu/photo/code_word.c, revision 1.1.1.1

1.1       root        1: /* code_word.c - define code words for one dimensional encoding */
                      2: 
                      3: #ifndef        lint
                      4: static char *rcsid = "$Header: /f/osi/others/quipu/photo/RCS/code_word.c,v 7.0 89/11/23 22:01:34 mrose Rel $";
                      5: #endif
                      6: 
                      7: /* 
                      8:  * $Header: /f/osi/others/quipu/photo/RCS/code_word.c,v 7.0 89/11/23 22:01:34 mrose Rel $
                      9:  *
                     10:  *
                     11:  * $Log:       code_word.c,v $
                     12:  * Revision 7.0  89/11/23  22:01:34  mrose
                     13:  * Release 6.0
                     14:  * 
                     15:  */
                     16: 
                     17: /*
                     18:  *                               NOTICE
                     19:  *
                     20:  *    Acquisition, use, and distribution of this module and related
                     21:  *    materials are subject to the restrictions of a license agreement.
                     22:  *    Consult the Preface in the User's Manual for the full terms of
                     23:  *    this agreement.
                     24:  *
                     25:  */
                     26: 
                     27: 
                     28: 
                     29: #include <stdio.h>
                     30: #include "quipu/photo.h"
                     31: 
                     32: extern int PIC_LINESIZE;
                     33: 
                     34: /* The following are declarations of the code words that are used with one
                     35: /* dimensional encoding.   The first number in each pair give the length
                     36: /* of the string, the second gives the string in hex, starting at the 13th bit
                     37: /* position.
                     38: /* The declarations are made this way so that the arays are made at compile
                     39: /* time as opposed to run time.
                     40: */
                     41: 
                     42: 
                     43: /* White terminal run lengths */
                     44: 
                     45: static code_word wt_term [] = {
                     46:                { 8 , 0x6a0  },         /* 0 : 00110101      */
                     47:                { 6 , 0x380  },         /* 1 : 000111        */
                     48:                { 4 , 0xe00  },         /* 2 : 0111          */
                     49:                { 4 , 0x1000 },         /* 3 : 1000          */
                     50:                { 4 , 0x1600 },         /* 4 : 1011          */
                     51:                { 4 , 0x1800 },         /* 5 : 1100          */
                     52:                { 4 , 0x1c00 },         /* 6 : 1110          */
                     53:                { 4 , 0x1e00 },         /* 7 : 1111          */
                     54:                { 5 , 0x1300 },         /* 8 : 10011         */
                     55:                { 5 , 0x1400 },         /* 9 : 10100         */
                     56:                { 5 , 0x700  },         /* 10: 00111         */
                     57:                { 5 , 0x800  },         /* 11: 01000         */
                     58:                { 6 , 0x400  },         /* 12: 001000        */
                     59:                { 6 , 0x180  },         /* 13: 000011        */
                     60:                { 6 , 0x1a00 },         /* 14: 110100        */
                     61:                { 6 , 0x1a80 },         /* 15: 110101        */
                     62:                { 6 , 0x1500 },         /* 16: 101010        */
                     63:                { 6 , 0x1580 },         /* 17: 101011        */
                     64:                { 7 , 0x9c0  },         /* 18: 0100111       */
                     65:                { 7 , 0x300  },         /* 19: 0001100       */
                     66:                { 7 , 0x200  },         /* 20: 0001000       */
                     67:                { 7 , 0x5c0  },         /* 21: 0010111       */
                     68:                { 7 , 0xc0   },         /* 22: 0000011       */
                     69:                { 7 , 0x100  },         /* 23: 0000100       */
                     70:                { 7 , 0xa00  },         /* 24: 0101000       */
                     71:                { 7 , 0xac0  },         /* 25: 0101011       */
                     72:                { 7 , 0x4c0  },         /* 26: 0010011       */
                     73:                { 7 , 0x900  },         /* 27: 0100100       */
                     74:                { 7 , 0x600  },         /* 28: 0011000       */
                     75:                { 8 , 0x40   },         /* 29: 00000010      */
                     76:                { 8 , 0x60   },         /* 30: 00000011      */
                     77:                { 8 , 0x340  },         /* 31: 00011010      */
                     78:                { 8 , 0x360  },         /* 32: 00011011      */
                     79:                { 8 , 0x240  },         /* 33: 00010010      */
                     80:                { 8 , 0x260  },         /* 34: 00010011      */
                     81:                { 8 , 0x280  },         /* 35: 00010100      */
                     82:                { 8 , 0x2a0  },         /* 36: 00010101      */
                     83:                { 8 , 0x2c0  },         /* 37: 00010110      */
                     84:                { 8 , 0x2e0  },         /* 38: 00010111      */
                     85:                { 8 , 0x500  },         /* 39: 00101000      */
                     86:                { 8 , 0x520  },         /* 40: 00101001      */
                     87:                { 8 , 0x540  },         /* 41: 00101010      */
                     88:                { 8 , 0x560  },         /* 42: 00101011      */
                     89:                { 8 , 0x580  },         /* 43: 00101100      */
                     90:                { 8 , 0x5a0  },         /* 44: 00101101      */
                     91:                { 8 , 0x80   },         /* 45: 00000100      */
                     92:                { 8 , 0xa0   },         /* 46: 00000101      */
                     93:                { 8 , 0x140  },         /* 47: 00001010      */
                     94:                { 8 , 0x160  },         /* 48: 00001011      */
                     95:                { 8 , 0xa40  },         /* 49: 01010010      */
                     96:                { 8 , 0xa60  },         /* 50: 01010011      */
                     97:                { 8 , 0xa80  },         /* 51: 01010100      */
                     98:                { 8 , 0xaa0  },         /* 52: 01010101      */
                     99:                { 8 , 0x480  },         /* 53: 00100100      */
                    100:                { 8 , 0x4a0  },         /* 54: 00100101      */
                    101:                { 8 , 0xb00  },         /* 55: 01011000      */
                    102:                { 8 , 0xb20  },         /* 56: 01011001      */
                    103:                { 8 , 0xb40  },         /* 57: 01011010      */
                    104:                { 8 , 0xb60  },         /* 58: 01011011      */
                    105:                { 8 , 0x940  },         /* 59: 01001010      */
                    106:                { 8 , 0x960  },         /* 60: 01001011      */
                    107:                { 8 , 0x640  },         /* 61: 00110010      */
                    108:                { 8 , 0x660  },         /* 62: 00110011      */
                    109:                { 8 , 0x680  },         /* 63: 00110100      */
                    110:        };
                    111: 
                    112: /* Black terminal run lengths */
                    113: 
                    114: static code_word bl_term [] = {
                    115:                { 10, 0x1b8  },         /* 0 : 0000110111    */
                    116:                { 3 , 0x800  },         /* 1 : 010           */
                    117:                { 2 , 0x1800 },         /* 2 : 11            */
                    118:                { 2 , 0x1000 },         /* 3 : 10            */
                    119:                { 3 , 0xc00  },         /* 4 : 011           */
                    120:                { 4 , 0x600  },         /* 5 : 0011          */
                    121:                { 4 , 0x400  },         /* 6 : 0010          */
                    122:                { 5 , 0x300  },         /* 7 : 00011         */
                    123:                { 6 , 0x280  },         /* 8 : 000101        */
                    124:                { 6 , 0x200  },         /* 9 : 000100        */
                    125:                { 7 , 0x100  },         /* 10: 0000100       */
                    126:                { 7 , 0x140  },         /* 11: 0000101       */
                    127:                { 7 , 0x1c0  },         /* 12: 0000111       */
                    128:                { 8 , 0x80   },         /* 13: 00000100      */
                    129:                { 8 , 0xe0   },         /* 14: 00000111      */
                    130:                { 9 , 0x180  },         /* 15: 000011000     */
                    131:                { 10, 0xb8   },         /* 16: 0000010111    */
                    132:                { 10, 0xc0   },         /* 17: 0000011000    */
                    133:                { 10, 0x40   },         /* 18: 0000001000    */
                    134:                { 11, 0x19c  },         /* 19: 00001100111   */
                    135:                { 11, 0x1a0  },         /* 20: 00001101000   */
                    136:                { 11, 0x1b0  },         /* 21: 00001101100   */
                    137:                { 11, 0xdc   },         /* 22: 00000110111   */
                    138:                { 11, 0xa0   },         /* 23: 00000101000   */
                    139:                { 11, 0x5c   },         /* 24: 00000010111   */
                    140:                { 11, 0x60   },         /* 25: 00000011000   */
                    141:                { 12, 0x194  },         /* 26: 000011001010  */
                    142:                { 12, 0x196  },         /* 27: 000011001011  */
                    143:                { 12, 0x198  },         /* 28: 000011001100  */
                    144:                { 12, 0x19a  },         /* 29: 000011001101  */
                    145:                { 12, 0xd0   },         /* 30: 000001101000  */
                    146:                { 12, 0xd2   },         /* 31: 000001101001  */
                    147:                { 12, 0xd4   },         /* 32: 000001101010  */
                    148:                { 12, 0xd6   },         /* 33: 000001101011  */
                    149:                { 12, 0x1a4  },         /* 34: 000011010010  */
                    150:                { 12, 0x1a6  },         /* 35: 000011010011  */
                    151:                { 12, 0x1a8  },         /* 36: 000011010100  */
                    152:                { 12, 0x1aa  },         /* 37: 000011010101  */
                    153:                { 12, 0x1ac  },         /* 38: 000011010110  */
                    154:                { 12, 0x1ae  },         /* 39: 000011010111  */
                    155:                { 12, 0xd8   },         /* 40: 000001101100  */
                    156:                { 12, 0xda   },         /* 41: 000001101101  */
                    157:                { 12, 0x1b4  },         /* 42: 000011011010  */
                    158:                { 12, 0x1b6  },         /* 43: 000011011011  */
                    159:                { 12, 0xa8   },         /* 44: 000001010100  */
                    160:                { 12, 0xaa   },         /* 45: 000001010101  */
                    161:                { 12, 0xac   },         /* 46: 000001010110  */
                    162:                { 12, 0xae   },         /* 47: 000001010111  */
                    163:                { 12, 0xc8   },         /* 48: 000001100100  */
                    164:                { 12, 0xca   },         /* 49: 000001100101  */
                    165:                { 12, 0xa4   },         /* 50: 000001010010  */
                    166:                { 12, 0xa6   },         /* 51: 000001010011  */
                    167:                { 12, 0x48   },         /* 52: 000000100100  */
                    168:                { 12, 0x6e   },         /* 53: 000000110111  */
                    169:                { 12, 0x70   },         /* 54: 000000111000  */
                    170:                { 12, 0x4e   },         /* 55: 000000100111  */
                    171:                { 12, 0x50   },         /* 56: 000000101000  */
                    172:                { 12, 0xb0   },         /* 57: 000001011000  */
                    173:                { 12, 0xb2   },         /* 58: 000001011001  */
                    174:                { 12, 0x56   },         /* 59: 000000101011  */
                    175:                { 12, 0x58   },         /* 60: 000000101100  */
                    176:                { 12, 0xb4   },         /* 61: 000001011010  */
                    177:                { 12, 0xcc   },         /* 62: 000001100110  */
                    178:                { 12, 0xce   },         /* 63: 000001100111  */
                    179:        };
                    180: 
                    181: /* White make up codes */
                    182: 
                    183: static code_word wt_make [] = {
                    184:                { 5 , 0x1b00 },         /* 64  : 11011         */
                    185:                { 5 , 0x1200 },         /* 128 : 10010         */
                    186:                { 6 , 0xb80  },         /* 192 : 010111        */
                    187:                { 7 , 0xdc0  },         /* 256 : 0110111       */
                    188:                { 8 , 0x6c0  },         /* 320 : 00110110      */
                    189:                { 8 , 0x6e0  },         /* 384 : 00110111      */
                    190:                { 8 , 0xc80  },         /* 448 : 01100100      */
                    191:                { 8 , 0xca0  },         /* 512 : 01100101      */
                    192:                { 8 , 0xd00  },         /* 576 : 01101000      */
                    193:                { 8 , 0xce0  },         /* 640 : 01100111      */
                    194:                { 9 , 0xcc0  },         /* 704 : 011001100     */
                    195:                { 9 , 0xcd0  },         /* 768 : 011001101     */
                    196:                { 9 , 0xd20  },         /* 832 : 011010010     */
                    197:                { 9 , 0xd30  },         /* 896 : 011010011     */
                    198:                { 9 , 0xd40  },         /* 960 : 011010100     */
                    199:                { 9 , 0xd50  },         /* 1024: 011010101     */
                    200:                { 9 , 0xd60  },         /* 1088: 011010110     */
                    201:                { 9 , 0xd70  },         /* 1152: 011010111     */
                    202:                { 9 , 0xd80  },         /* 1216: 011011000     */
                    203:                { 9 , 0xd90  },         /* 1280: 011011001     */
                    204:                { 9 , 0xda0  },         /* 1344: 011011010     */
                    205:                { 9 , 0xdb0  },         /* 1408: 011011011     */
                    206:                { 9 , 0x980  },         /* 1472: 010011000     */
                    207:                { 9 , 0x990  },         /* 1536: 010011001     */
                    208:                { 9 , 0x9a0  },         /* 1600: 010011010     */
                    209:                { 6 , 0xc00  },         /* 1664: 011000        */
                    210:                { 9 , 0x9b0  },         /* 1728: 010011011     */
                    211:                { 11, 0x20   },         /* 1792: 00000001000   */
                    212:                { 11, 0x30   },         /* 1856: 00000001100   */
                    213:                { 11, 0x34   },         /* 1920: 00000001101   */
                    214:                { 12, 0x24   },         /* 1984: 000000010010  */
                    215:                { 12, 0x26   },         /* 2048: 000000010011  */
                    216:        };
                    217: 
                    218: /* Black make up codes */
                    219: 
                    220: static code_word bl_make [] = {
                    221:                { 10, 0x78   },         /* 64  : 0000001111    */
                    222:                { 12, 0x190  },         /* 128 : 000011001000  */
                    223:                { 12, 0x192  },         /* 192 : 000011001001  */
                    224:                { 12, 0xb6   },         /* 256 : 000001011011  */
                    225:                { 12, 0x66   },         /* 320 : 000000110011  */
                    226:                { 12, 0x68   },         /* 384 : 000000110100  */
                    227:                { 12, 0x6a   },         /* 448 : 000000110101  */
                    228:                { 13, 0x6c   },         /* 512 : 0000001101100 */
                    229:                { 13, 0x6d   },         /* 576 : 0000001101101 */
                    230:                { 13, 0x4a   },         /* 640 : 0000001001010 */
                    231:                { 13, 0x4b   },         /* 704 : 0000001001011 */
                    232:                { 13, 0x4c   },         /* 768 : 0000001001100 */
                    233:                { 13, 0x4d   },         /* 832 : 0000001001101 */
                    234:                { 13, 0x72   },         /* 896 : 0000001110010 */
                    235:                { 13, 0x73   },         /* 960 : 0000001110011 */
                    236:                { 13, 0x74   },         /* 1024: 0000001110100 */
                    237:                { 13, 0x75   },         /* 1088: 0000001110101 */
                    238:                { 13, 0x76   },         /* 1152: 0000001110110 */
                    239:                { 13, 0x77   },         /* 1216: 0000001110111 */
                    240:                { 13, 0x52   },         /* 1280: 0000001010010 */
                    241:                { 13, 0x53   },         /* 1344: 0000001010011 */
                    242:                { 13, 0x54   },         /* 1408: 0000001010100 */
                    243:                { 13, 0x55   },         /* 1472: 0000001010101 */
                    244:                { 13, 0x5a   },         /* 1536: 0000001011010 */
                    245:                { 13, 0x5b   },         /* 1600: 0000001011011 */
                    246:                { 13, 0x64   },         /* 1664: 0000001100100 */
                    247:                { 13, 0x65   },         /* 1728: 0000001100101 */
                    248:                { 11, 0x20   },         /* 1792: 00000001000   */
                    249:                { 11, 0x30   },         /* 1856: 00000001100   */
                    250:                { 11, 0x34   },         /* 1920: 00000001101   */
                    251:                { 12, 0x24   },         /* 1984: 000000010010  */
                    252:                { 12, 0x26   },         /* 2048: 000000010011  */
                    253:        };
                    254: 
                    255: 
                    256: 
                    257: 
                    258: /* ROUTINE:     Get_code ()                                             */
                    259: /*                                                                      */
                    260: /* SYNOPSIS:    Gets a code word from an array given the run_length     */
                    261: /*              and the colour (0 = white, 1 = black)                   */
                    262: 
                    263: full_code
                    264: get_code (run, colour)
                    265: 
                    266: char    colour;
                    267: int     run;
                    268: {
                    269: 
                    270: full_code result;
                    271:    result.make.length = 0;
                    272:    if (run > PIC_LINESIZE)
                    273:        (void) fprintf (stderr,"Run too long\n");
                    274: 
                    275:    if (colour  ==  WHITE) {
                    276:       if  (run > 63)
                    277:         result.make = wt_make [(run/64)-1];
                    278:       result.term = wt_term [run%64];
                    279: 
                    280:    } else {
                    281:       if  (run > 63)
                    282:         result.make = bl_make [(run/64)-1];
                    283:       result.term = bl_term [run%64];
                    284:    }
                    285: 
                    286:    return (result);
                    287: 
                    288: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.