Skip to content
This repository was archived by the owner on May 1, 2024. It is now read-only.

Multi Target UWP to 1809 and 2004 #1247

Closed
wants to merge 43 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
42e432b
Update Xamarin.CommunityToolkit.csproj
inforithmics Apr 29, 2021
00025aa
Update Xamarin.CommunityToolkit.csproj
inforithmics Apr 29, 2021
9930896
Reflection for Transparent Background
inforithmics Apr 29, 2021
6327099
Fix build
inforithmics Apr 29, 2021
c5c8aa2
Revert Sdk.extras upgrade
inforithmics Apr 29, 2021
e85895d
Fixed Native Compilation Crash in Popup
inforithmics Apr 30, 2021
902d6e7
Merge branch 'main' into MultiTargetUWP
jsuarezruiz May 3, 2021
d5e6780
Merge branch 'main' into MultiTargetUWP
jsuarezruiz May 10, 2021
2d459b8
Update PlatformShadowEffect.uwp.cs
inforithmics May 11, 2021
c3ab6f8
Merge branch 'main' into MultiTargetUWP
jsuarezruiz May 25, 2021
388e7c2
Revert "Fixed Native Compilation Crash in Popup"
inforithmics Jun 10, 2021
0dcdc03
Merge branch 'main' into MultiTargetUWP
inforithmics Jul 7, 2021
30987bc
Merge branch 'main' into MultiTargetUWP
pictos Jul 13, 2021
d97ce60
Merge branch 'main' into MultiTargetUWP
inforithmics Jul 16, 2021
942f4e3
Merge branch 'main' into MultiTargetUWP
inforithmics Aug 7, 2021
46eac20
Merge branch 'main' into MultiTargetUWP
inforithmics Aug 12, 2021
edd98bc
Merge branch 'main' into MultiTargetUWP
inforithmics Aug 17, 2021
4022186
Merge branch 'main' into MultiTargetUWP
inforithmics Aug 19, 2021
e63451f
Merge branch 'main' into MultiTargetUWP
inforithmics Aug 27, 2021
b0cae13
Merge branch 'main' into MultiTargetUWP
inforithmics Aug 31, 2021
674f942
Merge branch 'main' into MultiTargetUWP
inforithmics Sep 28, 2021
4f58770
Merge branch 'main' into MultiTargetUWP
inforithmics Oct 14, 2021
d6409f7
Fixed Compilation
inforithmics Oct 25, 2021
94c682d
Merge branch 'main' into MultiTargetUWP
inforithmics Oct 25, 2021
f40415a
Update DrawingViewService.macos.cs
inforithmics Oct 25, 2021
fcfb246
Update DrawingViewService.macos.cs
inforithmics Oct 25, 2021
f2f95a6
Update DrawingViewService.macos.cs
inforithmics Oct 25, 2021
37ebb53
Update DrawingViewService.macos.cs
inforithmics Oct 25, 2021
323a03f
Update DrawingViewService.macos.cs
inforithmics Oct 25, 2021
54562c3
Update DrawingViewService.macos.cs
inforithmics Oct 25, 2021
6c54101
Merge branch 'main' into MultiTargetUWP
inforithmics Nov 9, 2021
b031e2e
Merge branch 'main' into MultiTargetUWP
inforithmics Nov 11, 2021
0ec4628
Merge branch 'main' into MultiTargetUWP
inforithmics Nov 15, 2021
3e4a68c
Merge branch 'main' into MultiTargetUWP
inforithmics Nov 18, 2021
7747afa
Merge branch 'main' into MultiTargetUWP
jsuarezruiz Nov 25, 2021
fd0e7c8
Merge branch 'main' into MultiTargetUWP
inforithmics Nov 28, 2021
95aff8b
Merge branch 'main' into MultiTargetUWP
inforithmics Dec 5, 2021
1e5bcd4
Merge branch 'main' into MultiTargetUWP
inforithmics Dec 19, 2021
80d4c32
Merge branch 'main' into MultiTargetUWP
inforithmics Dec 21, 2021
8062cd4
Merge branch 'main' into MultiTargetUWP
inforithmics Dec 24, 2021
739fb8c
Merge branch 'main' into MultiTargetUWP
inforithmics Dec 29, 2021
751b508
Merge branch 'main' into MultiTargetUWP
inforithmics Jan 1, 2022
aded64d
Merge branch 'main' into MultiTargetUWP
inforithmics Jan 5, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,11 @@ void AppendShadow()
UpdateShadow();
spriteVisual = compositor.CreateSpriteVisual();
spriteVisual.Shadow = shadow;
#if UWP_18362
spriteVisual.Size = View.ActualSize;
#else
spriteVisual.Size = new Vector2(Convert.ToSingle(View.ActualWidth), Convert.ToSingle(View.ActualHeight));
#endif

View.SizeChanged += ViewSizeChanged;

Expand Down Expand Up @@ -200,8 +204,11 @@ void ViewSizeChanged(object sender, SizeChangedEventArgs e)
{
if (spriteVisual == null || View == null)
return;

#if UWP_18362
spriteVisual.Size = View.ActualSize;
#else
spriteVisual.Size = new Vector2(Convert.ToSingle(View.ActualWidth), Convert.ToSingle(View.ActualHeight));
#endif

UpdateShadowMask();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
using System;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using AppKit;
using CoreGraphics;
using Xamarin.Forms;
using Xamarin.Forms.Platform.MacOS;

namespace Xamarin.CommunityToolkit.UI.Views
{
static class DrawingViewService
Expand All @@ -19,16 +18,13 @@ public static Stream GetImageStream(IList<Line>? lines,
{
return Stream.Null;
}

var image = GetImageInternal(lines, backgroundColor);
if (image is null)
{
return Stream.Null;
}

return image.AsTiff()?.AsStream() ?? Stream.Null;
}

/// <summary>
/// Get image stream from points
/// </summary>
Expand All @@ -48,16 +44,13 @@ public static Stream GetImageStream(IList<Point>? points,
{
return Stream.Null;
}

var image = GetImageInternal(points, lineWidth, strokeColor, backgroundColor);
if (image is null)
{
return Stream.Null;
}

return image.AsTiff()?.AsStream() ?? Stream.Null;
}

static NSImage? GetImageInternal(IList<Point> points,
float lineWidth,
Color strokeColor,
Expand All @@ -72,30 +65,24 @@ public static Stream GetImageStream(IList<Point>? points,
{
return null;
}

var imageSize = new CGSize(drawingWidth, drawingHeight);

using var context = new CGBitmapContext(IntPtr.Zero, (nint)drawingWidth, (nint)drawingHeight, 8,
(nint)drawingWidth * 4,
NSColorSpace.GenericRGBColorSpace.ColorSpace,
CGImageAlphaInfo.PremultipliedFirst);
context.SetFillColor(backgroundColor.ToCGColor());
context.FillRect(new CGRect(CGPoint.Empty, imageSize));

context.SetStrokeColor(strokeColor.ToCGColor());
context.SetLineWidth(lineWidth);
context.SetLineCap(CGLineCap.Round);
context.SetLineJoin(CGLineJoin.Round);

context.AddLines(points.Select(p => new CGPoint(p.X - minPointX, p.Y - minPointY)).ToArray());
context.StrokePath();

using var cgImage = context.ToImage() ?? throw new InvalidOperationException("Image Cannot be null");
NSImage image = new(cgImage, imageSize);

return image;
}

static NSImage? GetImageInternal(IList<Line> lines,
Color backgroundColor)
{
Expand All @@ -107,34 +94,28 @@ public static Stream GetImageStream(IList<Point>? points,
const int minSize = 1;
if (drawingWidth < minSize || drawingHeight < minSize)
return null;

var imageSize = new CGSize(drawingWidth, drawingHeight);

using var context = new CGBitmapContext(IntPtr.Zero, (nint)drawingWidth, (nint)drawingHeight, 8,
(nint)drawingWidth * 4,
NSColorSpace.GenericRGBColorSpace.ColorSpace,
CGImageAlphaInfo.PremultipliedFirst);
context.SetFillColor(backgroundColor.ToCGColor());
context.FillRect(new CGRect(CGPoint.Empty, imageSize));

foreach (var line in lines)
{
context.SetStrokeColor(line.LineColor.ToCGColor());
context.SetLineWidth(line.LineWidth);
context.SetLineCap(CGLineCap.Round);
context.SetLineJoin(CGLineJoin.Round);

var startPoint = line.Points.First();
context.MoveTo((float)startPoint.X, (float)startPoint.Y);
context.AddLines(line.Points.Select(p => new CGPoint(p.X - minPointX, p.Y - minPointY)).ToArray());
}

context.StrokePath();

using var cgImage = context.ToImage() ?? throw new InvalidOperationException("Image Cannot Be Null");
NSImage image = new(cgImage, imageSize);

return image;
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
using System;
using System.ComponentModel;
using System.Reflection;
using Windows.Foundation.Metadata;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
Expand Down Expand Up @@ -175,10 +177,23 @@ void SetColor()

flyoutStyle.Setters.Add(new Windows.UI.Xaml.Setter(FlyoutPresenter.BackgroundProperty, Element.Color.ToWindowsColor()));

#if UWP_18362
if (Element.Color == Color.Transparent)
{
#if UWP_18362
flyoutStyle.Setters.Add(new Windows.UI.Xaml.Setter(FlyoutPresenter.IsDefaultShadowEnabledProperty, false));
#else
const string isDefaultShadowEnabledProperty = "IsDefaultShadowEnabledProperty";

if (ApiInformation.IsPropertyPresent(typeof(FlyoutPresenter).FullName, isDefaultShadowEnabledProperty))
{
var property = typeof(FlyoutPresenter).GetProperty(isDefaultShadowEnabledProperty, BindingFlags.Static | BindingFlags.Public);
if (property?.GetValue(null) is DependencyProperty enabledProperty)
{
flyoutStyle.Setters.Add(new Windows.UI.Xaml.Setter(enabledProperty,false));
}
}
#endif
}
}

void ApplyStyles()
Expand All @@ -192,13 +207,13 @@ void Show()
{
if (Element?.Anchor != null)
{
var anchor = Platform.GetRenderer(Element.Anchor).ContainerElement;
var anchor = Forms.Platform.UWP.Platform.GetRenderer(Element.Anchor).ContainerElement;
FlyoutBase.SetAttachedFlyout(anchor, this);
FlyoutBase.ShowAttachedFlyout(anchor);
}
else
{
var frameworkElement = Platform.GetRenderer(Element?.Parent as VisualElement)?.ContainerElement;
var frameworkElement = Forms.Platform.UWP.Platform.GetRenderer(Element?.Parent as VisualElement)?.ContainerElement;
FlyoutBase.SetAttachedFlyout(frameworkElement, this);
FlyoutBase.ShowAttachedFlyout(frameworkElement);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<Project Sdk="MSBuild.Sdk.Extras/2.1.2">
<PropertyGroup>
<TargetFrameworks>netstandard1.0;netstandard2.0;netstandard2.1;Xamarin.iOS10;MonoAndroid10.0;Xamarin.TVOS10;Xamarin.WatchOS10;Xamarin.Mac20;tizen40</TargetFrameworks>
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">$(TargetFrameworks);uap10.0.19041;netcoreapp3.1;net472;net471</TargetFrameworks>
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">$(TargetFrameworks);uap10.0.17763;uap10.0.19041;netcoreapp3.1;net472;net471</TargetFrameworks>
<AssemblyName>Xamarin.CommunityToolkit</AssemblyName>
<RootNamespace>Xamarin.CommunityToolkit</RootNamespace>
<PackageId>Xamarin.CommunityToolkit</PackageId>
Expand Down Expand Up @@ -53,11 +53,14 @@
<PropertyGroup Condition=" '$(TargetFramework)' == 'uap10.0.16299' ">
<DefineConstants>$(DefineConstants);UWP_16299;UWP_14393</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(TargetFramework)' == 'uap10.0.17763' ">
<DefineConstants>$(DefineConstants);UWP_17763;UWP_16299;UWP_14393</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(TargetFramework)' == 'uap10.0.18362' ">
<DefineConstants>$(DefineConstants);UWP_18362;UWP_16299;UWP_14393</DefineConstants>
<DefineConstants>$(DefineConstants);UWP_18362;UWP_17763;UWP_16299;UWP_14393</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(TargetFramework)' == 'uap10.0.19041' ">
<DefineConstants>$(DefineConstants);UWP_19041;UWP_18362;UWP_16299;UWP_14393</DefineConstants>
<DefineConstants>$(DefineConstants);UWP_19041;UWP_18362;UWP_17763;UWP_16299;UWP_14393</DefineConstants>
</PropertyGroup>
<ItemGroup>
<Compile Include="**/*.shared.cs" />
Expand Down