/* 
 * File: dxf.h
 * Project: DXF to RIB
 *  (c) SPDsoft Tuesday, June 21, 1994, GTIC
 */

/******************************************************************************/
/* BLOCK stuff. ASCII Drawing Interchange (DXF) Files, p. 535, 536*/

#define	BlockFlagBits	PolylineInts[0]

#define	BL_Anonymous	(BlockFlagBits & 1)
#define	BL_HasAttrib	(BlockFlagBits & 2)
#define	BL_IsXref		(BlockFlagBits & 4)
#define	BL_ExtDepend	(BlockFlagBits & 16)
#define	BL_ResXref		(BlockFlagBits & 32)
#define	BL_IsReferenced	(BlockFlagBits & 64)


/******************************************************************************/
/* POLYLINE stuff. ASCII Drawing Interchange (DXF) Files, p. 537, 538*/

#define	PFACEVMAX			4

int		PolylineInts[6];

#define	PolylineFlagBits	PolylineInts[0]

#define	PL_Closed		(PolylineFlagBits & 1)	/* closed in M direction */
#define	PL_CurveFit		(PolylineFlagBits & 2)
#define	PL_SplineFit	(PolylineFlagBits & 4)
#define	PL_3DPolyline	(PolylineFlagBits & 8)
#define	PL_3DPolygMesh	(PolylineFlagBits & 16)
#define	PL_ClosedPMesh	(PolylineFlagBits & 32)	/* closed in N direction */
#define	PL_PolyfaceMesh	(PolylineFlagBits & 64)
#define	PL_Pattern		(PolylineFlagBits & 128)


#define	PolylineMCount	PolylineInts[1]
#define	PolylineNCount	PolylineInts[2]
#define	PolylineMDens	PolylineInts[3]
#define	PolylineNDens	PolylineInts[4]


#define	PolylineSurf	PolylineInts[5]

#define	PM_NoSmooth		0
#define	PM_Quadratic	5
#define	PM_BSpline		6
#define	PM_Bezier		8

/* Polyface stuff */

#define	PolyfaceNVerts	PolylineInts[1]	
#define	PolyfaceNFaces	PolylineInts[2]
						/* AutoCAD never relies upon their accuracy */
						
/******************************************************************************/
/* VERTEX stuff. ASCII Drawing Interchange (DXF) Files, p. 538, 539*/

float	*VertexCoords;

#define	VertexFlagBits	ints[0]


#define	V_IsInCurve		(VertexFlagBits & 1)
#define	V_HasTangent	(VertexFlagBits & 2)
#define	V_IsInSpline	(VertexFlagBits & 8)
#define	V_IsSplineFrame	(VertexFlagBits & 16)
#define	V_In3DPolyline	(VertexFlagBits & 32)
#define	V_In3DPolygMesh	(VertexFlagBits & 64)
#define	V_IsInPolyface	(VertexFlagBits & 128)

#define	V_defsPoint		(V_IsInPolyface && V_In3DPolygMesh) /* index by order */
#define	V_defsFace		(V_IsInPolyface && !V_In3DPolygMesh)

#define	VertexFace(i)	((abs(ints[1+(i)])-1)*3)	/* i=1..4 */

#define	VertexIdx(i,j)	((i)*PolylineNCount+(j))
#define	NormIdx(i,j)	((i)*(en)+(j))