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

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

#ifndef Fmx_TmsscopeHPP
#define Fmx_TmsscopeHPP

#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.Types.hpp>	// Pascal unit
#include <FMX.Objects.hpp>	// Pascal unit
#include <System.Classes.hpp>	// Pascal unit
#include <System.Types.hpp>	// Pascal unit
#include <System.SysUtils.hpp>	// Pascal unit
#include <System.UITypes.hpp>	// Pascal unit
#include <System.Math.hpp>	// Pascal unit
#include <FMX.TMSBaseControl.hpp>	// Pascal unit
#include <System.UIConsts.hpp>	// Pascal unit
#include <FMX.Styles.hpp>	// Pascal unit
#include <FMX.Graphics.hpp>	// Pascal unit
#include <FMX.Controls.hpp>	// Pascal unit

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

namespace Fmx
{
namespace Tmsscope
{
//-- type declarations -------------------------------------------------------
enum DECLSPEC_DENUM TTMSFMXGraphStyle : unsigned char { gsLine, gsBar };

enum DECLSPEC_DENUM TTMSFMXScrollDirection : unsigned char { sdRightToLeft, sdLeftToRight };

typedef void __fastcall (__closure *TTMSFMXDrawDivisionLine)(System::TObject* Sender, int ADivision, float AValue, System::Uitypes::TAlphaColor &LineColor);

typedef void __fastcall (__closure *TTMSFMXDrawDivisionText)(System::TObject* Sender, int ADivision, float AValue, Fmx::Graphics::TFont* ATextFont, System::Uitypes::TAlphaColor &ATextColor, System::UnicodeString &AText);

typedef void __fastcall (__closure *TTMSFMXDrawSubDivisionLine)(System::TObject* Sender, int ADivision, int ASubDivision, float AValue, System::Uitypes::TAlphaColor &LineColor);

typedef void __fastcall (__closure *TTMSFMXDrawSubDivisionText)(System::TObject* Sender, int ADivision, int ASubDivision, float AValue, Fmx::Graphics::TFont* ATextFont, System::Uitypes::TAlphaColor &ATextColor, System::UnicodeString &AText);

typedef System::DynamicArray<float> TSerieArray;

class DELPHICLASS TTMSFMXChannel;
class DELPHICLASS TTMSFMXScope;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TTMSFMXChannel : public System::Classes::TCollectionItem
{
	typedef System::Classes::TCollectionItem inherited;
	
private:
	TTMSFMXScope* FOwner;
	System::Uitypes::TAlphaColor FColor;
	int FWidth;
	TTMSFMXGraphStyle FStyle;
	TSerieArray FSerie;
	bool FVisible;
	System::UnicodeString FValueFormat;
	bool FShowValue;
	Fmx::Graphics::TFont* FFont;
	void __fastcall SetColor(System::Uitypes::TAlphaColor Value);
	void __fastcall SetWidth(int Value);
	void __fastcall SetStyle(TTMSFMXGraphStyle Value);
	void __fastcall SetVisible(const bool Value);
	void __fastcall SetShowValue(const bool Value);
	void __fastcall SetValueFormat(const System::UnicodeString Value);
	void __fastcall SetFont(Fmx::Graphics::TFont* const Value);
	
protected:
	void __fastcall AddValue(float Value);
	__property TSerieArray Serie = {read=FSerie, write=FSerie};
	
public:
	__fastcall virtual TTMSFMXChannel(System::Classes::TCollection* Collection);
	__fastcall virtual ~TTMSFMXChannel(void);
	
__published:
	__property System::Uitypes::TAlphaColor Color = {read=FColor, write=SetColor, default=-256};
	__property int Width = {read=FWidth, write=SetWidth, default=1};
	__property TTMSFMXGraphStyle Style = {read=FStyle, write=SetStyle, default=0};
	__property bool Visible = {read=FVisible, write=SetVisible, default=1};
	__property bool ShowValue = {read=FShowValue, write=SetShowValue, default=0};
	__property System::UnicodeString ValueFormat = {read=FValueFormat, write=SetValueFormat};
	__property Fmx::Graphics::TFont* Font = {read=FFont, write=SetFont};
};

#pragma pack(pop)

class DELPHICLASS TTMSFMXChannels;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TTMSFMXChannels : public Fmx::Tmsbasecontrol::TTMSFMXBaseCollection
{
	typedef Fmx::Tmsbasecontrol::TTMSFMXBaseCollection inherited;
	
public:
	TTMSFMXChannel* operator[](int Index) { return Items[Index]; }
	
private:
	TTMSFMXScope* FScope;
	HIDESBASE TTMSFMXChannel* __fastcall GetItem(int Index);
	HIDESBASE void __fastcall SetItem(int Index, TTMSFMXChannel* Value);
	
protected:
	DYNAMIC System::Classes::TPersistent* __fastcall GetOwner(void);
	virtual void __fastcall Update(System::Classes::TCollectionItem* Item);
	
public:
	__fastcall TTMSFMXChannels(TTMSFMXScope* Scope2);
	HIDESBASE TTMSFMXChannel* __fastcall Add(void);
	__property TTMSFMXChannel* Items[int Index] = {read=GetItem, write=SetItem/*, default*/};
public:
	/* TCollection.Destroy */ inline __fastcall virtual ~TTMSFMXChannels(void) { }
	
};

#pragma pack(pop)

typedef void __fastcall (__closure *TTMSFMXNeedDataEvent)(System::TObject* Sender, int Channel, float &Value);

enum DECLSPEC_DENUM TTMSFMXYAxisPosition : unsigned char { ypLeft, ypRight };

enum DECLSPEC_DENUM TTMSFMXFormatType : unsigned char { ftFloat, ftNormal };

class DELPHICLASS TTMSFMXYAxis;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TTMSFMXYAxis : public System::Classes::TPersistent
{
	typedef System::Classes::TPersistent inherited;
	
private:
	TTMSFMXScope* FOwner;
	Fmx::Graphics::TFont* FFont;
	bool FVisible;
	TTMSFMXYAxisPosition FPosition;
	TTMSFMXFormatType FFormatType;
	System::UnicodeString FFormat;
	float FSize;
	int FDivisions;
	int FSubDivisions;
	bool FShowSubDivisions;
	bool FShowSubDivisionText;
	bool FShowDivisions;
	bool FShowDivisionText;
	float FSubDivisionSize;
	float FDivisionSize;
	System::Uitypes::TAlphaColor FSubDivisionColor;
	Fmx::Graphics::TFont* FSubDivisionFont;
	System::Uitypes::TAlphaColor FDivisionColor;
	Fmx::Graphics::TFont* FDivisionFont;
	System::Uitypes::TAlphaColor FSubDivisionTextColor;
	System::Uitypes::TAlphaColor FDivisionTextColor;
	void __fastcall SetDivisionFont(Fmx::Graphics::TFont* const Value);
	void __fastcall SetPosition(const TTMSFMXYAxisPosition Value);
	void __fastcall SetVisible(const bool Value);
	void __fastcall SetFormat(const System::UnicodeString Value);
	void __fastcall SetFormatType(const TTMSFMXFormatType Value);
	void __fastcall SetSize(const float Value);
	void __fastcall SetDivisions(const int Value);
	void __fastcall SetShowDivisions(const bool Value);
	void __fastcall SetShowDivisionText(const bool Value);
	void __fastcall SetShowSubDivisions(const bool Value);
	void __fastcall SetShowSubDivisionText(const bool Value);
	void __fastcall SetSubDivisions(const int Value);
	void __fastcall SetDivisionColor(const System::Uitypes::TAlphaColor Value);
	void __fastcall SetDivisionSize(const float Value);
	void __fastcall SetSubDivisionColor(const System::Uitypes::TAlphaColor Value);
	void __fastcall SetSubDivisionFont(Fmx::Graphics::TFont* const Value);
	void __fastcall SetSubDivisionSize(const float Value);
	void __fastcall SetDivisionTextColor(const System::Uitypes::TAlphaColor Value);
	void __fastcall SetSubDivisionTextColor(const System::Uitypes::TAlphaColor Value);
	
public:
	__fastcall TTMSFMXYAxis(TTMSFMXScope* AOwner);
	__fastcall virtual ~TTMSFMXYAxis(void);
	
__published:
	__property System::Uitypes::TAlphaColor DivisionColor = {read=FDivisionColor, write=SetDivisionColor, default=-16711936};
	__property System::Uitypes::TAlphaColor SubDivisionColor = {read=FSubDivisionColor, write=SetSubDivisionColor, default=-16744448};
	__property float DivisionSize = {read=FDivisionSize, write=SetDivisionSize};
	__property float SubDivisionSize = {read=FSubDivisionSize, write=SetSubDivisionSize};
	__property bool Visible = {read=FVisible, write=SetVisible, default=1};
	__property TTMSFMXYAxisPosition Position = {read=FPosition, write=SetPosition, default=0};
	__property Fmx::Graphics::TFont* DivisionFont = {read=FDivisionFont, write=SetDivisionFont};
	__property Fmx::Graphics::TFont* SubDivisionFont = {read=FSubDivisionFont, write=SetSubDivisionFont};
	__property System::Uitypes::TAlphaColor DivisionTextColor = {read=FDivisionTextColor, write=SetDivisionTextColor, default=-16711936};
	__property System::Uitypes::TAlphaColor SubDivisionTextColor = {read=FSubDivisionTextColor, write=SetSubDivisionTextColor, default=-16744448};
	__property System::UnicodeString Format = {read=FFormat, write=SetFormat};
	__property TTMSFMXFormatType FormatType = {read=FFormatType, write=SetFormatType, default=1};
	__property float Size = {read=FSize, write=SetSize};
	__property int Divisions = {read=FDivisions, write=SetDivisions, default=5};
	__property int SubDivisions = {read=FSubDivisions, write=SetSubDivisions, default=3};
	__property bool ShowDivisions = {read=FShowDivisions, write=SetShowDivisions, default=1};
	__property bool ShowSubDivisions = {read=FShowSubDivisions, write=SetShowSubDivisions, default=1};
	__property bool ShowDivisionText = {read=FShowDivisionText, write=SetShowDivisionText, default=1};
	__property bool ShowSubDivisionText = {read=FShowSubDivisionText, write=SetShowSubDivisionText, default=0};
};

#pragma pack(pop)

class PASCALIMPLEMENTATION TTMSFMXScope : public Fmx::Tmsbasecontrol::TTMSFMXBaseControl
{
	typedef Fmx::Tmsbasecontrol::TTMSFMXBaseControl inherited;
	
private:
	float FMinValue;
	float FMaxValue;
	bool FActive;
	bool FAnimateGrid;
	float FGridOffset;
	float FGridExtraOffset;
	System::Uitypes::TAlphaColor FBaseColor;
	Fmx::Types::TTimer* FTimer;
	TTMSFMXChannels* FChannels;
	int FGridLineWidth;
	System::Uitypes::TAlphaColor FGridColor;
	float FFrequency;
	TTMSFMXNeedDataEvent FOnNeedData;
	TTMSFMXScrollDirection FDirection;
	bool FAutoUpdate;
	TTMSFMXYAxis* FYAxis;
	TTMSFMXDrawSubDivisionLine FOnDrawSubDivisionLine;
	TTMSFMXDrawSubDivisionText FOnDrawSubDivisionText;
	TTMSFMXDrawDivisionLine FOnDrawDivisionLine;
	TTMSFMXDrawDivisionText FOnDrawDivisionText;
	int __fastcall GetInterval(void);
	void __fastcall SetInterval(int Value);
	void __fastcall SetActive(bool Value);
	void __fastcall SetMaxValue(float Value);
	void __fastcall SetMinValue(float Value);
	void __fastcall SetChannels(TTMSFMXChannels* Value);
	void __fastcall SetGridLineWidth(int Value);
	void __fastcall SetGridColor(System::Uitypes::TAlphaColor Value);
	void __fastcall SetBaseColor(System::Uitypes::TAlphaColor Value);
	void __fastcall SetFrequency(float Value);
	void __fastcall TimerEvent(System::TObject* Sender);
	void __fastcall setDirection(const TTMSFMXScrollDirection Value);
	void __fastcall SetAutoUpdate(const bool Value);
	void __fastcall SetYAxis(TTMSFMXYAxis* const Value);
	System::UnicodeString __fastcall GetVersion(void);
	int __fastcall GetVersionNr(void);
	
protected:
	virtual NativeUInt __fastcall GetInstance(void);
	void __fastcall DrawGrid(Fmx::Graphics::TCanvas* ACanvas);
	void __fastcall DrawGraph(Fmx::Graphics::TCanvas* ACanvas);
	void __fastcall DrawAxis(Fmx::Graphics::TCanvas* ACanvas);
	System::Types::TRectF __fastcall GetScopeRect(void);
	float __fastcall GetGridSize(void);
	float __fastcall GetBaseInt(void);
	int __fastcall GetMaxLength(void);
	
public:
	void __fastcall UpdateControlCanvas(void);
	__fastcall virtual TTMSFMXScope(System::Classes::TComponent* AOwner);
	__fastcall virtual ~TTMSFMXScope(void);
	void __fastcall Clear(void);
	void __fastcall UpdateData(int Channel, float Value);
	void __fastcall AddData(void);
	void __fastcall ResetGrid(void);
	virtual void __fastcall Paint(void);
	float __fastcall GetPlotValue(float AValue);
	__property float GridOffset = {read=FGridOffset, write=FGridOffset};
	__property float GridExtraOffset = {read=FGridExtraOffset, write=FGridExtraOffset};
	
__published:
	__property System::UnicodeString Version = {read=GetVersion};
	__property TTMSFMXYAxis* YAxis = {read=FYAxis, write=SetYAxis};
	__property bool AutoUpdate = {read=FAutoUpdate, write=SetAutoUpdate, default=1};
	__property int Interval = {read=GetInterval, write=SetInterval, nodefault};
	__property bool AnimateGrid = {read=FAnimateGrid, write=FAnimateGrid, default=1};
	__property float MaxValue = {read=FMaxValue, write=SetMaxValue};
	__property float MinValue = {read=FMinValue, write=SetMinValue};
	__property TTMSFMXChannels* Channels = {read=FChannels, write=SetChannels};
	__property TTMSFMXScrollDirection Direction = {read=FDirection, write=setDirection, default=0};
	__property int GridLineWidth = {read=FGridLineWidth, write=SetGridLineWidth, default=1};
	__property System::Uitypes::TAlphaColor GridColor = {read=FGridColor, write=SetGridColor, default=-16744448};
	__property System::Uitypes::TAlphaColor BaseColor = {read=FBaseColor, write=SetBaseColor, default=-16711936};
	__property float Frequency = {read=FFrequency, write=SetFrequency};
	__property bool Active = {read=FActive, write=SetActive, default=0};
	__property TTMSFMXNeedDataEvent OnNeedData = {read=FOnNeedData, write=FOnNeedData};
	__property TTMSFMXDrawDivisionLine OnDrawDivisionLine = {read=FOnDrawDivisionLine, write=FOnDrawDivisionLine};
	__property TTMSFMXDrawSubDivisionLine OnDrawSubDivisionLine = {read=FOnDrawSubDivisionLine, write=FOnDrawSubDivisionLine};
	__property TTMSFMXDrawDivisionText OnDrawDivisionText = {read=FOnDrawDivisionText, write=FOnDrawDivisionText};
	__property TTMSFMXDrawSubDivisionText OnDrawSubDivisionText = {read=FOnDrawSubDivisionText, write=FOnDrawSubDivisionText};
	__property Fill;
	__property Align = {default=0};
	__property Anchors;
	__property DragMode = {default=0};
	__property Hint = {default=0};
	__property PopupMenu;
	__property ShowHint = {default=0};
	__property Visible = {default=1};
	__property OnClick;
	__property OnDblClick;
	__property OnDragDrop;
	__property OnDragOver;
	__property OnMouseDown;
	__property OnMouseMove;
	__property OnMouseUp;
};


//-- var, const, procedure ---------------------------------------------------
static const System::Int8 MAJ_VER = System::Int8(0x1);
static const System::Int8 MIN_VER = System::Int8(0x5);
static const System::Int8 REL_VER = System::Int8(0x0);
static const System::Int8 BLD_VER = System::Int8(0x1);
}	/* namespace Tmsscope */
}	/* namespace Fmx */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMX_TMSSCOPE)
using namespace Fmx::Tmsscope;
#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_TmsscopeHPP
