33DashboardInstrument_RudderAngle::DashboardInstrument_RudderAngle(
34 wxWindow* parent, wxWindowID
id, wxString title,
42 SetOptionMarker(5, DIAL_MARKER_REDGREEN, 2);
44 wxString labels[] = {
"40",
"30",
"20",
"10",
"0",
"10",
"20",
"30",
"40"};
45 SetOptionLabel(10, DIAL_LABEL_HORIZONTAL, wxArrayString(9, labels));
49wxSize DashboardInstrument_RudderAngle::GetSize(
int orient, wxSize hint) {
53 if (orient == wxHORIZONTAL) {
54 w = wxMax(hint.y, (DefaultWidth - m_TitleHeight) / .7);
56 w = wxMax(hint.x, DefaultWidth);
58 return wxSize(w, m_TitleHeight + w * .7);
61void DashboardInstrument_RudderAngle::SetData(
DASH_CAP st,
double data,
63 if (st == m_main_value_cap) {
68 if (data < m_main_value_min)
69 m_main_value = m_main_value_min;
70 else if (data > m_main_value_max)
71 m_main_value = m_main_value_max;
74 m_main_value_unit =
unit;
75 }
else if (st == m_extra_value_cap) {
77 m_extra_value_unit =
unit;
82void DashboardInstrument_RudderAngle::DrawFrame(wxGCDC* dc) {
85 wxSize size = GetClientSize();
88 int drawHeight = GetDataBottom(size.y) - m_DataTop;
89 InitTitleAndDataPosition(drawHeight);
92 m_cy = m_DataTop + (drawHeight) * 0.38;
93 m_radius = (drawHeight) * .6;
95 dc->SetBrush(*wxTRANSPARENT_BRUSH);
98 pen.SetStyle(wxPENSTYLE_SOLID);
100 GetGlobalColor(
"DASHF", &cl);
104 double angle1 = deg2rad(215);
105 double angle2 = deg2rad(-35);
106 wxCoord x1 = m_cx + (m_radius * cos(angle1));
107 wxCoord y1 = m_cy + (m_radius * sin(angle1));
108 wxCoord x2 = m_cx + (m_radius * cos(angle2));
109 wxCoord y2 = m_cy + (m_radius * sin(angle2));
110 dc->DrawArc(x1, y1, x2, y2, m_cx, m_cy);
111 dc->DrawLine(x1, y1, x2, y2);
114void DashboardInstrument_RudderAngle::DrawBackground(wxGCDC* dc) {
115 wxCoord x = m_cx - (m_radius * 0.3);
116 wxCoord y = m_cy - (m_radius * 1.1);
118 GetGlobalColor(
"DASH1", &cl);
120 dc->DrawEllipticArc(x, y, m_radius * 0.6, m_radius * 1.4, 0, -180);
@ OCPN_DBP_STC_RSA
Rudder angle.
Dashboard rudder angle instrument.