Click here to Skip to main content
Click here to Skip to main content
Add your own
alternative version

RTF Document Constructor Library

, 16 Aug 2010
Create Rich Text Format documents programatically.
using System;
using System.Collections.Generic;
using System.Text;

namespace ESCommon.Rtf
{
    public abstract class RtfParagraphBase : RtfDocumentContentBase
    {
        protected bool isPartOfATable = false;
        protected RtfParagraphContentsCollection contents;
        protected RtfParagraphCollection paragraphs;


        internal override RtfDocument DocumentInternal
        {
            get
            {
                return base.DocumentInternal;
            }
            set
            {
                base.DocumentInternal = value;

                foreach (RtfParagraph paragraph in paragraphs)
                {
                    paragraph.DocumentInternal = value;
                }
            }
        }


        /// <summary>
        /// Initializes a new instance of ESCommon.Rtf.RtfParagraph class.
        /// </summary>
        public RtfParagraphBase()
        {
            contents = new RtfParagraphContentsCollection(this);
            paragraphs = new RtfParagraphCollection(this);
        }

        /// <param name="text">Text to add to paragraph contents.</param>
        public RtfParagraphBase(string text) : this()
        {
            AppendText(text);
        }

        /// <param name="text">Text to add to paragraph contents.</param>
        public RtfParagraphBase(RtfParagraphContentBase text) : this()
        {
            AppendText(text);
        }


        /// <summary>
        /// Add text to paragraph contents
        /// </summary>
        public void AppendText(string text)
        {
            AppendText(new RtfText(text));
        }

        /// <summary>
        /// Add text to paragraph contents
        /// </summary>
        public void AppendText(RtfParagraphContentBase text)
        {
            if (paragraphs.Count == 0)
            {
                contents.Add(text);
            }
            else
            {
                paragraphs[paragraphs.Count - 1].AppendText(text);
            }
        }

        /// <summary>
        /// Add an empty paragraph with inherited formatting
        /// </summary>
        public void AppendParagraph()
        {
            paragraphs.Add(new RtfParagraph());
        }

        /// <summary>
        /// Add a new paragraph with inherited formatting
        /// </summary>
        public void AppendParagraph(string text)
        {
            this.AppendParagraph(new RtfParagraph(text));
        }

        /// <summary>
        /// Add a new paragraph with inherited formatting
        /// </summary>
        public void AppendParagraph(RtfParagraphContentBase text)
        {
            this.AppendParagraph(new RtfParagraph(text));
        }

        /// <summary>
        /// Add a new paragraph with inherited formatting
        /// </summary>
        public void AppendParagraph(RtfParagraph paragraph)
        {
            paragraphs.Add(paragraph);
        }


        public abstract RtfParagraphFormatting GetFormatting();
    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Dima Popov
Software Developer Energoservice
Russian Federation Russian Federation
Dmitry lives in Arkhangelsk, Russia. He has developed C# applications since 2007.

| Advertise | Privacy | Mobile
Web02 | 2.8.140814.1 | Last Updated 16 Aug 2010
Article Copyright 2010 by Dima Popov
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid