// Borland C++ Builder
// Copyright (c) 1995, 1999 by Borland International
// All rights reserved

// (DO NOT EDIT: machine generated header) 'sgSelection.pas' rev: 5.00

#ifndef sgSelectionHPP
#define sgSelectionHPP

#pragma delphiheader begin
#pragma option push -w-
#pragma option push -Vx
#include <Classes.hpp>	// Pascal unit
#include <Windows.hpp>	// Pascal unit
#include <Graphics.hpp>	// Pascal unit
#include <SysInit.hpp>	// Pascal unit
#include <System.hpp>	// Pascal unit

//-- user supplied -----------------------------------------------------------

namespace Sgselection
{
//-- type declarations -------------------------------------------------------
#pragma option push -b-
enum TsgSelectionMode { smDisabled, smEnabled, smMatrixOnly };
#pragma option pop

#pragma option push -b-
enum TsgSearchMode { smPoint, smSnail, smFillability };
#pragma option pop

class DELPHICLASS TsgSelectionMatrix;
class PASCALIMPLEMENTATION TsgSelectionMatrix : public System::TObject 
{
	typedef System::TObject inherited;
	
private:
	Windows::TPoint FPointByEntity;
	int FPrecision;
	Graphics::TBitmap* FBitMap;
	TsgSearchMode FSearchMode;
	Classes::TList* FListOfElements;
	int __fastcall FindElementOfFillabilityMode(const int X, const int Y);
	int __fastcall FindElementOfSnailMode(const int X, const int Y);
	bool __fastcall FindPointOfIndexInSnailMode(const int X, const int Y, const int AIndex, Windows::TPoint 
		&APt);
	Graphics::TCanvas* __fastcall GetCanvas(void);
	void * __fastcall GetElementInMatrix(const int X, const int Y);
	Windows::TPoint __fastcall GetSize(void);
	void __fastcall SetPrecision(const int AVal);
	void __fastcall SetSize(const Windows::TPoint &APoint);
	
public:
	__fastcall TsgSelectionMatrix(void);
	__fastcall virtual ~TsgSelectionMatrix(void);
	void __fastcall AddElement(const void * AVal);
	void __fastcall ClearFull(void);
	void __fastcall ClearRect(const Windows::TRect &ARect);
	void __fastcall GetElements(const int X, const int Y, const Classes::TList* AList, const bool AUniq
		);
	__property Graphics::TCanvas* Canvas = {read=GetCanvas};
	__property void * Matrix[int X][int Y] = {read=GetElementInMatrix};
	__property Windows::TPoint PointByEntity = {read=FPointByEntity};
	__property int Precision = {read=FPrecision, write=SetPrecision, nodefault};
	__property TsgSearchMode SearchMode = {read=FSearchMode, write=FSearchMode, nodefault};
	__property Windows::TPoint Size = {read=GetSize, write=SetSize};
};


//-- var, const, procedure ---------------------------------------------------
extern PACKAGE TsgSelectionMatrix* SelectionMatrix;

}	/* namespace Sgselection */
#if !defined(NO_IMPLICIT_NAMESPACE_USE)
using namespace Sgselection;
#endif
#pragma option pop	// -w-
#pragma option pop	// -Vx

#pragma delphiheader end.
//-- end unit ----------------------------------------------------------------
#endif	// sgSelection
