Пример #1
0
/**
 * Sorts the airspaces by priority
 */
void SortAirspace(AirspaceDatabase &airspace_database) {
  StartupStore(TEXT("SortAirspace\n"));

  // force acknowledgement before sorting
  ClearAirspaceWarnings(airspace_database, true, false);

  airspace_database.Sort();
}
Пример #2
0
LRESULT CALLBACK AnalysisProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
  TCHAR Temp[2048];
  static HDC hdcScreen;
  static int page = 0;
  PAINTSTRUCT ps;
  HDC hdc;
  RECT rc;
  static RECT rcgfx;
  HFONT hfOld;
  HBRUSH background;

  switch (message)
    {
    case WM_INITDIALOG:
                 
      hdcScreen = GetDC(hDlg);
      GetClientRect(hDlg, &rc);

      SendDlgItemMessage(hDlg, IDC_ANALYSISLABEL, WM_SETFONT,
                  (WPARAM)StatisticsFont,MAKELPARAM(TRUE,0));
      SendDlgItemMessage(hDlg, IDC_ANALYSISTEXT, WM_SETFONT,
                  (WPARAM)StatisticsFont,MAKELPARAM(TRUE,0));

      if (!InfoBoxLayout::landscape) {
	rcgfx = rc;
	rcgfx.left  += 10;
	rcgfx.right -= 10;
	rcgfx.top = (rc.bottom-rc.top)*2/10+rc.top;
	rcgfx.bottom = (rc.bottom-rc.top)*2/3+rc.top;
      } else {
	rcgfx = rc;
	rcgfx.left  = long(double(rc.right-rc.left)*0.36)+rc.left;
	rcgfx.right = rc.right-10;
	rcgfx.top = (rc.bottom-rc.top)*2/10+rc.top;
	rcgfx.bottom = rc.bottom;
      }
      
      return TRUE;

    case WM_COMMAND:
      if (LOWORD(wParam) == IDOK) 
        {
          ::ReleaseDC(hDlg, hdcScreen);
          EndDialog(hDlg, LOWORD(wParam));
          MapWindow::RequestFastRefresh();
          ClearAirspaceWarnings(false); // airspace warning gets refreshed
          FullScreen();
          return TRUE;
        }
      if (LOWORD(wParam) == IDC_ANALYSISNEXT) {
        page++;
        
        // cycle around to start page
        if (page==5) {
          page=0;
        }
      }
    case WM_PAINT:

      // make background white
      GetClientRect(hDlg, &rc);
      hdc = BeginPaint(hDlg, &ps);

      background = CreateSolidBrush(RGB(0xf0,0xf0,0xb0));
      HGDIOBJ gTemp;
      gTemp = SelectObject(hdcScreen, background);
      SelectObject(hdcScreen, GetStockObject(WHITE_PEN));

      Rectangle(hdcScreen,rcgfx.left,rcgfx.top,rcgfx.right,rcgfx.bottom);
      DeleteObject(background);

      hfOld = (HFONT)SelectObject(hdcScreen, StatisticsFont);
      
      if (page==0) {
	// LKTOKEN  _@M127_ = "Barograph" 
        SetDlgItemText(hDlg,IDC_ANALYSISLABEL, gettext(TEXT("_@M127_")));

        _stprintf(Temp, TEXT("%s: %5.0f-%5.0f %s\r\n%s: %5.0f %s/hr"),
	// LKTOKEN  _@M823_ = "Working band" 
				 gettext(TEXT("_@M823_")),
                 flightstats.Altitude_Base.y_ave*ALTITUDEMODIFY, 
                 flightstats.Altitude_Ceiling.y_ave*ALTITUDEMODIFY, 
                 Units::GetAltitudeName(),
	// LKTOKEN  _@M165_ = "Ceiling trend" 
				 gettext(TEXT("_@M165_")),
                 flightstats.Altitude_Ceiling.m*ALTITUDEMODIFY,
                 Units::GetAltitudeName());

        SetDlgItemText(hDlg,IDC_ANALYSISTEXT, Temp);

        Statistics::RenderBarograph(hdcScreen, rcgfx);


      }
      if (page==1) {
	// LKTOKEN  _@M182_ = "Climb" 
        SetDlgItemText(hDlg,IDC_ANALYSISLABEL, gettext(TEXT("_@M182_")));

        _stprintf(Temp, TEXT("%s: %3.1f %s\r\n%s: %3.2f %s"),                 
	// LKTOKEN  _@M117_ = "Average climb rate" 
				 gettext(TEXT("_@M117_")),
                  flightstats.ThermalAverage.y_ave*LIFTMODIFY,
                 Units::GetVerticalSpeedName(),
	// LKTOKEN  _@M181_ = "Climb trend" 
				 gettext(TEXT("_@M181_")),
                 flightstats.ThermalAverage.m*LIFTMODIFY,
                 Units::GetVerticalSpeedName()
                 );

        SetDlgItemText(hDlg,IDC_ANALYSISTEXT, Temp);

        Statistics::RenderClimb(hdcScreen, rcgfx);

      }
      if (page==2) {
	// LKTOKEN  _@M820_ = "Wind at Altitude" 
        SetDlgItemText(hDlg,IDC_ANALYSISLABEL, gettext(TEXT("_@M820_")));

        _stprintf(Temp, TEXT("    "));

        SetDlgItemText(hDlg,IDC_ANALYSISTEXT, Temp);

        Statistics::RenderWind(hdcScreen, rcgfx);

      }
      if (page==3) {
	// LKTOKEN  _@M325_ = "Glide Polar" 
        SetDlgItemText(hDlg,IDC_ANALYSISLABEL, gettext(TEXT("_@M325_")));

        _stprintf(Temp, TEXT("%s: %3.1f %s %3.0f %s\r\n%s: %3.2f %s %s %3.0f %s"),
	// LKTOKEN  _@M140_ = "Best LD" 
                 gettext(TEXT("_@M140_")),
                 GlidePolar::bestld,
                 gettext(TEXT("at")),
                 GlidePolar::Vbestld*SPEEDMODIFY,
                 Units::GetHorizontalSpeedName(),
	// LKTOKEN  _@M437_ = "Min sink" 
                 gettext(TEXT("_@M437_")),
                 GlidePolar::minsink*LIFTMODIFY,
                 Units::GetVerticalSpeedName(),
                 gettext(TEXT("at")),
                 GlidePolar::Vminsink*SPEEDMODIFY,
                 Units::GetHorizontalSpeedName());

        SetDlgItemText(hDlg,IDC_ANALYSISTEXT, Temp);

        Statistics::RenderGlidePolar(hdcScreen, rcgfx);

      }
      if (page==4) {
	// LKTOKEN  _@M701_ = "Temp trace" 
        SetDlgItemText(hDlg,IDC_ANALYSISLABEL, gettext(TEXT("_@M701_")));

        _stprintf(Temp, TEXT("%s: %5.0f\r\n%s: %5.0f\r\n"),
	// LKTOKEN  _@M714_ = "Thermal height" 
		  gettext(TEXT("_@M714_")),
		  CuSonde::thermalHeight*ALTITUDEMODIFY,
	// LKTOKEN  _@M187_ = "Cloud base" 
		  gettext(TEXT("_@M187_")),
		  CuSonde::cloudBase*ALTITUDEMODIFY);
        SetDlgItemText(hDlg,IDC_ANALYSISTEXT, Temp);

        Statistics::RenderTemperature(hdcScreen, rcgfx);

      }

      SelectObject(hdcScreen, hfOld);
      EndPaint(hDlg, &ps);

      return FALSE;

    case WM_CLOSE:
      MapWindow::RequestFastRefresh();
      ClearAirspaceWarnings(false); // airspace warning gets refreshed
      FullScreen();
    }
  return FALSE;
}