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[] = {
"40",
"30",
"20",
"10",
"0",
"10",
"20",
"30",
"40"};
55 SetOptionLabel(10, DIAL_LABEL_HORIZONTAL, wxArrayString(9, labels));
59wxSize DashboardInstrument_RudderAngle::GetSize(
int orient, wxSize hint) {
63 if (orient == wxHORIZONTAL) {
64 w = wxMax(hint.y, (DefaultWidth - m_TitleHeight) / .7);
66 w = wxMax(hint.x, DefaultWidth);
68 return wxSize(w, m_TitleHeight + w * .7);
71void DashboardInstrument_RudderAngle::SetData(DASH_CAP st,
double data,
73 if (st == m_MainValueCap) {
78 if (data < m_MainValueMin)
79 m_MainValue = m_MainValueMin;
80 else if (data > m_MainValueMax)
81 m_MainValue = m_MainValueMax;
84 m_MainValueUnit =
unit;
85 }
else if (st == m_ExtraValueCap) {
87 m_ExtraValueUnit =
unit;
92void DashboardInstrument_RudderAngle::DrawFrame(wxGCDC* dc) {
95 wxSize size = GetClientSize();
98 int drawHeight = GetDataBottom(size.y) - m_DataTop;
99 InitTitleAndDataPosition(drawHeight);
102 m_cy = m_DataTop + (drawHeight) * 0.38;
103 m_radius = (drawHeight) * .6;
105 dc->SetBrush(*wxTRANSPARENT_BRUSH);
108 pen.SetStyle(wxPENSTYLE_SOLID);
110 GetGlobalColor(
"DASHF", &cl);
114 double angle1 = deg2rad(215);
115 double angle2 = deg2rad(-35);
116 wxCoord x1 = m_cx + (m_radius * cos(angle1));
117 wxCoord y1 = m_cy + (m_radius * sin(angle1));
118 wxCoord x2 = m_cx + (m_radius * cos(angle2));
119 wxCoord y2 = m_cy + (m_radius * sin(angle2));
120 dc->DrawArc(x1, y1, x2, y2, m_cx, m_cy);
121 dc->DrawLine(x1, y1, x2, y2);
124void DashboardInstrument_RudderAngle::DrawBackground(wxGCDC* dc) {
125 wxCoord x = m_cx - (m_radius * 0.3);
126 wxCoord y = m_cy - (m_radius * 1.1);
128 GetGlobalColor(
"DASH1", &cl);
130 dc->DrawEllipticArc(x, y, m_radius * 0.6, m_radius * 1.4, 0, -180);