diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Gui/FoldingElementGenerator.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Gui/FoldingElementGenerator.cs
index 7749ffe441..afa98c01ff 100644
--- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Gui/FoldingElementGenerator.cs
+++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Gui/FoldingElementGenerator.cs
@@ -92,7 +92,7 @@ namespace ICSharpCode.AvalonEdit.Gui
public override void Draw(DrawingContext drawingContext, Point origin, bool rightToLeft, bool sideways)
{
Rect r = ComputeBoundingBox(rightToLeft, sideways);
- r.Offset(origin.X, origin.Y - element.text.Baseline);
+ r.Offset(origin.X, origin.Y - this.Element.Text.Baseline);
drawingContext.DrawRectangle(null, new Pen(Brushes.Gray, 1), r);
base.Draw(drawingContext, origin, rightToLeft, sideways);
}
diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Gui/FormattedTextElement.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Gui/FormattedTextElement.cs
index f8a5041ce8..149add8cff 100644
--- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Gui/FormattedTextElement.cs
+++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Gui/FormattedTextElement.cs
@@ -13,12 +13,25 @@ using System.Windows.Media.TextFormatting;
namespace ICSharpCode.AvalonEdit.Gui
{
///
- /// Formatted text (not normal document text)
+ /// Formatted text (not normal document text).
+ /// This is used as base class for various VisualLineElements that are displayed using a
+ /// FormattedText, for example newline markers or collapsed folding sections.
///
- class FormattedTextElement : VisualLineElement
+ public class FormattedTextElement : VisualLineElement
{
- internal readonly FormattedText text;
+ readonly FormattedText text;
+ ///
+ /// Gets the formatted text.
+ ///
+ public FormattedText Text {
+ get { return text; }
+ }
+
+ ///
+ /// Creates a new FormattedTextElement that displays the specified text
+ /// and occupies the specified length in the document.
+ ///
public FormattedTextElement(FormattedText text, int documentLength) : base(1, documentLength)
{
if (text == null)
@@ -28,68 +41,102 @@ namespace ICSharpCode.AvalonEdit.Gui
this.BreakAfter = LineBreakCondition.BreakPossible;
}
+ ///
+ /// Gets/sets the line break condition before the element.
+ /// The default is 'BreakPossible'.
+ ///
public LineBreakCondition BreakBefore { get; set; }
+
+ ///
+ /// Gets/sets the line break condition after the element.
+ /// The default is 'BreakPossible'.
+ ///
public LineBreakCondition BreakAfter { get; set; }
+ ///
public override TextRun CreateTextRun(int startVisualColumn, ITextRunConstructionContext context)
{
return new FormattedTextRun(this, this.TextRunProperties);
}
}
- class FormattedTextRun : TextEmbeddedObject
+ ///
+ /// This is the TextRun implementation used by the class.
+ ///
+ public class FormattedTextRun : TextEmbeddedObject
{
- protected readonly FormattedTextElement element;
+ readonly FormattedTextElement element;
TextRunProperties properties;
+ ///
+ /// Creates a new FormattedTextRun.
+ ///
public FormattedTextRun(FormattedTextElement element, TextRunProperties properties)
{
+ if (element == null)
+ throw new ArgumentNullException("element");
if (properties == null)
throw new ArgumentNullException("properties");
this.properties = properties;
this.element = element;
}
+ ///
+ /// Gets the element for which the FormattedTextRun was created.
+ ///
+ public FormattedTextElement Element {
+ get { return element; }
+ }
+
+ ///
public override LineBreakCondition BreakBefore {
get { return element.BreakBefore; }
}
+ ///
public override LineBreakCondition BreakAfter {
get { return element.BreakAfter; }
}
+ ///
public override bool HasFixedSize {
get { return true; }
}
+ ///
public override CharacterBufferReference CharacterBufferReference {
get { return new CharacterBufferReference(); }
}
+ ///
public override int Length {
get { return element.VisualLength; }
}
+ ///
public override TextRunProperties Properties {
get { return properties; }
}
+ ///
public override TextEmbeddedObjectMetrics Format(double remainingParagraphWidth)
{
- return new TextEmbeddedObjectMetrics(element.text.WidthIncludingTrailingWhitespace,
- element.text.Height,
- element.text.Baseline);
+ return new TextEmbeddedObjectMetrics(element.Text.WidthIncludingTrailingWhitespace,
+ element.Text.Height,
+ element.Text.Baseline);
}
+ ///
public override Rect ComputeBoundingBox(bool rightToLeft, bool sideways)
{
- return new Rect(0, 0, element.text.WidthIncludingTrailingWhitespace, element.text.Height);
+ return new Rect(0, 0, element.Text.WidthIncludingTrailingWhitespace, element.Text.Height);
}
+ ///
public override void Draw(DrawingContext drawingContext, Point origin, bool rightToLeft, bool sideways)
{
- origin.Y -= element.text.Baseline;
- drawingContext.DrawText(element.text, origin);
+ origin.Y -= element.Text.Baseline;
+ drawingContext.DrawText(element.Text, origin);
}
}
}