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

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

#ifndef Fmx_UeceditnativelineHPP
#define Fmx_UeceditnativelineHPP

#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 <System.SysUtils.hpp>
#include <System.Types.hpp>
#include <System.UITypes.hpp>
#include <System.Rtti.hpp>
#include <System.Classes.hpp>
#include <System.Generics.Collections.hpp>
#include <System.Generics.Defaults.hpp>
#include <System.Math.hpp>
#include <FMX.Types.hpp>
#include <FMX.Controls.hpp>
#include <FMX.Forms.hpp>
#include <FMX.Objects.hpp>
#include <System.UIConsts.hpp>
#include <FMX.uecGraphics.hpp>
#include <FMX.uecMapUtil.hpp>
#include <FMX.uecNativeMapControl.hpp>
#include <FMX.Graphics.hpp>
#include <FMX.uecNativeShape.hpp>
#include <FMX.uecgeoLocalise.hpp>

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

namespace Fmx
{
namespace Ueceditnativeline
{
//-- forward type declarations -----------------------------------------------
class DELPHICLASS TecSelectPointNativeLine;
class DELPHICLASS TecNativeLineToRoute;
class DELPHICLASS TecNativeLineSelect;
//-- type declarations -------------------------------------------------------
class PASCALIMPLEMENTATION TecSelectPointNativeLine : public System::TObject
{
	typedef System::TObject inherited;
	
private:
	System::UnicodeString FStartFilename;
	System::UnicodeString FEndFilename;
	bool FIsPolygone;
	Fmx::Uecnativeshape::TECShapeLine* FLine;
	Fmx::Uecnativeshape::TECShapePOI* FSelect;
	bool FShowSelect;
	bool FVisible;
	Fmx::Uecnativeshape::TECShapes* FShapes_EditLine;
	Fmx::Uecnativeshape::TOnShapeMouseEvent FOnShapeClick;
	Fmx::Uecnativeshape::TOnShapeMouseEvent FOnshapeMouseOut;
	Fmx::Uecnativeshape::TOnShapeMousePoint FOnShapeMouseOverPoint;
	Fmx::Uecnativeshape::TOnShapeMousePoint FOnMouseOver;
	Fmx::Uecnativeshape::TOnShapeMousePoint FOnClick;
	bool FShowText;
	virtual void __fastcall setLine(Fmx::Uecnativeshape::TECShapeLine* ecsLine);
	void __fastcall doOnSelectMouseOver(System::TObject* sender, Fmx::Uecnativeshape::TECShape* const Item);
	void __fastcall doOnShapeMouseOverPoint(System::TObject* sender, const double lat, const double lng);
	void __fastcall doOnShapeMouseOut(System::TObject* sender, Fmx::Uecnativeshape::TECShape* const Item);
	void __fastcall doOnShapeClick(System::TObject* sender, Fmx::Uecnativeshape::TECShape* const Item);
	
public:
	__fastcall virtual ~TecSelectPointNativeLine();
	__property Fmx::Uecnativeshape::TECShapeLine* Line = {read=FLine, write=setLine};
	__property Fmx::Uecnativeshape::TOnShapeMousePoint OnClick = {read=FOnClick, write=FOnClick};
	__property Fmx::Uecnativeshape::TOnShapeMousePoint OnMouseOver = {read=FOnMouseOver, write=FOnMouseOver};
public:
	/* TObject.Create */ inline __fastcall TecSelectPointNativeLine() : System::TObject() { }
	
};


class PASCALIMPLEMENTATION TecNativeLineToRoute : public TecSelectPointNativeLine
{
	typedef TecSelectPointNativeLine inherited;
	
	
private:
	typedef System::DynamicArray<double> _TecNativeLineToRoute__1;
	
	
private:
	Fmx::Uecnativeshape::TECShapes* FShapes_WayPoints;
	Fmx::Uecnativeshape::TECShapePOI* FStart;
	Fmx::Uecnativeshape::TECShapePOI* FEnd;
	int FOldBorderSize;
	Fmx::Uecmaputil::TPenStyle FoldPenStyle;
	Fmx::Uecmaputil::TMQRouteType FRouteType;
	System::Classes::TNotifyEvent FOnShapePathChange;
	System::Classes::TNotifyEvent FOnChange;
	bool FEnabled;
	bool FModified;
	_TecNativeLineToRoute__1 Flatlngs;
	void __fastcall FillLatLngs();
	virtual void __fastcall setLine(Fmx::Uecnativeshape::TECShapeLine* ecsLine);
	void __fastcall setRouteType(const Fmx::Uecmaputil::TMQRouteType value);
	void __fastcall AddSelectToWayPoint();
	void __fastcall doOnShapeDragEnd(System::TObject* sender);
	void __fastcall doOnShapePath(System::TObject* sender);
	void __fastcall doOnShapeABClick(System::TObject* sender, Fmx::Uecnativeshape::TECShape* const Item);
	void __fastcall doOnShapeMouseOver(System::TObject* sender, Fmx::Uecnativeshape::TECShape* const Item);
	void __fastcall doOnShapeDblClick(System::TObject* sender, Fmx::Uecnativeshape::TECShape* const Item);
	void __fastcall doNumDrawPOI(Fmx::Uecgraphics::TECCanvas* const canvas, System::Types::TRect &r, Fmx::Uecnativeshape::TECShape* Item);
	void __fastcall setEnabled(const bool value);
	
public:
	__fastcall TecNativeLineToRoute();
	void __fastcall AddWayPoint(const double lat, const double lng, const bool isDraggable = true);
	__property bool Enabled = {read=FEnabled, write=setEnabled, nodefault};
	__property Fmx::Uecmaputil::TMQRouteType RouteType = {read=FRouteType, write=setRouteType, nodefault};
	__property bool Modified = {read=FModified, nodefault};
	__property System::Classes::TNotifyEvent OnChange = {read=FOnChange, write=FOnChange};
public:
	/* TecSelectPointNativeLine.Destroy */ inline __fastcall virtual ~TecNativeLineToRoute() { }
	
};


class PASCALIMPLEMENTATION TecNativeLineSelect : public TecSelectPointNativeLine
{
	typedef TecSelectPointNativeLine inherited;
	
private:
	System::Classes::TNotifyEvent FOnSelect;
	System::Classes::TNotifyEvent FOnDeselect;
	System::Generics::Collections::TList__1<Fmx::Uecnativeshape::TECPointLine*>* FSelection;
	System::Classes::TNotifyEvent FOnShapePathChange;
	void __fastcall doOnShapePath(System::TObject* sender);
	void __fastcall doOnSelectClick(System::TObject* sender, Fmx::Uecnativeshape::TECShape* const Item);
	void __fastcall doOnABClick(System::TObject* sender, Fmx::Uecnativeshape::TECShape* const Item);
	virtual void __fastcall setLine(Fmx::Uecnativeshape::TECShapeLine* ecsLine);
	void __fastcall ClearSelection();
	Fmx::Uecnativeshape::TECPointLine* __fastcall getPoints(int index);
	
public:
	__fastcall TecNativeLineSelect();
	__fastcall virtual ~TecNativeLineSelect();
	void __fastcall SelectionFrom(double ALat, double ALng, double BLat, double BLng);
	void __fastcall Deselect();
	void __fastcall SelectionTo(Fmx::Uecnativeshape::TECShapeLine* NewShape);
	void __fastcall ReverseSelectionTo(Fmx::Uecnativeshape::TECShapeLine* NewShape);
	double __fastcall SelectionDistance();
	int __fastcall Count();
	__property Fmx::Uecnativeshape::TECPointLine* Selection[int index] = {read=getPoints};
	__property System::Classes::TNotifyEvent OnSelect = {read=FOnSelect, write=FOnSelect};
	__property System::Classes::TNotifyEvent OnDeselect = {read=FOnDeselect, write=FOnDeselect};
};


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