diff --git a/build/SharpDX.props b/build/SharpDX.props index 69aa817a01..fdc802f135 100644 --- a/build/SharpDX.props +++ b/build/SharpDX.props @@ -1,9 +1,9 @@  - - - - - + + + + + diff --git a/samples/interop/Direct3DInteropSample/MainWindow.cs b/samples/interop/Direct3DInteropSample/MainWindow.cs index 065f1a285a..1ac4b44a74 100644 --- a/samples/interop/Direct3DInteropSample/MainWindow.cs +++ b/samples/interop/Direct3DInteropSample/MainWindow.cs @@ -132,7 +132,7 @@ namespace Direct3DInteropSample signature, inputElements); - // Instantiate Vertex buiffer from vertex data + // Instantiate Vertex buffer from vertex data var vertices = Buffer.Create( device, BindFlags.VertexBuffer, diff --git a/src/Windows/Avalonia.Direct2D1/Media/AvaloniaTextRenderer.cs b/src/Windows/Avalonia.Direct2D1/Media/AvaloniaTextRenderer.cs index 51b4eef62d..6e6cf47254 100644 --- a/src/Windows/Avalonia.Direct2D1/Media/AvaloniaTextRenderer.cs +++ b/src/Windows/Avalonia.Direct2D1/Media/AvaloniaTextRenderer.cs @@ -1,7 +1,6 @@ // Copyright (c) The Avalonia Project. All rights reserved. // Licensed under the MIT license. See licence.md file in the project root for full license information. -using System; using SharpDX; using SharpDX.Direct2D1; using SharpDX.DirectWrite; @@ -9,7 +8,7 @@ using SharpDX.Mathematics.Interop; namespace Avalonia.Direct2D1.Media { - internal class AvaloniaTextRenderer : TextRenderer + internal class AvaloniaTextRenderer : TextRendererBase { private readonly DrawingContextImpl _context; @@ -27,18 +26,7 @@ namespace Avalonia.Direct2D1.Media _foreground = foreground; } - public IDisposable Shadow - { - get; - set; - } - - public void Dispose() - { - Shadow?.Dispose(); - } - - public Result DrawGlyphRun( + public override Result DrawGlyphRun( object clientDrawingContext, float baselineOriginX, float baselineOriginY, @@ -68,34 +56,14 @@ namespace Avalonia.Direct2D1.Media return Result.Ok; } - public Result DrawInlineObject(object clientDrawingContext, float originX, float originY, InlineObject inlineObject, bool isSideways, bool isRightToLeft, ComObject clientDrawingEffect) - { - throw new NotImplementedException(); - } - - public Result DrawStrikethrough(object clientDrawingContext, float baselineOriginX, float baselineOriginY, ref Strikethrough strikethrough, ComObject clientDrawingEffect) - { - throw new NotImplementedException(); - } - - public Result DrawUnderline(object clientDrawingContext, float baselineOriginX, float baselineOriginY, ref Underline underline, ComObject clientDrawingEffect) - { - throw new NotImplementedException(); - } - - public RawMatrix3x2 GetCurrentTransform(object clientDrawingContext) + public override RawMatrix3x2 GetCurrentTransform(object clientDrawingContext) { return _renderTarget.Transform; } - public float GetPixelsPerDip(object clientDrawingContext) + public override float GetPixelsPerDip(object clientDrawingContext) { return _renderTarget.DotsPerInch.Width / 96; } - - public bool IsPixelSnappingDisabled(object clientDrawingContext) - { - return false; - } } } diff --git a/src/Windows/Avalonia.Direct2D1/Media/FormattedTextImpl.cs b/src/Windows/Avalonia.Direct2D1/Media/FormattedTextImpl.cs index 09b249e19f..e2c33a51f1 100644 --- a/src/Windows/Avalonia.Direct2D1/Media/FormattedTextImpl.cs +++ b/src/Windows/Avalonia.Direct2D1/Media/FormattedTextImpl.cs @@ -9,6 +9,8 @@ using DWrite = SharpDX.DirectWrite; namespace Avalonia.Direct2D1.Media { + using System; + public class FormattedTextImpl : IFormattedTextImpl { public FormattedTextImpl( @@ -107,7 +109,18 @@ namespace Avalonia.Direct2D1.Media private Size Measure() { - var metrics = TextLayout.Metrics; + DWrite.TextMetrics metrics; + + // SharpDX bug + try + { + metrics = TextLayout.Metrics; + } + catch (ObjectDisposedException) + { + metrics = TextLayout.Metrics; + } + var width = metrics.WidthIncludingTrailingWhitespace; if (float.IsNaN(width))