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

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

#ifndef SurfaceHPP
#define SurfaceHPP

#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 <Messages.hpp>	// Pascal unit
#include <Types.hpp>	// Pascal unit
#include <Classes.hpp>	// Pascal unit
#include <Windows.hpp>	// Pascal unit
#include <Controls.hpp>	// Pascal unit
#include <Designintf.hpp>	// Pascal unit
#include <Designer.hpp>	// Pascal unit
#include <Componentdesigner.hpp>	// Pascal unit
#include <Sysutils.hpp>	// Pascal unit
#include <Libhelp.hpp>	// Pascal unit

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

namespace Surface
{
//-- type declarations -------------------------------------------------------
class DELPHICLASS TDesignSurface;
class PASCALIMPLEMENTATION TDesignSurface : public System::TInterfacedObject 
{
	typedef System::TInterfacedObject inherited;
	
private:
	Designer::_di_IDesignSurfaceListener FListener;
	Classes::TComponent* FRoot;
	Designer::_di_IItem FRootItem;
	Designer::_di_IItem FContainerItem;
	Designer::_di_IGrabHandles FGrabHandles;
	Designintf::_di_IDesigner FDesigner;
	Componentdesigner::_di_ISurfaceHost FHost;
	Classes::TList* FContainers;
	#pragma pack(push,1)
	Types::TPoint FGridSize;
	#pragma pack(pop)
	bool FDisplayGrid;
	bool FShowCaptions;
	bool FShowNonVisualComponents;
	bool FInitializing;
	Designer::_di_IGuidelinePainter FGuidelinePainter;
	
protected:
	virtual Designer::_di_IItem __fastcall ItemFor(Classes::TPersistent* AInstance) = 0 ;
	virtual void __fastcall MoveContainersFront(void) = 0 ;
	virtual void __fastcall ResyncContainers(void) = 0 ;
	virtual void __fastcall Update(void) = 0 ;
	virtual void __fastcall InstanceInserted(Classes::TPersistent* AInstance);
	virtual void __fastcall InstanceRemoved(Classes::TPersistent* AInstance);
	virtual Classes::TShiftState __fastcall GetShiftState(void) = 0 ;
	virtual void __fastcall FlipContainers(void) = 0 ;
	virtual void __fastcall SetOptions(const Componentdesigner::TDesignSurfaceOptions &Value) = 0 ;
	void __fastcall SetInitializing(bool Value);
	void __fastcall AddListener(const Designer::_di_IDesignSurfaceListener Listener);
	virtual Designer::_di_IDragBoxes __fastcall BeginDragging(const Designer::_di_IItem Parent, const Types::TPoint &Anchor) = 0 ;
	virtual void __fastcall Close(void);
	Designer::_di_IItem __fastcall CreateItem(const Designer::_di_IItem Parent, const Types::TRect &Rect);
	virtual Types::TPoint __fastcall CursorPosition(void) = 0 ;
	virtual void __fastcall DeleteSelection(void);
	virtual Types::TPoint __fastcall DesignerToGlobal(const Types::TPoint &Point) = 0 ;
	void __fastcall DestroyItem(const Designer::_di_IItem Item);
	virtual Designer::_di_IItem __fastcall FindNextItem(const Designer::_di_IItem Item, bool GoForward) = 0 ;
	virtual void __fastcall Focus(void) = 0 ;
	Designer::_di_IGrabHandles __fastcall GetGrabHandles();
	Designer::_di_IGuidelinePainter __fastcall GetGuidelinePainter();
	Designer::_di_IItem __fastcall GetItems(int Index);
	int __fastcall GetItemsCount(void);
	virtual Types::TPoint __fastcall GetOffset(void) = 0 ;
	Designer::_di_IItem __fastcall GetRoot();
	Designer::_di_IItem __fastcall GetContainerItem();
	virtual Types::TPoint __fastcall GlobalToDesigner(const Types::TPoint &Point) = 0 ;
	bool __fastcall GridSnapDisabled(void);
	void __fastcall RemoveListener(const Designer::_di_IDesignSurfaceListener Listener);
	virtual void __fastcall UpdateSelection(void) = 0 ;
	void __fastcall ValidateModification(void);
	virtual void __fastcall Modified(void);
	virtual bool __fastcall ItemInSelections(const Designer::_di_ISelections ASelections, const Designer::_di_IItem AItem);
	virtual void __fastcall Notification(Classes::TPersistent* Instance, Classes::TOperation Operation) = 0 ;
	void __fastcall AlignToGrid(System::TObject* Sender);
	void __fastcall AppAlignDialog(System::TObject* Sender);
	void __fastcall AppCreationOrderDialog(System::TObject* Sender);
	void __fastcall AppFlipChildrenAll(System::TObject* Sender);
	void __fastcall AppFlipChildrenSelected(System::TObject* Sender);
	void __fastcall AppSaveTemplateDialog(System::TObject* Sender);
	void __fastcall AppScaleDialog(System::TObject* Sender);
	void __fastcall AppSizeDialog(System::TObject* Sender);
	void __fastcall AppTabOrderDialog(System::TObject* Sender);
	void __fastcall AppTextDFM(System::TObject* Sender);
	void __fastcall AppViewAsText(System::TObject* Sender);
	Classes::TComponent* __fastcall GetDesignRoot(void);
	bool __fastcall GetIsControl(void);
	void __fastcall RevertComponent(System::TObject* Sender);
	void __fastcall SelectionVerb(System::TObject* Sender);
	void __fastcall SetIsControl(bool Value);
	virtual Designer::_di_IItem __fastcall ItemAt(const int X, const int Y) = 0 ;
	virtual void __fastcall ValidateRename(Classes::TComponent* AComponent, const AnsiString CurName, const AnsiString NewName) = 0 ;
	AnsiString __fastcall UniqueName(const AnsiString BaseName);
	__property bool Initializing = {read=FInitializing, nodefault};
	
public:
	__fastcall virtual ~TDesignSurface(void);
	__property Designer::_di_IDesignSurfaceListener Listener = {read=FListener, write=FListener};
	__property Classes::TComponent* Root = {read=FRoot, write=FRoot};
	__property Designer::_di_IItem RootItem = {read=FRootItem, write=FRootItem};
	__property Designer::_di_IItem ContainerItem = {read=FContainerItem, write=FContainerItem};
	__property Designer::_di_IGrabHandles GrabHandles = {read=GetGrabHandles, write=FGrabHandles};
	__property Designer::_di_IGuidelinePainter GuidelinePainter = {read=GetGuidelinePainter, write=FGuidelinePainter};
	__property Designintf::_di_IDesigner Designer = {read=FDesigner, write=FDesigner};
	__property Componentdesigner::_di_ISurfaceHost Host = {read=FHost, write=FHost};
	__property Classes::TList* Containers = {read=FContainers, write=FContainers};
	__property Types::TPoint GridSize = {read=FGridSize, write=FGridSize};
	__property bool DisplayGrid = {read=FDisplayGrid, write=FDisplayGrid, nodefault};
	__property bool ShowCaptions = {read=FShowCaptions, write=FShowCaptions, nodefault};
	__property bool ShowNonVisualComponents = {read=FShowNonVisualComponents, write=FShowNonVisualComponents, nodefault};
public:
	#pragma option push -w-inl
	/* TObject.Create */ inline __fastcall TDesignSurface(void) : System::TInterfacedObject() { }
	#pragma option pop
	
private:
	void *__IDesignSurface;	/* Designer::IDesignSurface */
	void *__IDesignerNotify;	/* Classes::IDesignerNotify */
	void *__IDesigner;	/* Designintf::IDesigner */
	
public:
	operator IDesigner*(void) { return (IDesigner*)&__IDesigner; }
	operator IDesignerNotify*(void) { return (IDesignerNotify*)&__IDesignerNotify; }
	operator IDesignSurface*(void) { return (IDesignSurface*)&__IDesignSurface; }
	
};


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

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

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