/// <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; }