blob: 4c30fbaf94e71f22ebe733653989b76e16586cda [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
13#include "SkTypes.h"
14#include "GrFragmentProcessor.h"
15#include "GrCoordTransform.h"
16class GrMixerEffect : public GrFragmentProcessor {
17public:
18 static OptimizationFlags OptFlags(const std::unique_ptr<GrFragmentProcessor>& fp0,
19 const std::unique_ptr<GrFragmentProcessor>& fp1) {
Brian Salomonc0d79e52019-04-10 15:02:11 -040020 auto flags = ProcessorOptimizationFlags(fp0.get());
21 if (fp1) {
22 flags &= ProcessorOptimizationFlags(fp1.get());
23 }
24 return flags;
Florin Malita6041d312019-03-05 15:03:20 +000025 }
26
27 SkPMColor4f constantOutputForConstantInput(const SkPMColor4f& input) const override {
28 const auto c0 = ConstantOutputForConstantInput(this->childProcessor(0), input),
29 c1 = (this->numChildProcessors() > 1)
30 ? ConstantOutputForConstantInput(this->childProcessor(1), input)
31 : input;
Ethan Nicholasbcd51e82019-04-09 10:40:41 -040032 return {c0.fR + (c1.fR - c0.fR) * weight, c0.fG + (c1.fG - c0.fG) * weight,
33 c0.fB + (c1.fB - c0.fB) * weight, c0.fA + (c1.fA - c0.fA) * weight};
Florin Malita6041d312019-03-05 15:03:20 +000034 }
Florin Malita6041d312019-03-05 15:03:20 +000035 static std::unique_ptr<GrFragmentProcessor> Make(std::unique_ptr<GrFragmentProcessor> fp0,
Mike Kleind6ab77a2019-03-21 08:18:24 -050036 std::unique_ptr<GrFragmentProcessor>
37 fp1,
38 float weight) {
Florin Malita6041d312019-03-05 15:03:20 +000039 return std::unique_ptr<GrFragmentProcessor>(
40 new GrMixerEffect(std::move(fp0), std::move(fp1), weight));
41 }
42 GrMixerEffect(const GrMixerEffect& src);
43 std::unique_ptr<GrFragmentProcessor> clone() const override;
Mike Kleind6ab77a2019-03-21 08:18:24 -050044 const char* name() const override { return "MixerEffect"; }
Ethan Nicholasbcd51e82019-04-09 10:40:41 -040045 int fp0_index = -1;
46 int fp1_index = -1;
47 float weight;
Florin Malita6041d312019-03-05 15:03:20 +000048
49private:
50 GrMixerEffect(std::unique_ptr<GrFragmentProcessor> fp0,
Mike Kleind6ab77a2019-03-21 08:18:24 -050051 std::unique_ptr<GrFragmentProcessor>
52 fp1,
53 float weight)
Florin Malita6041d312019-03-05 15:03:20 +000054 : INHERITED(kGrMixerEffect_ClassID, (OptimizationFlags)OptFlags(fp0, fp1))
Ethan Nicholasbcd51e82019-04-09 10:40:41 -040055 , weight(weight) {
Florin Malita6041d312019-03-05 15:03:20 +000056 SkASSERT(fp0);
Ethan Nicholasbcd51e82019-04-09 10:40:41 -040057 fp0_index = this->numChildProcessors();
Florin Malita6041d312019-03-05 15:03:20 +000058 this->registerChildProcessor(std::move(fp0));
59 if (fp1) {
Ethan Nicholasbcd51e82019-04-09 10:40:41 -040060 fp1_index = this->numChildProcessors();
Florin Malita6041d312019-03-05 15:03:20 +000061 this->registerChildProcessor(std::move(fp1));
62 }
63 }
64 GrGLSLFragmentProcessor* onCreateGLSLInstance() const override;
65 void onGetGLSLProcessorKey(const GrShaderCaps&, GrProcessorKeyBuilder*) const override;
66 bool onIsEqual(const GrFragmentProcessor&) const override;
67 GR_DECLARE_FRAGMENT_PROCESSOR_TEST
Florin Malita6041d312019-03-05 15:03:20 +000068 typedef GrFragmentProcessor INHERITED;
69};
70#endif