Graphic auxillary structures and enum types

PpolyType

typedef enum PpolyType {
 PointF = 0,
 LineF,
// LtStr,

 F,
 FL,
 G,
 GL,
 Tex,
 TexL,
 TexG,
 TexGL,
 CTex,
 CTexL,
 CTexG,
 CTexGL,

 AF,
 AFL,
 AG,
 AGL,
 ATex,
 ATexL,
 ATexG,
 ATexGL,
 CATex,
 CATexL,
 CATexG,
 CATexGL,

 BAptTex,

 PpolyTypeNum
} PpolyType;

typedef Trotation Pmatrix;

typedef Tpoint  Ppoint;

typedef struct Pcolor {
 float r, g, b, a;
} Pcolor;

typedef struct Pnormal {
 float i, j, k;
} Pnormal;

typedef struct Ptexcoord {
 float u, v;
} Ptexcoord;

typedef float Pintensity;

typedef struct PclipInfo {
 UInt32 clipFlag;   // Which edges this point is outside
 float csX, csY, csZ;  // Camera space coordinates of this point
} PclipInfo;
 

/********************************************\
 Polygon structures
\********************************************/
typedef struct Prim {
 PpolyType type;
 int   nVerts;
 int   *xyz;  // Indexes XformedPosPool
} Prim;

typedef struct PrimPointFC: public Prim {
 int   rgba;  // Indexes ColorPool
} PrimPointFC;

typedef struct PrimLineFC: public Prim {
 int   rgba;  // Indexes ColorPool
} PrimLineFC;

typedef struct PrimLtStr: public Prim {
 int   rgba;   // Indexes ColorPool
 int   rgbaBack;  // Indexes ColorPool (-1 means omnidirectional -- could subclass instead)
 float  i, j, k;  // Direction vector (negative dot with eyepos means use back color)
} PrimLtStr;

typedef struct Poly: public Prim {
 float  A, B, C, D; // Polygon plane equation for back face culling
} Poly;

typedef struct PolyFC: public Poly {
 int   rgba;  // Indexes ColorPool
} PolyFC;

typedef struct PolyVC: public Poly {
 int   *rgba;  // Indexes ColorPool
} PolyVC;

typedef struct PolyFCN: public PolyFC {
 int   I;   // Indexes IntesityPool
} PolyFCN;

typedef struct PolyVCN: public PolyVC {
 int   *I;   // Indexes IntesityPool
} PolyVCN;

typedef struct PolyTexFC: public PolyFC {
 int   texIndex; // Indexes the local texture id table
 Ptexcoord *uv;
} PolyTexFC;

typedef struct PolyTexVC: public PolyVC {
 int   texIndex; // Indexes the local texture id table
 Ptexcoord *uv;
} PolyTexVC;

typedef struct PolyTexFCN: public PolyFCN {
 int   texIndex; // Indexes the local texture id table
 Ptexcoord *uv;
} PolyTexFCN;

typedef struct PolyTexVCN: public PolyVCN {
 int   texIndex; // Indexes the local texture id table
 Ptexcoord *uv;
} PolyTexVCN;