28#include "rudder_angle.h"
43DashboardInstrument_RudderAngle::DashboardInstrument_RudderAngle(
44 wxWindow* parent, wxWindowID
id, wxString title,
52 SetOptionMarker(5, DIAL_MARKER_REDGREEN, 2);
54 wxString labels[] = {_T(
"40"), _T(
"30"), _T(
"20"), _T(
"10"), _T(
"0"),
55 _T(
"10"), _T(
"20"), _T(
"30"), _T(
"40")};
56 SetOptionLabel(10, DIAL_LABEL_HORIZONTAL, wxArrayString(9, labels));
60wxSize DashboardInstrument_RudderAngle::GetSize(
int orient, wxSize hint) {
64 if (orient == wxHORIZONTAL) {
65 w = wxMax(hint.y, (DefaultWidth - m_TitleHeight) / .7);
67 w = wxMax(hint.x, DefaultWidth);
69 return wxSize(w, m_TitleHeight + w * .7);
72void DashboardInstrument_RudderAngle::SetData(DASH_CAP st,
double data,
74 if (st == m_MainValueCap) {
79 if (data < m_MainValueMin)
80 m_MainValue = m_MainValueMin;
81 else if (data > m_MainValueMax)
82 m_MainValue = m_MainValueMax;
85 m_MainValueUnit =
unit;
86 }
else if (st == m_ExtraValueCap) {
88 m_ExtraValueUnit =
unit;
93void DashboardInstrument_RudderAngle::DrawFrame(wxGCDC* dc) {
96 wxSize size = GetClientSize();
99 int drawHeight = GetDataBottom(size.y) - m_DataTop;
100 InitTitleAndDataPosition(drawHeight);
103 m_cy = m_DataTop + (drawHeight) * 0.38;
104 m_radius = (drawHeight) * .6;
106 dc->SetBrush(*wxTRANSPARENT_BRUSH);
109 pen.SetStyle(wxPENSTYLE_SOLID);
111 GetGlobalColor(_T(
"DASHF"), &cl);
115 double angle1 = deg2rad(215);
116 double angle2 = deg2rad(-35);
117 wxCoord x1 = m_cx + (m_radius * cos(angle1));
118 wxCoord y1 = m_cy + (m_radius * sin(angle1));
119 wxCoord x2 = m_cx + (m_radius * cos(angle2));
120 wxCoord y2 = m_cy + (m_radius * sin(angle2));
121 dc->DrawArc(x1, y1, x2, y2, m_cx, m_cy);
122 dc->DrawLine(x1, y1, x2, y2);
125void DashboardInstrument_RudderAngle::DrawBackground(wxGCDC* dc) {
126 wxCoord x = m_cx - (m_radius * 0.3);
127 wxCoord y = m_cy - (m_radius * 1.1);
129 GetGlobalColor(_T(
"DASH1"), &cl);
131 dc->DrawEllipticArc(x, y, m_radius * 0.6, m_radius * 1.4, 0, -180);