#pragma once

//:Ignore

struct
	MXGEDLL
	McGe
{
	enum { eGood, eBad };

	enum EntityId {
		kEntity2d,
		kEntity3d,
		kPointEnt2d,
		kPointEnt3d,
		kPosition2d,
		kPosition3d,
		kCircArc2d,
		kCircArc3d,
		kCurve2d,
		kCurve3d,
		kEllipArc2d,
		kEllipArc3d,
		kLine2d,
		kLine3d,
		kLinearEnt2d,
		kLinearEnt3d,
		kLineSeg2d,
		kLineSeg3d,
		kPlanarEnt,
		kPlane,
		kRay2d,
		kRay3d,
		kSplineEnt2d,
		kPolyline2d,
		kNurbCurve2d,
		kPolyline3d,
		kNurbCurve3d,
		kObject,
	};

	enum ExternalEntityKind {kAcisEntity= 0, kExternalEntityUndefined};

	enum PointContainment {kInside, kOutside, kOnBoundary};

	enum NurbSurfaceProperties {kOpen=0x01, kClosed=0x02, kPeriodic=0x04,
		kRational=0x08, kNoPoles=0x10, kPoleAtMin=0x20,
		kPoleAtMax=0x40, kPoleAtBoth=0x80};

	enum OffsetCrvExtType {kFillet, kChamfer, kExtend};

	enum McGeXConfig
	{
		kNotDefined = 1 << 0,
		kUnknown = 1 << 1,
		kLeftRight = 1 << 2,
		kRightLeft = 1 << 3,
		kLeftLeft = 1 << 4,
		kRightRight = 1 << 5,
		kPointLeft = 1 << 6,
		kPointRight = 1 << 7,
		kLeftOverlap = 1 << 8,
		kOverlapLeft = 1 << 9,
		kRightOverlap = 1 << 10,
		kOverlapRight = 1 << 11,
		kOverlapStart = 1 << 12,
		kOverlapEnd = 1 << 13,
		kOverlapOverlap = 1 << 14
	};

	enum BooleanType {kUnion, kSubtract, kCommon};

	enum ClipError 
	{
		eOk, 
		eInvalidClipBoundary,
		eNotInitialized
	};

	enum ClipCondition 
	{
		kInvalid, 
		kAllSegmentsInside,
		kSegmentsIntersect,
		kAllSegmentsOutsideZeroWinds,
		kAllSegmentsOutsideOddWinds,
		kAllSegmentsOutsideEvenWinds
	};

	enum ErrorCondition 
	{ 
		kOk, 
		k0This,
		k0Arg1,
		k0Arg2, 
		kPerpendicularArg1Arg2,       
		kEqualArg1Arg2, 
		kEqualArg1Arg3, 
		kEqualArg2Arg3, 
		kLinearlyDependentArg1Arg2Arg3,
		kArg1TooBig,
		kArg1OnThis,
		kArg1InsideThis
	};

	enum csiConfig { 
		kXUnknown, 
		kXOut, 					
		kXIn,					
		kXTanOut,				
		kXTanIn,				
		kXCoincident,			
		kXCoincidentUnbounded	
	};


	enum ssiType {
		kSSITransverse,	
		kSSITangent,
		kSSIAntiTangent
	};

	enum ssiConfig { 
		kSSIUnknown, 
		kSSIOut, 			
		kSSIIn,				
		kSSICoincident	    
	};

	enum McGeIntersectError {
		kXXOk,
		kXXIndexOutOfRange,
		kXXWrongDimensionAtIndex,
		kXXUnknown
	};
};
typedef McGe::ErrorCondition  McGeError;
//:End Ignore