diff --git a/.editorconfig b/.editorconfig
index 1583d3e469..7995062f9f 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -152,6 +152,8 @@ dotnet_diagnostic.CA1820.severity = warning
dotnet_diagnostic.CA1821.severity = warning
# CA1822: Mark members as static
dotnet_diagnostic.CA1822.severity = suggestion
+# CA1823: Avoid unused private fields
+dotnet_diagnostic.CA1823.severity = warning
dotnet_code_quality.CA1822.api_surface = private, internal
# CA1825: Avoid zero-length array allocations
dotnet_diagnostic.CA1825.severity = warning
diff --git a/Avalonia.sln b/Avalonia.sln
index 7efb294b64..e6898131b0 100644
--- a/Avalonia.sln
+++ b/Avalonia.sln
@@ -136,8 +136,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Linux", "Linux", "{86C53C40
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.LinuxFramebuffer", "src\Linux\Avalonia.LinuxFramebuffer\Avalonia.LinuxFramebuffer.csproj", "{854568D5-13D1-4B4F-B50D-534DC7EFD3C9}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Direct3DInteropSample", "samples\interop\Direct3DInteropSample\Direct3DInteropSample.csproj", "{638580B0-7910-40EF-B674-DCB34DA308CD}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Win32.Interop", "src\Windows\Avalonia.Win32.Interop\Avalonia.Win32.Interop.csproj", "{CBC4FF2F-92D4-420B-BE21-9FE0B930B04E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Skia.RenderTests", "tests\Avalonia.Skia.RenderTests\Avalonia.Skia.RenderTests.csproj", "{E1582370-37B3-403C-917F-8209551B1634}"
@@ -228,9 +226,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Browser", "src\Bro
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Browser.Blazor", "src\Browser\Avalonia.Browser.Blazor\Avalonia.Browser.Blazor.csproj", "{47F8530C-F19B-4B1A-B4D6-EB231522AE5D}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ControlCatalog.Browser", "samples\ControlCatalog.Browser\ControlCatalog.Browser.csproj", "{15B93A4C-1B46-43F6-B534-7B25B6E99932}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ControlCatalog.Browser", "samples\ControlCatalog.Browser\ControlCatalog.Browser.csproj", "{15B93A4C-1B46-43F6-B534-7B25B6E99932}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ControlCatalog.Browser.Blazor", "samples\ControlCatalog.Browser.Blazor\ControlCatalog.Browser.Blazor.csproj", "{90B08091-9BBD-4362-B712-E9F2CC62B218}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ControlCatalog.Browser.Blazor", "samples\ControlCatalog.Browser.Blazor\ControlCatalog.Browser.Blazor.csproj", "{90B08091-9BBD-4362-B712-E9F2CC62B218}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ReactiveUIDemo", "samples\ReactiveUIDemo\ReactiveUIDemo.csproj", "{75C47156-C5D8-44BC-A5A7-E8657C2248D6}"
EndProject
@@ -366,10 +364,6 @@ Global
{854568D5-13D1-4B4F-B50D-534DC7EFD3C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{854568D5-13D1-4B4F-B50D-534DC7EFD3C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{854568D5-13D1-4B4F-B50D-534DC7EFD3C9}.Release|Any CPU.Build.0 = Release|Any CPU
- {638580B0-7910-40EF-B674-DCB34DA308CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {638580B0-7910-40EF-B674-DCB34DA308CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {638580B0-7910-40EF-B674-DCB34DA308CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {638580B0-7910-40EF-B674-DCB34DA308CD}.Release|Any CPU.Build.0 = Release|Any CPU
{CBC4FF2F-92D4-420B-BE21-9FE0B930B04E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CBC4FF2F-92D4-420B-BE21-9FE0B930B04E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CBC4FF2F-92D4-420B-BE21-9FE0B930B04E}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -580,7 +574,6 @@ Global
{7D2D3083-71DD-4CC9-8907-39A0D86FB322} = {3743B0F2-CC41-4F14-A8C8-267F579BF91E}
{39D7B147-1A5B-47C2-9D01-21FB7C47C4B3} = {9B9E3891-2366-4253-A952-D08BCEB71098}
{854568D5-13D1-4B4F-B50D-534DC7EFD3C9} = {86C53C40-57AA-45B8-AD42-FAE0EFDF0F2B}
- {638580B0-7910-40EF-B674-DCB34DA308CD} = {A0CC0258-D18C-4AB3-854F-7101680FC3F9}
{CBC4FF2F-92D4-420B-BE21-9FE0B930B04E} = {B39A8919-9F95-48FE-AD7B-76E08B509888}
{E1582370-37B3-403C-917F-8209551B1634} = {C5A00AC3-B34C-4564-9BDD-2DA473EF4D8B}
{E2999E4A-9086-401F-898C-AEB0AD38E676} = {9B9E3891-2366-4253-A952-D08BCEB71098}
diff --git a/samples/ControlCatalog/Pages/ImagePage.xaml.cs b/samples/ControlCatalog/Pages/ImagePage.xaml.cs
index 511b01c7ac..5b3169a1b0 100644
--- a/samples/ControlCatalog/Pages/ImagePage.xaml.cs
+++ b/samples/ControlCatalog/Pages/ImagePage.xaml.cs
@@ -70,7 +70,7 @@ namespace ControlCatalog.Pages
3 => new PixelRect(new PixelPoint(bitmapWidth - cropSize.Width, 0), cropSize),
4 => new PixelRect(new PixelPoint(0, bitmapHeight - cropSize.Height), cropSize),
5 => new PixelRect(new PixelPoint(bitmapWidth - cropSize.Width, bitmapHeight - cropSize.Height), cropSize),
- _ => PixelRect.Empty
+ _ => default
};
}
diff --git a/samples/interop/Direct3DInteropSample/App.paml b/samples/interop/Direct3DInteropSample/App.paml
deleted file mode 100644
index e6d77dfaf4..0000000000
--- a/samples/interop/Direct3DInteropSample/App.paml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/samples/interop/Direct3DInteropSample/App.paml.cs b/samples/interop/Direct3DInteropSample/App.paml.cs
deleted file mode 100644
index 29365decfe..0000000000
--- a/samples/interop/Direct3DInteropSample/App.paml.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using Avalonia;
-using Avalonia.Controls.ApplicationLifetimes;
-using Avalonia.Markup.Xaml;
-
-namespace Direct3DInteropSample
-{
- public class App : Application
- {
- public override void Initialize()
- {
- AvaloniaXamlLoader.Load(this);
- }
-
- public override void OnFrameworkInitializationCompleted()
- {
- if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
- desktop.MainWindow = new MainWindow();
- base.OnFrameworkInitializationCompleted();
- }
- }
-}
diff --git a/samples/interop/Direct3DInteropSample/Direct3DInteropSample.csproj b/samples/interop/Direct3DInteropSample/Direct3DInteropSample.csproj
deleted file mode 100644
index f9ef4693d5..0000000000
--- a/samples/interop/Direct3DInteropSample/Direct3DInteropSample.csproj
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
- Exe
- net461
-
-
-
-
-
- %(Filename)
-
-
- Designer
-
-
-
-
-
-
-
- PreserveNewest
-
-
-
-
-
-
-
-
-
-
-
diff --git a/samples/interop/Direct3DInteropSample/MainWindow.cs b/samples/interop/Direct3DInteropSample/MainWindow.cs
deleted file mode 100644
index 6cc3cb9116..0000000000
--- a/samples/interop/Direct3DInteropSample/MainWindow.cs
+++ /dev/null
@@ -1,283 +0,0 @@
-using System;
-
-using Avalonia;
-using Avalonia.Controls;
-using Avalonia.Direct2D1;
-using Avalonia.Direct2D1.Media;
-using Avalonia.Markup.Xaml;
-using Avalonia.Platform;
-using Avalonia.Rendering;
-
-using SharpDX;
-using SharpDX.D3DCompiler;
-using SharpDX.Direct2D1;
-using SharpDX.Direct3D;
-using SharpDX.Direct3D11;
-using SharpDX.DXGI;
-
-using AlphaMode = SharpDX.Direct2D1.AlphaMode;
-using Buffer = SharpDX.Direct3D11.Buffer;
-using DeviceContext = SharpDX.Direct2D1.DeviceContext;
-using Factory2 = SharpDX.DXGI.Factory2;
-using InputElement = SharpDX.Direct3D11.InputElement;
-using Matrix = SharpDX.Matrix;
-using PixelFormat = SharpDX.Direct2D1.PixelFormat;
-using Resource = SharpDX.Direct3D11.Resource;
-
-namespace Direct3DInteropSample
-{
- public class MainWindow : Window
- {
- Texture2D _backBuffer;
- RenderTargetView _renderView;
- Texture2D _depthBuffer;
- DepthStencilView _depthView;
- private readonly SwapChain _swapChain;
- private SwapChainDescription1 _desc;
- private Matrix _proj = Matrix.Identity;
- private readonly Matrix _view;
- private Buffer _contantBuffer;
- private DeviceContext _deviceContext;
- private readonly MainWindowViewModel _model;
-
- public MainWindow()
- {
- DataContext = _model = new MainWindowViewModel();
-
- _desc = new SwapChainDescription1()
- {
- BufferCount = 1,
- Width = (int)ClientSize.Width,
- Height = (int)ClientSize.Height,
- Format = Format.R8G8B8A8_UNorm,
- SampleDescription = new SampleDescription(1, 0),
- SwapEffect = SwapEffect.Discard,
- Usage = Usage.RenderTargetOutput
- };
-
- using (var factory = Direct2D1Platform.DxgiDevice.Adapter.GetParent())
- {
- _swapChain = new SwapChain1(factory, Direct2D1Platform.DxgiDevice, PlatformImpl?.Handle.Handle ?? IntPtr.Zero, ref _desc);
- }
-
- _deviceContext = new DeviceContext(Direct2D1Platform.Direct2D1Device, DeviceContextOptions.None)
- {
- DotsPerInch = new Size2F(96, 96)
- };
-
- CreateMesh();
-
- _view = Matrix.LookAtLH(new Vector3(0, 0, -5), new Vector3(0, 0, 0), Vector3.UnitY);
-
- this.GetObservable(ClientSizeProperty).Subscribe(Resize);
-
- Resize(ClientSize);
-
- AvaloniaXamlLoader.Load(this);
-
- Background = Avalonia.Media.Brushes.Transparent;
- }
-
-
- protected override void HandlePaint(Rect rect)
- {
- var viewProj = Matrix.Multiply(_view, _proj);
- var context = Direct2D1Platform.Direct3D11Device.ImmediateContext;
-
- // Clear views
- context.ClearDepthStencilView(_depthView, DepthStencilClearFlags.Depth, 1.0f, 0);
- context.ClearRenderTargetView(_renderView, Color.White);
-
- // Update WorldViewProj Matrix
- var worldViewProj = Matrix.RotationX((float)_model.RotationX) * Matrix.RotationY((float)_model.RotationY)
- * Matrix.RotationZ((float)_model.RotationZ)
- * Matrix.Scaling((float)_model.Zoom)
- * viewProj;
- worldViewProj.Transpose();
- context.UpdateSubresource(ref worldViewProj, _contantBuffer);
-
- // Draw the cube
- context.Draw(36, 0);
- base.HandlePaint(rect);
-
- // Present!
- _swapChain.Present(0, PresentFlags.None);
- }
-
- private void CreateMesh()
- {
- var device = Direct2D1Platform.Direct3D11Device;
-
- // Compile Vertex and Pixel shaders
- var vertexShaderByteCode = ShaderBytecode.CompileFromFile("MiniCube.fx", "VS", "vs_4_0");
- var vertexShader = new VertexShader(device, vertexShaderByteCode);
-
- var pixelShaderByteCode = ShaderBytecode.CompileFromFile("MiniCube.fx", "PS", "ps_4_0");
- var pixelShader = new PixelShader(device, pixelShaderByteCode);
-
- var signature = ShaderSignature.GetInputSignature(vertexShaderByteCode);
-
- var inputElements = new[]
- {
- new InputElement("POSITION", 0, Format.R32G32B32A32_Float, 0, 0),
- new InputElement("COLOR", 0, Format.R32G32B32A32_Float, 16, 0)
- };
-
- // Layout from VertexShader input signature
- var layout = new InputLayout(
- device,
- signature,
- inputElements);
-
- // Instantiate Vertex buffer from vertex data
- var vertices = Buffer.Create(
- device,
- BindFlags.VertexBuffer,
- new[]
- {
- new Vector4(-1.0f, -1.0f, -1.0f, 1.0f), new Vector4(1.0f, 0.0f, 0.0f, 1.0f), // Front
- new Vector4(-1.0f, 1.0f, -1.0f, 1.0f), new Vector4(1.0f, 0.0f, 0.0f, 1.0f),
- new Vector4( 1.0f, 1.0f, -1.0f, 1.0f), new Vector4(1.0f, 0.0f, 0.0f, 1.0f),
- new Vector4(-1.0f, -1.0f, -1.0f, 1.0f), new Vector4(1.0f, 0.0f, 0.0f, 1.0f),
- new Vector4( 1.0f, 1.0f, -1.0f, 1.0f), new Vector4(1.0f, 0.0f, 0.0f, 1.0f),
- new Vector4( 1.0f, -1.0f, -1.0f, 1.0f), new Vector4(1.0f, 0.0f, 0.0f, 1.0f),
-
- new Vector4(-1.0f, -1.0f, 1.0f, 1.0f), new Vector4(0.0f, 1.0f, 0.0f, 1.0f), // BACK
- new Vector4( 1.0f, 1.0f, 1.0f, 1.0f), new Vector4(0.0f, 1.0f, 0.0f, 1.0f),
- new Vector4(-1.0f, 1.0f, 1.0f, 1.0f), new Vector4(0.0f, 1.0f, 0.0f, 1.0f),
- new Vector4(-1.0f, -1.0f, 1.0f, 1.0f), new Vector4(0.0f, 1.0f, 0.0f, 1.0f),
- new Vector4( 1.0f, -1.0f, 1.0f, 1.0f), new Vector4(0.0f, 1.0f, 0.0f, 1.0f),
- new Vector4( 1.0f, 1.0f, 1.0f, 1.0f), new Vector4(0.0f, 1.0f, 0.0f, 1.0f),
-
- new Vector4(-1.0f, 1.0f, -1.0f, 1.0f), new Vector4(0.0f, 0.0f, 1.0f, 1.0f), // Top
- new Vector4(-1.0f, 1.0f, 1.0f, 1.0f), new Vector4(0.0f, 0.0f, 1.0f, 1.0f),
- new Vector4( 1.0f, 1.0f, 1.0f, 1.0f), new Vector4(0.0f, 0.0f, 1.0f, 1.0f),
- new Vector4(-1.0f, 1.0f, -1.0f, 1.0f), new Vector4(0.0f, 0.0f, 1.0f, 1.0f),
- new Vector4( 1.0f, 1.0f, 1.0f, 1.0f), new Vector4(0.0f, 0.0f, 1.0f, 1.0f),
- new Vector4( 1.0f, 1.0f, -1.0f, 1.0f), new Vector4(0.0f, 0.0f, 1.0f, 1.0f),
-
- new Vector4(-1.0f, -1.0f, -1.0f, 1.0f), new Vector4(1.0f, 1.0f, 0.0f, 1.0f), // Bottom
- new Vector4( 1.0f, -1.0f, 1.0f, 1.0f), new Vector4(1.0f, 1.0f, 0.0f, 1.0f),
- new Vector4(-1.0f, -1.0f, 1.0f, 1.0f), new Vector4(1.0f, 1.0f, 0.0f, 1.0f),
- new Vector4(-1.0f, -1.0f, -1.0f, 1.0f), new Vector4(1.0f, 1.0f, 0.0f, 1.0f),
- new Vector4( 1.0f, -1.0f, -1.0f, 1.0f), new Vector4(1.0f, 1.0f, 0.0f, 1.0f),
- new Vector4( 1.0f, -1.0f, 1.0f, 1.0f), new Vector4(1.0f, 1.0f, 0.0f, 1.0f),
-
- new Vector4(-1.0f, -1.0f, -1.0f, 1.0f), new Vector4(1.0f, 0.0f, 1.0f, 1.0f), // Left
- new Vector4(-1.0f, -1.0f, 1.0f, 1.0f), new Vector4(1.0f, 0.0f, 1.0f, 1.0f),
- new Vector4(-1.0f, 1.0f, 1.0f, 1.0f), new Vector4(1.0f, 0.0f, 1.0f, 1.0f),
- new Vector4(-1.0f, -1.0f, -1.0f, 1.0f), new Vector4(1.0f, 0.0f, 1.0f, 1.0f),
- new Vector4(-1.0f, 1.0f, 1.0f, 1.0f), new Vector4(1.0f, 0.0f, 1.0f, 1.0f),
- new Vector4(-1.0f, 1.0f, -1.0f, 1.0f), new Vector4(1.0f, 0.0f, 1.0f, 1.0f),
-
- new Vector4( 1.0f, -1.0f, -1.0f, 1.0f), new Vector4(0.0f, 1.0f, 1.0f, 1.0f), // Right
- new Vector4( 1.0f, 1.0f, 1.0f, 1.0f), new Vector4(0.0f, 1.0f, 1.0f, 1.0f),
- new Vector4( 1.0f, -1.0f, 1.0f, 1.0f), new Vector4(0.0f, 1.0f, 1.0f, 1.0f),
- new Vector4( 1.0f, -1.0f, -1.0f, 1.0f), new Vector4(0.0f, 1.0f, 1.0f, 1.0f),
- new Vector4( 1.0f, 1.0f, -1.0f, 1.0f), new Vector4(0.0f, 1.0f, 1.0f, 1.0f),
- new Vector4( 1.0f, 1.0f, 1.0f, 1.0f), new Vector4(0.0f, 1.0f, 1.0f, 1.0f),
- });
-
- // Create Constant Buffer
- _contantBuffer = new Buffer(device, Utilities.SizeOf(), ResourceUsage.Default, BindFlags.ConstantBuffer, CpuAccessFlags.None, ResourceOptionFlags.None, 0);
-
- var context = Direct2D1Platform.Direct3D11Device.ImmediateContext;
-
- // Prepare All the stages
- context.InputAssembler.InputLayout = layout;
- context.InputAssembler.PrimitiveTopology = PrimitiveTopology.TriangleList;
- context.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(vertices, Utilities.SizeOf() * 2, 0));
- context.VertexShader.SetConstantBuffer(0, _contantBuffer);
- context.VertexShader.Set(vertexShader);
- context.PixelShader.Set(pixelShader);
- }
-
- private void Resize(Size size)
- {
- Utilities.Dispose(ref _deviceContext);
- Utilities.Dispose(ref _backBuffer);
- Utilities.Dispose(ref _renderView);
- Utilities.Dispose(ref _depthBuffer);
- Utilities.Dispose(ref _depthView);
- var context = Direct2D1Platform.Direct3D11Device.ImmediateContext;
-
- // Resize the backbuffer
- _swapChain.ResizeBuffers(0, 0, 0, Format.Unknown, SwapChainFlags.None);
-
- // Get the backbuffer from the swapchain
- _backBuffer = Resource.FromSwapChain(_swapChain, 0);
-
- // Renderview on the backbuffer
- _renderView = new RenderTargetView(Direct2D1Platform.Direct3D11Device, _backBuffer);
-
- // Create the depth buffer
- _depthBuffer = new Texture2D(
- Direct2D1Platform.Direct3D11Device,
- new Texture2DDescription()
- {
- Format = Format.D32_Float_S8X24_UInt,
- ArraySize = 1,
- MipLevels = 1,
- Width = (int)size.Width,
- Height = (int)size.Height,
- SampleDescription = new SampleDescription(1, 0),
- Usage = ResourceUsage.Default,
- BindFlags = BindFlags.DepthStencil,
- CpuAccessFlags = CpuAccessFlags.None,
- OptionFlags = ResourceOptionFlags.None
- });
-
- // Create the depth buffer view
- _depthView = new DepthStencilView(Direct2D1Platform.Direct3D11Device, _depthBuffer);
-
- // Setup targets and viewport for rendering
- context.Rasterizer.SetViewport(new Viewport(0, 0, (int)size.Width, (int)size.Height, 0.0f, 1.0f));
- context.OutputMerger.SetTargets(_depthView, _renderView);
-
- // Setup new projection matrix with correct aspect ratio
- _proj = Matrix.PerspectiveFovLH((float)Math.PI / 4.0f, (float)(size.Width / size.Height), 0.1f, 100.0f);
-
- using (var dxgiBackBuffer = _swapChain.GetBackBuffer(0))
- {
- var renderTarget = new SharpDX.Direct2D1.RenderTarget(
- Direct2D1Platform.Direct2D1Factory,
- dxgiBackBuffer,
- new RenderTargetProperties
- {
- DpiX = 96,
- DpiY = 96,
- Type = RenderTargetType.Default,
- PixelFormat = new PixelFormat(
- Format.Unknown,
- AlphaMode.Premultiplied)
- });
-
- _deviceContext = renderTarget.QueryInterface();
-
- renderTarget.Dispose();
- }
- }
-
- private class D3DRenderTarget : IRenderTarget
- {
- private readonly MainWindow _window;
-
- public D3DRenderTarget(MainWindow window)
- {
- _window = window;
- }
-
- public void Dispose()
- {
- }
-
- public IDrawingContextImpl CreateDrawingContext(IVisualBrushRenderer visualBrushRenderer)
- {
- return new DrawingContextImpl(visualBrushRenderer, null, _window._deviceContext);
- }
- }
-
-
- protected override IRenderTarget CreateRenderTarget() => new D3DRenderTarget(this);
- }
-}
diff --git a/samples/interop/Direct3DInteropSample/MainWindow.paml b/samples/interop/Direct3DInteropSample/MainWindow.paml
deleted file mode 100644
index 37c6265836..0000000000
--- a/samples/interop/Direct3DInteropSample/MainWindow.paml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
- Rotation X
-
- Rotation Y
-
- Rotation Z
-
- Zoom
-
-
-
-
\ No newline at end of file
diff --git a/samples/interop/Direct3DInteropSample/MainWindowViewModel.cs b/samples/interop/Direct3DInteropSample/MainWindowViewModel.cs
deleted file mode 100644
index 21679a99c5..0000000000
--- a/samples/interop/Direct3DInteropSample/MainWindowViewModel.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using MiniMvvm;
-
-namespace Direct3DInteropSample
-{
- public class MainWindowViewModel : ViewModelBase
- {
- private double _rotationX;
-
- public double RotationX
- {
- get { return _rotationX; }
- set { this.RaiseAndSetIfChanged(ref _rotationX, value); }
- }
-
- private double _rotationY = 1;
-
- public double RotationY
- {
- get { return _rotationY; }
- set { this.RaiseAndSetIfChanged(ref _rotationY, value); }
- }
-
- private double _rotationZ = 2;
-
- public double RotationZ
- {
- get { return _rotationZ; }
- set { this.RaiseAndSetIfChanged(ref _rotationZ, value); }
- }
-
-
- private double _zoom = 1;
-
- public double Zoom
- {
- get { return _zoom; }
- set { this.RaiseAndSetIfChanged(ref _zoom, value); }
- }
- }
-}
diff --git a/samples/interop/Direct3DInteropSample/MiniCube.fx b/samples/interop/Direct3DInteropSample/MiniCube.fx
deleted file mode 100644
index f246421f2d..0000000000
--- a/samples/interop/Direct3DInteropSample/MiniCube.fx
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (c) 2010-2013 SharpDX - Alexandre Mutel
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-struct VS_IN
-{
- float4 pos : POSITION;
- float4 col : COLOR;
-};
-
-struct PS_IN
-{
- float4 pos : SV_POSITION;
- float4 col : COLOR;
-};
-
-float4x4 worldViewProj;
-
-PS_IN VS( VS_IN input )
-{
- PS_IN output = (PS_IN)0;
-
- output.pos = mul(input.pos, worldViewProj);
- output.col = input.col;
-
- return output;
-}
-
-float4 PS( PS_IN input ) : SV_Target
-{
- return input.col;
-}
\ No newline at end of file
diff --git a/samples/interop/Direct3DInteropSample/Program.cs b/samples/interop/Direct3DInteropSample/Program.cs
deleted file mode 100644
index bf8e76d7e4..0000000000
--- a/samples/interop/Direct3DInteropSample/Program.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using Avalonia;
-
-namespace Direct3DInteropSample
-{
- class Program
- {
- public static AppBuilder BuildAvaloniaApp()
- => AppBuilder.Configure()
- .With(new Win32PlatformOptions { UseDeferredRendering = false })
- .UseWin32()
- .UseDirect2D1();
-
- public static int Main(string[] args)
- => BuildAvaloniaApp().StartWithClassicDesktopLifetime(args);
- }
-}
diff --git a/src/Android/Avalonia.Android/Platform/SkiaPlatform/AndroidFramebuffer.cs b/src/Android/Avalonia.Android/Platform/SkiaPlatform/AndroidFramebuffer.cs
index aabf8160f8..94e5f4bd01 100644
--- a/src/Android/Avalonia.Android/Platform/SkiaPlatform/AndroidFramebuffer.cs
+++ b/src/Android/Avalonia.Android/Platform/SkiaPlatform/AndroidFramebuffer.cs
@@ -96,12 +96,14 @@ namespace Avalonia.Android.Platform.SkiaPlatform
public IntPtr bits;
// Do not touch.
+#pragma warning disable CA1823 // Avoid unused private fields
uint reserved1;
uint reserved2;
uint reserved3;
uint reserved4;
uint reserved5;
uint reserved6;
+#pragma warning restore CA1823 // Avoid unused private fields
}
}
}
diff --git a/src/Avalonia.Base/CornerRadius.cs b/src/Avalonia.Base/CornerRadius.cs
index d56a0ef19d..1666fac2e1 100644
--- a/src/Avalonia.Base/CornerRadius.cs
+++ b/src/Avalonia.Base/CornerRadius.cs
@@ -61,9 +61,13 @@ namespace Avalonia
public double BottomLeft { get; }
///
- /// Gets a value indicating whether all corner radii are set to 0.
+ /// Gets a value indicating whether the instance has default values (all corner radii are set to 0).
///
- public bool IsEmpty => TopLeft.Equals(0) && IsUniform;
+ public bool IsDefault => TopLeft == 0 && TopRight == 0 && BottomLeft == 0 && BottomRight == 0;
+
+ ///
+ [Obsolete("Use IsDefault instead.")]
+ public bool IsEmpty => IsDefault;
///
/// Gets a value indicating whether all corner radii are equal.
@@ -79,7 +83,6 @@ namespace Avalonia
{
// ReSharper disable CompareOfFloatsByEqualityOperator
return TopLeft == other.TopLeft &&
-
TopRight == other.TopRight &&
BottomRight == other.BottomRight &&
BottomLeft == other.BottomLeft;
diff --git a/src/Avalonia.Base/Data/Core/ExpressionNode.cs b/src/Avalonia.Base/Data/Core/ExpressionNode.cs
index e4b833176c..5fb2bb5c13 100644
--- a/src/Avalonia.Base/Data/Core/ExpressionNode.cs
+++ b/src/Avalonia.Base/Data/Core/ExpressionNode.cs
@@ -4,8 +4,6 @@ namespace Avalonia.Data.Core
{
public abstract class ExpressionNode
{
- private static readonly object CacheInvalid = new object();
-
protected static readonly WeakReference