void MapWindow::DrawBottomBar(HDC hdc, RECT rc ) { TCHAR BufferValue[LKSIZEBUFFERVALUE]; TCHAR BufferUnit[LKSIZEBUFFERUNIT]; TCHAR BufferTitle[LKSIZEBUFFERTITLE]; char text[LKSIZETEXT]; int index=-1; double Value; short rcx, rcy; SIZE TextSize; static bool wascircling=false; // init not circling of course static short OldBottomMode=BM_FIRST; COLORREF barTextColor=RGB_WHITE; // default bottom bar text color, reversable // position Y of text in navboxes static short yRow2Title=0; // higher row in portrait, unused in landscape static short yRow2Value=0; static short yRow2Unit=0; static short yRow1Title=0; // lower row in portrait, the only one in landscape static short yRow1Value=0; static short yRow1Unit=0; static int splitoffset; static int splitoffset2; // second raw, which really is the first from top! HBRUSH brush_bar; if (INVERTCOLORS) { brush_bar = LKBrush_Black; } else { brush_bar = LKBrush_Nlight; } if (DoInit[MDI_DRAWBOTTOMBAR]) { wascircling=false; OldBottomMode=BM_FIRST; TCHAR Tdummy[]=_T("T"); int iconsize; // All these values are fine tuned for font/resolution/screenmode. // there is no speed issue inside doinit. take your time. SelectObject(hdc, LK8TitleNavboxFont); GetTextExtentPoint(hdc, Tdummy, _tcslen(Tdummy), &TextSize); int syTitle = TextSize.cy; SelectObject(hdc, LK8ValueFont); GetTextExtentPoint(hdc, Tdummy, _tcslen(Tdummy), &TextSize); int syValue = TextSize.cy; switch (ScreenSize) { // Row1 is the lower, Row2 is the top, for portrait // WARNING, algos are wrong, need to check and recalculate for each resolution!! // Changing font size in Utils2 does require checking and fixing here. case ss480x640: case ss480x800: case ss240x320: case ss272x480: yRow2Value = rc.bottom-(syValue*2); yRow2Unit = yRow2Value; yRow2Title = yRow2Value - (syValue/2) - (syTitle/2) + NIBLSCALE(2); yRow1Value = rc.bottom-(syValue/2); yRow1Unit = yRow1Value; yRow1Title = yRow1Value - (syValue/2) - (syTitle/2) + NIBLSCALE(2); break; case ss800x480: case ss640x480: case ss400x240: yRow2Value = rc.bottom-(syValue*2); yRow2Unit = rc.bottom-(syValue*2) - NIBLSCALE(2); yRow2Title = rc.bottom-(syValue*2) - syTitle; yRow1Value = rc.bottom-(syValue/2); yRow1Unit = yRow1Value; yRow1Title = rc.bottom-(syValue/2) - syTitle; break; default: yRow2Value = rc.bottom-(syValue*2); yRow2Unit = rc.bottom-(syValue*2) - NIBLSCALE(2); yRow2Title = rc.bottom-(syValue*2) - syTitle; yRow1Value = rc.bottom-(syValue/2); yRow1Unit = rc.bottom-(syValue/2) - NIBLSCALE(2); yRow1Title = rc.bottom-(syValue/2) - syTitle; break; } if (ScreenLandscape) { iconsize=NIBLSCALE(26); splitoffset= ((rc.right-iconsize)-rc.left)/splitter; } else { iconsize=NIBLSCALE(26); splitoffset= ((rc.right-iconsize)-rc.left)/splitter; // splitoffset2= (rc.right-rc.left)/splitter; splitoffset2= splitoffset; } short ii; // set correct initial bottombar stripe, excluding TRM if(!ConfBB[BottomMode]) { for (ii=BM_CRU; ii<=BM_LAST;ii++) { if (ConfBB[ii]) break; } BottomMode=ii; } DoInit[MDI_DRAWBOTTOMBAR]=false; } // end doinit RECT nrc; nrc.left=0; nrc.top=rc.bottom-BottomSize; nrc.right=rc.right; nrc.bottom=rc.bottom; if (MapWindow::AlphaBlendSupported() && MapSpaceMode==MSM_MAP && BarOpacity<100) { static HDC hdc2=NULL; static HBITMAP bitmapnew=NULL, bitmapold=NULL; if (DoInit[MDI_LOOKABLEND]) { // drop old object to allow deleteDC correctly if (bitmapold) SelectObject(hdc2,bitmapold); if (bitmapnew) DeleteObject(bitmapnew); if (hdc2) DeleteObject(hdc2); hdc2=CreateCompatibleDC(hdc); bitmapnew=CreateCompatibleBitmap(hdc,rc.right,rc.bottom); DoInit[MDI_LOOKABLEND]=false; } if (BarOpacity==0) { barTextColor=RGB_BLACK; } else { bitmapold=(HBITMAP)SelectObject(hdc2,bitmapnew); FillRect(hdc2,&nrc, brush_bar); MapWindow::DoAlphaBlend(hdc,nrc,hdc2,nrc,BarOpacity*255/100); if (BarOpacity>25) barTextColor=RGB_WHITE; else barTextColor=RGB_BLACK; } } else { barTextColor=RGB_WHITE; FillRect(hdc,&nrc, brush_bar); } // NAVBOXES bool showunit=false; if (!ConfBB0Auto) goto _afterautotrm; if ( MapWindow::mode.Is(MapWindow::Mode::MODE_CIRCLING) && !wascircling) { // switch to thermal mode OldBottomMode=BottomMode; BottomMode=BM_TRM; wascircling=true; } if ( !MapWindow::mode.Is(MapWindow::Mode::MODE_CIRCLING) && wascircling) { // back to cruise mode BottomMode=OldBottomMode; wascircling=false; } _afterautotrm: /* * FIRST VALUE */ showunit=true; // normally we do have a unit to show switch(BottomMode) { case BM_TRM: index=GetInfoboxIndex(1,MapWindow::Mode::MODE_FLY_CIRCLING); showunit=LKFormatValue(index, true, BufferValue, BufferUnit, BufferTitle); BufferTitle[7]='\0'; break; case BM_CRU: if (ISCAR) showunit=LKFormatValue(LK_ODOMETER, true, BufferValue, BufferUnit, BufferTitle); else showunit=LKFormatValue(LK_TL_AVG, true, BufferValue, BufferUnit, BufferTitle); break; case BM_HGH: showunit=LKFormatValue(LK_HGPS, true, BufferValue, BufferUnit, BufferTitle); break; case BM_AUX: if (ISCAR) { _stprintf(BufferTitle, MsgToken(1809)); // Moving if (DerivedDrawInfo.Flying) { showunit=Units::TimeToTextDown(BufferValue, (int)Trip_Moving_Time); if (showunit) _stprintf(BufferUnit, _T("h")); else _stprintf(BufferUnit, _T("")); showunit=true; } else { wsprintf(BufferValue, TEXT("--:--")); showunit=false; } } else { showunit=LKFormatValue(LK_TC_ALL, true, BufferValue, BufferUnit, BufferTitle); } break; case BM_TSK: showunit=LKFormatValue(LK_FIN_DIST, true, BufferValue, BufferUnit, BufferTitle); break; case BM_ALT: showunit=LKFormatValue(LK_BESTALTERN_GR, true, BufferValue, BufferUnit, BufferTitle); // 100221 BufferTitle[7]='\0'; break; case BM_SYS: showunit=LKFormatValue(LK_BATTERY, true, BufferValue, BufferUnit, BufferTitle); // 100221 break; case BM_CUS2: index=GetInfoboxIndex(1,MapWindow::Mode::MODE_FLY_CRUISE); showunit=LKFormatValue(index, true, BufferValue, BufferUnit, BufferTitle); BufferTitle[7]='\0'; break; case BM_CUS3: index=GetInfoboxIndex(1,MapWindow::Mode::MODE_FLY_FINAL_GLIDE); showunit=LKFormatValue(index, true, BufferValue, BufferUnit, BufferTitle); BufferTitle[7]='\0'; break; case BM_CUS: index=GetInfoboxType(1); showunit=LKFormatValue(index, true, BufferValue, BufferUnit, BufferTitle); BufferTitle[7]='\0'; break; default: showunit=LKFormatValue(LK_ERROR, true, BufferValue, BufferUnit, BufferTitle); break; } rcx=rc.left+(splitoffset/2); if (ScreenLandscape) { #include "LKMW3include_navbox1.cpp" } else { #include "LKMW3include_navbox2.cpp" } LKWriteText(hdc, BufferTitle, rcx+NIBLSCALE(7), rcy, 0, WTMODE_NORMAL,WTALIGN_CENTER,barTextColor, false); /* * SECOND VALUE */ showunit=true; switch(BottomMode) { case BM_TRM: index=GetInfoboxIndex(2,MapWindow::Mode::MODE_FLY_CIRCLING); showunit=LKFormatValue(index, true, BufferValue, BufferUnit, BufferTitle); BufferTitle[7]='\0'; break; case BM_CRU: showunit=LKFormatValue(LK_GNDSPEED, true, BufferValue, BufferUnit, BufferTitle); break; case BM_HGH: showunit=LKFormatValue(LK_HBARO, true, BufferValue, BufferUnit, BufferTitle); break; case BM_AUX: if (ISCAR) { _stprintf(BufferTitle, MsgToken(1810)); // Steady if (DerivedDrawInfo.Flying) { showunit=Units::TimeToTextDown(BufferValue, (int)Trip_Steady_Time); if (showunit) _stprintf(BufferUnit, _T("h")); else _stprintf(BufferUnit, _T("")); showunit=true; } else { wsprintf(BufferValue, TEXT("--:--")); showunit=false; } } else { if (UseContestEngine()) showunit=LKFormatValue(LK_OLC_CLASSIC_DIST, true, BufferValue, BufferUnit, BufferTitle); else showunit=LKFormatValue(LK_ODOMETER, true, BufferValue, BufferUnit, BufferTitle); // 100221 } break; case BM_TSK: showunit=LKFormatValue(LK_FIN_ALTDIFF, true, BufferValue, BufferUnit, BufferTitle); // 100221 break; case BM_ALT: if (ScreenLandscape) { showunit=LKFormatValue(LK_BESTALTERN_ARRIV, false, BufferValue, BufferUnit, BufferTitle); wcscpy(BufferTitle,_T("<<<")); } else { showunit=LKFormatValue(LK_ALTERN1_GR, true, BufferValue, BufferUnit, BufferTitle); BufferTitle[7]='\0'; } break; case BM_SYS: showunit=LKFormatValue(LK_EXTBATT1VOLT, true, BufferValue, BufferUnit, BufferTitle); // 100221 break; case BM_CUS2: index=GetInfoboxIndex(2,MapWindow::Mode::MODE_FLY_CRUISE); showunit=LKFormatValue(index, true, BufferValue, BufferUnit, BufferTitle); BufferTitle[7]='\0'; break; case BM_CUS3: index=GetInfoboxIndex(2,MapWindow::Mode::MODE_FLY_FINAL_GLIDE); showunit=LKFormatValue(index, true, BufferValue, BufferUnit, BufferTitle); BufferTitle[7]='\0'; break; case BM_CUS: index=GetInfoboxType(2); showunit=LKFormatValue(index, false, BufferValue, BufferUnit, BufferTitle); BufferTitle[7]='\0'; break; default: showunit=LKFormatValue(LK_ERROR, false, BufferValue, BufferUnit, BufferTitle); break; } rcx+=splitoffset; if (ScreenLandscape) { #include "LKMW3include_navbox1.cpp" } else { #include "LKMW3include_navbox2.cpp" } LKWriteText(hdc, BufferTitle, rcx+NIBLSCALE(7), rcy, 0, WTMODE_NORMAL,WTALIGN_CENTER,barTextColor, false); /* * THIRD VALUE */ showunit=true; switch(BottomMode) { case BM_TRM: index=GetInfoboxIndex(3,MapWindow::Mode::MODE_FLY_CIRCLING); showunit=LKFormatValue(index, true, BufferValue, BufferUnit, BufferTitle); BufferTitle[7]='\0'; break; case BM_CRU: showunit=LKFormatValue(LK_HNAV, true, BufferValue, BufferUnit, BufferTitle); // 100221 break; case BM_HGH: showunit=LKFormatValue(LK_QFE, true, BufferValue, BufferUnit, BufferTitle); break; case BM_AUX: if (ISCAR) { _stprintf(BufferTitle, MsgToken(1811)); // Total if (DerivedDrawInfo.Flying) { showunit=Units::TimeToTextDown(BufferValue, (int)(Trip_Steady_Time+Trip_Moving_Time)); if (showunit) _stprintf(BufferUnit, _T("h")); else _stprintf(BufferUnit, _T("")); showunit=true; } else { wsprintf(BufferValue, TEXT("--:--")); showunit=false; } } else { showunit=LKFormatValue(LK_TIMEFLIGHT, true, BufferValue, BufferUnit, BufferTitle); // 100221 } break; case BM_TSK: showunit=LKFormatValue(LK_FIN_ETE, true, BufferValue, BufferUnit, BufferTitle); break; case BM_ALT: if (ScreenLandscape) showunit=LKFormatValue(LK_ALTERN1_GR, true, BufferValue, BufferUnit, BufferTitle); // 100221 else showunit=LKFormatValue(LK_ALTERN2_GR, true, BufferValue, BufferUnit, BufferTitle); // 100221 BufferTitle[7]='\0'; break; case BM_SYS: showunit=true; wsprintf(BufferUnit, TEXT("")); if (SIMMODE) { // LKTOKEN _@M1199_ "Sat" wsprintf(BufferTitle, MsgToken(1199)); wsprintf(BufferValue,TEXT("SIM")); } else { Value=DrawInfo.SatellitesUsed; if (Value<1 || Value>30) { wsprintf(BufferValue,TEXT("---")); } else { sprintf(text,"%d",(int)Value); wsprintf(BufferValue, TEXT("%S"),text); } if (nmeaParser1.activeGPS == true) // LKTOKEN _@M1199_ "Sat" wsprintf(BufferTitle, TEXT("%s:A"), MsgToken(1199)); else { if (nmeaParser2.activeGPS == true) // LKTOKEN _@M1199_ "Sat" wsprintf(BufferTitle, TEXT("%s:B"), MsgToken(1199)); else // LKTOKEN _@M1199_ "Sat" wsprintf(BufferTitle, TEXT("%s:?"), MsgToken(1199)); } } break; case BM_CUS2: index=GetInfoboxIndex(3,MapWindow::Mode::MODE_FLY_CRUISE); showunit=LKFormatValue(index, true, BufferValue, BufferUnit, BufferTitle); BufferTitle[7]='\0'; break; case BM_CUS3: index=GetInfoboxIndex(3,MapWindow::Mode::MODE_FLY_FINAL_GLIDE); showunit=LKFormatValue(index, true, BufferValue, BufferUnit, BufferTitle); BufferTitle[7]='\0'; break; case BM_CUS: index=GetInfoboxType(3); showunit=LKFormatValue(index, true, BufferValue, BufferUnit, BufferTitle); BufferTitle[7]='\0'; break; default: showunit=LKFormatValue(LK_ERROR, true, BufferValue, BufferUnit, BufferTitle); break; } rcx+=splitoffset; if (ScreenLandscape) { #include "LKMW3include_navbox1.cpp" } else { #include "LKMW3include_navbox2.cpp" } LKWriteText(hdc, BufferTitle, rcx+NIBLSCALE(7), rcy, 0, WTMODE_NORMAL,WTALIGN_CENTER,barTextColor, false); /* * FOURTH VALUE */ showunit=true; switch(BottomMode) { case BM_TRM: index=GetInfoboxIndex(4,MapWindow::Mode::MODE_FLY_CIRCLING); showunit=LKFormatValue(index, true, BufferValue, BufferUnit, BufferTitle); BufferTitle[7]='\0'; break; case BM_CRU: showunit=LKFormatValue(LK_TRACK, true, BufferValue, BufferUnit, BufferTitle); break; case BM_HGH: showunit=LKFormatValue(LK_HAGL, true, BufferValue, BufferUnit, BufferTitle); break; case BM_AUX: if (ISCAR) { _stprintf(BufferValue,_T("%.1f"),SPEEDMODIFY*Rotary_Speed); _stprintf(BufferTitle,_T("AvgSpd")); wsprintf(BufferUnit, TEXT("%s"),(Units::GetHorizontalSpeedName())); showunit=true; } else { showunit=LKFormatValue(LK_HOME_DIST, true, BufferValue, BufferUnit, BufferTitle); } break; case BM_TSK: showunit=LKFormatValue(LK_TASK_DISTCOV, true, BufferValue, BufferUnit, BufferTitle); break; case BM_ALT: if (ScreenLandscape) { showunit=LKFormatValue(LK_ALTERN1_ARRIV, true, BufferValue, BufferUnit, BufferTitle); // 100221 wcscpy(BufferTitle,_T("<<<")); } else { showunit=LKFormatValue(LK_BESTALTERN_ARRIV, true, BufferValue, BufferUnit, BufferTitle); // 100221 wcscpy(BufferTitle,_T("")); } break; case BM_SYS: // LKTOKEN _@M1068_ "HBAR" wsprintf(BufferTitle, MsgToken(1068)); if (DrawInfo.BaroAltitudeAvailable) { if (EnableNavBaroAltitude) // LKTOKEN _@M894_ "ON" wsprintf(BufferValue,MsgToken(894)); else // LKTOKEN _@M491_ "OFF" wsprintf(BufferValue,MsgToken(491)); } else wsprintf(BufferValue,TEXT("---")); showunit=false; break; case BM_CUS2: index=GetInfoboxIndex(4,MapWindow::Mode::MODE_FLY_CRUISE); showunit=LKFormatValue(index, true, BufferValue, BufferUnit, BufferTitle); BufferTitle[7]='\0'; break; case BM_CUS3: index=GetInfoboxIndex(4,MapWindow::Mode::MODE_FLY_FINAL_GLIDE); showunit=LKFormatValue(index, true, BufferValue, BufferUnit, BufferTitle); BufferTitle[7]='\0'; break; case BM_CUS: index=GetInfoboxType(4); showunit=LKFormatValue(index, true, BufferValue, BufferUnit, BufferTitle); BufferTitle[7]='\0'; break; default: showunit=LKFormatValue(LK_ERROR, true, BufferValue, BufferUnit, BufferTitle); break; } if (ScreenLandscape) { rcx+=splitoffset; }else { rcx=rc.left+(splitoffset2/2); } #include "LKMW3include_navbox1.cpp" LKWriteText(hdc, BufferTitle, rcx+NIBLSCALE(7), rcy, 0, WTMODE_NORMAL,WTALIGN_CENTER,barTextColor, false); /* * FIFTH VALUE */ if (ScreenLandscape && (splitter<5)) goto EndOfNavboxes; showunit=true; switch(BottomMode) { case BM_TRM: index=GetInfoboxIndex(5,MapWindow::Mode::MODE_FLY_CIRCLING); showunit=LKFormatValue(index, true, BufferValue, BufferUnit, BufferTitle); BufferTitle[7]='\0'; break; case BM_CRU: if (ISCAR) { _tcscpy(BufferTitle,MsgToken(2091)); // Averag (speed average really) int totime=(int)(Trip_Steady_Time+Trip_Moving_Time); if (totime>0) { _stprintf(BufferValue,_T("%.1f"),(DerivedDrawInfo.Odometer*SPEEDMODIFY)/totime); wsprintf(BufferUnit, TEXT("%s"),(Units::GetHorizontalSpeedName())); } else { wsprintf(BufferValue, TEXT("---")); showunit=false; } } else showunit=LKFormatValue(LK_HEADWINDSPEED, true, BufferValue, BufferUnit, BufferTitle); break; case BM_HGH: showunit=LKFormatValue(LK_FL, true, BufferValue, BufferUnit, BufferTitle); break; case BM_AUX: if (ISCAR) { if (Rotary_Distance<100000) { _stprintf(BufferValue,_T("%.2f"),DISTANCEMODIFY*Rotary_Distance); } else { _stprintf(BufferValue,_T("%.2f"),0); } _stprintf(BufferTitle,_T("AvgDist")); wsprintf(BufferUnit, TEXT("%s"),(Units::GetDistanceName())); showunit=true; } else { showunit=LKFormatValue(LK_MAXALT, true, BufferValue, BufferUnit, BufferTitle); } break; case BM_TSK: // TODO MAKE IT LKPROCESS Value=ALTITUDEMODIFY*DerivedDrawInfo.TaskStartAltitude; if (Value>0) { sprintf(text,"%d",(int)Value); wsprintf(BufferValue, TEXT("%S"),text); wsprintf(BufferUnit, TEXT("%s"),(Units::GetAltitudeName())); } else { wsprintf(BufferValue, TEXT("---")); wsprintf(BufferUnit, TEXT("")); showunit=false; } // LKTOKEN _@M1200_ "Start" wsprintf(BufferTitle, MsgToken(1200)); break; case BM_ALT: if (ScreenLandscape) { showunit=LKFormatValue(LK_ALTERN2_GR, true, BufferValue, BufferUnit, BufferTitle); // 100221 BufferTitle[7]='\0'; } else { showunit=LKFormatValue(LK_ALTERN1_ARRIV, false, BufferValue, BufferUnit, BufferTitle); // 100221 wcscpy(BufferTitle,_T("")); } break; case BM_SYS: //showunit=LKFormatValue(LK_LOGGER, true, BufferValue, BufferUnit, BufferTitle); showunit=true; extern int CpuSummary(); _stprintf(BufferValue,_T("%d"),CpuSummary()); wcscpy(BufferTitle,_T("CPU")); wcscpy(BufferUnit,_T("%")); break; case BM_CUS2: index=GetInfoboxIndex(5,MapWindow::Mode::MODE_FLY_CRUISE); showunit=LKFormatValue(index, true, BufferValue, BufferUnit, BufferTitle); BufferTitle[7]='\0'; break; case BM_CUS3: index=GetInfoboxIndex(5,MapWindow::Mode::MODE_FLY_FINAL_GLIDE); showunit=LKFormatValue(index, true, BufferValue, BufferUnit, BufferTitle); BufferTitle[7]='\0'; break; case BM_CUS: index=GetInfoboxType(5); showunit=LKFormatValue(index, true, BufferValue, BufferUnit, BufferTitle); BufferTitle[7]='\0'; break; default: showunit=LKFormatValue(LK_ERROR, true, BufferValue, BufferUnit, BufferTitle); break; } if (ScreenLandscape) { rcx+=splitoffset; }else { rcx+=splitoffset2; } #include "LKMW3include_navbox1.cpp" LKWriteText(hdc, BufferTitle, rcx+NIBLSCALE(3), rcy, 0, WTMODE_NORMAL,WTALIGN_CENTER,barTextColor, false); /* * SIXTH VALUE */ if (ScreenLandscape && (splitter<6)) goto EndOfNavboxes; showunit=true; switch(BottomMode) { case BM_TRM: index=GetInfoboxIndex(6,MapWindow::Mode::MODE_FLY_CIRCLING); showunit=LKFormatValue(index, true, BufferValue, BufferUnit, BufferTitle); BufferTitle[7]='\0'; break; case BM_CRU: if (ISCAR) showunit=LKFormatValue(LK_TIME_LOCAL, false, BufferValue, BufferUnit, BufferTitle); else showunit=LKFormatValue(LK_LD_INST, true, BufferValue, BufferUnit, BufferTitle); break; case BM_HGH: showunit=LKFormatValue(LK_AQNH, true, BufferValue, BufferUnit, BufferTitle); // 100221 break; case BM_AUX: if (ISCAR) showunit=LKFormatValue(LK_MAXALT, true, BufferValue, BufferUnit, BufferTitle); else showunit=LKFormatValue(LK_ODOMETER, true, BufferValue, BufferUnit, BufferTitle); // 100221 break; case BM_TSK: showunit=LKFormatValue(LK_SPEEDTASK_ACH, true, BufferValue, BufferUnit, BufferTitle); break; case BM_ALT: showunit=LKFormatValue(LK_ALTERN2_ARRIV, true, BufferValue, BufferUnit, BufferTitle); // 100221 if (ScreenLandscape) wcscpy(BufferTitle,_T("<<<")); else wcscpy(BufferTitle,_T("")); break; case BM_SYS: showunit=LKFormatValue(LK_LOGGER, true, BufferValue, BufferUnit, BufferTitle); break; case BM_CUS2: index=GetInfoboxIndex(6,MapWindow::Mode::MODE_FLY_CRUISE); showunit=LKFormatValue(index, true, BufferValue, BufferUnit, BufferTitle); BufferTitle[7]='\0'; break; case BM_CUS3: index=GetInfoboxIndex(6,MapWindow::Mode::MODE_FLY_FINAL_GLIDE); showunit=LKFormatValue(index, true, BufferValue, BufferUnit, BufferTitle); BufferTitle[7]='\0'; break; case BM_CUS: index=GetInfoboxType(6); showunit=LKFormatValue(index, true, BufferValue, BufferUnit, BufferTitle); BufferTitle[7]='\0'; break; default: showunit=LKFormatValue(LK_ERROR, true, BufferValue, BufferUnit, BufferTitle); break; } if (ScreenLandscape) { rcx+=splitoffset; }else { rcx+=splitoffset2; } #include "LKMW3include_navbox1.cpp" LKWriteText(hdc, BufferTitle, rcx+NIBLSCALE(3), rcy, 0, WTMODE_NORMAL,WTALIGN_CENTER,barTextColor, false); /* * CLEAN UP */ EndOfNavboxes: ; // restore objects here, before returning }
void MapWindow::DrawInfoPage(HDC hdc, RECT rc, bool forceinit ) { HFONT oldfont=0; //SIZE TextSize; TCHAR Buffer[LKSIZEBUFFERLARGE]; TCHAR BufferTitle[LKSIZEBUFFERTITLE]; TCHAR BufferValue[LKSIZEBUFFERVALUE]; TCHAR BufferUnit[LKSIZEBUFFERUNIT]; TCHAR Empty[2]; // 100407 int index=-1; static short column[PANELCOLUMNS+1], hcolumn[(PANELCOLUMNS*2)+1], qcolumn[(PANELCOLUMNS*4)+1]; static short row[PANELROWS+1], hrow[(PANELCOLUMNS*2)+1], qrow[(PANELROWS*4)+1]; bool showunit=false; _tcscpy(Empty,_T("")); if (forceinit) DoInit[MDI_DRAWINFOPAGE]=true; oldfont = (HFONT)SelectObject(hdc, LKINFOFONT); // save font if (DoInit[MDI_DRAWINFOPAGE]) { DoInit[MDI_DRAWINFOPAGE]=false; // function can only be called in fullscreen and thus can be inited here column[0]=LEFTLIMITER; column[1]=((rc.right-RIGHTLIMITER-LEFTLIMITER)/PANELCOLUMNS)+LEFTLIMITER; column[2]=column[1]*2-LEFTLIMITER; column[3]=column[1]*3-LEFTLIMITER*2; column[PANELCOLUMNS]=rc.right-RIGHTLIMITER; row[0]=rc.top+TOPLIMITER; row[1]=((rc.bottom-BottomSize-row[0]-BOTTOMLIMITER)/PANELROWS)+row[0]; row[2]=((rc.bottom-BottomSize-row[0]-BOTTOMLIMITER)/PANELROWS)*2+row[0]; row[3]=((rc.bottom-BottomSize-row[0]-BOTTOMLIMITER)/PANELROWS)*3+row[0]; row[PANELROWS]=rc.bottom-BottomSize-BOTTOMLIMITER; hcolumn[0]=column[0]; hcolumn[1]=(column[1]-column[0])/2; hcolumn[2]=column[1]; hcolumn[3]=(column[2]-column[1])/2+column[1]; hcolumn[4]=column[2]; hcolumn[5]=(column[3]-column[2])/2+column[2]; hcolumn[6]=column[3]; hcolumn[7]=(column[4]-column[3])/2+column[3]; hcolumn[8]=column[4]; hrow[0]=row[0]; hrow[1]=(row[1]-row[0])/2; hrow[2]=row[1]; hrow[3]=(row[2]-row[1])/2+row[1]; hrow[4]=row[2]; hrow[5]=(row[3]-row[2])/2+row[2]; hrow[6]=row[3]; hrow[7]=(row[4]-row[3])/2+row[3]; hrow[8]=row[4]; qcolumn[0]=hcolumn[0]; qcolumn[1]=(hcolumn[1]-hcolumn[0])/2+hcolumn[0]; qcolumn[2]=hcolumn[1]; qcolumn[3]=(hcolumn[2]-hcolumn[1])/2+hcolumn[1]; qcolumn[4]=hcolumn[2]; qcolumn[5]=(hcolumn[3]-hcolumn[2])/2+hcolumn[2]; qcolumn[6]=hcolumn[3]; qcolumn[7]=(hcolumn[4]-hcolumn[3])/2+hcolumn[3]; qcolumn[8]=hcolumn[4]; qcolumn[9]=(hcolumn[5]-hcolumn[4])/2+hcolumn[4]; qcolumn[10]=hcolumn[5]; qcolumn[11]=(hcolumn[6]-hcolumn[5])/2+hcolumn[5]; qcolumn[12]=hcolumn[6]; qcolumn[13]=(hcolumn[7]-hcolumn[6])/2+hcolumn[6]; qcolumn[14]=hcolumn[7]; qcolumn[15]=(hcolumn[8]-hcolumn[7])/2+hcolumn[7]; qcolumn[16]=hcolumn[8]; qrow[0]=hrow[0]; qrow[1]=(hrow[1]-hrow[0])/2+hrow[0]; qrow[2]=hrow[1]; qrow[3]=(hrow[2]-hrow[1])/2+hrow[1]; qrow[4]=hrow[2]; qrow[5]=(hrow[3]-hrow[2])/2+hrow[2]; qrow[6]=hrow[3]; qrow[7]=(hrow[4]-hrow[3])/2+hrow[3]; qrow[8]=hrow[4]; qrow[9]=(hrow[5]-hrow[4])/2+hrow[4]; qrow[10]=hrow[5]; qrow[11]=(hrow[6]-hrow[5])/2+hrow[5]; qrow[12]=hrow[6]; qrow[13]=(hrow[7]-hrow[6])/2+hrow[6]; qrow[14]=hrow[7]; qrow[15]=(hrow[8]-hrow[7])/2+hrow[7]; qrow[16]=hrow[8]; qrow[5]+=NIBLSCALE(6); qrow[6]+=NIBLSCALE(6); qrow[7]+=NIBLSCALE(6); qrow[8]+=NIBLSCALE(6)*2; qrow[9]+=NIBLSCALE(6)*2; qrow[10]+=NIBLSCALE(6)*2; qrow[11]+=NIBLSCALE(6)*3; qrow[12]+=NIBLSCALE(6)*3; qrow[13]+=NIBLSCALE(6)*3; } // doinit #include "./LKMW3include2.cpp" SelectObject(hdc, LK8PanelBigFont); #include "./LKMW3include1.cpp" int curtype; // 100404 bool ontarget=false; FLARM_TRAFFIC *pTarget=NULL; if ( (MapSpaceMode != MSM_INFO_TRF) && (MapSpaceMode != MSM_INFO_TARGET) ) { curtype=CURTYPE; } else { if (MapSpaceMode == MSM_INFO_TRF) curtype=IM_TRF + IM_TOP; else curtype=IM_TARGET + IM_TOP; if (LKTargetIndex<0 || LKTargetIndex>=MAXTRAFFIC) { ontarget=false; } else { if (DrawInfo.FLARM_Traffic[LKTargetIndex].ID <=0) { ontarget=false; } else { ontarget=true; pTarget=&DrawInfo.FLARM_Traffic[LKTargetIndex]; } } } if (ontarget) DoTarget(&DrawInfo, &DerivedDrawInfo); switch (LKevent) { case LKEVENT_NONE: break; case LKEVENT_ENTER: break; case LKEVENT_NEWRUN: break; case LKEVENT_PAGEUP: break; case LKEVENT_PAGEDOWN: break; default: break; } LKevent=LKEVENT_NONE; COLORREF icolor; // 091229 // R0 C0 = status SelectObject(hdc, LK8PanelMediumFont); switch(curtype) { case IM_THERMAL: _stprintf(Buffer,_T("%d.%d %s"),ModeIndex, curtype+1, gettext(TEXT("_@M905_"))); // Thermal break; case IM_CRUISE: _stprintf(Buffer,_T("%d.%d %s"),ModeIndex, curtype+1, gettext(TEXT("_@M906_"))); // Cruise break; case IM_TASK: _stprintf(Buffer,_T("%d.%d %s"),ModeIndex, curtype+1, gettext(TEXT("_@M907_"))); // Task break; case IM_AUX: _stprintf(Buffer,_T("%d.%d %s"),ModeIndex, curtype+1, gettext(TEXT("_@M908_"))); // Custom break; case IM_TRI: #ifndef LKCOMPETITION _stprintf(Buffer,_T("%d.%d %s"), ModeIndex, curtype+1, gettext(TEXT("_@M909_"))); // Turn #else _stprintf(Buffer,_T("%d.%d %s"), ModeIndex, curtype+1, gettext(TEXT("_@M1600_"))); // DISABLED #endif break; case IM_HSI: wsprintf(Buffer,_T("%d.%d %s"), ModeIndex, curtype+1, gettext(TEXT("_@M1860_"))); // HSI break; case IM_CONTEST: _stprintf(Buffer,_T("%d.%d %s"), ModeIndex, curtype+1, gettext(TEXT("_@M957_"))); // Contest break; case IM_TRF+IM_TOP: _stprintf(Buffer,_T("%d.%d %s"), ModeIndex, IM_TRF+1, gettext(TEXT("_@M910_"))); // Target break; case IM_TARGET+IM_TOP: _stprintf(Buffer,_T("%d.%d %s"), ModeIndex, IM_TARGET+1, gettext(TEXT("_@M911_"))); // Sight break; default: _stprintf(Buffer,_T("error")); break; } LKWriteText(hdc, Buffer, qcolumn[0],qrow[0], 0, WTMODE_NORMAL, WTALIGN_LEFT, RGB_LIGHTGREEN, false); // R0 C1 icolor=RGB_WHITE; switch(curtype) { case IM_THERMAL: case IM_CRUISE: case IM_TASK: case IM_AUX: if ( ValidTaskPoint(ActiveWayPoint) != false ) { index = Task[ActiveWayPoint].Index; if ( index >=0 ) { _tcscpy(Buffer, WayPointList[index].Name); } else { _stprintf(Buffer,gettext(TEXT("_@M912_"))); // [no dest] icolor=RGB_AMBER; } } else { _stprintf(Buffer,gettext(TEXT("_@M912_"))); // [no dest] icolor=RGB_AMBER; } break; case IM_TRI: #ifndef LKCOMPETITION _stprintf(Buffer,gettext(TEXT("_@M913_"))); // Experimental #else _stprintf(Buffer,_T("---")); #endif break; case IM_CONTEST: case IM_HSI: //for the HSI the title text is computed in his section down _stprintf(Buffer,gettext(TEXT(""))); break; case IM_TRF+IM_TOP: case IM_TARGET+IM_TOP: if (ontarget) { switch (pTarget->Status ) { case LKT_GHOST: icolor=RGB_LIGHTYELLOW; break; case LKT_ZOMBIE: icolor=RGB_LIGHTRED; break; default: icolor=RGB_WHITE; break; } //TCHAR status[80]; if (_tcslen(pTarget->Name) == 1) { _stprintf(Buffer,_T("%0x"),(unsigned)pTarget->ID); } else { _stprintf(Buffer,_T("%s"),pTarget->Name); } } else { _stprintf(Buffer,gettext(TEXT("_@M914_"))); // [no target] icolor=RGB_AMBER; } break; default: _stprintf(Buffer,_T("error")); icolor=RGB_AMBER; break; } LKWriteText(hdc, Buffer, qcolumn[8],qrow[1], 0, WTMODE_NORMAL, WTALIGN_CENTER, icolor, false); // R0 C2 = time of day if ( (curtype == (IM_TOP+IM_TRF)) || (curtype == (IM_TOP+IM_TARGET)) ) { if (ontarget) { TCHAR tpas[30]; Units::TimeToTextDown(tpas,(int)(DrawInfo.Time - pTarget->Time_Fix)); switch (pTarget->Status) { case LKT_REAL: _stprintf(Buffer,_T("LIVE")); break; case LKT_GHOST: _stprintf(Buffer,_T("ghost %s\""),tpas); break; case LKT_ZOMBIE: _stprintf(Buffer,_T("zombie %s\""),tpas); break; default: _stprintf(Buffer,_T("??? %s\""),tpas); break; } LKWriteText(hdc, Buffer, qcolumn[16],qrow[0], 0, WTMODE_NORMAL, WTALIGN_RIGHT, icolor, false); } else { LKFormatValue(LK_TIME_LOCALSEC, false, BufferValue, BufferUnit, BufferTitle); // 091219 LKWriteText(hdc, BufferValue, qcolumn[16],qrow[0], 0, WTMODE_NORMAL, WTALIGN_RIGHT, RGB_WHITE, false); } if ( curtype == (IM_TOP+IM_TARGET) ) goto label_Target; } else { LKFormatValue(LK_TIME_LOCALSEC, false, BufferValue, BufferUnit, BufferTitle); // 091219 LKWriteText(hdc, BufferValue, qcolumn[16],qrow[0], 0, WTMODE_NORMAL, WTALIGN_RIGHT, RGB_WHITE, false); } if (curtype == IM_TRI) goto label_TRI; if (curtype == IM_HSI) goto label_HSI; VDrawLine(hdc,rc, qcolumn[0],qrow[2],qcolumn[16],qrow[2],RGB_DARKGREEN); VDrawLine(hdc,rc, qcolumn[0],qrow[8],qcolumn[16],qrow[8],RGB_DARKGREEN); // R1 C1 showunit=false; switch(curtype) { case IM_THERMAL: showunit=LKFormatValue(LK_NEXT_DIST, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[4], &qcolumn[4], &qrow[3],&qrow[4],&qrow[2]); break; case IM_CRUISE: case IM_TASK: showunit=LKFormatValue(LK_NEXT_DIST, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[4], &qcolumn[4], &qrow[3],&qrow[4],&qrow[2]); break; case IM_AUX: index=GetInfoboxType(1); showunit=LKFormatValue(index, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[4], &qcolumn[4], &qrow[3],&qrow[4],&qrow[2]); break; case IM_CONTEST: showunit=LKFormatValue(LK_OLC_CLASSIC_DIST, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[4], &qcolumn[4], &qrow[3],&qrow[4],&qrow[2]); break; case IM_TRF+IM_TOP: showunit=LKFormatValue(LK_TARGET_DIST, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[4], &qcolumn[4], &qrow[3],&qrow[4],&qrow[2]); break; default: LKFormatValue(LK_ERROR, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[4], &qcolumn[4], &qrow[3],&qrow[4],&qrow[2]); break; } // R1 C2 showunit=false; switch(curtype) { case IM_THERMAL: showunit=LKFormatValue(LK_BRG, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[8],&qcolumn[8], &qrow[3],&qrow[4],&qrow[2]); break; case IM_CRUISE: case IM_TASK: showunit=LKFormatValue(LK_BRGDIFF, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[9],&qcolumn[8], &qrow[3],&qrow[4],&qrow[2]); break; case IM_CONTEST: showunit=LKFormatValue(LK_OLC_FAI_DIST, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[8],&qcolumn[8], &qrow[3],&qrow[4],&qrow[2]); break; case IM_AUX: index=GetInfoboxType(2); showunit=LKFormatValue(index, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[8],&qcolumn[8], &qrow[3],&qrow[4],&qrow[2]); break; case IM_TRF+IM_TOP: showunit=LKFormatValue(LK_TARGET_TO, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[9],&qcolumn[8], &qrow[3],&qrow[4],&qrow[2]); break; default: LKFormatValue(LK_ERROR, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[9],&qcolumn[8], &qrow[3],&qrow[4],&qrow[2]); break; } // R1 C3 showunit=false; switch(curtype) { case IM_THERMAL: showunit=LKFormatValue(LK_NEXT_ALTDIFF, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[12], &qcolumn[12], &qrow[3],&qrow[4],&qrow[2]); break; case IM_CRUISE: case IM_TASK: showunit=LKFormatValue(LK_NEXT_GR, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[12], &qcolumn[12], &qrow[3],&qrow[4],&qrow[2]); break; case IM_CONTEST: showunit=LKFormatValue(LK_OLC_LEAGUE_DIST, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[12], &qcolumn[12], &qrow[3],&qrow[4],&qrow[2]); break; case IM_AUX: index=GetInfoboxType(3); showunit=LKFormatValue(index, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[12], &qcolumn[12], &qrow[3],&qrow[4],&qrow[2]); break; case IM_TRF+IM_TOP: showunit=LKFormatValue(LK_TARGET_GR, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[12], &qcolumn[12], &qrow[3],&qrow[4],&qrow[2]); break; default: LKFormatValue(LK_ERROR, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[12], &qcolumn[12], &qrow[3],&qrow[4],&qrow[2]); break; } // R1 C4 showunit=false; switch(curtype) { case IM_THERMAL: showunit=LKFormatValue(LK_NEXT_GR, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[16],&qcolumn[16], &qrow[3],&qrow[4],&qrow[2]); break; case IM_CRUISE: case IM_TASK: showunit=LKFormatValue(LK_LD_AVR, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[16],&qcolumn[16], &qrow[3],&qrow[4],&qrow[2]); break; case IM_CONTEST: showunit=LKFormatValue(LK_OLC_3TPS_DIST, false, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[16],&qcolumn[16], &qrow[3],&qrow[4],&qrow[2]); break; case IM_AUX: index=GetInfoboxType(4); showunit=LKFormatValue(index, false, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[16],&qcolumn[16], &qrow[3],&qrow[4],&qrow[2]); break; case IM_TRF+IM_TOP: showunit=LKFormatValue(LK_TARGET_ALTARRIV, false, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[16],&qcolumn[16], &qrow[3],&qrow[4],&qrow[2]); break; default: LKFormatValue(LK_ERROR, false, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[16],&qcolumn[16], &qrow[3],&qrow[4],&qrow[2]); break; } // R2 C1 showunit=false; switch(curtype) { case IM_THERMAL: showunit=LKFormatValue(LK_HNAV, false, BufferValue, BufferUnit, BufferTitle); break; case IM_CRUISE: case IM_TASK: showunit=LKFormatValue(LK_NEXT_ALTDIFF, false, BufferValue, BufferUnit, BufferTitle); break; case IM_CONTEST: showunit=LKFormatValue(LK_OLC_CLASSIC_PREDICTED_DIST, false, BufferValue, BufferUnit, BufferTitle); break; case IM_AUX: index=GetInfoboxType(5); showunit=LKFormatValue(index, false, BufferValue, BufferUnit, BufferTitle); break; case IM_TRF+IM_TOP: showunit=LKFormatValue(LK_TARGET_ALTDIFF, false, BufferValue, BufferUnit, BufferTitle); break; default: LKFormatValue(LK_ERROR, false, BufferValue, BufferUnit, BufferTitle); break; } WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[4],&qcolumn[4], &qrow[6],&qrow[7],&qrow[5]); // R2 C2 showunit=false; switch(curtype) { case IM_THERMAL: showunit=LKFormatValue(LK_GNDSPEED, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[8], &qcolumn[8], &qrow[6],&qrow[7],&qrow[5]); break; case IM_CRUISE: case IM_TASK: showunit=LKFormatValue(LK_BRG, true , BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[9], &qcolumn[8], &qrow[6],&qrow[7],&qrow[5]); break; case IM_CONTEST: showunit=LKFormatValue(LK_OLC_FAI_PREDICTED_DIST, true , BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[8], &qcolumn[8], &qrow[6],&qrow[7],&qrow[5]); break; case IM_AUX: index=GetInfoboxType(6); showunit=LKFormatValue(index, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[8], &qcolumn[8], &qrow[6],&qrow[7],&qrow[5]); break; case IM_TRF+IM_TOP: showunit=LKFormatValue(LK_TARGET_BEARING, true , BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[9], &qcolumn[8], &qrow[6],&qrow[7],&qrow[5]); break; default: LKFormatValue(LK_ERROR, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[9], &qcolumn[8], &qrow[6],&qrow[7],&qrow[5]); break; } // R2 C3 showunit=false; switch(curtype) { case IM_THERMAL: showunit=LKFormatValue(LK_VARIO, false, BufferValue, BufferUnit, BufferTitle); break; case IM_CRUISE: case IM_TASK: showunit=LKFormatValue(LK_LD_CRUISE, false, BufferValue, BufferUnit, BufferTitle); break; case IM_CONTEST: _tcscpy(BufferValue,_T("")); _tcscpy(BufferTitle,_T("")); break; case IM_AUX: index=GetInfoboxType(7); showunit=LKFormatValue(index, false, BufferValue, BufferUnit, BufferTitle); break; case IM_TRF+IM_TOP: showunit=LKFormatValue(LK_EMPTY, true , BufferValue, BufferUnit, BufferTitle); break; default: LKFormatValue(LK_ERROR, false, BufferValue, BufferUnit, BufferTitle); break; } WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[12], &qcolumn[12],&qrow[6],&qrow[7],&qrow[5]); // R2 C4 showunit=false; switch(curtype) { case IM_THERMAL: showunit=LKFormatValue(LK_FL, false, BufferValue, BufferUnit, BufferTitle); break; case IM_CRUISE: case IM_TASK: showunit=LKFormatValue(LK_LD_INST, false, BufferValue, BufferUnit, BufferTitle); break; case IM_CONTEST: showunit=LKFormatValue(LK_OLC_3TPS_PREDICTED_DIST, false, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); break; case IM_AUX: index=GetInfoboxType(8); showunit=LKFormatValue(index, false, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); break; case IM_TRF+IM_TOP: showunit=LKFormatValue(LK_EMPTY, false, BufferValue, BufferUnit, BufferTitle); break; default: LKFormatValue(LK_ERROR, false, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); break; } WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[16], &qcolumn[16],&qrow[6],&qrow[7],&qrow[5]); // R3 C1 showunit=false; switch(curtype) { case IM_THERMAL: showunit=LKFormatValue(LK_TC_GAIN, false, BufferValue, BufferUnit, BufferTitle); break; case IM_CRUISE: showunit=LKFormatValue(LK_HNAV, false, BufferValue, BufferUnit, BufferTitle); break; case IM_TASK: showunit=LKFormatValue(LK_FIN_ALTDIFF, false, BufferValue, BufferUnit, BufferTitle); break; case IM_CONTEST: //showunit=LKFormatValue(LK_OLC_PLUS_SCORE, false, BufferValue, BufferUnit, BufferTitle); showunit=LKFormatValue(LK_OLC_CLASSIC_SPEED, false, BufferValue, BufferUnit, BufferTitle); break; case IM_AUX: index=GetInfoboxType(9); showunit=LKFormatValue(index, false, BufferValue, BufferUnit, BufferTitle); break; case IM_TRF+IM_TOP: showunit=LKFormatValue(LK_TARGET_ALT, false, BufferValue, BufferUnit, BufferTitle); break; default: LKFormatValue(LK_ERROR, false, BufferValue, BufferUnit, BufferTitle); break; } WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[4], &qcolumn[4],&qrow[9],&qrow[10],&qrow[8]); // R3 C2 showunit=false; switch(curtype) { case IM_THERMAL: showunit=LKFormatValue(LK_TC_30S, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[8], &qcolumn[8],&qrow[9],&qrow[10],&qrow[8]); break; case IM_CRUISE: showunit=LKFormatValue(LK_TRACK, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[9], &qcolumn[8],&qrow[9],&qrow[10],&qrow[8]); break; case IM_TASK: showunit=LKFormatValue(LK_FIN_DIST, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[8], &qcolumn[8],&qrow[9],&qrow[10],&qrow[8]); break; case IM_CONTEST: //showunit=LKFormatValue(LK_OLC_PLUS_PREDICTED_SCORE, false, BufferValue, BufferUnit, BufferTitle); showunit=LKFormatValue(LK_OLC_FAI_SPEED, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[8], &qcolumn[8],&qrow[9],&qrow[10],&qrow[8]); break; case IM_AUX: index=GetInfoboxType(10); showunit=LKFormatValue(index, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[8], &qcolumn[8],&qrow[9],&qrow[10],&qrow[8]); break; case IM_TRF+IM_TOP: showunit=LKFormatValue(LK_TARGET_SPEED, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[8], &qcolumn[8],&qrow[9],&qrow[10],&qrow[8]); break; default: LKFormatValue(LK_ERROR, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[9], &qcolumn[8],&qrow[9],&qrow[10],&qrow[8]); break; } // R3 C3 showunit=false; switch(curtype) { case IM_THERMAL: showunit=LKFormatValue(LK_TC_AVG, false, BufferValue, BufferUnit, BufferTitle); break; case IM_CRUISE: showunit=LKFormatValue(LK_GNDSPEED, false, BufferValue, BufferUnit, BufferTitle); break; case IM_TASK: showunit=LKFormatValue(LK_TASK_DISTCOV, false, BufferValue, BufferUnit, BufferTitle); break; case IM_CONTEST: //showunit=LKFormatValue(LK_OLC_LEAGUE_SCORE, false, BufferValue, BufferUnit, BufferTitle); showunit=LKFormatValue(LK_OLC_LEAGUE_SPEED, true, BufferValue, BufferUnit, BufferTitle); break; case IM_AUX: index=GetInfoboxType(11); showunit=LKFormatValue(index, false, BufferValue, BufferUnit, BufferTitle); break; case IM_TRF+IM_TOP: showunit=LKFormatValue(LK_TARGET_VARIO, false, BufferValue, BufferUnit, BufferTitle); break; default: LKFormatValue(LK_ERROR, false, BufferValue, BufferUnit, BufferTitle); break; } WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[12], &qcolumn[12],&qrow[9],&qrow[10],&qrow[8]); // R3 C4 showunit=false; switch(curtype) { case IM_THERMAL: showunit=LKFormatValue(LK_TC_ALL, false, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); break; case IM_CRUISE: showunit=LKFormatValue(LK_FL, false, BufferValue, BufferUnit, BufferTitle); break; case IM_TASK: showunit=LKFormatValue(LK_FIN_GR, false, BufferValue, BufferUnit, BufferTitle); break; case IM_CONTEST: showunit=LKFormatValue(LK_OLC_3TPS_SPEED, true, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); break; case IM_AUX: index=GetInfoboxType(12); showunit=LKFormatValue(index, false, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); break; case IM_TRF+IM_TOP: showunit=LKFormatValue(LK_TARGET_AVGVARIO, false, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); break; default: LKFormatValue(LK_ERROR, false, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); break; } WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[16], &qcolumn[16],&qrow[9],&qrow[10],&qrow[8]); // R4 C1 showunit=false; switch(curtype) { case IM_THERMAL: showunit=LKFormatValue(LK_WIND, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[5], &qcolumn[4],&qrow[12],&qrow[13],&qrow[11]); break; case IM_CRUISE: showunit=LKFormatValue(LK_WIND, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[5], &qcolumn[4],&qrow[12],&qrow[13],&qrow[11]); break; case IM_TASK: showunit=LKFormatValue(LK_FIN_ALTDIFF0, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[4], &qcolumn[4],&qrow[12],&qrow[13],&qrow[11]); break; case IM_CONTEST: showunit=LKFormatValue(LK_OLC_PLUS_SCORE, false, BufferValue, BufferUnit, BufferTitle); //showunit=LKFormatValue(LK_OLC_CLASSIC_SPEED, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[4], &qcolumn[4],&qrow[12],&qrow[13],&qrow[11]); break; case IM_AUX: index=GetInfoboxType(13); showunit=LKFormatValue(index, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[4], &qcolumn[4],&qrow[12],&qrow[13],&qrow[11]); break; case IM_TRF+IM_TOP: LKFormatValue(LK_EMPTY, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[4], &qcolumn[4],&qrow[12],&qrow[13],&qrow[11]); break; default: LKFormatValue(LK_ERROR, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[4], &qcolumn[4],&qrow[12],&qrow[13],&qrow[11]); break; } // R4 C2 showunit=false; switch(curtype) { case IM_THERMAL: showunit=LKFormatValue(LK_EMPTY, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[9], &qcolumn[9],&qrow[12],&qrow[13],&qrow[11]); break; case IM_CRUISE: showunit=LKFormatValue(LK_TL_AVG, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[9], &qcolumn[9],&qrow[12],&qrow[13],&qrow[11]); break; case IM_TASK: showunit=LKFormatValue(LK_LKFIN_ETE, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[9], &qcolumn[9],&qrow[12],&qrow[13],&qrow[11]); break; case IM_CONTEST: //showunit=LKFormatValue(LK_OLC_FAI_SPEED, false, BufferValue, BufferUnit, BufferTitle); showunit=LKFormatValue(LK_OLC_PLUS_PREDICTED_SCORE, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[8], &qcolumn[8],&qrow[12],&qrow[13],&qrow[11]); break; case IM_AUX: index=GetInfoboxType(14); showunit=LKFormatValue(index, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[8], &qcolumn[8],&qrow[12],&qrow[13],&qrow[11]); break; case IM_TRF+IM_TOP: showunit=LKFormatValue(LK_TARGET_EIAS, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[8], &qcolumn[8],&qrow[12],&qrow[13],&qrow[11]); break; default: LKFormatValue(LK_ERROR, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[9], &qcolumn[9],&qrow[12],&qrow[13],&qrow[11]); break; } // R4 C3 showunit=false; switch(curtype) { case IM_THERMAL: showunit=LKFormatValue(LK_EMPTY, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[13], &qcolumn[13],&qrow[12],&qrow[13],&qrow[11]); break; case IM_CRUISE: showunit=LKFormatValue(LK_TC_ALL, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[13], &qcolumn[13],&qrow[12],&qrow[13],&qrow[11]); break; case IM_TASK: showunit=LKFormatValue(LK_SPEEDTASK_ACH, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[13], &qcolumn[13],&qrow[12],&qrow[13],&qrow[11]); break; case IM_CONTEST: //showunit=LKFormatValue(LK_OLC_LEAGUE_SPEED, true, BufferValue, BufferUnit, BufferTitle); showunit=LKFormatValue(LK_OLC_LEAGUE_SCORE, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[12], &qcolumn[12],&qrow[12],&qrow[13],&qrow[11]); break; case IM_AUX: index=GetInfoboxType(15); showunit=LKFormatValue(index, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[12], &qcolumn[12],&qrow[12],&qrow[13],&qrow[11]); break; case IM_TRF+IM_TOP: showunit=LKFormatValue(LK_EMPTY, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[13], &qcolumn[13],&qrow[12],&qrow[13],&qrow[11]); break; default: LKFormatValue(LK_ERROR, false, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[13], &qcolumn[13],&qrow[12],&qrow[13],&qrow[11]); break; } // R4 C4 showunit=false; switch(curtype) { case IM_THERMAL: showunit=LKFormatValue(LK_EMPTY, false, BufferValue, BufferUnit, BufferTitle); break; case IM_CRUISE: case IM_TASK: showunit=LKFormatValue(LK_MC, true, BufferValue, BufferUnit, BufferTitle); break; case IM_CONTEST: _tcscpy(BufferValue,_T("")); _tcscpy(BufferTitle,_T("")); //showunit=LKFormatValue(LK_OLC_3TPS_SPEED, true, BufferValue, BufferUnit, BufferTitle); break; case IM_AUX: index=GetInfoboxType(16); showunit=LKFormatValue(index, false, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); break; case IM_TRF+IM_TOP: showunit=LKFormatValue(LK_EMPTY, true, BufferValue, BufferUnit, BufferTitle); break; default: LKFormatValue(LK_ERROR, false, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); break; } WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[16], &qcolumn[16],&qrow[12],&qrow[13],&qrow[11]); goto label_End; // This is the TRI page // // ATTENTION PLEASE // Some values are using direct access to CALCULATED_INFO for fast responses. // Other values are using the copy of struct made 1 second later // label_TRI: #ifndef LKCOMPETITION VDrawLine(hdc,rc, qcolumn[0],qrow[2],qcolumn[16],qrow[2],RGB_DARKGREEN); DrawTRI(hdc, rc); showunit=true; // 091219 if (ScreenLandscape) { // right LKFormatValue(LK_TRACK, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[14], &qcolumn[14],&qrow[3],&qrow[4],&qrow[2]); LKFormatValue(LK_GNDSPEED, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[14], &qcolumn[14],&qrow[6],&qrow[7],&qrow[5]); LKFormatValue(LK_HNAV, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[15], &qcolumn[15],&qrow[9],&qrow[10],&qrow[8]); LKFormatValue(LK_VARIO, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[14], &qcolumn[14],&qrow[12],&qrow[13],&qrow[11]); // left LKFormatValue(LK_IAS, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[3], &qcolumn[3],&qrow[6],&qrow[7],&qrow[5]); LKFormatValue(LK_BANK_ANGLE, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[4], &qcolumn[4],&qrow[3],&qrow[4],&qrow[2]); LKFormatValue(LK_GLOAD, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[3], &qcolumn[3],&qrow[9],&qrow[10],&qrow[8]); LKFormatValue(LK_ODOMETER, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[4], &qcolumn[4],&qrow[12],&qrow[13],&qrow[11]); } else { // right LKFormatValue(LK_TRACK, true, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[14], &qcolumn[14],&qrow[3],&qrow[4],&qrow[2]); LKFormatValue(LK_GNDSPEED, true, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[16], &qcolumn[16],&qrow[6],&qrow[7],&qrow[5]); LKFormatValue(LK_HNAV, true, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[16], &qcolumn[16],&qrow[9],&qrow[10],&qrow[8]); LKFormatValue(LK_VARIO, true, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[16], &qcolumn[16],&qrow[12],&qrow[13],&qrow[11]); // left LKFormatValue(LK_IAS, true, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[3], &qcolumn[3],&qrow[6],&qrow[7],&qrow[5]); LKFormatValue(LK_BANK_ANGLE, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[4], &qcolumn[4],&qrow[3],&qrow[4],&qrow[2]); LKFormatValue(LK_GLOAD, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[3], &qcolumn[3],&qrow[9],&qrow[10],&qrow[8]); LKFormatValue(LK_ODOMETER, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[4], &qcolumn[4],&qrow[12],&qrow[13],&qrow[11]); } #if 0 _stprintf(BufferValue,_T("%0.1f"),CALCULATED_INFO.TurnRate); _stprintf(BufferTitle,_T("Rate")); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[3], &qcolumn[3],&qrow[9],&qrow[10],&qrow[8]); LKFormatValue(LK_GLOAD, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[4], &qcolumn[4],&qrow[12],&qrow[13],&qrow[11]); #endif wsprintf(BufferTitle, gettext(TEXT("_@M915_"))); // NOT FOR IFR USAGE SelectObject(hdc, LK8PanelSmallFont); LKWriteText(hdc, BufferTitle, qcolumn[8],qrow[12], 0, WTMODE_OUTLINED, WTALIGN_CENTER, RGB_ORANGE, false); #endif // not in LKCOMPETITION goto label_End; // End of TRI // This is the HSI page label_HSI: VDrawLine(hdc,rc, qcolumn[0],qrow[2],qcolumn[16],qrow[2],RGB_DARKGREEN); static bool showQFU=false; static bool showVFRlanding=false; HSIreturnStruct HSI; HSI=DrawHSI(hdc,rc); if(HSI.landing) { showVFRlanding=!showVFRlanding; //make it blinking if(HSI.usingQFU) showQFU=!showVFRlanding; else showQFU=false; } else { showVFRlanding=false; if(HSI.usingQFU) showQFU=!showQFU; //make it blinking else showQFU=false; } if(showVFRlanding || showQFU) { //show QFU or "VFR landing" if(showVFRlanding) { wsprintf(Buffer,TEXT("VFR %s"),gettext(TEXT("_@M931_"))); //TODO: toupper() icolor=INVERTCOLORS?RGB_YELLOW:RGB_DARKYELLOW; } if(showQFU) { #ifndef __MINGW32__ wsprintf(Buffer, TEXT("QFU: %d\xB0"),WayPointList[Task[ActiveWayPoint].Index].RunwayDir); #else wsprintf(Buffer, TEXT("QFU: %d°"),WayPointList[Task[ActiveWayPoint].Index].RunwayDir); #endif icolor=RGB_GREEN; } } else { //show next waypoint name icolor=RGB_WHITE; if(ValidTaskPoint(ActiveWayPoint)) { if(Task[ActiveWayPoint].Index >=0) _tcscpy(Buffer, WayPointList[Task[ActiveWayPoint].Index].Name); else { wsprintf(Buffer,gettext(TEXT("_@M912_"))); // [no dest] icolor=RGB_AMBER; } } else { wsprintf(Buffer,gettext(TEXT("_@M912_"))); // [no dest] icolor=RGB_AMBER; } } SelectObject(hdc, LK8PanelMediumFont); LKWriteText(hdc, Buffer, qcolumn[8],qrow[1], 0, WTMODE_NORMAL, WTALIGN_CENTER, icolor, false); showunit=true; if (ScreenLandscape) { LKFormatValue(LK_NEXT_ETE, true, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[4], &qcolumn[4],&qrow[3],&qrow[4],&qrow[2]); LKFormatValue(LK_NEXT_DIST, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[3], &qcolumn[3],&qrow[7],&qrow[8],&qrow[6]); LKFormatValue(LK_NEXT_ETA, true, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[4], &qcolumn[4],&qrow[12],&qrow[13],&qrow[11]); if(!HSI.approach) { //if not landing print also dist, ETE and ETA respect task end LKFormatValue(LK_FIN_ETE, true, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[16], &qcolumn[16],&qrow[3],&qrow[4],&qrow[2]); LKFormatValue(LK_FIN_DIST, true, BufferValue, BufferUnit, BufferTitle); if(ScreenSize==ss800x480 || ScreenSize==ss480x272) WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[15], &qcolumn[15],&qrow[7],&qrow[8],&qrow[6]); else { _tcscpy(BufferUnit,_T("")); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[16], &qcolumn[16],&qrow[7],&qrow[8],&qrow[6]); } LKFormatValue(LK_FIN_ETA, true, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[16], &qcolumn[16],&qrow[12],&qrow[13],&qrow[11]); } else { //show other interesting things for landing int col=16; bool unitInvisible=true; if(ScreenSize==ss800x480 || ScreenSize==ss480x272) { col=15; unitInvisible=false; } LKFormatValue(LK_IAS, true, BufferValue, BufferUnit, BufferTitle); if(unitInvisible) _tcscpy(BufferUnit,_T("")); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[col], &qcolumn[col],&qrow[3],&qrow[4],&qrow[2]); LKFormatValue(LK_HAGL, true, BufferValue, BufferUnit, BufferTitle); if(unitInvisible) _tcscpy(BufferUnit,_T("")); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[col], &qcolumn[col],&qrow[12],&qrow[13],&qrow[11]); } } else { LKFormatValue(LK_NEXT_ETE, true, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[4], &qcolumn[4],&qrow[3],&qrow[4],&qrow[2]); LKFormatValue(LK_NEXT_DIST, true, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[3], &qcolumn[3],&qrow[6],&qrow[7],&qrow[5]); LKFormatValue(LK_NEXT_ETA, true, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[4], &qcolumn[4],&qrow[12],&qrow[13],&qrow[11]); if(!HSI.approach) { //if not landing print also dist, ETE and ETA respect task end LKFormatValue(LK_FIN_ETE, true, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[16], &qcolumn[16],&qrow[3],&qrow[4],&qrow[2]); LKFormatValue(LK_FIN_DIST, true, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[16], &qcolumn[16],&qrow[6],&qrow[7],&qrow[5]); LKFormatValue(LK_FIN_ETA, true, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[16], &qcolumn[16],&qrow[12],&qrow[13],&qrow[11]); } else { LKFormatValue(LK_IAS, true, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[16], &qcolumn[16],&qrow[3],&qrow[4],&qrow[2]); LKFormatValue(LK_HAGL, true, BufferValue, BufferUnit, BufferTitle); _tcscpy(BufferUnit,_T("")); WriteInfo(hdc, &showunit, BufferValue, BufferUnit, BufferTitle, &qcolumn[16], &qcolumn[16],&qrow[12],&qrow[13],&qrow[11]); } } goto label_End; // End of HSI // Traffic Target page label_Target: VDrawLine(hdc,rc, qcolumn[0],qrow[2],qcolumn[16],qrow[2],RGB_DARKGREEN); // pass the sight rectangle to use on the screen. Warning: DrawTarget will cache these values // and will not use them after the first run time anymore... DrawTarget(hdc, rc, qrow[3],qrow[15],qcolumn[3],qcolumn[13]); showunit=false; // 091219 // left showunit=LKFormatValue(LK_TARGET_DIST, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, Empty, BufferTitle, &qcolumn[3], &qcolumn[3],&qrow[3],&qrow[4],&qrow[2]); showunit=LKFormatValue(LK_TARGET_EIAS, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, Empty, BufferTitle, &qcolumn[3], &qcolumn[3],&qrow[6],&qrow[7],&qrow[5]); showunit=LKFormatValue(LK_TARGET_AVGVARIO, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, Empty, BufferTitle, &qcolumn[3], &qcolumn[3],&qrow[9],&qrow[10],&qrow[8]); showunit=LKFormatValue(LK_TARGET_GR, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, Empty, BufferTitle, &qcolumn[3], &qcolumn[3],&qrow[12],&qrow[13],&qrow[11]); // right showunit=LKFormatValue(LK_TARGET_ALTDIFF, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, Empty, BufferTitle, &qcolumn[16], &qcolumn[16],&qrow[3],&qrow[4],&qrow[2]); showunit=LKFormatValue(LK_EMPTY, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, Empty, BufferTitle, &qcolumn[16], &qcolumn[16],&qrow[6],&qrow[7],&qrow[5]); showunit=LKFormatValue(LK_EMPTY, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, Empty, BufferTitle, &qcolumn[16], &qcolumn[16],&qrow[9],&qrow[10],&qrow[8]); showunit=LKFormatValue(LK_TARGET_ALTARRIV, true, BufferValue, BufferUnit, BufferTitle); WriteInfo(hdc, &showunit, BufferValue, Empty, BufferTitle, &qcolumn[16], &qcolumn[16],&qrow[12],&qrow[13],&qrow[11]); label_End: // restore font and return SelectObject(hdc, oldfont); }