diff options
-rw-r--r-- | src/core/SkColorSpaceXformCanvas.cpp | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/src/core/SkColorSpaceXformCanvas.cpp b/src/core/SkColorSpaceXformCanvas.cpp index ede47ef76a..112709dc93 100644 --- a/src/core/SkColorSpaceXformCanvas.cpp +++ b/src/core/SkColorSpaceXformCanvas.cpp @@ -91,9 +91,34 @@ public: gradient.fTileMode, gradient.fGradientFlags, &shader->getLocalMatrix()); - case SkShader::kRadial_GradientType: break; // TODO - case SkShader::kSweep_GradientType: break; // TODO - case SkShader::kConical_GradientType: break; // TODO + case SkShader::kRadial_GradientType: + return SkGradientShader::MakeRadial(gradient.fPoint[0], + gradient.fRadius[0], + xformed.begin(), + gradient.fColorOffsets, + gradient.fColorCount, + gradient.fTileMode, + gradient.fGradientFlags, + &shader->getLocalMatrix()); + case SkShader::kSweep_GradientType: + return SkGradientShader::MakeSweep(gradient.fPoint[0].fX, + gradient.fPoint[0].fY, + xformed.begin(), + gradient.fColorOffsets, + gradient.fColorCount, + gradient.fGradientFlags, + &shader->getLocalMatrix()); + case SkShader::kConical_GradientType: + return SkGradientShader::MakeTwoPointConical(gradient.fPoint[0], + gradient.fRadius[0], + gradient.fPoint[1], + gradient.fRadius[1], + xformed.begin(), + gradient.fColorOffsets, + gradient.fColorCount, + gradient.fTileMode, + gradient.fGradientFlags, + &shader->getLocalMatrix()); } } |