diff --git a/build.cake b/build.cake index 9e2a2f4c..ddb3fa54 100644 --- a/build.cake +++ b/build.cake @@ -86,7 +86,7 @@ Task ("libs") .Does (() => { // create all the directories - EnsureDirectoryExists ("./output/windows/"); + EnsureDirectoryExists ("./output/wpf/"); EnsureDirectoryExists ("./output/uwp/"); EnsureDirectoryExists ("./output/android/"); EnsureDirectoryExists ("./output/ios/"); @@ -99,6 +99,7 @@ Task ("libs") EnsureDirectoryExists ("./output/linux/"); EnsureDirectoryExists ("./output/interactive/"); EnsureDirectoryExists ("./output/desktop/"); + EnsureDirectoryExists ("./output/gtk/"); // .NET Standard / .NET Core RunNuGetRestore ("source/SkiaSharpSource.NetStandard.sln"); @@ -125,10 +126,8 @@ Task ("libs") CopyFileToDirectory ("./binding/HarfBuzzSharp.UWP/bin/Release/HarfBuzzSharp.pri", "./output/uwp/"); // SkiaSharp.Views CopyFileToDirectory ("./source/SkiaSharp.Views/SkiaSharp.Views.UWP/bin/Release/SkiaSharp.Views.UWP.dll", "./output/uwp/"); - CopyFileToDirectory ("./source/SkiaSharp.Views/SkiaSharp.Views.Desktop/bin/Release/SkiaSharp.Views.Desktop.dll", "./output/windows/"); - CopyFileToDirectory ("./source/SkiaSharp.Views/SkiaSharp.Views.WPF/bin/Release/SkiaSharp.Views.WPF.dll", "./output/windows/"); + CopyFileToDirectory ("./source/SkiaSharp.Views/SkiaSharp.Views.WPF/bin/Release/SkiaSharp.Views.WPF.dll", "./output/wpf/"); // SkiaSharp.Views.Forms - CopyFileToDirectory ("./source/SkiaSharp.Views.Forms/SkiaSharp.Views.Forms/bin/Release/SkiaSharp.Views.Forms.dll", "./output/portable/"); CopyFileToDirectory ("./source/SkiaSharp.Views.Forms/SkiaSharp.Views.Forms.UWP/bin/Release/SkiaSharp.Views.Forms.dll", "./output/uwp/"); } else if (IsRunningOnMac ()) { // fix for old MSBuild @@ -152,20 +151,26 @@ Task ("libs") CopyFileToDirectory ("./source/SkiaSharp.Views/SkiaSharp.Views.Mac/bin/Release/SkiaSharp.Views.Mac.dll", "./output/osx/"); CopyFileToDirectory ("./source/SkiaSharp.Views/SkiaSharp.Views.tvOS/bin/Release/SkiaSharp.Views.tvOS.dll", "./output/tvos/"); CopyFileToDirectory ("./source/SkiaSharp.Views/SkiaSharp.Views.watchOS/bin/Release/SkiaSharp.Views.watchOS.dll", "./output/watchos/"); + CopyFileToDirectory ("./source/SkiaSharp.Views/SkiaSharp.Views.Gtk/bin/Release/SkiaSharp.Views.Gtk.dll", "./output/gtk/"); // SkiaSharp.Views.Forms - CopyFileToDirectory ("./source/SkiaSharp.Views.Forms/SkiaSharp.Views.Forms/bin/Release/SkiaSharp.Views.Forms.dll", "./output/portable/"); CopyFileToDirectory ("./source/SkiaSharp.Views.Forms/SkiaSharp.Views.Forms.Android/bin/Release/SkiaSharp.Views.Forms.dll", "./output/android/"); CopyFileToDirectory ("./source/SkiaSharp.Views.Forms/SkiaSharp.Views.Forms.iOS/bin/Release/SkiaSharp.Views.Forms.dll", "./output/ios/"); CopyFileToDirectory ("./source/SkiaSharp.Views.Forms/SkiaSharp.Views.Forms.Mac/bin/Release/SkiaSharp.Views.Forms.dll", "./output/osx/"); } else if (IsRunningOnLinux ()) { RunNuGetRestore ("./source/SkiaSharpSource.Linux.sln"); RunMSBuild ("./source/SkiaSharpSource.Linux.sln"); + // SkiaSharp.Views + CopyFileToDirectory ("./source/SkiaSharp.Views/SkiaSharp.Views.Gtk/bin/Release/SkiaSharp.Views.Gtk.dll", "./output/gtk/"); } // SkiaSharp CopyFileToDirectory ("./binding/SkiaSharp.Desktop/bin/Release/SkiaSharp.dll", "./output/desktop/"); CopyFileToDirectory ("./binding/SkiaSharp.Desktop/bin/Release/nuget/build/net45/SkiaSharp.dll.config", "./output/desktop/"); CopyFileToDirectory ("./binding/SkiaSharp.Desktop/bin/Release/nuget/build/net45/SkiaSharp.Desktop.targets", "./output/desktop/"); CopyFileToDirectory ("./binding/SkiaSharp.Portable/bin/Release/SkiaSharp.dll", "./output/portable/"); + // SkiaSharp.Views + CopyFileToDirectory ("./source/SkiaSharp.Views/SkiaSharp.Views.Desktop/bin/Release/SkiaSharp.Views.Desktop.dll", "./output/desktop/"); + // SkiaSharp.Views.Forms + CopyFileToDirectory ("./source/SkiaSharp.Views.Forms/SkiaSharp.Views.Forms/bin/Release/SkiaSharp.Views.Forms.dll", "./output/portable/"); // HarfBuzzSharp CopyFileToDirectory ("./binding/HarfBuzzSharp.Desktop/bin/Release/HarfBuzzSharp.dll", "./output/desktop/"); CopyFileToDirectory ("./binding/HarfBuzzSharp.Desktop/bin/Release/nuget/build/net45/HarfBuzzSharp.dll.config", "./output/desktop/"); @@ -259,18 +264,41 @@ Task ("samples") .Does (() => { ClearSkiaSharpNuGetCache (); - CleanDirectories ("./samples/*/*/packages/SkiaSharp.*"); + CleanDirectories ("./samples/*/*/*/packages/SkiaSharp.*"); // zip the samples for the GitHub release notes if (IS_ON_CI) { Zip ("./samples", "./output/samples.zip"); } - if (IsRunningOnLinux ()) { + // BASIC samples + RunNuGetRestore ("./samples/Basic/NetCore/SkiaSharpSample.sln"); + RunMSBuild ("./samples/Basic/NetCore/SkiaSharpSample.sln"); + // GALLERY samples + + if (IsRunningOnLinux ()) { + // BASIC samples + RunNuGetRestore ("./samples/Basic/Gtk/SkiaSharpSample.sln"); + RunMSBuild ("./samples/Basic/Gtk/SkiaSharpSample.sln"); + + // GALLERY samples } if (IsRunningOnMac ()) { + // BASIC samples + RunNuGetRestore ("./samples/Basic/Android/SkiaSharpSample.sln"); + RunMSBuild ("./samples/Basic/Android/SkiaSharpSample.sln"); + RunNuGetRestore ("./samples/Basic/iOS/SkiaSharpSample.sln"); + RunMSBuildWithPlatform ("./samples/Basic/iOS/SkiaSharpSample.sln", "iPhone"); + RunNuGetRestore ("./samples/Basic/macOS/SkiaSharpSample.sln"); + RunMSBuild ("./samples/Basic/macOS/SkiaSharpSample.sln"); + RunNuGetRestore ("./samples/Basic/tvOS/SkiaSharpSample.sln"); + RunMSBuildWithPlatform ("./samples/Basic/tvOS/SkiaSharpSample.sln", "iPhoneSimulator"); + RunNuGetRestore ("./samples/Basic/Gtk/SkiaSharpSample.sln"); + RunMSBuild ("./samples/Basic/Gtk/SkiaSharpSample.sln"); + + // GALLERY samples RunNuGetRestore ("./samples/Gallery/MacSample/MacSample.sln"); RunMSBuildWithPlatform ("./samples/Gallery/MacSample/MacSample.sln", "x86"); RunNuGetRestore ("./samples/Gallery/FormsSample/FormsSample.Mac.sln"); @@ -280,6 +308,9 @@ Task ("samples") } if (IsRunningOnWindows ()) { + // BASIC samples + + // GALLERY samples RunNuGetRestore ("./samples/Gallery/WPFSample/WPFSample.sln"); RunMSBuild ("./samples/Gallery/WPFSample/WPFSample.sln"); RunNuGetRestore ("./samples/Gallery/UWPSample/UWPSample.sln"); @@ -396,8 +427,8 @@ Task ("update-docs") // add windows-specific assemblies if (IsRunningOnWindows ()) { assemblies = assemblies.Union (new FilePath [] { - "./output/windows/SkiaSharp.Views.Desktop.dll", - "./output/windows/SkiaSharp.Views.WPF.dll", + "./output/desktop/SkiaSharp.Views.Desktop.dll", + "./output/wpf/SkiaSharp.Views.WPF.dll", "./output/android/SkiaSharp.Views.Android.dll", "./output/ios/SkiaSharp.Views.iOS.dll", "./output/osx/SkiaSharp.Views.Mac.dll", @@ -409,6 +440,8 @@ Task ("update-docs") // add mac-specific assemblies if (IsRunningOnMac ()) { assemblies = assemblies.Union (new FilePath [] { + "./output/desktop/SkiaSharp.Views.Desktop.dll", + "./output/gtk/SkiaSharp.Views.Gtk.dll", "./output/android/SkiaSharp.Views.Android.dll", "./output/ios/SkiaSharp.Views.iOS.dll", "./output/osx/SkiaSharp.Views.Mac.dll", @@ -416,6 +449,13 @@ Task ("update-docs") "./output/watchos/SkiaSharp.Views.watchOS.dll", }).ToArray (); } + // add linux-specific assemblies + if (IsRunningOnLinux ()) { + assemblies = assemblies.Union (new FilePath [] { + "./output/desktop/SkiaSharp.Views.Desktop.dll", + "./output/gtk/SkiaSharp.Views.Gtk.dll", + }).ToArray (); + } // print out the assemblies foreach (var r in refs) { @@ -493,6 +533,7 @@ Task ("nuget") if (IsRunningOnLinux ()) { PackageNuGet ("./nuget/SkiaSharp.Linux.nuspec", "./output/"); PackageNuGet ("./nuget/HarfBuzzSharp.Linux.nuspec", "./output/"); + PackageNuGet ("./nuget/SkiaSharp.Views.Linux.nuspec", "./output/"); } } // HarfBuzz is a PCL diff --git a/nuget/SkiaSharp.Views.Linux.nuspec b/nuget/SkiaSharp.Views.Linux.nuspec new file mode 100644 index 00000000..7da46774 --- /dev/null +++ b/nuget/SkiaSharp.Views.Linux.nuspec @@ -0,0 +1,26 @@ + + + + SkiaSharp.Views + SkiaSharp Views & Layers (for Linux) + 1.60.0 + Xamarin Inc. + Xamarin Inc. + false + SkiaSharp Views & Layers are a set of platform-specific views and containers that can be used to draw on the screen. + Copyright (c) Xamarin Inc. 2016 + https://github.com/mono/SkiaSharp/blob/master/LICENSE.md + https://github.com/mono/SkiaSharp + https://cdn.rawgit.com/mono/SkiaSharp/v1.53.0/images/skia_256x256.png + ui,xamarin,graphics,ios,android,linux,windows,uwp,tvos,watchos,macos,cross-platform,skiasharp + + + + + + + + + + + \ No newline at end of file diff --git a/nuget/SkiaSharp.Views.Mac.nuspec b/nuget/SkiaSharp.Views.Mac.nuspec index 8f9a3f49..fd573d6d 100644 --- a/nuget/SkiaSharp.Views.Mac.nuspec +++ b/nuget/SkiaSharp.Views.Mac.nuspec @@ -23,5 +23,7 @@ + + \ No newline at end of file diff --git a/nuget/SkiaSharp.Views.Windows.nuspec b/nuget/SkiaSharp.Views.Windows.nuspec index dd6f3a31..aadc5193 100644 --- a/nuget/SkiaSharp.Views.Windows.nuspec +++ b/nuget/SkiaSharp.Views.Windows.nuspec @@ -18,9 +18,10 @@ + + - - + diff --git a/nuget/SkiaSharp.Views.nuspec b/nuget/SkiaSharp.Views.nuspec index 352f4c55..262e3e2f 100644 --- a/nuget/SkiaSharp.Views.nuspec +++ b/nuget/SkiaSharp.Views.nuspec @@ -28,9 +28,12 @@ + + - - + + + diff --git a/samples/Basic/Gtk/SkiaSharpSample.sln b/samples/Basic/Gtk/SkiaSharpSample.sln new file mode 100644 index 00000000..250040da --- /dev/null +++ b/samples/Basic/Gtk/SkiaSharpSample.sln @@ -0,0 +1,109 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26430.13 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Binding", "..\..\..\binding\Binding\Binding.shproj", "{9C502B9A-25D4-473F-89BD-5A13DDE16354}" +EndProject +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "SkiaSharp.Views.Shared", "..\..\..\source\SkiaSharp.Views\SkiaSharp.Views.Shared\SkiaSharp.Views.Shared.shproj", "{5A67972C-1C04-4913-9950-06A03BFE9533}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "source", "source", "{C335869B-7CC8-4239-B4A5-8031AA9758D3}" +EndProject +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Binding.Shared", "..\..\..\binding\Binding.Shared\Binding.Shared.shproj", "{6F8349DC-90AC-441D-8B8B-BE623F46BE6D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SkiaSharp.Desktop", "..\..\..\binding\SkiaSharp.Desktop\SkiaSharp.Desktop.csproj", "{EB1BBDCC-FB07-40D5-8B9E-0079E2C2F2DF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SkiaSharp.Views.Gtk", "..\..\..\source\SkiaSharp.Views\SkiaSharp.Views.Gtk\SkiaSharp.Views.Gtk.csproj", "{67A502A4-E8B2-419A-811E-5A634B29C8D7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SkiaSharp.Views.Desktop", "..\..\..\source\SkiaSharp.Views\SkiaSharp.Views.Desktop\SkiaSharp.Views.Desktop.csproj", "{E5A90865-C185-45AD-88D1-6DA7D6004B03}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SkiaSharpSample", "SkiaSharpSample\SkiaSharpSample.csproj", "{17521786-7B50-46C5-BBCE-999FDEBB45A3}" +EndProject +Global + GlobalSection(SharedMSBuildProjectFiles) = preSolution + SkiaSharp.Views.Forms\SkiaSharp.Views.Forms.Shared\SkiaSharp.Views.Forms.Shared.projitems*{1555d119-8598-4e4d-91ac-d313f94a1673}*SharedItemsImports = 4 + ..\binding\HarfBuzzSharp.Shared\HarfBuzzSharp.Shared.projitems*{1aaa8f60-6138-4dfe-b240-5a0f3fb87e0f}*SharedItemsImports = 13 + ..\binding\Binding.Shared\Binding.Shared.projitems*{2ae5d8c5-eac6-4515-89f2-a4994b41c925}*SharedItemsImports = 4 + ..\binding\HarfBuzzSharp.Shared\HarfBuzzSharp.Shared.projitems*{2ae5d8c5-eac6-4515-89f2-a4994b41c925}*SharedItemsImports = 4 + SkiaSharp.Views.Forms\SkiaSharp.Views.Forms.Native.Shared\SkiaSharp.Views.Forms.Native.Shared.projitems*{2f94f024-1841-47e8-b521-74aa4e3eba54}*SharedItemsImports = 4 + SkiaSharp.Views.Forms\SkiaSharp.Views.Forms.Shared\SkiaSharp.Views.Forms.Shared.projitems*{2f94f024-1841-47e8-b521-74aa4e3eba54}*SharedItemsImports = 4 + SkiaSharp.Views.Forms\SkiaSharp.Views.Forms.Shared\SkiaSharp.Views.Forms.Shared.projitems*{314fb505-9858-4e03-b799-91b0ba627d05}*SharedItemsImports = 13 + ..\binding\Binding.Shared\Binding.Shared.projitems*{4588a759-3853-49b8-8a68-6c7917be9220}*SharedItemsImports = 4 + ..\binding\Binding\Binding.projitems*{4588a759-3853-49b8-8a68-6c7917be9220}*SharedItemsImports = 4 + SkiaSharp.Views.Forms\SkiaSharp.Views.Forms.Native.Shared\SkiaSharp.Views.Forms.Native.Shared.projitems*{4ac36d63-bf11-445f-81ee-107c0cef4fc9}*SharedItemsImports = 4 + SkiaSharp.Views.Forms\SkiaSharp.Views.Forms.Shared\SkiaSharp.Views.Forms.Shared.projitems*{4ac36d63-bf11-445f-81ee-107c0cef4fc9}*SharedItemsImports = 4 + ..\binding\Binding.Shared\Binding.Shared.projitems*{5180e370-a455-42bb-99f9-97bd269b8a52}*SharedItemsImports = 4 + ..\binding\Binding\Binding.projitems*{5180e370-a455-42bb-99f9-97bd269b8a52}*SharedItemsImports = 4 + ..\binding\Binding.Shared\Binding.Shared.projitems*{099A4BAD-6CF7-4898-9D16-266BDD844F95}*SharedItemsImports = 4 + ..\binding\Binding\Binding.projitems*{099A4BAD-6CF7-4898-9D16-266BDD844F95}*SharedItemsImports = 4 + SkiaSharp.Views\SkiaSharp.Views.Shared\SkiaSharp.Views.Shared.projitems*{5a67972c-1c04-4913-9950-06a03bfe9533}*SharedItemsImports = 13 + ..\binding\Binding.Shared\Binding.Shared.projitems*{6a678cfb-21a7-4e81-8909-fd72abbfd408}*SharedItemsImports = 4 + ..\binding\Binding\Binding.projitems*{6a678cfb-21a7-4e81-8909-fd72abbfd408}*SharedItemsImports = 4 + ..\binding\Binding.Shared\Binding.Shared.projitems*{6f8349dc-90ac-441d-8b8b-be623f46be6d}*SharedItemsImports = 13 + SkiaSharp.Views\SkiaSharp.Views.AppleiOS\SkiaSharp.Views.AppleiOS.projitems*{74c78108-9199-4a7a-928c-fc4dc57d0ae4}*SharedItemsImports = 4 + SkiaSharp.Views\SkiaSharp.Views.Apple\SkiaSharp.Views.Apple.projitems*{74c78108-9199-4a7a-928c-fc4dc57d0ae4}*SharedItemsImports = 4 + SkiaSharp.Views\SkiaSharp.Views.Shared\SkiaSharp.Views.Shared.projitems*{74c78108-9199-4a7a-928c-fc4dc57d0ae4}*SharedItemsImports = 4 + SkiaSharp.HarfBuzz\SkiaSharp.HarfBuzz.Shared\SkiaSharp.HarfBuzz.Shared.projitems*{7cad1912-05a5-42e5-b7ba-81bb051f0566}*SharedItemsImports = 4 + SkiaSharp.Views\SkiaSharp.Views.Apple\SkiaSharp.Views.Apple.projitems*{809a15dc-e675-4a24-83fa-df13160f7e4c}*SharedItemsImports = 4 + SkiaSharp.Views\SkiaSharp.Views.Shared\SkiaSharp.Views.Shared.projitems*{809a15dc-e675-4a24-83fa-df13160f7e4c}*SharedItemsImports = 4 + ..\binding\Binding.Shared\Binding.Shared.projitems*{8d646738-458a-441f-b69b-253ef058a812}*SharedItemsImports = 4 + ..\binding\HarfBuzzSharp.Shared\HarfBuzzSharp.Shared.projitems*{8d646738-458a-441f-b69b-253ef058a812}*SharedItemsImports = 4 + ..\binding\Binding.Shared\Binding.Shared.projitems*{0C940695-4868-4CF7-7D16-266BDD88A812}*SharedItemsImports = 4 + ..\binding\HarfBuzzSharp.Shared\HarfBuzzSharp.Shared.projitems*{0C940695-4868-4CF7-7D16-266BDD88A812}*SharedItemsImports = 4 + SkiaSharp.Views\SkiaSharp.Views.Shared\SkiaSharp.Views.Shared.projitems*{926c8d29-e047-4f4e-8b35-852e47bfa9f5}*SharedItemsImports = 4 + ..\binding\Binding\Binding.projitems*{9c502b9a-25d4-473f-89bd-5a13dde16354}*SharedItemsImports = 13 + SkiaSharp.HarfBuzz\SkiaSharp.HarfBuzz.Shared\SkiaSharp.HarfBuzz.Shared.projitems*{c3e63b2d-95d4-4c3f-b10f-7a0aacf94980}*SharedItemsImports = 13 + ..\binding\Binding.Shared\Binding.Shared.projitems*{c737dc80-5b71-4b26-a2dc-da30421788b0}*SharedItemsImports = 4 + ..\binding\Binding\Binding.projitems*{c737dc80-5b71-4b26-a2dc-da30421788b0}*SharedItemsImports = 4 + SkiaSharp.Views\SkiaSharp.Views.Apple\SkiaSharp.Views.Apple.projitems*{cbca14e7-96c9-4697-909c-19b1ef7298f7}*SharedItemsImports = 13 + SkiaSharp.Views.Forms\SkiaSharp.Views.Forms.Native.Shared\SkiaSharp.Views.Forms.Native.Shared.projitems*{cebd25fd-dd4f-4d5f-b809-d50d02176f41}*SharedItemsImports = 13 + SkiaSharp.Views.Forms\SkiaSharp.Views.Forms.Native.Shared\SkiaSharp.Views.Forms.Native.Shared.projitems*{da5da4d8-4885-4af2-96bb-ae803c344ab0}*SharedItemsImports = 4 + SkiaSharp.Views.Forms\SkiaSharp.Views.Forms.Shared\SkiaSharp.Views.Forms.Shared.projitems*{da5da4d8-4885-4af2-96bb-ae803c344ab0}*SharedItemsImports = 4 + SkiaSharp.Views\SkiaSharp.Views.AppleiOS\SkiaSharp.Views.AppleiOS.projitems*{e5973829-6c8b-43e4-b81b-c8492df26c90}*SharedItemsImports = 4 + SkiaSharp.Views\SkiaSharp.Views.Apple\SkiaSharp.Views.Apple.projitems*{e5973829-6c8b-43e4-b81b-c8492df26c90}*SharedItemsImports = 4 + SkiaSharp.Views\SkiaSharp.Views.Shared\SkiaSharp.Views.Shared.projitems*{e5973829-6c8b-43e4-b81b-c8492df26c90}*SharedItemsImports = 4 + SkiaSharp.Views\SkiaSharp.Views.AppleiOS\SkiaSharp.Views.AppleiOS.projitems*{9E850CCA-54CC-4CEB-B2C2-E32EF4A17D61}*SharedItemsImports = 4 + SkiaSharp.Views\SkiaSharp.Views.Apple\SkiaSharp.Views.Apple.projitems*{9E850CCA-54CC-4CEB-B2C2-E32EF4A17D61}*SharedItemsImports = 4 + SkiaSharp.Views\SkiaSharp.Views.Shared\SkiaSharp.Views.Shared.projitems*{9E850CCA-54CC-4CEB-B2C2-E32EF4A17D61}*SharedItemsImports = 4 + ..\binding\Binding.Shared\Binding.Shared.projitems*{e6b786c4-3bf9-4a42-9a4a-08002ae3fdad}*SharedItemsImports = 4 + ..\binding\HarfBuzzSharp.Shared\HarfBuzzSharp.Shared.projitems*{e6b786c4-3bf9-4a42-9a4a-08002ae3fdad}*SharedItemsImports = 4 + ..\binding\Binding.Shared\Binding.Shared.projitems*{e8192110-fcf9-4972-9472-7408bc2ca56b}*SharedItemsImports = 4 + ..\binding\HarfBuzzSharp.Shared\HarfBuzzSharp.Shared.projitems*{e8192110-fcf9-4972-9472-7408bc2ca56b}*SharedItemsImports = 4 + ..\binding\Binding.Shared\Binding.Shared.projitems*{eb1bbdcc-fb07-40d5-8b9e-0079e2c2f2df}*SharedItemsImports = 4 + ..\binding\Binding\Binding.projitems*{eb1bbdcc-fb07-40d5-8b9e-0079e2c2f2df}*SharedItemsImports = 4 + SkiaSharp.Views\SkiaSharp.Views.AppleiOS\SkiaSharp.Views.AppleiOS.projitems*{ff4c9f9f-7a6a-44d1-8338-d30e39e4e9d4}*SharedItemsImports = 13 + EndGlobalSection + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {EB1BBDCC-FB07-40D5-8B9E-0079E2C2F2DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EB1BBDCC-FB07-40D5-8B9E-0079E2C2F2DF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EB1BBDCC-FB07-40D5-8B9E-0079E2C2F2DF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EB1BBDCC-FB07-40D5-8B9E-0079E2C2F2DF}.Release|Any CPU.Build.0 = Release|Any CPU + {67A502A4-E8B2-419A-811E-5A634B29C8D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {67A502A4-E8B2-419A-811E-5A634B29C8D7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {67A502A4-E8B2-419A-811E-5A634B29C8D7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {67A502A4-E8B2-419A-811E-5A634B29C8D7}.Release|Any CPU.Build.0 = Release|Any CPU + {E5A90865-C185-45AD-88D1-6DA7D6004B03}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E5A90865-C185-45AD-88D1-6DA7D6004B03}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E5A90865-C185-45AD-88D1-6DA7D6004B03}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E5A90865-C185-45AD-88D1-6DA7D6004B03}.Release|Any CPU.Build.0 = Release|Any CPU + {17521786-7B50-46C5-BBCE-999FDEBB45A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {17521786-7B50-46C5-BBCE-999FDEBB45A3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {17521786-7B50-46C5-BBCE-999FDEBB45A3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {17521786-7B50-46C5-BBCE-999FDEBB45A3}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {5A67972C-1C04-4913-9950-06A03BFE9533} = {C335869B-7CC8-4239-B4A5-8031AA9758D3} + {9C502B9A-25D4-473F-89BD-5A13DDE16354} = {C335869B-7CC8-4239-B4A5-8031AA9758D3} + {6F8349DC-90AC-441D-8B8B-BE623F46BE6D} = {C335869B-7CC8-4239-B4A5-8031AA9758D3} + {EB1BBDCC-FB07-40D5-8B9E-0079E2C2F2DF} = {C335869B-7CC8-4239-B4A5-8031AA9758D3} + {67A502A4-E8B2-419A-811E-5A634B29C8D7} = {C335869B-7CC8-4239-B4A5-8031AA9758D3} + {E5A90865-C185-45AD-88D1-6DA7D6004B03} = {C335869B-7CC8-4239-B4A5-8031AA9758D3} + EndGlobalSection +EndGlobal diff --git a/samples/Basic/Gtk/SkiaSharpSample/MainWindow.cs b/samples/Basic/Gtk/SkiaSharpSample/MainWindow.cs new file mode 100644 index 00000000..6b9e510e --- /dev/null +++ b/samples/Basic/Gtk/SkiaSharpSample/MainWindow.cs @@ -0,0 +1,49 @@ +using System; +using Gtk; +using SkiaSharp; +using SkiaSharp.Views.Desktop; + +public partial class MainWindow : Gtk.Window +{ + public MainWindow() + : base(Gtk.WindowType.Toplevel) + { + Build(); + + skiaView.PaintSurface += OnPaintSurface; + } + + protected void OnDeleteEvent(object sender, DeleteEventArgs a) + { + Application.Quit(); + a.RetVal = true; + } + + 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 = 1f; + 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); + } +} diff --git a/samples/Basic/Gtk/SkiaSharpSample/Program.cs b/samples/Basic/Gtk/SkiaSharpSample/Program.cs new file mode 100644 index 00000000..0523c5b0 --- /dev/null +++ b/samples/Basic/Gtk/SkiaSharpSample/Program.cs @@ -0,0 +1,16 @@ +using System; +using Gtk; + +namespace SkiaSharpSample +{ + class MainClass + { + public static void Main(string[] args) + { + Application.Init(); + MainWindow win = new MainWindow(); + win.Show(); + Application.Run(); + } + } +} diff --git a/samples/Basic/Gtk/SkiaSharpSample/Properties/AssemblyInfo.cs b/samples/Basic/Gtk/SkiaSharpSample/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..12dec27a --- /dev/null +++ b/samples/Basic/Gtk/SkiaSharpSample/Properties/AssemblyInfo.cs @@ -0,0 +1,26 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle("SkiaSharpSample")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("(c) Matthew Leibowitz")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion("1.0.*")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] diff --git a/samples/Basic/Gtk/SkiaSharpSample/SkiaSharpSample.csproj b/samples/Basic/Gtk/SkiaSharpSample/SkiaSharpSample.csproj new file mode 100644 index 00000000..af1b8899 --- /dev/null +++ b/samples/Basic/Gtk/SkiaSharpSample/SkiaSharpSample.csproj @@ -0,0 +1,63 @@ + + + + {17521786-7B50-46C5-BBCE-999FDEBB45A3} + WinExe + v4.6.1 + SkiaSharpSample + + + full + false + bin\Debug + DEBUG; + 4 + false + + + true + bin\Release + 4 + false + + + + + + + + + + + + + + + + {EB1BBDCC-FB07-40D5-8B9E-0079E2C2F2DF} + SkiaSharp.Desktop + + + {E5A90865-C185-45AD-88D1-6DA7D6004B03} + SkiaSharp.Views.Desktop + + + {67A502A4-E8B2-419A-811E-5A634B29C8D7} + SkiaSharp.Views.Gtk + + + + + gui.stetic + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/Basic/Gtk/SkiaSharpSample/gtk-gui/MainWindow.cs b/samples/Basic/Gtk/SkiaSharpSample/gtk-gui/MainWindow.cs new file mode 100644 index 00000000..7e55e8ec --- /dev/null +++ b/samples/Basic/Gtk/SkiaSharpSample/gtk-gui/MainWindow.cs @@ -0,0 +1,28 @@ + +// This file has been generated by the GUI designer. Do not modify. + +public partial class MainWindow +{ + private global::SkiaSharp.Views.Gtk.SKWidget skiaView; + + protected virtual void Build() + { + global::Stetic.Gui.Initialize(this); + // Widget MainWindow + this.Name = "MainWindow"; + this.Title = global::Mono.Unix.Catalog.GetString("MainWindow"); + this.WindowPosition = ((global::Gtk.WindowPosition)(4)); + // Container child MainWindow.Gtk.Container+ContainerChild + this.skiaView = new global::SkiaSharp.Views.Gtk.SKWidget(); + this.skiaView.Name = "skiaView"; + this.Add(this.skiaView); + if ((this.Child != null)) + { + this.Child.ShowAll(); + } + this.DefaultWidth = 400; + this.DefaultHeight = 300; + this.Show(); + this.DeleteEvent += new global::Gtk.DeleteEventHandler(this.OnDeleteEvent); + } +} diff --git a/samples/Basic/Gtk/SkiaSharpSample/gtk-gui/generated.cs b/samples/Basic/Gtk/SkiaSharpSample/gtk-gui/generated.cs new file mode 100644 index 00000000..4842e95d --- /dev/null +++ b/samples/Basic/Gtk/SkiaSharpSample/gtk-gui/generated.cs @@ -0,0 +1,30 @@ + +// This file has been generated by the GUI designer. Do not modify. +namespace Stetic +{ + internal class Gui + { + private static bool initialized; + + internal static void Initialize(Gtk.Widget iconRenderer) + { + if ((Stetic.Gui.initialized == false)) + { + Stetic.Gui.initialized = true; + } + } + } + + internal class ActionGroups + { + public static Gtk.ActionGroup GetActionGroup(System.Type type) + { + return Stetic.ActionGroups.GetActionGroup(type.FullName); + } + + public static Gtk.ActionGroup GetActionGroup(string name) + { + return null; + } + } +} diff --git a/samples/Basic/Gtk/SkiaSharpSample/gtk-gui/gui.stetic b/samples/Basic/Gtk/SkiaSharpSample/gtk-gui/gui.stetic new file mode 100644 index 00000000..de020471 --- /dev/null +++ b/samples/Basic/Gtk/SkiaSharpSample/gtk-gui/gui.stetic @@ -0,0 +1,23 @@ + + + + .. + 2.12 + + + + + + + + + MainWindow + CenterOnParent + + + + + + + + \ No newline at end of file diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.Gtk/SKWidget.cs b/source/SkiaSharp.Views/SkiaSharp.Views.Gtk/SKWidget.cs new file mode 100644 index 00000000..08b8400a --- /dev/null +++ b/source/SkiaSharp.Views/SkiaSharp.Views.Gtk/SKWidget.cs @@ -0,0 +1,91 @@ +using System; +using System.ComponentModel; +using SkiaSharp.Views.Desktop; + +namespace SkiaSharp.Views.Gtk +{ + [ToolboxItem(true)] + public class SKWidget : global::Gtk.DrawingArea + { + private Gdk.Pixbuf pix; + + public SKWidget() + { + DoubleBuffered = false; + } + + public SKSize CanvasSize => pix == null ? SKSize.Empty : new SKSize(pix.Width, pix.Height); + + [Category("Appearance")] + public event EventHandler PaintSurface; + + protected override bool OnExposeEvent(Gdk.EventExpose evnt) + { + var window = evnt.Window; + var area = evnt.Area; + + // get the pixbuf + CreatePixbuf(); + var info = new SKImageInfo(pix.Width, pix.Height, SKImageInfo.PlatformColorType, SKAlphaType.Premul); + + // create the surface + using (var surface = SKSurface.Create(info, pix.Pixels, info.RowBytes)) + { + // start drawing + OnPaintSurface(new SKPaintSurfaceEventArgs(surface, info)); + + surface.Canvas.Flush(); + + // swap R and B + if (info.ColorType == SKColorType.Bgra8888) + { + using (var pixmap = surface.PeekPixels()) + { + SKSwizzle.SwapRedBlue(pixmap.GetPixels(), pixmap.GetPixels(), info.BytesSize); + } + } + } + + // write the pixbuf to the graphics + window.Clear(); + window.DrawPixbuf(null, pix, 0, 0, 0, 0, -1, -1, Gdk.RgbDither.None, 0, 0); + + return true; + } + + protected virtual void OnPaintSurface(SKPaintSurfaceEventArgs e) + { + // invoke the event + PaintSurface?.Invoke(this, e); + } + + public override void Dispose() + { + FreePixbuf(); + + base.Dispose(); + } + + private void CreatePixbuf() + { + var alloc = Allocation; + var w = alloc.Width; + var h = alloc.Height; + if (pix == null || pix.Width != w || pix.Height != h) + { + FreePixbuf(); + + pix = new Gdk.Pixbuf(Gdk.Colorspace.Rgb, true, 8, w, h); + } + } + + private void FreePixbuf() + { + if (pix != null) + { + pix.Dispose(); + pix = null; + } + } + } +} diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.Gtk/SkiaSharp.Views.Gtk.csproj b/source/SkiaSharp.Views/SkiaSharp.Views.Gtk/SkiaSharp.Views.Gtk.csproj new file mode 100644 index 00000000..302fc803 --- /dev/null +++ b/source/SkiaSharp.Views/SkiaSharp.Views.Gtk/SkiaSharp.Views.Gtk.csproj @@ -0,0 +1,68 @@ + + + + {67A502A4-E8B2-419A-811E-5A634B29C8D7} + Library + v4.5 + SkiaSharp.Views.Gtk + SkiaSharp.Views.Gtk + true + ..\..\..\mono.snk + + + true + full + false + bin\Debug\ + TRACE;DEBUG;__DESKTOP__;__GTK__ + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE;__DESKTOP__;__GTK__ + prompt + 4 + + + + + + gtk-sharp-2.0 + + + gtk-sharp-2.0 + + + glib-sharp-2.0 + + + glade-sharp-2.0 + + + gtk-sharp-2.0 + + + gtk-sharp-2.0 + + + + + {eb1bbdcc-fb07-40d5-8b9e-0079e2c2f2df} + SkiaSharp.Desktop + + + {E5A90865-C185-45AD-88D1-6DA7D6004B03} + SkiaSharp.Views.Desktop + + + + + Properties\SkiaSharpViewsAssemblyInfo.cs + + + + + \ No newline at end of file diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.Shared/Extensions.cs b/source/SkiaSharp.Views/SkiaSharp.Views.Shared/Extensions.cs index 0690ddde..f33f5bad 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.Shared/Extensions.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.Shared/Extensions.cs @@ -7,7 +7,7 @@ namespace SkiaSharp.Views.tvOS namespace SkiaSharp.Views.watchOS #elif __IOS__ namespace SkiaSharp.Views.iOS -#elif __DESKTOP__ || __WPF__ +#elif __DESKTOP__ || __WPF__ || __GTK__ namespace SkiaSharp.Views.Desktop #elif WINDOWS_UWP namespace SkiaSharp.Views.UWP diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.Shared/GlesInterop/Gles.cs b/source/SkiaSharp.Views/SkiaSharp.Views.Shared/GlesInterop/Gles.cs index b3475eaa..c9ca9cc4 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.Shared/GlesInterop/Gles.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.Shared/GlesInterop/Gles.cs @@ -8,7 +8,7 @@ namespace SkiaSharp.Views.GlesInterop private const string libGLESv2 = "/System/Library/Frameworks/OpenGL.framework/OpenGL"; #elif __IOS__ || __TVOS__ || __WATCHOS__ private const string libGLESv2 = "/System/Library/Frameworks/OpenGLES.framework/OpenGLES"; -#elif __DESKTOP__ || __WPF__ +#elif __DESKTOP__ || __WPF__ || __GTK__ private const string libGLESv2 = "opengl32.dll"; #elif __ANDROID__ private const string libGLESv2 = "libGLESv2.so"; diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKGLDrawable.cs b/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKGLDrawable.cs index 37319e4a..8b1e1deb 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKGLDrawable.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKGLDrawable.cs @@ -9,7 +9,7 @@ namespace SkiaSharp.Views.tvOS namespace SkiaSharp.Views.watchOS #elif __IOS__ namespace SkiaSharp.Views.iOS -#elif __DESKTOP__ || __WPF__ +#elif __DESKTOP__ || __WPF__ || __GTK__ namespace SkiaSharp.Views.Desktop #elif __MACOS__ namespace SkiaSharp.Views.Mac diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintGLSurfaceEventArgs.cs b/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintGLSurfaceEventArgs.cs index cecd3281..d634fd31 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintGLSurfaceEventArgs.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintGLSurfaceEventArgs.cs @@ -8,7 +8,7 @@ namespace SkiaSharp.Views.tvOS namespace SkiaSharp.Views.watchOS #elif __IOS__ namespace SkiaSharp.Views.iOS -#elif __DESKTOP__ || __WPF__ +#elif __DESKTOP__ || __WPF__ || __GTK__ namespace SkiaSharp.Views.Desktop #elif WINDOWS_UWP namespace SkiaSharp.Views.UWP diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintSurfaceEventArgs.cs b/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintSurfaceEventArgs.cs index 4ed07f58..f04080b4 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintSurfaceEventArgs.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintSurfaceEventArgs.cs @@ -8,7 +8,7 @@ namespace SkiaSharp.Views.tvOS namespace SkiaSharp.Views.watchOS #elif __IOS__ namespace SkiaSharp.Views.iOS -#elif __DESKTOP__ || __WPF__ +#elif __DESKTOP__ || __WPF__ || __GTK__ namespace SkiaSharp.Views.Desktop #elif WINDOWS_UWP namespace SkiaSharp.Views.UWP diff --git a/source/SkiaSharpSource.Linux.sln b/source/SkiaSharpSource.Linux.sln index 1aea0e92..273fd0e9 100644 --- a/source/SkiaSharpSource.Linux.sln +++ b/source/SkiaSharpSource.Linux.sln @@ -37,6 +37,8 @@ Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "SkiaSharp.Views.Shared", "S EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SkiaSharp.Views.Desktop", "SkiaSharp.Views\SkiaSharp.Views.Desktop\SkiaSharp.Views.Desktop.csproj", "{E5A90865-C185-45AD-88D1-6DA7D6004B03}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SkiaSharp.Views.Gtk", "SkiaSharp.Views\SkiaSharp.Views.Gtk\SkiaSharp.Views.Gtk.csproj", "{67A502A4-E8B2-419A-811E-5A634B29C8D7}" +EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SkiaSharp.Views.Forms", "SkiaSharp.Views.Forms", "{B3C4E4EC-68C7-4AFB-A6D4-1B2B0EB8C421}" EndProject Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "SkiaSharp.Views.Forms.Shared", "SkiaSharp.Views.Forms\SkiaSharp.Views.Forms.Shared\SkiaSharp.Views.Forms.Shared.shproj", "{314FB505-9858-4E03-B799-91B0BA627D05}" @@ -95,6 +97,10 @@ Global {E5A90865-C185-45AD-88D1-6DA7D6004B03}.Debug|Any CPU.Build.0 = Debug|Any CPU {E5A90865-C185-45AD-88D1-6DA7D6004B03}.Release|Any CPU.ActiveCfg = Release|Any CPU {E5A90865-C185-45AD-88D1-6DA7D6004B03}.Release|Any CPU.Build.0 = Release|Any CPU + {67A502A4-E8B2-419A-811E-5A634B29C8D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {67A502A4-E8B2-419A-811E-5A634B29C8D7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {67A502A4-E8B2-419A-811E-5A634B29C8D7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {67A502A4-E8B2-419A-811E-5A634B29C8D7}.Release|Any CPU.Build.0 = Release|Any CPU {1555D119-8598-4E4D-91AC-D313F94A1673}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1555D119-8598-4E4D-91AC-D313F94A1673}.Debug|Any CPU.Build.0 = Debug|Any CPU {1555D119-8598-4E4D-91AC-D313F94A1673}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -116,6 +122,7 @@ Global {EB1BBDCC-FB07-40D5-8B9E-0079E2C2F2DF} = {C335869B-7CC8-4239-B4A5-8031AA9758D3} {5A67972C-1C04-4913-9950-06A03BFE9533} = {4F5EBFFB-DD81-43B9-8531-156ED3639C91} {E5A90865-C185-45AD-88D1-6DA7D6004B03} = {4F5EBFFB-DD81-43B9-8531-156ED3639C91} + {67A502A4-E8B2-419A-811E-5A634B29C8D7} = {4F5EBFFB-DD81-43B9-8531-156ED3639C91} {314FB505-9858-4E03-B799-91B0BA627D05} = {B3C4E4EC-68C7-4AFB-A6D4-1B2B0EB8C421} {1555D119-8598-4E4D-91AC-D313F94A1673} = {B3C4E4EC-68C7-4AFB-A6D4-1B2B0EB8C421} {CEBD25FD-DD4F-4D5F-B809-D50D02176F41} = {B3C4E4EC-68C7-4AFB-A6D4-1B2B0EB8C421} diff --git a/source/SkiaSharpSource.Mac.sln b/source/SkiaSharpSource.Mac.sln index c82b63f5..a123c3f8 100644 --- a/source/SkiaSharpSource.Mac.sln +++ b/source/SkiaSharpSource.Mac.sln @@ -83,6 +83,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HarfBuzzSharp.Desktop", ".. EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SkiaSharp.Desktop", "..\binding\SkiaSharp.Desktop\SkiaSharp.Desktop.csproj", "{EB1BBDCC-FB07-40D5-8B9E-0079E2C2F2DF}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SkiaSharp.Views.Gtk", "SkiaSharp.Views\SkiaSharp.Views.Gtk\SkiaSharp.Views.Gtk.csproj", "{67A502A4-E8B2-419A-811E-5A634B29C8D7}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SkiaSharp.Views.Desktop", "SkiaSharp.Views\SkiaSharp.Views.Desktop\SkiaSharp.Views.Desktop.csproj", "{E5A90865-C185-45AD-88D1-6DA7D6004B03}" EndProject Global @@ -245,6 +247,10 @@ Global {EB1BBDCC-FB07-40D5-8B9E-0079E2C2F2DF}.Debug|Any CPU.Build.0 = Debug|Any CPU {EB1BBDCC-FB07-40D5-8B9E-0079E2C2F2DF}.Release|Any CPU.ActiveCfg = Release|Any CPU {EB1BBDCC-FB07-40D5-8B9E-0079E2C2F2DF}.Release|Any CPU.Build.0 = Release|Any CPU + {67A502A4-E8B2-419A-811E-5A634B29C8D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {67A502A4-E8B2-419A-811E-5A634B29C8D7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {67A502A4-E8B2-419A-811E-5A634B29C8D7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {67A502A4-E8B2-419A-811E-5A634B29C8D7}.Release|Any CPU.Build.0 = Release|Any CPU {E5A90865-C185-45AD-88D1-6DA7D6004B03}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E5A90865-C185-45AD-88D1-6DA7D6004B03}.Debug|Any CPU.Build.0 = Debug|Any CPU {E5A90865-C185-45AD-88D1-6DA7D6004B03}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -288,6 +294,7 @@ Global {89736865-5272-4A42-A7FB-D802C6345502} = {DF72A8D3-0A12-49C9-BBD2-4ACC9EB1A544} {2AE5D8C5-EAC6-4515-89F2-A4994B41C925} = {56AE868D-7AD9-4DFC-BD27-6BBA8DC9F75A} {EB1BBDCC-FB07-40D5-8B9E-0079E2C2F2DF} = {C335869B-7CC8-4239-B4A5-8031AA9758D3} + {67A502A4-E8B2-419A-811E-5A634B29C8D7} = {F19E1537-81B2-4D4F-A69E-78DC73ACC141} {E5A90865-C185-45AD-88D1-6DA7D6004B03} = {F19E1537-81B2-4D4F-A69E-78DC73ACC141} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution