aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2010-09-09 15:02:53 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-09-09 15:02:53 -0700
commit7c189b7a15784526ef7ea085a791e4e7d9f7b438 (patch)
tree5d43bb59bdcf1f1e0ede55b738eff6e018076378 /src
parentae290f9053b28292fee88fb589ee349425d3c7e8 (diff)
parent064c4371c21a4205ed6acdb3c839e4e7805e346b (diff)
downloadexternal_skia-7c189b7a15784526ef7ea085a791e4e7d9f7b438.zip
external_skia-7c189b7a15784526ef7ea085a791e4e7d9f7b438.tar.gz
external_skia-7c189b7a15784526ef7ea085a791e4e7d9f7b438.tar.bz2
Merge "Expose Xfermode's mode in the SkXfermode class."
Diffstat (limited to 'src')
-rw-r--r--src/core/SkXfermode.cpp22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/core/SkXfermode.cpp b/src/core/SkXfermode.cpp
index 8d1531a..dece914 100644
--- a/src/core/SkXfermode.cpp
+++ b/src/core/SkXfermode.cpp
@@ -941,30 +941,36 @@ SkXfermode* SkXfermode::Create(Mode mode) {
SkASSERT(SK_ARRAY_COUNT(gProcCoeffs) == kModeCount);
SkASSERT((unsigned)mode < kModeCount);
+ SkXfermode* xferMode = NULL;
switch (mode) {
case kClear_Mode:
- return SkNEW(SkClearXfermode);
+ xferMode = SkNEW(SkClearXfermode);
+ break;
case kSrc_Mode:
- return SkNEW(SkSrcXfermode);
+ xferMode = SkNEW(SkSrcXfermode);
+ break;
case kSrcOver_Mode:
return NULL;
case kDstIn_Mode:
- return SkNEW(SkDstInXfermode);
+ xferMode = SkNEW(SkDstInXfermode);
+ break;
case kDstOut_Mode:
- return SkNEW(SkDstOutXfermode);
+ xferMode = SkNEW(SkDstOutXfermode);
+ break;
// use the table
default: {
const ProcCoeff& rec = gProcCoeffs[mode];
if ((unsigned)rec.fSC < SkXfermode::kCoeffCount &&
(unsigned)rec.fDC < SkXfermode::kCoeffCount) {
- return SkNEW_ARGS(SkProcCoeffXfermode, (rec.fProc,
- rec.fSC,
- rec.fDC));
+ xferMode = SkNEW_ARGS(SkProcCoeffXfermode, (rec.fProc, rec.fSC, rec.fDC));
} else {
- return SkNEW_ARGS(SkProcXfermode, (rec.fProc));
+ xferMode = SkNEW_ARGS(SkProcXfermode, (rec.fProc));
}
+ break;
}
}
+ xferMode->fMode = mode;
+ return xferMode;
}
bool SkXfermode::IsMode(SkXfermode* xfer, Mode* mode) {