TextTrailingWordEllipsis.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using System.Collections.Generic;
  2. using Avalonia.Utilities;
  3. namespace Avalonia.Media.TextFormatting
  4. {
  5. /// <summary>
  6. /// a collapsing properties to collapse whole line toward the end
  7. /// at word granularity.
  8. /// </summary>
  9. public sealed class TextTrailingWordEllipsis : TextCollapsingProperties
  10. {
  11. /// <summary>
  12. /// Construct a text trailing word ellipsis collapsing properties.
  13. /// </summary>
  14. /// <param name="ellipsis">Text used as collapsing symbol.</param>
  15. /// <param name="width">width in which collapsing is constrained to.</param>
  16. /// <param name="textRunProperties">text run properties of ellispis symbol.</param>
  17. public TextTrailingWordEllipsis(
  18. ReadOnlySlice<char> ellipsis,
  19. double width,
  20. TextRunProperties textRunProperties
  21. )
  22. {
  23. Width = width;
  24. Symbol = new TextCharacters(ellipsis, textRunProperties);
  25. }
  26. /// <inheritdoc/>
  27. public sealed override double Width { get; }
  28. /// <inheritdoc/>
  29. public sealed override TextRun Symbol { get; }
  30. public override IReadOnlyList<TextRun>? Collapse(TextLine textLine)
  31. {
  32. return TextEllipsisHelper.Collapse(textLine, this, true);
  33. }
  34. }
  35. }