|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T p
Length: 3452 (0xd7c) Types: TextFile Names: »pathlist.h«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki └─⟦526ad3590⟧ »EUUGD11/gnu-31mar87/X.V10.R4.tar.Z« └─⟦2109abc41⟧ └─⟦this⟧ »./X.V10R4/libibm/libsrc/pathlist.h«
/* $Header: pathlist.h,v 10.1 86/11/19 10:46:00 jg Exp $ */ /* pathlist.h - Constants, macros, typedefs and globals * used by PathListConverter() * * Author: * Scott Bates * Brown University * IRIS, Box 1946 * Providence, RI 02912 * * * Copyright (c) 1986 Brown University * * Permission to use, copy, modify and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies, and that both * that copyright notice and this permission notice appear in supporting * documentation, and that the name of Brown University not be used in * advertising or publicity pertaining to distribution of the software * without specific, written prior permission. Brown University makes no * representations about the suitability of this software for any purpose. * It is provided "as-is" without express or implied warranty. */ /* * Path list Segment structure */ typedef struct _Segment { int Index; int Type; int Count; } Segment; /* * Segment types */ #define LINE_SEGMENT 0 #define OPEN_CURVE_SEGMENT 1 #define CLOSED_CURVE_SEGMENT 2 /* * Default values for segemnt allocation */ #define INITIAL_SEGMENTS 1024 #define ADDITIONAL_SEGMENTS 512 /* * This macro starts a new segment and when required * expands the size of the segment table */ #define StartNewSegment(type, index, count) { \ if(++SegmentIndex == MaxSegments) { \ Segment *TempSeg; \ \ MaxSegments += 1 + ADDITIONAL_SEGMENTS; \ TempSeg = (Segment *)realloc((caddr_t)SegmentTable, \ (unsigned)(MaxSegments * sizeof(Segment))); \ if(TempSeg == NULL) { \ return(NULL); \ } \ CurrentSegment = &((SegmentTable = TempSeg)[SegmentIndex]); \ } else { \ CurrentSegment++; \ } \ CurrentSegment->Index = (index); \ CurrentSegment->Type = (type); \ CurrentSegment->Count = (count); \ } /* * Defaults for spline vertex buffer allocation */ #define INITIAL_SPLINE_VERTS 4096 #define ADDITIONAL_SPLINE_VERTS 1024 /* * This macro increases the size of the spline vertex buffer * if it is to small to handle "VertexCount" entries. */ #define GrowSplineVertexBuffer(CurrentVertex, VertexCount) { \ if((SplineVertexIndex + (VertexCount)) > MaxSplineVerts) { \ Vertex *TempVerts; \ \ MaxSplineVerts += ((VertexCount) - (MaxSplineVerts - \ SplineVertexIndex)) + ADDITIONAL_SPLINE_VERTS; \ \ TempVerts = (Vertex *)realloc((caddr_t)SplineVertexBuffer, \ (unsigned)(MaxSplineVerts * sizeof(Vertex))); \ if(TempVerts == NULL) { \ return(NULL); \ } \ (CurrentVertex) = \ &((SplineVertexBuffer = TempVerts)[SplineVertexIndex]); \ } \ } /* * Vertex type flags */ #define VERTEX_TYPE_MASK 0x001C #define LINE 0x0000 #define CURVE 0x0004 #define START_CLOSED_CURVE 0x000C #define END_CLOSED_CURVE 0x0014 #define START_OF_CLOSED_POLY 0x8000 /* * glocal variables */ static Vertex *SplineVertexBuffer; static int SplineVertexIndex; static int MaxSplineVerts; static int SplineUsed; static Segment *SegmentTable;