Annotation of researchv9/X11/src/X.V11R1/fonts/compiler/port.h, revision 1.1.1.1

1.1       root        1: /* $Header: port.h,v 1.1 87/09/11 07:56:24 toddb Exp $ */
                      2: /*
                      3:  * The portable font format has the following properties:
                      4:  *     little-endian 16 and 32-bit integers
                      5:  *     no padding in structures
                      6:  *     lowest-addressed byte of a bitmap is leftmost on screen
                      7:  *     least-significant bit within a byte of a bitmap is leftmost on screen
                      8:  *     bitmaps are padded only to byte boundaries
                      9:  *
                     10:  * The "native" font format has the following properties:
                     11:  *     native-ended 16 and 32-bit integers
                     12:  *     padding in structures is that of the compiler with which the converter
                     13:  *             is compiled
                     14:  *     byte ordering along a scanline is set by a command-line option
                     15:  *     bit ordering within a byte of a bitmap is set by a command-line option
                     16:  *     bitmaps are padded only to byte boundaries
                     17:  */
                     18: #ifndef u_char
                     19: #define u_char unsigned char
                     20: #endif
                     21: 
                     22: /*
                     23:  * put i into 32 portable bits
                     24:  */
                     25: #define p32( i, pb)    \
                     26:        (pb)[0] =  i & 0xff;    \
                     27:        (pb)[1] = (i & 0xff00) >> 8;    \
                     28:        (pb)[2] = (i & 0xff0000) >> 16; \
                     29:        (pb)[3] = (i & 0xff000000) >> 24;
                     30: 
                     31: /*
                     32:  * put i into 16 portable bits
                     33:  */
                     34: #define p16( i, pb)    \
                     35:        (pb)[0] =  i & 0xff;    \
                     36:        (pb)[1] = (i & 0xff00) >> 8;
                     37: 
                     38: /*
                     39:  * naturalize 32 portable bits
                     40:  */
                     41: #define n32( p32)      \
                     42:        (((((u_char *)(p32))[3] << 8 | ((u_char *)(p32))[2]) << 8 | ((u_char *)(p32))[1]) << 8 | ((u_char *)(p32))[0])
                     43: 
                     44: /*
                     45:  * naturalize 16 portable bits
                     46:  */
                     47: #define n16( p16)      \
                     48:        (((u_char *)(p16))[1] << 8 | ((u_char *)(p16))[0])
                     49: 
                     50: 
                     51: /*
                     52:  * These increment the byte pointer as well.
                     53:  * no return value
                     54:  */
                     55: #define port32( pb, i) \
                     56:        p32( i, pb);    \
                     57:        pb += 4;
                     58: 
                     59: #define port16( pb, i) \
                     60:        p16( i, pb);    \
                     61:        pb += 2;
                     62: 
                     63: #define nat32( pb, i)  \
                     64:        i = n32( pb);   \
                     65:        pb += 4;
                     66: 
                     67: #define nat16( pb, i)  \
                     68:        i = n16( pb);   \
                     69:        pb += 2;
                     70: 
                     71: 
                     72: unsigned char  _b32[4];        /* a hidden temporary */
                     73: /*
                     74:  * These increment the file pointer as well.
                     75:  * Don't put more than one of these macros in an expression!
                     76:  * no return values
                     77:  */
                     78: #define put32( i, fp)  \
                     79:        p32( (i), _b32);        \
                     80:        fwrite( _b32, 4, 1, (fp));
                     81: 
                     82: #define put16( i, fp)  \
                     83:        p16( (i), _b32);        \
                     84:        fwrite( _b32, 2, 1, (fp));
                     85: 
                     86: #define get32( i, fp)  \
                     87:        ( fread( _b32, 4, 1, (fp)), g32( _b32))
                     88: 
                     89: #define get16( i, fp)  \
                     90:        ( fread( _b32, 2, 1, (fp)), g16( _b32))

unix.superglobalmegacorp.com

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