internal static void DrawEWSDispenserStatus( Graphics gfx, RectangleF goNogoRect, StringFormat miscTextStringFormat, Color warnColor, Color okColor, RectangleF rdyRectangle, RectangleF pflRectangle, Color scopeGreenColor, Font font, InstrumentState instrumentState) { if (instrumentState.EWSGo) { var legendColor = scopeGreenColor; using (var legendBrush = new SolidBrush(legendColor)) { StringRenderer.DrawString(gfx, "GO", font, legendBrush, goNogoRect, miscTextStringFormat); } } else if (instrumentState.EWSNoGo) { var legendColor = warnColor; using (var legendBrush = new SolidBrush(legendColor)) { StringRenderer.DrawString(gfx, "NOGO", font, legendBrush, goNogoRect, miscTextStringFormat); } } else if (instrumentState.EWSDispenseReady) { var legendColor = scopeGreenColor; using (var legendBrush = new SolidBrush(legendColor)) { StringRenderer.DrawString(gfx, "DISP", font, legendBrush, goNogoRect, miscTextStringFormat); } } if (instrumentState.EWSDispenseReady) { var legendColor = okColor; using (var legendBrush = new SolidBrush(legendColor)) { StringRenderer.DrawString(gfx, "RDY", font, legendBrush, rdyRectangle, miscTextStringFormat); } } if (instrumentState.EWSDegraded) //draw PFL legend { var legendColor = warnColor; using (var legendBrush = new SolidBrush(legendColor)) { StringRenderer.DrawString(gfx, "PFL", font, legendBrush, pflRectangle, miscTextStringFormat); } } }
internal static void DrawRWRTestPage2(Graphics gfx, Font font) { var pageLegendStringFormat = new StringFormat() { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Near, Trimming = StringTrimming.None, FormatFlags = StringFormatFlags.NoWrap }; var RwrLegendRectangle = new Rectangle(86, 80, 30, 30); StringRenderer.DrawString(gfx, "F16C", font, Brushes.Lime, RwrLegendRectangle, pageLegendStringFormat); var Rwr1LegendRectangle = new Rectangle(105, 100, 30, 30); StringRenderer.DrawString(gfx, "1*OFP 0020", font, Brushes.Lime, Rwr1LegendRectangle, pageLegendStringFormat); var Rwr2LegendRectangle = new Rectangle(105, 120, 30, 30); StringRenderer.DrawString(gfx, "2*WO 0040", font, Brushes.Lime, Rwr2LegendRectangle, pageLegendStringFormat); var Rwr3LegendRectangle = new Rectangle(119, 140, 30, 30); StringRenderer.DrawString(gfx, "PA 0050", font, Brushes.Lime, Rwr3LegendRectangle, pageLegendStringFormat); var Rwr4LegendRectangle = new Rectangle(119, 160, 30, 30); StringRenderer.DrawString(gfx, "US 0060", font, Brushes.Lime, Rwr4LegendRectangle, pageLegendStringFormat); }
internal static void DrawChaffCount( Color severeColor, Color warnColor, Color okColor, Graphics gfx, RectangleF chaffCountRectangle, StringFormat chaffFlareCountStringFormat, InstrumentState instrumentState, Font font) { //draw chaff count Color chaffCountColor; if (instrumentState.ChaffCount == 0) { chaffCountColor = severeColor; } else if (instrumentState.ChaffLow) { chaffCountColor = warnColor; } else { chaffCountColor = okColor; } using (var chaffCountBrush = new SolidBrush(chaffCountColor)) { StringRenderer.DrawString(gfx, "CHAF", font, chaffCountBrush, chaffCountRectangle, chaffFlareCountStringFormat); chaffCountRectangle.Offset(0, 12); StringRenderer.DrawString(gfx, $"{instrumentState.ChaffCount:00}", font, chaffCountBrush, chaffCountRectangle, chaffFlareCountStringFormat); } }
internal static void DrawEWSModeStandby(Graphics gfx, RectangleF ewmsModeRectangle, StringFormat miscTextStringFormat, Color warnColor, Font font) { var legendColor = warnColor; using (var legendBrush = new SolidBrush(legendColor)) { StringRenderer.DrawString(gfx, "SBY", font, legendBrush, ewmsModeRectangle, miscTextStringFormat); } }
internal static void DrawHOFFLegend(Graphics gfx, Rectangle leftLegend2Rectangle, StringFormat verticalOsbLegendLHSFormat, InstrumentState instrumentState, Font font, Brush brush) { if (instrumentState.RWRPowerOn && instrumentState.Handoff) //draw highlighted HOFF legend { gfx.FillRectangle(brush, leftLegend2Rectangle); StringRenderer.DrawString(gfx, "HOFF", font, Brushes.Black, leftLegend2Rectangle, verticalOsbLegendLHSFormat); } else //draw non-highlighted HOFF legend { StringRenderer.DrawString(gfx, "HOFF", font, brush, leftLegend2Rectangle, verticalOsbLegendLHSFormat); } }
internal static void DrawALTLegend(Graphics gfx, Rectangle rightLegend3Rectangle, StringFormat verticalOsbLegendRHSFormat, InstrumentState instrumentState, Brush brush, Font font) { if (instrumentState.RWRPowerOn && instrumentState.LowAltitudeMode) //draw highlighted ALT legend { gfx.FillRectangle(brush, rightLegend3Rectangle); StringRenderer.DrawString(gfx, "ALT", font, Brushes.Black, rightLegend3Rectangle, verticalOsbLegendRHSFormat); } else //draw non-highlighted ALT legend { StringRenderer.DrawString(gfx, "ALT", font, brush, rightLegend3Rectangle, verticalOsbLegendRHSFormat); } }
internal static void DrawSRCHLegend(Graphics gfx, Rectangle rightLegend2Rectangle, StringFormat verticalOsbLegendRHSFormat, InstrumentState instrumentState, Font font, Brush brush) { if (instrumentState.RWRPowerOn && (instrumentState.SearchMode || NonVisibleSearchThreatsDetector.AreNonVisibleSearchThreatsDetected(instrumentState) && DateTime.UtcNow.Millisecond % 500 < 250)) //draw highlighted SRCH legend { gfx.FillRectangle(brush, rightLegend2Rectangle); StringRenderer.DrawString(gfx, "SRCH", font, Brushes.Black, rightLegend2Rectangle, verticalOsbLegendRHSFormat); } else //draw non-highlighted SRCH legend { StringRenderer.DrawString(gfx, "SRCH", font, brush, rightLegend2Rectangle, verticalOsbLegendRHSFormat); } }
internal static void DrawCenterRWRSearchModeIndication(Graphics gfx, Font font) { var pageLegendStringFormat = new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Near, Trimming = StringTrimming.None, FormatFlags = StringFormatFlags.NoWrap }; var RwrLegendRectangle = new Rectangle(113, 119, 30, 30); StringRenderer.DrawString(gfx, "S", font, Brushes.Lime, RwrLegendRectangle, pageLegendStringFormat); }
internal static void DrawPRILegend(Graphics gfx, Rectangle leftLegend4Rectangle, StringFormat verticalOsbLegendLHSFormat, InstrumentState instrumentState, Brush brush, Font font) { if (instrumentState.RWRPowerOn && (instrumentState.PriorityMode && !NonVisiblePriorityThreatsDetector.AreNonVisiblePriorityThreatsDetected(instrumentState) || instrumentState.PriorityMode && NonVisiblePriorityThreatsDetector.AreNonVisiblePriorityThreatsDetected(instrumentState) && DateTime.UtcNow.Millisecond % 500 < 250)) { gfx.FillRectangle(brush, leftLegend4Rectangle); StringRenderer.DrawString(gfx, "PRI", font, Brushes.Black, leftLegend4Rectangle, verticalOsbLegendLHSFormat); } else //draw non-highlighted PRI legend { StringRenderer.DrawString(gfx, "PRI", font, brush, leftLegend4Rectangle, verticalOsbLegendLHSFormat); } }
internal static void DrawUNKLegend(Graphics gfx, Rectangle leftLegend1Rectangle, StringFormat verticalOsbLegendLHSFormat, InstrumentState instrumentState, Font font, Brush brush) { if (instrumentState.RWRPowerOn && (instrumentState.UnknownThreatScanMode || NonVisibleUnknownThreatsDetector.AreNonVisibleUnknownThreatsDetected(instrumentState) && DateTime.UtcNow.Millisecond % 500 < 250)) //draw highlighted UNK legend { gfx.FillRectangle(brush, leftLegend1Rectangle); StringRenderer.DrawString(gfx, "UNK", font, Brushes.Black, leftLegend1Rectangle, verticalOsbLegendLHSFormat); } else //draw non-highlighted UNK legend { StringRenderer.DrawString(gfx, "UNK", font, brush, leftLegend1Rectangle, verticalOsbLegendLHSFormat); } }
internal static void DrawRWRTestPage1(Graphics gfx, Font font) { var pageLegendStringFormat = new StringFormat() { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Near, Trimming = StringTrimming.None, FormatFlags = StringFormatFlags.NoWrap }; var RwrLegendRectangle = new Rectangle(114, 98, 30, 30); StringRenderer.DrawString(gfx, "RWR", font, Brushes.Lime, RwrLegendRectangle, pageLegendStringFormat); var Rwr2LegendRectangle = new Rectangle(114, 118, 30, 30); StringRenderer.DrawString(gfx, "SYSTEM GO", font, Brushes.Lime, Rwr2LegendRectangle, pageLegendStringFormat); }
internal static void DrawPageLegends(int backgroundHeight, Graphics gfx, InstrumentState instrumentState, Font font) { //Draw the page legends var pageLegendStringFormat = new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Near, Trimming = StringTrimming.None, FormatFlags = StringFormatFlags.NoWrap }; const int pageLegendHeight = 15; const int pageLegendWidth = 35; const int pageLegendSeparation = 15; var tacLegendRectangle = new Rectangle(57, backgroundHeight - pageLegendHeight - 5, pageLegendWidth, pageLegendHeight); var sysLegendRectangle = new Rectangle(tacLegendRectangle.Right + pageLegendSeparation, tacLegendRectangle.Y, pageLegendWidth, pageLegendHeight); var tstLegendRectangle = new Rectangle(sysLegendRectangle.Right + pageLegendSeparation, tacLegendRectangle.Y, pageLegendWidth, pageLegendHeight); //draw highlighted TAC legend gfx.FillRectangle(Brushes.White, tacLegendRectangle); StringRenderer.DrawString(gfx, "TAC", font, Brushes.Black, tacLegendRectangle, pageLegendStringFormat); //draw non-highlighted SYS legend StringRenderer.DrawString(gfx, "SYS", font, Brushes.White, sysLegendRectangle, pageLegendStringFormat); if (instrumentState.RWRTest1 || instrumentState.RWRTest2) //Added Falcas 10-11-2012 { //draw highlighted TST legend gfx.FillRectangle(Brushes.White, tstLegendRectangle); StringRenderer.DrawString(gfx, "TST", font, Brushes.Black, tstLegendRectangle, pageLegendStringFormat); } else { //draw non-highlighted TST legend StringRenderer.DrawString(gfx, "TST", font, Brushes.White, tstLegendRectangle, pageLegendStringFormat); } }
internal static void DrawFlareCount( Color severeColor, Color warnColor, Color okColor, Graphics gfx, RectangleF flareCountRectangle, StringFormat chaffFlareCountStringFormat, InstrumentState instrumentState, Font font) { Color flareCountColor; if (instrumentState.FlareCount == 0) { flareCountColor = severeColor; } else if (instrumentState.FlareLow) { flareCountColor = warnColor; } else { flareCountColor = okColor; } using (var flareCountBrush = new SolidBrush(flareCountColor)) { StringRenderer.DrawString(gfx, "FLAR", font, flareCountBrush, flareCountRectangle, chaffFlareCountStringFormat); flareCountRectangle.Offset(0, 12); StringRenderer.DrawString(gfx, $"{instrumentState.FlareCount:00}", font, flareCountBrush, flareCountRectangle, chaffFlareCountStringFormat); } }
internal static void DrawEmitterSymbol(int symbolId, Graphics g, RectangleF bounds, bool largeSize, bool primarySymbol, Color color, Font largeFont, Font smallFont, int width) { var originalTransform = g.Transform; var symbolFont = largeSize ? largeFont : smallFont; var x = bounds.X; var y = bounds.Y; var basicInterceptorPoints = GetBasicInterceptorPoints(bounds, x, y); var advancedInterceptorPoints = GetAdvancedInterceptorPoints(bounds, x, y); var airborneThreatSymbolPoints = GetAirborneThreatSymbolPoints(bounds, x, y); var shipSymbolPoints = GetShipSymbolPoints(bounds, width, x, y); bounds.Offset(0, 2); var sf = new StringFormat(StringFormatFlags.NoWrap) { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }; const int lineSpacing = 4; using (Brush brush = new SolidBrush(color)) using (var pen = new Pen(color)) { switch (symbolId) { case 0: break; case 1: StringRenderer.DrawString(g, "U", symbolFont, brush, bounds, sf); break; case 2: g.DrawPolygon(pen, advancedInterceptorPoints); break; case 3: g.DrawPolygon(pen, basicInterceptorPoints); break; case 4: StringRenderer.DrawString(g, "M", symbolFont, brush, bounds, sf); break; case 5: StringRenderer.DrawString(g, "H", symbolFont, brush, bounds, sf); break; case 6: StringRenderer.DrawString(g, "P", symbolFont, brush, bounds, sf); break; case 7: StringRenderer.DrawString(g, "2", symbolFont, brush, bounds, sf); break; case 8: StringRenderer.DrawString(g, "3", symbolFont, brush, bounds, sf); break; case 9: StringRenderer.DrawString(g, "4", symbolFont, brush, bounds, sf); break; case 10: StringRenderer.DrawString(g, "5", symbolFont, brush, bounds, sf); break; case 11: StringRenderer.DrawString(g, "6", symbolFont, brush, bounds, sf); break; case 12: StringRenderer.DrawString(g, "8", symbolFont, brush, bounds, sf); break; case 13: StringRenderer.DrawString(g, "9", symbolFont, brush, bounds, sf); break; case 14: StringRenderer.DrawString(g, "10", symbolFont, brush, bounds, sf); break; case 15: StringRenderer.DrawString(g, "13", symbolFont, brush, bounds, sf); break; case 16: StringRenderer.DrawString(g, primarySymbol ? "A" : "S", symbolFont, brush, bounds, sf); break; case 17: StringRenderer.DrawString(g, "S", symbolFont, brush, bounds, sf); break; case 18: g.DrawPolygon(pen, shipSymbolPoints); break; case 19: StringRenderer.DrawString(g, "C", symbolFont, brush, bounds, sf); break; case 20: StringRenderer.DrawString(g, primarySymbol ? "15" : "M", symbolFont, brush, bounds, sf); break; case 21: StringRenderer.DrawString(g, "N", symbolFont, brush, bounds, sf); break; case 22: StringRenderer.DrawString(g, "A", symbolFont, brush, bounds, sf); bounds.Offset(0, lineSpacing); StringRenderer.DrawString(g, ".", symbolFont, brush, bounds, sf); break; case 23: StringRenderer.DrawString(g, "A", symbolFont, brush, bounds, sf); bounds.Offset(0, lineSpacing); StringRenderer.DrawString(g, "..", symbolFont, brush, bounds, sf); break; case 24: StringRenderer.DrawString(g, "A", symbolFont, brush, bounds, sf); bounds.Offset(0, lineSpacing); StringRenderer.DrawString(g, "...", symbolFont, brush, bounds, sf); break; case 25: StringRenderer.DrawString(g, "P", symbolFont, brush, bounds, sf); bounds.Offset(0, lineSpacing); StringRenderer.DrawString(g, ".", symbolFont, brush, bounds, sf); break; case 26: StringRenderer.DrawString(g, "P|", symbolFont, brush, bounds, sf); break; case 27: StringRenderer.DrawString(g, "U", symbolFont, brush, bounds, sf); bounds.Offset(0, lineSpacing); StringRenderer.DrawString(g, ".", symbolFont, brush, bounds, sf); break; case 28: StringRenderer.DrawString(g, "U", symbolFont, brush, bounds, sf); bounds.Offset(0, lineSpacing); StringRenderer.DrawString(g, "..", symbolFont, brush, bounds, sf); break; case 29: StringRenderer.DrawString(g, "U", symbolFont, brush, bounds, sf); bounds.Offset(0, lineSpacing); StringRenderer.DrawString(g, "...", symbolFont, brush, bounds, sf); break; case 30: StringRenderer.DrawString(g, "C", symbolFont, brush, bounds, sf); break; case 31: g.DrawLines(pen, airborneThreatSymbolPoints); StringRenderer.DrawString(g, "1", symbolFont, brush, bounds, sf); break; case 32: g.DrawLines(pen, airborneThreatSymbolPoints); StringRenderer.DrawString(g, "4", symbolFont, brush, bounds, sf); break; case 33: g.DrawLines(pen, airborneThreatSymbolPoints); StringRenderer.DrawString(g, "5", symbolFont, brush, bounds, sf); break; case 34: g.DrawLines(pen, airborneThreatSymbolPoints); StringRenderer.DrawString(g, "6", symbolFont, brush, bounds, sf); break; case 35: g.DrawLines(pen, airborneThreatSymbolPoints); StringRenderer.DrawString(g, "14", symbolFont, brush, bounds, sf); break; case 36: g.DrawLines(pen, airborneThreatSymbolPoints); StringRenderer.DrawString(g, "15", symbolFont, brush, bounds, sf); break; case 37: g.DrawLines(pen, airborneThreatSymbolPoints); StringRenderer.DrawString(g, "16", symbolFont, brush, bounds, sf); break; case 38: g.DrawLines(pen, airborneThreatSymbolPoints); StringRenderer.DrawString(g, "18", symbolFont, brush, bounds, sf); break; case 39: g.DrawLines(pen, airborneThreatSymbolPoints); StringRenderer.DrawString(g, "19", symbolFont, brush, bounds, sf); break; case 40: g.DrawLines(pen, airborneThreatSymbolPoints); StringRenderer.DrawString(g, "20", symbolFont, brush, bounds, sf); break; case 41: g.DrawLines(pen, airborneThreatSymbolPoints); StringRenderer.DrawString(g, "21", symbolFont, brush, bounds, sf); break; case 42: g.DrawLines(pen, airborneThreatSymbolPoints); StringRenderer.DrawString(g, "22", symbolFont, brush, bounds, sf); break; case 43: g.DrawLines(pen, airborneThreatSymbolPoints); StringRenderer.DrawString(g, "23", symbolFont, brush, bounds, sf); break; case 44: g.DrawLines(pen, airborneThreatSymbolPoints); StringRenderer.DrawString(g, "25", symbolFont, brush, bounds, sf); break; case 45: g.DrawLines(pen, airborneThreatSymbolPoints); StringRenderer.DrawString(g, "27", symbolFont, brush, bounds, sf); break; case 46: g.DrawLines(pen, airborneThreatSymbolPoints); StringRenderer.DrawString(g, "29", symbolFont, brush, bounds, sf); break; case 47: g.DrawLines(pen, airborneThreatSymbolPoints); StringRenderer.DrawString(g, "30", symbolFont, brush, bounds, sf); break; case 48: g.DrawLines(pen, airborneThreatSymbolPoints); StringRenderer.DrawString(g, "31", symbolFont, brush, bounds, sf); break; case 49: g.DrawLines(pen, airborneThreatSymbolPoints); StringRenderer.DrawString(g, "P", symbolFont, brush, bounds, sf); break; case 50: g.DrawLines(pen, airborneThreatSymbolPoints); StringRenderer.DrawString(g, "PD", symbolFont, brush, bounds, sf); break; case 51: g.DrawLines(pen, airborneThreatSymbolPoints); StringRenderer.DrawString(g, "A", symbolFont, brush, bounds, sf); break; case 52: g.DrawLines(pen, airborneThreatSymbolPoints); StringRenderer.DrawString(g, "B", symbolFont, brush, bounds, sf); break; case 53: g.DrawLines(pen, airborneThreatSymbolPoints); StringRenderer.DrawString(g, "S", symbolFont, brush, bounds, sf); break; case 54: StringRenderer.DrawString(g, " A|", symbolFont, brush, bounds, sf); break; case 55: StringRenderer.DrawString(g, "|A|", symbolFont, brush, bounds, sf); break; case 56: StringRenderer.DrawString(g, "|||", symbolFont, brush, bounds, sf); StringRenderer.DrawString(g, "A", symbolFont, brush, bounds, sf); break; case 57: StringRenderer.DrawString(g, primarySymbol ? "F" : "S", symbolFont, brush, bounds, sf); break; case 58: StringRenderer.DrawString(g, primarySymbol ? "F" : "A", symbolFont, brush, bounds, sf); break; case 59: StringRenderer.DrawString(g, primarySymbol ? "F" : "M", symbolFont, brush, bounds, sf); break; case 60: StringRenderer.DrawString(g, primarySymbol ? "F" : "U", symbolFont, brush, bounds, sf); break; case 61: if (primarySymbol) { StringRenderer.DrawString(g, "F", symbolFont, brush, bounds, sf); } else { g.DrawPolygon(pen, basicInterceptorPoints); } break; case 62: if (primarySymbol) { StringRenderer.DrawString(g, "S", symbolFont, brush, bounds, sf); } else { g.DrawPolygon(pen, basicInterceptorPoints); } break; case 63: if (primarySymbol) { StringRenderer.DrawString(g, "A", symbolFont, brush, bounds, sf); } else { g.DrawPolygon(pen, basicInterceptorPoints); } break; case 64: if (primarySymbol) { StringRenderer.DrawString(g, "M", symbolFont, brush, bounds, sf); } else { g.DrawPolygon(pen, basicInterceptorPoints); } break; default: if (symbolId >= 100) { var symbolString = (symbolId - 100).ToString(); StringRenderer.DrawString(g, symbolString, symbolFont, brush, bounds, sf); } else if (symbolId >= 65) { var symbolString = Encoding.ASCII.GetString(new[] { (byte)symbolId }); StringRenderer.DrawString(g, symbolString, symbolFont, brush, bounds, sf); } else if (symbolId < 0) { StringRenderer.DrawString(g, "U", symbolFont, brush, bounds, sf); } break; } } g.Transform = originalTransform; }
internal static void DrawEWSModeOff(Color severeColor, Graphics gfx, RectangleF ewmsModeRectangle, StringFormat miscTextStringFormat, Font font) { var legendColor = severeColor; using (var legendBrush = new SolidBrush(legendColor)) { StringRenderer.DrawString(gfx, "OFF", font, legendBrush, ewmsModeRectangle, miscTextStringFormat); } }