home *** CD-ROM | disk | FTP | other *** search
- /*****************************************************************************
- * Definitions for the Poly3D-R program: *
- *****************************************************************************/
-
- #ifndef POLY_3D_R_H
- #define POLY_3D_R_H
-
- #include "irit_sm.h"
- #include "genmat.h"
- #include "iritprsr.h"
- #include "gif_lib.h"
- #include "cagd_lib.h"
-
- #define DEFAULT_COLOR 63 /* White - in case no color is given. */
- #define DEFAULT_BACK_GROUND_COLOR 1 /* Blue as default back ground. */
- #define RGB_COLOR_GIVEN -1 /* Or if fill RGB was given. */
- #define DEFAULT_NORMAL_AVG_DEGREE 30 /* Less will be averaged. */
- #define DEFAULT_SAMPLE_PER_SRF_AXIS 20 /* Fineness srf subdiv. control. */
-
- #define DEFAULT_SCREEN_XSIZE 320
- #define DEFAULT_SCREEN_YSIZE 200
-
- #define DEFAULT_BITS_PER_PIXEL 7
- #define DEFAULT_LIGHT_SOURCE { 1.0, 3.0, 7.0 }
- #define DEFAULT_AMBIENT 0.3
-
- #define DEFAULT_FINENESS 4;
-
- typedef struct ShadeInfoStruct {
- int SubSamplePixel;
- int BitsPerPixel; /* 2^BitsPerPixel == number of colors possible. */
- int LevelsPerColor; /* Number of levels per each required color. */
- int DefaultColor;
- int BackGroundColor;
- int TwoSources; /* If true - two sources at opposite direction assumed. */
- int ScrnXSize; /* Rendered image dimensions. */
- int ScrnYSize;
- int Gouraud; /* If TRUE use Gouraud shading. */
- int BackFacing; /* If TRUE - delete back facing polygons. */
- int *MinIntensityIndex; /* Hold minimum intensity of this color index. */
- GifColorType *PColorMap;
- RealType LightSource[3]; /* Vector direction of light source. */
- RealType Ambient;
- RealType NrmlAvgDegree;
- } ShadeInfoStruct;
-
- typedef struct ScanConvertStruct {
- int MaxEdgeY; /* When this edge is no longer active. */
- struct IPVertexStruct *VMinY, *VMaxY; /* Which vertices form this bndry. */
- } ScanConvertStruct;
-
- typedef struct PolygonScanConvertStruct {
- ScanConvertStruct Bndry1, Bndry2;
- } PolygonScanConvertStruct;
-
- /* The following are global setable variables (via config file poly3d-r.cfg).*/
- extern int GlblMore, MouseExists, GraphDriver;
- extern ShadeInfoStruct GlblShadeInfo;
-
- /* Total number of polygons/vertices to scan converted, in current scene: */
- extern int GlblNumOfPolys;
- extern int GlblNumOfVerts;
-
- /* Used as global measure on the surfaces subdivision fineness. */
- extern int FineNess;
-
- /* Amount scene was scaled up from normalized [-1..1] size on both X & Y: */
- extern RealType GlblScaleUpFctr;
-
- /* Global transformation matrix: */
- extern MatrixType GlblViewMat; /* Current view of object. */
-
- /* All polygons to be scan convert will be inserted into this hash table */
- /* during the preprocessing (PrepareXXXX functions). */
- extern struct IPPolygonStruct **PolyHashTable;
-
- /* And finally the prototypes of the Poly3D-H.c module: */
- IPPolygonStruct *ProcessSurfaces(CagdCrvStruct *Crvs, CagdSrfStruct *Srfs);
- VoidPtr MyMalloc(unsigned size);
- void MyFree(VoidPtr p);
- void MyExit(int ExitCode);
- void QuitGifError(void);
-
- /* Prototypes of the PrepData.c module: */
- void PrepareViewData(IPObjectStruct *PObjects);
-
- /* Prototypes of the ColorTbl.c module: */
- void PrepareColorTable(IPObjectStruct *PObjects);
-
- /* Prototypes of the EvalColr.c module: */
- void EvalVrtxColors(IPObjectStruct *PObjects);
- int UpdateEqnPolygon(IPPolygonStruct *PPolygon, int SetFlipDir);
- int CrossProd(RealType Pt1[3], RealType Pt2[3], RealType Pt3[3]);
- void PrintPolyContent(IPPolygonStruct *PPoly);
-
- /* Prototypes of the ScnCnvrt.c module: */
- void ScanConvertData(GifFileType *GifFile, GifFileType *GifMask);
-
- #endif /* POLY_3D_R_H */
-