public static void ApplyRowStyles(this TextWriter result, PrintElementTableRow element) { if (element.Font != null) { if (!string.IsNullOrWhiteSpace(element.Font.Family)) { result.Write("font-family:"); result.Write(element.Font.Family); result.Write(";"); } if (element.Font.Size != null) { result.Write("font-size:"); result.WriteInvariant(element.Font.Size); result.Write("px;"); } if (element.Font.Style != null) { result.Write("font-style:"); result.Write(GetFontStyle(element.Font.Style.Value)); result.Write(";"); } if (element.Font.Stretch != null) { result.Write("font-stretch:"); result.Write(GetFontStretch(element.Font.Stretch.Value)); result.Write(";"); } if (element.Font.Weight != null) { result.Write("font-weight:"); result.Write(GetFontWeight(element.Font.Weight.Value)); result.Write(";"); } } if (!string.IsNullOrWhiteSpace(element.Background)) { result.Write("background-color:"); result.Write(element.Background.TryToRgba()); result.Write(";"); } if (!string.IsNullOrWhiteSpace(element.Foreground)) { result.Write("color:"); result.Write(element.Foreground.TryToRgba()); result.Write(";"); } }
private static void CreateStaticTableRows(PrintElementBuildContext buildContext, PrintElementTable table, dynamic rows) { if (rows != null) { var rowIndex = 0; var columnCount = table.Columns.Count; var skippedCells = new List <int>(); foreach (var rowMetadata in rows) { var tableRow = new PrintElementTableRow(); if (rowMetadata != null) { var rowStyle = buildContext.FindStyle(rowMetadata.Style); // Установка общих свойств для текста BuildHelper.ApplyTextProperties(tableRow, rowStyle); BuildHelper.ApplyTextProperties(tableRow, rowMetadata); for (var columnIndex = 0; columnIndex < columnCount; ++columnIndex) { var cellOffset = GetCellOffset(columnCount, rowIndex, columnIndex); // Если ячейку не нужно отображать (из-за настроек RowSpan или ColumnSpan) if (!skippedCells.Contains(cellOffset)) { var cellMetadata = (rowMetadata.Cells != null) ? Enumerable.ElementAtOrDefault(rowMetadata.Cells, columnIndex) : null; var tableCell = CreateTableCell(buildContext, table, columnIndex, cellMetadata, true); tableRow.Cells.Add(tableCell); AddSkippedCells(skippedCells, columnCount, rowIndex, columnIndex, cellMetadata); } } // Пост-установка общих свойств для текста BuildHelper.PostApplyTextProperties(tableRow, rowStyle); BuildHelper.PostApplyTextProperties(tableRow, rowMetadata); } buildContext.MapElement(tableRow, rowMetadata); table.Rows.Add(tableRow); ++rowIndex; } } }
private static PrintElementTableRow CreateHeaderTableRow(PrintElementBuildContext buildContext, PrintElementTable table, dynamic columns) { var tableRow = new PrintElementTableRow(); if (columns != null) { var columnIndex = 0; foreach (var column in columns) { var cellMetadata = column.Header; var tableCell = CreateTableCell(buildContext, table, columnIndex, cellMetadata, false); tableRow.Cells.Add(tableCell); ++columnIndex; } } return(tableRow); }
private static PrintElementTableRow CreateDynamicTableRow(PrintElementBuildContext buildContext, PrintElementTable table, dynamic columns, object rowSource) { var tableRow = new PrintElementTableRow(); if (columns != null) { var rowContext = buildContext.Create(buildContext.ElementWidth); rowContext.ElementSourceValue = rowSource; var columnIndex = 0; foreach (var column in columns) { var cellMetadata = column.CellTemplate; var tableCell = CreateTableCell(rowContext, table, columnIndex, cellMetadata, false); tableRow.Cells.Add(tableCell); ++columnIndex; } } return(tableRow); }
public static void ApplyRowStyles(TableRow elementContent, PrintElementTableRow element) { if (!string.IsNullOrWhiteSpace(element.Name)) { elementContent.Name = element.Name; } if (element.Font != null) { if (!string.IsNullOrWhiteSpace(element.Font.Family)) { elementContent.FontFamily = new FontFamily(element.Font.Family); } if (element.Font.Size != null) { elementContent.FontSize = element.Font.Size.Value; } if (element.Font.Style != null) { elementContent.FontStyle = GetFontStyle(element.Font.Style.Value); } if (element.Font.Stretch != null) { elementContent.FontStretch = GetFontStretch(element.Font.Stretch.Value); } if (element.Font.Weight != null) { elementContent.FontWeight = GetFontWeight(element.Font.Weight.Value); } if (element.Font.Variant != null) { elementContent.Typography.Variants = GetFontVariant(element.Font.Variant.Value); } } var converter = new BrushConverter(); if (!string.IsNullOrWhiteSpace(element.Foreground)) { try { elementContent.Foreground = (Brush)converter.ConvertFromString(element.Foreground); } catch { // ignored } } if (!string.IsNullOrWhiteSpace(element.Background)) { try { elementContent.Background = (Brush)converter.ConvertFromString(element.Background); } catch { // ignored } } }
public void ShouldBuildTable() { //Given var context = HtmlBuilderTestHelper.CreateHtmlBuilderContext(); var element = new PrintElementTable(); var result = new TextWriterWrapper(); var text1 = new PrintElementRun { Text = "Text11, colspan = 2" }; var cell1 = new PrintElementTableCell { ColumnSpan = 2, Border = new PrintElementBorder { Thickness = new PrintElementThickness(1), Color = "black" } }; var par1 = new PrintElementParagraph(); par1.Inlines.Add(text1); cell1.Block = par1; var row1 = new PrintElementTableRow(); row1.Cells.Add(cell1); var text21 = new PrintElementRun { Text = "Text21" }; var cell21 = new PrintElementTableCell { Border = new PrintElementBorder { Thickness = new PrintElementThickness(1), Color = "black" } }; var par21 = new PrintElementParagraph(); par21.Inlines.Add(text21); cell21.Block = par21; var row2 = new PrintElementTableRow(); row2.Cells.Add(cell21); var text22 = new PrintElementRun { Text = "Text22" }; var cell22 = new PrintElementTableCell { Border = new PrintElementBorder { Thickness = new PrintElementThickness(1), Color = "black" } }; var par22 = new PrintElementParagraph(); par22.Inlines.Add(text22); cell22.Block = par22; row2.Cells.Add(cell22); var column1 = new PrintElementTableColumn { Size = 100 }; var column2 = new PrintElementTableColumn { Size = 200 }; element.Columns.Add(column1); element.Columns.Add(column2); element.Rows.Add(row1); element.Rows.Add(row2); //When context.Build(element, result.Writer); //Then Assert.AreEqual(Resources.ResultTestShouldBuildTable, result.GetText()); }