From 6d3064e5487458865be46a9e54084061a3243057 Mon Sep 17 00:00:00 2001 From: Kai Guo Date: Fri, 30 Aug 2019 16:28:27 -0700 Subject: [PATCH 1/2] Update converter --- dev/Common/CornerRadiusFilterConverter.cpp | 60 ++++++++++++------- dev/Common/CornerRadiusFilterConverters.idl | 18 +++--- .../CornerRadius_themeresources.xaml | 4 +- 3 files changed, 50 insertions(+), 32 deletions(-) diff --git a/dev/Common/CornerRadiusFilterConverter.cpp b/dev/Common/CornerRadiusFilterConverter.cpp index adac12f42e..a83a03b38d 100644 --- a/dev/Common/CornerRadiusFilterConverter.cpp +++ b/dev/Common/CornerRadiusFilterConverter.cpp @@ -5,28 +5,30 @@ #include #include "CornerRadiusFilterConverter.h" +using FilterKind = winrt::CornerRadiusFilterKind; + winrt::CornerRadius CornerRadiusFilterConverter::Convert(winrt::CornerRadius const& radius, winrt::CornerRadiusFilterKind const& filterKind) { - winrt::CornerRadius result = radius; + winrt::CornerRadius result { 0,0,0,0 }; + + if ((filterKind & FilterKind::TopLeft) == FilterKind::TopLeft) + { + result.TopLeft = radius.TopLeft; + } + + if ((filterKind & FilterKind::TopRight) == FilterKind::TopRight) + { + result.TopRight = radius.TopRight; + } + + if ((filterKind & FilterKind::BottomLeft) == FilterKind::BottomLeft) + { + result.BottomLeft = radius.BottomLeft; + } - switch (filterKind) + if ((filterKind & FilterKind::BottomRight) == FilterKind::BottomRight) { - case winrt::CornerRadiusFilterKind::Top: - result.BottomLeft = 0; - result.BottomRight = 0; - break; - case winrt::CornerRadiusFilterKind::Right: - result.TopLeft = 0; - result.BottomLeft = 0; - break; - case winrt::CornerRadiusFilterKind::Bottom: - result.TopLeft = 0; - result.TopRight = 0; - break; - case winrt::CornerRadiusFilterKind::Left: - result.TopRight = 0; - result.BottomRight = 0; - break; + result.BottomRight = radius.BottomRight; } return result; @@ -34,13 +36,26 @@ winrt::CornerRadius CornerRadiusFilterConverter::Convert(winrt::CornerRadius con double CornerRadiusFilterConverter::GetDoubleValue(winrt::CornerRadius const& radius, winrt::CornerRadiusFilterKind const& filterKind) { - switch (filterKind) + if ((filterKind & FilterKind::TopLeft) == FilterKind::TopLeft) { - case winrt::CornerRadiusFilterKind::TopLeftValue: return radius.TopLeft; - case winrt::CornerRadiusFilterKind::BottomRightValue: + } + + if ((filterKind & FilterKind::TopRight) == FilterKind::TopRight) + { + return radius.TopRight; + } + + if ((filterKind & FilterKind::BottomLeft) == FilterKind::BottomLeft) + { + return radius.BottomLeft; + } + + if ((filterKind & FilterKind::BottomRight) == FilterKind::BottomRight) + { return radius.BottomRight; } + return 0; } @@ -52,8 +67,7 @@ winrt::IInspectable CornerRadiusFilterConverter::Convert( { auto cornerRadius = unbox_value(value); auto filterType = Filter(); - if (filterType == winrt::CornerRadiusFilterKind::TopLeftValue || - filterType == winrt::CornerRadiusFilterKind::BottomRightValue) + if ((filterType & FilterKind::ValueOnly) == FilterKind::ValueOnly) { return box_value(GetDoubleValue(cornerRadius, Filter())); } diff --git a/dev/Common/CornerRadiusFilterConverters.idl b/dev/Common/CornerRadiusFilterConverters.idl index 461f92c7dd..d4a2552fe6 100644 --- a/dev/Common/CornerRadiusFilterConverters.idl +++ b/dev/Common/CornerRadiusFilterConverters.idl @@ -16,15 +16,19 @@ runtimeclass CornerRadiusFilterConverter : Windows.UI.Xaml.DependencyObject, Win [WUXC_VERSION_MUXONLY] [webhosthidden] +[flags] enum CornerRadiusFilterKind { - None, - Top, - Right, - Bottom, - Left, - TopLeftValue, - BottomRightValue + None = 0x0000, + TopLeft = 0x0001, + TopRight = 0x0002, + BottomLeft = 0x0004, + BottomRight = 0x0008, + Top = TopLeft | TopRight, + Left = TopLeft | BottomLeft, + Bottom = BottomLeft | BottomRight, + Right = TopRight | BottomRight, + ValueOnly = 0x0010, }; } diff --git a/dev/CommonStyles/CornerRadius_themeresources.xaml b/dev/CommonStyles/CornerRadius_themeresources.xaml index f1416c5464..adecbcf25b 100644 --- a/dev/CommonStyles/CornerRadius_themeresources.xaml +++ b/dev/CommonStyles/CornerRadius_themeresources.xaml @@ -22,7 +22,7 @@ - - + + From 96404220812742c4b0b3e909813c4df707927759 Mon Sep 17 00:00:00 2001 From: Kai Guo Date: Fri, 30 Aug 2019 17:20:35 -0700 Subject: [PATCH 2/2] Cleanups --- dev/Common/CornerRadiusFilterConverter.cpp | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/dev/Common/CornerRadiusFilterConverter.cpp b/dev/Common/CornerRadiusFilterConverter.cpp index a83a03b38d..4aba87d450 100644 --- a/dev/Common/CornerRadiusFilterConverter.cpp +++ b/dev/Common/CornerRadiusFilterConverter.cpp @@ -36,26 +36,20 @@ winrt::CornerRadius CornerRadiusFilterConverter::Convert(winrt::CornerRadius con double CornerRadiusFilterConverter::GetDoubleValue(winrt::CornerRadius const& radius, winrt::CornerRadiusFilterKind const& filterKind) { - if ((filterKind & FilterKind::TopLeft) == FilterKind::TopLeft) + switch (filterKind) { + case FilterKind::TopLeft: return radius.TopLeft; - } - if ((filterKind & FilterKind::TopRight) == FilterKind::TopRight) - { + case FilterKind::TopRight: return radius.TopRight; - } - if ((filterKind & FilterKind::BottomLeft) == FilterKind::BottomLeft) - { + case FilterKind::BottomLeft: return radius.BottomLeft; - } - if ((filterKind & FilterKind::BottomRight) == FilterKind::BottomRight) - { + case FilterKind::BottomRight: return radius.BottomRight; } - return 0; }