// CodeGear C++Builder
// Copyright (c) 1995, 2014 by Embarcadero Technologies, Inc.
// All rights reserved

// (DO NOT EDIT: machine generated header) 'FMX.UXlsEscher.pas' rev: 27.00 (Windows)

#ifndef Fmx_UxlsescherHPP
#define Fmx_UxlsescherHPP

#pragma delphiheader begin
#pragma option push
#pragma option -w-      // All warnings off
#pragma option -Vx      // Zero-length empty class member 
#pragma pack(push,8)
#include <System.hpp>	// Pascal unit
#include <SysInit.hpp>	// Pascal unit
#include <FMX.UXlsBaseRecords.hpp>	// Pascal unit
#include <FMX.UXlsBaseRecordLists.hpp>	// Pascal unit
#include <FMX.UXlsOtherRecords.hpp>	// Pascal unit
#include <FMX.XlsMessages.hpp>	// Pascal unit
#include <FMX.UFlxMessages.hpp>	// Pascal unit
#include <System.Classes.hpp>	// Pascal unit
#include <System.SysUtils.hpp>	// Pascal unit
#include <FMX.UEscherRecords.hpp>	// Pascal unit
#include <FMX.UXlsSST.hpp>	// Pascal unit
#include <FMX.UBreakList.hpp>	// Pascal unit
#include <FMX.UEscherOtherRecords.hpp>	// Pascal unit
#include <FMX.UOle2Impl.hpp>	// Pascal unit

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

namespace Fmx
{
namespace Uxlsescher
{
//-- type declarations -------------------------------------------------------
class DELPHICLASS TXlsEscherRecord;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TXlsEscherRecord : public Fmx::Uxlsbaserecords::TBaseRecord
{
	typedef Fmx::Uxlsbaserecords::TBaseRecord inherited;
	
public:
	/* TBaseRecord.Create */ inline __fastcall virtual TXlsEscherRecord(const System::Word aId, const Fmx::Xlsmessages::PArrayOfByte aData, const int aDataSize) : Fmx::Uxlsbaserecords::TBaseRecord(aId, aData, aDataSize) { }
	/* TBaseRecord.Destroy */ inline __fastcall virtual ~TXlsEscherRecord(void) { }
	
};

#pragma pack(pop)

class DELPHICLASS TDrawingGroupRecord;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TDrawingGroupRecord : public TXlsEscherRecord
{
	typedef TXlsEscherRecord inherited;
	
public:
	/* TBaseRecord.Create */ inline __fastcall virtual TDrawingGroupRecord(const System::Word aId, const Fmx::Xlsmessages::PArrayOfByte aData, const int aDataSize) : TXlsEscherRecord(aId, aData, aDataSize) { }
	/* TBaseRecord.Destroy */ inline __fastcall virtual ~TDrawingGroupRecord(void) { }
	
};

#pragma pack(pop)

class DELPHICLASS TDrawingRecord;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TDrawingRecord : public TXlsEscherRecord
{
	typedef TXlsEscherRecord inherited;
	
public:
	/* TBaseRecord.Create */ inline __fastcall virtual TDrawingRecord(const System::Word aId, const Fmx::Xlsmessages::PArrayOfByte aData, const int aDataSize) : TXlsEscherRecord(aId, aData, aDataSize) { }
	/* TBaseRecord.Destroy */ inline __fastcall virtual ~TDrawingRecord(void) { }
	
};

#pragma pack(pop)

class DELPHICLASS TDrawingSelectionRecord;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TDrawingSelectionRecord : public TXlsEscherRecord
{
	typedef TXlsEscherRecord inherited;
	
public:
	/* TBaseRecord.Create */ inline __fastcall virtual TDrawingSelectionRecord(const System::Word aId, const Fmx::Xlsmessages::PArrayOfByte aData, const int aDataSize) : TXlsEscherRecord(aId, aData, aDataSize) { }
	/* TBaseRecord.Destroy */ inline __fastcall virtual ~TDrawingSelectionRecord(void) { }
	
};

#pragma pack(pop)

class DELPHICLASS TDrawingGroup;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TDrawingGroup : public System::TObject
{
	typedef System::TObject inherited;
	
private:
	Fmx::Uescherrecords::TEscherContainerRecord* FDggContainer;
	Fmx::Uescherrecords::TEscherDwgGroupCache FRecordCache;
	Fmx::Uescherrecords::PEscherDwgGroupCache __fastcall GetRecordCache(void);
	
public:
	__property Fmx::Uescherrecords::PEscherDwgGroupCache RecordCache = {read=GetRecordCache};
	__fastcall TDrawingGroup(void);
	void __fastcall Clear(void);
	__fastcall virtual ~TDrawingGroup(void);
	void __fastcall LoadFromStream(Fmx::Uole2impl::TOle2File* const DataStream, Fmx::Xlsmessages::TRecordHeader &RecordHeader, TDrawingGroupRecord* const First);
	void __fastcall SaveToStream(Fmx::Uole2impl::TOle2File* const DataStream);
	__int64 __fastcall TotalSize(void);
	void __fastcall AddDwg(void);
	void __fastcall EnsureDwgGroup(void);
};

#pragma pack(pop)

class DELPHICLASS TDrawing;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TDrawing : public System::TObject
{
	typedef System::TObject inherited;
	
private:
	Fmx::Uescherrecords::TEscherContainerRecord* FDgContainer;
	Fmx::Uescherrecords::TEscherDwgCache FRecordCache;
	TDrawingGroup* FDrawingGroup;
	System::UnicodeString __fastcall GetDrawingName(int index);
	int __fastcall GetDrawingRow(int index);
	void __fastcall CreateBasicDrawingInfo(void);
	
public:
	void __fastcall Clear(void);
	__fastcall TDrawing(TDrawingGroup* const aDrawingGroup);
	__fastcall virtual ~TDrawing(void);
	void __fastcall CopyFrom(TDrawing* const aDrawing, System::TObject* const dSheet);
	void __fastcall LoadFromStream(Fmx::Uole2impl::TOle2File* const DataStream, Fmx::Xlsmessages::TRecordHeader &RecordHeader, TDrawingRecord* const First, Fmx::Uxlssst::TSST* const SST);
	void __fastcall SaveToStream(Fmx::Uole2impl::TOle2File* const DataStream);
	__int64 __fastcall TotalSize(void);
	void __fastcall ArrangeInsertRowsAndCols(const int aRowPos, const int aRowCount, const int aColPos, const int aColCount, const Fmx::Xlsmessages::TSheetInfo &SheetInfo, System::TObject* const dSheet);
	void __fastcall ArrangeCopySheet(const Fmx::Xlsmessages::TSheetInfo &SheetInfo);
	void __fastcall InsertAndCopyRowsAndCols(const int FirstRow, const int LastRow, const int DestRow, const int RowCount, const int FirstCol, const int LastCol, const int DestCol, const int ColCount, const Fmx::Xlsmessages::TSheetInfo &SheetInfo, System::TObject* const dSheet);
	void __fastcall DeleteRows(const System::Word aRow, const System::Word aCount, const Fmx::Xlsmessages::TSheetInfo &SheetInfo, System::TObject* const dSheet);
	void __fastcall DeleteCols(const System::Word aCol, const System::Word aCount, const Fmx::Xlsmessages::TSheetInfo &SheetInfo, System::TObject* const dSheet);
	Fmx::Uescherrecords::TEscherClientDataRecord* __fastcall FindObjId(const System::Word ObjId);
	int __fastcall DrawingCount(void);
	void __fastcall AssignDrawing(const int Index, const Fmx::Uflxmessages::ByteArray Data, const Fmx::Uflxmessages::TXlsImgTypes DataType);
	Fmx::Uflxmessages::TClientAnchor __fastcall GetAnchor(const int Index);
	void __fastcall SetAnchor(const int Index, const Fmx::Uflxmessages::TClientAnchor &aAnchor, System::TObject* const sSheet);
	void __fastcall GetDrawingFromStream(const int Index, System::Classes::TStream* const Data, /* out */ Fmx::Uflxmessages::TXlsImgTypes &DataType);
	__property int DrawingRow[int index] = {read=GetDrawingRow};
	__property System::UnicodeString DrawingName[int index] = {read=GetDrawingName};
	void __fastcall DeleteImage(const int Index);
	void __fastcall ClearImage(const int Index);
	void __fastcall AddImage(Fmx::Uflxmessages::ByteArray Data, Fmx::Uflxmessages::TXlsImgTypes DataType, const Fmx::Uflxmessages::TImageProperties &Properties, const Fmx::Uflxmessages::TFlxAnchorType Anchor, System::TObject* const sSheet);
	void __fastcall RemoveAutoFilter(void);
	void __fastcall AddAutoFilter(const int Row, const int Col1, const int Col2, System::TObject* const sSheet)/* overload */;
	void __fastcall AddAutoFilter(const int Row, const int Col, System::TObject* const sSheet)/* overload */;
	Fmx::Uescherrecords::TEscherClientDataRecord* __fastcall AddNewComment(const Fmx::Uflxmessages::TImageProperties &Properties, System::TObject* const sSheet);
	void __fastcall SaveObjectCoords(System::TObject* const sSheet);
	void __fastcall RestoreObjectCoords(System::TObject* const dSheet);
};

#pragma pack(pop)

//-- var, const, procedure ---------------------------------------------------
}	/* namespace Uxlsescher */
}	/* namespace Fmx */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMX_UXLSESCHER)
using namespace Fmx::Uxlsescher;
#endif
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMX)
using namespace Fmx;
#endif
#pragma pack(pop)
#pragma option pop

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