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);