diff options
author | 2017-02-21 16:32:20 -0500 | |
---|---|---|
committer | 2017-02-21 22:27:17 +0000 | |
commit | 94cce4cb2cf40b5ed3a1928c02618c1a98b1e0fa (patch) | |
tree | bd311de3092f22788eb90123138e444347b752db /src/gpu/GrPaint.cpp | |
parent | 5d5601c42982482552b9cde144558ddce9f789da (diff) |
Make GrXferProcessor and related classes private.
Change-Id: I81ea6f5ea5c8b7b23848ef24524a7e48e531efe8
Reviewed-on: https://skia-review.googlesource.com/8819
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'src/gpu/GrPaint.cpp')
-rw-r--r-- | src/gpu/GrPaint.cpp | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/gpu/GrPaint.cpp b/src/gpu/GrPaint.cpp index 6d37adf5e9..0282bc38d2 100644 --- a/src/gpu/GrPaint.cpp +++ b/src/gpu/GrPaint.cpp @@ -6,12 +6,16 @@ */ #include "GrPaint.h" - #include "GrProcOptInfo.h" +#include "GrXferProcessor.h" #include "effects/GrCoverageSetOpXP.h" #include "effects/GrPorterDuffXferProcessor.h" #include "effects/GrSimpleTextureEffect.h" +void GrPaint::setPorterDuffXPFactory(SkBlendMode mode) { + fXPFactory = GrPorterDuffXPFactory::Get(mode); +} + void GrPaint::setCoverageSetOpXPFactory(SkRegion::Op regionOp, bool invertCoverage) { fXPFactory = GrCoverageSetOpXPFactory::Get(regionOp, invertCoverage); } @@ -74,3 +78,22 @@ void GrPaint::addCoverageTextureProcessor(GrContext* ctx, sk_sp<GrTextureProxy> this->addCoverageFragmentProcessor(GrSimpleTextureEffect::Make(ctx, std::move(proxy), nullptr, matrix, params)); } + +bool GrPaint::isConstantBlendedColor(GrColor* constantColor) const { + // This used to do a more sophisticated analysis but now it just explicitly looks for common + // cases. + static const GrXPFactory* kSrc = GrPorterDuffXPFactory::Get(SkBlendMode::kSrc); + static const GrXPFactory* kClear = GrPorterDuffXPFactory::Get(SkBlendMode::kClear); + if (kClear == fXPFactory) { + *constantColor = GrColor_TRANSPARENT_BLACK; + return true; + } + if (this->numColorFragmentProcessors()) { + return false; + } + if (kSrc == fXPFactory || (!fXPFactory && fColor.isOpaque())) { + *constantColor = fColor.toGrColor(); + return true; + } + return false; +} |