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

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

#ifndef uecNativeScaleMapHPP
#define uecNativeScaleMapHPP

#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 <System.Math.hpp>
#include <System.Types.hpp>
#include <Vcl.Dialogs.hpp>
#include <UECMapUtil.hpp>
#include <uecNativeMapControl.hpp>
#include <Vcl.ExtCtrls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <uecNativeShape.hpp>
#include <UECGraphics.hpp>
#include <System.UITypes.hpp>

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

namespace Uecnativescalemap
{
//-- forward type declarations -----------------------------------------------
class DELPHICLASS TECNativeScaleMap;
//-- type declarations -------------------------------------------------------
class PASCALIMPLEMENTATION TECNativeScaleMap : public System::TObject
{
	typedef System::TObject inherited;
	
	
private:
	typedef System::StaticArray<System::UnicodeString, 3> _TECNativeScaleMap__1;
	
	typedef System::StaticArray<System::UnicodeString, 8> _TECNativeScaleMap__2;
	
	
private:
	Uecgraphics::TECCanvas* FCanvas;
	bool FCompass;
	bool FRadiusScale;
	double FScaleMeter;
	Uecmaputil::TScaleBarStyle FStyle;
	bool FVisible;
	System::Classes::TNotifyEvent FOnChange;
	Uecmaputil::TAnchorPosition FPosition;
	System::Uitypes::TColor FColor;
	System::Uitypes::TColor FColor2;
	bool FShadow;
	int FBarSize;
	Uecmaputil::TNativeMapObserver* FObserver;
	System::UnicodeString FScaleLegend;
	System::Byte FOpacity;
	int FXMargin;
	int FYMargin;
	int FScaleWidth;
	int FMaxWidth;
	int FFontsize;
	Uecmaputil::TMesureSystem FMesureSystem;
	int DeltaBar;
	int FTop;
	int FLeft;
	int FHeight;
	int FWidth;
	int XP;
	int YP;
	int XB;
	int YB;
	int WT;
	int HT;
	int YT;
	System::Byte FDivision;
	System::Classes::TList* FColorAngles;
	System::StaticArray<int, 3> FWidths;
	_TECNativeScaleMap__1 FLegends;
	_TECNativeScaleMap__2 FPointsCardinaux;
	void __fastcall setMap(Uecnativemapcontrol::TECNativeMap* const value);
	void __fastcall setFontSize(const int value);
	void __fastcall setMaxWidth(const int value);
	int __fastcall getMaxWidth();
	void __fastcall setXMargin(const int value);
	void __fastcall setYMargin(const int value);
	void __fastcall setBarSize(const int value);
	void __fastcall setPosition(const Uecmaputil::TAnchorPosition value);
	void __fastcall setShadow(const bool value);
	void __fastcall setColor(const System::Uitypes::TColor value);
	void __fastcall setColor2(const System::Uitypes::TColor value);
	void __fastcall setDivision(const System::Byte value);
	void __fastcall setStyle(const Uecmaputil::TScaleBarStyle value);
	void __fastcall setOpacity(const System::Byte value);
	void __fastcall setVisible(const bool value);
	void __fastcall setRadiusScale(const bool value);
	void __fastcall setCompass(const bool value);
	void __fastcall doDrawSingleLine();
	void __fastcall doDrawSingleBar();
	System::UnicodeString __fastcall GetLegends(Uecmaputil::TMesureSystem i);
	int __fastcall GetWidths(Uecmaputil::TMesureSystem i);
	System::UnicodeString __fastcall GetScaleLegend();
	int __fastcall GetScaleWidth();
	void __fastcall setMesureSystem(const Uecmaputil::TMesureSystem value);
	void __fastcall WM_Subject_EndMove(System::TObject* sender);
	void __fastcall WM_Subject_Zoom(System::TObject* sender);
	void __fastcall WM_Subject_Free(System::TObject* sender);
	void __fastcall WM_Subject_Move(System::TObject* sender);
	void __fastcall DrawRadius(Uecgraphics::TECCanvas* const ECanvas);
	void __fastcall DrawCompass(Uecgraphics::TECCanvas* const ECanvas, int CenterX, int CenterY, int Radius, int NorthAngle);
	void __fastcall WM_Subject_ShapesPaint(System::TObject* sender);
	void __fastcall WM_Subject_MapRotation(System::TObject* sender);
	void __fastcall WM_Subject_ActiveChange(System::TObject* sender);
	
protected:
	Uecnativemapcontrol::TECNativeMap* FMap;
	int __fastcall RoundNumeric(const double value);
	virtual void __fastcall doCalcScale();
	Uecmaputil::TCompassTracker* __fastcall getTracker(int index);
	
public:
	__fastcall TECNativeScaleMap();
	__fastcall virtual ~TECNativeScaleMap();
	void __fastcall Update();
	int __fastcall AddTracker(const System::Uitypes::TColor AColor, const double AAngle, System::TObject* const AItem);
	void __fastcall RemoveTracker(const int index)/* overload */;
	void __fastcall RemoveTracker(System::TObject* const Item)/* overload */;
	int __fastcall FindTracker(System::TObject* const Item);
	int __fastcall TrackerCount();
	void __fastcall ClearTrackers();
	System::UnicodeString __fastcall MeterToLegend(const int MeterValue);
	__property int BarSize = {read=FBarSize, write=setBarSize, nodefault};
	__property Uecmaputil::TScaleBarStyle Style = {read=FStyle, write=setStyle, nodefault};
	__property System::Uitypes::TColor Color = {read=FColor, write=setColor, nodefault};
	__property System::Uitypes::TColor LightColor = {read=FColor2, write=setColor2, nodefault};
	__property System::Byte Division = {read=FDivision, write=setDivision, nodefault};
	__property int FontSize = {read=FFontsize, write=setFontSize, nodefault};
	__property Uecnativemapcontrol::TECNativeMap* Map = {read=FMap, write=setMap};
	__property int MaxWidth = {read=getMaxWidth, write=setMaxWidth, nodefault};
	__property int ScaleWidth = {read=GetScaleWidth, nodefault};
	__property System::UnicodeString ScaleLegend = {read=GetScaleLegend};
	__property double ScaleMeter = {read=FScaleMeter};
	__property bool RadiusScale = {read=FRadiusScale, write=setRadiusScale, nodefault};
	__property bool Compass = {read=FCompass, write=setCompass, nodefault};
	__property int Widths[Uecmaputil::TMesureSystem i] = {read=GetWidths};
	__property System::UnicodeString Legends[Uecmaputil::TMesureSystem i] = {read=GetLegends};
	__property Uecmaputil::TCompassTracker* RadiusTracker[int index] = {read=getTracker};
	__property Uecmaputil::TMesureSystem MeasureSystem = {read=FMesureSystem, write=setMesureSystem, nodefault};
	__property Uecmaputil::TAnchorPosition AnchorPosition = {read=FPosition, write=setPosition, nodefault};
	__property int Top = {read=FTop, nodefault};
	__property int Left = {read=FLeft, nodefault};
	__property int Width = {read=FWidth, nodefault};
	__property int Height = {read=FHeight, nodefault};
	__property bool Shadow = {read=FShadow, write=setShadow, nodefault};
	__property bool Visible = {read=FVisible, write=setVisible, nodefault};
	__property int XMargin = {read=FXMargin, write=setXMargin, nodefault};
	__property int YMargin = {read=FYMargin, write=setYMargin, nodefault};
	__property System::Byte Opacity = {read=FOpacity, write=setOpacity, nodefault};
	__property System::Classes::TNotifyEvent OnChange = {read=FOnChange, write=FOnChange};
};


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

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