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

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

#ifndef Fmx_TmsratingHPP
#define Fmx_TmsratingHPP

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

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

namespace Fmx
{
namespace Tmsrating
{
//-- type declarations -------------------------------------------------------
typedef void __fastcall (__closure *TTMSFMXRatingShapeBeforeDrawEvent)(System::TObject* Sender, Fmx::Graphics::TCanvas* ACanvas, const System::Types::TRectF &ARect, bool &DefaultDraw);

typedef void __fastcall (__closure *TTMSFMXRatingShapeAfterDrawEvent)(System::TObject* Sender, Fmx::Graphics::TCanvas* ACanvas, const System::Types::TRectF &ARect);

enum DECLSPEC_DENUM TTMSFMXRatingShapeKind : unsigned char { skRectangle, skEllipse, skStar, skDiamond, skTriangle, skNone };

class DELPHICLASS TTMSFMXRatingShape;
class PASCALIMPLEMENTATION TTMSFMXRatingShape : public Fmx::Objects::TRoundRect
{
	typedef Fmx::Objects::TRoundRect inherited;
	
private:
	TTMSFMXRatingShapeAfterDrawEvent FOnAfterDraw;
	TTMSFMXRatingShapeBeforeDrawEvent FOnBeforeDraw;
	int FIndex;
	bool FTransparent;
	TTMSFMXRatingShapeKind FKind;
	void __fastcall SetTransparent(const bool Value);
	void __fastcall SetKind(const TTMSFMXRatingShapeKind Value);
	
public:
	__fastcall virtual TTMSFMXRatingShape(System::Classes::TComponent* AOwner);
	virtual void __fastcall Paint(void);
	__property int Index = {read=FIndex, write=FIndex, nodefault};
	
__published:
	__property bool Transparent = {read=FTransparent, write=SetTransparent, default=0};
	__property TTMSFMXRatingShapeBeforeDrawEvent OnBeforeDraw = {read=FOnBeforeDraw, write=FOnBeforeDraw};
	__property TTMSFMXRatingShapeAfterDrawEvent OnAfterDraw = {read=FOnAfterDraw, write=FOnAfterDraw};
	__property TTMSFMXRatingShapeKind Kind = {read=FKind, write=SetKind, default=2};
public:
	/* TShape.Destroy */ inline __fastcall virtual ~TTMSFMXRatingShape(void) { }
	
};


typedef void __fastcall (__closure *TTMSFMXRatingCustomizeEvent)(System::TObject* Sender, Fmx::Controls::TControl* AShape, int AShapeIndex);

typedef void __fastcall (__closure *TTMSFMXRatingBeforeDrawEvent)(System::TObject* Sender, Fmx::Graphics::TCanvas* ACanvas, const System::Types::TRectF &ARect, int AShapeIndex, bool &DefaultDraw);

typedef void __fastcall (__closure *TTMSFMXRatingAfterDrawEvent)(System::TObject* Sender, Fmx::Graphics::TCanvas* ACanvas, const System::Types::TRectF &ARect, int AShapeIndex);

typedef void __fastcall (__closure *TTMSFMXRatingValueClickEvent)(System::TObject* Sender, float AValue);

class DELPHICLASS TTMSFMXRating;
class PASCALIMPLEMENTATION TTMSFMXRating : public Fmx::Tmsbasecontrol::TTMSFMXBaseControl
{
	typedef Fmx::Tmsbasecontrol::TTMSFMXBaseControl inherited;
	
private:
	bool FMouseDown;
	int FCount;
	float FMaximum;
	float FValue;
	TTMSFMXRatingCustomizeEvent FOnActiveCustomize;
	TTMSFMXRatingCustomizeEvent FOnInActiveCustomize;
	TTMSFMXRatingAfterDrawEvent FOnActiveAfterdraw;
	TTMSFMXRatingAfterDrawEvent FOnInActiveAfterdraw;
	TTMSFMXRatingBeforeDrawEvent FOnActiveBeforedraw;
	TTMSFMXRatingBeforeDrawEvent FOnInActiveBeforedraw;
	TTMSFMXRatingValueClickEvent FOnValueClick;
	void __fastcall SetCount(const int Value);
	void __fastcall SetMaximum(const float Value);
	void __fastcall SetValue(const float Value);
	System::UnicodeString __fastcall GetVersion(void);
	int __fastcall GetVersionNr(void);
	void __fastcall SetVersion(const System::UnicodeString Value);
	
protected:
	Fmx::Controls::TControl* __fastcall GetInActiveDefaultShape(void);
	Fmx::Controls::TControl* __fastcall GetActiveDefaultShape(void);
	virtual void __fastcall ApplyStyle(void);
	void __fastcall UpdateShapes(void);
	void __fastcall AssignEvents(void);
	void __fastcall CleanInActiveShapes(void);
	void __fastcall CleanActiveShapes(void);
	virtual void __fastcall Resize(void);
	Fmx::Controls::TControl* __fastcall GetInactiveShape(System::UnicodeString sn);
	Fmx::Controls::TControl* __fastcall GetActiveShape(System::UnicodeString sn);
	Fmx::Controls::TControl* __fastcall GetActiveHolder(void);
	Fmx::Controls::TControl* __fastcall GetInActiveHolder(void);
	virtual NativeUInt __fastcall GetInstance(void);
	void __fastcall DoBeforeInActiveDraw(System::TObject* Sender, Fmx::Graphics::TCanvas* ACanvas, const System::Types::TRectF &ARect, bool &DefaultDraw);
	void __fastcall DoAfterInActiveDraw(System::TObject* Sender, Fmx::Graphics::TCanvas* ACanvas, const System::Types::TRectF &ARect);
	void __fastcall DoBeforeActiveDraw(System::TObject* Sender, Fmx::Graphics::TCanvas* ACanvas, const System::Types::TRectF &ARect, bool &DefaultDraw);
	void __fastcall DoAfterActiveDraw(System::TObject* Sender, Fmx::Graphics::TCanvas* ACanvas, const System::Types::TRectF &ARect);
	void __fastcall DoMouseDown(System::TObject* Sender, System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, float X, float Y);
	void __fastcall DoMouseUp(System::TObject* Sender, System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, float X, float Y);
	void __fastcall DoMouseMove(System::TObject* Sender, System::Classes::TShiftState Shift, float X, float Y);
	
public:
	__fastcall virtual TTMSFMXRating(System::Classes::TComponent* AOwner);
	__fastcall virtual ~TTMSFMXRating(void);
	
__published:
	__property int Count = {read=FCount, write=SetCount, default=5};
	__property float Value = {read=FValue, write=SetValue};
	__property float Maximum = {read=FMaximum, write=SetMaximum};
	__property TTMSFMXRatingCustomizeEvent OnInActiveCustomize = {read=FOnInActiveCustomize, write=FOnInActiveCustomize};
	__property TTMSFMXRatingCustomizeEvent OnActiveCustomize = {read=FOnActiveCustomize, write=FOnActiveCustomize};
	__property TTMSFMXRatingBeforeDrawEvent OnInActiveBeforeDraw = {read=FOnInActiveBeforedraw, write=FOnInActiveBeforedraw};
	__property TTMSFMXRatingAfterDrawEvent OnInActiveAfterDraw = {read=FOnInActiveAfterdraw, write=FOnInActiveAfterdraw};
	__property TTMSFMXRatingBeforeDrawEvent OnActiveBeforeDraw = {read=FOnActiveBeforedraw, write=FOnActiveBeforedraw};
	__property TTMSFMXRatingAfterDrawEvent OnActiveAfterDraw = {read=FOnActiveAfterdraw, write=FOnActiveAfterdraw};
	__property TTMSFMXRatingValueClickEvent OnValueClick = {read=FOnValueClick, write=FOnValueClick};
	__property System::UnicodeString Version = {read=GetVersion, write=SetVersion};
};


//-- 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 Tmsrating */
}	/* namespace Fmx */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMX_TMSRATING)
using namespace Fmx::Tmsrating;
#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_TmsratingHPP
