blob: 44d345b7612ba0e841bfdd07452c130c99e7c598 [file] [log] [blame]
Florin Malita6041d312019-03-05 15:03:20 +00001/*
2 * Copyright 2019 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/**************************************************************************************************
9 *** This file was autogenerated from GrMixerEffect.fp; do not modify.
10 **************************************************************************************************/
11#ifndef GrMixerEffect_DEFINED
12#define GrMixerEffect_DEFINED
Mike Kleinc0bd9f92019-04-23 12:05:21 -050013#include "include/core/SkTypes.h"
14
15#include "src/gpu/GrCoordTransform.h"
16#include "src/gpu/GrFragmentProcessor.h"
Florin Malita6041d312019-03-05 15:03:20 +000017class GrMixerEffect : public GrFragmentProcessor {
18public:
19 static OptimizationFlags OptFlags(const std::unique_ptr<GrFragmentProcessor>& fp0,
20 const std::unique_ptr<GrFragmentProcessor>& fp1) {
Brian Salomonc0d79e52019-04-10 15:02:11 -040021 auto flags = ProcessorOptimizationFlags(fp0.get());
22 if (fp1) {
23 flags &= ProcessorOptimizationFlags(fp1.get());
24 }
25 return flags;
Florin Malita6041d312019-03-05 15:03:20 +000026 }
27
28 SkPMColor4f constantOutputForConstantInput(const SkPMColor4f& input) const override {
29 const auto c0 = ConstantOutputForConstantInput(this->childProcessor(0), input),
30 c1 = (this->numChildProcessors() > 1)
31 ? ConstantOutputForConstantInput(this->childProcessor(1), input)
32 : input;
Ethan Nicholasbcd51e82019-04-09 10:40:41 -040033 return {c0.fR + (c1.fR - c0.fR) * weight, c0.fG + (c1.fG - c0.fG) * weight,
34 c0.fB + (c1.fB - c0.fB) * weight, c0.fA + (c1.fA - c0.fA) * weight};
Florin Malita6041d312019-03-05 15:03:20 +000035 }
Florin Malita6041d312019-03-05 15:03:20 +000036 static std::unique_ptr<GrFragmentProcessor> Make(std::unique_ptr<GrFragmentProcessor> fp0,
Mike Kleind6ab77a2019-03-21 08:18:24 -050037 std::unique_ptr<GrFragmentProcessor>
38 fp1,
39 float weight) {
Florin Malita6041d312019-03-05 15:03:20 +000040 return std::unique_ptr<GrFragmentProcessor>(
41 new GrMixerEffect(std::move(fp0), std::move(fp1), weight));
42 }
43 GrMixerEffect(const GrMixerEffect& src);
44 std::unique_ptr<GrFragmentProcessor> clone() const override;
Mike Kleind6ab77a2019-03-21 08:18:24 -050045 const char* name() const override { return "MixerEffect"; }
Ethan Nicholasbcd51e82019-04-09 10:40:41 -040046 int fp0_index = -1;
47 int fp1_index = -1;
48 float weight;
Florin Malita6041d312019-03-05 15:03:20 +000049
50private:
51 GrMixerEffect(std::unique_ptr<GrFragmentProcessor> fp0,
Mike Kleind6ab77a2019-03-21 08:18:24 -050052 std::unique_ptr<GrFragmentProcessor>
53 fp1,
54 float weight)
Florin Malita6041d312019-03-05 15:03:20 +000055 : INHERITED(kGrMixerEffect_ClassID, (OptimizationFlags)OptFlags(fp0, fp1))
Ethan Nicholasbcd51e82019-04-09 10:40:41 -040056 , weight(weight) {
Florin Malita6041d312019-03-05 15:03:20 +000057 SkASSERT(fp0);
Ethan Nicholasbcd51e82019-04-09 10:40:41 -040058 fp0_index = this->numChildProcessors();
Florin Malita6041d312019-03-05 15:03:20 +000059 this->registerChildProcessor(std::move(fp0));
60 if (fp1) {
Ethan Nicholasbcd51e82019-04-09 10:40:41 -040061 fp1_index = this->numChildProcessors();
Florin Malita6041d312019-03-05 15:03:20 +000062 this->registerChildProcessor(std::move(fp1));
63 }
64 }
65 GrGLSLFragmentProcessor* onCreateGLSLInstance() const override;
66 void onGetGLSLProcessorKey(const GrShaderCaps&, GrProcessorKeyBuilder*) const override;
67 bool onIsEqual(const GrFragmentProcessor&) const override;
68 GR_DECLARE_FRAGMENT_PROCESSOR_TEST
Florin Malita6041d312019-03-05 15:03:20 +000069 typedef GrFragmentProcessor INHERITED;
70};
71#endif