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