/*****************************************************************************
*   "Irit" - the 3d (not only polygonal) solid modeller.		     *
*									     *
* Written by:  Gershon Elber				Ver 0.2, Mar. 1990   *
******************************************************************************
* General, visible to others, definitions of primitiv module.		     *
*****************************************************************************/

#ifndef	PRIMITIV_H
#define	PRIMITIV_H

int GetResolution(int ClipToMin);
IPObjectStruct *GenBOXObject(VectorType Pt, RealType *WidthX,
					RealType *WidthY, RealType *WidthZ);
IPObjectStruct *GenGBOXObject(VectorType Pt,
			VectorType Dir1, VectorType Dir2, VectorType Dir3);
IPObjectStruct *GenCONEObject(VectorType Pt, VectorType Dir, RealType *R);
IPObjectStruct *GenCONE2Object(VectorType Pt, VectorType Dir, RealType *R1,
							     RealType *R2);
IPObjectStruct *GenCYLINObject(VectorType Pt, VectorType Dir, RealType *R);
IPObjectStruct *GenSPHEREObject(VectorType Center, RealType *R);
IPObjectStruct *GenTORUSObject(VectorType Center, VectorType Normal,
					RealType *Rmajor, RealType *Rminor);
IPObjectStruct *GenPOLYDISKObject(VectorType N, VectorType T, RealType *R);
IPObjectStruct *GenPOLYGONObject(IPObjectStruct *PObjList,
						RealType * RIsPolyline);
IPObjectStruct *GenObjectFromPolyList(IPObjectStruct *PObjList);
IPObjectStruct *GenCROSSECObject(IPObjectStruct *PObj);
IPObjectStruct *GenSURFREVObject(IPObjectStruct *Cross);
IPObjectStruct *GenEXTRUDEObject(IPObjectStruct *Cross, VectorType Dir);
void UpdatePolyPlane(IPPolygonStruct *PPoly, VectorType Vin);

#endif	/* PRIMITIV_H */
