Index: include/gpu/GrPaint.h |
diff --git a/include/gpu/GrPaint.h b/include/gpu/GrPaint.h |
index 49b95b8449357e4872c78ee158549cca05363a2a..f31830bb2bfa6d58361d9edfaef28f542d7dd7d9 100644 |
--- a/include/gpu/GrPaint.h |
+++ b/include/gpu/GrPaint.h |
@@ -13,7 +13,6 @@ |
#include "GrColor.h" |
#include "GrFragmentStage.h" |
#include "GrXferProcessor.h" |
-#include "effects/GrPorterDuffXferProcessor.h" |
#include "SkXfermode.h" |
@@ -52,6 +51,17 @@ |
~GrPaint() {} |
/** |
+ * Sets the blending coefficients to use to blend the final primitive color with the |
+ * destination color. Defaults to kOne for src and kZero for dst (i.e. src mode). |
+ */ |
+ void setBlendFunc(GrBlendCoeff srcCoeff, GrBlendCoeff dstCoeff) { |
+ fSrcBlendCoeff = srcCoeff; |
+ fDstBlendCoeff = dstCoeff; |
+ } |
+ GrBlendCoeff getSrcBlendCoeff() const { return fSrcBlendCoeff; } |
+ GrBlendCoeff getDstBlendCoeff() const { return fDstBlendCoeff; } |
+ |
+ /** |
* The initial color of the drawn primitive. Defaults to solid white. |
*/ |
void setColor(GrColor color) { fColor = color; } |
@@ -72,14 +82,6 @@ |
const GrXPFactory* setXPFactory(const GrXPFactory* xpFactory) { |
fXPFactory.reset(SkRef(xpFactory)); |
return xpFactory; |
- } |
- |
- void setPorterDuffXPFactory(SkXfermode::Mode mode) { |
- fXPFactory.reset(GrPorterDuffXPFactory::Create(mode)); |
- } |
- |
- void setPorterDuffXPFactory(GrBlendCoeff src, GrBlendCoeff dst) { |
- fXPFactory.reset(GrPorterDuffXPFactory::Create(src, dst)); |
} |
/** |
@@ -119,6 +121,8 @@ |
const GrFragmentStage& getCoverageStage(int s) const { return fCoverageStages[s]; } |
GrPaint& operator=(const GrPaint& paint) { |
+ fSrcBlendCoeff = paint.fSrcBlendCoeff; |
+ fDstBlendCoeff = paint.fDstBlendCoeff; |
fAntiAlias = paint.fAntiAlias; |
fDither = paint.fDither; |
@@ -136,6 +140,7 @@ |
* Resets the paint to the defaults. |
*/ |
void reset() { |
+ this->resetBlend(); |
this->resetOptions(); |
this->resetColor(); |
this->resetStages(); |
@@ -206,10 +211,17 @@ |
SkSTArray<4, GrFragmentStage> fColorStages; |
SkSTArray<2, GrFragmentStage> fCoverageStages; |
+ GrBlendCoeff fSrcBlendCoeff; |
+ GrBlendCoeff fDstBlendCoeff; |
bool fAntiAlias; |
bool fDither; |
GrColor fColor; |
+ |
+ void resetBlend() { |
+ fSrcBlendCoeff = kOne_GrBlendCoeff; |
+ fDstBlendCoeff = kZero_GrBlendCoeff; |
+ } |
void resetOptions() { |
fAntiAlias = false; |
@@ -220,7 +232,7 @@ |
fColor = GrColorPackRGBA(0xff, 0xff, 0xff, 0xff); |
} |
- void resetStages(); |
+ void resetStages(); |
}; |
#endif |