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

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

#ifndef uecEditNativeLineHPP
#define 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 <Winapi.Windows.hpp>
#include <Winapi.Messages.hpp>
#include <System.SysUtils.hpp>
#include <System.Variants.hpp>
#include <System.Classes.hpp>
#include <Vcl.Graphics.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.Forms.hpp>
#include <UECGraphics.hpp>
#include <System.Math.hpp>
#include <Vcl.Dialogs.hpp>
#include <UECMapUtil.hpp>
#include <uecNativeMapControl.hpp>
#include <Vcl.ExtCtrls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <uecNativeShape.hpp>
#include <uecGeoLocalise.hpp>
#include <System.UITypes.hpp>

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

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;
	Uecnativeshape::TECShapeLine* FLine;
	Uecnativeshape::TECShapePOI* FSelect;
	bool FShowSelect;
	bool FVisible;
	double FScale;
	int FBSize;
	System::Uitypes::TColor FHBColor;
	System::Uitypes::TColor FBColor;
	Uecnativeshape::TECShapes* FShapes_EditLine;
	Uecnativeshape::TOnShapeMouseEvent FOnShapeClick;
	Uecnativeshape::TOnShapeMouseEvent FOnshapeMouseOut;
	Uecnativeshape::TOnShapeMouseEvent FOnShapeMove;
	Uecnativeshape::TOnShapeMousePoint FOnShapeMouseOverPoint;
	Uecnativeshape::TOnShapeMousePoint FOnMouseOver;
	Uecnativeshape::TOnShapeMousePoint FOnClick;
	bool FFocusable;
	bool FShowText;
	virtual void __fastcall setLine(Uecnativeshape::TECShapeLine* ecsLine);
	void __fastcall doOnSelectMouseOver(System::TObject* sender, Uecnativeshape::TECShape* const Item);
	void __fastcall doOnShapeMouseOverPoint(System::TObject* sender, const double lat, const double lng);
	void __fastcall doOnShapeMouseOut(System::TObject* sender, Uecnativeshape::TECShape* const Item);
	void __fastcall doOnShapeClick(System::TObject* sender, Uecnativeshape::TECShape* const Item);
	
public:
	__fastcall virtual ~TecSelectPointNativeLine();
	void __fastcall setPosition(const double Lat, const double Lng)/* overload */;
	void __fastcall setPosition(const int DistanceMeter)/* overload */;
	__property Uecnativeshape::TECShapes* Group = {read=FShapes_EditLine};
	__property Uecnativeshape::TECShapeLine* Line = {read=FLine, write=setLine};
	__property Uecnativeshape::TECShapePOI* Select = {read=FSelect};
	__property Uecnativeshape::TOnShapeMousePoint OnClick = {read=FOnClick, write=FOnClick};
	__property Uecnativeshape::TOnShapeMousePoint OnMouseOver = {read=FOnMouseOver, write=FOnMouseOver};
	__property Uecnativeshape::TOnShapeMouseEvent OnshapeMouseOut = {read=FOnshapeMouseOut, write=FOnshapeMouseOut};
	__property Uecnativeshape::TOnShapeMouseEvent OnshapeMove = {read=FOnShapeMove, write=FOnShapeMove};
public:
	/* TObject.Create */ inline __fastcall TecSelectPointNativeLine() : System::TObject() { }
	
};


class PASCALIMPLEMENTATION TecNativeLineToRoute : public TecSelectPointNativeLine
{
	typedef TecSelectPointNativeLine inherited;
	
	
private:
	typedef System::DynamicArray<double> _TecNativeLineToRoute__1;
	
	
private:
	Uecnativeshape::TECShapes* FShapes_WayPoints;
	Uecnativeshape::TECShapePOI* FStart;
	Uecnativeshape::TECShapePOI* FEnd;
	int FOldBorderSize;
	Uecmaputil::TPenStyle FoldPenStyle;
	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(Uecnativeshape::TECShapeLine* ecsLine);
	void __fastcall setRouteType(const Uecmaputil::TMQRouteType value);
	void __fastcall AddSelectToWayPoint();
	void __fastcall doOnShapeDragEnd(System::TObject* sender);
	void __fastcall doOnShapePath(System::TObject* sender);
	void __fastcall doOnShapeABClick(System::TObject* sender, Uecnativeshape::TECShape* const Item);
	void __fastcall doOnShapeMouseOver(System::TObject* sender, Uecnativeshape::TECShape* const Item);
	void __fastcall doOnShapeDblClick(System::TObject* sender, Uecnativeshape::TECShape* const Item);
	void __fastcall doNumDrawPOI(Uecgraphics::TECCanvas* const canvas, Winapi::Windows::TRect &r, 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 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::Classes::TList* FSelection;
	System::Classes::TNotifyEvent FOnShapePathChange;
	void __fastcall doOnShapePath(System::TObject* sender);
	void __fastcall doOnSelectClick(System::TObject* sender, Uecnativeshape::TECShape* const Item);
	void __fastcall doOnABClick(System::TObject* sender, Uecnativeshape::TECShape* const Item);
	virtual void __fastcall setLine(Uecnativeshape::TECShapeLine* ecsLine);
	void __fastcall ClearSelection();
	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(Uecnativeshape::TECShapeLine* NewShape);
	void __fastcall ReverseSelectionTo(Uecnativeshape::TECShapeLine* NewShape);
	double __fastcall SelectionDistance();
	int __fastcall Count();
	__property 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 */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_UECEDITNATIVELINE)
using namespace Ueceditnativeline;
#endif
#pragma pack(pop)
#pragma option pop

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