diff --git a/samples/Basic/iOS/SkiaSharpSample/ViewController.cs b/samples/Basic/iOS/SkiaSharpSample/ViewController.cs index 67001005..3b812df2 100644 --- a/samples/Basic/iOS/SkiaSharpSample/ViewController.cs +++ b/samples/Basic/iOS/SkiaSharpSample/ViewController.cs @@ -27,7 +27,6 @@ namespace SkiaSharpSample // get the screen density for scaling var scale = (float)skiaView.ContentScaleFactor; - var scaledSize = new SKSize(e.Info.Width / scale, e.Info.Height / scale); // handle the device screen density canvas.Scale(scale); @@ -44,7 +43,7 @@ namespace SkiaSharpSample TextAlign = SKTextAlign.Center, TextSize = 24 }; - var coord = new SKPoint(scaledSize.Width / 2, (scaledSize.Height + paint.TextSize) / 2); + var coord = new SKPoint((float)skiaView.Bounds.Width / 2, ((float)skiaView.Bounds.Height + paint.TextSize) / 2); canvas.DrawText("SkiaSharp", coord, paint); } } diff --git a/samples/Basic/macOS/SkiaSharpSample.sln b/samples/Basic/macOS/SkiaSharpSample.sln new file mode 100644 index 00000000..f1e9dd2f --- /dev/null +++ b/samples/Basic/macOS/SkiaSharpSample.sln @@ -0,0 +1,105 @@ + +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("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SkiaSharp.OSX", "..\..\..\Binding\SkiaSharp.OSX\SkiaSharp.OSX.csproj", "{4588A759-3853-49B8-8A68-6C7917BE9220}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SkiaSharp.Views.Mac", "..\..\..\source\SkiaSharp.Views\SkiaSharp.Views.Mac\SkiaSharp.Views.Mac.csproj", "{809A15DC-E675-4A24-83FA-DF13160F7E4C}" +EndProject +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "SkiaSharp.Views.Apple", "..\..\..\source\SkiaSharp.Views\SkiaSharp.Views.Apple\SkiaSharp.Views.Apple.shproj", "{CBCA14E7-96C9-4697-909C-19B1EF7298F7}" +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}") = "SkiaSharpSample", "SkiaSharpSample\SkiaSharpSample.csproj", "{299A6EF2-E5C0-4290-B9E3-A04F98A5ABF4}" +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 + {809A15DC-E675-4A24-83FA-DF13160F7E4C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {809A15DC-E675-4A24-83FA-DF13160F7E4C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {809A15DC-E675-4A24-83FA-DF13160F7E4C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {809A15DC-E675-4A24-83FA-DF13160F7E4C}.Release|Any CPU.Build.0 = Release|Any CPU + {4588A759-3853-49B8-8A68-6C7917BE9220}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4588A759-3853-49B8-8A68-6C7917BE9220}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4588A759-3853-49B8-8A68-6C7917BE9220}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4588A759-3853-49B8-8A68-6C7917BE9220}.Release|Any CPU.Build.0 = Release|Any CPU + {299A6EF2-E5C0-4290-B9E3-A04F98A5ABF4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {299A6EF2-E5C0-4290-B9E3-A04F98A5ABF4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {299A6EF2-E5C0-4290-B9E3-A04F98A5ABF4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {299A6EF2-E5C0-4290-B9E3-A04F98A5ABF4}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {809A15DC-E675-4A24-83FA-DF13160F7E4C} = {C335869B-7CC8-4239-B4A5-8031AA9758D3} + {CBCA14E7-96C9-4697-909C-19B1EF7298F7} = {C335869B-7CC8-4239-B4A5-8031AA9758D3} + {5A67972C-1C04-4913-9950-06A03BFE9533} = {C335869B-7CC8-4239-B4A5-8031AA9758D3} + {9C502B9A-25D4-473F-89BD-5A13DDE16354} = {C335869B-7CC8-4239-B4A5-8031AA9758D3} + {4588A759-3853-49B8-8A68-6C7917BE9220} = {C335869B-7CC8-4239-B4A5-8031AA9758D3} + {6F8349DC-90AC-441D-8B8B-BE623F46BE6D} = {C335869B-7CC8-4239-B4A5-8031AA9758D3} + EndGlobalSection +EndGlobal diff --git a/samples/Basic/macOS/SkiaSharpSample/AppDelegate.cs b/samples/Basic/macOS/SkiaSharpSample/AppDelegate.cs new file mode 100644 index 00000000..51240dd9 --- /dev/null +++ b/samples/Basic/macOS/SkiaSharpSample/AppDelegate.cs @@ -0,0 +1,19 @@ +using AppKit; +using Foundation; + +namespace SkiaSharpSample +{ + [Register(nameof(AppDelegate))] + public class AppDelegate : NSApplicationDelegate + { + public override void DidFinishLaunching(NSNotification notification) + { + // Insert code here to initialize your application + } + + public override void WillTerminate(NSNotification notification) + { + // Insert code here to tear down your application + } + } +} diff --git a/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png b/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png new file mode 100644 index 00000000..d0b5a809 Binary files /dev/null and b/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png differ diff --git a/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png b/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png new file mode 100644 index 00000000..f4c8d290 Binary files /dev/null and b/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png differ diff --git a/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png b/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png new file mode 100644 index 00000000..ebb5a0fe Binary files /dev/null and b/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png differ diff --git a/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png b/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png new file mode 100644 index 00000000..0986d31b Binary files /dev/null and b/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png differ diff --git a/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png b/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png new file mode 100644 index 00000000..f4c8d290 Binary files /dev/null and b/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png differ diff --git a/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png b/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png new file mode 100644 index 00000000..a142c83f Binary files /dev/null and b/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png differ diff --git a/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png b/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png new file mode 100644 index 00000000..0986d31b Binary files /dev/null and b/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png differ diff --git a/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png b/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png new file mode 100644 index 00000000..412d6ca9 Binary files /dev/null and b/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png differ diff --git a/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png b/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png new file mode 100644 index 00000000..a142c83f Binary files /dev/null and b/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png differ diff --git a/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png b/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png new file mode 100644 index 00000000..e99022ae Binary files /dev/null and b/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png differ diff --git a/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/Contents.json b/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..6b285452 --- /dev/null +++ b/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images": [ + { + "filename": "AppIcon-16.png", + "size": "16x16", + "scale": "1x", + "idiom": "mac" + }, + { + "filename": "AppIcon-16@2x.png", + "size": "16x16", + "scale": "2x", + "idiom": "mac" + }, + { + "filename": "AppIcon-32.png", + "size": "32x32", + "scale": "1x", + "idiom": "mac" + }, + { + "filename": "AppIcon-32@2x.png", + "size": "32x32", + "scale": "2x", + "idiom": "mac" + }, + { + "filename": "AppIcon-128.png", + "size": "128x128", + "scale": "1x", + "idiom": "mac" + }, + { + "filename": "AppIcon-128@2x.png", + "size": "128x128", + "scale": "2x", + "idiom": "mac" + }, + { + "filename": "AppIcon-256.png", + "size": "256x256", + "scale": "1x", + "idiom": "mac" + }, + { + "filename": "AppIcon-256@2x.png", + "size": "256x256", + "scale": "2x", + "idiom": "mac" + }, + { + "filename": "AppIcon-512.png", + "size": "512x512", + "scale": "1x", + "idiom": "mac" + }, + { + "filename": "AppIcon-512@2x.png", + "size": "512x512", + "scale": "2x", + "idiom": "mac" + } + ], + "info": { + "version": 1, + "author": "xcode" + } +} \ No newline at end of file diff --git a/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/Contents.json b/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/Contents.json new file mode 100644 index 00000000..4caf392f --- /dev/null +++ b/samples/Basic/macOS/SkiaSharpSample/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/samples/Basic/macOS/SkiaSharpSample/Entitlements.plist b/samples/Basic/macOS/SkiaSharpSample/Entitlements.plist new file mode 100644 index 00000000..9ae59937 --- /dev/null +++ b/samples/Basic/macOS/SkiaSharpSample/Entitlements.plist @@ -0,0 +1,6 @@ + + + + + + diff --git a/samples/Basic/macOS/SkiaSharpSample/Info.plist b/samples/Basic/macOS/SkiaSharpSample/Info.plist new file mode 100644 index 00000000..d5c9e5cb --- /dev/null +++ b/samples/Basic/macOS/SkiaSharpSample/Info.plist @@ -0,0 +1,33 @@ + + + + + CFBundleName + SkiaSharpSample + CFBundleIdentifier + com.companyname.SkiaSharpSample + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSMinimumSystemVersion + 10.10 + CFBundleDevelopmentRegion + en + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + APPL + CFBundleSignature + ???? + NSHumanReadableCopyright + (c) Matthew Leibowitz + NSPrincipalClass + NSApplication + NSMainStoryboardFile + Main + XSAppIconAssets + Assets.xcassets/AppIcon.appiconset + + + diff --git a/samples/Basic/macOS/SkiaSharpSample/Main.cs b/samples/Basic/macOS/SkiaSharpSample/Main.cs new file mode 100644 index 00000000..bbe843b7 --- /dev/null +++ b/samples/Basic/macOS/SkiaSharpSample/Main.cs @@ -0,0 +1,13 @@ +using AppKit; + +namespace SkiaSharpSample +{ + static class MainClass + { + static void Main(string[] args) + { + NSApplication.Init(); + NSApplication.Main(args); + } + } +} diff --git a/samples/Basic/macOS/SkiaSharpSample/Main.storyboard b/samples/Basic/macOS/SkiaSharpSample/Main.storyboard new file mode 100644 index 00000000..47517b66 --- /dev/null +++ b/samples/Basic/macOS/SkiaSharpSample/Main.storyboard @@ -0,0 +1,695 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Default + + + + + + + Left to Right + + + + + + + Right to Left + + + + + + + + + + + Default + + + + + + + Left to Right + + + + + + + Right to Left + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/Basic/macOS/SkiaSharpSample/SkiaSharpSample.csproj b/samples/Basic/macOS/SkiaSharpSample/SkiaSharpSample.csproj new file mode 100644 index 00000000..4076337b --- /dev/null +++ b/samples/Basic/macOS/SkiaSharpSample/SkiaSharpSample.csproj @@ -0,0 +1,100 @@ + + + + Debug + AnyCPU + {299A6EF2-E5C0-4290-B9E3-A04F98A5ABF4} + {A3F8F2AB-B479-4A4A-A458-A89E7DC349F1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Exe + SkiaSharpSample + SkiaSharpSample + v2.0 + Xamarin.Mac + Resources + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + false + Mac Developer + false + false + false + true + true + true + + + + + + pdbonly + true + bin\Release + + prompt + 4 + false + true + false + true + true + true + SdkOnly + + + + + + + + + + + {4588A759-3853-49B8-8A68-6C7917BE9220} + SkiaSharp.OSX + + + {809A15DC-E675-4A24-83FA-DF13160F7E4C} + SkiaSharp.Views.Mac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ViewController.cs + + + + + + + \ No newline at end of file diff --git a/samples/Basic/macOS/SkiaSharpSample/ViewController.cs b/samples/Basic/macOS/SkiaSharpSample/ViewController.cs new file mode 100644 index 00000000..fa9add2e --- /dev/null +++ b/samples/Basic/macOS/SkiaSharpSample/ViewController.cs @@ -0,0 +1,50 @@ +using System; +using AppKit; + +using SkiaSharp; +using SkiaSharp.Views.Mac; + +namespace SkiaSharpSample +{ + public partial class ViewController : NSViewController + { + public ViewController(IntPtr handle) + : base(handle) + { + } + + public override void ViewDidLoad() + { + base.ViewDidLoad(); + + skiaView.PaintSurface += OnPaintSurface; + } + + 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)skiaView.Window.BackingScaleFactor; + + // 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((float)skiaView.Bounds.Width / 2, ((float)skiaView.Bounds.Height + paint.TextSize) / 2); + canvas.DrawText("SkiaSharp", coord, paint); + } + } +} diff --git a/samples/Basic/macOS/SkiaSharpSample/ViewController.designer.cs b/samples/Basic/macOS/SkiaSharpSample/ViewController.designer.cs new file mode 100644 index 00000000..e03f03b6 --- /dev/null +++ b/samples/Basic/macOS/SkiaSharpSample/ViewController.designer.cs @@ -0,0 +1,26 @@ +// WARNING +// +// This file has been generated automatically by Visual Studio to store outlets and +// actions made in the UI designer. If it is removed, they will be lost. +// Manual changes to this file may not be handled correctly. +// +using Foundation; +using System.CodeDom.Compiler; + +namespace SkiaSharpSample +{ + [Register ("ViewController")] + partial class ViewController + { + [Outlet] + SkiaSharp.Views.Mac.SKCanvasView skiaView { get; set; } + + void ReleaseDesignerOutlets () + { + if (skiaView != null) { + skiaView.Dispose (); + skiaView = null; + } + } + } +} diff --git a/samples/Basic/tvOS/SkiaSharpSample.sln b/samples/Basic/tvOS/SkiaSharpSample.sln new file mode 100644 index 00000000..97477c58 --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample.sln @@ -0,0 +1,136 @@ + +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("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SkiaSharp.tvOS", "..\..\..\Binding\SkiaSharp.tvOS\SkiaSharp.tvOS.csproj", "{5180E370-A455-42BB-99F9-97BD269B8A52}" +EndProject +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "SkiaSharp.Views.Apple", "..\..\..\source\SkiaSharp.Views\SkiaSharp.Views.Apple\SkiaSharp.Views.Apple.shproj", "{CBCA14E7-96C9-4697-909C-19B1EF7298F7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SkiaSharp.Views.tvOS", "..\..\..\source\SkiaSharp.Views\SkiaSharp.Views.tvOS\SkiaSharp.Views.tvOS.csproj", "{E5973829-6C8B-43E4-B81B-C8492DF26C90}" +EndProject +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "SkiaSharp.Views.AppleiOS", "..\..\..\source\SkiaSharp.Views\SkiaSharp.Views.AppleiOS\SkiaSharp.Views.AppleiOS.shproj", "{FF4C9F9F-7A6A-44D1-8338-D30E39E4E9D4}" +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}") = "SkiaSharpSample", "SkiaSharpSample\SkiaSharpSample.csproj", "{66021FA3-47E9-4C76-904C-94A22C31FCBE}" +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 + Debug|iPhoneSimulator = Debug|iPhoneSimulator + Release|iPhone = Release|iPhone + Release|iPhoneSimulator = Release|iPhoneSimulator + Debug|iPhone = Debug|iPhone + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E5973829-6C8B-43E4-B81B-C8492DF26C90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E5973829-6C8B-43E4-B81B-C8492DF26C90}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E5973829-6C8B-43E4-B81B-C8492DF26C90}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E5973829-6C8B-43E4-B81B-C8492DF26C90}.Release|Any CPU.Build.0 = Release|Any CPU + {E5973829-6C8B-43E4-B81B-C8492DF26C90}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {E5973829-6C8B-43E4-B81B-C8492DF26C90}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {E5973829-6C8B-43E4-B81B-C8492DF26C90}.Release|iPhone.ActiveCfg = Release|Any CPU + {E5973829-6C8B-43E4-B81B-C8492DF26C90}.Release|iPhone.Build.0 = Release|Any CPU + {E5973829-6C8B-43E4-B81B-C8492DF26C90}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {E5973829-6C8B-43E4-B81B-C8492DF26C90}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {E5973829-6C8B-43E4-B81B-C8492DF26C90}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {E5973829-6C8B-43E4-B81B-C8492DF26C90}.Debug|iPhone.Build.0 = Debug|Any CPU + {5180E370-A455-42BB-99F9-97BD269B8A52}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5180E370-A455-42BB-99F9-97BD269B8A52}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5180E370-A455-42BB-99F9-97BD269B8A52}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5180E370-A455-42BB-99F9-97BD269B8A52}.Release|Any CPU.Build.0 = Release|Any CPU + {5180E370-A455-42BB-99F9-97BD269B8A52}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {5180E370-A455-42BB-99F9-97BD269B8A52}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {5180E370-A455-42BB-99F9-97BD269B8A52}.Release|iPhone.ActiveCfg = Release|Any CPU + {5180E370-A455-42BB-99F9-97BD269B8A52}.Release|iPhone.Build.0 = Release|Any CPU + {5180E370-A455-42BB-99F9-97BD269B8A52}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {5180E370-A455-42BB-99F9-97BD269B8A52}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {5180E370-A455-42BB-99F9-97BD269B8A52}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {5180E370-A455-42BB-99F9-97BD269B8A52}.Debug|iPhone.Build.0 = Debug|Any CPU + {66021FA3-47E9-4C76-904C-94A22C31FCBE}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator + {66021FA3-47E9-4C76-904C-94A22C31FCBE}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator + {66021FA3-47E9-4C76-904C-94A22C31FCBE}.Release|Any CPU.ActiveCfg = Release|iPhone + {66021FA3-47E9-4C76-904C-94A22C31FCBE}.Release|Any CPU.Build.0 = Release|iPhone + {66021FA3-47E9-4C76-904C-94A22C31FCBE}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator + {66021FA3-47E9-4C76-904C-94A22C31FCBE}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator + {66021FA3-47E9-4C76-904C-94A22C31FCBE}.Release|iPhone.ActiveCfg = Release|iPhone + {66021FA3-47E9-4C76-904C-94A22C31FCBE}.Release|iPhone.Build.0 = Release|iPhone + {66021FA3-47E9-4C76-904C-94A22C31FCBE}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator + {66021FA3-47E9-4C76-904C-94A22C31FCBE}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator + {66021FA3-47E9-4C76-904C-94A22C31FCBE}.Debug|iPhone.ActiveCfg = Debug|iPhone + {66021FA3-47E9-4C76-904C-94A22C31FCBE}.Debug|iPhone.Build.0 = Debug|iPhone + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {CBCA14E7-96C9-4697-909C-19B1EF7298F7} = {C335869B-7CC8-4239-B4A5-8031AA9758D3} + {E5973829-6C8B-43E4-B81B-C8492DF26C90} = {C335869B-7CC8-4239-B4A5-8031AA9758D3} + {FF4C9F9F-7A6A-44D1-8338-D30E39E4E9D4} = {C335869B-7CC8-4239-B4A5-8031AA9758D3} + {5A67972C-1C04-4913-9950-06A03BFE9533} = {C335869B-7CC8-4239-B4A5-8031AA9758D3} + {9C502B9A-25D4-473F-89BD-5A13DDE16354} = {C335869B-7CC8-4239-B4A5-8031AA9758D3} + {5180E370-A455-42BB-99F9-97BD269B8A52} = {C335869B-7CC8-4239-B4A5-8031AA9758D3} + {6F8349DC-90AC-441D-8B8B-BE623F46BE6D} = {C335869B-7CC8-4239-B4A5-8031AA9758D3} + EndGlobalSection +EndGlobal diff --git a/samples/Basic/tvOS/SkiaSharpSample/AppDelegate.cs b/samples/Basic/tvOS/SkiaSharpSample/AppDelegate.cs new file mode 100644 index 00000000..ba640dd9 --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/AppDelegate.cs @@ -0,0 +1,16 @@ +using Foundation; +using UIKit; + +namespace SkiaSharpSample +{ + [Register(nameof(AppDelegate))] + public class AppDelegate : UIApplicationDelegate + { + public override UIWindow Window { get; set; } + + public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions) + { + return true; + } + } +} diff --git a/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json new file mode 100644 index 00000000..3767d60b --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json @@ -0,0 +1,54 @@ +{ + "images": [ + { + "idiom": "universal" + }, + { + "scale": "1x", + "idiom": "universal" + }, + { + "scale": "2x", + "idiom": "universal" + }, + { + "scale": "3x", + "idiom": "universal" + }, + { + "idiom": "iphone" + }, + { + "scale": "1x", + "idiom": "iphone" + }, + { + "scale": "2x", + "idiom": "iphone" + }, + { + "subtype": "retina4", + "scale": "2x", + "idiom": "iphone" + }, + { + "scale": "3x", + "idiom": "iphone" + }, + { + "idiom": "ipad" + }, + { + "scale": "1x", + "idiom": "ipad" + }, + { + "scale": "2x", + "idiom": "ipad" + } + ], + "info": { + "version": 1, + "author": "xcode" + } +} \ No newline at end of file diff --git a/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Contents.json b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Contents.json new file mode 100644 index 00000000..4caf392f --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Contents.json b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Contents.json new file mode 100644 index 00000000..521695b4 --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Contents.json @@ -0,0 +1,17 @@ +{ + "layers" : [ + { + "filename" : "Front.imagestacklayer" + }, + { + "filename" : "Middle.imagestacklayer" + }, + { + "filename" : "Back.imagestacklayer" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json new file mode 100644 index 00000000..3767d60b --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json @@ -0,0 +1,54 @@ +{ + "images": [ + { + "idiom": "universal" + }, + { + "scale": "1x", + "idiom": "universal" + }, + { + "scale": "2x", + "idiom": "universal" + }, + { + "scale": "3x", + "idiom": "universal" + }, + { + "idiom": "iphone" + }, + { + "scale": "1x", + "idiom": "iphone" + }, + { + "scale": "2x", + "idiom": "iphone" + }, + { + "subtype": "retina4", + "scale": "2x", + "idiom": "iphone" + }, + { + "scale": "3x", + "idiom": "iphone" + }, + { + "idiom": "ipad" + }, + { + "scale": "1x", + "idiom": "ipad" + }, + { + "scale": "2x", + "idiom": "ipad" + } + ], + "info": { + "version": 1, + "author": "xcode" + } +} \ No newline at end of file diff --git a/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Contents.json b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Contents.json new file mode 100644 index 00000000..4caf392f --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json new file mode 100644 index 00000000..3767d60b --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json @@ -0,0 +1,54 @@ +{ + "images": [ + { + "idiom": "universal" + }, + { + "scale": "1x", + "idiom": "universal" + }, + { + "scale": "2x", + "idiom": "universal" + }, + { + "scale": "3x", + "idiom": "universal" + }, + { + "idiom": "iphone" + }, + { + "scale": "1x", + "idiom": "iphone" + }, + { + "scale": "2x", + "idiom": "iphone" + }, + { + "subtype": "retina4", + "scale": "2x", + "idiom": "iphone" + }, + { + "scale": "3x", + "idiom": "iphone" + }, + { + "idiom": "ipad" + }, + { + "scale": "1x", + "idiom": "ipad" + }, + { + "scale": "2x", + "idiom": "ipad" + } + ], + "info": { + "version": 1, + "author": "xcode" + } +} \ No newline at end of file diff --git a/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Contents.json b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Contents.json new file mode 100644 index 00000000..4caf392f --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json new file mode 100644 index 00000000..3767d60b --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json @@ -0,0 +1,54 @@ +{ + "images": [ + { + "idiom": "universal" + }, + { + "scale": "1x", + "idiom": "universal" + }, + { + "scale": "2x", + "idiom": "universal" + }, + { + "scale": "3x", + "idiom": "universal" + }, + { + "idiom": "iphone" + }, + { + "scale": "1x", + "idiom": "iphone" + }, + { + "scale": "2x", + "idiom": "iphone" + }, + { + "subtype": "retina4", + "scale": "2x", + "idiom": "iphone" + }, + { + "scale": "3x", + "idiom": "iphone" + }, + { + "idiom": "ipad" + }, + { + "scale": "1x", + "idiom": "ipad" + }, + { + "scale": "2x", + "idiom": "ipad" + } + ], + "info": { + "version": 1, + "author": "xcode" + } +} \ No newline at end of file diff --git a/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Contents.json b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Contents.json new file mode 100644 index 00000000..4caf392f --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Contents.json b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Contents.json new file mode 100644 index 00000000..521695b4 --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Contents.json @@ -0,0 +1,17 @@ +{ + "layers" : [ + { + "filename" : "Front.imagestacklayer" + }, + { + "filename" : "Middle.imagestacklayer" + }, + { + "filename" : "Back.imagestacklayer" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json new file mode 100644 index 00000000..3767d60b --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json @@ -0,0 +1,54 @@ +{ + "images": [ + { + "idiom": "universal" + }, + { + "scale": "1x", + "idiom": "universal" + }, + { + "scale": "2x", + "idiom": "universal" + }, + { + "scale": "3x", + "idiom": "universal" + }, + { + "idiom": "iphone" + }, + { + "scale": "1x", + "idiom": "iphone" + }, + { + "scale": "2x", + "idiom": "iphone" + }, + { + "subtype": "retina4", + "scale": "2x", + "idiom": "iphone" + }, + { + "scale": "3x", + "idiom": "iphone" + }, + { + "idiom": "ipad" + }, + { + "scale": "1x", + "idiom": "ipad" + }, + { + "scale": "2x", + "idiom": "ipad" + } + ], + "info": { + "version": 1, + "author": "xcode" + } +} \ No newline at end of file diff --git a/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Contents.json b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Contents.json new file mode 100644 index 00000000..4caf392f --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json new file mode 100644 index 00000000..3767d60b --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json @@ -0,0 +1,54 @@ +{ + "images": [ + { + "idiom": "universal" + }, + { + "scale": "1x", + "idiom": "universal" + }, + { + "scale": "2x", + "idiom": "universal" + }, + { + "scale": "3x", + "idiom": "universal" + }, + { + "idiom": "iphone" + }, + { + "scale": "1x", + "idiom": "iphone" + }, + { + "scale": "2x", + "idiom": "iphone" + }, + { + "subtype": "retina4", + "scale": "2x", + "idiom": "iphone" + }, + { + "scale": "3x", + "idiom": "iphone" + }, + { + "idiom": "ipad" + }, + { + "scale": "1x", + "idiom": "ipad" + }, + { + "scale": "2x", + "idiom": "ipad" + } + ], + "info": { + "version": 1, + "author": "xcode" + } +} \ No newline at end of file diff --git a/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Contents.json b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Contents.json new file mode 100644 index 00000000..4caf392f --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json new file mode 100644 index 00000000..df957c0d --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json @@ -0,0 +1,32 @@ +{ + "assets" : [ + { + "size" : "1280x768", + "idiom" : "tv", + "filename" : "App Icon - Large.imagestack", + "role" : "primary-app-icon" + }, + { + "size" : "400x240", + "idiom" : "tv", + "filename" : "App Icon - Small.imagestack", + "role" : "primary-app-icon" + }, + { + "size" : "2320x720", + "idiom" : "tv", + "filename" : "Top Shelf Image Wide.imageset", + "role" : "top-shelf-image-wide" + }, + { + "size" : "1920x720", + "idiom" : "tv", + "filename" : "Top Shelf Image.imageset", + "role" : "top-shelf-image" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json new file mode 100644 index 00000000..3767d60b --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json @@ -0,0 +1,54 @@ +{ + "images": [ + { + "idiom": "universal" + }, + { + "scale": "1x", + "idiom": "universal" + }, + { + "scale": "2x", + "idiom": "universal" + }, + { + "scale": "3x", + "idiom": "universal" + }, + { + "idiom": "iphone" + }, + { + "scale": "1x", + "idiom": "iphone" + }, + { + "scale": "2x", + "idiom": "iphone" + }, + { + "subtype": "retina4", + "scale": "2x", + "idiom": "iphone" + }, + { + "scale": "3x", + "idiom": "iphone" + }, + { + "idiom": "ipad" + }, + { + "scale": "1x", + "idiom": "ipad" + }, + { + "scale": "2x", + "idiom": "ipad" + } + ], + "info": { + "version": 1, + "author": "xcode" + } +} \ No newline at end of file diff --git a/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json new file mode 100644 index 00000000..3767d60b --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json @@ -0,0 +1,54 @@ +{ + "images": [ + { + "idiom": "universal" + }, + { + "scale": "1x", + "idiom": "universal" + }, + { + "scale": "2x", + "idiom": "universal" + }, + { + "scale": "3x", + "idiom": "universal" + }, + { + "idiom": "iphone" + }, + { + "scale": "1x", + "idiom": "iphone" + }, + { + "scale": "2x", + "idiom": "iphone" + }, + { + "subtype": "retina4", + "scale": "2x", + "idiom": "iphone" + }, + { + "scale": "3x", + "idiom": "iphone" + }, + { + "idiom": "ipad" + }, + { + "scale": "1x", + "idiom": "ipad" + }, + { + "scale": "2x", + "idiom": "ipad" + } + ], + "info": { + "version": 1, + "author": "xcode" + } +} \ No newline at end of file diff --git a/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/Contents.json b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/Contents.json new file mode 100644 index 00000000..4caf392f --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/LaunchImages.launchimage/Contents.json b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/LaunchImages.launchimage/Contents.json new file mode 100644 index 00000000..c3140e97 --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/Assets.xcassets/LaunchImages.launchimage/Contents.json @@ -0,0 +1,162 @@ +{ + "images": [ + { + "minimum-system-version": "8.0", + "orientation": "portrait", + "extent": "full-screen", + "size": "414x736", + "subtype": "736h", + "scale": "3x", + "idiom": "iphone" + }, + { + "minimum-system-version": "8.0", + "orientation": "portrait", + "extent": "full-screen", + "size": "375x667", + "subtype": "667h", + "scale": "2x", + "idiom": "iphone" + }, + { + "minimum-system-version": "8.0", + "orientation": "landscape", + "extent": "full-screen", + "size": "736x414", + "subtype": "736h", + "scale": "3x", + "idiom": "iphone" + }, + { + "minimum-system-version": "7.0", + "orientation": "portrait", + "extent": "full-screen", + "size": "320x480", + "scale": "2x", + "idiom": "iphone" + }, + { + "minimum-system-version": "7.0", + "orientation": "portrait", + "extent": "full-screen", + "size": "320x568", + "subtype": "retina4", + "scale": "2x", + "idiom": "iphone" + }, + { + "minimum-system-version": "7.0", + "orientation": "portrait", + "extent": "full-screen", + "size": "768x1024", + "scale": "1x", + "idiom": "ipad" + }, + { + "minimum-system-version": "7.0", + "orientation": "portrait", + "extent": "full-screen", + "size": "768x1024", + "scale": "2x", + "idiom": "ipad" + }, + { + "minimum-system-version": "7.0", + "orientation": "landscape", + "extent": "full-screen", + "size": "1024x768", + "scale": "1x", + "idiom": "ipad" + }, + { + "minimum-system-version": "7.0", + "orientation": "landscape", + "extent": "full-screen", + "size": "1024x768", + "scale": "2x", + "idiom": "ipad" + }, + { + "orientation": "portrait", + "extent": "full-screen", + "size": "320x480", + "scale": "1x", + "idiom": "iphone" + }, + { + "orientation": "portrait", + "extent": "full-screen", + "size": "320x480", + "scale": "2x", + "idiom": "iphone" + }, + { + "orientation": "portrait", + "extent": "full-screen", + "size": "320x568", + "subtype": "retina4", + "scale": "2x", + "idiom": "iphone" + }, + { + "orientation": "portrait", + "extent": "full-screen", + "size": "768x1024", + "scale": "1x", + "idiom": "ipad" + }, + { + "orientation": "portrait", + "extent": "full-screen", + "size": "768x1024", + "scale": "2x", + "idiom": "ipad" + }, + { + "orientation": "portrait", + "extent": "to-status-bar", + "size": "768x1004", + "scale": "1x", + "idiom": "ipad" + }, + { + "orientation": "portrait", + "extent": "to-status-bar", + "size": "768x1004", + "scale": "2x", + "idiom": "ipad" + }, + { + "orientation": "landscape", + "extent": "full-screen", + "size": "1024x768", + "scale": "1x", + "idiom": "ipad" + }, + { + "orientation": "landscape", + "extent": "full-screen", + "size": "1024x768", + "scale": "2x", + "idiom": "ipad" + }, + { + "orientation": "landscape", + "extent": "to-status-bar", + "size": "1024x748", + "scale": "1x", + "idiom": "ipad" + }, + { + "orientation": "landscape", + "extent": "to-status-bar", + "size": "1024x748", + "scale": "2x", + "idiom": "ipad" + } + ], + "info": { + "version": 1, + "author": "xcode" + } +} \ No newline at end of file diff --git a/samples/Basic/tvOS/SkiaSharpSample/Entitlements.plist b/samples/Basic/tvOS/SkiaSharpSample/Entitlements.plist new file mode 100644 index 00000000..9ae59937 --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/Entitlements.plist @@ -0,0 +1,6 @@ + + + + + + diff --git a/samples/Basic/tvOS/SkiaSharpSample/Info.plist b/samples/Basic/tvOS/SkiaSharpSample/Info.plist new file mode 100644 index 00000000..10d4abaa --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDisplayName + SkiaSharpSample + CFBundleName + SkiaSharpSample + CFBundleIdentifier + com.companyname.SkiaSharpSample + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1.0 + MinimumOSVersion + 10.0 + UIDeviceFamily + + 3 + + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + arm64 + + XSAppIconAssets + Assets.xcassets/App Icon & Top Shelf Image.brandassets + XSLaunchImageAssets + Assets.xcassets/LaunchImages.launchimage + + diff --git a/samples/Basic/tvOS/SkiaSharpSample/Main.cs b/samples/Basic/tvOS/SkiaSharpSample/Main.cs new file mode 100644 index 00000000..af61814a --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/Main.cs @@ -0,0 +1,12 @@ +using UIKit; + +namespace SkiaSharpSample +{ + public class Application + { + static void Main(string[] args) + { + UIApplication.Main(args, null, nameof(AppDelegate)); + } + } +} diff --git a/samples/Basic/tvOS/SkiaSharpSample/Main.storyboard b/samples/Basic/tvOS/SkiaSharpSample/Main.storyboard new file mode 100644 index 00000000..12a3bcdf --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/Main.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/Basic/tvOS/SkiaSharpSample/SkiaSharpSample.csproj b/samples/Basic/tvOS/SkiaSharpSample/SkiaSharpSample.csproj new file mode 100644 index 00000000..532f86d0 --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/SkiaSharpSample.csproj @@ -0,0 +1,142 @@ + + + + Debug + iPhoneSimulator + {66021FA3-47E9-4C76-904C-94A22C31FCBE} + {06FA79CB-D6CD-4721-BB4B-1BD202089C55};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Exe + SkiaSharpSample + SkiaSharpSample + Resources + + + true + full + false + bin\iPhoneSimulator\Debug + DEBUG; + prompt + 4 + iPhone Developer + true + true + true + true + 19489 + None + x86_64 + HttpClientHandler + false + + + + pdbonly + true + bin\iPhone\Release + + prompt + 4 + iPhone Developer + true + true + true + Entitlements.plist + SdkOnly + ARM64 + HttpClientHandler + + + + pdbonly + true + bin\iPhoneSimulator\Release + + prompt + 4 + iPhone Developer + true + None + x86_64 + HttpClientHandler + + + + true + full + false + bin\iPhone\Debug + DEBUG; + prompt + 4 + iPhone Developer + true + true + true + true + true + true + Entitlements.plist + 17830 + SdkOnly + ARM64 + HttpClientHandler + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ViewController.cs + + + + + + + + {5180E370-A455-42BB-99F9-97BD269B8A52} + SkiaSharp.tvOS + + + {E5973829-6C8B-43E4-B81B-C8492DF26C90} + SkiaSharp.Views.tvOS + + + + \ No newline at end of file diff --git a/samples/Basic/tvOS/SkiaSharpSample/ViewController.cs b/samples/Basic/tvOS/SkiaSharpSample/ViewController.cs new file mode 100644 index 00000000..3c4a7a57 --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/ViewController.cs @@ -0,0 +1,50 @@ +using System; +using UIKit; + +using SkiaSharp; +using SkiaSharp.Views.tvOS; + +namespace SkiaSharpSample +{ + public partial class ViewController : UIViewController + { + public ViewController(IntPtr handle) + : base(handle) + { + } + + public override void ViewDidLoad() + { + base.ViewDidLoad(); + + skiaView.PaintSurface += OnPaintSurface; + } + + 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)skiaView.ContentScaleFactor; + + // 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 = 48 + }; + var coord = new SKPoint((float)skiaView.Bounds.Width / 2, ((float)skiaView.Bounds.Height + paint.TextSize) / 2); + canvas.DrawText("SkiaSharp", coord, paint); + } + } +} diff --git a/samples/Basic/tvOS/SkiaSharpSample/ViewController.designer.cs b/samples/Basic/tvOS/SkiaSharpSample/ViewController.designer.cs new file mode 100644 index 00000000..4b26cdce --- /dev/null +++ b/samples/Basic/tvOS/SkiaSharpSample/ViewController.designer.cs @@ -0,0 +1,28 @@ +// WARNING +// +// This file has been generated automatically by Visual Studio from the outlets and +// actions declared in your storyboard file. +// Manual changes to this file will not be maintained. +// +using Foundation; +using System; +using System.CodeDom.Compiler; + +namespace SkiaSharpSample +{ + [Register ("ViewController")] + partial class ViewController + { + [Outlet] + [GeneratedCode ("iOS Designer", "1.0")] + SkiaSharp.Views.tvOS.SKCanvasView skiaView { get; set; } + + void ReleaseDesignerOutlets () + { + if (skiaView != null) { + skiaView.Dispose (); + skiaView = null; + } + } + } +} \ No newline at end of file