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

// (DO NOT EDIT: machine generated header) 'FMX.TMSWebGMapsDirections.pas' rev: 31.00 (MacOS)

#ifndef Fmx_TmswebgmapsdirectionsHPP
#define Fmx_TmswebgmapsdirectionsHPP

#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>
#include <SysInit.hpp>
#include <System.SysUtils.hpp>
#include <System.Classes.hpp>
#include <FMX.Controls.hpp>
#include <System.Types.hpp>
#include <FMX.TMSWebGMapsCommon.hpp>
#include <System.StrUtils.hpp>
#include <FMX.TMSWebGMapsConst.hpp>
#include <FMX.TMSWebGMapsCommonFunctions.hpp>
#include <FMX.TMSWebGMapsPolylines.hpp>
#include <FMX.Graphics.hpp>
#include <System.JSON.hpp>

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

namespace Fmx
{
namespace Tmswebgmapsdirections
{
//-- forward type declarations -----------------------------------------------
class DELPHICLASS TStep;
class DELPHICLASS TSteps;
class DELPHICLASS TLeg;
class DELPHICLASS TLegs;
class DELPHICLASS TRoute;
class DELPHICLASS TDirections;
//-- type declarations -------------------------------------------------------
typedef System::WideChar AChar;

typedef AChar *PAChar;

typedef AChar AnsiChar;

typedef System::UnicodeString AnsiString;

typedef System::UnicodeString UTF8String;

typedef System::UnicodeString rawbytestring;

#pragma pack(push,4)
class PASCALIMPLEMENTATION TStep : public System::Classes::TCollectionItem
{
	typedef System::Classes::TCollectionItem inherited;
	
private:
	TLeg* FLeg;
	System::UnicodeString FInstructions;
	int FDistance;
	int FDuration;
	Fmx::Tmswebgmapscommonfunctions::TLocation* FStartLocation;
	Fmx::Tmswebgmapscommonfunctions::TLocation* FEndLocation;
	Fmx::Tmswebgmapspolylines::TPolyline* FPolyline;
	Fmx::Tmswebgmapscommon::TTravelMode FTravelMode;
	System::UnicodeString FDistanceText;
	System::UnicodeString FDurationText;
	void __fastcall SetDistance(const int Value);
	void __fastcall SetDuration(const int Value);
	void __fastcall SetEndLocation(Fmx::Tmswebgmapscommonfunctions::TLocation* const Value);
	void __fastcall SetStartLocation(Fmx::Tmswebgmapscommonfunctions::TLocation* const Value);
	void __fastcall SetTravelMode(const Fmx::Tmswebgmapscommon::TTravelMode Value);
	void __fastcall SetInstructions(const System::UnicodeString Value);
	void __fastcall SetDistanceText(const System::UnicodeString Value);
	void __fastcall SetDurationText(const System::UnicodeString Value);
	
public:
	__fastcall virtual TStep(System::Classes::TCollection* Collection);
	__fastcall virtual ~TStep(void);
	virtual void __fastcall Assign(System::Classes::TPersistent* Source);
	void __fastcall FromJSON(System::Json::TJSONObject* jo);
	
__published:
	__property System::UnicodeString Instructions = {read=FInstructions, write=SetInstructions};
	__property int Distance = {read=FDistance, write=SetDistance, default=0};
	__property System::UnicodeString DistanceText = {read=FDistanceText, write=SetDistanceText};
	__property int Duration = {read=FDuration, write=SetDuration, default=0};
	__property System::UnicodeString DurationText = {read=FDurationText, write=SetDurationText};
	__property Fmx::Tmswebgmapscommonfunctions::TLocation* EndLocation = {read=FEndLocation, write=SetEndLocation};
	__property Fmx::Tmswebgmapscommonfunctions::TLocation* StartLocation = {read=FStartLocation, write=SetStartLocation};
	__property Fmx::Tmswebgmapspolylines::TPolyline* Polyline = {read=FPolyline, write=FPolyline};
	__property Fmx::Tmswebgmapscommon::TTravelMode TravelMode = {read=FTravelMode, write=SetTravelMode, default=0};
};

#pragma pack(pop)

#pragma pack(push,4)
class PASCALIMPLEMENTATION TSteps : public System::Classes::TCollection
{
	typedef System::Classes::TCollection inherited;
	
public:
	TStep* operator[](int index) { return this->Items[index]; }
	
private:
	TLeg* FLeg;
	HIDESBASE TStep* __fastcall GetItem(int Index);
	HIDESBASE void __fastcall SetItem(int Index, TStep* Value);
	
protected:
	DYNAMIC System::Classes::TPersistent* __fastcall GetOwner(void);
	virtual void __fastcall Update(System::Classes::TCollectionItem* Item);
	virtual void __fastcall Notify(System::Classes::TCollectionItem* Item, System::Classes::TCollectionNotification Action);
	
public:
	__fastcall TSteps(TLeg* ALeg);
	HIDESBASE TStep* __fastcall Add(void)/* overload */;
	__property TStep* Items[int index] = {read=GetItem, write=SetItem/*, default*/};
public:
	/* TCollection.Destroy */ inline __fastcall virtual ~TSteps(void) { }
	
};

#pragma pack(pop)

#pragma pack(push,4)
class PASCALIMPLEMENTATION TLeg : public System::Classes::TCollectionItem
{
	typedef System::Classes::TCollectionItem inherited;
	
private:
	TRoute* FRoute;
	int FDistance;
	System::UnicodeString FStartAddress;
	int FDuration;
	TSteps* FSteps;
	Fmx::Tmswebgmapscommonfunctions::TLocation* FStartLocation;
	System::UnicodeString FEndAddress;
	Fmx::Tmswebgmapscommonfunctions::TLocation* FEndLocation;
	System::UnicodeString FDistanceText;
	System::UnicodeString FDurationText;
	int FWayPointIndex;
	void __fastcall SetSteps(TSteps* const Value);
	void __fastcall SetDistance(const int Value);
	void __fastcall SetDuration(const int Value);
	void __fastcall SetEndAddress(const System::UnicodeString Value);
	void __fastcall SetEndLocation(Fmx::Tmswebgmapscommonfunctions::TLocation* const Value);
	void __fastcall SetStartAddress(const System::UnicodeString Value);
	void __fastcall SetStartLocation(Fmx::Tmswebgmapscommonfunctions::TLocation* const Value);
	void __fastcall SetDistanceText(const System::UnicodeString Value);
	void __fastcall SetDurationText(const System::UnicodeString Value);
	void __fastcall SetWayPointIndex(const int Value);
	
public:
	__fastcall virtual TLeg(System::Classes::TCollection* Collection);
	__fastcall virtual ~TLeg(void);
	virtual void __fastcall Assign(System::Classes::TPersistent* Source);
	void __fastcall FromJSON(System::Json::TJSONObject* jo, bool UTF8Decode = true);
	
__published:
	__property int Distance = {read=FDistance, write=SetDistance, default=0};
	__property System::UnicodeString DistanceText = {read=FDistanceText, write=SetDistanceText};
	__property int Duration = {read=FDuration, write=SetDuration, default=0};
	__property System::UnicodeString DurationText = {read=FDurationText, write=SetDurationText};
	__property System::UnicodeString EndAddress = {read=FEndAddress, write=SetEndAddress};
	__property Fmx::Tmswebgmapscommonfunctions::TLocation* EndLocation = {read=FEndLocation, write=SetEndLocation};
	__property System::UnicodeString StartAddress = {read=FStartAddress, write=SetStartAddress};
	__property Fmx::Tmswebgmapscommonfunctions::TLocation* StartLocation = {read=FStartLocation, write=SetStartLocation};
	__property TSteps* Steps = {read=FSteps, write=SetSteps};
	__property int WayPointIndex = {read=FWayPointIndex, write=SetWayPointIndex, default=-1};
};

#pragma pack(pop)

#pragma pack(push,4)
class PASCALIMPLEMENTATION TLegs : public System::Classes::TCollection
{
	typedef System::Classes::TCollection inherited;
	
public:
	TLeg* operator[](int index) { return this->Items[index]; }
	
private:
	TRoute* FRoute;
	HIDESBASE TLeg* __fastcall GetItem(int Index);
	HIDESBASE void __fastcall SetItem(int Index, TLeg* Value);
	
protected:
	DYNAMIC System::Classes::TPersistent* __fastcall GetOwner(void);
	virtual void __fastcall Update(System::Classes::TCollectionItem* Item);
	virtual void __fastcall Notify(System::Classes::TCollectionItem* Item, System::Classes::TCollectionNotification Action);
	
public:
	__fastcall TLegs(TRoute* ARoute)/* overload */;
	HIDESBASE TLeg* __fastcall Add(void)/* overload */;
	__property TLeg* Items[int index] = {read=GetItem, write=SetItem/*, default*/};
public:
	/* TCollection.Destroy */ inline __fastcall virtual ~TLegs(void) { }
	
};

#pragma pack(pop)

#pragma pack(push,4)
class PASCALIMPLEMENTATION TRoute : public System::Classes::TCollectionItem
{
	typedef System::Classes::TCollectionItem inherited;
	
private:
	Fmx::Controls::TControl* FWebGMaps;
	Fmx::Tmswebgmapspolylines::TPolyline* FPolyline;
	System::UnicodeString FSummary;
	Fmx::Tmswebgmapscommonfunctions::TBounds* FBounds;
	System::UnicodeString FCopyRights;
	TLegs* FLegs;
	System::Classes::TStringList* FWayPointOrder;
	void __fastcall SetBounds(Fmx::Tmswebgmapscommonfunctions::TBounds* const Value);
	void __fastcall SetSummary(const System::UnicodeString Value);
	void __fastcall SetLegs(TLegs* const Value);
	void __fastcall SetPolyline(Fmx::Tmswebgmapspolylines::TPolyline* const Value);
	
public:
	__fastcall virtual TRoute(System::Classes::TCollection* Collection);
	__fastcall virtual ~TRoute(void);
	virtual void __fastcall Assign(System::Classes::TPersistent* Source);
	void __fastcall FromJSON(System::Json::TJSONObject* jo, bool UTF8Decode = true);
	
__published:
	__property Fmx::Tmswebgmapspolylines::TPolyline* Polyline = {read=FPolyline, write=SetPolyline};
	__property System::UnicodeString Summary = {read=FSummary, write=SetSummary};
	__property Fmx::Tmswebgmapscommonfunctions::TBounds* Bounds = {read=FBounds, write=SetBounds};
	__property System::UnicodeString CopyRights = {read=FCopyRights};
	__property TLegs* Legs = {read=FLegs, write=SetLegs};
};

#pragma pack(pop)

#pragma pack(push,4)
class PASCALIMPLEMENTATION TDirections : public System::Classes::TCollection
{
	typedef System::Classes::TCollection inherited;
	
public:
	TRoute* operator[](int index) { return this->Items[index]; }
	
private:
	Fmx::Controls::TControl* FWebGMaps;
	System::Classes::TStringList* FStrings;
	HIDESBASE TRoute* __fastcall GetItem(int Index);
	HIDESBASE void __fastcall SetItem(int Index, TRoute* Value);
	
protected:
	DYNAMIC System::Classes::TPersistent* __fastcall GetOwner(void);
	virtual void __fastcall Update(System::Classes::TCollectionItem* Item);
	virtual void __fastcall Notify(System::Classes::TCollectionItem* Item, System::Classes::TCollectionNotification Action);
	
public:
	__fastcall TDirections(Fmx::Controls::TControl* AWebGMaps);
	__fastcall virtual ~TDirections(void);
	HIDESBASE TRoute* __fastcall Add(void)/* overload */;
	System::Classes::TStringList* __fastcall AsStrings(Fmx::Tmswebgmapscommon::TUnits Units);
	__property TRoute* Items[int index] = {read=GetItem, write=SetItem/*, default*/};
};

#pragma pack(pop)

//-- var, const, procedure ---------------------------------------------------
}	/* namespace Tmswebgmapsdirections */
}	/* namespace Fmx */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMX_TMSWEBGMAPSDIRECTIONS)
using namespace Fmx::Tmswebgmapsdirections;
#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_TmswebgmapsdirectionsHPP
