| Index: src/gpu/effects/GrPorterDuffXferProcessor.cpp
|
| diff --git a/src/gpu/effects/GrPorterDuffXferProcessor.cpp b/src/gpu/effects/GrPorterDuffXferProcessor.cpp
|
| index fdbcbbe656d266305cc08612a85dc0e2f22c6abd..9b13a00bc9e50c0613c54644c5f811f93c8dff8d 100644
|
| --- a/src/gpu/effects/GrPorterDuffXferProcessor.cpp
|
| +++ b/src/gpu/effects/GrPorterDuffXferProcessor.cpp
|
| @@ -61,6 +61,88 @@ void GrPorterDuffXferProcessor::onComputeInvariantOutput(GrInvariantOutput* inou
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
|
|
| +GrXPFactory* GrPorterDuffXPFactory::Create(SkXfermode::Mode mode) {
|
| + switch (mode) {
|
| + case SkXfermode::kClear_Mode:
|
| + GR_CREATE_STATIC_XP_FACTORY(gClearPDXPF, GrPorterDuffXPFactory, (kZero_GrBlendCoeff,
|
| + kZero_GrBlendCoeff));
|
| + return SkRef(gClearPDXPF);
|
| + break;
|
| + case SkXfermode::kSrc_Mode:
|
| + GR_CREATE_STATIC_XP_FACTORY(gSrcPDXPF, GrPorterDuffXPFactory, (kOne_GrBlendCoeff,
|
| + kZero_GrBlendCoeff));
|
| + return SkRef(gSrcPDXPF);
|
| + break;
|
| + case SkXfermode::kDst_Mode:
|
| + GR_CREATE_STATIC_XP_FACTORY(gDstPDXPF, GrPorterDuffXPFactory, (kZero_GrBlendCoeff,
|
| + kOne_GrBlendCoeff));
|
| + return SkRef(gDstPDXPF);
|
| + break;
|
| + case SkXfermode::kSrcOver_Mode:
|
| + GR_CREATE_STATIC_XP_FACTORY(gSrcOverPDXPF, GrPorterDuffXPFactory, (kOne_GrBlendCoeff,
|
| + kISA_GrBlendCoeff));
|
| + return SkRef(gSrcOverPDXPF);
|
| + break;
|
| + case SkXfermode::kDstOver_Mode:
|
| + GR_CREATE_STATIC_XP_FACTORY(gDstOverPDXPF, GrPorterDuffXPFactory, (kIDA_GrBlendCoeff,
|
| + kOne_GrBlendCoeff));
|
| + return SkRef(gDstOverPDXPF);
|
| + break;
|
| + case SkXfermode::kSrcIn_Mode:
|
| + GR_CREATE_STATIC_XP_FACTORY(gSrcInPDXPF, GrPorterDuffXPFactory, (kDA_GrBlendCoeff,
|
| + kZero_GrBlendCoeff));
|
| + return SkRef(gSrcInPDXPF);
|
| + break;
|
| + case SkXfermode::kDstIn_Mode:
|
| + GR_CREATE_STATIC_XP_FACTORY(gDstInPDXPF, GrPorterDuffXPFactory, (kZero_GrBlendCoeff,
|
| + kSA_GrBlendCoeff));
|
| + return SkRef(gDstInPDXPF);
|
| + break;
|
| + case SkXfermode::kSrcOut_Mode:
|
| + GR_CREATE_STATIC_XP_FACTORY(gSrcOutPDXPF, GrPorterDuffXPFactory, (kIDA_GrBlendCoeff,
|
| + kZero_GrBlendCoeff));
|
| + return SkRef(gSrcOutPDXPF);
|
| + break;
|
| + case SkXfermode::kDstOut_Mode:
|
| + GR_CREATE_STATIC_XP_FACTORY(gDstOutPDXPF, GrPorterDuffXPFactory, (kZero_GrBlendCoeff,
|
| + kISA_GrBlendCoeff));
|
| + return SkRef(gDstOutPDXPF);
|
| + break;
|
| + case SkXfermode::kSrcATop_Mode:
|
| + GR_CREATE_STATIC_XP_FACTORY(gSrcATopPDXPF, GrPorterDuffXPFactory, (kDA_GrBlendCoeff,
|
| + kISA_GrBlendCoeff));
|
| + return SkRef(gSrcATopPDXPF);
|
| + break;
|
| + case SkXfermode::kDstATop_Mode:
|
| + GR_CREATE_STATIC_XP_FACTORY(gDstATopPDXPF, GrPorterDuffXPFactory, (kIDA_GrBlendCoeff,
|
| + kSA_GrBlendCoeff));
|
| + return SkRef(gDstATopPDXPF);
|
| + break;
|
| + case SkXfermode::kXor_Mode:
|
| + GR_CREATE_STATIC_XP_FACTORY(gXorPDXPF, GrPorterDuffXPFactory, (kIDA_GrBlendCoeff,
|
| + kISA_GrBlendCoeff));
|
| + return SkRef(gXorPDXPF);
|
| + break;
|
| + case SkXfermode::kPlus_Mode:
|
| + GR_CREATE_STATIC_XP_FACTORY(gPlusPDXPF, GrPorterDuffXPFactory, (kOne_GrBlendCoeff,
|
| + kOne_GrBlendCoeff));
|
| + return SkRef(gPlusPDXPF);
|
| + break;
|
| + case SkXfermode::kModulate_Mode:
|
| + GR_CREATE_STATIC_XP_FACTORY(gModulatePDXPF, GrPorterDuffXPFactory, (kZero_GrBlendCoeff,
|
| + kSC_GrBlendCoeff));
|
| + return SkRef(gModulatePDXPF);
|
| + break;
|
| + case SkXfermode::kScreen_Mode:
|
| + GR_CREATE_STATIC_XP_FACTORY(gScreenPDXPF, GrPorterDuffXPFactory, (kOne_GrBlendCoeff,
|
| + kISC_GrBlendCoeff));
|
| + return SkRef(gScreenPDXPF);
|
| + break;
|
| + default:
|
| + return NULL;
|
| + }
|
| +}
|
| +
|
| const GrXferProcessor* GrPorterDuffXPFactory::createXferProcessor() const {
|
| return GrPorterDuffXferProcessor::Create(fSrc, fDst);
|
| }
|
|
|