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

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

#ifndef UECMapKMLParserHPP
#define UECMapKMLParserHPP

#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 <ectXML.hpp>
#include <System.Classes.hpp>
#include <Vcl.StdCtrls.hpp>
#include <System.SysUtils.hpp>
#include <UECMapUtil.hpp>
#include <Vcl.Graphics.hpp>

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

namespace Uecmapkmlparser
{
//-- forward type declarations -----------------------------------------------
class DELPHICLASS TECKmlStyle;
class DELPHICLASS TECKmlStyles;
class DELPHICLASS TECMapKMLParser;
//-- type declarations -------------------------------------------------------
enum DECLSPEC_DENUM TkmlType : unsigned char { ktNone, ktStyle, ktStyleUrl, ktPoly, ktHRefIcon, ktIcon, ktColor, ktFColor, ktWidth, ktCoord, ktName, ktDesc, ktStyleMap, ktKey, ktScale, ktNorth, ktSouth, ktEast, ktWest, ktData, ktDataValue, ktHeading, ktWhenTime, ktTimeSpan, ktBeginTime, ktEndTime };

enum DECLSPEC_DENUM TKmlOverlay : unsigned char { koNone, koMarker, koLine, koPolygon, koPolygonHole, koGroundOverlay };

class PASCALIMPLEMENTATION TECKmlStyle : public System::Classes::TStringList
{
	typedef System::Classes::TStringList inherited;
	
private:
	System::UnicodeString FNormalStyle;
	System::UnicodeString FHoverStyle;
	System::UnicodeString __fastcall getColor();
	void __fastcall setColor(const System::UnicodeString value);
	System::UnicodeString __fastcall getFColor();
	void __fastcall setFColor(const System::UnicodeString value);
	System::UnicodeString __fastcall getIcon();
	void __fastcall setIcon(const System::UnicodeString value);
	System::UnicodeString __fastcall getWidth();
	void __fastcall setWidth(const System::UnicodeString value);
	System::UnicodeString __fastcall getScale();
	void __fastcall setScale(const System::UnicodeString value);
	System::UnicodeString __fastcall getHeading();
	void __fastcall setHeading(const System::UnicodeString value);
	
public:
	__property System::UnicodeString NormalStyle = {read=FNormalStyle, write=FNormalStyle};
	__property System::UnicodeString HoverStyle = {read=FHoverStyle, write=FHoverStyle};
	__property System::UnicodeString Color = {read=getColor, write=setColor};
	__property System::UnicodeString FColor = {read=getFColor, write=setFColor};
	__property System::UnicodeString Icon = {read=getIcon, write=setIcon};
	__property System::UnicodeString width = {read=getWidth, write=setWidth};
	__property System::UnicodeString Scale = {read=getScale, write=setScale};
	__property System::UnicodeString Heading = {read=getHeading, write=setHeading};
public:
	/* TStringList.Create */ inline __fastcall TECKmlStyle()/* overload */ : System::Classes::TStringList() { }
	/* TStringList.Create */ inline __fastcall TECKmlStyle(bool OwnsObjects)/* overload */ : System::Classes::TStringList(OwnsObjects) { }
	/* TStringList.Create */ inline __fastcall TECKmlStyle(System::WideChar QuoteChar, System::WideChar Delimiter)/* overload */ : System::Classes::TStringList(QuoteChar, Delimiter) { }
	/* TStringList.Create */ inline __fastcall TECKmlStyle(System::WideChar QuoteChar, System::WideChar Delimiter, System::Classes::TStringsOptions Options)/* overload */ : System::Classes::TStringList(QuoteChar, Delimiter, Options) { }
	/* TStringList.Create */ inline __fastcall TECKmlStyle(System::Classes::TDuplicates Duplicates, bool Sorted, bool CaseSensitive)/* overload */ : System::Classes::TStringList(Duplicates, Sorted, CaseSensitive) { }
	/* TStringList.Create */ inline __fastcall TECKmlStyle(System::Classes::TStringsOptions Options, System::Classes::TDuplicates Duplicates)/* overload */ : System::Classes::TStringList(Options, Duplicates) { }
	/* TStringList.Destroy */ inline __fastcall virtual ~TECKmlStyle() { }
	
};


class PASCALIMPLEMENTATION TECKmlStyles : public System::Classes::TStringList
{
	typedef System::Classes::TStringList inherited;
	
public:
	TECKmlStyle* __fastcall Style(const System::UnicodeString id);
	__fastcall virtual ~TECKmlStyles();
public:
	/* TStringList.Create */ inline __fastcall TECKmlStyles()/* overload */ : System::Classes::TStringList() { }
	/* TStringList.Create */ inline __fastcall TECKmlStyles(bool OwnsObjects)/* overload */ : System::Classes::TStringList(OwnsObjects) { }
	/* TStringList.Create */ inline __fastcall TECKmlStyles(System::WideChar QuoteChar, System::WideChar Delimiter)/* overload */ : System::Classes::TStringList(QuoteChar, Delimiter) { }
	/* TStringList.Create */ inline __fastcall TECKmlStyles(System::WideChar QuoteChar, System::WideChar Delimiter, System::Classes::TStringsOptions Options)/* overload */ : System::Classes::TStringList(QuoteChar, Delimiter, Options) { }
	/* TStringList.Create */ inline __fastcall TECKmlStyles(System::Classes::TDuplicates Duplicates, bool Sorted, bool CaseSensitive)/* overload */ : System::Classes::TStringList(Duplicates, Sorted, CaseSensitive) { }
	/* TStringList.Create */ inline __fastcall TECKmlStyles(System::Classes::TStringsOptions Options, System::Classes::TDuplicates Duplicates)/* overload */ : System::Classes::TStringList(Options, Duplicates) { }
	
};


#pragma pack(push,4)
class PASCALIMPLEMENTATION TECMapKMLParser : public Ectxml::TectXML
{
	typedef Ectxml::TectXML inherited;
	
private:
	System::UnicodeString FBaseDirectory;
	Uecmaputil::TecToken* FToken;
	Uecmaputil::TecToken* FTokenHole;
	System::Classes::TStringList* FDatas;
	System::Classes::TStringList* FHoles;
	bool isTimeSpan;
	bool IsPlacemark;
	bool FDefGroundOverlay;
	bool FDefStyle;
	bool FIgnoreRendu;
	bool FMultiGeometry;
	System::UnicodeString FFLagStyleMap;
	System::UnicodeString FLastStyleUrl;
	System::UnicodeString FStyleUrl;
	System::UnicodeString FKey;
	System::UnicodeString FAUrl;
	TECKmlStyles* FStyles;
	TECKmlStyle* FStyle;
	TkmlType KType;
	TkmlType _KType;
	TKmlOverlay KOverlay;
	System::UnicodeString FProperties;
	System::UnicodeString FName;
	System::UnicodeString FDescription;
	System::UnicodeString FDescriptionColor;
	System::UnicodeString FDescriptionWidth;
	System::UnicodeString FWhenTime;
	System::UnicodeString FBeginTime;
	System::UnicodeString FEndTime;
	System::UnicodeString FTime;
	System::UnicodeString FMarkers;
	System::UnicodeString FLabels;
	System::UnicodeString FLines;
	System::UnicodeString FPolygones;
	System::UnicodeString FLatLng;
	System::UnicodeString _FLatLng;
	System::UnicodeString FNorth;
	System::UnicodeString FSouth;
	System::UnicodeString FEast;
	System::UnicodeString FWest;
	System::UnicodeString FIconGroundOverlay;
	
protected:
	virtual void __fastcall doOnText();
	virtual void __fastcall doOnTag();
	
public:
	System::UnicodeString __fastcall StrToECMap(const System::UnicodeString KmlValue);
	System::UnicodeString __fastcall LoadFileToECMap(System::UnicodeString KmlFile);
	__fastcall TECMapKMLParser();
	__fastcall virtual ~TECMapKMLParser();
	__property bool IgnoreRendu = {read=FIgnoreRendu, write=FIgnoreRendu, nodefault};
};

#pragma pack(pop)

//-- var, const, procedure ---------------------------------------------------
extern DELPHI_PACKAGE System::UnicodeString __fastcall KmlToECMap(const System::UnicodeString KmlValue, const System::UnicodeString baseDir = System::UnicodeString());
extern DELPHI_PACKAGE System::UnicodeString __fastcall KmlFileToECMap(const System::UnicodeString KmlFile);
}	/* namespace Uecmapkmlparser */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_UECMAPKMLPARSER)
using namespace Uecmapkmlparser;
#endif
#pragma pack(pop)
#pragma option pop

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