diff --git a/TestBenchFramework/BenchControl/ResultsPrinters/Basic/BasicPrintDocument.cs b/TestBenchFramework/BenchControl/ResultsPrinters/Basic/BasicPrintDocument.cs index a7aed3f78..8e83d9301 100644 --- a/TestBenchFramework/BenchControl/ResultsPrinters/Basic/BasicPrintDocument.cs +++ b/TestBenchFramework/BenchControl/ResultsPrinters/Basic/BasicPrintDocument.cs @@ -15,14 +15,14 @@ namespace TBF.BenchControl.ResultsPrinters.Basic const int TitleX = 100; const int TitleY = 180; /// Depends on the size of the header const int HdrTop = 240; /// Depends on the size of the header - const int BodyTop = 420; + const int BodyTop = 400; /// /// Property variable for the Font the user wishes to use /// Font font; Font boldFont; - Font fontTitle; + Font titleFont; /// /// Data to print @@ -71,7 +71,7 @@ namespace TBF.BenchControl.ResultsPrinters.Basic if (font == null) { font = new Font(FontFamilyName, 10, FontStyle.Regular); } if (boldFont == null) { boldFont = new Font(FontFamilyName, 10, FontStyle.Bold); } - if (fontTitle == null) { fontTitle = new Font(FontFamilyName, 18, FontStyle.Bold); } + if (titleFont == null) { titleFont = new Font(FontFamilyName, 18, FontStyle.Bold); } } /// @@ -111,7 +111,7 @@ namespace TBF.BenchControl.ResultsPrinters.Basic /// Header ///---------- RectangleF printArea = new RectangleF(TitleX, TitleY, 667, 40); - e.Graphics.DrawString(results[0].ProtocolTitle, fontTitle, Brushes.Black, printArea); + e.Graphics.DrawString(results[0].ProtocolTitle, titleFont, Brushes.Black, printArea); string[] leftColumn = new string[] { @@ -155,13 +155,14 @@ namespace TBF.BenchControl.ResultsPrinters.Basic /// Body ///-------- int nrWMs = (combined ? Program.WMsCount / 2 : Program.WMsCount); + int OneWmHeight = (results.Count + 4) * SpacingOne; if (combined) { - for (int wmNr = 0; wmNr < Program.WMsCount / 2; wmNr++) PrintCombinedWM(e, wmNr, BodyTop + 150 * wmNr); + for (int wmNr = 0; wmNr < Program.WMsCount / 2; wmNr++) PrintCombinedWM(e, wmNr, BodyTop + OneWmHeight * wmNr); } else { - for (int wmNr = 0; wmNr < Program.WMsCount; wmNr++) PrintSingleWM(e, wmNr, BodyTop + 150 * wmNr); + for (int wmNr = 0; wmNr < Program.WMsCount; wmNr++) PrintSingleWM(e, wmNr, BodyTop + OneWmHeight * wmNr); } e.HasMorePages = false; @@ -175,41 +176,55 @@ namespace TBF.BenchControl.ResultsPrinters.Basic void PrintSingleWM(System.Drawing.Printing.PrintPageEventArgs e, int wmNr, int top) { /// Determin column widths - int[] columnWidths = new int[resultItems.Count]; - int totalWidth = 0; + float[] columnPos = new float[resultItems.Count + 1]; + columnPos[0] = 100.0f; + for (int i = 0; i < resultItems.Count; i++) { - columnWidths[i] = resultItems[i].ClmnHeaderText.Length; + float columnWidth = e.Graphics.MeasureString(resultItems[i].ClmnHeaderText, font).Width; foreach (var tr in results) { - int len = resultItems[i].Print(tr.Meters[wmNr]).Length; - if (len > columnWidths[i]) columnWidths[i] = len; + float width = e.Graphics.MeasureString(resultItems[i].Print(tr.Meters[wmNr]), font).Width; + if (width > columnWidth) columnWidth = width; } - totalWidth += columnWidths[i]; + columnPos[i + 1] = columnPos[i] + columnWidth + 20.0f; } - totalWidth += 3 * (resultItems.Count - 1); + int tableLeftX = (int)columnPos[0]; + int tableRightX = (int)columnPos[resultItems.Count] - 20; - PrintAt(e, 100, top, string.Format("Water meter {0}, s/n: {1}", wmNr + 1, results[0].Meters[wmNr].SerialNr)); + string wmText = string.Format("Water meter {0}", wmNr + 1); + PrintAt(e, 100, top, wmText); + if (!string.IsNullOrEmpty(results[0].Meters[wmNr].SerialNr)) + { + PrintAt(e, 100 + (int)e.Graphics.MeasureString(wmText, font).Width, top, + string.Format(", s/n = {0}", results[0].Meters[wmNr].SerialNr)); + } - //writer.WriteLine(new String('-', totalWidth)); + /// Horizontal line + int horY = top + 25; + e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(tableLeftX, horY), new Point(tableRightX, horY)); for (int i = 0; i < resultItems.Count; i++) { - PrintAt(e, 100 + 100 * i, top + 30, resultItems[i].ClmnHeaderText); + PrintAt(e, (int)columnPos[i], top + 27, resultItems[i].ClmnHeaderText); } - //writer.WriteLine(new String('-', totalWidth)); + /// Horizontal line + horY = top + 27 + SpacingOne; + e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(tableLeftX, horY), new Point(tableRightX, horY)); for (int r = 0; r < results.Count; r++) { for (int i = 0; i < resultItems.Count; i++) { string text = resultItems[i].Print(results[r].Meters[wmNr]); - PrintAt(e, 100 + 100 * i, top + 30 + SpacingOne * (r + 1), text); + PrintAt(e, (int)columnPos[i], top + 30 + SpacingOne * (r + 1), text); } } - //writer.WriteLine(new String('-', totalWidth)); + /// Horizontal line + horY = top + 30 + SpacingOne * (results.Count + 1); + e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(tableLeftX, horY), new Point(tableRightX, horY)); } /// @@ -219,6 +234,60 @@ namespace TBF.BenchControl.ResultsPrinters.Basic /// Top coordinate of watermeter data void PrintCombinedWM(System.Drawing.Printing.PrintPageEventArgs e, int wmNr, int top) { + /// Determin column widths + float[] columnPos = new float[resultItems.Count + 1]; + columnPos[0] = 100.0f; + + for (int i = 0; i < resultItems.Count; i++) + { + float columnWidth = e.Graphics.MeasureString(resultItems[i].ClmnHeaderText, font).Width; + foreach (var tr in results) + { + float width = e.Graphics.MeasureString(resultItems[i].PrintCombined(tr.Meters[2 * wmNr], + tr.Meters[2 * wmNr + 1], + tr.CombinedMeters[wmNr]), font).Width; + if (width > columnWidth) columnWidth = width; + } + columnPos[i + 1] = columnPos[i] + columnWidth + 20.0f; + } + int tableLeftX = (int)columnPos[0]; + int tableRightX = (int)columnPos[resultItems.Count] - 20; + + string wmText = string.Format("Water meter {0}", wmNr + 1); + PrintAt(e, 100, top, wmText); + if (!string.IsNullOrEmpty(results[0].Meters[wmNr].SerialNr)) + { + PrintAt(e, 100 + (int)e.Graphics.MeasureString(wmText, font).Width, top, + string.Format(", s/n = {0}", results[0].Meters[wmNr].SerialNr)); + } + + /// Horizontal line + int horY = top + 25; + e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(tableLeftX, horY), new Point(tableRightX, horY)); + + for (int i = 0; i < resultItems.Count; i++) + { + PrintAt(e, (int)columnPos[i], top + 27, resultItems[i].ClmnHeaderText); + } + + /// Horizontal line + horY = top + 27 + SpacingOne; + e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(tableLeftX, horY), new Point(tableRightX, horY)); + + for (int r = 0; r < results.Count; r++) + { + for (int i = 0; i < resultItems.Count; i++) + { + string text = resultItems[i].PrintCombined(results[r].Meters[2 * wmNr], + results[r].Meters[2 * wmNr + 1], + results[r].CombinedMeters[wmNr]); + PrintAt(e, (int)columnPos[i], top + 30 + SpacingOne * (r + 1), text); + } + } + + /// Horizontal line + horY = top + 30 + SpacingOne * (results.Count + 1); + e.Graphics.DrawLine(new Pen(Color.Black, 2), new Point(tableLeftX, horY), new Point(tableRightX, horY)); } diff --git a/TestBenchFramework/BenchControl/ResultsWriters/Basic/Writer.cs b/TestBenchFramework/BenchControl/ResultsWriters/Basic/Writer.cs index 4198b593b..12f789450 100644 --- a/TestBenchFramework/BenchControl/ResultsWriters/Basic/Writer.cs +++ b/TestBenchFramework/BenchControl/ResultsWriters/Basic/Writer.cs @@ -190,7 +190,7 @@ namespace TBF.BenchControl.ResultsWriters.Basic /// Water meter number void WriteSingleWM(int wmNr) { - /// Determin column widths + /// Determine column widths int[] columnWidths = new int[resultItems.Count]; int totalWidth = 0; for (int i = 0; i < resultItems.Count; i++) @@ -205,10 +205,18 @@ namespace TBF.BenchControl.ResultsWriters.Basic } totalWidth += 3 * (resultItems.Count - 1); - writer.WriteLine(string.Format("Water meter {0}, s/n: {1}", wmNr + 1, results[0].Meters[wmNr].SerialNr)); + /// Write water meter number and s/n + writer.Write(string.Format("Water meter {0}", wmNr + 1)); + if (!string.IsNullOrEmpty(results[0].Meters[wmNr].SerialNr)) + { + writer.Write(string.Format(", s/n: {0}", results[0].Meters[wmNr].SerialNr)); + } + writer.WriteLine(string.Empty); + /// Horizontal line writer.WriteLine(new String('-', totalWidth)); + /// Write column headers for (int i = 0; i < resultItems.Count; i++) { writer.Write(resultItems[i].ClmnHeaderText); @@ -218,9 +226,11 @@ namespace TBF.BenchControl.ResultsWriters.Basic else writer.WriteLine(string.Empty); } - + + /// Horizontal line writer.WriteLine(new String('-', totalWidth)); + /// Write table data foreach (var tr in results) { for (int i = 0; i < resultItems.Count; i++) @@ -235,7 +245,9 @@ namespace TBF.BenchControl.ResultsWriters.Basic } } + /// Horizontal line writer.WriteLine(new String('-', totalWidth)); + writer.WriteLine(string.Empty); writer.WriteLine(string.Empty); }