// Borland C++ Builder
// Copyright (c) 1995, 2005 by Borland Software Corporation
// All rights reserved

// (DO NOT EDIT: machine generated header) 'Sgselection.pas' rev: 10.00

#ifndef SgselectionHPP
#define SgselectionHPP

#pragma delphiheader begin
#pragma option push
#pragma option -w-      // All warnings off
#pragma option -Vx      // Zero-length empty class member functions
#pragma pack(push,8)
#include <System.hpp>	// Pascal unit
#include <Sysinit.hpp>	// Pascal unit
#include <Graphics.hpp>	// Pascal unit
#include <Windows.hpp>	// Pascal unit
#include <Classes.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:
	#pragma pack(push,1)
	Types::TPoint FPointByEntity;
	#pragma pack(pop)
	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, Types::TPoint &APt);
	Graphics::TCanvas* __fastcall GetCanvas(void);
	void * __fastcall GetElementInMatrix(const int X, const int Y);
	Types::TPoint __fastcall GetSize();
	void __fastcall SetPrecision(const int AVal);
	void __fastcall SetSize(const Types::TPoint &APoint);
	
public:
	__fastcall TsgSelectionMatrix(void);
	__fastcall virtual ~TsgSelectionMatrix(void);
	void __fastcall AddElement(const void * AVal);
	void __fastcall ClearFull(void);
	void __fastcall ClearRect(const Types::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 Types::TPoint PointByEntity = {read=FPointByEntity};
	__property int Precision = {read=FPrecision, write=SetPrecision, nodefault};
	__property TsgSearchMode SearchMode = {read=FSearchMode, write=FSearchMode, nodefault};
	__property Types::TPoint Size = {read=GetSize, write=SetSize};
};


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

}	/* namespace Sgselection */
using namespace Sgselection;
#pragma pack(pop)
#pragma option pop

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