Annotation of 43BSDTahoe/new/X/libibm/libsrc/pathlist.h, revision 1.1.1.1

1.1       root        1: /* $Header: pathlist.h,v 10.1 86/11/19 10:46:00 jg Exp $ */
                      2: /* pathlist.h - Constants, macros, typedefs and globals
                      3:  *              used by PathListConverter()
                      4:  *
                      5:  *     Author:
                      6:  *             Scott Bates
                      7:  *             Brown University
                      8:  *             IRIS, Box 1946
                      9:  *             Providence, RI 02912
                     10:  *
                     11:  *
                     12:  *             Copyright (c) 1986 Brown University
                     13:  *
                     14:  * Permission to use, copy, modify and distribute this software and its
                     15:  * documentation for any purpose and without fee is hereby granted, provided
                     16:  * that the above copyright notice appear in all copies, and that both
                     17:  * that copyright notice and this permission notice appear in supporting
                     18:  * documentation, and that the name of Brown University not be used in
                     19:  * advertising or publicity pertaining to distribution of the software
                     20:  * without specific, written prior permission. Brown University makes no
                     21:  * representations about the suitability of this software for any purpose.
                     22:  * It is provided "as-is" without express or implied warranty.
                     23:  */
                     24: 
                     25: /*
                     26:  * Path list Segment structure
                     27:  */
                     28: 
                     29: typedef struct _Segment {
                     30:        int Index;
                     31:        int Type;
                     32:        int Count;
                     33: } Segment;
                     34: 
                     35: /*
                     36:  * Segment types
                     37:  */
                     38: 
                     39: #define LINE_SEGMENT           0
                     40: #define OPEN_CURVE_SEGMENT     1
                     41: #define CLOSED_CURVE_SEGMENT   2
                     42: 
                     43: /*
                     44:  * Default values for segemnt allocation
                     45:  */
                     46: 
                     47: #define INITIAL_SEGMENTS       1024
                     48: #define ADDITIONAL_SEGMENTS     512
                     49: 
                     50: /*
                     51:  * This macro starts a new segment and when required 
                     52:  * expands the size of the segment table
                     53:  */
                     54: 
                     55: #define StartNewSegment(type, index, count) {                             \
                     56:     if(++SegmentIndex == MaxSegments) {                                           \
                     57:        Segment *TempSeg;                                                  \
                     58:                                                                           \
                     59:        MaxSegments += 1 + ADDITIONAL_SEGMENTS;                            \
                     60:        TempSeg = (Segment *)realloc((caddr_t)SegmentTable,                \
                     61:                     (unsigned)(MaxSegments * sizeof(Segment)));           \
                     62:        if(TempSeg == NULL) {                                              \
                     63:           return(NULL);                                                   \
                     64:        }                                                                  \
                     65:         CurrentSegment = &((SegmentTable = TempSeg)[SegmentIndex]);       \
                     66:     } else {                                                              \
                     67:        CurrentSegment++;                                                  \
                     68:     }                                                                     \
                     69:     CurrentSegment->Index = (index);                                      \
                     70:     CurrentSegment->Type = (type);                                        \
                     71:     CurrentSegment->Count = (count);                                      \
                     72: }
                     73: 
                     74: /*
                     75:  * Defaults for spline vertex buffer allocation
                     76:  */
                     77: 
                     78: #define INITIAL_SPLINE_VERTS   4096
                     79: #define ADDITIONAL_SPLINE_VERTS        1024
                     80: 
                     81: /*
                     82:  * This macro increases the size of the spline vertex buffer
                     83:  * if it is to small to handle "VertexCount" entries.
                     84:  */
                     85: 
                     86: #define GrowSplineVertexBuffer(CurrentVertex, VertexCount) {              \
                     87:        if((SplineVertexIndex + (VertexCount)) > MaxSplineVerts) {         \
                     88:            Vertex *TempVerts;                                             \
                     89:                                                                           \
                     90:            MaxSplineVerts += ((VertexCount) - (MaxSplineVerts -           \
                     91:                        SplineVertexIndex)) + ADDITIONAL_SPLINE_VERTS;     \
                     92:                                                                           \
                     93:            TempVerts = (Vertex *)realloc((caddr_t)SplineVertexBuffer,     \
                     94:                    (unsigned)(MaxSplineVerts * sizeof(Vertex)));          \
                     95:             if(TempVerts == NULL) {                                       \
                     96:                return(NULL);                                              \
                     97:             }                                                             \
                     98:            (CurrentVertex) =                                              \
                     99:                &((SplineVertexBuffer = TempVerts)[SplineVertexIndex]);    \
                    100:        }                                                                  \
                    101: }
                    102: 
                    103: /*
                    104:  * Vertex type flags
                    105:  */
                    106: 
                    107: #define VERTEX_TYPE_MASK        0x001C
                    108: #define LINE                    0x0000
                    109: #define CURVE                   0x0004
                    110: #define START_CLOSED_CURVE      0x000C
                    111: #define END_CLOSED_CURVE        0x0014
                    112: #define START_OF_CLOSED_POLY    0x8000
                    113: 
                    114: /*
                    115:  * glocal variables
                    116:  */
                    117: 
                    118: static Vertex *SplineVertexBuffer;
                    119: static int SplineVertexIndex;
                    120: static int MaxSplineVerts;
                    121: static int SplineUsed;
                    122: static Segment *SegmentTable;

unix.superglobalmegacorp.com

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