@@ -915,117 +915,117 @@ private static void ConfigureGradientBrush(ref PaintWrapper paintWrapper, Rect t
915
915
break ;
916
916
}
917
917
case IRadialGradientBrush radialGradient :
918
- {
919
- var centerPoint = radialGradient . Center . ToPixels ( targetRect ) ;
920
- var center = centerPoint . ToSKPoint ( ) ;
918
+ {
919
+ var centerPoint = radialGradient . Center . ToPixels ( targetRect ) ;
920
+ var center = centerPoint . ToSKPoint ( ) ;
921
921
922
- var radiusX = ( radialGradient . RadiusX . ToValue ( targetRect . Width ) ) ;
923
- var radiusY = ( radialGradient . RadiusY . ToValue ( targetRect . Height ) ) ;
922
+ var radiusX = ( radialGradient . RadiusX . ToValue ( targetRect . Width ) ) ;
923
+ var radiusY = ( radialGradient . RadiusY . ToValue ( targetRect . Height ) ) ;
924
924
925
- var originPoint = radialGradient . GradientOrigin . ToPixels ( targetRect ) ;
925
+ var originPoint = radialGradient . GradientOrigin . ToPixels ( targetRect ) ;
926
926
927
- Matrix ? transform = null ;
927
+ Matrix ? transform = null ;
928
928
929
- if ( radiusX != radiusY )
930
- transform =
931
- Matrix . CreateTranslation ( - centerPoint )
932
- * Matrix . CreateScale ( 1 , radiusY / radiusX )
933
- * Matrix . CreateTranslation ( centerPoint ) ;
929
+ if ( radiusX != radiusY )
930
+ transform =
931
+ Matrix . CreateTranslation ( - centerPoint )
932
+ * Matrix . CreateScale ( 1 , radiusY / radiusX )
933
+ * Matrix . CreateTranslation ( centerPoint ) ;
934
934
935
935
936
- if ( radialGradient . Transform != null )
937
- {
938
- var transformOrigin = radialGradient . TransformOrigin . ToPixels ( targetRect ) ;
939
- var offset = Matrix . CreateTranslation ( transformOrigin ) ;
940
- var brushTransform = ( - offset ) * radialGradient . Transform . Value * ( offset ) ;
941
- transform = transform . HasValue ? transform * brushTransform : brushTransform ;
942
- }
936
+ if ( radialGradient . Transform != null )
937
+ {
938
+ var transformOrigin = radialGradient . TransformOrigin . ToPixels ( targetRect ) ;
939
+ var offset = Matrix . CreateTranslation ( transformOrigin ) ;
940
+ var brushTransform = ( - offset ) * radialGradient . Transform . Value * ( offset ) ;
941
+ transform = transform . HasValue ? transform * brushTransform : brushTransform ;
942
+ }
943
943
944
- if ( originPoint . Equals ( centerPoint ) )
944
+ if ( originPoint . Equals ( centerPoint ) )
945
+ {
946
+ // when the origin is the same as the center the Skia RadialGradient acts the same as D2D
947
+ using ( var shader =
948
+ transform . HasValue
949
+ ? SKShader . CreateRadialGradient ( center , ( float ) radiusX , stopColors , stopOffsets , tileMode ,
950
+ transform . Value . ToSKMatrix ( ) )
951
+ : SKShader . CreateRadialGradient ( center , ( float ) radiusX , stopColors , stopOffsets , tileMode )
952
+ )
945
953
{
946
- // when the origin is the same as the center the Skia RadialGradient acts the same as D2D
947
- using ( var shader =
948
- transform . HasValue
949
- ? SKShader . CreateRadialGradient ( center , ( float ) radiusX , stopColors , stopOffsets , tileMode ,
950
- transform . Value . ToSKMatrix ( ) )
951
- : SKShader . CreateRadialGradient ( center , ( float ) radiusX , stopColors , stopOffsets , tileMode )
952
- )
953
- {
954
- paintWrapper . Paint . Shader = shader ;
955
- }
954
+ paintWrapper . Paint . Shader = shader ;
956
955
}
957
- else
958
- {
959
- // when the origin is different to the center use a two point ConicalGradient to match the behaviour of D2D
956
+ }
957
+ else
958
+ {
959
+ // when the origin is different to the center use a two point ConicalGradient to match the behaviour of D2D
960
960
961
- if ( radiusX != radiusY )
962
- // Adjust the origin point for radiusX/Y transformation by reversing it
963
- originPoint = originPoint . WithY (
964
- ( originPoint . Y - centerPoint . Y ) * radiusX / radiusY + centerPoint . Y ) ;
961
+ if ( radiusX != radiusY )
962
+ // Adjust the origin point for radiusX/Y transformation by reversing it
963
+ originPoint = originPoint . WithY (
964
+ ( originPoint . Y - centerPoint . Y ) * radiusX / radiusY + centerPoint . Y ) ;
965
965
966
- var origin = originPoint . ToSKPoint ( ) ;
966
+ var origin = originPoint . ToSKPoint ( ) ;
967
967
968
- var endOffset = 0.0 ;
968
+ var endOffset = 0.0 ;
969
969
970
- // and then reverse the reference point of the stops
971
- var reversedStops = new float [ stopOffsets . Length ] ;
970
+ // and then reverse the reference point of the stops
971
+ var reversedStops = new float [ stopOffsets . Length ] ;
972
972
973
- for ( var i = 0 ; i < stopOffsets . Length ; i ++ )
974
- {
975
- var offset = stopOffsets [ i ] ;
973
+ for ( var i = 0 ; i < stopOffsets . Length ; i ++ )
974
+ {
975
+ var offset = stopOffsets [ i ] ;
976
976
977
- if ( endOffset < offset )
978
- {
979
- endOffset = offset ;
980
- }
977
+ if ( endOffset < offset )
978
+ {
979
+ endOffset = offset ;
980
+ }
981
981
982
- reversedStops [ i ] = offset ;
982
+ reversedStops [ i ] = offset ;
983
983
984
- if ( reversedStops [ i ] > 0 && reversedStops [ i ] < 1 )
985
- {
986
- reversedStops [ i ] = Math . Abs ( 1 - offset ) ;
987
- }
984
+ if ( reversedStops [ i ] > 0 && reversedStops [ i ] < 1 )
985
+ {
986
+ reversedStops [ i ] = Math . Abs ( 1 - offset ) ;
988
987
}
988
+ }
989
989
990
- var start = origin ;
991
- var radiusStart = 0f ;
990
+ var start = origin ;
991
+ var radiusStart = 0f ;
992
992
993
- var end = center ;
994
- var radiusEnd = ( float ) radiusX ;
993
+ var end = center ;
994
+ var radiusEnd = ( float ) radiusX ;
995
995
996
- var reverse = MathUtilities . AreClose ( 1 , endOffset ) ;
996
+ var reverse = MathUtilities . AreClose ( 1 , endOffset ) ;
997
997
998
- if ( reverse )
999
- {
1000
- ( start , radiusStart , end , radiusEnd ) = ( end , radiusEnd , start , radiusStart ) ;
998
+ if ( reverse )
999
+ {
1000
+ ( start , radiusStart , end , radiusEnd ) = ( end , radiusEnd , start , radiusStart ) ;
1001
1001
1002
- // reverse the order of the stops to match D2D
1003
- var reversedColors = new SKColor [ stopColors . Length ] ;
1004
- Array . Copy ( stopColors , reversedColors , stopColors . Length ) ;
1005
- Array . Reverse ( reversedColors ) ;
1002
+ // reverse the order of the stops to match D2D
1003
+ var reversedColors = new SKColor [ stopColors . Length ] ;
1004
+ Array . Copy ( stopColors , reversedColors , stopColors . Length ) ;
1005
+ Array . Reverse ( reversedColors ) ;
1006
1006
1007
- stopColors = reversedColors ;
1008
- stopOffsets = reversedStops ;
1009
- }
1007
+ stopColors = reversedColors ;
1008
+ stopOffsets = reversedStops ;
1009
+ }
1010
1010
1011
- // compose with a background colour of the final stop to match D2D's behaviour of filling with the final color
1012
- using ( var shader = SKShader . CreateCompose (
1013
- SKShader . CreateColor ( stopColors [ 0 ] ) ,
1014
- transform . HasValue
1015
- ? SKShader . CreateTwoPointConicalGradient ( start , radiusStart , end , radiusEnd ,
1016
- stopColors , stopOffsets , tileMode , transform . Value . ToSKMatrix ( ) )
1017
- : SKShader . CreateTwoPointConicalGradient ( start , radiusStart , end , radiusEnd ,
1018
- stopColors , stopOffsets , tileMode )
1011
+ // compose with a background colour of the final stop to match D2D's behaviour of filling with the final color
1012
+ using ( var shader = SKShader . CreateCompose (
1013
+ SKShader . CreateColor ( stopColors [ 0 ] ) ,
1014
+ transform . HasValue
1015
+ ? SKShader . CreateTwoPointConicalGradient ( start , radiusStart , end , radiusEnd ,
1016
+ stopColors , stopOffsets , tileMode , transform . Value . ToSKMatrix ( ) )
1017
+ : SKShader . CreateTwoPointConicalGradient ( start , radiusStart , end , radiusEnd ,
1018
+ stopColors , stopOffsets , tileMode )
1019
1019
1020
1020
)
1021
- )
1022
- {
1023
- paintWrapper . Paint . Shader = shader ;
1024
- }
1025
- }
1026
-
1027
- break ;
1021
+ )
1022
+ {
1023
+ paintWrapper . Paint . Shader = shader ;
1024
+ }
1028
1025
}
1026
+
1027
+ break ;
1028
+ }
1029
1029
case IConicGradientBrush conicGradient :
1030
1030
{
1031
1031
var center = conicGradient . Center . ToPixels ( targetRect ) . ToSKPoint ( ) ;
0 commit comments