diff --git a/example/Thewissen.PancakeViewSample.Tizen/Thewissen.PancakeViewSample.Tizen.cs b/example/Thewissen.PancakeViewSample.Tizen/Thewissen.PancakeViewSample.Tizen.cs
new file mode 100644
index 0000000..cfc5f47
--- /dev/null
+++ b/example/Thewissen.PancakeViewSample.Tizen/Thewissen.PancakeViewSample.Tizen.cs
@@ -0,0 +1,25 @@
+using System;
+using Xamarin.Forms;
+
+namespace Thewissen.PancakeViewSample.Tizen
+{
+ class Program : global::Xamarin.Forms.Platform.Tizen.FormsApplication
+ {
+ protected override void OnCreate()
+ {
+ base.OnCreate();
+ ElmSharp.Utility.AppendGlobalFontPath(this.DirectoryInfo.Resource);
+ MainWindow.IndicatorMode = ElmSharp.IndicatorMode.Hide;
+ var app = new App();
+ app.MainPage.BackgroundColor = Color.White;
+ LoadApplication(app);
+ }
+
+ static void Main(string[] args)
+ {
+ var app = new Program();
+ Forms.Init(app, true);
+ app.Run(args);
+ }
+ }
+}
diff --git a/example/Thewissen.PancakeViewSample.Tizen/Thewissen.PancakeViewSample.Tizen.csproj b/example/Thewissen.PancakeViewSample.Tizen/Thewissen.PancakeViewSample.Tizen.csproj
new file mode 100644
index 0000000..5f842c4
--- /dev/null
+++ b/example/Thewissen.PancakeViewSample.Tizen/Thewissen.PancakeViewSample.Tizen.csproj
@@ -0,0 +1,25 @@
+
+
+
+ Exe
+ tizen40
+ true
+
+
+
+ portable
+
+
+ None
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/example/Thewissen.PancakeViewSample.Tizen/res/Lato-Bold.ttf b/example/Thewissen.PancakeViewSample.Tizen/res/Lato-Bold.ttf
new file mode 100644
index 0000000..7434369
Binary files /dev/null and b/example/Thewissen.PancakeViewSample.Tizen/res/Lato-Bold.ttf differ
diff --git a/example/Thewissen.PancakeViewSample.Tizen/res/Lato-Regular.ttf b/example/Thewissen.PancakeViewSample.Tizen/res/Lato-Regular.ttf
new file mode 100644
index 0000000..04ea8ef
Binary files /dev/null and b/example/Thewissen.PancakeViewSample.Tizen/res/Lato-Regular.ttf differ
diff --git a/example/Thewissen.PancakeViewSample.Tizen/res/monkey.png b/example/Thewissen.PancakeViewSample.Tizen/res/monkey.png
new file mode 100644
index 0000000..55faebf
Binary files /dev/null and b/example/Thewissen.PancakeViewSample.Tizen/res/monkey.png differ
diff --git a/example/Thewissen.PancakeViewSample.Tizen/res/pancake.png b/example/Thewissen.PancakeViewSample.Tizen/res/pancake.png
new file mode 100644
index 0000000..55a19e2
Binary files /dev/null and b/example/Thewissen.PancakeViewSample.Tizen/res/pancake.png differ
diff --git a/example/Thewissen.PancakeViewSample.Tizen/res/pancakes1.jpg b/example/Thewissen.PancakeViewSample.Tizen/res/pancakes1.jpg
new file mode 100644
index 0000000..13c88d7
Binary files /dev/null and b/example/Thewissen.PancakeViewSample.Tizen/res/pancakes1.jpg differ
diff --git a/example/Thewissen.PancakeViewSample.Tizen/res/pancakes2.jpg b/example/Thewissen.PancakeViewSample.Tizen/res/pancakes2.jpg
new file mode 100644
index 0000000..b5742a1
Binary files /dev/null and b/example/Thewissen.PancakeViewSample.Tizen/res/pancakes2.jpg differ
diff --git a/example/Thewissen.PancakeViewSample.Tizen/res/pancakes3.jpg b/example/Thewissen.PancakeViewSample.Tizen/res/pancakes3.jpg
new file mode 100644
index 0000000..70988aa
Binary files /dev/null and b/example/Thewissen.PancakeViewSample.Tizen/res/pancakes3.jpg differ
diff --git a/example/Thewissen.PancakeViewSample.Tizen/res/pancakes4.jpg b/example/Thewissen.PancakeViewSample.Tizen/res/pancakes4.jpg
new file mode 100644
index 0000000..0a837fa
Binary files /dev/null and b/example/Thewissen.PancakeViewSample.Tizen/res/pancakes4.jpg differ
diff --git a/example/Thewissen.PancakeViewSample.Tizen/res/xamalogo.png b/example/Thewissen.PancakeViewSample.Tizen/res/xamalogo.png
new file mode 100644
index 0000000..7ca86c6
Binary files /dev/null and b/example/Thewissen.PancakeViewSample.Tizen/res/xamalogo.png differ
diff --git a/example/Thewissen.PancakeViewSample.Tizen/shared/res/Thewissen.PancakeViewSample.Tizen.png b/example/Thewissen.PancakeViewSample.Tizen/shared/res/Thewissen.PancakeViewSample.Tizen.png
new file mode 100644
index 0000000..9f3cb98
Binary files /dev/null and b/example/Thewissen.PancakeViewSample.Tizen/shared/res/Thewissen.PancakeViewSample.Tizen.png differ
diff --git a/example/Thewissen.PancakeViewSample.Tizen/tizen-manifest.xml b/example/Thewissen.PancakeViewSample.Tizen/tizen-manifest.xml
new file mode 100644
index 0000000..f84f490
--- /dev/null
+++ b/example/Thewissen.PancakeViewSample.Tizen/tizen-manifest.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+ Thewissen.PancakeViewSample.Tizen.png
+
+
+
+
+
+
+
diff --git a/example/Thewissen.PancakeViewSample/Thewissen.PancakeViewSample.csproj b/example/Thewissen.PancakeViewSample/Thewissen.PancakeViewSample.csproj
index cae05e9..cf56e3c 100644
--- a/example/Thewissen.PancakeViewSample/Thewissen.PancakeViewSample.csproj
+++ b/example/Thewissen.PancakeViewSample/Thewissen.PancakeViewSample.csproj
@@ -10,7 +10,7 @@
-
+
runtime; build; native; contentfiles; analyzers; buildtransitive
all
diff --git a/src/Xamarin.Forms.PancakeView.Multi/Platforms/Tizen/DrawingExtensions.cs b/src/Xamarin.Forms.PancakeView.Multi/Platforms/Tizen/DrawingExtensions.cs
new file mode 100644
index 0000000..1682c3f
--- /dev/null
+++ b/src/Xamarin.Forms.PancakeView.Multi/Platforms/Tizen/DrawingExtensions.cs
@@ -0,0 +1,56 @@
+using System;
+using SkiaSharp;
+
+namespace Xamarin.Forms.PancakeView.Tizen
+{
+ public static class DrawingExtensions
+ {
+ static public SKPath CreateRoundedRectPath(int left, int top, int width, int height, CornerRadius cornerRadius)
+ {
+ var path = new SKPath();
+ var skRoundRect = new SKRoundRect(new SKRect(left, top, width, height));
+ SKPoint[] radii = new SKPoint[4]
+ {
+ new SKPoint((float)cornerRadius.TopLeft, (float)cornerRadius.TopLeft),
+ new SKPoint((float)cornerRadius.TopRight, (float)cornerRadius.TopRight),
+ new SKPoint((float)cornerRadius.BottomRight, (float)cornerRadius.BottomRight),
+ new SKPoint((float)cornerRadius.BottomLeft, (float)cornerRadius.BottomLeft)
+ };
+ skRoundRect.SetRectRadii(skRoundRect.Rect, radii);
+ path.AddRoundRect(skRoundRect);
+ path.Close();
+ return path;
+ }
+
+ public static SKPath CreatePolygonPath(float rectWidth, float rectHeight, int sides, double cornerRadius = 0.0, double rotationOffset = 0.0)
+ {
+ var offsetRadians = rotationOffset * Math.PI / 180;
+ var path = new SKPath();
+ var theta = 2 * Math.PI / sides;
+
+ var width = (-cornerRadius + Math.Min(rectWidth, rectHeight)) / 2;
+ var center = new Point(rectWidth / 2, rectHeight / 2);
+
+ var radius = width + cornerRadius - (Math.Cos(theta) * cornerRadius) / 2;
+
+ var angle = offsetRadians;
+ var corner = new Point(center.X + (radius - cornerRadius) * Math.Cos(angle), center.Y + (radius - cornerRadius) * Math.Sin(angle));
+ path.MoveTo((float)(corner.X + cornerRadius * Math.Cos(angle + theta)), (float)(corner.Y + cornerRadius * Math.Sin(angle + theta)));
+
+ for (var i = 0; i < sides; i++)
+ {
+ angle += theta;
+ corner = new Point(center.X + (radius - cornerRadius) * Math.Cos(angle), center.Y + (radius - cornerRadius) * Math.Sin(angle));
+ var tip = new Point(center.X + radius * Math.Cos(angle), center.Y + radius * Math.Sin(angle));
+ var start = new Point(corner.X + cornerRadius * Math.Cos(angle - theta), corner.Y + cornerRadius * Math.Sin(angle - theta));
+ var end = new Point(corner.X + cornerRadius * Math.Cos(angle + theta), corner.Y + cornerRadius * Math.Sin(angle + theta));
+
+ path.LineTo((float)start.X, (float)start.Y);
+ path.QuadTo((float)tip.X, (float)tip.Y, (float)end.X, (float)end.Y);
+ }
+
+ path.Close();
+ return path;
+ }
+ }
+}
diff --git a/src/Xamarin.Forms.PancakeView.Multi/Platforms/Tizen/Interop.cs b/src/Xamarin.Forms.PancakeView.Multi/Platforms/Tizen/Interop.cs
new file mode 100644
index 0000000..f9781fd
--- /dev/null
+++ b/src/Xamarin.Forms.PancakeView.Multi/Platforms/Tizen/Interop.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Runtime.InteropServices;
+
+namespace Xamarin.Forms.PancakeView.Tizen
+{
+ internal static class Interop
+ {
+ const string Evas = "libevas.so.1";
+
+ [DllImport(Evas)]
+ internal static extern void evas_object_clip_unset(IntPtr obj);
+ }
+}
diff --git a/src/Xamarin.Forms.PancakeView.Multi/Platforms/Tizen/PancakeViewRenderer.cs b/src/Xamarin.Forms.PancakeView.Multi/Platforms/Tizen/PancakeViewRenderer.cs
new file mode 100644
index 0000000..54ca2c2
--- /dev/null
+++ b/src/Xamarin.Forms.PancakeView.Multi/Platforms/Tizen/PancakeViewRenderer.cs
@@ -0,0 +1,283 @@
+using System;
+using System.ComponentModel;
+using System.Linq;
+using Xamarin.Forms;
+using Xamarin.Forms.Platform.Tizen;
+using Xamarin.Forms.Platform.Tizen.Native;
+using Xamarin.Forms.PancakeView.Tizen;
+using Controls = Xamarin.Forms.PancakeView;
+using SkiaSharp;
+using SkiaSharp.Views.Tizen;
+
+[assembly: ExportRenderer(typeof(Controls.PancakeView), typeof(PancakeViewRenderer))]
+namespace Xamarin.Forms.PancakeView.Tizen
+{
+ public class PancakeViewRenderer : LayoutRenderer
+ {
+ SKCanvasView _skCanvasView;
+
+ public PancakeViewRenderer() : base()
+ {
+ }
+
+ ///
+ /// This method ensures that we don't get stripped out by the linker.
+ ///
+ public static void Init()
+ {
+#pragma warning disable 0219
+ var ignore1 = typeof(PancakeViewRenderer);
+ var ignore2 = typeof(PancakeView);
+#pragma warning restore 0219
+ }
+
+ protected override void OnElementChanged(ElementChangedEventArgs e)
+ {
+ if (Control == null)
+ {
+ SetNativeControl(new Canvas(Forms.NativeParent));
+ _skCanvasView = new SKCanvasView(Forms.NativeParent);
+ _skCanvasView.PaintSurface += OnPaintSurface;
+ _skCanvasView.Show();
+ Control.Children.Add(_skCanvasView);
+ Interop.evas_object_clip_unset(_skCanvasView);
+ Control.LayoutUpdated += OnLayoutUpdated;
+ }
+ base.OnElementChanged(e);
+ }
+
+ protected override void Dispose(bool disposing)
+ {
+ base.Dispose(disposing);
+ if (disposing)
+ {
+ if (Control != null)
+ {
+ Control.LayoutUpdated -= OnLayoutUpdated;
+ }
+ if (_skCanvasView != null)
+ {
+ _skCanvasView.PaintSurface -= OnPaintSurface;
+ _skCanvasView.Unrealize();
+ _skCanvasView = null;
+ }
+ }
+ }
+
+ protected override void UpdateBackgroundColor(bool initialize)
+ {
+ if(!initialize)
+ {
+ Invalidate();
+ }
+ }
+
+ protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
+ {
+ base.OnElementPropertyChanged(sender, e);
+
+ if (e.PropertyName == PancakeView.BorderProperty.PropertyName ||
+ e.PropertyName == PancakeView.CornerRadiusProperty.PropertyName ||
+ e.PropertyName == PancakeView.OffsetAngleProperty.PropertyName ||
+ e.PropertyName == PancakeView.SidesProperty.PropertyName ||
+ e.PropertyName == PancakeView.BackgroundGradientStopsProperty.PropertyName ||
+ e.PropertyName == PancakeView.BackgroundGradientStartPointProperty.PropertyName ||
+ e.PropertyName == PancakeView.BackgroundGradientEndPointProperty.PropertyName)
+ {
+ Invalidate();
+ }
+ else if (e.PropertyName == PancakeView.ShadowProperty.PropertyName)
+ {
+ UpdateCanvasGeometry();
+ Invalidate();
+ }
+ }
+
+ private void OnLayoutUpdated(object sender, LayoutEventArgs e)
+ {
+ UpdateCanvasGeometry();
+ }
+
+ private void UpdateCanvasGeometry()
+ {
+ var pancake = Element as PancakeView;
+ if (pancake.Shadow != null)
+ {
+ double left = 0;
+ double top = 0;
+ double right = 0;
+ double bottom = 0;
+ var scaledOffsetX = Forms.ConvertToScaledPixel(pancake.Shadow.Offset.X);
+ var scaledOffsetY = Forms.ConvertToScaledPixel(pancake.Shadow.Offset.Y);
+ var scaledBlurRadius = Forms.ConvertToScaledPixel(pancake.Shadow.BlurRadius);
+ var spreadSize = scaledBlurRadius * 2 + scaledBlurRadius;
+ var sl = scaledOffsetX - spreadSize;
+ var sr = scaledOffsetX + spreadSize;
+ var st = scaledOffsetY - spreadSize;
+ var sb = scaledOffsetY + spreadSize;
+ if (left > sl) left = sl;
+ if (top > st) top = st;
+ if (right < sr) right = sr;
+ if (bottom < sb) bottom = sb;
+
+ var geometry = Control.Geometry;
+ _skCanvasView.Geometry = new ElmSharp.Rect(geometry.X + (int)left, geometry.Y + (int)top, geometry.Width + (int)right - (int)left, geometry.Height + (int)bottom - (int)top);
+ }
+ else
+ {
+ _skCanvasView.Geometry = Control.Geometry;
+ }
+ }
+
+ private void OnPaintSurface(object sender, SKPaintSurfaceEventArgs e)
+ {
+ var surface = e.Surface;
+ var canvas = surface.Canvas;
+ canvas.Clear();
+ DrawShadow(canvas);
+ DrawBackground(canvas);
+ DrawBorder(canvas);
+ }
+
+ private void DrawShadow(SKCanvas canvas)
+ {
+ var pancake = Element as PancakeView;
+ if (pancake.Shadow != null)
+ {
+ SKPath path;
+ if (pancake.Sides != 4)
+ {
+ path = DrawingExtensions.CreatePolygonPath(Control.Geometry.Width, Control.Geometry.Height,
+ pancake.Sides, pancake.CornerRadius.TopLeft, pancake.OffsetAngle);
+ }
+ else
+ {
+ var left = Control.Geometry.Left - _skCanvasView.Geometry.Left;
+ var top = Control.Geometry.Top - _skCanvasView.Geometry.Top;
+ path = DrawingExtensions.CreateRoundedRectPath(left, top, left + Control.Geometry.Width, top + Control.Geometry.Height, pancake.CornerRadius);
+ }
+
+ using (var paint = new SKPaint())
+ {
+ paint.IsAntialias = true;
+ paint.Style = SKPaintStyle.StrokeAndFill;
+
+ var shadow = pancake.Shadow;
+ var scaledOffsetX = Forms.ConvertToScaledPixel(shadow.Offset.X);
+ var scaledOffsetY = Forms.ConvertToScaledPixel(shadow.Offset.Y);
+ var scaledBlurRadius = Forms.ConvertToScaledPixel(shadow.BlurRadius);
+
+ canvas.Save();
+ canvas.ClipPath(path, SKClipOperation.Difference, true);
+ paint.ImageFilter = SKImageFilter.CreateDropShadow(
+ scaledOffsetX,
+ scaledOffsetY,
+ scaledBlurRadius,
+ scaledBlurRadius,
+ shadow.Color.MultiplyAlpha(shadow.Opacity).ToNative().ToSKColor(),
+ SKDropShadowImageFilterShadowMode.DrawShadowOnly);
+ canvas.DrawPath(path, paint);
+ canvas.Restore();
+
+ canvas.Save();
+ canvas.ClipPath(path, SKClipOperation.Intersect, true);
+ canvas.DrawPath(path, paint);
+ canvas.Restore();
+ }
+ }
+ }
+
+ private void DrawBackground(SKCanvas canvas)
+ {
+ using (var paint = new SKPaint())
+ {
+ paint.Style = SKPaintStyle.Fill;
+ paint.IsAntialias = true;
+
+ var pancake = Element as PancakeView;
+ SKPath path;
+ if (pancake.Sides != 4)
+ {
+ path = DrawingExtensions.CreatePolygonPath(Control.Geometry.Width, Control.Geometry.Height,
+ pancake.Sides, pancake.CornerRadius.TopLeft, pancake.OffsetAngle);
+ }
+ else
+ {
+ var left = Control.Geometry.Left - _skCanvasView.Geometry.Left;
+ var top = Control.Geometry.Top - _skCanvasView.Geometry.Top;
+ path = DrawingExtensions.CreateRoundedRectPath(left, top, left + Control.Geometry.Width, top + Control.Geometry.Height, pancake.CornerRadius);
+ }
+
+ if (pancake.BackgroundGradientStops != null && pancake.BackgroundGradientStops.Any())
+ {
+ var orderedStops = pancake.BackgroundGradientStops.OrderBy(x => x.Offset).ToList();
+ var gradientColors = orderedStops.Select(x => x.Color.ToNative().ToSKColor()).ToArray();
+ var gradientColorPos = orderedStops.Select(x => x.Offset).ToArray();
+ var startPoint = new SKPoint((float)(pancake.BackgroundGradientStartPoint.X * Control.Geometry.Width), (float)(pancake.BackgroundGradientStartPoint.Y * Control.Geometry.Height));
+ var endPoint = new SKPoint((float)(pancake.BackgroundGradientEndPoint.X * Control.Geometry.Width), (float)(pancake.BackgroundGradientEndPoint.Y * Control.Geometry.Height));
+ paint.Shader = SKShader.CreateLinearGradient(startPoint, endPoint, gradientColors, gradientColorPos, SKShaderTileMode.Clamp);
+ }
+ else
+ {
+ paint.Color = pancake.BackgroundColor.ToNative().ToSKColor();
+ }
+ canvas.ClipPath(path, SKClipOperation.Intersect, true);
+ canvas.DrawPath(path, paint);
+ }
+ }
+
+ private void DrawBorder(SKCanvas canvas)
+ {
+ var pancake = Element as PancakeView;
+ if (pancake.Border != null && pancake.Border.Thickness != default)
+ {
+ using (var paint = new SKPaint())
+ {
+ var border = pancake.Border;
+ paint.Style = SKPaintStyle.Stroke;
+ paint.Color = border.Color.ToNative().ToSKColor();
+ paint.StrokeWidth = Forms.ConvertToScaledPixel(border.Thickness);
+ paint.IsAntialias = true;
+
+ SKPath path;
+ if (pancake.Sides != 4)
+ {
+ path = DrawingExtensions.CreatePolygonPath(Control.Geometry.Width, Control.Geometry.Height,
+ pancake.Sides, pancake.CornerRadius.TopLeft, pancake.OffsetAngle);
+ }
+ else
+ {
+ var left = Control.Geometry.Left - _skCanvasView.Geometry.Left;
+ var top = Control.Geometry.Top - _skCanvasView.Geometry.Top;
+ path = DrawingExtensions.CreateRoundedRectPath(left, top, left + Control.Geometry.Width, top + Control.Geometry.Height, pancake.CornerRadius);
+ }
+
+ if (border.DashPattern.Pattern != null && border.DashPattern.Pattern.Length > 0)
+ {
+ var dashPattern = border.DashPattern.Pattern;
+ float[] patternInFloat = new float[dashPattern.Length];
+ patternInFloat = Array.ConvertAll(dashPattern, item => (float)item);
+ paint.PathEffect = SKPathEffect.CreateDash(patternInFloat, 0);
+ }
+
+ if (border.GradientStops != null && border.GradientStops.Any())
+ {
+ var startPoint = new SKPoint((float)(border.GradientStartPoint.X * Control.Geometry.Width), (float)(border.GradientStartPoint.Y * Control.Geometry.Height));
+ var endPoint = new SKPoint((float)(border.GradientEndPoint.X * Control.Geometry.Width), (float)(border.GradientEndPoint.Y * Control.Geometry.Height));
+ var orderedStops = border.GradientStops.OrderBy(x => x.Offset).ToList();
+ var gradientColors = orderedStops.Select(x => x.Color.ToNative().ToSKColor()).ToArray();
+ var gradientColorPos = orderedStops.Select(x => x.Offset).ToArray();
+ paint.Shader = SKShader.CreateLinearGradient(startPoint, endPoint, gradientColors, gradientColorPos, SKShaderTileMode.Clamp);
+ }
+ canvas.ClipPath(path, SKClipOperation.Intersect, true);
+ canvas.DrawPath(path, paint);
+ }
+ }
+ }
+
+ private void Invalidate()
+ {
+ _skCanvasView.Invalidate();
+ }
+ }
+}
diff --git a/src/Xamarin.Forms.PancakeView.Multi/Xamarin.Forms.PancakeView.Multi.csproj b/src/Xamarin.Forms.PancakeView.Multi/Xamarin.Forms.PancakeView.Multi.csproj
index dff30a3..8a665cc 100644
--- a/src/Xamarin.Forms.PancakeView.Multi/Xamarin.Forms.PancakeView.Multi.csproj
+++ b/src/Xamarin.Forms.PancakeView.Multi/Xamarin.Forms.PancakeView.Multi.csproj
@@ -1,8 +1,9 @@
- netstandard1.0;netstandard2.0;Xamarin.iOS10;xamarin.mac20;MonoAndroid90
- netstandard1.0;netstandard2.0;Xamarin.iOS10;MonoAndroid90;uap10.0.16299;NET461
+ netstandard1.0;netstandard2.0;Xamarin.iOS10;xamarin.mac20;MonoAndroid90;tizen40
+ netstandard1.0;netstandard2.0;Xamarin.iOS10;MonoAndroid90;uap10.0.16299;NET461;tizen40
+
Xamarin.Forms.PancakeView
Xamarin.Forms.PancakeView
@@ -53,7 +54,8 @@
-
+
+
@@ -94,5 +96,9 @@
-->
+
+
+
+
\ No newline at end of file
diff --git a/src/Xamarin.Forms.PancakeView.sln b/src/Xamarin.Forms.PancakeView.sln
index 2521689..7bca4c1 100644
--- a/src/Xamarin.Forms.PancakeView.sln
+++ b/src/Xamarin.Forms.PancakeView.sln
@@ -8,7 +8,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Source", "Source", "{DB2232
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Thewissen.PancakeViewSample.Android", "..\example\Thewissen.PancakeViewSample.Android\Thewissen.PancakeViewSample.Android.csproj", "{03BBFF5A-C44F-4BD6-A3DA-82E075C1FAEA}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Thewissen.PancakeViewSample", "..\example\Thewissen.PancakeViewSample\Thewissen.PancakeViewSample.csproj", "{ABE29A80-FFA3-40E7-B8C4-87D5D6B1C8C1}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Thewissen.PancakeViewSample", "..\example\Thewissen.PancakeViewSample\Thewissen.PancakeViewSample.csproj", "{ABE29A80-FFA3-40E7-B8C4-87D5D6B1C8C1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Thewissen.PancakeViewSample.iOS", "..\example\Thewissen.PancakeViewSample.iOS\Thewissen.PancakeViewSample.iOS.csproj", "{E5784030-B7B9-4567-BC71-9086B9FA3FDE}"
EndProject
@@ -18,7 +18,9 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Thewissen.PancakeViewSample
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Thewissen.PancakeViewSample.macOS", "..\example\Thewissen.PancakeViewSample.macOS\Thewissen.PancakeViewSample.macOS.csproj", "{0C515BB1-FBC2-42E0-97D0-3726F952FE0A}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.Forms.PancakeView.Multi", "Xamarin.Forms.PancakeView.Multi\Xamarin.Forms.PancakeView.Multi.csproj", "{B178CFA1-03F5-45F0-ACDC-33149B2D4631}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.Forms.PancakeView.Multi", "Xamarin.Forms.PancakeView.Multi\Xamarin.Forms.PancakeView.Multi.csproj", "{B178CFA1-03F5-45F0-ACDC-33149B2D4631}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Thewissen.PancakeViewSample.Tizen", "..\example\Thewissen.PancakeViewSample.Tizen\Thewissen.PancakeViewSample.Tizen.csproj", "{7A4B7977-1B25-419A-8650-8585FD905704}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -398,6 +400,54 @@ Global
{B178CFA1-03F5-45F0-ACDC-33149B2D4631}.Release|x64.Build.0 = Release|Any CPU
{B178CFA1-03F5-45F0-ACDC-33149B2D4631}.Release|x86.ActiveCfg = Release|Any CPU
{B178CFA1-03F5-45F0-ACDC-33149B2D4631}.Release|x86.Build.0 = Release|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.AppStore|ARM.ActiveCfg = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.AppStore|ARM.Build.0 = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.AppStore|x64.ActiveCfg = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.AppStore|x64.Build.0 = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.AppStore|x86.ActiveCfg = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.AppStore|x86.Build.0 = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Debug|ARM.Build.0 = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Debug|x64.Build.0 = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Debug|x86.Build.0 = Debug|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Release|ARM.ActiveCfg = Release|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Release|ARM.Build.0 = Release|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Release|iPhone.Build.0 = Release|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Release|x64.ActiveCfg = Release|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Release|x64.Build.0 = Release|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Release|x86.ActiveCfg = Release|Any CPU
+ {7A4B7977-1B25-419A-8650-8585FD905704}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -410,6 +460,7 @@ Global
{D9038F52-052B-4BA4-996B-5E1A073E3D6E} = {BA8C912C-D3EF-4D6A-BC69-16F090E4B883}
{0C515BB1-FBC2-42E0-97D0-3726F952FE0A} = {BA8C912C-D3EF-4D6A-BC69-16F090E4B883}
{B178CFA1-03F5-45F0-ACDC-33149B2D4631} = {DB2232B2-90AB-47FF-93B1-1E2BF0BCF26C}
+ {7A4B7977-1B25-419A-8650-8585FD905704} = {BA8C912C-D3EF-4D6A-BC69-16F090E4B883}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {561CF308-A484-4BB3-8BF9-89B0BF76F460}