private Paragraph(Paragraph paragraph, TextlineCollection textlines) { _alignment = paragraph.Alignment; _text = paragraph.Text; _leading = paragraph.Leading; _textlines = textlines; }
/// <summary> /// Converts a text object to zero or more textlines. /// </summary> /// <param name="maximumWidth">Maximum width in units.</param> /// <param name="text"></param> /// <returns></returns> public TextlineCollection ConvertToTextlines(Unit maximumWidth, Text text) { #warning : TODO: Implement splitting in whole paragraphs. TextlineCollection result = new TextlineCollection(); foreach (Paragraph paragraph in text.Paragraphs) { result.AddRange(ConvertToTextlines(maximumWidth, paragraph)); } return(result); }
public void ConvertToTextlines_Text() { Page page = new Page(new Document(), "PAGE", "200mm", "200mm", "rgb", "3mm", 1); Font f = new Font("FONT", @"C:\Windows\Fonts", "UTF-8", "false", "10pt"); FontStyle fs = new FontStyle(f, "STYLE", "arial.ttf"); f.AddStyle(fs); Content container = new Content(page); object[] paramList = new object[2]; paramList[0] = container; paramList[1] = "TEXT"; OpenTemplater.Models.Text.Text text = MockRepository.GeneratePartialMock <OpenTemplater.Models.Text.Text>(paramList); Paragraph p = new Paragraph(text, "10pt", "left"); TextElement te = new TextElement(p, "Dit is een hele mooie tekst.", fs, new Unit(10), new Color("blue")); p.Add(te); p.Add(te); p.Add(te); text.Add(p); TextModule tm = new TextModule(); TextlineCollection textlineCollection = tm.ConvertToTextlines(new Unit("35mm"), text); // There should be 4 texlines. Assert.AreEqual(4, textlineCollection.Count); // Each textline should be shorter than 35 milimeters. foreach (Textline textline in textlineCollection) { Assert.AreEqual(true, textline.Width.Points <= new Unit("35mm").Points); } // The total height of the textlines should be 40mm. Assert.AreEqual(40, textlineCollection.Height.Points); }
public TextlineMeasuringOutput SplitTextlines(TextlineCollection textlineCollection, float maximumHeight) { TextlineCollection fittingLines = new TextlineCollection(); TextlineCollection notFittingLines = new TextlineCollection(); float measuredHeight = 0; foreach (Textline currentTextline in textlineCollection) { if (measuredHeight < maximumHeight) { fittingLines.Add(currentTextline); measuredHeight += currentTextline.Height.Points; } else { notFittingLines.Add(currentTextline); } } return(new TextlineMeasuringOutput(fittingLines, notFittingLines)); }
public void SetTextlines() { var textModule = new TextModule(); TextlineCollection lines = textModule.ConvertToTextlines(LayoutContainer.Layout.Width, this); TextlineMeasuringOutput output = textModule.SplitTextlines(lines, LayoutContainer.Layout.Height.Points); if (Textlines == null) { Textlines = output.FittingLines; LayoutContainer.TryResize(Textlines.Width, Textlines.Height); var overflowText = OverflowElement as Text; if (overflowText != null) { overflowText.Textlines.AddRange(output.NotFittingLines); } } }
public TextlineMeasuringOutput(TextlineCollection fittingLines, TextlineCollection notFittinglines) { FittingLines = fittingLines; NotFittingLines = notFittinglines; }
private void AddTextlinesAtBeginning(TextlineCollection textlines) { }