blob: 62a9a0c5efb1e18ecab4f99ac63e8d4cf6316f2a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
/*
* Copyright 2017 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
/*
* This file was autogenerated from GrConstColorProcessor.fp; do not modify.
*/
#ifndef GrConstColorProcessor_DEFINED
#define GrConstColorProcessor_DEFINED
#include "SkTypes.h"
#if SK_SUPPORT_GPU
#include "GrFragmentProcessor.h"
#include "GrCoordTransform.h"
class GrConstColorProcessor : public GrFragmentProcessor {
public:
enum class InputMode { kLast = 2, kModulateA = 2, kModulateRGBA = 1, kIgnore = 0 };
static const int kInputModeCnt = (int)InputMode::kLast + 1;
static OptimizationFlags OptFlags(GrColor4f color, InputMode mode) {
OptimizationFlags flags = kConstantOutputForConstantInput_OptimizationFlag;
if (mode != InputMode::kIgnore) {
flags |= kCompatibleWithCoverageAsAlpha_OptimizationFlag;
}
if (color.isOpaque()) {
flags |= kPreservesOpaqueInput_OptimizationFlag;
}
return flags;
}
GrColor4f constantOutputForConstantInput(GrColor4f input) const override {
switch (fMode) {
case InputMode::kIgnore:
return fColor;
case InputMode::kModulateA:
return fColor.mulByScalar(input.fRGBA[3]);
case InputMode::kModulateRGBA:
return fColor.modulate(input);
}
SK_ABORT("Unexpected mode");
return GrColor4f::TransparentBlack();
}
GrColor4f color() const { return fColor; }
InputMode mode() const { return fMode; }
static std::unique_ptr<GrFragmentProcessor> Make(GrColor4f color, InputMode mode) {
return std::unique_ptr<GrFragmentProcessor>(new GrConstColorProcessor(color, mode));
}
GrConstColorProcessor(const GrConstColorProcessor& src);
std::unique_ptr<GrFragmentProcessor> clone() const override;
const char* name() const override { return "ConstColorProcessor"; }
private:
GrConstColorProcessor(GrColor4f color, InputMode mode)
: INHERITED(kGrConstColorProcessor_ClassID, (OptimizationFlags)OptFlags(color, mode))
, fColor(color)
, fMode(mode) {}
GrGLSLFragmentProcessor* onCreateGLSLInstance() const override;
void onGetGLSLProcessorKey(const GrShaderCaps&, GrProcessorKeyBuilder*) const override;
bool onIsEqual(const GrFragmentProcessor&) const override;
GR_DECLARE_FRAGMENT_PROCESSOR_TEST
GrColor4f fColor;
InputMode fMode;
typedef GrFragmentProcessor INHERITED;
};
#endif
#endif
|