From 79c7241da827166dc6cea6be1c3bddeae1f1c3f4 Mon Sep 17 00:00:00 2001
From: Jesse Bishop <16565497+jesbis@users.noreply.github.com>
Date: Sat, 11 Jan 2020 14:13:06 -0800
Subject: [PATCH 1/3] RadialGradientBrush Initial Commit (#1)
Initial commit of basic RadialGradientBrush implementation
---
FeatureAreas.props | 2 +
InnerLoopAreas.props | 2 +-
MUXControls.sln | 20 +-
MUXControlsInnerLoop.sln | 25 +-
.../RadialGradientBrush.properties.cpp | 183 +++++++++++++
.../RadialGradientBrush.properties.h | 61 +++++
.../RadialGradientBrushTests.cs | 119 ++++++++
...alGradientBrush_InteractionTests.projitems | 15 ++
...adialGradientBrush_InteractionTests.shproj | 14 +
.../RadialGradientBrush.cpp | 241 +++++++++++++++++
dev/RadialGradientBrush/RadialGradientBrush.h | 48 ++++
.../RadialGradientBrush.idl | 37 +++
.../RadialGradientBrush.vcxitems | 27 ++
.../TestUI/RadialGradientBrushPage.xaml | 133 +++++++++
.../TestUI/RadialGradientBrushPage.xaml.cs | 254 ++++++++++++++++++
.../RadialGradientBrush_TestUI.projitems | 23 ++
.../TestUI/RadialGradientBrush_TestUI.shproj | 14 +
dev/Telemetry/RuntimeProfiler.h | 4 +-
dev/dll/Microsoft.UI.Xaml.vcxproj | 1 +
dev/dll/SharedHelpers.cpp | 6 +
dev/inc/CppWinRTIncludes.h | 4 +-
dev/inc/SharedHelpers.h | 2 +
.../MUXControls.Test.Shared.targets | 1 +
.../MUXControlsTestApp.Shared.targets | 1 +
24 files changed, 1226 insertions(+), 11 deletions(-)
create mode 100644 dev/Generated/RadialGradientBrush.properties.cpp
create mode 100644 dev/Generated/RadialGradientBrush.properties.h
create mode 100644 dev/RadialGradientBrush/InteractionTests/RadialGradientBrushTests.cs
create mode 100644 dev/RadialGradientBrush/InteractionTests/RadialGradientBrush_InteractionTests.projitems
create mode 100644 dev/RadialGradientBrush/InteractionTests/RadialGradientBrush_InteractionTests.shproj
create mode 100644 dev/RadialGradientBrush/RadialGradientBrush.cpp
create mode 100644 dev/RadialGradientBrush/RadialGradientBrush.h
create mode 100644 dev/RadialGradientBrush/RadialGradientBrush.idl
create mode 100644 dev/RadialGradientBrush/RadialGradientBrush.vcxitems
create mode 100644 dev/RadialGradientBrush/TestUI/RadialGradientBrushPage.xaml
create mode 100644 dev/RadialGradientBrush/TestUI/RadialGradientBrushPage.xaml.cs
create mode 100644 dev/RadialGradientBrush/TestUI/RadialGradientBrush_TestUI.projitems
create mode 100644 dev/RadialGradientBrush/TestUI/RadialGradientBrush_TestUI.shproj
diff --git a/FeatureAreas.props b/FeatureAreas.props
index 3ece5c4764..11f614c04e 100644
--- a/FeatureAreas.props
+++ b/FeatureAreas.props
@@ -62,6 +62,7 @@
false
false
false
+ true
@@ -119,6 +120,7 @@
true
true
true
+ true
$(DefineConstants);FEATURE_SCROLLER_ENABLED
diff --git a/InnerLoopAreas.props b/InnerLoopAreas.props
index 2581eb8871..05628484d9 100644
--- a/InnerLoopAreas.props
+++ b/InnerLoopAreas.props
@@ -3,6 +3,6 @@
- true
+ true
diff --git a/MUXControls.sln b/MUXControls.sln
index 49f952c544..322d6b8101 100644
--- a/MUXControls.sln
+++ b/MUXControls.sln
@@ -622,6 +622,14 @@ Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "ProgressRing_TestUI", "dev\
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.UI.Xaml.FrameworkPackagePRI", "dev\Microsoft.UI.Xaml.FrameworkPackagePRI\Microsoft.UI.Xaml.FrameworkPackagePRI.csproj", "{9638BF0D-2AA8-4642-A9F1-790BF7FBECF2}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "RadialGradientBrush", "RadialGradientBrush", "{0115F80C-AB97-412D-85D9-33A5188F8907}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RadialGradientBrush", "dev\RadialGradientBrush\RadialGradientBrush.vcxitems", "{8B056B8F-C1AB-4A80-BD17-DEACE9897E6A}"
+EndProject
+Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "RadialGradientBrush_TestUI", "dev\RadialGradientBrush\TestUI\RadialGradientBrush_TestUI.shproj", "{AE308818-AF18-48BA-BF33-89779083D297}"
+EndProject
+Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "RadialGradientBrush_InteractionTests", "dev\RadialGradientBrush\InteractionTests\RadialGradientBrush_InteractionTests.shproj", "{74D18B1B-5F6B-4534-945B-131E8E3206FB}"
+EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
dev\ComboBox\ComboBox.vcxitems*{00523caf-422a-4185-9392-d374b72a019a}*SharedItemsImports = 9
@@ -721,6 +729,7 @@ Global
dev\ProgressRing\ProgressRing.vcxitems*{64447efa-19b4-4bf2-9d63-618635c483ec}*SharedItemsImports = 9
dev\RatingControl\RatingControl.vcxitems*{655f5da8-f87b-45af-88d1-a884881c3edf}*SharedItemsImports = 9
test\MUXControlsTestApp\MUXControlsTestApp.Shared.projitems*{6aa772a6-cbf7-4ff3-8864-bc9366015dc2}*SharedItemsImports = 13
+ dev\RadialGradientBrush\InteractionTests\RadialGradientBrush_InteractionTests.projitems*{74d18b1b-5f6b-4534-945b-131e8e3206fb}*SharedItemsImports = 13
dev\CommonManaged\CommonManaged.projitems*{74f24bc4-794d-4cb2-8420-80ff7fdacfe9}*SharedItemsImports = 4
dev\ScrollViewer\ScrollViewer.vcxitems*{755f5da9-087c-55a0-98d2-b884881c3ed0}*SharedItemsImports = 9
dev\NumberBox\InteractionTests\NumberBox_InteractionTests.projitems*{773f7592-e7b3-42fc-a14a-e815afd6a0cb}*SharedItemsImports = 13
@@ -736,6 +745,7 @@ Global
dev\PullToRefresh\PTRTracing\PTRTracing.vcxitems*{890a5548-0515-4099-b526-0539fe9a0376}*SharedItemsImports = 9
dev\RadioMenuFlyoutItem\InteractionTests\RadioMenuFlyoutItem_InteractionTests.projitems*{89ec8d06-ca59-49a9-aefe-32dcc9dd8020}*SharedItemsImports = 13
dev\PersonPicture\TestUI\PersonPicture_TestUI.projitems*{8a1690fb-aa8c-461a-840c-89cdbb44bdba}*SharedItemsImports = 13
+ dev\RadialGradientBrush\RadialGradientBrush.vcxitems*{8b056b8f-c1ab-4a80-bd17-deace9897e6a}*SharedItemsImports = 9
dev\MenuBar\MenuBar.vcxitems*{8bc9ceb8-8b4a-11d0-8d11-00a0c91bc942}*SharedItemsImports = 9
dev\ProgressRing\InteractionTests\ProgressRing_InteractionTests.projitems*{8c2d60af-44bc-47da-8e44-d62e639bfc0a}*SharedItemsImports = 13
dev\CalendarDatePicker\TestUI\CalendarDatePicker_TestUI.projitems*{8cd16537-aad0-4905-aa85-3face7f99034}*SharedItemsImports = 13
@@ -795,6 +805,7 @@ Global
dev\PullToRefresh\RefreshContainer\RefreshContainer.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4
dev\PullToRefresh\RefreshVisualizer\RefreshVisualizer.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4
dev\PullToRefresh\ScrollViewerIRefreshInfoProviderAdapter\ScrollViewerIRefreshInfoProviderAdapter.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4
+ dev\RadialGradientBrush\RadialGradientBrush.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4
dev\RadioButtons\RadioButtons.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4
dev\RadioMenuFlyoutItem\RadioMenuFlyoutItem.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4
dev\RatingControl\RatingControl.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4
@@ -815,6 +826,7 @@ Global
dev\ToolTip\ToolTip.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4
dev\TreeView\TreeView.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4
dev\TwoPaneView\TwoPaneView.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4
+ dev\RadialGradientBrush\TestUI\RadialGradientBrush_TestUI.projitems*{ae308818-af18-48ba-bf33-89779083d297}*SharedItemsImports = 13
dev\TreeView\InteractionTests\TreeView_InteractionTests.projitems*{ae638a24-2bc6-4d4f-a51e-715d198f01fd}*SharedItemsImports = 13
dev\RatingControl\InteractionTests\RatingControl_InteractionTests.projitems*{afaad014-132c-4d2a-a28e-4ef717d3e647}*SharedItemsImports = 13
dev\TimePicker\TimePicker.vcxitems*{afd20f66-d203-4da9-b8ea-4e3f99a53f99}*SharedItemsImports = 9
@@ -896,6 +908,7 @@ Global
dev\PullToRefresh\ScrollViewerIRefreshInfoProviderAdapter\APITests\APITests.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4
dev\PullToRefresh\ScrollViewerIRefreshInfoProviderAdapter\TestUI\ScrollViewerAdapter_TestUI.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4
dev\PullToRefresh\TestUI\PTR_TestUI.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4
+ dev\RadialGradientBrush\TestUI\RadialGradientBrush_TestUI.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4
dev\RadioButtons\TestUI\RadioButtons_TestUI.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4
dev\RadioMenuFlyoutItem\TestUI\RadioMenuFlyoutItem_TestUI.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4
dev\RatingControl\APITests\RatingControl_APITests.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4
@@ -983,6 +996,7 @@ Global
dev\PullToRefresh\ScrollViewerIRefreshInfoProviderAdapter\APITests\APITests.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4
dev\PullToRefresh\ScrollViewerIRefreshInfoProviderAdapter\TestUI\ScrollViewerAdapter_TestUI.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4
dev\PullToRefresh\TestUI\PTR_TestUI.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4
+ dev\RadialGradientBrush\TestUI\RadialGradientBrush_TestUI.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4
dev\RadioButtons\TestUI\RadioButtons_TestUI.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4
dev\RadioMenuFlyoutItem\TestUI\RadioMenuFlyoutItem_TestUI.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4
dev\RatingControl\APITests\RatingControl_APITests.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4
@@ -1644,11 +1658,15 @@ Global
{0F61C8BD-D066-4812-A02B-E95CE18A985D} = {19693508-50A7-4C98-BCCB-327ED07C0F4F}
{3D044EC1-C9D3-4745-B79E-E7BED66E93F8} = {19693508-50A7-4C98-BCCB-327ED07C0F4F}
{1A5321F3-B837-4EB6-9547-37CC70088EA9} = {19693508-50A7-4C98-BCCB-327ED07C0F4F}
- {9638BF0D-2AA8-4642-A9F1-790BF7FBECF2} = {67599AD5-51EC-44CB-85CE-B60CD8CBA270}
{4194505E-4848-4FC4-97D1-0BABF32A11C4} = {67599AD5-51EC-44CB-85CE-B60CD8CBA270}
{64447EFA-19B4-4BF2-9D63-618635C483EC} = {4194505E-4848-4FC4-97D1-0BABF32A11C4}
{8C2D60AF-44BC-47DA-8E44-D62E639BFC0A} = {4194505E-4848-4FC4-97D1-0BABF32A11C4}
{B58EC806-9951-4E5E-AF29-A700A088770E} = {4194505E-4848-4FC4-97D1-0BABF32A11C4}
+ {9638BF0D-2AA8-4642-A9F1-790BF7FBECF2} = {67599AD5-51EC-44CB-85CE-B60CD8CBA270}
+ {0115F80C-AB97-412D-85D9-33A5188F8907} = {67599AD5-51EC-44CB-85CE-B60CD8CBA270}
+ {8B056B8F-C1AB-4A80-BD17-DEACE9897E6A} = {0115F80C-AB97-412D-85D9-33A5188F8907}
+ {AE308818-AF18-48BA-BF33-89779083D297} = {0115F80C-AB97-412D-85D9-33A5188F8907}
+ {74D18B1B-5F6B-4534-945B-131E8E3206FB} = {0115F80C-AB97-412D-85D9-33A5188F8907}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {D93836AB-52D3-4DE2-AE25-23F26F55ECED}
diff --git a/MUXControlsInnerLoop.sln b/MUXControlsInnerLoop.sln
index 018a61658f..704a082332 100644
--- a/MUXControlsInnerLoop.sln
+++ b/MUXControlsInnerLoop.sln
@@ -431,6 +431,14 @@ Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "ProgressRing_InteractionTes
EndProject
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "ProgressRing_TestUI", "dev\ProgressRing\TestUI\ProgressRing_TestUI.shproj", "{B58EC806-9951-4E5E-AF29-A700A088770E}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "RadialGradientBrush", "RadialGradientBrush", "{2165C785-9365-4615-B227-8E9C7444ECE1}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RadialGradientBrush", "dev\RadialGradientBrush\RadialGradientBrush.vcxitems", "{8B056B8F-C1AB-4A80-BD17-DEACE9897E6A}"
+EndProject
+Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "RadialGradientBrush_TestUI", "dev\RadialGradientBrush\TestUI\RadialGradientBrush_TestUI.shproj", "{AE308818-AF18-48BA-BF33-89779083D297}"
+EndProject
+Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "RadialGradientBrush_InteractionTests", "dev\RadialGradientBrush\InteractionTests\RadialGradientBrush_InteractionTests.shproj", "{74D18B1B-5F6B-4534-945B-131E8E3206FB}"
+EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
dev\ComboBox\ComboBox.vcxitems*{00523caf-422a-4185-9392-d374b72a019a}*SharedItemsImports = 9
@@ -527,6 +535,7 @@ Global
dev\ProgressRing\ProgressRing.vcxitems*{64447efa-19b4-4bf2-9d63-618635c483ec}*SharedItemsImports = 9
dev\RatingControl\RatingControl.vcxitems*{655f5da8-f87b-45af-88d1-a884881c3edf}*SharedItemsImports = 9
test\MUXControlsTestApp\MUXControlsTestApp.Shared.projitems*{6aa772a6-cbf7-4ff3-8864-bc9366015dc2}*SharedItemsImports = 13
+ dev\RadialGradientBrush\InteractionTests\RadialGradientBrush_InteractionTests.projitems*{74d18b1b-5f6b-4534-945b-131e8e3206fb}*SharedItemsImports = 13
dev\ScrollViewer\ScrollViewer.vcxitems*{755f5da9-087c-55a0-98d2-b884881c3ed0}*SharedItemsImports = 9
dev\NumberBox\InteractionTests\NumberBox_InteractionTests.projitems*{773f7592-e7b3-42fc-a14a-e815afd6a0cb}*SharedItemsImports = 13
dev\PullToRefresh\ScrollViewerIRefreshInfoProviderAdapter\InteractionTests\ScrollViewerAdapter_InteractionTests.projitems*{79863454-1dbf-45bb-b3d3-420b8f5e8705}*SharedItemsImports = 13
@@ -540,6 +549,7 @@ Global
dev\PullToRefresh\PTRTracing\PTRTracing.vcxitems*{890a5548-0515-4099-b526-0539fe9a0376}*SharedItemsImports = 9
dev\RadioMenuFlyoutItem\InteractionTests\RadioMenuFlyoutItem_InteractionTests.projitems*{89ec8d06-ca59-49a9-aefe-32dcc9dd8020}*SharedItemsImports = 13
dev\PersonPicture\TestUI\PersonPicture_TestUI.projitems*{8a1690fb-aa8c-461a-840c-89cdbb44bdba}*SharedItemsImports = 13
+ dev\RadialGradientBrush\RadialGradientBrush.vcxitems*{8b056b8f-c1ab-4a80-bd17-deace9897e6a}*SharedItemsImports = 9
dev\MenuBar\MenuBar.vcxitems*{8bc9ceb8-8b4a-11d0-8d11-00a0c91bc942}*SharedItemsImports = 9
dev\ProgressRing\InteractionTests\ProgressRing_InteractionTests.projitems*{8c2d60af-44bc-47da-8e44-d62e639bfc0a}*SharedItemsImports = 13
dev\CalendarDatePicker\TestUI\CalendarDatePicker_TestUI.projitems*{8cd16537-aad0-4905-aa85-3face7f99034}*SharedItemsImports = 13
@@ -570,14 +580,13 @@ Global
dev\IconSource\IconSource.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4
dev\Lights\Lights.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4
dev\Materials\Acrylic\AcrylicBrush.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4
- dev\Materials\Reveal\RevealBrush.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4
- dev\ProgressBar\ProgressBar.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4
- dev\NumberBox\NumberBox.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4
- dev\ProgressRing\ProgressRing.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4
+ dev\Materials\Reveal\RevealBrush.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4
+ dev\RadialGradientBrush\RadialGradientBrush.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4
dev\ResourceHelper\ResourceHelper.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4
dev\SplitButton\SplitButton.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4
dev\Telemetry\Telemetry.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4
dev\TestHooks\TestHooks.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4
+ dev\RadialGradientBrush\TestUI\RadialGradientBrush_TestUI.projitems*{ae308818-af18-48ba-bf33-89779083d297}*SharedItemsImports = 13
dev\TreeView\InteractionTests\TreeView_InteractionTests.projitems*{ae638a24-2bc6-4d4f-a51e-715d198f01fd}*SharedItemsImports = 13
dev\RatingControl\InteractionTests\RatingControl_InteractionTests.projitems*{afaad014-132c-4d2a-a28e-4ef717d3e647}*SharedItemsImports = 13
dev\TimePicker\TimePicker.vcxitems*{afd20f66-d203-4da9-b8ea-4e3f99a53f99}*SharedItemsImports = 9
@@ -611,7 +620,7 @@ Global
dev\TreeView\APITests\TreeView_APITests.projitems*{de885c66-929c-464e-bac4-3e076ec46483}*SharedItemsImports = 13
dev\Pivot\TestUI\Pivot_TestUI.projitems*{deb3fa60-e4a7-4735-89f2-363c7c56b428}*SharedItemsImports = 13
dev\CommonManaged\CommonManaged.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4
- dev\ProgressRing\TestUI\ProgressRing_TestUI.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4
+ dev\RadialGradientBrush\TestUI\RadialGradientBrush_TestUI.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4
test\TestAppUtils\TestAppUtils.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4
dev\SplitButton\InteractionTests\SplitButton_InteractionTests.projitems*{e1c861e2-c4d9-41e1-aed7-5e203451bd4d}*SharedItemsImports = 13
dev\DatePicker\TestUI\DatePicker_TestUI.projitems*{e20f725c-3a53-463b-ada9-ff2088aaca4d}*SharedItemsImports = 13
@@ -627,7 +636,7 @@ Global
dev\Materials\Acrylic\InteractionTests\AcrylicBrush_InteractionTests.projitems*{f601284a-00c1-49f9-99b3-70d45585f784}*SharedItemsImports = 13
dev\SplitButton\SplitButton.vcxitems*{faf114dd-af1f-4d9f-a511-354c19912aad}*SharedItemsImports = 9
dev\CommonManaged\CommonManaged.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4
- dev\ProgressRing\TestUI\ProgressRing_TestUI.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4
+ dev\RadialGradientBrush\TestUI\RadialGradientBrush_TestUI.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4
test\TestAppUtils\TestAppUtils.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4
dev\Slider\Slider.vcxitems*{fc2178ca-7f72-40f0-916c-a2b3750bbb6c}*SharedItemsImports = 9
dev\LayoutPanel\LayoutPanel.vcxitems*{fd3c1a00-0d07-4849-a3b9-646f0ff21d7b}*SharedItemsImports = 9
@@ -991,6 +1000,10 @@ Global
{5A911304-2863-4A73-8023-26EFCB4E01DA} = {67599AD5-51EC-44CB-85CE-B60CD8CBA270}
{8C2D60AF-44BC-47DA-8E44-D62E639BFC0A} = {5A911304-2863-4A73-8023-26EFCB4E01DA}
{B58EC806-9951-4E5E-AF29-A700A088770E} = {5A911304-2863-4A73-8023-26EFCB4E01DA}
+ {2165C785-9365-4615-B227-8E9C7444ECE1} = {67599AD5-51EC-44CB-85CE-B60CD8CBA270}
+ {8B056B8F-C1AB-4A80-BD17-DEACE9897E6A} = {2165C785-9365-4615-B227-8E9C7444ECE1}
+ {AE308818-AF18-48BA-BF33-89779083D297} = {2165C785-9365-4615-B227-8E9C7444ECE1}
+ {74D18B1B-5F6B-4534-945B-131E8E3206FB} = {2165C785-9365-4615-B227-8E9C7444ECE1}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {D93836AB-52D3-4DE2-AE25-23F26F55ECED}
diff --git a/dev/Generated/RadialGradientBrush.properties.cpp b/dev/Generated/RadialGradientBrush.properties.cpp
new file mode 100644
index 0000000000..f06ac947cd
--- /dev/null
+++ b/dev/Generated/RadialGradientBrush.properties.cpp
@@ -0,0 +1,183 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See LICENSE in the project root for license information.
+
+// DO NOT EDIT! This file was generated by CustomTasks.DependencyPropertyCodeGen
+#include "pch.h"
+#include "common.h"
+#include "RadialGradientBrush.h"
+
+namespace winrt::Microsoft::UI::Xaml::Media
+{
+ CppWinRTActivatableClassWithDPFactory(RadialGradientBrush)
+}
+
+#include "RadialGradientBrush.g.cpp"
+
+GlobalDependencyProperty RadialGradientBrushProperties::s_EllipseCenterProperty{ nullptr };
+GlobalDependencyProperty RadialGradientBrushProperties::s_EllipseRadiusProperty{ nullptr };
+GlobalDependencyProperty RadialGradientBrushProperties::s_GradientOriginOffsetProperty{ nullptr };
+GlobalDependencyProperty RadialGradientBrushProperties::s_InterpolationSpaceProperty{ nullptr };
+GlobalDependencyProperty RadialGradientBrushProperties::s_MappingModeProperty{ nullptr };
+
+RadialGradientBrushProperties::RadialGradientBrushProperties()
+{
+ EnsureProperties();
+}
+
+void RadialGradientBrushProperties::EnsureProperties()
+{
+ if (!s_EllipseCenterProperty)
+ {
+ s_EllipseCenterProperty =
+ InitializeDependencyProperty(
+ L"EllipseCenter",
+ winrt::name_of(),
+ winrt::name_of(),
+ false /* isAttached */,
+ ValueHelper::BoxValueIfNecessary(winrt::Point(0.5,0.5)),
+ winrt::PropertyChangedCallback(&OnEllipseCenterPropertyChanged));
+ }
+ if (!s_EllipseRadiusProperty)
+ {
+ s_EllipseRadiusProperty =
+ InitializeDependencyProperty(
+ L"EllipseRadius",
+ winrt::name_of(),
+ winrt::name_of(),
+ false /* isAttached */,
+ ValueHelper::BoxValueIfNecessary(winrt::Point(0.5,0.5)),
+ winrt::PropertyChangedCallback(&OnEllipseRadiusPropertyChanged));
+ }
+ if (!s_GradientOriginOffsetProperty)
+ {
+ s_GradientOriginOffsetProperty =
+ InitializeDependencyProperty(
+ L"GradientOriginOffset",
+ winrt::name_of(),
+ winrt::name_of(),
+ false /* isAttached */,
+ ValueHelper::BoxedDefaultValue(),
+ winrt::PropertyChangedCallback(&OnGradientOriginOffsetPropertyChanged));
+ }
+ if (!s_InterpolationSpaceProperty)
+ {
+ s_InterpolationSpaceProperty =
+ InitializeDependencyProperty(
+ L"InterpolationSpace",
+ winrt::name_of(),
+ winrt::name_of(),
+ false /* isAttached */,
+ ValueHelper::BoxValueIfNecessary(winrt::Windows::UI::Composition::CompositionColorSpace::Auto),
+ winrt::PropertyChangedCallback(&OnInterpolationSpacePropertyChanged));
+ }
+ if (!s_MappingModeProperty)
+ {
+ s_MappingModeProperty =
+ InitializeDependencyProperty(
+ L"MappingMode",
+ winrt::name_of(),
+ winrt::name_of(),
+ false /* isAttached */,
+ ValueHelper::BoxValueIfNecessary(winrt::BrushMappingMode::RelativeToBoundingBox),
+ winrt::PropertyChangedCallback(&OnMappingModePropertyChanged));
+ }
+}
+
+void RadialGradientBrushProperties::ClearProperties()
+{
+ s_EllipseCenterProperty = nullptr;
+ s_EllipseRadiusProperty = nullptr;
+ s_GradientOriginOffsetProperty = nullptr;
+ s_InterpolationSpaceProperty = nullptr;
+ s_MappingModeProperty = nullptr;
+}
+
+void RadialGradientBrushProperties::OnEllipseCenterPropertyChanged(
+ winrt::DependencyObject const& sender,
+ winrt::DependencyPropertyChangedEventArgs const& args)
+{
+ auto owner = sender.as();
+ winrt::get_self(owner)->OnPropertyChanged(args);
+}
+
+void RadialGradientBrushProperties::OnEllipseRadiusPropertyChanged(
+ winrt::DependencyObject const& sender,
+ winrt::DependencyPropertyChangedEventArgs const& args)
+{
+ auto owner = sender.as();
+ winrt::get_self(owner)->OnPropertyChanged(args);
+}
+
+void RadialGradientBrushProperties::OnGradientOriginOffsetPropertyChanged(
+ winrt::DependencyObject const& sender,
+ winrt::DependencyPropertyChangedEventArgs const& args)
+{
+ auto owner = sender.as();
+ winrt::get_self(owner)->OnPropertyChanged(args);
+}
+
+void RadialGradientBrushProperties::OnInterpolationSpacePropertyChanged(
+ winrt::DependencyObject const& sender,
+ winrt::DependencyPropertyChangedEventArgs const& args)
+{
+ auto owner = sender.as();
+ winrt::get_self(owner)->OnPropertyChanged(args);
+}
+
+void RadialGradientBrushProperties::OnMappingModePropertyChanged(
+ winrt::DependencyObject const& sender,
+ winrt::DependencyPropertyChangedEventArgs const& args)
+{
+ auto owner = sender.as();
+ winrt::get_self(owner)->OnPropertyChanged(args);
+}
+
+void RadialGradientBrushProperties::EllipseCenter(winrt::Point const& value)
+{
+ static_cast(this)->SetValue(s_EllipseCenterProperty, ValueHelper::BoxValueIfNecessary(value));
+}
+
+winrt::Point RadialGradientBrushProperties::EllipseCenter()
+{
+ return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_EllipseCenterProperty));
+}
+
+void RadialGradientBrushProperties::EllipseRadius(winrt::Point const& value)
+{
+ static_cast(this)->SetValue(s_EllipseRadiusProperty, ValueHelper::BoxValueIfNecessary(value));
+}
+
+winrt::Point RadialGradientBrushProperties::EllipseRadius()
+{
+ return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_EllipseRadiusProperty));
+}
+
+void RadialGradientBrushProperties::GradientOriginOffset(winrt::Point const& value)
+{
+ static_cast(this)->SetValue(s_GradientOriginOffsetProperty, ValueHelper::BoxValueIfNecessary(value));
+}
+
+winrt::Point RadialGradientBrushProperties::GradientOriginOffset()
+{
+ return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_GradientOriginOffsetProperty));
+}
+
+void RadialGradientBrushProperties::InterpolationSpace(winrt::CompositionColorSpace const& value)
+{
+ static_cast(this)->SetValue(s_InterpolationSpaceProperty, ValueHelper::BoxValueIfNecessary(value));
+}
+
+winrt::CompositionColorSpace RadialGradientBrushProperties::InterpolationSpace()
+{
+ return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_InterpolationSpaceProperty));
+}
+
+void RadialGradientBrushProperties::MappingMode(winrt::BrushMappingMode const& value)
+{
+ static_cast(this)->SetValue(s_MappingModeProperty, ValueHelper::BoxValueIfNecessary(value));
+}
+
+winrt::BrushMappingMode RadialGradientBrushProperties::MappingMode()
+{
+ return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_MappingModeProperty));
+}
diff --git a/dev/Generated/RadialGradientBrush.properties.h b/dev/Generated/RadialGradientBrush.properties.h
new file mode 100644
index 0000000000..425c2fb251
--- /dev/null
+++ b/dev/Generated/RadialGradientBrush.properties.h
@@ -0,0 +1,61 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See LICENSE in the project root for license information.
+
+// DO NOT EDIT! This file was generated by CustomTasks.DependencyPropertyCodeGen
+#pragma once
+
+class RadialGradientBrushProperties
+{
+public:
+ RadialGradientBrushProperties();
+
+ void EllipseCenter(winrt::Point const& value);
+ winrt::Point EllipseCenter();
+
+ void EllipseRadius(winrt::Point const& value);
+ winrt::Point EllipseRadius();
+
+ void GradientOriginOffset(winrt::Point const& value);
+ winrt::Point GradientOriginOffset();
+
+ void InterpolationSpace(winrt::CompositionColorSpace const& value);
+ winrt::CompositionColorSpace InterpolationSpace();
+
+ void MappingMode(winrt::BrushMappingMode const& value);
+ winrt::BrushMappingMode MappingMode();
+
+ static winrt::DependencyProperty EllipseCenterProperty() { return s_EllipseCenterProperty; }
+ static winrt::DependencyProperty EllipseRadiusProperty() { return s_EllipseRadiusProperty; }
+ static winrt::DependencyProperty GradientOriginOffsetProperty() { return s_GradientOriginOffsetProperty; }
+ static winrt::DependencyProperty InterpolationSpaceProperty() { return s_InterpolationSpaceProperty; }
+ static winrt::DependencyProperty MappingModeProperty() { return s_MappingModeProperty; }
+
+ static GlobalDependencyProperty s_EllipseCenterProperty;
+ static GlobalDependencyProperty s_EllipseRadiusProperty;
+ static GlobalDependencyProperty s_GradientOriginOffsetProperty;
+ static GlobalDependencyProperty s_InterpolationSpaceProperty;
+ static GlobalDependencyProperty s_MappingModeProperty;
+
+ static void EnsureProperties();
+ static void ClearProperties();
+
+ static void OnEllipseCenterPropertyChanged(
+ winrt::DependencyObject const& sender,
+ winrt::DependencyPropertyChangedEventArgs const& args);
+
+ static void OnEllipseRadiusPropertyChanged(
+ winrt::DependencyObject const& sender,
+ winrt::DependencyPropertyChangedEventArgs const& args);
+
+ static void OnGradientOriginOffsetPropertyChanged(
+ winrt::DependencyObject const& sender,
+ winrt::DependencyPropertyChangedEventArgs const& args);
+
+ static void OnInterpolationSpacePropertyChanged(
+ winrt::DependencyObject const& sender,
+ winrt::DependencyPropertyChangedEventArgs const& args);
+
+ static void OnMappingModePropertyChanged(
+ winrt::DependencyObject const& sender,
+ winrt::DependencyPropertyChangedEventArgs const& args);
+};
diff --git a/dev/RadialGradientBrush/InteractionTests/RadialGradientBrushTests.cs b/dev/RadialGradientBrush/InteractionTests/RadialGradientBrushTests.cs
new file mode 100644
index 0000000000..f82106753e
--- /dev/null
+++ b/dev/RadialGradientBrush/InteractionTests/RadialGradientBrushTests.cs
@@ -0,0 +1,119 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See LICENSE in the project root for license information.
+
+using System;
+using Common;
+using Windows.UI.Xaml.Tests.MUXControls.InteractionTests.Infra;
+using Windows.UI.Xaml.Tests.MUXControls.InteractionTests.Common;
+using System.Collections.Generic;
+
+#if USING_TAEF
+using WEX.TestExecution;
+using WEX.TestExecution.Markup;
+using WEX.Logging.Interop;
+#else
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using Microsoft.VisualStudio.TestTools.UnitTesting.Logging;
+#endif
+
+using Microsoft.Windows.Apps.Test.Automation;
+using Microsoft.Windows.Apps.Test.Foundation;
+using Microsoft.Windows.Apps.Test.Foundation.Controls;
+using Microsoft.Windows.Apps.Test.Foundation.Patterns;
+using Microsoft.Windows.Apps.Test.Foundation.Waiters;
+
+namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
+{
+ [TestClass]
+ public class RadialGradientBrushTests
+ {
+ [ClassInitialize]
+ [TestProperty("RunAs", "User")]
+ [TestProperty("Classification", "Integration")]
+ [TestProperty("Platform", "Any")]
+ [TestProperty("MUXControlsTestSuite", "SuiteB")]
+ public static void ClassInitialize(TestContext testContext)
+ {
+ TestEnvironment.Initialize(testContext);
+ }
+
+ public void TestCleanup()
+ {
+ TestCleanupHelper.Cleanup();
+ }
+
+ [TestMethod]
+ public void AddGradientStopTest()
+ {
+ using (var setup = new TestSetupHelper("RadialGradientBrush Tests"))
+ {
+ Log.Comment("Adding GradientStop to RadialGradientBrush");
+
+ Button replaceGradientButton = FindElement.ByName
diff --git a/dev/RadialGradientBrush/RadialGradientBrush.cpp b/dev/RadialGradientBrush/RadialGradientBrush.cpp
index 743658b565..fff54d4388 100644
--- a/dev/RadialGradientBrush/RadialGradientBrush.cpp
+++ b/dev/RadialGradientBrush/RadialGradientBrush.cpp
@@ -138,35 +138,31 @@ void RadialGradientBrush::EnsureCompositionBrush()
void RadialGradientBrush::UpdateCompositionGradientEllipseCenter()
{
- MUX_ASSERT(SharedHelpers::IsCompositionRadialGradientBrushAvailable());
-
- auto compositionGradientBrush = m_brush.try_as();
+ MUX_ASSERT(SharedHelpers::IsCompositionRadialGradientBrushAvailable());
- if (compositionGradientBrush)
+ if (auto compositionGradientBrush = m_brush.try_as())
{
- compositionGradientBrush.EllipseCenter(winrt::float2(EllipseCenter().X, EllipseCenter().Y));
+ auto ellipseCenter = EllipseCenter();
+ compositionGradientBrush.EllipseCenter(winrt::float2(ellipseCenter.X, ellipseCenter.Y));
}
}
void RadialGradientBrush::UpdateCompositionGradientEllipseRadius()
{
MUX_ASSERT(SharedHelpers::IsCompositionRadialGradientBrushAvailable());
-
- auto compositionGradientBrush = m_brush.try_as();
-
- if (compositionGradientBrush)
+
+ if (auto compositionGradientBrush = m_brush.try_as())
{
- compositionGradientBrush.EllipseRadius(winrt::float2(EllipseRadius().X, EllipseRadius().Y));
+ auto ellipseRadius = EllipseRadius();
+ compositionGradientBrush.EllipseRadius(winrt::float2(ellipseRadius.X, ellipseRadius.Y));
}
}
void RadialGradientBrush::UpdateCompositionGradientMappingMode()
{
- MUX_ASSERT(SharedHelpers::IsCompositionRadialGradientBrushAvailable());
-
- auto compositionGradientBrush = m_brush.try_as();
+ MUX_ASSERT(SharedHelpers::IsCompositionRadialGradientBrushAvailable());
- if (compositionGradientBrush)
+ if (auto compositionGradientBrush = m_brush.try_as())
{
switch (MappingMode())
{
@@ -183,32 +179,27 @@ void RadialGradientBrush::UpdateCompositionGradientMappingMode()
void RadialGradientBrush::UpdateCompositionGradientOriginOffset()
{
- MUX_ASSERT(SharedHelpers::IsCompositionRadialGradientBrushAvailable());
+ MUX_ASSERT(SharedHelpers::IsCompositionRadialGradientBrushAvailable());
- auto compositionGradientBrush = m_brush.try_as();
-
- if (compositionGradientBrush)
+ if (auto compositionGradientBrush = m_brush.try_as())
{
- compositionGradientBrush.GradientOriginOffset(winrt::float2(GradientOriginOffset().X, GradientOriginOffset().Y));
+ auto gradientOriginOffset = GradientOriginOffset();
+ compositionGradientBrush.GradientOriginOffset(winrt::float2(gradientOriginOffset.X, gradientOriginOffset.Y));
}
}
void RadialGradientBrush::UpdateCompositionGradientStops()
{
- MUX_ASSERT(SharedHelpers::IsCompositionRadialGradientBrushAvailable());
-
- auto compositionGradientBrush = m_brush.try_as();
+ MUX_ASSERT(SharedHelpers::IsCompositionRadialGradientBrushAvailable());
- if (compositionGradientBrush)
+ if (auto compositionGradientBrush = m_brush.try_as())
{
auto compositor = winrt::Window::Current().Compositor();
compositionGradientBrush.ColorStops().Clear();
- for (uint32_t i = 0; i < m_gradientStops.Size(); i++)
+ for (const auto& gradientStop : m_gradientStops)
{
- auto gradientStop = m_gradientStops.GetAt(i);
-
auto compositionStop = compositor.CreateColorGradientStop();
compositionStop.Color(gradientStop.Color());
compositionStop.Offset(static_cast(gradientStop.Offset()));
@@ -222,9 +213,7 @@ void RadialGradientBrush::UpdateCompositionInterpolationSpace()
{
MUX_ASSERT(SharedHelpers::IsCompositionRadialGradientBrushAvailable());
- auto compositionGradientBrush = m_brush.try_as();
-
- if (compositionGradientBrush)
+ if (auto compositionGradientBrush = m_brush.try_as())
{
compositionGradientBrush.InterpolationSpace(InterpolationSpace());
}
@@ -232,9 +221,7 @@ void RadialGradientBrush::UpdateCompositionInterpolationSpace()
void RadialGradientBrush::UpdateFallbackBrush()
{
- auto compositionColorBrush = m_brush.try_as();
-
- if (compositionColorBrush)
+ if (auto compositionColorBrush = m_brush.try_as())
{
compositionColorBrush.Color(FallbackColor());
}
From 8f8d83cd81ca4963f99cfb834339cb528046e030 Mon Sep 17 00:00:00 2001
From: Jesse Bishop <16565497+jesbis@users.noreply.github.com>
Date: Mon, 13 Jan 2020 12:45:08 -0800
Subject: [PATCH 3/3] Address more PR comments
- add default case to mappingmode switch statement
- switch from event tokens to event_revoker
- add per-property change callback methods
- reorder .targets imports to ensure commenting is accurate
---
.../RadialGradientBrush.properties.cpp | 10 +-
.../RadialGradientBrush.cpp | 125 ++++++++++--------
dev/RadialGradientBrush/RadialGradientBrush.h | 11 +-
.../RadialGradientBrush.idl | 8 +-
.../MUXControls.Test.Shared.targets | 6 +-
.../MUXControlsTestApp.Shared.targets | 2 +-
6 files changed, 90 insertions(+), 72 deletions(-)
diff --git a/dev/Generated/RadialGradientBrush.properties.cpp b/dev/Generated/RadialGradientBrush.properties.cpp
index f06ac947cd..d524afb7c9 100644
--- a/dev/Generated/RadialGradientBrush.properties.cpp
+++ b/dev/Generated/RadialGradientBrush.properties.cpp
@@ -97,7 +97,7 @@ void RadialGradientBrushProperties::OnEllipseCenterPropertyChanged(
winrt::DependencyPropertyChangedEventArgs const& args)
{
auto owner = sender.as();
- winrt::get_self(owner)->OnPropertyChanged(args);
+ winrt::get_self(owner)->OnEllipseCenterPropertyChanged(args);
}
void RadialGradientBrushProperties::OnEllipseRadiusPropertyChanged(
@@ -105,7 +105,7 @@ void RadialGradientBrushProperties::OnEllipseRadiusPropertyChanged(
winrt::DependencyPropertyChangedEventArgs const& args)
{
auto owner = sender.as();
- winrt::get_self(owner)->OnPropertyChanged(args);
+ winrt::get_self(owner)->OnEllipseRadiusPropertyChanged(args);
}
void RadialGradientBrushProperties::OnGradientOriginOffsetPropertyChanged(
@@ -113,7 +113,7 @@ void RadialGradientBrushProperties::OnGradientOriginOffsetPropertyChanged(
winrt::DependencyPropertyChangedEventArgs const& args)
{
auto owner = sender.as();
- winrt::get_self(owner)->OnPropertyChanged(args);
+ winrt::get_self(owner)->OnGradientOriginOffsetPropertyChanged(args);
}
void RadialGradientBrushProperties::OnInterpolationSpacePropertyChanged(
@@ -121,7 +121,7 @@ void RadialGradientBrushProperties::OnInterpolationSpacePropertyChanged(
winrt::DependencyPropertyChangedEventArgs const& args)
{
auto owner = sender.as();
- winrt::get_self(owner)->OnPropertyChanged(args);
+ winrt::get_self(owner)->OnInterpolationSpacePropertyChanged(args);
}
void RadialGradientBrushProperties::OnMappingModePropertyChanged(
@@ -129,7 +129,7 @@ void RadialGradientBrushProperties::OnMappingModePropertyChanged(
winrt::DependencyPropertyChangedEventArgs const& args)
{
auto owner = sender.as();
- winrt::get_self(owner)->OnPropertyChanged(args);
+ winrt::get_self(owner)->OnMappingModePropertyChanged(args);
}
void RadialGradientBrushProperties::EllipseCenter(winrt::Point const& value)
diff --git a/dev/RadialGradientBrush/RadialGradientBrush.cpp b/dev/RadialGradientBrush/RadialGradientBrush.cpp
index fff54d4388..baa9c80225 100644
--- a/dev/RadialGradientBrush/RadialGradientBrush.cpp
+++ b/dev/RadialGradientBrush/RadialGradientBrush.cpp
@@ -32,21 +32,13 @@ void RadialGradientBrush::OnConnected()
if (SharedHelpers::IsCompositionRadialGradientBrushAvailable())
{
- // If CompositionRadialGradientBrush will be used then listen for changes to gradient stops so the composition brush can be updated.
- m_gradientStopsChangedToken = m_gradientStops.VectorChanged({
- [this](winrt::IObservableVector const& sender, winrt::IVectorChangedEventArgs const& args)
- {
- if (m_brush)
- {
- UpdateCompositionGradientStops();
- }
- }
- });
+ // If CompositionRadialGradientBrush will be used then listen for changes to gradient stops so the CompositionRadialGradientBrush can be updated.
+ m_gradientStopsVectorChangedRevoker = m_gradientStops.VectorChanged(winrt::auto_revoke, { this, &RadialGradientBrush::OnGradientStopsVectorChanged });
}
else
{
// If CompositionRadialGradientBrush won't be used then listen for changes to the fallback color so the fallback brush can be updated.
- m_fallbackColorChangedToken.value = RegisterPropertyChangedCallback(winrt::XamlCompositionBrushBase::FallbackColorProperty(), { this, &RadialGradientBrush::OnFallbackColorChanged });
+ m_fallbackColorChangedRevoker = RegisterPropertyChanged(*this, winrt::XamlCompositionBrushBase::FallbackColorProperty(), { this, &RadialGradientBrush::OnFallbackColorChanged });
}
}
@@ -61,44 +53,54 @@ void RadialGradientBrush::OnDisconnected()
CompositionBrush(nullptr);
}
- if (m_gradientStopsChangedToken)
+ if (m_gradientStopsVectorChangedRevoker)
{
- m_gradientStops.VectorChanged(m_gradientStopsChangedToken);
+ m_gradientStopsVectorChangedRevoker.revoke();
}
- if (m_fallbackColorChangedToken)
+ if (m_fallbackColorChangedRevoker)
{
- UnregisterPropertyChangedCallback(winrt::XamlCompositionBrushBase::FallbackColorProperty(), m_fallbackColorChangedToken.value);
- m_fallbackColorChangedToken.value = 0;
+ m_fallbackColorChangedRevoker.revoke();
}
}
-void RadialGradientBrush::OnPropertyChanged(const winrt::DependencyPropertyChangedEventArgs& args)
+void RadialGradientBrush::OnEllipseCenterPropertyChanged(const winrt::DependencyPropertyChangedEventArgs& args)
{
if (SharedHelpers::IsCompositionRadialGradientBrushAvailable())
{
- auto property = args.Property();
+ UpdateCompositionGradientEllipseCenter();
+ }
+}
- if (property == s_EllipseCenterProperty)
- {
- UpdateCompositionGradientEllipseCenter();
- }
- else if (property == s_EllipseRadiusProperty)
- {
- UpdateCompositionGradientEllipseRadius();
- }
- else if (property == s_GradientOriginOffsetProperty)
- {
- UpdateCompositionGradientOriginOffset();
- }
- else if (property == s_MappingModeProperty)
- {
- UpdateCompositionGradientMappingMode();
- }
- else if (property == s_InterpolationSpaceProperty)
- {
- UpdateCompositionInterpolationSpace();
- }
+void RadialGradientBrush::OnEllipseRadiusPropertyChanged(const winrt::DependencyPropertyChangedEventArgs& args)
+{
+ if (SharedHelpers::IsCompositionRadialGradientBrushAvailable())
+ {
+ UpdateCompositionGradientEllipseRadius();
+ }
+}
+
+void RadialGradientBrush::OnGradientOriginOffsetPropertyChanged(const winrt::DependencyPropertyChangedEventArgs& args)
+{
+ if (SharedHelpers::IsCompositionRadialGradientBrushAvailable())
+ {
+ UpdateCompositionGradientOriginOffset();
+ }
+}
+
+void RadialGradientBrush::OnMappingModePropertyChanged(const winrt::DependencyPropertyChangedEventArgs& args)
+{
+ if (SharedHelpers::IsCompositionRadialGradientBrushAvailable())
+ {
+ UpdateCompositionGradientMappingMode();
+ }
+}
+
+void RadialGradientBrush::OnInterpolationSpacePropertyChanged(const winrt::DependencyPropertyChangedEventArgs& args)
+{
+ if (SharedHelpers::IsCompositionRadialGradientBrushAvailable())
+ {
+ UpdateCompositionInterpolationSpace();
}
}
@@ -107,11 +109,19 @@ void RadialGradientBrush::OnFallbackColorChanged(const winrt::DependencyObject&
UpdateFallbackBrush();
}
+void RadialGradientBrush::OnGradientStopsVectorChanged(winrt::Collections::IObservableVector const& sender, winrt::Collections::IVectorChangedEventArgs const& e)
+{
+ if (SharedHelpers::IsCompositionRadialGradientBrushAvailable())
+ {
+ UpdateCompositionGradientStops();
+ }
+}
+
void RadialGradientBrush::EnsureCompositionBrush()
{
if (m_isConnected && !m_brush)
{
- auto compositor = winrt::Window::Current().Compositor();
+ const auto compositor = winrt::Window::Current().Compositor();
if (SharedHelpers::IsCompositionRadialGradientBrushAvailable())
{
@@ -138,11 +148,11 @@ void RadialGradientBrush::EnsureCompositionBrush()
void RadialGradientBrush::UpdateCompositionGradientEllipseCenter()
{
- MUX_ASSERT(SharedHelpers::IsCompositionRadialGradientBrushAvailable());
+ MUX_ASSERT(SharedHelpers::IsCompositionRadialGradientBrushAvailable());
- if (auto compositionGradientBrush = m_brush.try_as())
+ if (const auto compositionGradientBrush = m_brush.try_as())
{
- auto ellipseCenter = EllipseCenter();
+ const auto ellipseCenter = EllipseCenter();
compositionGradientBrush.EllipseCenter(winrt::float2(ellipseCenter.X, ellipseCenter.Y));
}
}
@@ -150,27 +160,28 @@ void RadialGradientBrush::UpdateCompositionGradientEllipseCenter()
void RadialGradientBrush::UpdateCompositionGradientEllipseRadius()
{
MUX_ASSERT(SharedHelpers::IsCompositionRadialGradientBrushAvailable());
-
- if (auto compositionGradientBrush = m_brush.try_as())
+
+ if (const auto compositionGradientBrush = m_brush.try_as())
{
- auto ellipseRadius = EllipseRadius();
+ const auto ellipseRadius = EllipseRadius();
compositionGradientBrush.EllipseRadius(winrt::float2(ellipseRadius.X, ellipseRadius.Y));
}
}
void RadialGradientBrush::UpdateCompositionGradientMappingMode()
{
- MUX_ASSERT(SharedHelpers::IsCompositionRadialGradientBrushAvailable());
+ MUX_ASSERT(SharedHelpers::IsCompositionRadialGradientBrushAvailable());
- if (auto compositionGradientBrush = m_brush.try_as())
+ if (const auto compositionGradientBrush = m_brush.try_as())
{
switch (MappingMode())
{
case winrt::BrushMappingMode::Absolute:
compositionGradientBrush.MappingMode(winrt::Windows::UI::Composition::CompositionMappingMode::Absolute);
break;
-
case winrt::BrushMappingMode::RelativeToBoundingBox:
+ [[fallthrough]];
+ default: // Use Relative as the default if the mode isn't recognized.
compositionGradientBrush.MappingMode(winrt::Windows::UI::Composition::CompositionMappingMode::Relative);
break;
}
@@ -179,28 +190,28 @@ void RadialGradientBrush::UpdateCompositionGradientMappingMode()
void RadialGradientBrush::UpdateCompositionGradientOriginOffset()
{
- MUX_ASSERT(SharedHelpers::IsCompositionRadialGradientBrushAvailable());
+ MUX_ASSERT(SharedHelpers::IsCompositionRadialGradientBrushAvailable());
- if (auto compositionGradientBrush = m_brush.try_as())
+ if (const auto compositionGradientBrush = m_brush.try_as())
{
- auto gradientOriginOffset = GradientOriginOffset();
+ const auto gradientOriginOffset = GradientOriginOffset();
compositionGradientBrush.GradientOriginOffset(winrt::float2(gradientOriginOffset.X, gradientOriginOffset.Y));
}
}
void RadialGradientBrush::UpdateCompositionGradientStops()
{
- MUX_ASSERT(SharedHelpers::IsCompositionRadialGradientBrushAvailable());
+ MUX_ASSERT(SharedHelpers::IsCompositionRadialGradientBrushAvailable());
- if (auto compositionGradientBrush = m_brush.try_as())
+ if (const auto compositionGradientBrush = m_brush.try_as())
{
- auto compositor = winrt::Window::Current().Compositor();
+ const auto compositor = winrt::Window::Current().Compositor();
compositionGradientBrush.ColorStops().Clear();
for (const auto& gradientStop : m_gradientStops)
{
- auto compositionStop = compositor.CreateColorGradientStop();
+ const auto compositionStop = compositor.CreateColorGradientStop();
compositionStop.Color(gradientStop.Color());
compositionStop.Offset(static_cast(gradientStop.Offset()));
@@ -213,7 +224,7 @@ void RadialGradientBrush::UpdateCompositionInterpolationSpace()
{
MUX_ASSERT(SharedHelpers::IsCompositionRadialGradientBrushAvailable());
- if (auto compositionGradientBrush = m_brush.try_as())
+ if (const auto compositionGradientBrush = m_brush.try_as())
{
compositionGradientBrush.InterpolationSpace(InterpolationSpace());
}
@@ -221,7 +232,7 @@ void RadialGradientBrush::UpdateCompositionInterpolationSpace()
void RadialGradientBrush::UpdateFallbackBrush()
{
- if (auto compositionColorBrush = m_brush.try_as())
+ if (const auto compositionColorBrush = m_brush.try_as())
{
compositionColorBrush.Color(FallbackColor());
}
diff --git a/dev/RadialGradientBrush/RadialGradientBrush.h b/dev/RadialGradientBrush/RadialGradientBrush.h
index 354289bf73..9aa8cde41f 100644
--- a/dev/RadialGradientBrush/RadialGradientBrush.h
+++ b/dev/RadialGradientBrush/RadialGradientBrush.h
@@ -23,16 +23,21 @@ class RadialGradientBrush :
void OnConnected();
void OnDisconnected();
- void OnPropertyChanged(const winrt::DependencyPropertyChangedEventArgs& args);
+ void OnEllipseCenterPropertyChanged(const winrt::DependencyPropertyChangedEventArgs& args);
+ void OnEllipseRadiusPropertyChanged(const winrt::DependencyPropertyChangedEventArgs& args);
+ void OnGradientOriginOffsetPropertyChanged(const winrt::DependencyPropertyChangedEventArgs& args);
+ void OnMappingModePropertyChanged(const winrt::DependencyPropertyChangedEventArgs& args);
+ void OnInterpolationSpacePropertyChanged(const winrt::DependencyPropertyChangedEventArgs& args);
private:
bool m_isConnected{};
winrt::CompositionBrush m_brush{ nullptr };
winrt::IObservableVector m_gradientStops{ nullptr };
- winrt::event_token m_gradientStopsChangedToken{};
- winrt::event_token m_fallbackColorChangedToken{};
+ winrt::Collections::IObservableVector::VectorChanged_revoker m_gradientStopsVectorChangedRevoker{};
+ PropertyChanged_revoker m_fallbackColorChangedRevoker{};
+ void OnGradientStopsVectorChanged(winrt::Collections::IObservableVector const& sender, winrt::Collections::IVectorChangedEventArgs const& e);
void OnFallbackColorChanged(const winrt::DependencyObject& sender, const winrt::DependencyProperty& args);
void EnsureCompositionBrush();
diff --git a/dev/RadialGradientBrush/RadialGradientBrush.idl b/dev/RadialGradientBrush/RadialGradientBrush.idl
index 84b3233d75..7fe6b1fbbf 100644
--- a/dev/RadialGradientBrush/RadialGradientBrush.idl
+++ b/dev/RadialGradientBrush/RadialGradientBrush.idl
@@ -3,28 +3,30 @@
[WUXC_VERSION_PREVIEW]
[webhosthidden]
-[MUX_PROPERTY_CHANGED_CALLBACK(TRUE)]
-[MUX_PROPERTY_CHANGED_CALLBACK_METHODNAME("OnPropertyChanged")]
[contentproperty("GradientStops")]
unsealed runtimeclass RadialGradientBrush : Windows.UI.Xaml.Media.XamlCompositionBrushBase
{
RadialGradientBrush();
+ [MUX_PROPERTY_CHANGED_CALLBACK(TRUE)]
[MUX_DEFAULT_VALUE("winrt::Point(0.5,0.5)")]
Windows.Foundation.Point EllipseCenter { get; set; };
+ [MUX_PROPERTY_CHANGED_CALLBACK(TRUE)]
[MUX_DEFAULT_VALUE("winrt::Point(0.5,0.5)")]
Windows.Foundation.Point EllipseRadius { get; set; };
+ [MUX_PROPERTY_CHANGED_CALLBACK(TRUE)]
Windows.Foundation.Point GradientOriginOffset { get; set; };
+ [MUX_PROPERTY_CHANGED_CALLBACK(TRUE)]
[MUX_DEFAULT_VALUE("winrt::BrushMappingMode::RelativeToBoundingBox")]
Windows.UI.Xaml.Media.BrushMappingMode MappingMode { get; set; };
+ [MUX_PROPERTY_CHANGED_CALLBACK(TRUE)]
[MUX_DEFAULT_VALUE("winrt::Windows::UI::Composition::CompositionColorSpace::Auto")]
Windows.UI.Composition.CompositionColorSpace InterpolationSpace { get; set; };
- [MUX_PROPERTY_CHANGED_CALLBACK(FALSE)]
Windows.Foundation.Collections.IObservableVector GradientStops { get; };
static Windows.UI.Xaml.DependencyProperty EllipseCenterProperty { get; };
diff --git a/test/MUXControls.Test/MUXControls.Test.Shared.targets b/test/MUXControls.Test/MUXControls.Test.Shared.targets
index cd599150a0..ff0df167a3 100644
--- a/test/MUXControls.Test/MUXControls.Test.Shared.targets
+++ b/test/MUXControls.Test/MUXControls.Test.Shared.targets
@@ -30,12 +30,12 @@
+
+
+
-
-
-
\ No newline at end of file
diff --git a/test/MUXControlsTestApp/MUXControlsTestApp.Shared.targets b/test/MUXControlsTestApp/MUXControlsTestApp.Shared.targets
index e466ec1ef6..f12dfb48ca 100644
--- a/test/MUXControlsTestApp/MUXControlsTestApp.Shared.targets
+++ b/test/MUXControlsTestApp/MUXControlsTestApp.Shared.targets
@@ -73,6 +73,7 @@
+
@@ -80,5 +81,4 @@
-
\ No newline at end of file