diff --git a/Avalonia.sln b/Avalonia.sln
index f71a94888d..0883e051c1 100644
--- a/Avalonia.sln
+++ b/Avalonia.sln
@@ -188,6 +188,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Skia.UnitTests", "
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.OpenGL", "src\Avalonia.OpenGL\Avalonia.OpenGL.csproj", "{7CCAEFC4-135D-401D-BDDD-896B9B7D3569}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Native", "src\Avalonia.Native\Avalonia.Native.csproj", "{12A91A62-C064-42CA-9A8C-A1272F354388}"
+EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
src\Shared\RenderHelpers\RenderHelpers.projitems*{3c4c0cb4-0c0f-4450-a37b-148c84ff905f}*SharedItemsImports = 13
@@ -1689,6 +1691,30 @@ Global
{7CCAEFC4-135D-401D-BDDD-896B9B7D3569}.Release|iPhone.Build.0 = Release|Any CPU
{7CCAEFC4-135D-401D-BDDD-896B9B7D3569}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{7CCAEFC4-135D-401D-BDDD-896B9B7D3569}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {12A91A62-C064-42CA-9A8C-A1272F354388}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {12A91A62-C064-42CA-9A8C-A1272F354388}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {12A91A62-C064-42CA-9A8C-A1272F354388}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {12A91A62-C064-42CA-9A8C-A1272F354388}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {12A91A62-C064-42CA-9A8C-A1272F354388}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {12A91A62-C064-42CA-9A8C-A1272F354388}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {12A91A62-C064-42CA-9A8C-A1272F354388}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {12A91A62-C064-42CA-9A8C-A1272F354388}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {12A91A62-C064-42CA-9A8C-A1272F354388}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {12A91A62-C064-42CA-9A8C-A1272F354388}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {12A91A62-C064-42CA-9A8C-A1272F354388}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {12A91A62-C064-42CA-9A8C-A1272F354388}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {12A91A62-C064-42CA-9A8C-A1272F354388}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {12A91A62-C064-42CA-9A8C-A1272F354388}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {12A91A62-C064-42CA-9A8C-A1272F354388}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {12A91A62-C064-42CA-9A8C-A1272F354388}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {12A91A62-C064-42CA-9A8C-A1272F354388}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {12A91A62-C064-42CA-9A8C-A1272F354388}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {12A91A62-C064-42CA-9A8C-A1272F354388}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {12A91A62-C064-42CA-9A8C-A1272F354388}.Release|Any CPU.Build.0 = Release|Any CPU
+ {12A91A62-C064-42CA-9A8C-A1272F354388}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {12A91A62-C064-42CA-9A8C-A1272F354388}.Release|iPhone.Build.0 = Release|Any CPU
+ {12A91A62-C064-42CA-9A8C-A1272F354388}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {12A91A62-C064-42CA-9A8C-A1272F354388}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/src/Avalonia.Native/Avalonia.Native.csproj b/src/Avalonia.Native/Avalonia.Native.csproj
index fdcc5afd5c..8407a1b3f6 100644
--- a/src/Avalonia.Native/Avalonia.Native.csproj
+++ b/src/Avalonia.Native/Avalonia.Native.csproj
@@ -1,31 +1,31 @@
-
-
-
- netstandard2.0
- /usr/local/bin/castxml
- true
- $(MSBuildThisFileDirectory)/Generated
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- runtimes/osx/native/libAvaloniaNative.dylib
- true
- PreserveNewest
-
-
-
+
+
+
+ netstandard2.0
+ /usr/bin/castxml
+ /usr/local/bin/castxml
+
+ true
+ $(MSBuildThisFileDirectory)/Generated
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ runtimes/osx/native/libAvaloniaNative.dylib
+ true
+ PreserveNewest
+
+
+
diff --git a/src/Avalonia.Native/AvaloniaNativePlatform.cs b/src/Avalonia.Native/AvaloniaNativePlatform.cs
index 9fc1677611..0b5d71039d 100644
--- a/src/Avalonia.Native/AvaloniaNativePlatform.cs
+++ b/src/Avalonia.Native/AvaloniaNativePlatform.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;
+// 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 System.Diagnostics.Contracts;
using System.Runtime.InteropServices;
using Avalonia.Controls.Platform;
@@ -12,72 +11,72 @@ using Avalonia.OpenGL;
using Avalonia.Platform;
using Avalonia.Rendering;
-namespace Avalonia.Native
-{
- class AvaloniaNativePlatform : IPlatformSettings, IWindowingPlatform
+namespace Avalonia.Native
+{
+ class AvaloniaNativePlatform : IPlatformSettings, IWindowingPlatform
{
private readonly IAvaloniaNativeFactory _factory;
- [DllImport("libAvaloniaNative")]
- static extern IntPtr CreateAvaloniaNative();
-
- internal static readonly MouseDevice MouseDevice = new MouseDevice();
+ [DllImport("libAvaloniaNative")]
+ static extern IntPtr CreateAvaloniaNative();
+
+ internal static readonly MouseDevice MouseDevice = new MouseDevice();
internal static readonly KeyboardDevice KeyboardDevice = new KeyboardDevice();
public Size DoubleClickSize => new Size(4, 4);
public TimeSpan DoubleClickTime => TimeSpan.FromMilliseconds(500); //TODO
- public static void Initialize(IntPtr factory, Action configure)
- {
- new AvaloniaNativePlatform(new IAvaloniaNativeFactory(factory))
- .DoInitialize(configure);
+ public static void Initialize(IntPtr factory, Action configure)
+ {
+ new AvaloniaNativePlatform(new IAvaloniaNativeFactory(factory))
+ .DoInitialize(configure);
+ }
+
+ delegate IntPtr CreateAvaloniaNativeDelegate();
+
+ public static void Initialize(string library, Action configure)
+ {
+ var loader = RuntimeInformation.IsOSPlatform(OSPlatform.Windows)
+ ? (IDynLoader)new Win32Loader() : new UnixLoader();
+ var lib = loader.LoadLibrary(library);
+ var proc = loader.GetProcAddress(lib, "CreateAvaloniaNative", false);
+ var d = Marshal.GetDelegateForFunctionPointer(proc);
+
+
+ Initialize(d(), configure);
}
-
- delegate IntPtr CreateAvaloniaNativeDelegate();
-
- public static void Initialize(string library, Action configure)
- {
- var loader = RuntimeInformation.IsOSPlatform(OSPlatform.Windows)
- ? (IDynLoader)new Win32Loader() : new UnixLoader();
- var lib = loader.LoadLibrary(library);
- var proc = loader.GetProcAddress(lib, "CreateAvaloniaNative", false);
- var d = Marshal.GetDelegateForFunctionPointer(proc);
-
-
- Initialize(d(), configure);
- }
-
- public static void Initialize(Action configure)
- {
- Initialize(CreateAvaloniaNative(), configure);
- }
-
- private AvaloniaNativePlatform(IAvaloniaNativeFactory factory)
+
+ public static void Initialize(Action configure)
{
- _factory = factory;
- }
-
- void DoInitialize(Action configure)
- {
- var opts = new AvaloniaNativeOptions(_factory);
- configure?.Invoke(opts);
- _factory.Initialize();
-
- AvaloniaLocator.CurrentMutable
- .Bind().ToConstant(new PlatformThreadingInterface(_factory.CreatePlatformThreadingInterface()))
- .Bind().ToConstant(new CursorFactory(_factory.CreateCursorFactory()))
- .Bind().ToSingleton()
- .Bind().ToConstant(KeyboardDevice)
- .Bind().ToConstant(MouseDevice)
- .Bind().ToConstant(this)
- .Bind().ToConstant(this)
- .Bind().ToConstant(new ClipboardImpl(_factory.CreateClipboard()))
- .Bind().ToConstant(new RenderLoop())
- .Bind().ToConstant(new DefaultRenderTimer(60))
- .Bind().ToConstant(new SystemDialogs(_factory.CreateSystemDialogs()))
- .Bind().ToConstant(new GlPlatformFeature(_factory.ObtainGlFeature()))
- .Bind().ToConstant(opts);
+ Initialize(CreateAvaloniaNative(), configure);
+ }
+
+ private AvaloniaNativePlatform(IAvaloniaNativeFactory factory)
+ {
+ _factory = factory;
+ }
+
+ void DoInitialize(Action configure)
+ {
+ var opts = new AvaloniaNativeOptions(_factory);
+ configure?.Invoke(opts);
+ _factory.Initialize();
+
+ AvaloniaLocator.CurrentMutable
+ .Bind().ToConstant(new PlatformThreadingInterface(_factory.CreatePlatformThreadingInterface()))
+ .Bind().ToConstant(new CursorFactory(_factory.CreateCursorFactory()))
+ .Bind().ToSingleton()
+ .Bind().ToConstant(KeyboardDevice)
+ .Bind().ToConstant(MouseDevice)
+ .Bind().ToConstant(this)
+ .Bind().ToConstant(this)
+ .Bind().ToConstant(new ClipboardImpl(_factory.CreateClipboard()))
+ .Bind().ToConstant(new RenderLoop())
+ .Bind().ToConstant(new DefaultRenderTimer(60))
+ .Bind().ToConstant(new SystemDialogs(_factory.CreateSystemDialogs()))
+ .Bind().ToConstant(new GlPlatformFeature(_factory.ObtainGlFeature()))
+ .Bind().ToConstant(opts);
}
public IWindowImpl CreateWindow()
@@ -91,43 +90,43 @@ namespace Avalonia.Native
}
public IPopupImpl CreatePopup()
- {
+ {
return new PopupImpl(_factory);
}
- }
-
- public class AvaloniaNativeMacOptions
+ }
+
+ public class AvaloniaNativeMacOptions
{
private readonly IAvnMacOptions _opts;
private bool _showInDock;
- internal AvaloniaNativeMacOptions(IAvnMacOptions opts)
- {
- _opts = opts;
- ShowInDock = true;
- }
-
- public bool ShowInDock
- {
- get => _showInDock;
- set
- {
- _showInDock = value;
- _opts.ShowInDock = value ? 1 : 0;
- }
- }
- }
-
- public class AvaloniaNativeOptions
- {
- public AvaloniaNativeMacOptions MacOptions { get; set; }
- public bool UseDeferredRendering { get; set; } = true;
+ internal AvaloniaNativeMacOptions(IAvnMacOptions opts)
+ {
+ _opts = opts;
+ ShowInDock = true;
+ }
+
+ public bool ShowInDock
+ {
+ get => _showInDock;
+ set
+ {
+ _showInDock = value;
+ _opts.ShowInDock = value ? 1 : 0;
+ }
+ }
+ }
+
+ public class AvaloniaNativeOptions
+ {
+ public AvaloniaNativeMacOptions MacOptions { get; set; }
+ public bool UseDeferredRendering { get; set; } = true;
public bool UseGpu { get; set; } = false;
- internal AvaloniaNativeOptions(IAvaloniaNativeFactory factory)
- {
- var mac = factory.GetMacOptions();
- if (mac != null)
+ internal AvaloniaNativeOptions(IAvaloniaNativeFactory factory)
+ {
+ var mac = factory.GetMacOptions();
+ if (mac != null)
MacOptions = new AvaloniaNativeMacOptions(mac);
- }
-
- }
-}
+ }
+
+ }
+}
diff --git a/src/Avalonia.Native/AvaloniaNativePlatformExtensions.cs b/src/Avalonia.Native/AvaloniaNativePlatformExtensions.cs
index d455eb47bc..b14a313546 100644
--- a/src/Avalonia.Native/AvaloniaNativePlatformExtensions.cs
+++ b/src/Avalonia.Native/AvaloniaNativePlatformExtensions.cs
@@ -1,29 +1,29 @@
-// 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;
+// 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 Avalonia.Controls;
using Avalonia.Native;
-
-namespace Avalonia
+
+namespace Avalonia
{
- public static class AvaloniaNativePlatformExtensions
+ public static class AvaloniaNativePlatformExtensions
{
public static T UseAvaloniaNative(this T builder,
- string libraryPath = null,
+ string libraryPath = null,
Action configure = null)
- where T : AppBuilderBase, new()
- {
+ where T : AppBuilderBase, new()
+ {
if (libraryPath == null)
{
builder.UseWindowingSubsystem(() => AvaloniaNativePlatform.Initialize(configure));
- }
+ }
else
{
builder.UseWindowingSubsystem(() => AvaloniaNativePlatform.Initialize(libraryPath, configure));
- }
-
- return builder;
- }
- }
-}
+ }
+
+ return builder;
+ }
+ }
+}
diff --git a/src/Avalonia.Native/PlatformThreadingInterface.cs b/src/Avalonia.Native/PlatformThreadingInterface.cs
index 514ddf03a9..5f215b3c2d 100644
--- a/src/Avalonia.Native/PlatformThreadingInterface.cs
+++ b/src/Avalonia.Native/PlatformThreadingInterface.cs
@@ -1,4 +1,4 @@
-// Copyright (c) The Avalonia Project. All rights reserved.
+// 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;
@@ -49,7 +49,7 @@ namespace Avalonia.Native
_native = native;
using (var cb = new SignaledCallback(this))
_native.SignaledCallback = cb;
- }
+ }
public bool CurrentThreadIsLoopThread => _native.CurrentThreadIsLoopThread;
diff --git a/src/Avalonia.Native/ScreenImpl.cs b/src/Avalonia.Native/ScreenImpl.cs
index c956cb09ff..079062c254 100644
--- a/src/Avalonia.Native/ScreenImpl.cs
+++ b/src/Avalonia.Native/ScreenImpl.cs
@@ -1,44 +1,44 @@
-// 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 Avalonia.Native.Interop;
+// 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 Avalonia.Native.Interop;
using Avalonia.Platform;
namespace Avalonia.Native
{
class ScreenImpl : IScreenImpl, IDisposable
{
- private IAvnScreens _native;
-
+ private IAvnScreens _native;
+
public ScreenImpl(IAvnScreens native)
{
_native = native;
- }
+ }
public int ScreenCount => _native.GetScreenCount();
- public Screen[] AllScreens
+ public Screen[] AllScreens
{
get
- {
- var count = ScreenCount;
- var result = new Screen[count];
-
+ {
+ var count = ScreenCount;
+ var result = new Screen[count];
+
for(int i = 0; i < count; i++)
- {
- var screen = _native.GetScreen(i);
+ {
+ var screen = _native.GetScreen(i);
result[i] = new Screen(screen.Bounds.ToAvaloniaRect(), screen.WorkingArea.ToAvaloniaRect(), screen.Primary);
- }
-
+ }
+
return result;
}
- }
-
+ }
+
public void Dispose ()
{
- _native.Dispose();
+ _native.Dispose();
_native = null;
}
}