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

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

#ifndef Fmx_UecnativescalemapHPP
#define Fmx_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 <System.SysUtils.hpp>
#include <System.Types.hpp>
#include <System.UITypes.hpp>
#include <System.Rtti.hpp>
#include <System.Classes.hpp>
#include <FMX.Types.hpp>
#include <FMX.Controls.hpp>
#include <FMX.Forms.hpp>
#include <FMX.Objects.hpp>
#include <System.UIConsts.hpp>
#include <FMX.uecMapUtil.hpp>
#include <FMX.uecNativeMapControl.hpp>
#include <FMX.Graphics.hpp>
#include <FMX.uecNativeShape.hpp>
#include <FMX.uecGraphics.hpp>
#include <System.Math.hpp>

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

namespace Fmx
{
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;
	
	
private:
	Fmx::Graphics::TPathData* FPath;
	double FSOpacity;
	Fmx::Uecmaputil::TScaleBarStyle FStyle;
	bool FVisible;
	System::Classes::TNotifyEvent FOnChange;
	Fmx::Uecmaputil::TAnchorPosition FPosition;
	Fmx::Uecmaputil::TColor FColor;
	Fmx::Uecmaputil::TColor FColor2;
	bool FShadow;
	int FBarSize;
	Fmx::Uecmaputil::TNativeMapObserver* FObserver;
	System::UnicodeString FScaleLegend;
	System::Byte FOpacity;
	int FXMargin;
	int FYMargin;
	int FScaleWidth;
	int FMaxWidth;
	int FFontsize;
	Fmx::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::StaticArray<int, 3> FWidths;
	_TECNativeScaleMap__1 FLegends;
	void __fastcall setMap(Fmx::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 Fmx::Uecmaputil::TAnchorPosition value);
	void __fastcall setShadow(const bool value);
	void __fastcall setColor(const Fmx::Uecmaputil::TColor value);
	void __fastcall setColor2(const Fmx::Uecmaputil::TColor value);
	void __fastcall setDivision(const System::Byte value);
	void __fastcall setStyle(const Fmx::Uecmaputil::TScaleBarStyle value);
	void __fastcall setOpacity(const System::Byte Value);
	void __fastcall setVisible(const bool value);
	void __fastcall doDrawSingleLine(Fmx::Graphics::TCanvas* const ACanvas);
	void __fastcall doDrawSingleBar(Fmx::Graphics::TCanvas* const ACanvas);
	System::UnicodeString __fastcall GetLegends(Fmx::Uecmaputil::TMesureSystem i);
	int __fastcall GetWidths(Fmx::Uecmaputil::TMesureSystem i);
	System::UnicodeString __fastcall GetScaleLegend();
	int __fastcall GetScaleWidth();
	void __fastcall setMesureSystem(const Fmx::Uecmaputil::TMesureSystem value);
	void __fastcall WM_Subject_EndMove(System::TObject* sender);
	void __fastcall WM_Subject_Zoom(System::TObject* sender);
	
protected:
	Fmx::Uecnativemapcontrol::TECNativeMap* FMap;
	int __fastcall RoundNumeric(const double value);
	virtual void __fastcall doCalcScale();
	
public:
	__fastcall TECNativeScaleMap();
	__fastcall virtual ~TECNativeScaleMap();
	void __fastcall Update();
	void __fastcall DrawToCanvas(Fmx::Graphics::TCanvas* const ACanvas);
	__property int BarSize = {read=FBarSize, write=setBarSize, nodefault};
	__property Fmx::Uecmaputil::TScaleBarStyle Style = {read=FStyle, write=setStyle, nodefault};
	__property Fmx::Uecmaputil::TColor Color = {read=FColor, write=setColor, nodefault};
	__property Fmx::Uecmaputil::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 Fmx::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 int Widths[Fmx::Uecmaputil::TMesureSystem i] = {read=GetWidths};
	__property System::UnicodeString Legends[Fmx::Uecmaputil::TMesureSystem i] = {read=GetLegends};
	__property Fmx::Uecmaputil::TMesureSystem MeasureSystem = {read=FMesureSystem, write=setMesureSystem, nodefault};
	__property Fmx::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 */
}	/* namespace Fmx */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_FMX_UECNATIVESCALEMAP)
using namespace Fmx::Uecnativescalemap;
#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_UecnativescalemapHPP
