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

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

#ifndef Fmx_TmsledmeterHPP
#define Fmx_TmsledmeterHPP

#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.UITypes.hpp>	// Pascal unit
#include <System.SysUtils.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 Tmsledmeter
{
//-- type declarations -------------------------------------------------------
typedef void __fastcall (__closure *TValueEvent)(System::TObject* Sender, int Value);

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

class DELPHICLASS TTMSFMXLEDMeter;
class PASCALIMPLEMENTATION TTMSFMXLEDMeter : public Fmx::Tmsbasecontrol::TTMSFMXBaseShape
{
	typedef Fmx::Tmsbasecontrol::TTMSFMXBaseShape inherited;
	
private:
	bool FMouseDown;
	int FSteps;
	int FValue;
	System::Uitypes::TAlphaColor FActiveStopColor;
	System::Uitypes::TAlphaColor FActiveStartColor;
	System::Uitypes::TAlphaColor FStopColor;
	System::Uitypes::TAlphaColor FStartColor;
	int FPeakValue;
	bool FShowPeak;
	System::Uitypes::TAlphaColor FPeakColor;
	TValueEvent FOnValueClick;
	TValueEvent FOnMoveValue;
	void __fastcall SetActiveStartColor(const System::Uitypes::TAlphaColor Value);
	void __fastcall SetActiveStopColor(const System::Uitypes::TAlphaColor Value);
	void __fastcall SetStartColor(const System::Uitypes::TAlphaColor Value);
	void __fastcall SetSteps(const int Value);
	void __fastcall SetStopColor(const System::Uitypes::TAlphaColor Value);
	void __fastcall SetValue(const int Value);
	void __fastcall SetPeakValue(const int Value);
	void __fastcall SetShowPeak(const bool Value);
	void __fastcall SetPeakColor(const System::Uitypes::TAlphaColor Value);
	
protected:
	void __fastcall Changed(void);
	virtual void __fastcall MouseDown(System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, float X, float Y);
	virtual void __fastcall MouseUp(System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, float X, float Y);
	virtual void __fastcall MouseMove(System::Classes::TShiftState Shift, float X, float Y);
	
public:
	void __fastcall HandleMouseEvent(float X, float Y, int EventType);
	int __fastcall XYToLED(float X, float Y, const System::Types::TRectF &r);
	__fastcall virtual TTMSFMXLEDMeter(System::Classes::TComponent* AOwner);
	virtual void __fastcall Paint(void);
	void __fastcall Draw(Fmx::Graphics::TCanvas* ACanvas, const System::Types::TRectF &R);
	
__published:
	__property System::Uitypes::TAlphaColor StartColor = {read=FStartColor, write=SetStartColor, default=-16751616};
	__property System::Uitypes::TAlphaColor StopColor = {read=FStopColor, write=SetStopColor, default=-8778997};
	__property System::Uitypes::TAlphaColor ActiveStartColor = {read=FActiveStartColor, write=SetActiveStartColor, default=-16711936};
	__property System::Uitypes::TAlphaColor ActiveStopColor = {read=FActiveStopColor, write=SetActiveStopColor, default=-65536};
	__property int Value = {read=FValue, write=SetValue, default=0};
	__property int Steps = {read=FSteps, write=SetSteps, default=50};
	__property int PeakValue = {read=FPeakValue, write=SetPeakValue, default=0};
	__property bool ShowPeak = {read=FShowPeak, write=SetShowPeak, default=1};
	__property System::Uitypes::TAlphaColor PeakColor = {read=FPeakColor, write=SetPeakColor, default=-1};
	__property Stroke;
	__property StrokeThickness = {default=0};
	__property StrokeCap;
	__property StrokeDash;
	__property StrokeJoin;
	__property TValueEvent OnValueClick = {read=FOnValueClick, write=FOnValueClick};
	__property TValueEvent OnMoveValue = {read=FOnMoveValue, write=FOnMoveValue};
public:
	/* TShape.Destroy */ inline __fastcall virtual ~TTMSFMXLEDMeter(void) { }
	
};


class DELPHICLASS TTMSFMXLEDChannel;
class DELPHICLASS TTMSFMXLEDScope;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TTMSFMXLEDChannel : public System::Classes::TCollectionItem
{
	typedef System::Classes::TCollectionItem inherited;
	
private:
	TTMSFMXLEDMeter* FLedMeter;
	TTMSFMXLEDScope* FOwner;
	System::Uitypes::TAlphaColor __fastcall GetActiveStartColor(void);
	System::Uitypes::TAlphaColor __fastcall GetActiveStopColor(void);
	System::Uitypes::TAlphaColor __fastcall GetPeakColor(void);
	int __fastcall GetPeakValue(void);
	bool __fastcall GetShowPeak(void);
	System::Uitypes::TAlphaColor __fastcall GetStartColor(void);
	int __fastcall GetSteps(void);
	System::Uitypes::TAlphaColor __fastcall GetStopColor(void);
	Fmx::Graphics::TBrush* __fastcall GetStroke(void);
	Fmx::Graphics::TStrokeCap __fastcall GetStrokeCap(void);
	Fmx::Graphics::TStrokeDash __fastcall GetStrokeDash(void);
	Fmx::Graphics::TStrokeJoin __fastcall GetStrokeJoin(void);
	float __fastcall GetStrokeThickness(void);
	int __fastcall GetValue(void);
	void __fastcall SetActiveStartColor(const System::Uitypes::TAlphaColor Value);
	void __fastcall SetActiveStopColor(const System::Uitypes::TAlphaColor Value);
	void __fastcall SetPeakColor(const System::Uitypes::TAlphaColor Value);
	void __fastcall SetPeakValue(const int Value);
	void __fastcall SetShowPeak(const bool Value);
	void __fastcall SetStartColor(const System::Uitypes::TAlphaColor Value);
	void __fastcall SetSteps(const int Value);
	void __fastcall SetStopColor(const System::Uitypes::TAlphaColor Value);
	void __fastcall SetStroke(Fmx::Graphics::TBrush* const Value);
	void __fastcall SetStrokeCap(const Fmx::Graphics::TStrokeCap Value);
	void __fastcall SetStrokeDash(const Fmx::Graphics::TStrokeDash Value);
	void __fastcall SetStrokeJoin(const Fmx::Graphics::TStrokeJoin Value);
	void __fastcall SetStrokeThickness(const float Value);
	void __fastcall SetValue(const int Value);
	
public:
	__fastcall virtual TTMSFMXLEDChannel(System::Classes::TCollection* Collection);
	__fastcall virtual ~TTMSFMXLEDChannel(void);
	
__published:
	__property System::Uitypes::TAlphaColor StartColor = {read=GetStartColor, write=SetStartColor, nodefault};
	__property System::Uitypes::TAlphaColor StopColor = {read=GetStopColor, write=SetStopColor, nodefault};
	__property System::Uitypes::TAlphaColor ActiveStartColor = {read=GetActiveStartColor, write=SetActiveStartColor, nodefault};
	__property System::Uitypes::TAlphaColor ActiveStopColor = {read=GetActiveStopColor, write=SetActiveStopColor, nodefault};
	__property int Value = {read=GetValue, write=SetValue, nodefault};
	__property int Steps = {read=GetSteps, write=SetSteps, nodefault};
	__property int PeakValue = {read=GetPeakValue, write=SetPeakValue, nodefault};
	__property bool ShowPeak = {read=GetShowPeak, write=SetShowPeak, nodefault};
	__property System::Uitypes::TAlphaColor PeakColor = {read=GetPeakColor, write=SetPeakColor, nodefault};
	__property Fmx::Graphics::TBrush* Stroke = {read=GetStroke, write=SetStroke};
	__property float StrokeThickness = {read=GetStrokeThickness, write=SetStrokeThickness};
	__property Fmx::Graphics::TStrokeCap StrokeCap = {read=GetStrokeCap, write=SetStrokeCap, nodefault};
	__property Fmx::Graphics::TStrokeDash StrokeDash = {read=GetStrokeDash, write=SetStrokeDash, nodefault};
	__property Fmx::Graphics::TStrokeJoin StrokeJoin = {read=GetStrokeJoin, write=SetStrokeJoin, nodefault};
};

#pragma pack(pop)

class DELPHICLASS TTMSFMXLEDChannels;
#pragma pack(push,4)
class PASCALIMPLEMENTATION TTMSFMXLEDChannels : public Fmx::Tmsbasecontrol::TTMSFMXBaseCollection
{
	typedef Fmx::Tmsbasecontrol::TTMSFMXBaseCollection inherited;
	
public:
	TTMSFMXLEDChannel* operator[](int Index) { return Items[Index]; }
	
private:
	TTMSFMXLEDScope* FOwner;
	HIDESBASE TTMSFMXLEDChannel* __fastcall GetItem(int Index);
	HIDESBASE void __fastcall SetItem(int Index, TTMSFMXLEDChannel* const Value);
	
protected:
	DYNAMIC System::Classes::TPersistent* __fastcall GetOwner(void);
	
public:
	__fastcall TTMSFMXLEDChannels(TTMSFMXLEDScope* AOwner);
	HIDESBASE TTMSFMXLEDChannel* __fastcall Add(void);
	HIDESBASE TTMSFMXLEDChannel* __fastcall Insert(int Index);
	__property TTMSFMXLEDChannel* Items[int Index] = {read=GetItem, write=SetItem/*, default*/};
public:
	/* TCollection.Destroy */ inline __fastcall virtual ~TTMSFMXLEDChannels(void) { }
	
};

#pragma pack(pop)

struct DECLSPEC_DRECORD TChannelRec
{
public:
	int Channel;
	System::Types::TRectF ChannelR;
};


class PASCALIMPLEMENTATION TTMSFMXLEDScope : public Fmx::Tmsbasecontrol::TTMSFMXBaseControl
{
	typedef Fmx::Tmsbasecontrol::TTMSFMXBaseControl inherited;
	
private:
	bool FMouseDown;
	TTMSFMXLEDChannels* FChannels;
	TChannelValueEvent FOnValueClick;
	bool FAnimation;
	TChannelValueEvent FOnMoveValue;
	void __fastcall SetChannels(TTMSFMXLEDChannels* const Value);
	void __fastcall SetAnimation(const bool Value);
	System::UnicodeString __fastcall GetVersion(void);
	int __fastcall GetVersionNr(void);
	
protected:
	virtual NativeUInt __fastcall GetInstance(void);
	void __fastcall Changed(void);
	virtual void __fastcall MouseUp(System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, float X, float Y);
	virtual void __fastcall MouseDown(System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, float X, float Y);
	virtual void __fastcall MouseMove(System::Classes::TShiftState Shift, float X, float Y);
	void __fastcall HandleMouseEvent(float X, float Y, int EventType);
	
public:
	virtual void __fastcall Paint(void);
	__fastcall virtual TTMSFMXLEDScope(System::Classes::TComponent* AOwner);
	__fastcall virtual ~TTMSFMXLEDScope(void);
	TChannelRec __fastcall XYToChannel(float X, float Y);
	
__published:
	__property System::UnicodeString Version = {read=GetVersion};
	__property bool Animation = {read=FAnimation, write=SetAnimation, default=1};
	__property TTMSFMXLEDChannels* Channels = {read=FChannels, write=SetChannels};
	__property TChannelValueEvent OnValueClick = {read=FOnValueClick, write=FOnValueClick};
	__property TChannelValueEvent OnMoveValue = {read=FOnMoveValue, write=FOnMoveValue};
};


//-- 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(0x0);
}	/* namespace Tmsledmeter */
}	/* namespace Fmx */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMX_TMSLEDMETER)
using namespace Fmx::Tmsledmeter;
#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_TmsledmeterHPP
