Skip to content

Commit

Permalink
Update SvgExtensions.Painting.cs
Browse files Browse the repository at this point in the history
  • Loading branch information
wieslawsoltes committed Aug 16, 2021
1 parent 98592bb commit ac33a04
Showing 1 changed file with 14 additions and 15 deletions.
29 changes: 14 additions & 15 deletions src/Svg.Model/SvgExtensions.Painting.cs
Original file line number Diff line number Diff line change
Expand Up @@ -474,14 +474,13 @@ internal static SKShader CreateTwoPointConicalGradient(SvgRadialGradientServer s
var centerX = normalizedCenterX.ToDeviceValue(UnitRenderingType.Horizontal, svgRadialGradientServer, skBounds);
var centerY = normalizedCenterY.ToDeviceValue(UnitRenderingType.Vertical, svgRadialGradientServer, skBounds);

var startRadius = 0f;
var endRadius = normalizedRadius.ToDeviceValue(UnitRenderingType.Other, svgRadialGradientServer, skBounds);
var radius = normalizedRadius.ToDeviceValue(UnitRenderingType.Other, svgRadialGradientServer, skBounds);

var focalX = normalizedFocalX.ToDeviceValue(UnitRenderingType.Horizontal, svgRadialGradientServer, skBounds);
var focalY = normalizedFocalY.ToDeviceValue(UnitRenderingType.Vertical, svgRadialGradientServer, skBounds);

var skStart = new SKPoint(centerX, centerY);
var skEnd = new SKPoint(focalX, focalY);
var skCenter = new SKPoint(centerX, centerY);
var skFocal = new SKPoint(focalX, focalY);

var colors = new List<SKColor>();
var colorPos = new List<float>();
Expand All @@ -507,14 +506,14 @@ internal static SKShader CreateTwoPointConicalGradient(SvgRadialGradientServer s
return SKShader.CreateColor(skColors[0], skColorSpace);
}

if (endRadius == 0.0)
if (radius == 0.0)
{
return SKShader.CreateColor(
skColors.Length > 0 ? skColors[skColors.Length - 1] : new SKColor(0x00, 0x00, 0x00, 0xFF),
skColorSpace);
}

var isRadialGradient = skStart.X == skEnd.X && skStart.Y == skEnd.Y;
var isRadialGradient = skCenter.X == skFocal.X && skCenter.Y == skFocal.Y;

if (svgGradientUnits == SvgCoordinateUnits.ObjectBoundingBox)
{
Expand Down Expand Up @@ -542,16 +541,16 @@ internal static SKShader CreateTwoPointConicalGradient(SvgRadialGradientServer s
if (isRadialGradient)
{
return SKShader.CreateRadialGradient(
skStart, endRadius,
skCenter, radius,
skColorsF, skColorSpace, skColorPos,
shaderTileMode,
skBoundingBoxTransform);
}
else
{
return SKShader.CreateTwoPointConicalGradient(
skStart, startRadius,
skEnd, endRadius,
skFocal, 0,
skCenter, radius,
skColorsF, skColorSpace, skColorPos,
shaderTileMode,
skBoundingBoxTransform);
Expand All @@ -566,16 +565,16 @@ internal static SKShader CreateTwoPointConicalGradient(SvgRadialGradientServer s
if (isRadialGradient)
{
return SKShader.CreateRadialGradient(
skStart, endRadius,
skCenter, radius,
skColorsF, skColorSpace, skColorPos,
shaderTileMode,
gradientTransform);
}
else
{
return SKShader.CreateTwoPointConicalGradient(
skStart, startRadius,
skEnd, endRadius,
skFocal, 0,
skCenter, radius,
skColorsF, skColorSpace, skColorPos,
shaderTileMode, gradientTransform);
}
Expand All @@ -586,15 +585,15 @@ internal static SKShader CreateTwoPointConicalGradient(SvgRadialGradientServer s
if (isRadialGradient)
{
return SKShader.CreateRadialGradient(
skStart, endRadius,
skCenter, radius,
skColorsF, skColorSpace, skColorPos,
shaderTileMode);
}
else
{
return SKShader.CreateTwoPointConicalGradient(
skStart, startRadius,
skEnd, endRadius,
skFocal, 0,
skCenter, radius,
skColorsF, skColorSpace, skColorPos,
shaderTileMode);
}
Expand Down

0 comments on commit ac33a04

Please sign in to comment.