1 #ifndef _frustrum_h_ /* Is this your first time? */
2 #define _frustrum_h_ 1
3 
4 #include "kshape.h"
5 /*
6  * KJL 15:13:43 7/17/97 - frustrum.h
7  *
8  * function prototypes & pointers for things connected
9  * to the view frustrum and clipping
10  *
11  */
12 
13 enum FrustrumType
14 {
15 	FRUSTRUM_TYPE_NORMAL,
16 	FRUSTRUM_TYPE_WIDE
17 };
18 
19 extern void SetFrustrumType(enum FrustrumType frustrumType);
20 
21 /* GOURAUD POLYGON CLIPPING */
22 extern void GouraudPolygon_ClipWithZ(void);
23 extern void (*GouraudPolygon_ClipWithNegativeX)(void);
24 extern void (*GouraudPolygon_ClipWithPositiveY)(void);
25 extern void (*GouraudPolygon_ClipWithNegativeY)(void);
26 extern void (*GouraudPolygon_ClipWithPositiveX)(void);
27 
28 /* TEXTURED POLYGON CLIPPING */
29 extern void TexturedPolygon_ClipWithZ(void);
30 extern void (*TexturedPolygon_ClipWithNegativeX)(void);
31 extern void (*TexturedPolygon_ClipWithPositiveY)(void);
32 extern void (*TexturedPolygon_ClipWithNegativeY)(void);
33 extern void (*TexturedPolygon_ClipWithPositiveX)(void);
34 
35 /* GOURAUD TEXTURED POLYGON CLIPPING */
36 extern void GouraudTexturedPolygon_ClipWithZ(void);
37 extern void (*GouraudTexturedPolygon_ClipWithNegativeX)(void);
38 extern void (*GouraudTexturedPolygon_ClipWithPositiveY)(void);
39 extern void (*GouraudTexturedPolygon_ClipWithNegativeY)(void);
40 extern void (*GouraudTexturedPolygon_ClipWithPositiveX)(void);
41 
42 /* FRUSTRUM TESTS */
43 extern int PolygonWithinFrustrum(POLYHEADER *polyPtr);
44 extern int PolygonShouldBeDrawn(POLYHEADER *polyPtr);
45 extern int (*ObjectWithinFrustrum)(DISPLAYBLOCK *dbPtr);
46 extern int (*ObjectCompletelyWithinFrustrum)(DISPLAYBLOCK *dbPtr);
47 extern int (*VertexWithinFrustrum)(RENDERVERTEX *vertexPtr);
48 extern void (*TestVerticesWithFrustrum)(void);
49 
50 extern int DecalWithinFrustrum(DECAL *decalPtr);
51 extern int QuadWithinFrustrum(void);
52 extern int TriangleWithinFrustrum(void);
53 
54 
55 /* pass a pointer to a vertex to be tested; results are returned in an int,
56 using the following defines */
57 #define INSIDE_FRUSTRUM_Z_PLANE		1
58 #define INSIDE_FRUSTRUM_PX_PLANE	2
59 #define INSIDE_FRUSTRUM_NX_PLANE	4
60 #define INSIDE_FRUSTRUM_PY_PLANE	8
61 #define INSIDE_FRUSTRUM_NY_PLANE	16
62 #define INSIDE_FRUSTRUM				31
63 
64 extern char FrustrumFlagForVertex[maxrotpts];
65 
66 #define USE_FOV_53 0
67 
68 #endif
69