diff --git a/src/Avalonia.Base/Media/TextFormatting/CharacterBufferRange.cs b/src/Avalonia.Base/Media/TextFormatting/CharacterBufferRange.cs index 045f336700..d76f212f26 100644 --- a/src/Avalonia.Base/Media/TextFormatting/CharacterBufferRange.cs +++ b/src/Avalonia.Base/Media/TextFormatting/CharacterBufferRange.cs @@ -47,21 +47,6 @@ namespace Avalonia.Media.TextFormatting ) { } - /// - /// Construct from unsafe character string - /// - /// pointer to character string - /// character length - public unsafe CharacterBufferRange( - char* unsafeCharacterString, - int characterLength - ) - : this( - new CharacterBufferReference(unsafeCharacterString, characterLength), - characterLength - ) - { } - /// /// Construct a from /// diff --git a/src/Avalonia.Base/Media/TextFormatting/CharacterBufferReference.cs b/src/Avalonia.Base/Media/TextFormatting/CharacterBufferReference.cs index a15562cb52..672fcf3377 100644 --- a/src/Avalonia.Base/Media/TextFormatting/CharacterBufferReference.cs +++ b/src/Avalonia.Base/Media/TextFormatting/CharacterBufferReference.cs @@ -1,6 +1,4 @@ using System; -using System.Buffers; -using System.Runtime.InteropServices; namespace Avalonia.Media.TextFormatting { @@ -26,15 +24,6 @@ namespace Avalonia.Media.TextFormatting public CharacterBufferReference(string characterString, int offsetToFirstChar = 0) : this(characterString.AsMemory(), offsetToFirstChar) { } - - /// - /// Construct character buffer reference from unsafe character string - /// - /// pointer to character string - /// character length of unsafe string - public unsafe CharacterBufferReference(char* unsafeCharacterString, int characterLength) - : this(new UnmanagedMemoryManager(unsafeCharacterString, characterLength).Memory, 0) - { } /// /// Construct character buffer reference from memory buffer @@ -58,6 +47,17 @@ namespace Avalonia.Media.TextFormatting OffsetToFirstChar = offsetToFirstChar; } + /// + /// Gets the character memory buffer + /// + public ReadOnlyMemory CharacterBuffer { get; } + + /// + /// Gets the character offset relative to the beginning of buffer to + /// the first character of the run + /// + public int OffsetToFirstChar { get; } + /// /// Compute hash code /// @@ -110,67 +110,6 @@ namespace Avalonia.Media.TextFormatting { return !(left == right); } - - public ReadOnlyMemory CharacterBuffer { get; } - - public int OffsetToFirstChar { get; } - - /// - /// A MemoryManager over a raw pointer - /// - /// The pointer is assumed to be fully unmanaged, or externally pinned - no attempt will be made to pin this data - public sealed unsafe class UnmanagedMemoryManager : MemoryManager - where T : unmanaged - { - private readonly T* _pointer; - private readonly int _length; - - /// - /// Create a new UnmanagedMemoryManager instance at the given pointer and size - /// - /// It is assumed that the span provided is already unmanaged or externally pinned - public UnmanagedMemoryManager(Span span) - { - fixed (T* ptr = &MemoryMarshal.GetReference(span)) - { - _pointer = ptr; - _length = span.Length; - } - } - /// - /// Create a new UnmanagedMemoryManager instance at the given pointer and size - /// - public UnmanagedMemoryManager(T* pointer, int length) - { - if (length < 0) - throw new ArgumentOutOfRangeException(nameof(length)); - _pointer = pointer; - _length = length; - } - /// - /// Obtains a span that represents the region - /// - public override Span GetSpan() => new Span(_pointer, _length); - - /// - /// Provides access to a pointer that represents the data (note: no actual pin occurs) - /// - public override MemoryHandle Pin(int elementIndex = 0) - { - if (elementIndex < 0 || elementIndex >= _length) - throw new ArgumentOutOfRangeException(nameof(elementIndex)); - return new MemoryHandle(_pointer + elementIndex); - } - /// - /// Has no effect - /// - public override void Unpin() { } - - /// - /// Releases all resources associated with this object - /// - protected override void Dispose(bool disposing) { } - } } } diff --git a/src/Avalonia.Base/Media/TextFormatting/TextCharacters.cs b/src/Avalonia.Base/Media/TextFormatting/TextCharacters.cs index 9587786c5b..0be753bd04 100644 --- a/src/Avalonia.Base/Media/TextFormatting/TextCharacters.cs +++ b/src/Avalonia.Base/Media/TextFormatting/TextCharacters.cs @@ -57,21 +57,6 @@ namespace Avalonia.Media.TextFormatting ) { } - /// - /// Construct a run for text content from unsafe character string - /// - public unsafe TextCharacters( - char* unsafeCharacterString, - int length, - TextRunProperties textRunProperties - ) : - this( - new CharacterBufferReference(unsafeCharacterString, length), - length, - textRunProperties - ) - { } - /// /// Internal constructor of TextContent ///