fb855ee520203d070b555f46922303c8e3c3b147
[platform/upstream/libSkiaSharp.git] / src / gpu / effects / GrDisableColorXP.h
1 /*
2  * Copyright 2014 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7
8 #ifndef GrDisableColorXP_DEFINED
9 #define GrDisableColorXP_DEFINED
10
11 #include "GrTypes.h"
12 #include "GrXferProcessor.h"
13
14 class GrProcOptInfo;
15
16 class GrDisableColorXPFactory : public GrXPFactory {
17 public:
18     static GrXPFactory* Create() {
19         return SkNEW(GrDisableColorXPFactory);
20     }
21
22     bool supportsRGBCoverage(GrColor knownColor, uint32_t knownColorFlags) const SK_OVERRIDE {
23         return true;
24     }
25
26     bool canTweakAlphaForCoverage() const SK_OVERRIDE { return true; }
27
28     void getInvariantOutput(const GrProcOptInfo& colorPOI, const GrProcOptInfo& coveragePOI,
29                             GrXPFactory::InvariantOutput* output) const SK_OVERRIDE {
30         output->fBlendedColorFlags = 0;
31         output->fWillBlendWithDst = 0;
32     }
33
34 private:
35     GrDisableColorXPFactory();
36
37     GrXferProcessor* onCreateXferProcessor(const GrDrawTargetCaps& caps,
38                                            const GrProcOptInfo& colorPOI,
39                                            const GrProcOptInfo& coveragePOI,
40                                            const GrDeviceCoordTexture* dstCopy) const SK_OVERRIDE;
41
42     bool willReadDstColor(const GrDrawTargetCaps& caps,
43                           const GrProcOptInfo& colorPOI,
44                           const GrProcOptInfo& coveragePOI) const SK_OVERRIDE {
45         return false;
46     }
47
48     bool onIsEqual(const GrXPFactory& xpfBase) const SK_OVERRIDE {
49         return true;
50     }
51
52     GR_DECLARE_XP_FACTORY_TEST;
53
54     typedef GrXPFactory INHERITED;
55 };
56
57 #endif
58