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);
        }
Esempio n. 5
0
        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
                }
            }
        }
Esempio n. 6
0
        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());
        }