/// <summary> /// Initialize the table specifying the width of each column. /// </summary> /// <param name="leftMarginIndent">Left margin indentation</param> /// <param name="screenColumns">Number of character columns on the screen</param> /// <param name="columnWidths">Array of specified column widths</param> /// <param name="alignment">Array of alignment flags</param> /// <param name="suppressHeader">If true, suppress header printing</param> /// <param name="screenRows">Number of rows on the screen</param> internal void Initialize(int leftMarginIndent, int screenColumns, Span <int> columnWidths, ReadOnlySpan <int> alignment, bool suppressHeader, int screenRows = int.MaxValue) { if (leftMarginIndent < 0) { leftMarginIndent = 0; } if (screenColumns - leftMarginIndent < ScreenInfo.minimumScreenColumns) { _disabled = true; return; } _startColumn = leftMarginIndent; _hideHeader = suppressHeader; // make sure the column widths are correct; if not, take appropriate action ColumnWidthManager manager = new ColumnWidthManager( screenColumns - leftMarginIndent, ScreenInfo.minimumColumnWidth, ScreenInfo.separatorCharacterCount); manager.CalculateColumnWidths(columnWidths); // if all the columns are hidden, just disable bool oneValid = false; for (int k = 0; k < columnWidths.Length; k++) { if (columnWidths[k] >= ScreenInfo.minimumColumnWidth) { oneValid = true; break; } } if (!oneValid) { _disabled = true; return; } // now set the run time data structures _si = new ScreenInfo(); _si.screenColumns = screenColumns; _si.screenRows = screenRows; _si.columnInfo = new ColumnInfo[columnWidths.Length]; int startCol = _startColumn; for (int k = 0; k < columnWidths.Length; k++) { _si.columnInfo[k] = new ColumnInfo(); _si.columnInfo[k].startCol = startCol; _si.columnInfo[k].width = columnWidths[k]; _si.columnInfo[k].alignment = alignment[k]; startCol += columnWidths[k] + ScreenInfo.separatorCharacterCount; } }
/// <summary> /// Initialize the table specifying the width of each column /// </summary> /// <param name="leftMarginIndent">left margin indentation</param> /// <param name="screenColumns">number of character columns on the screen</param> /// <param name="columnWidths">array of specified column widths</param> /// <param name="alignment">array of alignment flags</param> /// <param name="suppressHeader">if true, suppress header printing</param> internal void Initialize(int leftMarginIndent, int screenColumns, int[] columnWidths, int[] alignment, bool suppressHeader) { //Console.WriteLine(" 1 2 3 4 5 6 7"); //Console.WriteLine("01234567890123456789012345678901234567890123456789012345678901234567890123456789"); if (screenColumns == int.MaxValue) { try { screenColumns = System.Console.WindowWidth; } catch { screenColumns = 120; } } if (leftMarginIndent < 0) { leftMarginIndent = 0; } if (screenColumns - leftMarginIndent < ScreenInfo.minimumScreenColumns) { _disabled = true; return; } _startColumn = leftMarginIndent; _hideHeader = suppressHeader; // make sure the column widths are correct; if not, take appropriate action ColumnWidthManager manager = new ColumnWidthManager(screenColumns - leftMarginIndent, ScreenInfo.minimumColumnWidth, ScreenInfo.separatorCharacterCount); manager.CalculateColumnWidths(columnWidths); // if all the columns are hidden, just disable bool oneValid = false; for (int k = 0; k < columnWidths.Length; k++) { if (columnWidths[k] >= ScreenInfo.minimumColumnWidth) { oneValid = true; break; } } if (!oneValid) { _disabled = true; return; } // now set the run time data structures _si = new ScreenInfo(); _si.screenColumns = screenColumns; _si.columnInfo = new ColumnInfo[columnWidths.Length]; int startCol = _startColumn; for (int k = 0; k < columnWidths.Length; k++) { _si.columnInfo[k] = new ColumnInfo(); _si.columnInfo[k].startCol = startCol; _si.columnInfo[k].width = columnWidths[k]; _si.columnInfo[k].alignment = alignment[k]; startCol += columnWidths[k] + ScreenInfo.separatorCharacterCount; //Console.WriteLine("start = {0} width = {1}", si.columnInfo[k].startCol, si.columnInfo[k].width); } }
/// <summary> /// Initialize the table specifying the width of each column /// </summary> /// <param name="leftMarginIndent">left margin indentation</param> /// <param name="screenColumns">number of character columns on the screen</param> /// <param name="columnWidths">array of specified column widths</param> /// <param name="alignment">array of alignment flags</param> /// <param name="suppressHeader">if true, suppress header printing</param> internal void Initialize(int leftMarginIndent, int screenColumns, int[] columnWidths, int[] alignment, bool suppressHeader) { //Console.WriteLine(" 1 2 3 4 5 6 7"); //Console.WriteLine("01234567890123456789012345678901234567890123456789012345678901234567890123456789"); if (leftMarginIndent < 0) { leftMarginIndent = 0; } if (screenColumns - leftMarginIndent < ScreenInfo.minimumScreenColumns) { _disabled = true; return; } _startColumn = leftMarginIndent; _hideHeader = suppressHeader; // make sure the column widths are correct; if not, take appropriate action ColumnWidthManager manager = new ColumnWidthManager(screenColumns - leftMarginIndent, ScreenInfo.minimumColumnWidth, ScreenInfo.separatorCharacterCount); manager.CalculateColumnWidths(columnWidths); // if all the columns are hidden, just disable bool oneValid = false; for (int k = 0; k < columnWidths.Length; k++) { if (columnWidths[k] >= ScreenInfo.minimumColumnWidth) { oneValid = true; break; } } if (!oneValid) { _disabled = true; return; } // now set the run time data structures _si = new ScreenInfo(); _si.screenColumns = screenColumns; _si.columnInfo = new ColumnInfo[columnWidths.Length]; int startCol = _startColumn; for (int k = 0; k < columnWidths.Length; k++) { _si.columnInfo[k] = new ColumnInfo(); _si.columnInfo[k].startCol = startCol; _si.columnInfo[k].width = columnWidths[k]; _si.columnInfo[k].alignment = alignment[k]; startCol += columnWidths[k] + ScreenInfo.separatorCharacterCount; //Console.WriteLine("start = {0} width = {1}", si.columnInfo[k].startCol, si.columnInfo[k].width); } }