Merge remote-tracking branch 'origin/main' into develop

This commit is contained in:
Matthew Leibowitz 2021-05-18 03:03:53 +02:00
Родитель 1a7b9c772c c14020922c
Коммит 48c7e9a2ca
93 изменённых файлов: 1680 добавлений и 148 удалений

Просмотреть файл

@ -1,5 +1,5 @@
# dependencies
mdoc release 5.7.4.10
mdoc release 5.8.2
harfbuzz release 2.6.1
skia release m88
xunit release 2.4.1
@ -19,8 +19,13 @@ GLibSharp release 3.22.24.37
AtkSharp release 3.22.24.37
System.Memory release 4.5.3
System.IO.UnmanagedMemoryStream release 4.3.0
System.Drawing.Common release 4.5.1
SharpVk release 0.4.2
Uno.UI release 2.4.4
Microsoft.ProjectReunion release 0.5.0
Microsoft.ProjectReunion.Foundation release 0.5.0
Microsoft.ProjectReunion.WinUI release 0.5.0
Microsoft.Windows.SDK.NET.Ref release 10.0.18362.15
# additional references used by the tooling
OpenTK.GLControl reference 1.1.2349.61993
@ -61,6 +66,7 @@ SkiaSharp.Views.Forms nuget 2.88.0
SkiaSharp.Views.Forms.WPF nuget 2.88.0
SkiaSharp.Views.Forms.GTK nuget 2.88.0
SkiaSharp.Views.Uno nuget 2.88.0
SkiaSharp.Views.WinUI nuget 2.88.0
SkiaSharp.HarfBuzz nuget 2.88.0
SkiaSharp.Vulkan.SharpVk nuget 2.88.0
HarfBuzzSharp nuget 2.6.1.8

Просмотреть файл

@ -4,20 +4,8 @@ namespace SkiaSharp
{
internal partial class SkiaApi
{
#if __TVOS__ && __UNIFIED__
#if __IOS__ || __TVOS__ || __WATCHOS__
private const string SKIA = "@rpath/libSkiaSharp.framework/libSkiaSharp";
#elif __WATCHOS__ && __UNIFIED__
private const string SKIA = "@rpath/libSkiaSharp.framework/libSkiaSharp";
#elif __IOS__ && __UNIFIED__
private const string SKIA = "@rpath/libSkiaSharp.framework/libSkiaSharp";
#elif __ANDROID__
private const string SKIA = "libSkiaSharp.so";
#elif __MACOS__
private const string SKIA = "libSkiaSharp.dylib";
#elif WINDOWS_UWP
private const string SKIA = "libSkiaSharp.dll";
#elif __TIZEN__
private const string SKIA = "libSkiaSharp.so";
#else
private const string SKIA = "libSkiaSharp";
#endif

Просмотреть файл

@ -4,22 +4,8 @@ namespace HarfBuzzSharp
{
internal unsafe partial class HarfBuzzApi
{
#if __TVOS__ && __UNIFIED__
#if __IOS__ || __TVOS__ || __WATCHOS__
private const string HARFBUZZ = "@rpath/libHarfBuzzSharp.framework/libHarfBuzzSharp";
#elif __WATCHOS__ && __UNIFIED__
private const string HARFBUZZ = "@rpath/libHarfBuzzSharp.framework/libHarfBuzzSharp";
#elif __IOS__ && __UNIFIED__
private const string HARFBUZZ = "@rpath/libHarfBuzzSharp.framework/libHarfBuzzSharp";
#elif __ANDROID__
private const string HARFBUZZ = "libHarfBuzzSharp.so";
#elif __MACOS__
private const string HARFBUZZ = "libHarfBuzzSharp.dylib";
#elif __DESKTOP__
private const string HARFBUZZ = "libHarfBuzzSharp";
#elif WINDOWS_UWP
private const string HARFBUZZ = "libHarfBuzzSharp.dll";
#elif NET_STANDARD
private const string HARFBUZZ = "libHarfBuzzSharp";
#else
private const string HARFBUZZ = "libHarfBuzzSharp";
#endif

Просмотреть файл

@ -5494,8 +5494,6 @@ namespace HarfBuzzSharp
IdeoEmboxTopOrRight = 1768191088,
// HB_OT_LAYOUT_BASELINE_TAG_MATH = 1835103336
Math = 1835103336,
// _HB_OT_LAYOUT_BASELINE_TAG_MAX_VALUE = 2147483647
HbOtLayoutBaselineTagMaxValue = 2147483647,
}
// hb_ot_layout_glyph_class_t

Просмотреть файл

@ -62,7 +62,7 @@ namespace HarfBuzzSharp
internal static int SizeOf<T> ()
{
#if WINDOWS_UWP || NET_STANDARD
#if WINDOWS_UWP || NETSTANDARD || NET5_0_OR_GREATER
return Marshal.SizeOf<T> ();
#else
return Marshal.SizeOf (typeof (T));

Просмотреть файл

@ -4,7 +4,7 @@
<RootNamespace>HarfBuzzSharp</RootNamespace>
<AssemblyName>HarfBuzzSharp</AssemblyName>
<PackagingGroup>HarfBuzzSharp</PackagingGroup>
<DefineConstants>$(DefineConstants);NET_STANDARD;HARFBUZZ</DefineConstants>
<DefineConstants>$(DefineConstants);HARFBUZZ</DefineConstants>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.Memory" Version="4.5.3" />

Просмотреть файл

@ -6,11 +6,8 @@
<PackagingGroup>HarfBuzzSharp</PackagingGroup>
<DefineConstants>$(DefineConstants);HARFBUZZ</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('netstandard'))">
<DefineConstants>$(DefineConstants);NET_STANDARD</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('net4'))">
<DefineConstants>$(DefineConstants);USE_DELEGATES;__DESKTOP__</DefineConstants>
<DefineConstants>$(DefineConstants);USE_DELEGATES</DefineConstants>
</PropertyGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard1.3'">
<PackageReference Include="System.IO.UnmanagedMemoryStream" Version="4.3.0" />

Просмотреть файл

@ -4,7 +4,6 @@
<RootNamespace>SkiaSharp</RootNamespace>
<AssemblyName>SkiaSharp</AssemblyName>
<PackagingGroup>SkiaSharp</PackagingGroup>
<DefineConstants>$(DefineConstants);NET_STANDARD</DefineConstants>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.Memory" Version="4.5.3" />

Просмотреть файл

@ -5,11 +5,8 @@
<AssemblyName>SkiaSharp</AssemblyName>
<PackagingGroup>SkiaSharp</PackagingGroup>
</PropertyGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('netstandard'))">
<DefineConstants>$(DefineConstants);NET_STANDARD</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('net4'))">
<DefineConstants>$(DefineConstants);USE_DELEGATES;__DESKTOP__</DefineConstants>
<DefineConstants>$(DefineConstants);USE_DELEGATES</DefineConstants>
</PropertyGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard1.3'">
<PackageReference Include="System.IO.UnmanagedMemoryStream" Version="4.3.0" />

Просмотреть файл

@ -6,7 +6,7 @@
#addin nuget:?package=Mono.ApiTools.NuGetDiff&version=1.3.2&loaddependencies=true
#addin nuget:?package=Xamarin.Nuget.Validator&version=1.1.1
#tool nuget:?package=mdoc&version=5.7.4.10
#tool nuget:?package=mdoc&version=5.8.2
#tool nuget:?package=xunit.runner.console&version=2.4.1
#tool nuget:?package=vswhere&version=2.7.1
@ -72,6 +72,7 @@ var TRACKED_NUGETS = new Dictionary<string, Version> {
{ "SkiaSharp.Views.Forms.WPF", new Version (1, 57, 0) },
{ "SkiaSharp.Views.Forms.GTK", new Version (1, 57, 0) },
{ "SkiaSharp.Views.Uno", new Version (1, 57, 0) },
{ "SkiaSharp.Views.WinUI", new Version (1, 57, 0) },
{ "HarfBuzzSharp", new Version (1, 0, 0) },
{ "HarfBuzzSharp.NativeAssets.Linux", new Version (1, 0, 0) },
{ "HarfBuzzSharp.NativeAssets.WebAssembly", new Version (1, 0, 0) },
@ -203,7 +204,6 @@ Task ("tests-netcore")
CleanDirectories ($"{PACKAGE_CACHE_PATH}/harfbuzzsharp*");
// SkiaSharp.NetCore.Tests.csproj
RunMSBuild ("./tests/SkiaSharp.NetCore.Tests.sln");
try {
RunNetCoreTests ("./tests/SkiaSharp.NetCore.Tests/SkiaSharp.NetCore.Tests.csproj");
} catch {
@ -386,6 +386,7 @@ Task ("samples")
{ "macos", isMac },
{ "tvos", isMac },
{ "uwp", isWin },
{ "winui", isWin },
{ "watchos", isMac },
{ "wpf", isWin },
};
@ -394,6 +395,7 @@ Task ("samples")
{ "ios", "iPhone" },
{ "tvos", "iPhoneSimulator" },
{ "uwp", "x86" },
{ "winui", "x64" },
{ "watchos", "iPhoneSimulator" },
{ "xamarin.forms.mac", "iPhone" },
{ "xamarin.forms.windows", "x86" },

Просмотреть файл

@ -147,22 +147,26 @@ IEnumerable<(DirectoryPath path, string platform)> GetPlatformDirectories(Direct
// there were no cross-platform libraries, so process each platform
foreach (var dir in platformDirs) {
var d = dir.GetDirectoryName().ToLower();
if (d.StartsWith("monoandroid"))
if (d.StartsWith("monoandroid") || (d.StartsWith("net") && d.Contains("-android")))
yield return (dir, "android");
else if (d.StartsWith("net4"))
yield return (dir, "net");
else if (d.StartsWith("uap"))
yield return (dir, "uwp");
else if (d.StartsWith("xamarinios") || d.StartsWith("xamarin.ios"))
else if (d.StartsWith("xamarinios") || d.StartsWith("xamarin.ios") || (d.StartsWith("net") && d.Contains("-ios")))
yield return (dir, "ios");
else if (d.StartsWith("xamarinmac") || d.StartsWith("xamarin.mac"))
else if (d.StartsWith("xamarinmac") || d.StartsWith("xamarin.mac") || (d.StartsWith("net") && d.Contains("-macos")))
yield return (dir, "macos");
else if (d.StartsWith("xamarintvos") || d.StartsWith("xamarin.tvos"))
else if (d.StartsWith("xamarintvos") || d.StartsWith("xamarin.tvos") || (d.StartsWith("net") && d.Contains("-tvos")))
yield return (dir, "tvos");
else if (d.StartsWith("xamarinwatchos") || d.StartsWith("xamarin.watchos"))
else if (d.StartsWith("xamarinwatchos") || d.StartsWith("xamarin.watchos") || (d.StartsWith("net") && d.Contains("-watchos")))
yield return (dir, "watchos");
else if (d.StartsWith("tizen"))
else if (d.StartsWith("tizen") || (d.StartsWith("net") && d.Contains("-tizen")))
yield return (dir, "tizen");
else if (d.StartsWith("net") && d.Contains("-windows"))
yield return (dir, "windows");
else if (d.StartsWith("net") && d.Contains("-maccatalyst"))
yield return (dir, "maccatalyst");
else if (d.StartsWith("netcoreapp"))
; // skip this one for now
else
@ -225,6 +229,9 @@ async Task<NuGetDiff> CreateNuGetDiffAsync()
await AddDep("Uno.UI", "xamarinios10");
await AddDep("Uno.UI", "xamarinmac20");
await AddDep("Uno.UI", "UAP");
await AddDep("Microsoft.ProjectReunion.Foundation", "net5.0-windows");
await AddDep("Microsoft.ProjectReunion.WinUI", "net5.0-windows10.0.18362.0");
await AddDep("Microsoft.Windows.SDK.NET.Ref", "");
await AddDep("OpenTK.GLControl", "NET40", "reference");
await AddDep("Xamarin.Forms", "Xamarin.iOS10", "reference");
@ -271,7 +278,7 @@ async Task DownloadPackageAsync(string id, DirectoryPath outputDirectory)
{
currentId = currentId.ToLower();
Information($"Downloading: {currentId}...");
Information($"Downloading '{currentId}' version '{currentVersion}'...");
var root = await comparer.ExtractCachedPackageAsync(currentId, currentVersion);
var toolsDir = $"{root}/tools/";

Просмотреть файл

@ -0,0 +1,23 @@
# API diff: HarfBuzzSharp.dll
## HarfBuzzSharp.dll
### Namespace HarfBuzzSharp
#### Type Changed: HarfBuzzSharp.OpenTypeMetrics
Modified base type:
```diff
-System.ValueType
+System.Object
```
Removed constructor:
```csharp
public OpenTypeMetrics (IntPtr font);
```

Просмотреть файл

@ -0,0 +1,442 @@
# API diff: HarfBuzzSharp.dll
## HarfBuzzSharp.dll
### Namespace HarfBuzzSharp
#### Type Changed: HarfBuzzSharp.Feature
Added interface:
```csharp
System.IEquatable<Feature>
```
Added methods:
```csharp
public virtual bool Equals (Feature obj);
public override bool Equals (object obj);
public override int GetHashCode ();
public static bool op_Equality (Feature left, Feature right);
public static bool op_Inequality (Feature left, Feature right);
```
#### Type Changed: HarfBuzzSharp.FontExtents
Added interface:
```csharp
System.IEquatable<FontExtents>
```
Added methods:
```csharp
public virtual bool Equals (FontExtents obj);
public override bool Equals (object obj);
public override int GetHashCode ();
public static bool op_Equality (FontExtents left, FontExtents right);
public static bool op_Inequality (FontExtents left, FontExtents right);
```
#### Type Changed: HarfBuzzSharp.GlyphExtents
Added interface:
```csharp
System.IEquatable<GlyphExtents>
```
Added methods:
```csharp
public virtual bool Equals (GlyphExtents obj);
public override bool Equals (object obj);
public override int GetHashCode ();
public static bool op_Equality (GlyphExtents left, GlyphExtents right);
public static bool op_Inequality (GlyphExtents left, GlyphExtents right);
```
#### Type Changed: HarfBuzzSharp.GlyphInfo
Added interface:
```csharp
System.IEquatable<GlyphInfo>
```
Added methods:
```csharp
public virtual bool Equals (GlyphInfo obj);
public override bool Equals (object obj);
public override int GetHashCode ();
public static bool op_Equality (GlyphInfo left, GlyphInfo right);
public static bool op_Inequality (GlyphInfo left, GlyphInfo right);
```
#### Type Changed: HarfBuzzSharp.GlyphPosition
Added interface:
```csharp
System.IEquatable<GlyphPosition>
```
Added methods:
```csharp
public virtual bool Equals (GlyphPosition obj);
public override bool Equals (object obj);
public override int GetHashCode ();
public static bool op_Equality (GlyphPosition left, GlyphPosition right);
public static bool op_Inequality (GlyphPosition left, GlyphPosition right);
```
#### Type Changed: HarfBuzzSharp.OpenTypeMetrics
Modified base type:
```diff
-System.ValueType
+System.Object
```
Removed constructor:
```csharp
public OpenTypeMetrics (IntPtr font);
```
Added constructor:
```csharp
public OpenTypeMetrics (Font font);
```
#### New Type: HarfBuzzSharp.BufferDiffFlags
```csharp
[Serializable]
public enum BufferDiffFlags {
ClusterMismatch = 32,
CodepointMismatch = 16,
ContentTypeMismatch = 1,
DottedCirclePresent = 8,
Equal = 0,
GlyphFlagsMismatch = 64,
LengthMismatch = 2,
NotdefPresent = 4,
PositionMismatch = 128,
}
```
#### New Type: HarfBuzzSharp.OpenTypeColorLayer
```csharp
public struct OpenTypeColorLayer, System.IEquatable<OpenTypeColorLayer> {
// properties
public uint ColorIndex { get; set; }
public uint Glyph { get; set; }
// methods
public virtual bool Equals (OpenTypeColorLayer obj);
public override bool Equals (object obj);
public override int GetHashCode ();
public static bool op_Equality (OpenTypeColorLayer left, OpenTypeColorLayer right);
public static bool op_Inequality (OpenTypeColorLayer left, OpenTypeColorLayer right);
}
```
#### New Type: HarfBuzzSharp.OpenTypeColorPaletteFlags
```csharp
[Serializable]
public enum OpenTypeColorPaletteFlags {
Default = 0,
UsableWithDarkBackground = 2,
UsableWithLightBackground = 1,
}
```
#### New Type: HarfBuzzSharp.OpenTypeLayoutBaselineTag
```csharp
[Serializable]
public enum OpenTypeLayoutBaselineTag {
Hanging = 1751215719,
IdeoEmboxBottomOrLeft = 1768187247,
IdeoEmboxTopOrRight = 1768191088,
IdeoFaceBottomOrLeft = 1768121954,
IdeoFaceTopOrRight = 1768121972,
Math = 1835103336,
Roman = 1919905134,
}
```
#### New Type: HarfBuzzSharp.OpenTypeLayoutGlyphClass
```csharp
[Serializable]
public enum OpenTypeLayoutGlyphClass {
BaseGlyph = 1,
Component = 4,
Ligature = 2,
Mark = 3,
Unclassified = 0,
}
```
#### New Type: HarfBuzzSharp.OpenTypeMathConstant
```csharp
[Serializable]
public enum OpenTypeMathConstant {
AccentBaseHeight = 6,
AxisHeight = 5,
DelimitedSubFormulaMinHeight = 2,
DisplayOperatorMinHeight = 3,
FlattenedAccentBaseHeight = 7,
FractionDenomDisplayStyleGapMin = 40,
FractionDenominatorDisplayStyleShiftDown = 35,
FractionDenominatorGapMin = 39,
FractionDenominatorShiftDown = 34,
FractionNumDisplayStyleGapMin = 37,
FractionNumeratorDisplayStyleShiftUp = 33,
FractionNumeratorGapMin = 36,
FractionNumeratorShiftUp = 32,
FractionRuleThickness = 38,
LowerLimitBaselineDropMin = 21,
LowerLimitGapMin = 20,
MathLeading = 4,
OverbarExtraAscender = 45,
OverbarRuleThickness = 44,
OverbarVerticalGap = 43,
RadicalDegreeBottomRaisePercent = 55,
RadicalDisplayStyleVerticalGap = 50,
RadicalExtraAscender = 52,
RadicalKernAfterDegree = 54,
RadicalKernBeforeDegree = 53,
RadicalRuleThickness = 51,
RadicalVerticalGap = 49,
ScriptPercentScaleDown = 0,
ScriptScriptPercentScaleDown = 1,
SkewedFractionHorizontalGap = 41,
SkewedFractionVerticalGap = 42,
SpaceAfterScript = 17,
StackBottomDisplayStyleShiftDown = 25,
StackBottomShiftDown = 24,
StackDisplayStyleGapMin = 27,
StackGapMin = 26,
StackTopDisplayStyleShiftUp = 23,
StackTopShiftUp = 22,
StretchStackBottomShiftDown = 29,
StretchStackGapAboveMin = 30,
StretchStackGapBelowMin = 31,
StretchStackTopShiftUp = 28,
SubSuperscriptGapMin = 15,
SubscriptBaselineDropMin = 10,
SubscriptShiftDown = 8,
SubscriptTopMax = 9,
SuperscriptBaselineDropMax = 14,
SuperscriptBottomMaxWithSubscript = 16,
SuperscriptBottomMin = 13,
SuperscriptShiftUp = 11,
SuperscriptShiftUpCramped = 12,
UnderbarExtraDescender = 48,
UnderbarRuleThickness = 47,
UnderbarVerticalGap = 46,
UpperLimitBaselineRiseMin = 19,
UpperLimitGapMin = 18,
}
```
#### New Type: HarfBuzzSharp.OpenTypeMathGlyphPart
```csharp
public struct OpenTypeMathGlyphPart, System.IEquatable<OpenTypeMathGlyphPart> {
// properties
public int EndConnectorLength { get; set; }
public OpenTypeMathGlyphPartFlags Flags { get; set; }
public int FullAdvance { get; set; }
public uint Glyph { get; set; }
public int StartConnectorLength { get; set; }
// methods
public virtual bool Equals (OpenTypeMathGlyphPart obj);
public override bool Equals (object obj);
public override int GetHashCode ();
public static bool op_Equality (OpenTypeMathGlyphPart left, OpenTypeMathGlyphPart right);
public static bool op_Inequality (OpenTypeMathGlyphPart left, OpenTypeMathGlyphPart right);
}
```
#### New Type: HarfBuzzSharp.OpenTypeMathGlyphPartFlags
```csharp
[Serializable]
public enum OpenTypeMathGlyphPartFlags {
Extender = 1,
}
```
#### New Type: HarfBuzzSharp.OpenTypeMathGlyphVariant
```csharp
public struct OpenTypeMathGlyphVariant, System.IEquatable<OpenTypeMathGlyphVariant> {
// properties
public int Advance { get; set; }
public uint Glyph { get; set; }
// methods
public virtual bool Equals (OpenTypeMathGlyphVariant obj);
public override bool Equals (object obj);
public override int GetHashCode ();
public static bool op_Equality (OpenTypeMathGlyphVariant left, OpenTypeMathGlyphVariant right);
public static bool op_Inequality (OpenTypeMathGlyphVariant left, OpenTypeMathGlyphVariant right);
}
```
#### New Type: HarfBuzzSharp.OpenTypeMathKern
```csharp
[Serializable]
public enum OpenTypeMathKern {
BottomLeft = 3,
BottomRight = 2,
TopLeft = 1,
TopRight = 0,
}
```
#### New Type: HarfBuzzSharp.OpenTypeMetaTag
```csharp
[Serializable]
public enum OpenTypeMetaTag {
DesignLanguages = 1684827751,
SupportedLanguages = 1936485991,
}
```
#### New Type: HarfBuzzSharp.OpenTypeNameEntry
```csharp
public struct OpenTypeNameEntry, System.IEquatable<OpenTypeNameEntry> {
// properties
public IntPtr Language { get; set; }
public OpenTypeNameId NameId { get; set; }
public int Var { get; set; }
// methods
public virtual bool Equals (OpenTypeNameEntry obj);
public override bool Equals (object obj);
public override int GetHashCode ();
public static bool op_Equality (OpenTypeNameEntry left, OpenTypeNameEntry right);
public static bool op_Inequality (OpenTypeNameEntry left, OpenTypeNameEntry right);
}
```
#### New Type: HarfBuzzSharp.OpenTypeNameId
```csharp
[Serializable]
public enum OpenTypeNameId {
CidFindFontName = 20,
Copyright = 0,
DarkBackground = 24,
Description = 10,
Designer = 9,
DesignerUrl = 12,
FontFamily = 1,
FontSubfamily = 2,
FullName = 4,
Invalid = 65535,
License = 13,
LicenseUrl = 14,
LightBackground = 23,
MacFullName = 18,
Manufacturer = 8,
PostscriptName = 6,
SampleText = 19,
Trademark = 7,
TypographicFamily = 16,
TypographicSubfamily = 17,
UniqueId = 3,
VariationsPostscriptPrefix = 25,
VendorUrl = 11,
VersionString = 5,
WwsFamily = 21,
WwsSubfamily = 22,
}
```
#### New Type: HarfBuzzSharp.OpenTypeVarAxis
```csharp
public struct OpenTypeVarAxis, System.IEquatable<OpenTypeVarAxis> {
// properties
public float DefaultValue { get; set; }
public float MaxValue { get; set; }
public float MinValue { get; set; }
public OpenTypeNameId NameId { get; set; }
public uint Tag { get; set; }
// methods
public virtual bool Equals (OpenTypeVarAxis obj);
public override bool Equals (object obj);
public override int GetHashCode ();
public static bool op_Equality (OpenTypeVarAxis left, OpenTypeVarAxis right);
public static bool op_Inequality (OpenTypeVarAxis left, OpenTypeVarAxis right);
}
```
#### New Type: HarfBuzzSharp.OpenTypeVarAxisFlags
```csharp
[Serializable]
public enum OpenTypeVarAxisFlags {
Hidden = 1,
}
```
#### New Type: HarfBuzzSharp.OpenTypeVarAxisInfo
```csharp
public struct OpenTypeVarAxisInfo, System.IEquatable<OpenTypeVarAxisInfo> {
// properties
public uint AxisIndex { get; set; }
public float DefaultValue { get; set; }
public OpenTypeVarAxisFlags Flags { get; set; }
public float MaxValue { get; set; }
public float MinValue { get; set; }
public OpenTypeNameId NameId { get; set; }
public uint Tag { get; set; }
// methods
public virtual bool Equals (OpenTypeVarAxisInfo obj);
public override bool Equals (object obj);
public override int GetHashCode ();
public static bool op_Equality (OpenTypeVarAxisInfo left, OpenTypeVarAxisInfo right);
public static bool op_Inequality (OpenTypeVarAxisInfo left, OpenTypeVarAxisInfo right);
}
```
#### New Type: HarfBuzzSharp.Variation
```csharp
public struct Variation, System.IEquatable<Variation> {
// properties
public uint Tag { get; set; }
public float Value { get; set; }
// methods
public virtual bool Equals (Variation obj);
public override bool Equals (object obj);
public override int GetHashCode ();
public static bool op_Equality (Variation left, Variation right);
public static bool op_Inequality (Variation left, Variation right);
}
```

Просмотреть файл

@ -0,0 +1,5 @@
# API diff: SkiaSharp.HarfBuzz.dll
## SkiaSharp.HarfBuzz.dll
> No changes.

Просмотреть файл

@ -0,0 +1,22 @@
# API diff: SkiaSharp.Views.Desktop.Common.dll
## SkiaSharp.Views.Desktop.Common.dll
### Namespace SkiaSharp.Views.Desktop
#### Type Changed: SkiaSharp.Views.Desktop.Extensions
Added methods:
```csharp
public static System.Drawing.Bitmap ToBitmap (this SkiaSharp.SKBitmap skiaBitmap);
public static System.Drawing.Bitmap ToBitmap (this SkiaSharp.SKImage skiaImage);
public static System.Drawing.Bitmap ToBitmap (this SkiaSharp.SKPixmap pixmap);
public static System.Drawing.Bitmap ToBitmap (this SkiaSharp.SKPicture picture, SkiaSharp.SKSizeI dimensions);
public static SkiaSharp.SKBitmap ToSKBitmap (this System.Drawing.Bitmap bitmap);
public static SkiaSharp.SKImage ToSKImage (this System.Drawing.Bitmap bitmap);
public static void ToSKPixmap (this System.Drawing.Bitmap bitmap, SkiaSharp.SKPixmap pixmap);
```

Просмотреть файл

@ -0,0 +1,5 @@
# API diff: SkiaSharp.Views.Forms.dll
## SkiaSharp.Views.Forms.dll
> No changes.

Просмотреть файл

@ -0,0 +1,5 @@
# API diff: SkiaSharp.Views.Forms.dll
## SkiaSharp.Views.Forms.dll
> No changes.

Просмотреть файл

@ -0,0 +1,5 @@
# API diff: SkiaSharp.Views.Forms.dll
## SkiaSharp.Views.Forms.dll
> No changes.

Просмотреть файл

@ -0,0 +1,5 @@
# API diff: SkiaSharp.Views.Gtk.dll
## SkiaSharp.Views.Gtk.dll
> No changes.

Просмотреть файл

@ -0,0 +1,5 @@
# API diff: SkiaSharp.Views.Gtk3.dll
## SkiaSharp.Views.Gtk3.dll
> No changes.

Просмотреть файл

@ -0,0 +1,24 @@
# API diff: SkiaSharp.Views.UWP.dll
## SkiaSharp.Views.UWP.dll
### Namespace SkiaSharp.Views.UWP
#### Type Changed: SkiaSharp.Views.UWP.GlobalStaticResources
Obsoleted methods:
```diff
[Obsolete ("This method is provided for binary backward compatibility. It will always return null.")]
public static object FindResource (string name);
```
Added methods:
```csharp
public static void RegisterDefaultStyles ();
public static void RegisterResourceDictionariesBySource ();
```

Просмотреть файл

@ -0,0 +1,5 @@
# API diff: SkiaSharp.Views.WPF.dll
## SkiaSharp.Views.WPF.dll
> No changes.

Просмотреть файл

@ -0,0 +1,103 @@
# API diff: SkiaSharp.Views.Windows.dll
## SkiaSharp.Views.Windows.dll
> Assembly Version Changed: 2.80.0.0 vs 0.0.0.0
### New Namespace SkiaSharp.Views.Windows
#### New Type: SkiaSharp.Views.Windows.Extensions
```csharp
public static class Extensions {
// methods
public static System.Drawing.PointF ToDrawingPoint (this SkiaSharp.SKPoint point);
public static System.Drawing.Point ToDrawingPoint (this SkiaSharp.SKPointI point);
public static System.Drawing.RectangleF ToDrawingRect (this SkiaSharp.SKRect rect);
public static System.Drawing.Rectangle ToDrawingRect (this SkiaSharp.SKRectI rect);
public static System.Drawing.SizeF ToDrawingSize (this SkiaSharp.SKSize size);
public static System.Drawing.Size ToDrawingSize (this SkiaSharp.SKSizeI size);
public static SkiaSharp.SKPointI ToSKPoint (this System.Drawing.Point point);
public static SkiaSharp.SKPoint ToSKPoint (this System.Drawing.PointF point);
public static SkiaSharp.SKRectI ToSKRect (this System.Drawing.Rectangle rect);
public static SkiaSharp.SKRect ToSKRect (this System.Drawing.RectangleF rect);
public static SkiaSharp.SKSizeI ToSKSize (this System.Drawing.Size size);
public static SkiaSharp.SKSize ToSKSize (this System.Drawing.SizeF size);
}
```
#### New Type: SkiaSharp.Views.Windows.SKPaintGLSurfaceEventArgs
```csharp
public class SKPaintGLSurfaceEventArgs : System.EventArgs {
// constructors
public SKPaintGLSurfaceEventArgs (SkiaSharp.SKSurface surface, SkiaSharp.GRBackendRenderTarget renderTarget);
[Obsolete ("Use SKPaintGLSurfaceEventArgs(SKSurface, GRBackendRenderTarget, SKColorType, GRSurfaceOrigin) instead.")]
public SKPaintGLSurfaceEventArgs (SkiaSharp.SKSurface surface, SkiaSharp.GRBackendRenderTargetDesc renderTarget);
public SKPaintGLSurfaceEventArgs (SkiaSharp.SKSurface surface, SkiaSharp.GRBackendRenderTarget renderTarget, SkiaSharp.GRSurfaceOrigin origin, SkiaSharp.SKColorType colorType);
public SKPaintGLSurfaceEventArgs (SkiaSharp.SKSurface surface, SkiaSharp.GRBackendRenderTarget renderTarget, SkiaSharp.GRSurfaceOrigin origin, SkiaSharp.SKColorType colorType, SkiaSharp.GRGlFramebufferInfo glInfo);
// properties
public SkiaSharp.GRBackendRenderTarget BackendRenderTarget { get; }
public SkiaSharp.SKColorType ColorType { get; }
public SkiaSharp.GRSurfaceOrigin Origin { get; }
[Obsolete ("Use BackendRenderTarget instead.")]
public SkiaSharp.GRBackendRenderTargetDesc RenderTarget { get; }
public SkiaSharp.SKSurface Surface { get; }
}
```
#### New Type: SkiaSharp.Views.Windows.SKPaintSurfaceEventArgs
```csharp
public class SKPaintSurfaceEventArgs : System.EventArgs {
// constructors
public SKPaintSurfaceEventArgs (SkiaSharp.SKSurface surface, SkiaSharp.SKImageInfo info);
// properties
public SkiaSharp.SKImageInfo Info { get; }
public SkiaSharp.SKSurface Surface { get; }
}
```
#### New Type: SkiaSharp.Views.Windows.SKXamlCanvas
```csharp
public class SKXamlCanvas : Microsoft.UI.Xaml.Controls.Canvas, Microsoft.UI.Composition.IAnimationObject, Microsoft.UI.Composition.IVisualElement, Microsoft.UI.Composition.IVisualElement2, System.IEquatable<Microsoft.UI.Xaml.Controls.Canvas>, System.IEquatable<Microsoft.UI.Xaml.Controls.Panel>, System.IEquatable<Microsoft.UI.Xaml.DependencyObject>, System.IEquatable<Microsoft.UI.Xaml.FrameworkElement>, System.IEquatable<Microsoft.UI.Xaml.UIElement>, System.Runtime.InteropServices.ICustomQueryInterface, WinRT.IWinRTObject {
// constructors
public SKXamlCanvas ();
// properties
public SkiaSharp.SKSize CanvasSize { get; }
public double Dpi { get; }
public bool IgnorePixelScaling { get; set; }
// events
public event System.EventHandler<SKPaintSurfaceEventArgs> PaintSurface;
// methods
public void Invalidate ();
protected virtual void OnPaintSurface (SKPaintSurfaceEventArgs e);
}
```
#### New Type: SkiaSharp.Views.Windows.WindowsExtensions
```csharp
public static class WindowsExtensions {
// methods
public static Windows.UI.Color ToColor (this SkiaSharp.SKColor color);
public static Windows.Foundation.Point ToPoint (this SkiaSharp.SKPoint point);
public static Windows.Foundation.Rect ToRect (this SkiaSharp.SKRect rect);
public static SkiaSharp.SKBitmap ToSKBitmap (this Microsoft.UI.Xaml.Media.Imaging.WriteableBitmap bitmap);
public static SkiaSharp.SKColor ToSKColor (this Windows.UI.Color color);
public static SkiaSharp.SKImage ToSKImage (this Microsoft.UI.Xaml.Media.Imaging.WriteableBitmap bitmap);
public static bool ToSKPixmap (this Microsoft.UI.Xaml.Media.Imaging.WriteableBitmap bitmap, SkiaSharp.SKPixmap pixmap);
public static SkiaSharp.SKPoint ToSKPoint (this Windows.Foundation.Point point);
public static SkiaSharp.SKRect ToSKRect (this Windows.Foundation.Rect rect);
public static SkiaSharp.SKSize ToSKSize (this Windows.Foundation.Size size);
public static Windows.Foundation.Size ToSize (this SkiaSharp.SKSize size);
public static Microsoft.UI.Xaml.Media.Imaging.WriteableBitmap ToWriteableBitmap (this SkiaSharp.SKBitmap skiaBitmap);
public static Microsoft.UI.Xaml.Media.Imaging.WriteableBitmap ToWriteableBitmap (this SkiaSharp.SKImage skiaImage);
public static Microsoft.UI.Xaml.Media.Imaging.WriteableBitmap ToWriteableBitmap (this SkiaSharp.SKPixmap pixmap);
public static Microsoft.UI.Xaml.Media.Imaging.WriteableBitmap ToWriteableBitmap (this SkiaSharp.SKPicture picture, SkiaSharp.SKSizeI dimensions);
}
```

Просмотреть файл

@ -0,0 +1,5 @@
# API diff: SkiaSharp.Views.WindowsForms.dll
## SkiaSharp.Views.WindowsForms.dll
> No changes.

Просмотреть файл

@ -0,0 +1,16 @@
# API diff: SkiaSharp.Views.Android.dll
## SkiaSharp.Views.Android.dll
### Namespace SkiaSharp.Views.Android
#### Type Changed: SkiaSharp.Views.Android.SKCanvasView
Added method:
```csharp
protected override void OnAttachedToWindow ();
```

Просмотреть файл

@ -0,0 +1,5 @@
# API diff: SkiaSharp.Views.Desktop.dll
## SkiaSharp.Views.Desktop.dll
> No changes.

Просмотреть файл

@ -0,0 +1,42 @@
# API diff: SkiaSharp.Views.Mac.dll
## SkiaSharp.Views.Mac.dll
### Namespace SkiaSharp.Views.Mac
#### New Type: SkiaSharp.Views.Mac.SKMetalView
```csharp
public class SKMetalView : MetalKit.MTKView, AppKit.INSAccessibility, AppKit.INSAccessibilityElementProtocol, AppKit.INSAppearanceCustomization, AppKit.INSDraggingDestination, AppKit.INSTouchBarProvider, AppKit.INSUserInterfaceItemIdentification, CoreAnimation.ICALayerDelegate, Foundation.INSCoding, Foundation.INSObjectProtocol, MetalKit.IMTKViewDelegate, ObjCRuntime.INativeObject, System.ComponentModel.IComponent, System.IDisposable, System.IEquatable<Foundation.NSObject> {
// constructors
public SKMetalView ();
public SKMetalView (CoreGraphics.CGRect frame);
public SKMetalView (IntPtr p);
public SKMetalView (CoreGraphics.CGRect frame, Metal.IMTLDevice device);
// properties
public SkiaSharp.SKSize CanvasSize { get; }
public SkiaSharp.GRContext GRContext { get; }
// events
public event System.EventHandler<SKPaintMetalSurfaceEventArgs> PaintSurface;
// methods
public override void AwakeFromNib ();
protected virtual void OnPaintSurface (SKPaintMetalSurfaceEventArgs e);
}
```
#### New Type: SkiaSharp.Views.Mac.SKPaintMetalSurfaceEventArgs
```csharp
public class SKPaintMetalSurfaceEventArgs : System.EventArgs {
// constructors
public SKPaintMetalSurfaceEventArgs (SkiaSharp.SKSurface surface, SkiaSharp.GRBackendRenderTarget renderTarget);
public SKPaintMetalSurfaceEventArgs (SkiaSharp.SKSurface surface, SkiaSharp.GRBackendRenderTarget renderTarget, SkiaSharp.GRSurfaceOrigin origin, SkiaSharp.SKColorType colorType);
// properties
public SkiaSharp.GRBackendRenderTarget BackendRenderTarget { get; }
public SkiaSharp.SKColorType ColorType { get; }
public SkiaSharp.GRSurfaceOrigin Origin { get; }
public SkiaSharp.SKSurface Surface { get; }
}
```

Просмотреть файл

@ -0,0 +1,5 @@
# API diff: SkiaSharp.Views.Tizen.dll
## SkiaSharp.Views.Tizen.dll
> No changes.

Просмотреть файл

@ -0,0 +1,5 @@
# API diff: SkiaSharp.Views.UWP.dll
## SkiaSharp.Views.UWP.dll
> No changes.

Просмотреть файл

@ -0,0 +1,42 @@
# API diff: SkiaSharp.Views.iOS.dll
## SkiaSharp.Views.iOS.dll
### Namespace SkiaSharp.Views.iOS
#### New Type: SkiaSharp.Views.iOS.SKMetalView
```csharp
public class SKMetalView : MetalKit.MTKView, CoreAnimation.ICALayerDelegate, Foundation.INSCoding, Foundation.INSObjectProtocol, MetalKit.IMTKViewDelegate, ObjCRuntime.INativeObject, System.Collections.IEnumerable, System.ComponentModel.IComponent, System.IDisposable, System.IEquatable<Foundation.NSObject>, UIKit.IUIAccessibilityIdentification, UIKit.IUIAppearance, UIKit.IUIAppearanceContainer, UIKit.IUICoordinateSpace, UIKit.IUIDynamicItem, UIKit.IUIFocusEnvironment, UIKit.IUIFocusItem, UIKit.IUIFocusItemContainer, UIKit.IUILargeContentViewerItem, UIKit.IUIPasteConfigurationSupporting, UIKit.IUITraitEnvironment, UIKit.IUIUserActivityRestoring {
// constructors
public SKMetalView ();
public SKMetalView (CoreGraphics.CGRect frame);
public SKMetalView (IntPtr p);
public SKMetalView (CoreGraphics.CGRect frame, Metal.IMTLDevice device);
// properties
public SkiaSharp.SKSize CanvasSize { get; }
public SkiaSharp.GRContext GRContext { get; }
// events
public event System.EventHandler<SKPaintMetalSurfaceEventArgs> PaintSurface;
// methods
public override void AwakeFromNib ();
protected virtual void OnPaintSurface (SKPaintMetalSurfaceEventArgs e);
}
```
#### New Type: SkiaSharp.Views.iOS.SKPaintMetalSurfaceEventArgs
```csharp
public class SKPaintMetalSurfaceEventArgs : System.EventArgs {
// constructors
public SKPaintMetalSurfaceEventArgs (SkiaSharp.SKSurface surface, SkiaSharp.GRBackendRenderTarget renderTarget);
public SKPaintMetalSurfaceEventArgs (SkiaSharp.SKSurface surface, SkiaSharp.GRBackendRenderTarget renderTarget, SkiaSharp.GRSurfaceOrigin origin, SkiaSharp.SKColorType colorType);
// properties
public SkiaSharp.GRBackendRenderTarget BackendRenderTarget { get; }
public SkiaSharp.SKColorType ColorType { get; }
public SkiaSharp.GRSurfaceOrigin Origin { get; }
public SkiaSharp.SKSurface Surface { get; }
}
```

Просмотреть файл

@ -0,0 +1,5 @@
# API diff: SkiaSharp.Views.tvOS.dll
## SkiaSharp.Views.tvOS.dll
> No changes.

Просмотреть файл

@ -0,0 +1,5 @@
# API diff: SkiaSharp.Views.watchOS.dll
## SkiaSharp.Views.watchOS.dll
> No changes.

Просмотреть файл

@ -0,0 +1,5 @@
# API diff: SkiaSharp.Vulkan.SharpVk.dll
## SkiaSharp.Vulkan.SharpVk.dll
> No changes.

Просмотреть файл

@ -0,0 +1,100 @@
# API diff: SkiaSharp.dll
## SkiaSharp.dll
### Namespace SkiaSharp
#### Type Changed: SkiaSharp.GRContext
Added property:
```csharp
public bool IsAbandoned { get; }
```
Added methods:
```csharp
public static GRContext CreateGl (GRContextOptions options);
public static GRContext CreateGl (GRGlInterface backendContext, GRContextOptions options);
public static GRContext CreateVulkan (GRVkBackendContext backendContext, GRContextOptions options);
```
#### Type Changed: SkiaSharp.GRGlInterface
Added method:
```csharp
public static GRGlInterface CreateAngle ();
```
#### Type Changed: SkiaSharp.SKData
Added property:
```csharp
public System.Span<byte> Span { get; }
```
Added methods:
```csharp
public static SKData Create (long size);
public static SKData CreateCopy (IntPtr bytes, int length);
public static SKData CreateCopy (IntPtr bytes, long length);
```
#### Type Changed: SkiaSharp.SKImage
Added property:
```csharp
public SKImageInfo Info { get; }
```
#### Type Changed: SkiaSharp.SKPicture
Added methods:
```csharp
public static SKPicture Deserialize (SKData data);
public static SKPicture Deserialize (SKStream stream);
public static SKPicture Deserialize (System.IO.Stream stream);
public static SKPicture Deserialize (System.ReadOnlySpan<byte> data);
public static SKPicture Deserialize (IntPtr data, int length);
public SKData Serialize ();
public void Serialize (SKWStream stream);
public void Serialize (System.IO.Stream stream);
```
#### Type Changed: SkiaSharp.SKSurface
Added method:
```csharp
public void Flush ();
```
#### New Type: SkiaSharp.GRContextOptions
```csharp
public class GRContextOptions {
// constructors
public GRContextOptions ();
// properties
public bool AllowPathMaskCaching { get; set; }
public bool AvoidStencilBuffers { get; set; }
public int BufferMapThreshold { get; set; }
public bool DoManualMipmapping { get; set; }
public int GlyphCacheTextureMaximumBytes { get; set; }
public int RuntimeProgramCacheSize { get; set; }
}
```

Просмотреть файл

@ -29,12 +29,15 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release
<dependencies>
<group targetFramework="net462">
<dependency id="SkiaSharp" version="1.0.0" />
<dependency id="System.Drawing.Common" version="4.5.1" />
</group>
<group targetFramework="netcoreapp3.0">
<group targetFramework="netcoreapp3.1">
<dependency id="SkiaSharp" version="1.0.0" />
<dependency id="System.Drawing.Common" version="4.5.1" />
</group>
<group targetFramework="netstandard2.0">
<dependency id="SkiaSharp" version="1.0.0" />
<dependency id="System.Drawing.Common" version="4.5.1" />
</group>
</dependencies>
@ -44,8 +47,8 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release
<!-- SkiaSharp.Views.*.dll -->
<file src="lib/net462/SkiaSharp.Views.Desktop.Common.dll" />
<file src="lib/net462/SkiaSharp.Views.Desktop.Common.xml" />
<file src="lib/netcoreapp3.0/SkiaSharp.Views.Desktop.Common.dll" />
<file src="lib/netcoreapp3.0/SkiaSharp.Views.Desktop.Common.xml" />
<file src="lib/netcoreapp3.1/SkiaSharp.Views.Desktop.Common.dll" />
<file src="lib/netcoreapp3.1/SkiaSharp.Views.Desktop.Common.xml" />
<file src="lib/netstandard2.0/SkiaSharp.Views.Desktop.Common.dll" />
<file src="lib/netstandard2.0/SkiaSharp.Views.Desktop.Common.xml" />

Просмотреть файл

@ -31,7 +31,7 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release
<dependency id="SkiaSharp" version="1.0.0" />
<dependency id="SkiaSharp.Views.Desktop.Common" version="1.0.0" />
</group>
<group targetFramework="netcoreapp3.0">
<group targetFramework="netcoreapp3.1">
<dependency id="SkiaSharp" version="1.0.0" />
<dependency id="SkiaSharp.Views.Desktop.Common" version="1.0.0" />
</group>
@ -41,8 +41,8 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release
<files>
<!-- SkiaSharp.Views.*.dll -->
<file platform="windows" src="lib/netcoreapp3.0/SkiaSharp.Views.WPF.dll" />
<file platform="windows" src="lib/netcoreapp3.0/SkiaSharp.Views.WPF.xml" />
<file platform="windows" src="lib/netcoreapp3.1/SkiaSharp.Views.WPF.dll" />
<file platform="windows" src="lib/netcoreapp3.1/SkiaSharp.Views.WPF.xml" />
<file platform="windows" src="lib/net462/SkiaSharp.Views.WPF.dll" />
<file platform="windows" src="lib/net462/SkiaSharp.Views.WPF.xml" />

Просмотреть файл

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<package>
<metadata>
<!-- package -->
<id>SkiaSharp.Views.WinUI</id>
<title>SkiaSharp Views &amp; Layers for Windows (WinUI)</title>
<version>1.0.0</version>
<description>
SkiaSharp Views &amp; Layers are a set of platform-specific views and containers that can be used to draw on the screen.
</description>
<summary>
SkiaSharp Views &amp; Layers are a set of platform-specific views and containers that can be used to draw on the screen.
</summary>
<releaseNotes>
Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release notes.
</releaseNotes>
<projectUrl>https://go.microsoft.com/fwlink/?linkid=868515</projectUrl>
<iconUrl>https://go.microsoft.com/fwlink/?linkid=2130524</iconUrl>
<tags>ui xamarin graphics ios android linux windows uwp tvos watchos macos tizen cross-platform skiasharp</tags>
<!-- legal -->
<licenseUrl>https://go.microsoft.com/fwlink/?linkid=868514</licenseUrl>
<authors>Microsoft</authors>
<owners>Microsoft</owners>
<requireLicenseAcceptance>true</requireLicenseAcceptance>
<copyright>© Microsoft Corporation. All rights reserved.</copyright>
<dependencies>
<group targetFramework="net5.0-windows10.0.18362">
<dependency id="SkiaSharp" version="1.0.0" />
<dependency id="Microsoft.ProjectReunion" version="0.5.0" />
</group>
</dependencies>
</metadata>
<files>
<!-- SkiaSharp.Views.*.dll -->
<file platform="windows" src="lib/net5.0-windows10.0.18362/SkiaSharp.Views.Windows.dll" />
<file platform="windows" src="lib/net5.0-windows10.0.18362/SkiaSharp.Views.Windows.xml" />
<!-- legal -->
<file src="LICENSE.txt" />
</files>
</package>

Просмотреть файл

@ -33,7 +33,7 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release
<dependency id="OpenTK" version="3.1.0" />
<dependency id="OpenTK.GLControl" version="3.1.0" />
</group>
<group targetFramework="netcoreapp3.0">
<group targetFramework="netcoreapp3.1">
<dependency id="SkiaSharp" version="1.0.0" />
<dependency id="SkiaSharp.Views.Desktop.Common" version="1.0.0" />
<dependency id="OpenTK" version="3.1.0" />
@ -47,8 +47,8 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release
<!-- SkiaSharp.Views.*.dll -->
<file platform="windows" src="lib/net462/SkiaSharp.Views.WindowsForms.dll" />
<file platform="windows" src="lib/net462/SkiaSharp.Views.WindowsForms.xml" />
<file platform="windows" src="lib/netcoreapp3.0/SkiaSharp.Views.WindowsForms.dll" />
<file platform="windows" src="lib/netcoreapp3.0/SkiaSharp.Views.WindowsForms.xml" />
<file platform="windows" src="lib/netcoreapp3.1/SkiaSharp.Views.WindowsForms.dll" />
<file platform="windows" src="lib/netcoreapp3.1/SkiaSharp.Views.WindowsForms.xml" />
<!-- legal -->
<file src="LICENSE.txt" />

Просмотреть файл

@ -46,7 +46,6 @@
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>

Просмотреть файл

@ -2,7 +2,7 @@
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
<TargetFramework>netcoreapp3.1</TargetFramework>
<LangVersion>8.0</LangVersion>
</PropertyGroup>

Просмотреть файл

@ -2,7 +2,7 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
<TargetFramework>netcoreapp3.1</TargetFramework>
<LangVersion>8.0</LangVersion>
</PropertyGroup>

Просмотреть файл

@ -2,7 +2,7 @@
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
<TargetFramework>netcoreapp3.1</TargetFramework>
<UseWPF>true</UseWPF>
<LangVersion>8.0</LangVersion>
<ApplicationIcon>icon.ico</ApplicationIcon>

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 1.4 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 7.5 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 2.9 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 1.6 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 1.2 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 1.4 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.1 KiB

Просмотреть файл

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap rescap">
<Identity
Name="479d1110-d6ad-48a8-ac62-4af987a884d0"
Publisher="CN=matthew"
Version="1.0.0.0" />
<Properties>
<DisplayName>SkiaSharpSample</DisplayName>
<PublisherDisplayName>matthew</PublisherDisplayName>
<Logo>Images\StoreLogo.png</Logo>
</Properties>
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.19041.0" />
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.19041.0" />
</Dependencies>
<Resources>
<Resource Language="x-generate"/>
</Resources>
<Applications>
<Application Id="App"
Executable="$targetnametoken$.exe"
EntryPoint="$targetentrypoint$">
<uap:VisualElements
DisplayName="SkiaSharpSample"
Description="SkiaSharpSample"
BackgroundColor="transparent"
Square150x150Logo="Images\Square150x150Logo.png"
Square44x44Logo="Images\Square44x44Logo.png">
<uap:DefaultTile Wide310x150Logo="Images\Wide310x150Logo.png" />
<uap:SplashScreen Image="Images\SplashScreen.png" />
</uap:VisualElements>
</Application>
</Applications>
<Capabilities>
<rescap:Capability Name="runFullTrust" />
</Capabilities>
</Package>

Просмотреть файл

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '15.0'">
<VisualStudioVersion>15.0</VisualStudioVersion>
</PropertyGroup>
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x86">
<Configuration>Debug</Configuration>
<Platform>x86</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x86">
<Configuration>Release</Configuration>
<Platform>x86</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|arm64">
<Configuration>Debug</Configuration>
<Platform>arm64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|arm64">
<Configuration>Release</Configuration>
<Platform>arm64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<WapProjPath Condition="'$(WapProjPath)'==''">$(MSBuildExtensionsPath)\Microsoft\DesktopBridge\</WapProjPath>
<PathToXAMLWinRTImplementations>SkiaSharpSample\</PathToXAMLWinRTImplementations>
</PropertyGroup>
<Import Project="$(WapProjPath)\Microsoft.DesktopBridge.props" />
<PropertyGroup>
<ProjectGuid>bf0aea36-d579-49ee-a589-705d3d81feb1</ProjectGuid>
<TargetPlatformVersion>10.0.19041.0</TargetPlatformVersion>
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
<DefaultLanguage>en-US</DefaultLanguage>
<AppxPackageSigningEnabled>false</AppxPackageSigningEnabled>
<EntryPointProjectUniqueName>..\SkiaSharpSample\SkiaSharpSample.csproj</EntryPointProjectUniqueName>
<AssetTargetFallback>net5.0-windows$(TargetPlatformVersion);$(AssetTargetFallback)</AssetTargetFallback>
</PropertyGroup>
<ItemGroup>
<AppxManifest Include="Package.appxmanifest">
<SubType>Designer</SubType>
</AppxManifest>
</ItemGroup>
<ItemGroup>
<Content Include="Images\SplashScreen.scale-200.png" />
<Content Include="Images\LockScreenLogo.scale-200.png" />
<Content Include="Images\Square150x150Logo.scale-200.png" />
<Content Include="Images\Square44x44Logo.scale-200.png" />
<Content Include="Images\Square44x44Logo.targetsize-24_altform-unplated.png" />
<Content Include="Images\StoreLogo.png" />
<Content Include="Images\Wide310x150Logo.scale-200.png" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\SkiaSharpSample\SkiaSharpSample.csproj">
<SkipGetTargetFrameworkProperties>True</SkipGetTargetFrameworkProperties>
<PublishProfile>Properties\PublishProfiles\win10-$(Platform).pubxml</PublishProfile>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.ProjectReunion" Version="[0.5.0]">
<IncludeAssets>build</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.ProjectReunion.WinUI" Version="[0.5.0]">
<IncludeAssets>build</IncludeAssets>
</PackageReference>
</ItemGroup>
<Import Project="$(WapProjPath)\Microsoft.DesktopBridge.targets" />
</Project>

Просмотреть файл

@ -0,0 +1,107 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.31025.218
MinimumVisualStudioVersion = 10.0.40219.1
Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "SkiaSharpSample.Package", "SkiaSharpSample.Package\SkiaSharpSample.Package.wapproj", "{8287A10F-D119-4EBF-9CD7-1D697A476D6F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharpSample", "SkiaSharpSample\SkiaSharpSample.csproj", "{71668276-ECDD-49EC-9406-27A9D2676139}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp", "..\..\..\..\binding\SkiaSharp\SkiaSharp.csproj", "{EA2AC287-6FEF-415D-BD33-01287DD11574}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Views.WinUI", "..\..\..\..\source\SkiaSharp.Views.WinUI\SkiaSharp.Views.WinUI\SkiaSharp.Views.WinUI.csproj", "{B9E319D8-0A0E-471C-BD01-8015655FBD99}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|arm64 = Debug|arm64
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|arm64 = Release|arm64
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{8287A10F-D119-4EBF-9CD7-1D697A476D6F}.Debug|Any CPU.ActiveCfg = Debug|x86
{8287A10F-D119-4EBF-9CD7-1D697A476D6F}.Debug|arm64.ActiveCfg = Debug|arm64
{8287A10F-D119-4EBF-9CD7-1D697A476D6F}.Debug|arm64.Build.0 = Debug|arm64
{8287A10F-D119-4EBF-9CD7-1D697A476D6F}.Debug|arm64.Deploy.0 = Debug|arm64
{8287A10F-D119-4EBF-9CD7-1D697A476D6F}.Debug|x64.ActiveCfg = Debug|x64
{8287A10F-D119-4EBF-9CD7-1D697A476D6F}.Debug|x64.Build.0 = Debug|x64
{8287A10F-D119-4EBF-9CD7-1D697A476D6F}.Debug|x64.Deploy.0 = Debug|x64
{8287A10F-D119-4EBF-9CD7-1D697A476D6F}.Debug|x86.ActiveCfg = Debug|x86
{8287A10F-D119-4EBF-9CD7-1D697A476D6F}.Debug|x86.Build.0 = Debug|x86
{8287A10F-D119-4EBF-9CD7-1D697A476D6F}.Debug|x86.Deploy.0 = Debug|x86
{8287A10F-D119-4EBF-9CD7-1D697A476D6F}.Release|Any CPU.ActiveCfg = Release|x86
{8287A10F-D119-4EBF-9CD7-1D697A476D6F}.Release|arm64.ActiveCfg = Release|arm64
{8287A10F-D119-4EBF-9CD7-1D697A476D6F}.Release|arm64.Build.0 = Release|arm64
{8287A10F-D119-4EBF-9CD7-1D697A476D6F}.Release|arm64.Deploy.0 = Release|arm64
{8287A10F-D119-4EBF-9CD7-1D697A476D6F}.Release|x64.ActiveCfg = Release|x64
{8287A10F-D119-4EBF-9CD7-1D697A476D6F}.Release|x64.Build.0 = Release|x64
{8287A10F-D119-4EBF-9CD7-1D697A476D6F}.Release|x64.Deploy.0 = Release|x64
{8287A10F-D119-4EBF-9CD7-1D697A476D6F}.Release|x86.ActiveCfg = Release|x86
{8287A10F-D119-4EBF-9CD7-1D697A476D6F}.Release|x86.Build.0 = Release|x86
{8287A10F-D119-4EBF-9CD7-1D697A476D6F}.Release|x86.Deploy.0 = Release|x86
{71668276-ECDD-49EC-9406-27A9D2676139}.Debug|Any CPU.ActiveCfg = Debug|x86
{71668276-ECDD-49EC-9406-27A9D2676139}.Debug|arm64.ActiveCfg = Debug|arm64
{71668276-ECDD-49EC-9406-27A9D2676139}.Debug|arm64.Build.0 = Debug|arm64
{71668276-ECDD-49EC-9406-27A9D2676139}.Debug|x64.ActiveCfg = Debug|x64
{71668276-ECDD-49EC-9406-27A9D2676139}.Debug|x64.Build.0 = Debug|x64
{71668276-ECDD-49EC-9406-27A9D2676139}.Debug|x86.ActiveCfg = Debug|x86
{71668276-ECDD-49EC-9406-27A9D2676139}.Debug|x86.Build.0 = Debug|x86
{71668276-ECDD-49EC-9406-27A9D2676139}.Release|Any CPU.ActiveCfg = Release|x86
{71668276-ECDD-49EC-9406-27A9D2676139}.Release|arm64.ActiveCfg = Release|arm64
{71668276-ECDD-49EC-9406-27A9D2676139}.Release|arm64.Build.0 = Release|arm64
{71668276-ECDD-49EC-9406-27A9D2676139}.Release|x64.ActiveCfg = Release|x64
{71668276-ECDD-49EC-9406-27A9D2676139}.Release|x64.Build.0 = Release|x64
{71668276-ECDD-49EC-9406-27A9D2676139}.Release|x86.ActiveCfg = Release|x86
{71668276-ECDD-49EC-9406-27A9D2676139}.Release|x86.Build.0 = Release|x86
{EA2AC287-6FEF-415D-BD33-01287DD11574}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EA2AC287-6FEF-415D-BD33-01287DD11574}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EA2AC287-6FEF-415D-BD33-01287DD11574}.Debug|arm64.ActiveCfg = Debug|Any CPU
{EA2AC287-6FEF-415D-BD33-01287DD11574}.Debug|arm64.Build.0 = Debug|Any CPU
{EA2AC287-6FEF-415D-BD33-01287DD11574}.Debug|x64.ActiveCfg = Debug|Any CPU
{EA2AC287-6FEF-415D-BD33-01287DD11574}.Debug|x64.Build.0 = Debug|Any CPU
{EA2AC287-6FEF-415D-BD33-01287DD11574}.Debug|x86.ActiveCfg = Debug|Any CPU
{EA2AC287-6FEF-415D-BD33-01287DD11574}.Debug|x86.Build.0 = Debug|Any CPU
{EA2AC287-6FEF-415D-BD33-01287DD11574}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EA2AC287-6FEF-415D-BD33-01287DD11574}.Release|Any CPU.Build.0 = Release|Any CPU
{EA2AC287-6FEF-415D-BD33-01287DD11574}.Release|arm64.ActiveCfg = Release|Any CPU
{EA2AC287-6FEF-415D-BD33-01287DD11574}.Release|arm64.Build.0 = Release|Any CPU
{EA2AC287-6FEF-415D-BD33-01287DD11574}.Release|x64.ActiveCfg = Release|Any CPU
{EA2AC287-6FEF-415D-BD33-01287DD11574}.Release|x64.Build.0 = Release|Any CPU
{EA2AC287-6FEF-415D-BD33-01287DD11574}.Release|x86.ActiveCfg = Release|Any CPU
{EA2AC287-6FEF-415D-BD33-01287DD11574}.Release|x86.Build.0 = Release|Any CPU
{B9E319D8-0A0E-471C-BD01-8015655FBD99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B9E319D8-0A0E-471C-BD01-8015655FBD99}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B9E319D8-0A0E-471C-BD01-8015655FBD99}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{B9E319D8-0A0E-471C-BD01-8015655FBD99}.Debug|arm64.ActiveCfg = Debug|Any CPU
{B9E319D8-0A0E-471C-BD01-8015655FBD99}.Debug|arm64.Build.0 = Debug|Any CPU
{B9E319D8-0A0E-471C-BD01-8015655FBD99}.Debug|arm64.Deploy.0 = Debug|Any CPU
{B9E319D8-0A0E-471C-BD01-8015655FBD99}.Debug|x64.ActiveCfg = Debug|Any CPU
{B9E319D8-0A0E-471C-BD01-8015655FBD99}.Debug|x64.Build.0 = Debug|Any CPU
{B9E319D8-0A0E-471C-BD01-8015655FBD99}.Debug|x64.Deploy.0 = Debug|Any CPU
{B9E319D8-0A0E-471C-BD01-8015655FBD99}.Debug|x86.ActiveCfg = Debug|Any CPU
{B9E319D8-0A0E-471C-BD01-8015655FBD99}.Debug|x86.Build.0 = Debug|Any CPU
{B9E319D8-0A0E-471C-BD01-8015655FBD99}.Debug|x86.Deploy.0 = Debug|Any CPU
{B9E319D8-0A0E-471C-BD01-8015655FBD99}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B9E319D8-0A0E-471C-BD01-8015655FBD99}.Release|Any CPU.Build.0 = Release|Any CPU
{B9E319D8-0A0E-471C-BD01-8015655FBD99}.Release|Any CPU.Deploy.0 = Release|Any CPU
{B9E319D8-0A0E-471C-BD01-8015655FBD99}.Release|arm64.ActiveCfg = Release|Any CPU
{B9E319D8-0A0E-471C-BD01-8015655FBD99}.Release|arm64.Build.0 = Release|Any CPU
{B9E319D8-0A0E-471C-BD01-8015655FBD99}.Release|arm64.Deploy.0 = Release|Any CPU
{B9E319D8-0A0E-471C-BD01-8015655FBD99}.Release|x64.ActiveCfg = Release|Any CPU
{B9E319D8-0A0E-471C-BD01-8015655FBD99}.Release|x64.Build.0 = Release|Any CPU
{B9E319D8-0A0E-471C-BD01-8015655FBD99}.Release|x64.Deploy.0 = Release|Any CPU
{B9E319D8-0A0E-471C-BD01-8015655FBD99}.Release|x86.ActiveCfg = Release|Any CPU
{B9E319D8-0A0E-471C-BD01-8015655FBD99}.Release|x86.Build.0 = Release|Any CPU
{B9E319D8-0A0E-471C-BD01-8015655FBD99}.Release|x86.Deploy.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {F5AABA3E-0272-4E88-A2B4-BD422E83400E}
EndGlobalSection
EndGlobal

Просмотреть файл

@ -0,0 +1,15 @@
<Application
x:Class="SkiaSharpSample.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:SkiaSharpSample">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
<!-- Other merged dictionaries here -->
</ResourceDictionary.MergedDictionaries>
<!-- Other app resources here -->
</ResourceDictionary>
</Application.Resources>
</Application>

Просмотреть файл

@ -0,0 +1,20 @@
using Microsoft.UI.Xaml;
namespace SkiaSharpSample
{
public partial class App : Application
{
private Window window;
public App()
{
InitializeComponent();
}
protected override void OnLaunched(LaunchActivatedEventArgs args)
{
window = new MainWindow();
window.Activate();
}
}
}

Просмотреть файл

@ -0,0 +1,13 @@
<Window
x:Class="SkiaSharpSample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:SkiaSharpSample"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:skia="using:SkiaSharp.Views.Windows"
mc:Ignorable="d">
<skia:SKXamlCanvas PaintSurface="OnPaintSurface" />
</Window>

Просмотреть файл

@ -0,0 +1,42 @@
using Microsoft.UI.Xaml;
using SkiaSharp;
using SkiaSharp.Views.Windows;
namespace SkiaSharpSample
{
public sealed partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void OnPaintSurface(object sender, SKPaintSurfaceEventArgs e)
{
// the the canvas and properties
var canvas = e.Surface.Canvas;
// get the screen density for scaling
var scale = (float)((SKXamlCanvas)sender).XamlRoot.RasterizationScale;
var scaledSize = new SKSize(e.Info.Width / scale, e.Info.Height / scale);
// handle the device screen density
canvas.Scale(scale);
// make sure the canvas is blank
canvas.Clear(SKColors.White);
// draw some text
var paint = new SKPaint
{
Color = SKColors.Black,
IsAntialias = true,
Style = SKPaintStyle.Fill,
TextAlign = SKTextAlign.Center,
TextSize = 24
};
var coord = new SKPoint(scaledSize.Width / 2, (scaledSize.Height + paint.TextSize) / 2);
canvas.DrawText("SkiaSharp", coord, paint);
}
}
}

Просмотреть файл

@ -0,0 +1,29 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net5.0-windows10.0.19041.0</TargetFramework>
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
<RootNamespace>SkiaSharpSample</RootNamespace>
<ApplicationManifest>app.manifest</ApplicationManifest>
<Platforms>x86;x64;arm64</Platforms>
<RuntimeIdentifiers>win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.ProjectReunion" Version="0.5.0" />
<PackageReference Include="Microsoft.ProjectReunion.Foundation" Version="0.5.0" />
<PackageReference Include="Microsoft.ProjectReunion.WinUI" Version="0.5.0" />
<Manifest Include="$(ApplicationManifest)" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\..\binding\SkiaSharp\SkiaSharp.csproj" />
<ProjectReference Include="..\..\..\..\..\source\SkiaSharp.Views.WinUI\SkiaSharp.Views.WinUI\SkiaSharp.Views.WinUI.csproj" />
</ItemGroup>
<ItemGroup>
<Content Include="..\..\..\..\..\output\native\windows\$(Platform)\libSkiaSharp.dll" Condition="Exists('..\..\..\..\..\output\native\windows\$(Platform)\libSkiaSharp.dll')" />
</ItemGroup>
</Project>

Просмотреть файл

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="1.0.0.0" name="SkiaSharpSample.app"/>
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<!-- The combination of below two tags have the following effect:
1) Per-Monitor for >= Windows 10 Anniversary Update
2) System < Windows 10 Anniversary Update
-->
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/PM</dpiAware>
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2, PerMonitor</dpiAwareness>
</windowsSettings>
</application>
</assembly>

Просмотреть файл

@ -0,0 +1,8 @@
<Project>
<!-- workaround for conflict between WinUI and net6 https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1307712 -->
<PropertyGroup Condition="$(MSBuildProjectFile.EndsWith('.wapproj'))">
<SkipImportNetSdk>true</SkipImportNetSdk>
</PropertyGroup>
</Project>

Просмотреть файл

@ -0,0 +1,12 @@
<Project>
<!-- workaround for https://github.com/microsoft/ProjectReunion/pull/707 -->
<Target Name="Net6WinUIWorkaround"
BeforeTargets="_GetSdkToolsPathsFromSdk"
Condition="$(TargetFramework.Contains('-windows')) == true ">
<PropertyGroup>
<TargetPlatformIdentifierAdjusted>UAP</TargetPlatformIdentifierAdjusted>
</PropertyGroup>
</Target>
</Project>

Просмотреть файл

@ -2,7 +2,6 @@
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<DefineConstants>$(DefineConstants);NET_STANDARD</DefineConstants>
<LangVersion>8.0</LangVersion>
</PropertyGroup>

Просмотреть файл

@ -20,10 +20,11 @@ variables:
BUILD_NUMBER: $[counter(format('{0}_{1}_{2}', variables['SKIASHARP_VERSION'], variables['Build.SourceBranch'], variables['PREVIEW_LABEL']), 1)]
TIZEN_LINUX_PACKAGES: libxcb-xfixes0 libxcb-render-util0 libwebkitgtk-1.0-0 libxcb-image0 acl libsdl1.2debian libv4l-0 libxcb-randr0 libxcb-shape0 libxcb-icccm4 libsm6 gettext rpm2cpio cpio bridge-utils openvpn
MANAGED_LINUX_PACKAGES: ttf-ancient-fonts ninja-build
MONO_VERSION_MACOS: 'Latest'
MONO_VERSION_MACOS: '6_12_7'
MONO_VERSION_LINUX: ''
XCODE_VERSION: 12.4
DOTNET_VERSION: 3.1.405
DOTNET_VERSION_PREVIOUS: 3.1.408
DOTNET_VERSION: 5.0.202
CONFIGURATION: 'Release'
VM_IMAGE_WINDOWS: windows-2019
VM_IMAGE_WINDOWS_PREVIOUS: vs2017-win2016

Просмотреть файл

@ -99,6 +99,12 @@ jobs:
# install extra bits for the manged builds
- ${{ if not(startsWith(parameters.name, 'native_')) }}:
- task: UseDotNet@2
inputs:
packageType: 'sdk'
version: $(DOTNET_VERSION_PREVIOUS)
performMultiLevelLookup: true
displayName: Install the previous version of .NET Core
- task: UseDotNet@2
inputs:
packageType: 'sdk'
@ -189,7 +195,7 @@ jobs:
# publish artifacts
- task: PublishBuildArtifacts@1
displayName: Publish the ${{ parameters.name }} artifacts
condition: ${{ parameters.shouldPublish }}
condition: or(${{ parameters.shouldPublish }}, failed())
inputs:
artifactName: ${{ parameters.name }}
pathToPublish: 'output'

Просмотреть файл

@ -13,7 +13,6 @@
<SignAssembly>true</SignAssembly>
<SkiaSharpBuildPropsImported>true</SkiaSharpBuildPropsImported>
<MDocDocumentationDirectory>$(MSBuildThisFileDirectory)..\docs\SkiaSharpAPI</MDocDocumentationDirectory>
<GenerateAssemblyInfo>False</GenerateAssemblyInfo>
<LangVersion>8.0</LangVersion>
</PropertyGroup>
@ -31,10 +30,15 @@
<DependsOnNETStandard>true</DependsOnNETStandard>
</PropertyGroup>
<!-- workaround for conflict between WinUI and net6 https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1307712 -->
<PropertyGroup Condition="$(MSBuildProjectFile.EndsWith('.wapproj'))">
<SkipImportNetSdk>true</SkipImportNetSdk>
</PropertyGroup>
<PropertyGroup>
<IsWindows Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Windows)))' == 'true'">true</IsWindows>
<IsMacOS Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX)))' == 'true'">true</IsMacOS>
<IsLinux Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Linux)))' == 'true'">true</IsLinux>
<IsWindows>$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Windows)))</IsWindows>
<IsMacOS>$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX)))</IsMacOS>
<IsLinux>$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Linux)))</IsLinux>
</PropertyGroup>
<Target Name="PrintRID"
@ -47,7 +51,7 @@
Condition=" '$(IsLinux)' == 'true' " />
<Error Text="There appears to be a problem selecting the operating system. IsWindows='$(IsWindows)', IsMacOS='$(IsMacOS)', IsLinux='$(IsLinux)'"
Condition=" '$(IsWindows)$(IsMacOS)$(IsLinux)' != 'true' " />
Condition=" !$(IsWindows) and !$(IsMacOS) and !$(IsLinux) " />
</Target>
</Project>

Просмотреть файл

@ -14,7 +14,6 @@
<KeyFileName Condition=" '$(KeyFileName)' == '' ">mono.snk</KeyFileName>
<AssemblyOriginatorKeyFile>$(MSBuildThisFileDirectory)..\$(KeyFileName)</AssemblyOriginatorKeyFile>
<GenerateAssemblyVersionInfo Condition=" '$(GenerateAssemblyVersionInfo)' == '' ">true</GenerateAssemblyVersionInfo>
<AssemblyVersionGitSha Condition=" '$(AssemblyVersionGitSha)' == '' ">$(GIT_SHA)</AssemblyVersionGitSha>
<AssemblyVersionGitSha Condition=" '$(AssemblyVersionGitSha)' == '' ">$(GIT_COMMIT)</AssemblyVersionGitSha>
@ -25,6 +24,10 @@
<GenerateAssemblyInformationalVersionAttribute>false</GenerateAssemblyInformationalVersionAttribute>
<GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
<GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<!--
Ignore this message:
@ -33,25 +36,33 @@
assembly was compiled for project '<project name>'. Connect to a Mac Server and try again to build the full
application.
-->
<MSBuildWarningsAsMessages>VSX1000</MSBuildWarningsAsMessages>
<MSBuildWarningsAsMessages>$(MSBuildWarningsAsMessages);VSX1000</MSBuildWarningsAsMessages>
<!--
Ignore this message:
Warning MSB9004
ManifestResourceWithNoCulture item type is deprecated. Emit EmbeddedResource items instead, with metadata
WithCulture='false', Type='Resx', and optional LogicalName.
-->
<MSBuildWarningsAsMessages>MSB9004</MSBuildWarningsAsMessages>
<MSBuildWarningsAsMessages>$(MSBuildWarningsAsMessages);MSB9004</MSBuildWarningsAsMessages>
</PropertyGroup>
<PropertyGroup>
<PackagingPlatform Condition=" '$(PackagingPlatform)' == '' ">$(TargetFramework)</PackagingPlatform>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="mdoc" Version="5.7.4.10" PrivateAssets="All" />
<PackageReference Include="Xamarin.Build.TypeRedirector" Version="0.1.2-preview" PrivateAssets="All" />
<ItemGroup Condition=" '$(Configuration)' == 'Release' ">
<PackageReference Include="mdoc" Version="5.8.2" PrivateAssets="All" GeneratePathProperty="true" />
</ItemGroup>
<!-- workaround for https://github.com/microsoft/ProjectReunion/pull/707 -->
<Target Name="Net6WinUIWorkaround"
BeforeTargets="_GetSdkToolsPathsFromSdk"
Condition="$(TargetFramework.Contains('-windows')) == true ">
<PropertyGroup>
<TargetPlatformIdentifierAdjusted>UAP</TargetPlatformIdentifierAdjusted>
</PropertyGroup>
</Target>
<!--
===================================================================================================================
_GenerateAssemblyVersionInfo
@ -111,15 +122,14 @@ internal partial class VersionConstants {
Sign the assembly using sn.
===================================================================================================================
-->
<PropertyGroup Condition=" '$(SignAssembly)' == 'true' and '$(TargetPath)' != '' ">
<_SignAssemblyDependsOn Condition=" '$(TypeRedirectorSkip)' == 'false'">
_RedirectMovedTypes
</_SignAssemblyDependsOn>
<PropertyGroup Condition=" '$(SignAssembly)' == 'true' and '$(TargetPath)' != '' and Exists('$(TargetPath)') ">
<_SignAssemblyAfterTargets>
CoreCompile
</_SignAssemblyAfterTargets>
</PropertyGroup>
<Target Name="_SignAssembly" AfterTargets="$(_SignAssemblyAfterTargets)" DependsOnTargets="$(_SignAssemblyDependsOn)" Condition=" '$(SignAssembly)' == 'true' and '$(TargetPath)' != '' ">
<Target Name="_SignAssembly"
AfterTargets="$(_SignAssemblyAfterTargets)"
Condition=" '$(SignAssembly)' == 'true' and '$(TargetPath)' != '' and Exists('$(TargetPath)') ">
<Exec Command="&quot;$(_SnExePath)&quot; -q -R @(IntermediateAssembly -> '&quot;%(Identity)&quot;') &quot;$(AssemblyOriginatorKeyFile)&quot;" />
</Target>
@ -130,12 +140,14 @@ internal partial class VersionConstants {
Verify that the output assembly is signed correctly for release.
===================================================================================================================
-->
<PropertyGroup Condition=" '$(SignAssembly)' == 'true' and '$(Configuration)' == 'Release' and '$(TargetPath)' != '' ">
<PropertyGroup Condition=" '$(SignAssembly)' == 'true' and '$(Configuration)' == 'Release' and '$(TargetPath)' != '' and Exists('$(TargetPath)') ">
<_SignAssemblyVerifyAfterTargets>
Build
</_SignAssemblyVerifyAfterTargets>
</PropertyGroup>
<Target Name="_SignAssemblyVerify" AfterTargets="$(_SignAssemblyVerifyAfterTargets)" Condition=" '$(SignAssembly)' == 'true' and '$(Configuration)' == 'Release' and '$(TargetPath)' != '' ">
<Target Name="_SignAssemblyVerify"
AfterTargets="$(_SignAssemblyVerifyAfterTargets)"
Condition=" '$(SignAssembly)' == 'true' and '$(Configuration)' == 'Release' and '$(TargetPath)' != '' and Exists('$(TargetPath)') ">
<Exec Command="&quot;$(_SnExePath)&quot; -vf &quot;$(TargetPath)&quot;" />
</Target>
@ -195,17 +207,14 @@ internal partial class VersionConstants {
This runs during the build phase.
===================================================================================================================
-->
<PropertyGroup Condition=" '$(SkipMDocGenerateDocs)' != 'true' ">
<PropertyGroup Condition=" '$(SkipMDocGenerateDocs)' != 'true' and '$(Configuration)' == 'Release' ">
<MDocGenerateDocsAfterTargets>
CoreCompile
</MDocGenerateDocsAfterTargets>
</PropertyGroup>
<Target Name="_MDocGenerateDocsDep">
<PropertyGroup>
<MDocVersion Condition=" '%(Identity)' == 'mdoc' ">@(PackageReference -> '%(Version)')</MDocVersion>
<MDocPackagePath Condition=" '%(Name)' == 'mdoc' ">@(PackageDefinitions -> '%(ResolvedPath)')</MDocPackagePath>
<MDocPackagePath Condition=" '$(MDocPackagePath)' == '' ">$(NuGetPackageRoot)\mdoc\$(MDocVersion)</MDocPackagePath>
<MDocToolPath>$(MDocPackagePath)\tools\mdoc.exe</MDocToolPath>
<MDocToolPath>$(Pkgmdoc)\tools\mdoc.exe</MDocToolPath>
<MDocOutputName>$(TargetName).xml</MDocOutputName>
<MDocOutputPath>$(TargetDir)$(MDocOutputName)</MDocOutputPath>
<MDocIntermediateOutputPath>$(IntermediateOutputPath)mdoc\</MDocIntermediateOutputPath>
@ -215,7 +224,7 @@ internal partial class VersionConstants {
<_MDocInputs Include="$(MDocDocumentationDirectory)\**\*" />
</ItemGroup>
</Target>
<Target Name="MDocGenerateDocs" Condition=" '$(SkipMDocGenerateDocs)' != 'true' "
<Target Name="MDocGenerateDocs" Condition=" '$(SkipMDocGenerateDocs)' != 'true' and '$(Configuration)' == 'Release' "
AfterTargets="$(MDocGenerateDocsAfterTargets)" DependsOnTargets="_MDocGenerateDocsDep"
Inputs="@(_MDocInputs)" Outputs="$(MDocOutputPath)">
<MakeDir Directories="$(MDocIntermediateOutputPath)" />

Просмотреть файл

@ -5,12 +5,6 @@
<AssemblyName>SkiaSharp.HarfBuzz</AssemblyName>
<PackagingGroup>SkiaSharp.HarfBuzz</PackagingGroup>
</PropertyGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('netstandard'))">
<DefineConstants>$(DefineConstants);NET_STANDARD</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('net4'))">
<DefineConstants>$(DefineConstants);__DESKTOP__</DefineConstants>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\binding\SkiaSharp\SkiaSharp.csproj" />
<ProjectReference Include="..\..\..\binding\HarfBuzzSharp\HarfBuzzSharp.csproj" />

Просмотреть файл

@ -5,7 +5,6 @@
<RootNamespace>SkiaSharp.Views.Forms</RootNamespace>
<SignAssembly>false</SignAssembly>
<PackagingGroup>SkiaSharp.Views.Forms</PackagingGroup>
<DefineConstants>$(DefineConstants);NET_STANDARD</DefineConstants>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Xamarin.Forms" Version="4.5.0.725" />

Просмотреть файл

@ -0,0 +1,101 @@
using System;
using System.Runtime.InteropServices;
using Windows.Storage.Streams;
using WinRT;
using WinRT.Interop;
namespace SkiaSharp.Views.Windows
{
[WindowsRuntimeType("Windows.Foundation.UniversalApiContract")]
[Guid("905a0fef-bc53-11df-8c49-001e4fc686da")]
internal interface IBufferByteAccess
{
IntPtr Buffer { get; }
}
internal static class Utils
{
internal static IntPtr GetByteBuffer(this IBuffer buffer)
{
var byteBuffer = buffer.As<IBufferByteAccess>();
if (byteBuffer == null)
throw new InvalidCastException("Unable to convert WriteableBitmap.PixelBuffer to IBufferByteAccess.");
return byteBuffer.Buffer;
}
}
}
namespace ABI.SkiaSharp.Views.Windows
{
[DynamicInterfaceCastableImplementation]
[Guid("905a0fef-bc53-11df-8c49-001e4fc686da")]
internal interface IBufferByteAccess : global::SkiaSharp.Views.Windows.IBufferByteAccess
{
public struct VftblPtr
{
public IntPtr Vftbl;
}
[Guid("905a0fef-bc53-11df-8c49-001e4fc686da")]
public struct Vftbl
{
public delegate int GetBufferDelegate(IntPtr thisPtr, out IntPtr buffer);
internal IUnknownVftbl IUnknownVftbl;
public GetBufferDelegate getBuffer;
static unsafe Vftbl()
{
AbiToProjectionVftable = new Vftbl
{
IUnknownVftbl = IUnknownVftbl.AbiToProjectionVftbl,
getBuffer = DoAbiGetBuffer
};
var nativeVftbl = (IntPtr*)Marshal.AllocCoTaskMem(Marshal.SizeOf<IUnknownVftbl>() + sizeof(IntPtr) * 12);
Marshal.StructureToPtr(AbiToProjectionVftable.IUnknownVftbl, (IntPtr)nativeVftbl, false);
nativeVftbl[3] = Marshal.GetFunctionPointerForDelegate(AbiToProjectionVftable.getBuffer);
AbiToProjectionVftablePtr = (IntPtr)nativeVftbl;
}
public static readonly Vftbl AbiToProjectionVftable;
public static readonly IntPtr AbiToProjectionVftablePtr;
internal unsafe Vftbl(IntPtr ptr)
{
var vftblPtr = Marshal.PtrToStructure<VftblPtr>(ptr);
var vftbl = (IntPtr*)vftblPtr.Vftbl;
IUnknownVftbl = Marshal.PtrToStructure<IUnknownVftbl>(vftblPtr.Vftbl);
getBuffer = Marshal.GetDelegateForFunctionPointer<GetBufferDelegate>(vftbl[3]);
}
private static int DoAbiGetBuffer(IntPtr thisPtr, out IntPtr buffer)
{
buffer = default;
try
{
buffer = ComWrappersSupport.FindObject<global::SkiaSharp.Views.Windows.IBufferByteAccess>(thisPtr).Buffer;
}
catch (Exception ex)
{
return Marshal.GetHRForException(ex);
}
return 0;
}
}
IntPtr global::SkiaSharp.Views.Windows.IBufferByteAccess.Buffer
{
get
{
var obj = (ObjectReference<Vftbl>)((IWinRTObject)this).GetObjectReferenceForType(typeof(global::SkiaSharp.Views.Windows.IBufferByteAccess).TypeHandle);
var ThisPtr = obj.ThisPtr;
Marshal.ThrowExceptionForHR(obj.Vftbl.getBuffer(ThisPtr, out IntPtr buffer));
return buffer;
}
}
internal static ObjectReference<Vftbl> FromAbi(IntPtr thisPtr) =>
ObjectReference<Vftbl>.FromAbi(thisPtr);
}
}

Просмотреть файл

@ -0,0 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0-windows10.0.18362</TargetFramework>
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
<RootNamespace>SkiaSharp.Views.Windows</RootNamespace>
<AssemblyName>SkiaSharp.Views.Windows</AssemblyName>
<PackagingGroup>SkiaSharp.Views.WinUI</PackagingGroup>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.ProjectReunion" Version="0.5.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\binding\SkiaSharp\SkiaSharp.csproj" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\..\SkiaSharp.Views\SkiaSharp.Views.Shared\**\*.cs" Link="%(RecursiveDir)%(Filename)%(Extension)" />
<Compile Include="..\..\SkiaSharp.Views\SkiaSharp.Views.UWP\**\*.cs" Link="%(RecursiveDir)%(Filename)%(Extension)" Exclude="..\..\SkiaSharp.Views\SkiaSharp.Views.UWP\bin\**;..\..\SkiaSharp.Views\SkiaSharp.Views.UWP\obj\**" />
<Compile Remove="..\..\SkiaSharp.Views\SkiaSharp.Views.UWP\Interop\IBufferByteAccess.cs" />
</ItemGroup>
</Project>

Просмотреть файл

@ -187,9 +187,9 @@ namespace SkiaSharp.Views.Android
return bmp;
}
public static Bitmap ToBitmap(this SKPixmap skiaPixamp)
public static Bitmap ToBitmap(this SKPixmap skiaPixmap)
{
using (var image = SKImage.FromPixels(skiaPixamp))
using (var image = SKImage.FromPixels(skiaPixmap))
{
var bmp = image.ToBitmap();
return bmp;

Просмотреть файл

@ -1,4 +1,6 @@
using System;
#pragma warning disable CS0618
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading;
@ -31,7 +33,7 @@ namespace SkiaSharp.Views.Android
#endif
partial class GLTextureView : TextureView, TextureView.ISurfaceTextureListener, View.IOnLayoutChangeListener
{
private const bool EnableLogging = false;
internal static bool EnableLogging = false;
private WeakReference<GLTextureView> thisWeakRef;
private GLThread glThread;
@ -911,10 +913,10 @@ namespace SkiaSharp.Views.Android
{
eglHelper.Start();
}
catch (Exception t)
catch (Exception)
{
threadManager.ReleaseEglContextLocked(this);
throw t;
throw;
}
haveEglContext = true;
createEglContext = true;

Просмотреть файл

@ -1,14 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net462;netcoreapp3.0</TargetFrameworks>
<TargetFrameworks>netstandard2.0;net462;netcoreapp3.1</TargetFrameworks>
<RootNamespace>SkiaSharp.Views.Desktop</RootNamespace>
<AssemblyName>SkiaSharp.Views.Desktop.Common</AssemblyName>
<PackagingGroup>SkiaSharp.Views.Desktop.Common</PackagingGroup>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
<DefineConstants>$(DefineConstants);__DESKTOP__;NET_STANDARD</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)' != 'netstandard2.0'">
<DefineConstants>$(DefineConstants);__DESKTOP__</DefineConstants>
</PropertyGroup>
<ItemGroup>
@ -17,7 +12,7 @@
<ItemGroup>
<Compile Include="..\SkiaSharp.Views.Shared\**\*.cs" Link="%(RecursiveDir)%(Filename)%(Extension)" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.0'">
<ItemGroup>
<PackageReference Include="System.Drawing.Common" Version="4.5.1" />
</ItemGroup>
</Project>

Просмотреть файл

@ -1,4 +1,5 @@
using System;
#if WINDOWS_UWP || HAS_UNO
namespace SkiaSharp.Views.UWP
#elif __ANDROID__
@ -15,6 +16,8 @@ namespace SkiaSharp.Views.Desktop
namespace SkiaSharp.Views.Mac
#elif __TIZEN__
namespace SkiaSharp.Views.Tizen
#elif WINDOWS
namespace SkiaSharp.Views.Windows
#endif
{
public static class Extensions
@ -106,7 +109,7 @@ namespace SkiaSharp.Views.Tizen
return new System.Drawing.Size(size.Width, size.Height);
}
#if __DESKTOP__ && !NET_STANDARD
#if __DESKTOP__
// System.Drawing.Bitmap

Просмотреть файл

@ -13,7 +13,7 @@ namespace SkiaSharp.Views.GlesInterop
private const string libGLESv2 = "opengl32.dll";
#elif __ANDROID__
private const string libGLESv2 = "libGLESv2.so";
#elif WINDOWS_UWP
#elif WINDOWS_UWP || WINDOWS
private const string libGLESv2 = "libGLESv2.dll";
#elif __TIZEN__
private const string libGLESv2 = "libGLESv2.so";

Просмотреть файл

@ -16,6 +16,8 @@ namespace SkiaSharp.Views.Desktop
namespace SkiaSharp.Views.Mac
#elif __TIZEN__
namespace SkiaSharp.Views.Tizen
#elif WINDOWS
namespace SkiaSharp.Views.Windows
#endif
{
public class SKPaintGLSurfaceEventArgs : EventArgs

Просмотреть файл

@ -16,6 +16,8 @@ namespace SkiaSharp.Views.Desktop
namespace SkiaSharp.Views.Mac
#elif __TIZEN__
namespace SkiaSharp.Views.Tizen
#elif WINDOWS
namespace SkiaSharp.Views.Windows
#endif
{
public class SKPaintSurfaceEventArgs : EventArgs

Просмотреть файл

@ -1,4 +1,6 @@
using System;
#if !WINDOWS
using System;
using SkiaSharp.Views.GlesInterop;
using Windows.ApplicationModel;
using Windows.Foundation;
@ -8,7 +10,11 @@ using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Data;
#if WINDOWS
namespace SkiaSharp.Views.Windows
#else
namespace SkiaSharp.Views.UWP
#endif
{
public class AngleSwapChainPanel : SwapChainPanel
{
@ -293,3 +299,5 @@ namespace SkiaSharp.Views.UWP
}
}
}
#endif

Просмотреть файл

@ -1,10 +1,19 @@
using System;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml.Controls;
using System.Collections.Generic;
using SkiaSharp.Views.UWP.Interop;
#if WINDOWS
using Microsoft.UI.Xaml.Controls;
#else
using Windows.UI.Xaml.Controls;
#endif
#if WINDOWS
using SkiaSharp.Views.Windows;
#else
using SkiaSharp.Views.UWP;
#endif
using EGLDisplay = System.IntPtr;
using EGLContext = System.IntPtr;

Просмотреть файл

@ -1,7 +1,8 @@
using System;
using System.Runtime.InteropServices;
using Windows.Storage.Streams;
namespace SkiaSharp.Views.UWP.Interop
namespace SkiaSharp.Views.UWP
{
[ComImport]
[Guid("905a0fef-bc53-11df-8c49-001e4fc686da")]
@ -10,4 +11,20 @@ namespace SkiaSharp.Views.UWP.Interop
{
long Buffer([Out] out IntPtr value);
}
internal static class Utils
{
internal static IntPtr GetByteBuffer(this IBuffer buffer)
{
var byteBuffer = buffer as IBufferByteAccess;
if (byteBuffer == null)
throw new InvalidCastException("Unable to convert WriteableBitmap.PixelBuffer to IBufferByteAccess.");
var hr = byteBuffer.Buffer(out var ptr);
if (hr < 0)
throw new InvalidCastException("Unable to retrieve pixel address from WriteableBitmap.PixelBuffer.");
return ptr;
}
}
}

Просмотреть файл

@ -2,7 +2,11 @@
using Windows.Foundation;
using Windows.Foundation.Collections;
namespace SkiaSharp.Views.UWP.Interop
#if WINDOWS
namespace SkiaSharp.Views.Windows
#else
namespace SkiaSharp.Views.UWP
#endif
{
internal static class PropertySetExtensions
{

Просмотреть файл

@ -1,8 +1,14 @@
using System;
#if !WINDOWS
using System;
using SkiaSharp.Views.GlesInterop;
using Windows.Foundation;
#if WINDOWS
namespace SkiaSharp.Views.Windows
#else
namespace SkiaSharp.Views.UWP
#endif
{
public class SKSwapChainPanel : AngleSwapChainPanel
{
@ -119,3 +125,5 @@ namespace SkiaSharp.Views.UWP
}
}
}
#endif

Просмотреть файл

@ -1,14 +1,28 @@
using System;
using Windows.ApplicationModel;
using Windows.Graphics.Display;
#if WINDOWS
using Microsoft.System;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Data;
using Microsoft.UI.Xaml.Media;
using Microsoft.UI.Xaml.Media.Imaging;
#else
using Windows.UI.Core;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Media.Imaging;
#endif
#if WINDOWS
namespace SkiaSharp.Views.Windows
#else
namespace SkiaSharp.Views.UWP
#endif
{
public partial class SKXamlCanvas : Canvas
{
@ -34,8 +48,10 @@ namespace SkiaSharp.Views.UWP
if (designMode)
return;
#if !WINDOWS
var display = DisplayInformation.GetForCurrentView();
OnDpiChanged(display);
#endif
Loaded += OnLoaded;
Unloaded += OnUnloaded;
@ -79,11 +95,20 @@ namespace SkiaSharp.Views.UWP
}
}
#if WINDOWS
private void OnXamlRootChanged(XamlRoot xamlRoot = null, XamlRootChangedEventArgs e = null)
{
var root = xamlRoot ?? XamlRoot;
Dpi = root.RasterizationScale;
Invalidate();
}
#else
private void OnDpiChanged(DisplayInformation sender, object args = null)
{
Dpi = sender.LogicalDpi / 96.0f;
Invalidate();
}
#endif
private void OnSizeChanged(object sender, SizeChangedEventArgs e)
{
@ -96,10 +121,15 @@ namespace SkiaSharp.Views.UWP
if (loadUnloadCounter != 1)
return;
#if WINDOWS
XamlRoot.Changed += OnXamlRootChanged;
OnXamlRootChanged();
#else
var display = DisplayInformation.GetForCurrentView();
display.DpiChanged += OnDpiChanged;
OnDpiChanged(display);
#endif
}
private void OnUnloaded(object sender, RoutedEventArgs e)
@ -108,15 +138,23 @@ namespace SkiaSharp.Views.UWP
if (loadUnloadCounter != 0)
return;
#if WINDOWS
XamlRoot.Changed -= OnXamlRootChanged;
#else
var display = DisplayInformation.GetForCurrentView();
display.DpiChanged -= OnDpiChanged;
#endif
FreeBitmap();
}
public void Invalidate()
{
#if WINDOWS
DispatcherQueue.TryEnqueue(DispatcherQueuePriority.Normal, DoInvalidate);
#else
Dispatcher.RunAsync(CoreDispatcherPriority.Normal, DoInvalidate);
#endif
}
private void DoInvalidate()

Просмотреть файл

@ -1,15 +1,24 @@
using System;
using Windows.Foundation;
using Windows.UI;
using Windows.UI.Xaml.Media.Imaging;
#if !HAS_UNO
using SkiaSharp.Views.UWP.Interop;
#if WINDOWS
using Microsoft.UI.Xaml.Media.Imaging;
#else
using Windows.UI.Xaml.Media.Imaging;
#endif
#if WINDOWS
namespace SkiaSharp.Views.Windows
#else
namespace SkiaSharp.Views.UWP
#endif
{
#if WINDOWS
public static class WindowsExtensions
#else
public static class UWPExtensions
#endif
{
// Point
@ -164,19 +173,8 @@ namespace SkiaSharp.Views.UWP
}
}
internal static IntPtr GetPixels(this WriteableBitmap bitmap)
{
var buffer = bitmap.PixelBuffer as IBufferByteAccess;
if (buffer == null)
throw new InvalidCastException("Unable to convert WriteableBitmap.PixelBuffer to IBufferByteAccess.");
IntPtr ptr;
var hr = buffer.Buffer(out ptr);
if (hr < 0)
throw new InvalidCastException("Unable to retrieve pixel address from WriteableBitmap.PixelBuffer.");
return ptr;
}
internal static IntPtr GetPixels(this WriteableBitmap bitmap) =>
bitmap.PixelBuffer.GetByteBuffer();
#endif
}
}

Просмотреть файл

@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<TargetFrameworks>net462;netcoreapp3.0</TargetFrameworks>
<TargetFrameworks>net462;netcoreapp3.1</TargetFrameworks>
<UseWpf>true</UseWpf>
<RootNamespace>SkiaSharp.Views.WPF</RootNamespace>
<AssemblyName>SkiaSharp.Views.WPF</AssemblyName>

Просмотреть файл

@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<TargetFrameworks>net462;netcoreapp3.0</TargetFrameworks>
<TargetFrameworks>net462;netcoreapp3.1</TargetFrameworks>
<UseWindowsForms>true</UseWindowsForms>
<RootNamespace>SkiaSharp.Views.Desktop</RootNamespace>
<AssemblyName>SkiaSharp.Views.WindowsForms</AssemblyName>

Просмотреть файл

@ -5,7 +5,6 @@
<AssemblyName>SkiaSharp.Vulkan.SharpVk</AssemblyName>
<SignAssembly>false</SignAssembly>
<PackagingGroup>SkiaSharp.Vulkan.SharpVk</PackagingGroup>
<DefineConstants>$(DefineConstants);NET_STANDARD</DefineConstants>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="SharpVk" Version="0.4.2" />

Просмотреть файл

@ -69,6 +69,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Views.Uno.Wasm",
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Views.Uno.Reference", "SkiaSharp.Views.Uno\SkiaSharp.Views.Uno.Reference\SkiaSharp.Views.Uno.Reference.csproj", "{D5C7D157-609E-4D64-8E42-C1DB0FAA86EB}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Views.WinUI", "SkiaSharp.Views.WinUI\SkiaSharp.Views.WinUI\SkiaSharp.Views.WinUI.csproj", "{F50AE765-D9B9-4025-88A8-E8B080D5D624}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SkiaSharp.Views.WinUI", "SkiaSharp.Views.WinUI", "{32AE56A0-F3E1-4721-9BED-B1F609DEA8E8}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -179,6 +183,10 @@ Global
{D5C7D157-609E-4D64-8E42-C1DB0FAA86EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D5C7D157-609E-4D64-8E42-C1DB0FAA86EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D5C7D157-609E-4D64-8E42-C1DB0FAA86EB}.Release|Any CPU.Build.0 = Release|Any CPU
{F50AE765-D9B9-4025-88A8-E8B080D5D624}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F50AE765-D9B9-4025-88A8-E8B080D5D624}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F50AE765-D9B9-4025-88A8-E8B080D5D624}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F50AE765-D9B9-4025-88A8-E8B080D5D624}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -210,6 +218,7 @@ Global
{D35B20BC-838A-4C1E-B427-4269F6387CAB} = {E53351EA-FE40-47D2-B388-4A75DA6CCD71}
{F675A841-ECDB-4571-8AA3-7D4642FD57DB} = {E53351EA-FE40-47D2-B388-4A75DA6CCD71}
{D5C7D157-609E-4D64-8E42-C1DB0FAA86EB} = {E53351EA-FE40-47D2-B388-4A75DA6CCD71}
{F50AE765-D9B9-4025-88A8-E8B080D5D624} = {32AE56A0-F3E1-4721-9BED-B1F609DEA8E8}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {63A8C36E-4917-46DB-9AAD-522B8EC00C23}

Просмотреть файл

@ -105,6 +105,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Views.Uno.Wasm",
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Views.Uno.Reference", "SkiaSharp.Views.Uno\SkiaSharp.Views.Uno.Reference\SkiaSharp.Views.Uno.Reference.csproj", "{D5C7D157-609E-4D64-8E42-C1DB0FAA86EB}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SkiaSharp.Views.WinUI", "SkiaSharp.Views.WinUI", "{6430EC5F-EDA1-4202-AB7B-22ED0496E016}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Views.WinUI", "SkiaSharp.Views.WinUI\SkiaSharp.Views.WinUI\SkiaSharp.Views.WinUI.csproj", "{02CA4107-1FC6-4676-B284-9981694A450E}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -287,6 +291,10 @@ Global
{D5C7D157-609E-4D64-8E42-C1DB0FAA86EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D5C7D157-609E-4D64-8E42-C1DB0FAA86EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D5C7D157-609E-4D64-8E42-C1DB0FAA86EB}.Release|Any CPU.Build.0 = Release|Any CPU
{02CA4107-1FC6-4676-B284-9981694A450E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{02CA4107-1FC6-4676-B284-9981694A450E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{02CA4107-1FC6-4676-B284-9981694A450E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{02CA4107-1FC6-4676-B284-9981694A450E}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -336,6 +344,7 @@ Global
{E0FF9BFF-2253-4486-A8E2-94312D09D056} = {E53351EA-FE40-47D2-B388-4A75DA6CCD71}
{047C460D-7470-418C-AF2C-30620A1AF61C} = {E53351EA-FE40-47D2-B388-4A75DA6CCD71}
{D5C7D157-609E-4D64-8E42-C1DB0FAA86EB} = {E53351EA-FE40-47D2-B388-4A75DA6CCD71}
{02CA4107-1FC6-4676-B284-9981694A450E} = {6430EC5F-EDA1-4202-AB7B-22ED0496E016}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {67EACD19-0CEA-4127-9842-549AA6FB84C9}

Просмотреть файл

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
<DefineConstants>$(DefineConstants);NET_STANDARD;USE_LIBRARY_LOADER</DefineConstants>
<TargetFramework>netcoreapp3.1</TargetFramework>
<DefineConstants>$(DefineConstants);USE_LIBRARY_LOADER</DefineConstants>
<RootNamespace>SkiaSharp.Tests</RootNamespace>
<AssemblyName>SkiaSharp.Tests</AssemblyName>
<SkipGenerateAssemblyVersionInfo>true</SkipGenerateAssemblyVersionInfo>
@ -13,7 +13,7 @@
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" />
<PackageReference Include="XunitXml.TestLogger" Version="2.1.26" />
<PackageReference Include="xunit.skippablefact" Version="1.3.12" />
<PackageReference Include="coverlet.msbuild" Version="2.9.0" />
<PackageReference Include="coverlet.msbuild" Version="3.0.3" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\binding\HarfBuzzSharp\HarfBuzzSharp.csproj" />

Просмотреть файл

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
<DefineConstants>$(DefineConstants);NET_STANDARD</DefineConstants>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace>SkiaSharp.Vulkan.Tests</RootNamespace>
<AssemblyName>SkiaSharp.Vulkan.Tests</AssemblyName>
<SignAssembly>false</SignAssembly>
@ -16,7 +15,7 @@
<PackageReference Include="xunit.skippablefact" Version="1.3.12" />
<PackageReference Include="SharpVk" Version="0.4.2" />
<PackageReference Include="SharpVk.Glfw" Version="0.4.1" />
<PackageReference Include="coverlet.msbuild" Version="2.9.0" />
<PackageReference Include="coverlet.msbuild" Version="3.0.3" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\binding\HarfBuzzSharp\HarfBuzzSharp.csproj" />

Просмотреть файл

@ -36,7 +36,7 @@ namespace SkiaSharp.Tests
PathToImages = Path.Combine(PathToAssembly, "images");
// some platforms run the tests from a temporary location, so copy the native files
#if !NET_STANDARD && !__ANDROID__ && !__IOS__
#if !NETCOREAPP && !__ANDROID__ && !__IOS__
var skiaRoot = Path.GetDirectoryName(typeof(SkiaSharp.SKImageInfo).Assembly.Location);
var harfRoot = Path.GetDirectoryName(typeof(HarfBuzzSharp.Buffer).Assembly.Location);

Просмотреть файл

@ -2,7 +2,7 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
<TargetFramework>netcoreapp3.1</TargetFramework>
<Nullable>enable</Nullable>
</PropertyGroup>

Просмотреть файл

@ -2,7 +2,7 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
<TargetFramework>netcoreapp3.1</TargetFramework>
<LangVersion>8.0</LangVersion>
<AssemblyName>wasm-test</AssemblyName>
</PropertyGroup>