Browse Source

Changed CompositionBackdropCornerRadius to be nullable

pull/6574/head
Adir 5 years ago
parent
commit
257edd40ff
  1. 5
      src/Windows/Avalonia.Win32/Win32Platform.cs
  2. 14
      src/Windows/Avalonia.Win32/WinRT/Composition/WinUICompositorConnection.cs

5
src/Windows/Avalonia.Win32/Win32Platform.cs

@ -92,9 +92,10 @@ namespace Avalonia
/// <summary>
/// When <see cref="UseWindowsUIComposition"/> enabled, create rounded corner blur brushes
/// If set to zero the brushes will be created using default settings (sharp corners)
/// If set to null the brushes will be created using default settings (sharp corners)
/// This can be useful when you need a rounded-corner blurred Windows 10 app, or borderless Windows 11 app
/// </summary>
public float CompositionBackdropCornerRadius { get; set; }
public float? CompositionBackdropCornerRadius { get; set; }
}
}

14
src/Windows/Avalonia.Win32/WinRT/Composition/WinUICompositorConnection.cs

@ -17,7 +17,9 @@ namespace Avalonia.Win32.WinRT.Composition
{
class WinUICompositorConnection : IRenderTimer
{
private readonly float? _backdropCornerRadius;
private readonly EglContext _syncContext;
private readonly ICompositionBrush _micaBrush;
private ICompositor _compositor;
private ICompositor2 _compositor2;
private ICompositor5 _compositor5;
@ -27,11 +29,9 @@ namespace Avalonia.Win32.WinRT.Composition
private EglPlatformOpenGlInterface _gl;
private ICompositorDesktopInterop _compositorDesktopInterop;
private ICompositionBrush _blurBrush;
private readonly ICompositionBrush _micaBrush;
private object _pumpLock = new object();
private readonly float _backdropCornerRadius;
public WinUICompositorConnection(EglPlatformOpenGlInterface gl, object pumpLock, float backdropCornerRadius)
public WinUICompositorConnection(EglPlatformOpenGlInterface gl, object pumpLock, float? backdropCornerRadius)
{
_gl = gl;
_pumpLock = pumpLock;
@ -52,7 +52,7 @@ namespace Avalonia.Win32.WinRT.Composition
public EglPlatformOpenGlInterface Egl => _gl;
static bool TryCreateAndRegisterCore(EglPlatformOpenGlInterface angle, float backdropCornerRadius)
static bool TryCreateAndRegisterCore(EglPlatformOpenGlInterface angle, float? backdropCornerRadius)
{
var tcs = new TaskCompletionSource<bool>();
var pumpLock = new object();
@ -135,7 +135,7 @@ namespace Avalonia.Win32.WinRT.Composition
}
public static void TryCreateAndRegister(EglPlatformOpenGlInterface angle,
float backdropCornerRadius)
float? backdropCornerRadius)
{
const int majorRequired = 10;
const int buildRequired = 17134;
@ -247,10 +247,10 @@ namespace Avalonia.Win32.WinRT.Composition
private ICompositionRoundedRectangleGeometry ClipVisual(params IVisual[] containerVisuals)
{
if (_backdropCornerRadius == 0)
if (!_backdropCornerRadius.HasValue)
return null;
using var roundedRectangleGeometry = _compositor5.CreateRoundedRectangleGeometry();
roundedRectangleGeometry.SetCornerRadius(new Vector2(_backdropCornerRadius, _backdropCornerRadius));
roundedRectangleGeometry.SetCornerRadius(new Vector2(_backdropCornerRadius.Value, _backdropCornerRadius.Value));
using var compositor6 = _compositor.QueryInterface<ICompositor6>();
using var compositionGeometry = roundedRectangleGeometry

Loading…
Cancel
Save