28#include "from_ownship.h"
30extern int g_iDashDistanceUnit;
37DashboardInstrument_FromOwnship::DashboardInstrument_FromOwnship(
38 wxWindow* pparent, wxWindowID
id, wxString title,
40 DASH_CAP cap_flag3, DASH_CAP cap_flag4)
42 m_cap_flag.set(cap_flag2);
43 m_cap_flag.set(cap_flag3);
44 m_cap_flag.set(cap_flag4);
47 m_cap_flag1 = cap_flag1;
48 m_cap_flag2 = cap_flag2;
49 m_cap_flag3 = cap_flag3;
50 m_cap_flag4 = cap_flag4;
55void DashboardInstrument_FromOwnship::Draw(wxGCDC* dc) {
59 x1 = x2 = m_DataMargin;
61 if (m_DataRightAlign) {
63 dc->GetTextExtent(m_data1, &w, &h, 0, 0);
64 x1 = GetClientSize().GetWidth() - w - m_DataMargin;
65 dc->GetTextExtent(m_data2, &w, &h, 0, 0);
66 x2 = GetClientSize().GetWidth() - w - m_DataMargin;
69 dc->DrawText(m_data1, x1, m_DataTop);
70 dc->DrawText(m_data2, x2, m_DataTop + m_DataTextHeight);
73void DashboardInstrument_FromOwnship::SetData(DASH_CAP st,
double data,
75 if (st == m_cap_flag1) {
77 }
else if (st == m_cap_flag2) {
79 }
else if (st == m_cap_flag3) {
81 }
else if (st == m_cap_flag4) {
85 if (s_lat < 99999999 && s_lon < 99999999) {
88 (m_Properties ? (m_Properties->m_ShowUnit == 1) : g_bShowUnit);
89 DistanceBearingMercator_Plugin(c_lat, c_lon, s_lat, s_lon, &brg, &dist);
91 m_data1.Printf(_T(
"%03d ") + DEGREE_SIGN, (
int)brg);
92 m_data2.Printf(_T(
"%3.2f %s"),
93 toUsrDistance_Plugin(dist, g_iDashDistanceUnit),
94 getUsrDistanceUnit_Plugin(g_iDashDistanceUnit).c_str());
96 m_data1.Printf(_T(
"%03d"), (
int)brg);
97 m_data2.Printf(_T(
"%3.2f"),
98 toUsrDistance_Plugin(dist, g_iDashDistanceUnit));
105wxSize DashboardInstrument_FromOwnship::GetSize(
int orient, wxSize hint) {
111 if (m_Properties ? (m_Properties->m_ShowUnit == 1) : g_bShowUnit) {
112 sampleText = _T(
"000.00 NMi");
114 sampleText = _T(
"000.00");
116 InitDataTextHeight(sampleText, w);
119 m_DataTextHeight * 2 + m_DataTextHeight * g_TitleVerticalOffset;
120 InitTitleAndDataPosition(drawHeight);
121 int h = GetFullHeight(drawHeight);
123 if (orient == wxHORIZONTAL) {
124 return wxSize(wxMax(w + m_DataMargin, DefaultWidth), wxMax(hint.y, h));
126 return wxSize(wxMax(hint.x, wxMax(w + m_DataMargin, DefaultWidth)), h);