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

// (DO NOT EDIT: machine generated header) 'sgOrbit3D.pas' rev: 4.00

#ifndef sgOrbit3DHPP
#define sgOrbit3DHPP

#pragma delphiheader begin
#pragma option push -w-
#include <DXFImage.hpp>	// Pascal unit
#include <Messages.hpp>	// Pascal unit
#include <Graphics.hpp>	// Pascal unit
#include <Controls.hpp>	// Pascal unit
#include <Forms.hpp>	// Pascal unit
#include <Classes.hpp>	// Pascal unit
#include <SysUtils.hpp>	// Pascal unit
#include <Windows.hpp>	// Pascal unit
#include <SysInit.hpp>	// Pascal unit
#include <System.hpp>	// Pascal unit

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

namespace Sgorbit3d
{
//-- type declarations -------------------------------------------------------
typedef Windows::TPoint TsgTwoPoints[2];

#pragma option push -b-
enum Tsg3DStates { stateX, stateY, stateZ, stateXY };
#pragma option pop

class DELPHICLASS TsgOrbit3D;
#pragma pack(push, 4)
class PASCALIMPLEMENTATION TsgOrbit3D : public Controls::TGraphicControl 
{
	typedef Controls::TGraphicControl inherited;
	
private:
	int FBigRadius;
	Controls::TControl* FDrawing;
	Dxfimage::TsgDXFImage* FCADImage;
	Tsg3DStates FCurrentState;
	bool FIsMouseDown;
	Windows::TPoint FMouseCoords;
	Windows::TPoint FPtCenter;
	Windows::TPoint FPtHoriz[2];
	Windows::TPoint FPtVert[2];
	int FSmallRadius;
	Controls::TMouseMoveEvent FOnMouseMove;
	void __fastcall SetCADImage(const Dxfimage::TsgDXFImage* Value);
	void __fastcall SetCursorState(const int X, const int Y);
	void __fastcall SetPtCenter(const Windows::TPoint &Value);
	Windows::TPoint __fastcall GetPtCenter(void);
	
protected:
	DYNAMIC void __fastcall MouseDown(Controls::TMouseButton Button, Classes::TShiftState Shift, int X, 
		int Y);
	DYNAMIC void __fastcall MouseMove(Classes::TShiftState Shift, int X, int Y);
	DYNAMIC void __fastcall MouseUp(Controls::TMouseButton Button, Classes::TShiftState Shift, int X, int 
		Y);
	virtual void __fastcall SetParent(Controls::TWinControl* AParent);
	void __fastcall SetDrawing(Controls::TControl* ADrawing);
	DYNAMIC void __fastcall VisibleChanging(void);
	
public:
	__fastcall virtual TsgOrbit3D(Classes::TComponent* AOwner);
	__fastcall virtual ~TsgOrbit3D(void);
	virtual void __fastcall Paint(void);
	__property Windows::TPoint PtCenter = {read=GetPtCenter, write=SetPtCenter};
	
__published:
	__property int BigRadius = {read=FBigRadius, nodefault};
	__property Controls::TControl* Drawing = {read=FDrawing, write=SetDrawing};
	__property Dxfimage::TsgDXFImage* CADImage = {read=FCADImage, write=SetCADImage};
	__property int SmallRadius = {read=FSmallRadius, nodefault};
	__property Controls::TMouseMoveEvent OnMouseMove = {read=FOnMouseMove, write=FOnMouseMove};
};

#pragma pack(pop)

//-- var, const, procedure ---------------------------------------------------

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

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