void CPage_Node_Phase::DrawPhaseGreenTimeBand(CPaintDC* pDC,CRect PlotRect, int CycleLength, float PhaseStartTime,float PhaseEndTime, float Yellow, float AllRed ) { CBrush GreenBrush(RGB(0,255,0)); CBrush YellowBrush(RGB(255,255,0)); pDC->SetBkMode(TRANSPARENT); pDC->SelectObject(&GreenBrush); float width = PlotRect.Width (); float GreenEndTime = PhaseEndTime - AllRed - Yellow; CRect PlotRectNew = PlotRect; PlotRectNew.left = PlotRect.left + PhaseStartTime/CycleLength * width; PlotRectNew.right = PlotRect.left + GreenEndTime/CycleLength *width; pDC->Rectangle (PlotRectNew); CString str; str.Format("P%d [%.1f s]",m_SelectedPhaseNumber,PhaseEndTime - PhaseStartTime ); pDC->TextOutA(PlotRectNew.left+5,PlotRectNew.top +5,str); // yellow block pDC->SelectObject(&YellowBrush); PlotRectNew.left = PlotRectNew.right; // next to previous green block PlotRectNew.right = PlotRectNew.left + Yellow/CycleLength *width; pDC->Rectangle (PlotRectNew); }
// draw aircraft void RenderPlaneSideview(LKSurface& Surface, double fDist, double fAltitude,double brg, DiagrammStruct* psDia ) { //BOOL bInvCol = true ; //INVERTCOLORS #define NO_AP_PTS 17 int deg = DEG_TO_INT(AngleLimit360(brg)); double fCos = COSTABLE[deg]; double fSin = SINETABLE[deg]; int TAIL = 6; int PROFIL = 1; int FINB = 3; int BODY = 2; int NOSE = 7; int WING = (int) (22.0 ); int TUBE = (int) (14.0 ) ; int FINH = 6+BODY; POINT Start; int HEAD = TUBE / 2; TUBE = 3 * TUBE/ 2; POINT AircraftSide [8] = { {(int)(fSin * (HEAD+0 ) ), -BODY-1}, // 1 {(int)(fSin * (HEAD+NOSE) ), 0}, // 2 {(int)(fSin * (HEAD+0 ) ), BODY+1}, // 3 {(int)(fSin * (-TUBE) ), BODY}, // 4 -1 {(int)(fSin * -TUBE ), -FINH}, // 5 {(int)(fSin * (-TUBE+FINB) ), -FINH}, // 6 {(int)(fSin * (-TUBE+FINB+3) ), -BODY+1}, // 7 +1 {(int)(fSin * (HEAD+0) ), -BODY-1} // 8 }; #define FACT 2 BODY = (int)((double)(BODY+1) * fCos * fCos); int DIA = (BODY + PROFIL); /* both wings */ POINT AircraftWing [13] = { {(int)(fCos * BODY ) , -DIA}, // 1 {(int)(fCos * (int)( FACT*BODY) ), -PROFIL}, // 2 {(int)(fCos * WING ) , -PROFIL}, // 3 {(int)(fCos * WING ), 0* PROFIL}, // 4 {(int)(fCos * (int)( FACT*BODY) ) , PROFIL}, // 5 {(int)(fCos * BODY ), DIA}, // 6 {(int)(fCos * -BODY ) , DIA}, // 7 {(int)(fCos * (int)( -FACT*BODY)), PROFIL}, // 8 {(int)(fCos * -WING ), 0* PROFIL }, // 9 {(int)(fCos * -WING ) , -PROFIL} , // 10 {(int)(fCos * (int)( -FACT*BODY)), -PROFIL}, // 11 {(int)(fCos * -BODY ) , -DIA}, // 12 {(int)(fCos * BODY ), -DIA} // 13 }; POINT AircraftWingL [7] = { {(int)(0 * -BODY ), DIA }, // 1 {(int)(fCos * (int)( -FACT*BODY)), PROFIL }, // 2 {(int)(fCos * -WING ), 0* PROFIL }, // 3 {(int)(fCos * -WING ), -PROFIL }, // 4 {(int)(fCos * (int)( -FACT*BODY)), -PROFIL }, // 5 {(int)(0 * -BODY ), -DIA }, // 6 {(int)(0 * -BODY ), DIA } // 7 }; POINT AircraftWingR [7] = { {(int)(0 * BODY ) , -DIA }, // 1 {(int)(fCos * (int)( FACT*BODY) ) , -PROFIL }, // 2 {(int)(fCos * WING ) , -PROFIL }, // 3 {(int)(fCos * WING ) , 0* PROFIL}, // 4 {(int)(fCos * (int)( FACT*BODY) ) , PROFIL }, // 5 {(int)(0 * BODY ) , DIA }, // 6 {(int)(0 * BODY ) , -DIA } // 7 }; POINT AircraftTail [5] = { {(int)(fCos * TAIL - fSin*TUBE), -FINH}, // 1 {(int)(fCos * TAIL - fSin*TUBE), -FINH +PROFIL}, // 2 {(int)(fCos * -TAIL - fSin*TUBE), -FINH +PROFIL}, // 3 {(int)(fCos * -TAIL - fSin*TUBE), -FINH }, // 4 {(int)(fCos * TAIL - fSin*TUBE), -FINH}, // 5 }; Start.x = CalcDistanceCoordinat(fDist, psDia); Start.y = CalcHeightCoordinat(fAltitude, psDia); const auto oldPen = Surface.SelectObject(LK_BLACK_PEN); const auto oldBrush = Surface.SelectObject(LKBrush_White); PolygonRotateShift(AircraftWing, 13, Start.x, Start.y, 0); PolygonRotateShift(AircraftSide, 8, Start.x, Start.y, 0); PolygonRotateShift(AircraftTail, 5, Start.x, Start.y, 0); PolygonRotateShift(AircraftWingL, 7, Start.x, Start.y, 0); PolygonRotateShift(AircraftWingR, 7, Start.x, Start.y, 0); #ifndef UNDITHER LKBrush GreenBrush(RGB_GREEN); LKBrush RedBrush(RGB_RED); #else LKBrush GreenBrush(RGB_WHITE); LKBrush RedBrush(RGB_BLACK); #endif if((brg < 180)) { Surface.SelectObject(RedBrush); Surface.Polygon(AircraftWingL ,7 ); Surface.SelectObject(LKBrush_White); Surface.Polygon(AircraftSide ,8 ); Surface.SelectObject(GreenBrush); Surface.Polygon(AircraftWingR ,7 ); Surface.SelectObject(oldBrush); } else { Surface.SelectObject(GreenBrush); Surface.Polygon(AircraftWingR ,7 ); Surface.SelectObject(LKBrush_White); Surface.Polygon(AircraftSide ,8 ); Surface.SelectObject(RedBrush); Surface.Polygon(AircraftWingL ,7 ); Surface.SelectObject(oldBrush); } if((brg < 90)|| (brg > 270)) { Surface.Polygon(AircraftTail ,5 ); } Surface.SelectObject(oldPen); Surface.SelectObject(oldBrush); } //else !asp_heading_task