/** * 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(); }
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; }