SingleBufferTextSource.cs 906 B

123456789101112131415161718192021222324252627282930
  1. using System;
  2. using Avalonia.Media.TextFormatting;
  3. using Avalonia.Utilities;
  4. namespace Avalonia.Skia.UnitTests.Media.TextFormatting
  5. {
  6. internal class SingleBufferTextSource : ITextSource
  7. {
  8. private readonly ReadOnlySlice<char> _text;
  9. private readonly GenericTextRunProperties _defaultGenericPropertiesRunProperties;
  10. public SingleBufferTextSource(string text, GenericTextRunProperties defaultProperties)
  11. {
  12. _text = text.AsMemory();
  13. _defaultGenericPropertiesRunProperties = defaultProperties;
  14. }
  15. public TextRun GetTextRun(int textSourceIndex)
  16. {
  17. var runText = _text.Skip(textSourceIndex);
  18. if (runText.IsEmpty)
  19. {
  20. return new TextEndOfParagraph();
  21. }
  22. return new TextCharacters(runText, _defaultGenericPropertiesRunProperties);
  23. }
  24. }
  25. }