// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++

// NOTE: Do not modify the contents of this file.  If this class is regenerated by
//  Microsoft Visual C++, your modifications will be overwritten.


#include "stdafx.h"
#include "shape.h"

// Dispatch interfaces referenced by this interface
#include "Point.h"
#include "callback.h"
#include "Extents.h"


/////////////////////////////////////////////////////////////////////////////
// CShape properties

/////////////////////////////////////////////////////////////////////////////
// CShape operations

long CShape::GetNumPoints()
{
	long result;
	InvokeHelper(0x1, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
	return result;
}

long CShape::GetNumParts()
{
	long result;
	InvokeHelper(0x2, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
	return result;
}

long CShape::GetShapeType()
{
	long result;
	InvokeHelper(0x3, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
	return result;
}

void CShape::SetShapeType(long nNewValue)
{
	static BYTE parms[] =
		VTS_I4;
	InvokeHelper(0x3, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
		 nNewValue);
}

CPoint1 CShape::GetPoint(long PointIndex)
{
	LPDISPATCH pDispatch;
	static BYTE parms[] =
		VTS_I4;
	InvokeHelper(0x4, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, parms,
		PointIndex);
	return CPoint1(pDispatch);
}

void CShape::SetPoint(long PointIndex, LPDISPATCH newValue)
{
	static BYTE parms[] =
		VTS_I4 VTS_DISPATCH;
	InvokeHelper(0x4, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
		 PointIndex, newValue);
}

long CShape::GetPart(long PartIndex)
{
	long result;
	static BYTE parms[] =
		VTS_I4;
	InvokeHelper(0x5, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, parms,
		PartIndex);
	return result;
}

void CShape::SetPart(long PartIndex, long nNewValue)
{
	static BYTE parms[] =
		VTS_I4 VTS_I4;
	InvokeHelper(0x5, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
		 PartIndex, nNewValue);
}

long CShape::GetLastErrorCode()
{
	long result;
	InvokeHelper(0x6, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
	return result;
}

CString CShape::GetErrorMsg(long ErrorCode)
{
	CString result;
	static BYTE parms[] =
		VTS_I4;
	InvokeHelper(0x7, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, parms,
		ErrorCode);
	return result;
}

CCallback CShape::GetGlobalCallback()
{
	LPDISPATCH pDispatch;
	InvokeHelper(0x8, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, NULL);
	return CCallback(pDispatch);
}

void CShape::SetGlobalCallback(LPDISPATCH newValue)
{
	static BYTE parms[] =
		VTS_DISPATCH;
	InvokeHelper(0x8, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
		 newValue);
}

CString CShape::GetKey()
{
	CString result;
	InvokeHelper(0x9, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
	return result;
}

void CShape::SetKey(LPCTSTR lpszNewValue)
{
	static BYTE parms[] =
		VTS_BSTR;
	InvokeHelper(0x9, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
		 lpszNewValue);
}

BOOL CShape::Create(long ShpType)
{
	BOOL result;
	static BYTE parms[] =
		VTS_I4;
	InvokeHelper(0xa, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
		ShpType);
	return result;
}

BOOL CShape::InsertPoint(LPDISPATCH NewPoint, long* PointIndex)
{
	BOOL result;
	static BYTE parms[] =
		VTS_DISPATCH VTS_PI4;
	InvokeHelper(0xb, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
		NewPoint, PointIndex);
	return result;
}

BOOL CShape::DeletePoint(long PointIndex)
{
	BOOL result;
	static BYTE parms[] =
		VTS_I4;
	InvokeHelper(0xc, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
		PointIndex);
	return result;
}

BOOL CShape::InsertPart(long PointIndex, long* PartIndex)
{
	BOOL result;
	static BYTE parms[] =
		VTS_I4 VTS_PI4;
	InvokeHelper(0xd, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
		PointIndex, PartIndex);
	return result;
}

BOOL CShape::DeletePart(long PartIndex)
{
	BOOL result;
	static BYTE parms[] =
		VTS_I4;
	InvokeHelper(0xe, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
		PartIndex);
	return result;
}

CExtents CShape::GetExtents()
{
	LPDISPATCH pDispatch;
	InvokeHelper(0xf, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, NULL);
	return CExtents(pDispatch);
}

CString CShape::SerializeToString()
{
	CString result;
	InvokeHelper(0x10, DISPATCH_METHOD, VT_BSTR, (void*)&result, NULL);
	return result;
}

BOOL CShape::CreateFromString(LPCTSTR Serialized)
{
	BOOL result;
	static BYTE parms[] =
		VTS_BSTR;
	InvokeHelper(0x11, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
		Serialized);
	return result;
}

BOOL CShape::PointInThisPoly(LPDISPATCH pt)
{
	BOOL result;
	static BYTE parms[] =
		VTS_DISPATCH;
	InvokeHelper(0x12, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
		pt);
	return result;
}

CPoint1 CShape::GetCentroid()
{
	LPDISPATCH pDispatch;
	InvokeHelper(0x13, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, NULL);
	return CPoint1(pDispatch);
}

double CShape::GetLength()
{
	double result;
	InvokeHelper(0x18, DISPATCH_PROPERTYGET, VT_R8, (void*)&result, NULL);
	return result;
}

double CShape::GetPerimeter()
{
	double result;
	InvokeHelper(0x19, DISPATCH_PROPERTYGET, VT_R8, (void*)&result, NULL);
	return result;
}

double CShape::GetArea()
{
	double result;
	InvokeHelper(0x1a, DISPATCH_PROPERTYGET, VT_R8, (void*)&result, NULL);
	return result;
}

BOOL CShape::Relates(LPDISPATCH Shape, long Relation)
{
	BOOL result;
	static BYTE parms[] =
		VTS_DISPATCH VTS_I4;
	InvokeHelper(0x14, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
		Shape, Relation);
	return result;
}

double CShape::Distance(LPDISPATCH Shape)
{
	double result;
	static BYTE parms[] =
		VTS_DISPATCH;
	InvokeHelper(0x15, DISPATCH_METHOD, VT_R8, (void*)&result, parms,
		Shape);
	return result;
}

CShape CShape::Buffer(double Distance, long nQuadSegments)
{
	LPDISPATCH pDispatch;
	static BYTE parms[] =
		VTS_R8 VTS_I4;
	InvokeHelper(0x16, DISPATCH_METHOD, VT_DISPATCH, (void*)&pDispatch, parms,
		Distance, nQuadSegments);
	return CShape(pDispatch);
}

CShape CShape::Clip(LPDISPATCH Shape, long Operation)
{
	LPDISPATCH pDispatch;
	static BYTE parms[] =
		VTS_DISPATCH VTS_I4;
	InvokeHelper(0x17, DISPATCH_METHOD, VT_DISPATCH, (void*)&pDispatch, parms,
		Shape, Operation);
	return CShape(pDispatch);
}

BOOL CShape::Contains(LPDISPATCH Shape)
{
	BOOL result;
	static BYTE parms[] =
		VTS_DISPATCH;
	InvokeHelper(0x1b, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
		Shape);
	return result;
}

BOOL CShape::Crosses(LPDISPATCH Shape)
{
	BOOL result;
	static BYTE parms[] =
		VTS_DISPATCH;
	InvokeHelper(0x1c, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
		Shape);
	return result;
}

BOOL CShape::Disjoint(LPDISPATCH Shape)
{
	BOOL result;
	static BYTE parms[] =
		VTS_DISPATCH;
	InvokeHelper(0x1d, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
		Shape);
	return result;
}

BOOL CShape::Equals(LPDISPATCH Shape)
{
	BOOL result;
	static BYTE parms[] =
		VTS_DISPATCH;
	InvokeHelper(0x1e, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
		Shape);
	return result;
}

BOOL CShape::Intersects(LPDISPATCH Shape)
{
	BOOL result;
	static BYTE parms[] =
		VTS_DISPATCH;
	InvokeHelper(0x1f, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
		Shape);
	return result;
}

BOOL CShape::Overlaps(LPDISPATCH Shape)
{
	BOOL result;
	static BYTE parms[] =
		VTS_DISPATCH;
	InvokeHelper(0x20, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
		Shape);
	return result;
}

BOOL CShape::Touches(LPDISPATCH Shape)
{
	BOOL result;
	static BYTE parms[] =
		VTS_DISPATCH;
	InvokeHelper(0x21, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
		Shape);
	return result;
}

BOOL CShape::Within(LPDISPATCH Shape)
{
	BOOL result;
	static BYTE parms[] =
		VTS_DISPATCH;
	InvokeHelper(0x22, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
		Shape);
	return result;
}

CShape CShape::Boundry()
{
	LPDISPATCH pDispatch;
	InvokeHelper(0x23, DISPATCH_METHOD, VT_DISPATCH, (void*)&pDispatch, NULL);
	return CShape(pDispatch);
}

CShape CShape::ConvexHull()
{
	LPDISPATCH pDispatch;
	InvokeHelper(0x24, DISPATCH_METHOD, VT_DISPATCH, (void*)&pDispatch, NULL);
	return CShape(pDispatch);
}

BOOL CShape::GetIsValid()
{
	BOOL result;
	InvokeHelper(0x25, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
	return result;
}

BOOL CShape::GetXy(long PointIndex, double* x, double* y)
{
	BOOL result;
	static BYTE parms[] =
		VTS_I4 VTS_PR8 VTS_PR8;
	InvokeHelper(0x26, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, parms,
		PointIndex, x, y);
	return result;
}

BOOL CShape::GetPartIsClockWise(long PartIndex)
{
	BOOL result;
	static BYTE parms[] =
		VTS_I4;
	InvokeHelper(0x27, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, parms,
		PartIndex);
	return result;
}

BOOL CShape::ReversePointsOrder(long PartIndex)
{
	BOOL result;
	static BYTE parms[] =
		VTS_I4;
	InvokeHelper(0x28, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
		PartIndex);
	return result;
}

BOOL CShape::GetIntersection(LPDISPATCH Shape, VARIANT* Results)
{
	BOOL result;
	static BYTE parms[] =
		VTS_DISPATCH VTS_PVARIANT;
	InvokeHelper(0x29, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
		Shape, Results);
	return result;
}

CPoint1 CShape::GetCenter()
{
	LPDISPATCH pDispatch;
	InvokeHelper(0x2a, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, NULL);
	return CPoint1(pDispatch);
}

long CShape::GetEndOfPart(long PartIndex)
{
	long result;
	static BYTE parms[] =
		VTS_I4;
	InvokeHelper(0x2b, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, parms,
		PartIndex);
	return result;
}

CShape CShape::GetPartAsShape(long PartIndex)
{
	LPDISPATCH pDispatch;
	static BYTE parms[] =
		VTS_I4;
	InvokeHelper(0x2c, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, parms,
		PartIndex);
	return CShape(pDispatch);
}

CString CShape::GetIsValidReason()
{
	CString result;
	InvokeHelper(0x2d, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
	return result;
}

CPoint1 CShape::GetInteriorPoint()
{
	LPDISPATCH pDispatch;
	InvokeHelper(0x2e, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, NULL);
	return CPoint1(pDispatch);
}

CShape CShape::Clone()
{
	LPDISPATCH pDispatch;
	InvokeHelper(0x2f, DISPATCH_METHOD, VT_DISPATCH, (void*)&pDispatch, NULL);
	return CShape(pDispatch);
}

BOOL CShape::Explode(VARIANT* Results)
{
	BOOL result;
	static BYTE parms[] =
		VTS_PVARIANT;
	InvokeHelper(0x30, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
		Results);
	return result;
}

BOOL CShape::put_XY(long PointIndex, double x, double y)
{
	BOOL result;
	static BYTE parms[] =
		VTS_I4 VTS_R8 VTS_R8;
	InvokeHelper(0x31, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
		PointIndex, x, y);
	return result;
}

BOOL CShape::ExportToBinary(VARIANT* bytesArray)
{
	BOOL result;
	static BYTE parms[] =
		VTS_PVARIANT;
	InvokeHelper(0x32, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
		bytesArray);
	return result;
}

BOOL CShape::ImportFromBinary(const VARIANT& bytesArray)
{
	BOOL result;
	static BYTE parms[] =
		VTS_VARIANT;
	InvokeHelper(0x33, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
		&bytesArray);
	return result;
}

void CShape::FixUp(LPDISPATCH* retval)
{
	static BYTE parms[] =
		VTS_PDISPATCH;
	InvokeHelper(0x34, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
		 retval);
}