8 #ifndef __ProfileDlg_H__
9 #define __ProfileDlg_H__
16 #include "AutoDialog.h"
17 #include "vtdata/HeightField.h"
22 virtual void Begin() {}
23 virtual float GetElevation(
const DPoint2 &p) = 0;
24 virtual float GetCultureHeight(
const DPoint2 &p) = 0;
25 virtual bool HasCulture() {
return false; }
39 const wxString& title,
40 const wxPoint& pos = wxDefaultPosition,
41 const wxSize& size = wxDefaultSize,
42 long style = wxDEFAULT_DIALOG_STYLE );
45 wxTextCtrl* GetRF() {
return (wxTextCtrl*) FindWindow( ID_RF ); }
46 wxChoice* GetCurvature() {
return (wxChoice*) FindWindow( ID_CURVATURE ); }
47 wxCheckBox* GetFresnel() {
return (wxCheckBox*) FindWindow( ID_FRESNEL ); }
48 wxCheckBox* GetEffective() {
return (wxCheckBox*) FindWindow( ID_USE_EFFECTIVE ); }
49 wxTextCtrl* GetHeight2() {
return (wxTextCtrl*) FindWindow( ID_HEIGHT2 ); }
50 wxTextCtrl* GetHeight1() {
return (wxTextCtrl*) FindWindow( ID_HEIGHT1 ); }
51 wxTextCtrl* GetText() {
return (wxTextCtrl*) FindWindow( ID_STATUS_TEXT ); }
52 wxCheckBox* GetLineOfSight() {
return (wxCheckBox*) FindWindow( ID_LINE_OF_SIGHT ); }
53 wxCheckBox* GetVisibility() {
return (wxCheckBox*) FindWindow( ID_VISIBILITY ); }
54 wxButton* GetShowCulture() {
return (wxButton*) FindWindow( ID_SHOW_CULTURE ); }
56 void MakePoint(wxPoint &p,
int i,
float value);
57 void DrawChart(wxDC& dc);
58 void UpdateMessageText();
59 void UpdateEnabling();
62 void SetPath(
const DLine2 &path);
68 void ComputeLineOfSight();
69 void ComputeVisibility();
70 float ComputeFresnelRadius(
float dist,
float freq,
int zone);
71 void ComputeFirstFresnel();
72 void ComputeGeoidSurface();
73 float ApplyGeoid(
float h,
int i,
char t);
74 void ComputeSignalLoss(
float dist,
float freq);
75 float TotalHeightAt(
int i);
77 void WriteProfileToDXF(
const char *filename);
78 void WriteTraceToDXF(
const char *filename);
79 void WriteProfileToCSV(
const char *filename);
84 std::vector<float> m_values;
85 std::vector<float> m_values_culture;
86 std::vector<bool> m_visible;
91 int m_xrange, m_yrange;
93 float m_fMinDist, m_fMaxDist, m_fTotalDist;
94 float m_fDrawMin, m_fDrawMax, m_fDrawRange;
95 bool m_bHavePoints, m_bHavePath, m_bHaveValues;
96 bool m_bHaveValidData, m_bHaveInvalid;
98 float m_fMouse, m_fMouseDist;
99 int m_iMin, m_iMax, m_iMouse;
104 bool m_bValidStart, m_bValidLine;
105 float m_fHeightAtStart, m_fHeightAtEnd;
106 bool m_bIntersectsGround;
107 bool m_bIntersectsCulture;
108 float m_fIntersectHeight;
109 float m_fIntersectDistance;
110 int m_iIntersectIndex;
112 float m_fGeodesicDistance;
115 bool m_bHaveGeoidSurface;
116 std::vector<float> m_FirstFresnel;
117 std::vector<float> m_LineOfSight;
118 std::vector<float> m_GeoidSurface;
119 std::vector<bool> m_rvisible;
120 float m_fGeoidCurvature;
121 float m_fMouseFresnel;
123 std::vector<double> m_fGeoDistAtPoint;
126 float m_fHeight1, m_fHeight2;
127 float m_fRadioFrequency;
133 bool m_bLineOfSight, m_bVisibility;
134 bool m_bUseFresnel, m_bUseEffectiveRadius;
136 DPoint2 m_DrawOrg, m_DrawScale;
137 void MakePoint(
FPoint2 &p,
int i,
float value);
139 void DrawProfileToDXF(FILE *fp);
140 void DrawTraceToDXF(FILE *fp);
144 void OnExportCSV( wxCommandEvent &
event );
145 void OnExportTrace( wxCommandEvent &event );
146 void OnExportDXF( wxCommandEvent &event );
147 void OnCurvature( wxCommandEvent &event );
148 void OnRF( wxCommandEvent &event );
149 void OnUseEffective( wxCommandEvent &event );
150 void OnFresnel( wxCommandEvent &event );
151 void OnHeight2( wxCommandEvent &event );
152 void OnHeight1( wxCommandEvent &event );
153 void OnLineOfSight( wxCommandEvent &event );
154 void OnShowCulture( wxCommandEvent &event );
155 void OnVisibility( wxCommandEvent &event );
156 void OnPaint(wxPaintEvent &event);
157 void OnDraw(wxDC& dc);
158 void OnSize(wxSizeEvent& event);
159 void OnLeftDown(wxMouseEvent& event);
160 void OnLeftUp(wxMouseEvent& event);
161 void OnMouseMove(wxMouseEvent& event);
164 DECLARE_EVENT_TABLE()
167 #endif // __ProfileDlg_H__