예제 #1
0
        private Paragraph(Paragraph paragraph, TextlineCollection textlines)
        {
            _alignment = paragraph.Alignment;
            _text      = paragraph.Text;

            _leading   = paragraph.Leading;
            _textlines = textlines;
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        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);
        }
예제 #4
0
        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));
        }
예제 #5
0
        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);
                }
            }
        }
예제 #6
0
 public TextlineMeasuringOutput(TextlineCollection fittingLines, TextlineCollection notFittinglines)
 {
     FittingLines    = fittingLines;
     NotFittingLines = notFittinglines;
 }
예제 #7
0
 private void AddTextlinesAtBeginning(TextlineCollection textlines)
 {
 }