/// <summary>
            /// Gets an array of colored line segments that can be used for drawing.
            /// </summary>
            /// <returns>An array of colored line segments.</returns>
            public ColoredDocumentLineSegment[] GetLineSegments()
            {
                ColoredDocumentLineSegment[] Segments = new ColoredDocumentLineSegment[mColorRanges.Count];
                int CurSegment = 0;

                foreach (ColoredTextRange CurRange in mColorRanges)
                {
                    Segments[CurSegment] = new ColoredDocumentLineSegment(new ColorPair(CurRange.BackColor, CurRange.ForeColor), this.ToString(CurRange.StartIndex, CurRange.Length));
                }

                return(Segments);
            }
            /// <summary>
            /// Gets an array of colored line segments that can be used for drawing.
            /// </summary>
            /// <returns>An array of colored line segments.</returns>
            public ColoredDocumentLineSegment[] GetLineSegments()
            {
                ColoredDocumentLineSegment[] Segments = new ColoredDocumentLineSegment[mColorRanges.Count];
                int CurSegment = 0;

                foreach(ColoredTextRange CurRange in mColorRanges)
                {
                    Segments[CurSegment] = new ColoredDocumentLineSegment(new ColorPair(CurRange.BackColor, CurRange.ForeColor), this.ToString(CurRange.StartIndex, CurRange.Length));
                }

                return Segments;
            }
		/// <summary>
		/// Draws the text for a line segment.
		/// </summary>
		/// <param name="Gfx">The <see cref="Graphics"/> object to use for drawing.</param>
		/// <param name="YLineOffset">The Y location to begin drawing.</param>
		/// <param name="MaxLineSize">The maximum allowed line size.</param>
		/// <param name="XOffset">The X location to begin drawing.</param>
		/// <param name="CurSegment">The segment to be drawn.</param>
		private void DrawLineSegment(Graphics Gfx, int YLineOffset, ref System.Drawing.Size MaxLineSize, ref int XOffset, ColoredDocumentLineSegment CurSegment)
		{
			ColorPair Colors = CurSegment.Color;
			int SegmentWidth = TextRenderer.MeasureText(Gfx, CurSegment.Text, this.Font, MaxLineSize, TXT_FLAGS).Width;

			if(Colors.BackColor.HasValue)
			{
				TextRenderer.DrawText(Gfx, CurSegment.Text, this.Font, new Point(XOffset, YLineOffset), CurSegment.Color.ForeColor.HasValue ? CurSegment.Color.ForeColor.Value : this.ForeColor, CurSegment.Color.BackColor.Value, TXT_FLAGS);
			}
			else
			{
				TextRenderer.DrawText(Gfx, CurSegment.Text, this.Font, new Point(XOffset, YLineOffset), CurSegment.Color.ForeColor.HasValue ? CurSegment.Color.ForeColor.Value : this.ForeColor, TXT_FLAGS);
			}

			XOffset += SegmentWidth;
		}