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

// (DO NOT EDIT: machine generated header) 'UECBingServices.pas' rev: 37.00 (Windows)

#ifndef UECBingServicesHPP
#define UECBingServicesHPP

#pragma delphiheader begin
#pragma option push
#if defined(__BORLANDC__) && !defined(__clang__)
#pragma option -w-      // All warnings off
#pragma option -Vx      // Zero-length empty class member 
#endif
#pragma pack(push,8)
#include <System.hpp>
#include <SysInit.hpp>
#include <UECMapUtil.hpp>
#include <Vcl.StdCtrls.hpp>
#include <System.SysUtils.hpp>
#include <System.Classes.hpp>
#include <Vcl.Graphics.hpp>
#include <Winapi.Windows.hpp>
#include <Winapi.UrlMon.hpp>
#include <Winapi.WinInet.hpp>
#include <Winapi.Messages.hpp>
#include <Vcl.Controls.hpp>
#include <System.Win.ComObj.hpp>
#include <Vcl.Forms.hpp>
#include <Winapi.ShlObj.hpp>
#include <System.Math.hpp>
#include <Winapi.ActiveX.hpp>
#include <ectXML.hpp>

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

namespace Uecbingservices
{
//-- forward type declarations -----------------------------------------------
class DELPHICLASS TECMapBingXmlParser;
class DELPHICLASS TThreadBing;
class DELPHICLASS TThreadBingTraffic;
class DELPHICLASS TBingServices;
//-- type declarations -------------------------------------------------------
enum DECLSPEC_DENUM TBingXmlTag : unsigned char { bxtNone, bxtLat, bxtLng, bxtDesc, bxtSev, bxtClosed };

#pragma pack(push,4)
class PASCALIMPLEMENTATION TECMapBingXmlParser : public Ectxml::TectXML
{
	typedef Ectxml::TectXML inherited;
	
private:
	TBingXmlTag Fbxt;
	System::UnicodeString FDescription;
	System::UnicodeString FLat;
	System::UnicodeString FLng;
	System::UnicodeString FSever;
	System::Classes::TStringList* FIcons;
	int FCountTag;
	System::UnicodeString FMarkers;
	
protected:
	virtual void __fastcall doOnText();
	virtual void __fastcall doOnTag();
	
public:
	System::UnicodeString __fastcall StrToECMap(const System::UnicodeString XmlValue);
	__fastcall TECMapBingXmlParser();
	__fastcall virtual ~TECMapBingXmlParser();
};

#pragma pack(pop)

class PASCALIMPLEMENTATION TThreadBing : public System::Classes::TThread
{
	typedef System::Classes::TThread inherited;
	
private:
	System::UnicodeString FParams;
	System::Classes::TMemoryStream* FMemoryStream;
	System::Classes::TStringList* FtslList;
	System::Classes::TStringList* FIconList;
	System::Classes::TNotifyEvent FNotifyEvent;
	void __fastcall doEvent();
	
public:
	__fastcall TThreadBing(bool ACreateSuspended, System::UnicodeString sParams, System::Classes::TStringList* tslList, System::Classes::TStringList* IconList, System::Classes::TMemoryStream* MemoryStream, System::Classes::TNotifyEvent NotifyEvent);
	__fastcall virtual ~TThreadBing();
};


class PASCALIMPLEMENTATION TThreadBingTraffic : public TThreadBing
{
	typedef TThreadBing inherited;
	
protected:
	virtual void __fastcall Execute();
public:
	/* TThreadBing.Create */ inline __fastcall TThreadBingTraffic(bool ACreateSuspended, System::UnicodeString sParams, System::Classes::TStringList* tslList, System::Classes::TStringList* IconList, System::Classes::TMemoryStream* MemoryStream, System::Classes::TNotifyEvent NotifyEvent) : TThreadBing(ACreateSuspended, sParams, tslList, IconList, MemoryStream, NotifyEvent) { }
	/* TThreadBing.Destroy */ inline __fastcall virtual ~TThreadBingTraffic() { }
	
};


class PASCALIMPLEMENTATION TBingServices : public System::TObject
{
	typedef System::TObject inherited;
	
private:
	TThreadBingTraffic* FThreadTraffic;
	System::UnicodeString FParams;
	Uecmaputil::TThreadStringList* FParamsTrafficList;
	System::Classes::TStringList* FTrafficIcons;
	System::Classes::TStringList* FTrafficResults;
	System::Classes::TMemoryStream* FMemoryStream;
	System::Classes::TNotifyEvent FOnTraffic;
	void __fastcall doTraffic(System::TObject* sender);
	void __fastcall doAsyncTraffic();
	void __fastcall setIconLowImpact(const System::UnicodeString value);
	System::UnicodeString __fastcall getIconLowImpact();
	void __fastcall setIconMinor(const System::UnicodeString value);
	System::UnicodeString __fastcall getIconMinor();
	void __fastcall setIconModerate(const System::UnicodeString value);
	System::UnicodeString __fastcall getIconModerate();
	void __fastcall setIconRoadClosed(const System::UnicodeString value);
	System::UnicodeString __fastcall getIconRoadClosed();
	void __fastcall setIconSerious(const System::UnicodeString value);
	System::UnicodeString __fastcall getIconSerious();
	
public:
	__fastcall TBingServices();
	__fastcall virtual ~TBingServices();
	void __fastcall AsyncTraffic(System::UnicodeString sParams);
	bool __fastcall Traffic(System::UnicodeString sParams);
	__property System::UnicodeString IconLowImpact = {read=getIconLowImpact, write=setIconLowImpact};
	__property System::UnicodeString IconMinor = {read=getIconMinor, write=setIconMinor};
	__property System::UnicodeString IconModerate = {read=getIconModerate, write=setIconModerate};
	__property System::UnicodeString IconSerious = {read=getIconSerious, write=setIconSerious};
	__property System::UnicodeString IconRoadClosed = {read=getIconRoadClosed, write=setIconRoadClosed};
	__property System::UnicodeString Params = {read=FParams};
	__property System::Classes::TStringList* TrafficIcons = {read=FTrafficIcons};
	__property System::Classes::TStringList* TrafficResults = {read=FTrafficResults};
	__property System::Classes::TNotifyEvent OnTraffic = {read=FOnTraffic, write=FOnTraffic};
};


//-- var, const, procedure ---------------------------------------------------
}	/* namespace Uecbingservices */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_UECBINGSERVICES)
using namespace Uecbingservices;
#endif
#pragma pack(pop)
#pragma option pop

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