committed by
GitHub
19 changed files with 64 additions and 891 deletions
@ -1,7 +1,6 @@ |
|||
using System; |
|||
using System.ComponentModel; |
|||
using System.Windows.Forms; |
|||
using Avalonia.Controls; |
|||
using Avalonia.Controls.Embedding; |
|||
using Avalonia.Input; |
|||
using Avalonia.VisualTree; |
|||
@ -1,49 +0,0 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<EnableDefaultCompileItems>False</EnableDefaultCompileItems> |
|||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo> |
|||
<RootNamespace>Avalonia.Win32</RootNamespace> |
|||
<AssemblyName>Avalonia.Win32</AssemblyName> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> |
|||
<DebugSymbols>true</DebugSymbols> |
|||
<DebugType>full</DebugType> |
|||
<Optimize>false</Optimize> |
|||
<OutputPath>bin\Debug\</OutputPath> |
|||
<DefineConstants>TRACE;DEBUG;NETSTANDARD</DefineConstants> |
|||
<ErrorReport>prompt</ErrorReport> |
|||
<WarningLevel>4</WarningLevel> |
|||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' "> |
|||
<DebugType>pdbonly</DebugType> |
|||
<Optimize>true</Optimize> |
|||
<OutputPath>bin\Release\</OutputPath> |
|||
<DefineConstants>TRACE;NETSTANDARD</DefineConstants> |
|||
<ErrorReport>prompt</ErrorReport> |
|||
<WarningLevel>4</WarningLevel> |
|||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks> |
|||
</PropertyGroup> |
|||
<ItemGroup> |
|||
<Folder Include="Properties\" /> |
|||
</ItemGroup> |
|||
<ItemGroup> |
|||
<ProjectReference Include="..\..\Avalonia.Animation\Avalonia.Animation.csproj" /> |
|||
<ProjectReference Include="..\..\Avalonia.Base\Avalonia.Base.csproj" /> |
|||
<ProjectReference Include="..\..\Avalonia.Controls\Avalonia.Controls.csproj" /> |
|||
<ProjectReference Include="..\..\Avalonia.Input\Avalonia.Input.csproj" /> |
|||
<ProjectReference Include="..\..\Avalonia.Interactivity\Avalonia.Interactivity.csproj" /> |
|||
<ProjectReference Include="..\..\Avalonia.Layout\Avalonia.Layout.csproj" /> |
|||
<ProjectReference Include="..\..\Avalonia.Styling\Avalonia.Styling.csproj" /> |
|||
<ProjectReference Include="..\..\Avalonia.Visuals\Avalonia.Visuals.csproj" /> |
|||
</ItemGroup> |
|||
<ItemGroup> |
|||
<Compile Include="ComStreamWrapper.cs" /> |
|||
<Compile Include="Gdip.cs" /> |
|||
<Compile Include="IconImpl.cs" /> |
|||
<Compile Include="NativeWin32Platform.cs" /> |
|||
<Compile Include="Win32Exception.cs" /> |
|||
</ItemGroup> |
|||
<Import Project="..\Avalonia.Win32\Avalonia.Win32.Shared.projitems" Label="Shared" /> |
|||
</Project> |
|||
@ -1,197 +0,0 @@ |
|||
//
|
|||
// System.Drawing.ComIStreamWrapper.cs
|
|||
//
|
|||
// Author:
|
|||
// Kornél Pál <http://www.kornelpal.hu/>
|
|||
//
|
|||
// Copyright (C) 2005-2008 Kornél Pál
|
|||
//
|
|||
|
|||
//
|
|||
// 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.
|
|||
//
|
|||
|
|||
using System; |
|||
using System.IO; |
|||
using System.Reflection; |
|||
using System.Runtime.InteropServices; |
|||
using System.Runtime.InteropServices.ComTypes; |
|||
using STATSTG = System.Runtime.InteropServices.ComTypes.STATSTG; |
|||
|
|||
namespace Avalonia.Win32 |
|||
{ |
|||
// Stream to IStream wrapper for COM interop
|
|||
internal sealed class ComIStreamWrapper : IStream |
|||
{ |
|||
private const int STG_E_INVALIDFUNCTION = unchecked((int)0x80030001); |
|||
|
|||
private readonly Stream baseStream; |
|||
private long position = -1; |
|||
|
|||
internal ComIStreamWrapper(Stream stream) |
|||
{ |
|||
baseStream = stream; |
|||
} |
|||
|
|||
private void SetSizeToPosition() |
|||
{ |
|||
if (position != -1) |
|||
{ |
|||
if (position > baseStream.Length) |
|||
baseStream.SetLength(position); |
|||
baseStream.Position = position; |
|||
position = -1; |
|||
} |
|||
} |
|||
|
|||
public void Read(byte[] pv, int cb, IntPtr pcbRead) |
|||
{ |
|||
int read = 0; |
|||
|
|||
if (cb != 0) |
|||
{ |
|||
SetSizeToPosition(); |
|||
read = baseStream.Read(pv, 0, cb); |
|||
} |
|||
|
|||
if (pcbRead != IntPtr.Zero) |
|||
Marshal.WriteInt32(pcbRead, read); |
|||
} |
|||
|
|||
public void Write(byte[] pv, int cb, IntPtr pcbWritten) |
|||
{ |
|||
if (cb != 0) |
|||
{ |
|||
SetSizeToPosition(); |
|||
baseStream.Write(pv, 0, cb); |
|||
} |
|||
|
|||
if (pcbWritten != IntPtr.Zero) |
|||
Marshal.WriteInt32(pcbWritten, cb); |
|||
} |
|||
|
|||
public void Seek(long dlibMove, int dwOrigin, IntPtr plibNewPosition) |
|||
{ |
|||
long length = baseStream.Length; |
|||
long newPosition; |
|||
|
|||
switch ((SeekOrigin)dwOrigin) |
|||
{ |
|||
case SeekOrigin.Begin: |
|||
newPosition = dlibMove; |
|||
break; |
|||
case SeekOrigin.Current: |
|||
if (position == -1) |
|||
newPosition = baseStream.Position + dlibMove; |
|||
else |
|||
newPosition = position + dlibMove; |
|||
break; |
|||
case SeekOrigin.End: |
|||
newPosition = length + dlibMove; |
|||
break; |
|||
default: |
|||
throw new COMException(null, STG_E_INVALIDFUNCTION); |
|||
} |
|||
|
|||
if (newPosition > length) |
|||
position = newPosition; |
|||
else |
|||
{ |
|||
baseStream.Position = newPosition; |
|||
position = -1; |
|||
} |
|||
|
|||
if (plibNewPosition != IntPtr.Zero) |
|||
Marshal.WriteInt64(plibNewPosition, newPosition); |
|||
} |
|||
|
|||
public void SetSize(long libNewSize) |
|||
{ |
|||
baseStream.SetLength(libNewSize); |
|||
} |
|||
|
|||
public void CopyTo(IStream pstm, long cb, IntPtr pcbRead, IntPtr pcbWritten) |
|||
{ |
|||
byte[] buffer; |
|||
long written = 0; |
|||
int read; |
|||
int count; |
|||
|
|||
if (cb != 0) |
|||
{ |
|||
if (cb < 4096) |
|||
count = (int)cb; |
|||
else |
|||
count = 4096; |
|||
buffer = new byte[count]; |
|||
SetSizeToPosition(); |
|||
while (true) |
|||
{ |
|||
if ((read = baseStream.Read(buffer, 0, count)) == 0) |
|||
break; |
|||
pstm.Write(buffer, read, IntPtr.Zero); |
|||
written += read; |
|||
if (written >= cb) |
|||
break; |
|||
if (cb - written < 4096) |
|||
count = (int)(cb - written); |
|||
} |
|||
} |
|||
|
|||
if (pcbRead != IntPtr.Zero) |
|||
Marshal.WriteInt64(pcbRead, written); |
|||
if (pcbWritten != IntPtr.Zero) |
|||
Marshal.WriteInt64(pcbWritten, written); |
|||
} |
|||
|
|||
public void Commit(int grfCommitFlags) |
|||
{ |
|||
baseStream.Flush(); |
|||
SetSizeToPosition(); |
|||
} |
|||
|
|||
public void Revert() |
|||
{ |
|||
throw new COMException(null, STG_E_INVALIDFUNCTION); |
|||
} |
|||
|
|||
public void LockRegion(long libOffset, long cb, int dwLockType) |
|||
{ |
|||
throw new COMException(null, STG_E_INVALIDFUNCTION); |
|||
} |
|||
|
|||
public void UnlockRegion(long libOffset, long cb, int dwLockType) |
|||
{ |
|||
throw new COMException(null, STG_E_INVALIDFUNCTION); |
|||
} |
|||
|
|||
public void Stat(out STATSTG pstatstg, int grfStatFlag) |
|||
{ |
|||
pstatstg = new STATSTG(); |
|||
pstatstg.cbSize = baseStream.Length; |
|||
} |
|||
|
|||
public void Clone(out IStream ppstm) |
|||
{ |
|||
ppstm = null; |
|||
throw new COMException(null, STG_E_INVALIDFUNCTION); |
|||
} |
|||
} |
|||
} |
|||
@ -1,128 +0,0 @@ |
|||
//
|
|||
// Code copy-pasted from from Mono / System.Drawing.*.cs
|
|||
// Original license below:
|
|||
//
|
|||
// Authors:
|
|||
// Alexandre Pigolkine (pigolkine@gmx.de)
|
|||
// Jordi Mas (jordi@ximian.com)
|
|||
// Sanjay Gupta (gsanjay@novell.com)
|
|||
// Ravindra (rkumar@novell.com)
|
|||
// Peter Dennis Bartok (pbartok@novell.com)
|
|||
// Sebastien Pouliot <sebastien@ximian.com>
|
|||
//
|
|||
//
|
|||
// Copyright (C) 2004, 2007 Novell, Inc (http://www.novell.com)
|
|||
//
|
|||
// 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.
|
|||
//
|
|||
|
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Runtime.InteropServices; |
|||
using System.Runtime.InteropServices.ComTypes; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
|
|||
namespace Avalonia.Win32 |
|||
{ |
|||
static class Gdip |
|||
{ |
|||
public enum Status |
|||
{ |
|||
Ok = 0, |
|||
GenericError = 1, |
|||
InvalidParameter = 2, |
|||
OutOfMemory = 3, |
|||
ObjectBusy = 4, |
|||
InsufficientBuffer = 5, |
|||
NotImplemented = 6, |
|||
Win32Error = 7, |
|||
WrongState = 8, |
|||
Aborted = 9, |
|||
FileNotFound = 10, |
|||
ValueOverflow = 11, |
|||
AccessDenied = 12, |
|||
UnknownImageFormat = 13, |
|||
FontFamilyNotFound = 14, |
|||
FontStyleNotFound = 15, |
|||
NotTrueTypeFont = 16, |
|||
UnsupportedGdiplusVersion = 17, |
|||
GdiplusNotInitialized = 18, |
|||
PropertyNotFound = 19, |
|||
PropertyNotSupported = 20, |
|||
ProfileNotFound = 21 |
|||
} |
|||
|
|||
[StructLayout(LayoutKind.Sequential)] |
|||
internal struct GdiplusStartupInput |
|||
{ |
|||
// internalted to silent compiler
|
|||
internal uint GdiplusVersion; |
|||
internal IntPtr DebugEventCallback; |
|||
internal int SuppressBackgroundThread; |
|||
internal int SuppressExternalCodecs; |
|||
|
|||
internal static GdiplusStartupInput MakeGdiplusStartupInput() |
|||
{ |
|||
GdiplusStartupInput result = new GdiplusStartupInput(); |
|||
result.GdiplusVersion = 1; |
|||
result.DebugEventCallback = IntPtr.Zero; |
|||
result.SuppressBackgroundThread = 0; |
|||
result.SuppressExternalCodecs = 0; |
|||
return result; |
|||
} |
|||
} |
|||
|
|||
[StructLayout(LayoutKind.Sequential)] |
|||
internal struct GdiplusStartupOutput |
|||
{ |
|||
internal IntPtr NotificationHook; |
|||
internal IntPtr NotificationUnhook; |
|||
|
|||
internal static GdiplusStartupOutput MakeGdiplusStartupOutput() |
|||
{ |
|||
GdiplusStartupOutput result = new GdiplusStartupOutput(); |
|||
result.NotificationHook = result.NotificationUnhook = IntPtr.Zero; |
|||
return result; |
|||
} |
|||
} |
|||
|
|||
|
|||
[DllImport("gdiplus.dll")] |
|||
public static extern Status GdiplusStartup(ref ulong token, ref GdiplusStartupInput input, ref GdiplusStartupOutput output); |
|||
|
|||
[DllImport("gdiplus.dll", ExactSpelling = true, CharSet = CharSet.Unicode)] |
|||
public static extern Status GdipLoadImageFromStream([MarshalAs(UnmanagedType.Interface, MarshalTypeRef = typeof(IStream))] IStream stream, out IntPtr image); |
|||
[DllImport("gdiplus.dll")] |
|||
public static extern Status GdipCreateHICONFromBitmap(IntPtr bmp, out IntPtr HandleIcon); |
|||
|
|||
[DllImport("gdiplus.dll")] |
|||
internal static extern Status GdipDisposeImage(IntPtr image); |
|||
|
|||
static Gdip() |
|||
{ |
|||
ulong token = 0; |
|||
var input = GdiplusStartupInput.MakeGdiplusStartupInput(); |
|||
var output = GdiplusStartupOutput.MakeGdiplusStartupOutput(); |
|||
GdiplusStartup(ref token, ref input, ref output); |
|||
} |
|||
} |
|||
} |
|||
@ -1,45 +0,0 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.IO; |
|||
using System.Linq; |
|||
using System.Runtime.InteropServices; |
|||
using System.Runtime.InteropServices.ComTypes; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
using Avalonia.Platform; |
|||
|
|||
namespace Avalonia.Win32 |
|||
{ |
|||
public class IconImpl : IWindowIconImpl |
|||
{ |
|||
private readonly MemoryStream _ms; |
|||
|
|||
public IconImpl(Stream data) |
|||
{ |
|||
_ms = new MemoryStream(); |
|||
data.CopyTo(_ms); |
|||
_ms.Seek(0, SeekOrigin.Begin); |
|||
IntPtr bitmap; |
|||
var status = Gdip.GdipLoadImageFromStream(new ComIStreamWrapper(_ms), out bitmap); |
|||
if (status != Gdip.Status.Ok) |
|||
throw new Exception("Unable to load icon, gdip status: " + (int) status); |
|||
IntPtr icon; |
|||
status = Gdip.GdipCreateHICONFromBitmap(bitmap, out icon); |
|||
if (status != Gdip.Status.Ok) |
|||
throw new Exception("Unable to create HICON, gdip status: " + (int)status); |
|||
Gdip.GdipDisposeImage(bitmap); |
|||
HIcon = icon; |
|||
} |
|||
|
|||
public IntPtr HIcon { get;} |
|||
public void Save(Stream outputStream) |
|||
{ |
|||
lock (_ms) |
|||
{ |
|||
_ms.Seek(0, SeekOrigin.Begin); |
|||
_ms.CopyTo(outputStream); |
|||
} |
|||
} |
|||
|
|||
} |
|||
} |
|||
@ -1,30 +0,0 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.IO; |
|||
using System.Linq; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
using Avalonia.Platform; |
|||
|
|||
namespace Avalonia.Win32 |
|||
{ |
|||
partial class Win32Platform |
|||
{ |
|||
//TODO: An actual implementation
|
|||
public IWindowIconImpl LoadIcon(string fileName) |
|||
{ |
|||
//No file IO for netstandard, still waiting for proper net core tooling
|
|||
throw new NotSupportedException(); |
|||
} |
|||
|
|||
public IWindowIconImpl LoadIcon(Stream stream) => new IconImpl(stream); |
|||
|
|||
public IWindowIconImpl LoadIcon(IBitmapImpl bitmap) |
|||
{ |
|||
var ms = new MemoryStream(); |
|||
bitmap.Save(ms); |
|||
ms.Seek(0, SeekOrigin.Begin); |
|||
return new IconImpl(ms); |
|||
} |
|||
} |
|||
} |
|||
@ -1,12 +0,0 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
|
|||
namespace Avalonia.Win32.NetStandard |
|||
{ |
|||
class AvaloniaWin32Exception : Exception |
|||
{ |
|||
} |
|||
} |
|||
@ -1,35 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<PropertyGroup> |
|||
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects> |
|||
<HasSharedItems>true</HasSharedItems> |
|||
<SharedGUID>9defc6b7-845b-4d8f-afc0-d32bf0032b8c</SharedGUID> |
|||
</PropertyGroup> |
|||
<PropertyGroup Label="Configuration"> |
|||
<Import_RootNamespace>Avalonia.Win32.Shared</Import_RootNamespace> |
|||
</PropertyGroup> |
|||
<ItemGroup> |
|||
<Compile Include="$(MSBuildThisFileDirectory)ClipboardImpl.cs" /> |
|||
<Compile Include="$(MSBuildThisFileDirectory)CursorFactory.cs" /> |
|||
<Compile Include="$(MSBuildThisFileDirectory)EmbeddedWindowImpl.cs" /> |
|||
<Compile Include="$(MSBuildThisFileDirectory)FramebufferManager.cs" /> |
|||
<Compile Include="$(MSBuildThisFileDirectory)Input\KeyInterop.cs" /> |
|||
<Compile Include="$(MSBuildThisFileDirectory)Input\WindowsKeyboardDevice.cs" /> |
|||
<Compile Include="$(MSBuildThisFileDirectory)Input\WindowsMouseDevice.cs" /> |
|||
<Compile Include="$(MSBuildThisFileDirectory)Interop\UnmanagedMethods.cs" /> |
|||
<Compile Include="$(MSBuildThisFileDirectory)PlatformConstants.cs" /> |
|||
<Compile Include="$(MSBuildThisFileDirectory)PopupImpl.cs" /> |
|||
<Compile Include="$(MSBuildThisFileDirectory)Properties\AssemblyInfo.cs" /> |
|||
<Compile Include="$(MSBuildThisFileDirectory)RenderLoop.cs" /> |
|||
<Compile Include="$(MSBuildThisFileDirectory)ScreenImpl.cs" /> |
|||
<Compile Include="$(MSBuildThisFileDirectory)SystemDialogImpl.cs" /> |
|||
<Compile Include="$(MSBuildThisFileDirectory)Win32Platform.cs" /> |
|||
<Compile Include="$(MSBuildThisFileDirectory)WindowFramebuffer.cs" /> |
|||
<Compile Include="$(MSBuildThisFileDirectory)WindowImpl.cs" /> |
|||
<Compile Include="$(MSBuildThisFileDirectory)WinScreen.cs" /> |
|||
<Compile Include="$(MSBuildThisFileDirectory)..\..\Shared\WindowResizeDragHelper.cs" /> |
|||
<Compile Include="..\..\Shared\SharedAssemblyInfo.cs"> |
|||
<Link>Properties\SharedAssemblyInfo.cs</Link> |
|||
</Compile> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -1,103 +1,19 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
<PropertyGroup> |
|||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
|||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> |
|||
<ProjectGuid>{811A76CF-1CF6-440F-963B-BBE31BD72A82}</ProjectGuid> |
|||
<OutputType>Library</OutputType> |
|||
<AppDesignerFolder>Properties</AppDesignerFolder> |
|||
<RootNamespace>Avalonia.Win32</RootNamespace> |
|||
<AssemblyName>Avalonia.Win32</AssemblyName> |
|||
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> |
|||
<FileAlignment>512</FileAlignment> |
|||
<NuGetPackageImportStamp> |
|||
</NuGetPackageImportStamp> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |
|||
<DebugSymbols>true</DebugSymbols> |
|||
<DebugType>full</DebugType> |
|||
<Optimize>false</Optimize> |
|||
<OutputPath>bin\Debug\</OutputPath> |
|||
<DefineConstants>DEBUG;TRACE</DefineConstants> |
|||
<ErrorReport>prompt</ErrorReport> |
|||
<WarningLevel>4</WarningLevel> |
|||
<DocumentationFile>bin\Debug\Avalonia.Win32.xml</DocumentationFile> |
|||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks> |
|||
<NoWarn>CS1591</NoWarn> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> |
|||
<DebugType>pdbonly</DebugType> |
|||
<Optimize>true</Optimize> |
|||
<OutputPath>bin\Release\</OutputPath> |
|||
<DefineConstants>TRACE</DefineConstants> |
|||
<ErrorReport>prompt</ErrorReport> |
|||
<WarningLevel>4</WarningLevel> |
|||
<DocumentationFile>bin\Release\Avalonia.Win32.xml</DocumentationFile> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks> |
|||
<NoWarn>CS1591</NoWarn> |
|||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors> |
|||
</PropertyGroup> |
|||
<ItemGroup> |
|||
<Reference Include="PresentationCore" /> |
|||
<Reference Include="PresentationFramework" /> |
|||
<Reference Include="System" /> |
|||
<Reference Include="System.Core" /> |
|||
<Reference Include="System.Drawing" /> |
|||
<Reference Include="System.Windows.Forms" /> |
|||
<Reference Include="Microsoft.CSharp" /> |
|||
<Reference Include="System.Windows.Forms" /> |
|||
<Reference Include="Microsoft.CSharp" /> |
|||
<Reference Include="System.Xaml" /> |
|||
<Reference Include="WindowsBase" /> |
|||
<Reference Include="WindowsFormsIntegration" /> |
|||
</ItemGroup> |
|||
<ItemGroup> |
|||
<Compile Include="Embedding\WinFormsAvaloniaControlHost.cs"> |
|||
<SubType>Component</SubType> |
|||
</Compile> |
|||
<Compile Include="IconImpl.cs" /> |
|||
<Compile Include="WinFormsWin32Platform.cs" /> |
|||
<ProjectReference Include="..\..\Avalonia.Animation\Avalonia.Animation.csproj" /> |
|||
<ProjectReference Include="..\..\Avalonia.Base\Avalonia.Base.csproj" /> |
|||
<ProjectReference Include="..\..\Avalonia.Controls\Avalonia.Controls.csproj" /> |
|||
<ProjectReference Include="..\..\Avalonia.Input\Avalonia.Input.csproj" /> |
|||
<ProjectReference Include="..\..\Avalonia.Interactivity\Avalonia.Interactivity.csproj" /> |
|||
<ProjectReference Include="..\..\Avalonia.Layout\Avalonia.Layout.csproj" /> |
|||
<ProjectReference Include="..\..\Avalonia.Styling\Avalonia.Styling.csproj" /> |
|||
<ProjectReference Include="..\..\Avalonia.Visuals\Avalonia.Visuals.csproj" /> |
|||
</ItemGroup> |
|||
<ItemGroup> |
|||
<ProjectReference Include="..\..\Avalonia.Animation\Avalonia.Animation.csproj"> |
|||
<Project>{D211E587-D8BC-45B9-95A4-F297C8FA5200}</Project> |
|||
<Name>Avalonia.Animation</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Avalonia.Base\Avalonia.Base.csproj"> |
|||
<Project>{B09B78D8-9B26-48B0-9149-D64A2F120F3F}</Project> |
|||
<Name>Avalonia.Base</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Avalonia.Controls\Avalonia.Controls.csproj"> |
|||
<Project>{D2221C82-4A25-4583-9B43-D791E3F6820C}</Project> |
|||
<Name>Avalonia.Controls</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Avalonia.Diagnostics\Avalonia.Diagnostics.csproj"> |
|||
<Project>{7062AE20-5DCC-4442-9645-8195BDECE63E}</Project> |
|||
<Name>Avalonia.Diagnostics</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Avalonia.Input\Avalonia.Input.csproj"> |
|||
<Project>{62024B2D-53EB-4638-B26B-85EEAA54866E}</Project> |
|||
<Name>Avalonia.Input</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Avalonia.Interactivity\Avalonia.Interactivity.csproj"> |
|||
<Project>{6B0ED19D-A08B-461C-A9D9-A9EE40B0C06B}</Project> |
|||
<Name>Avalonia.Interactivity</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Avalonia.Layout\Avalonia.Layout.csproj"> |
|||
<Project>{42472427-4774-4C81-8AFF-9F27B8E31721}</Project> |
|||
<Name>Avalonia.Layout</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Avalonia.Visuals\Avalonia.Visuals.csproj"> |
|||
<Project>{EB582467-6ABB-43A1-B052-E981BA910E3A}</Project> |
|||
<Name>Avalonia.Visuals</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Avalonia.Styling\Avalonia.Styling.csproj"> |
|||
<Project>{F1BAA01A-F176-4C6A-B39D-5B40BB1B148F}</Project> |
|||
<Name>Avalonia.Styling</Name> |
|||
</ProjectReference> |
|||
<PackageReference Include="System.Drawing.Common" Version="4.5.0-preview1-25914-04" /> |
|||
</ItemGroup> |
|||
<Import Project="Avalonia.Win32.Shared.projitems" Label="Shared" /> |
|||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> |
|||
<Import Project="..\..\..\build\Rx.props" /> |
|||
</Project> |
|||
@ -1,184 +0,0 @@ |
|||
<StyleCopSettings Version="105"> |
|||
<Analyzers> |
|||
<Analyzer AnalyzerId="StyleCop.CSharp.DocumentationRules"> |
|||
<Rules> |
|||
<Rule Name="ElementsMustBeDocumented"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="PartialElementsMustBeDocumented"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="EnumerationItemsMustBeDocumented"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="DocumentationMustContainValidXml"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="ElementDocumentationMustHaveSummary"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="PartialElementDocumentationMustHaveSummary"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="ElementDocumentationMustHaveSummaryText"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="PartialElementDocumentationMustHaveSummaryText"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="ElementDocumentationMustNotHaveDefaultSummary"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="ElementParametersMustBeDocumented"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="ElementParameterDocumentationMustMatchElementParameters"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="ElementParameterDocumentationMustDeclareParameterName"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="ElementParameterDocumentationMustHaveText"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="ElementReturnValueMustBeDocumented"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="ElementReturnValueDocumentationMustHaveText"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="VoidReturnValueMustNotBeDocumented"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="GenericTypeParametersMustBeDocumented"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="GenericTypeParametersMustBeDocumentedPartialClass"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="GenericTypeParameterDocumentationMustMatchTypeParameters"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="GenericTypeParameterDocumentationMustDeclareParameterName"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="GenericTypeParameterDocumentationMustHaveText"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="PropertySummaryDocumentationMustMatchAccessors"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="PropertySummaryDocumentationMustOmitSetAccessorWithRestrictedAccess"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="ElementDocumentationMustNotBeCopiedAndPasted"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="SingleLineCommentsMustNotUseDocumentationStyleSlashes"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="DocumentationTextMustNotBeEmpty"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="DocumentationTextMustContainWhitespace"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="DocumentationMustMeetCharacterPercentage"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="ConstructorSummaryDocumentationMustBeginWithStandardText"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="DestructorSummaryDocumentationMustBeginWithStandardText"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="DocumentationHeadersMustNotContainBlankLines"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="IncludedDocumentationXPathDoesNotExist"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="IncludeNodeDoesNotContainValidFileAndPath"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="InheritDocMustBeUsedWithInheritingClass"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
<Rule Name="ElementDocumentationMustBeSpelledCorrectly"> |
|||
<RuleSettings> |
|||
<BooleanProperty Name="Enabled">False</BooleanProperty> |
|||
</RuleSettings> |
|||
</Rule> |
|||
</Rules> |
|||
<AnalyzerSettings /> |
|||
</Analyzer> |
|||
</Analyzers> |
|||
</StyleCopSettings> |
|||
@ -1,47 +0,0 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.IO; |
|||
using System.Linq; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
using Avalonia.Platform; |
|||
|
|||
namespace Avalonia.Win32 |
|||
{ |
|||
partial class Win32Platform |
|||
{ |
|||
public IWindowIconImpl LoadIcon(string fileName) |
|||
{ |
|||
using (var stream = File.OpenRead(fileName)) |
|||
{ |
|||
return CreateImpl(stream); |
|||
} |
|||
} |
|||
|
|||
public IWindowIconImpl LoadIcon(Stream stream) |
|||
{ |
|||
return CreateImpl(stream); |
|||
} |
|||
|
|||
public IWindowIconImpl LoadIcon(IBitmapImpl bitmap) |
|||
{ |
|||
using (var memoryStream = new MemoryStream()) |
|||
{ |
|||
bitmap.Save(memoryStream); |
|||
return new IconImpl(new System.Drawing.Bitmap(memoryStream)); |
|||
} |
|||
} |
|||
|
|||
private static IconImpl CreateImpl(Stream stream) |
|||
{ |
|||
try |
|||
{ |
|||
return new IconImpl(new System.Drawing.Icon(stream)); |
|||
} |
|||
catch (ArgumentException) |
|||
{ |
|||
return new IconImpl(new System.Drawing.Bitmap(stream)); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue