1f461a8fdf642ba713dcdfb217534652df1eac278krajcevski/*
2130fb3f7aac19e40eddfc8fa85a9b39e7c99a7e8Ethan Nicholas * Copyright 2018 Google Inc.
3f461a8fdf642ba713dcdfb217534652df1eac278krajcevski *
4f461a8fdf642ba713dcdfb217534652df1eac278krajcevski * Use of this source code is governed by a BSD-style license that can be
5f461a8fdf642ba713dcdfb217534652df1eac278krajcevski * found in the LICENSE file.
6f461a8fdf642ba713dcdfb217534652df1eac278krajcevski */
7f461a8fdf642ba713dcdfb217534652df1eac278krajcevski
8130fb3f7aac19e40eddfc8fa85a9b39e7c99a7e8Ethan Nicholas/**************************************************************************************************
9130fb3f7aac19e40eddfc8fa85a9b39e7c99a7e8Ethan Nicholas *** This file was autogenerated from GrDitherEffect.fp; do not modify.
10130fb3f7aac19e40eddfc8fa85a9b39e7c99a7e8Ethan Nicholas **************************************************************************************************/
11f461a8fdf642ba713dcdfb217534652df1eac278krajcevski#ifndef GrDitherEffect_DEFINED
12f461a8fdf642ba713dcdfb217534652df1eac278krajcevski#define GrDitherEffect_DEFINED
13ceb4d48ef4839aab9d99d0200dcfe403ccd0cdf3Ethan Nicholas#include "SkTypes.h"
14ceb4d48ef4839aab9d99d0200dcfe403ccd0cdf3Ethan Nicholas#if SK_SUPPORT_GPU
15762466e9fe0478bcf11fba532998e81e33b3069eEthan Nicholas#include "GrFragmentProcessor.h"
16762466e9fe0478bcf11fba532998e81e33b3069eEthan Nicholas#include "GrCoordTransform.h"
17762466e9fe0478bcf11fba532998e81e33b3069eEthan Nicholasclass GrDitherEffect : public GrFragmentProcessor {
18762466e9fe0478bcf11fba532998e81e33b3069eEthan Nicholaspublic:
190c15ae82f0d5b5356f7650b78d749c09b3bc0403Brian Salomon    int rangeType() const { return fRangeType; }
200c15ae82f0d5b5356f7650b78d749c09b3bc0403Brian Salomon
21aff329b8e9b239bca1d93b13a914fbef45ccf7feBrian Salomon    static std::unique_ptr<GrFragmentProcessor> Make(GrPixelConfig dstConfig) {
220c15ae82f0d5b5356f7650b78d749c09b3bc0403Brian Salomon        int rangeType;
230c15ae82f0d5b5356f7650b78d749c09b3bc0403Brian Salomon        switch (dstConfig) {
240c15ae82f0d5b5356f7650b78d749c09b3bc0403Brian Salomon            case kGray_8_GrPixelConfig:
257af060a8bcc250af00b0dadaf10d414765dc94f9Greg Daniel            case kGray_8_as_Lum_GrPixelConfig:
267af060a8bcc250af00b0dadaf10d414765dc94f9Greg Daniel            case kGray_8_as_Red_GrPixelConfig:
270c15ae82f0d5b5356f7650b78d749c09b3bc0403Brian Salomon            case kRGBA_8888_GrPixelConfig:
280c15ae82f0d5b5356f7650b78d749c09b3bc0403Brian Salomon            case kBGRA_8888_GrPixelConfig:
290c15ae82f0d5b5356f7650b78d749c09b3bc0403Brian Salomon            case kSRGBA_8888_GrPixelConfig:
300c15ae82f0d5b5356f7650b78d749c09b3bc0403Brian Salomon            case kSBGRA_8888_GrPixelConfig:
310c15ae82f0d5b5356f7650b78d749c09b3bc0403Brian Salomon                rangeType = 0;
320c15ae82f0d5b5356f7650b78d749c09b3bc0403Brian Salomon                break;
330c15ae82f0d5b5356f7650b78d749c09b3bc0403Brian Salomon            case kRGB_565_GrPixelConfig:
340c15ae82f0d5b5356f7650b78d749c09b3bc0403Brian Salomon                rangeType = 1;
350c15ae82f0d5b5356f7650b78d749c09b3bc0403Brian Salomon                break;
360c15ae82f0d5b5356f7650b78d749c09b3bc0403Brian Salomon            case kRGBA_4444_GrPixelConfig:
370c15ae82f0d5b5356f7650b78d749c09b3bc0403Brian Salomon                rangeType = 2;
380c15ae82f0d5b5356f7650b78d749c09b3bc0403Brian Salomon                break;
390c15ae82f0d5b5356f7650b78d749c09b3bc0403Brian Salomon            case kUnknown_GrPixelConfig:
4010fc6fddf24878f4f34e75c1bcc11e4499edfcc0Brian Osman            case kRGBA_1010102_GrPixelConfig:
410c15ae82f0d5b5356f7650b78d749c09b3bc0403Brian Salomon            case kAlpha_half_GrPixelConfig:
42ef59d87ae8cd998eede62e7dfd46882cdfcc1817Greg Daniel            case kAlpha_half_as_Red_GrPixelConfig:
430c15ae82f0d5b5356f7650b78d749c09b3bc0403Brian Salomon            case kRGBA_float_GrPixelConfig:
440c15ae82f0d5b5356f7650b78d749c09b3bc0403Brian Salomon            case kRG_float_GrPixelConfig:
450c15ae82f0d5b5356f7650b78d749c09b3bc0403Brian Salomon            case kRGBA_half_GrPixelConfig:
460c15ae82f0d5b5356f7650b78d749c09b3bc0403Brian Salomon            case kAlpha_8_GrPixelConfig:
47ef59d87ae8cd998eede62e7dfd46882cdfcc1817Greg Daniel            case kAlpha_8_as_Alpha_GrPixelConfig:
48ef59d87ae8cd998eede62e7dfd46882cdfcc1817Greg Daniel            case kAlpha_8_as_Red_GrPixelConfig:
490c15ae82f0d5b5356f7650b78d749c09b3bc0403Brian Salomon                return nullptr;
500c15ae82f0d5b5356f7650b78d749c09b3bc0403Brian Salomon        }
51aff329b8e9b239bca1d93b13a914fbef45ccf7feBrian Salomon        return std::unique_ptr<GrFragmentProcessor>(new GrDitherEffect(rangeType));
52762466e9fe0478bcf11fba532998e81e33b3069eEthan Nicholas    }
53f57c0d67611186ba74179b53b421e64b63a579c7Ethan Nicholas    GrDitherEffect(const GrDitherEffect& src);
54aff329b8e9b239bca1d93b13a914fbef45ccf7feBrian Salomon    std::unique_ptr<GrFragmentProcessor> clone() const override;
55762466e9fe0478bcf11fba532998e81e33b3069eEthan Nicholas    const char* name() const override { return "DitherEffect"; }
56b7e8c3b52a306357ecd08d00170062137ec641d4Ethan Nicholas
57762466e9fe0478bcf11fba532998e81e33b3069eEthan Nicholasprivate:
58abff956455637b12eab374fd44b99e1338799113Ethan Nicholas    GrDitherEffect(int rangeType)
59abff956455637b12eab374fd44b99e1338799113Ethan Nicholas            : INHERITED(kGrDitherEffect_ClassID, kNone_OptimizationFlags), fRangeType(rangeType) {}
60762466e9fe0478bcf11fba532998e81e33b3069eEthan Nicholas    GrGLSLFragmentProcessor* onCreateGLSLInstance() const override;
61b7e8c3b52a306357ecd08d00170062137ec641d4Ethan Nicholas    void onGetGLSLProcessorKey(const GrShaderCaps&, GrProcessorKeyBuilder*) const override;
62762466e9fe0478bcf11fba532998e81e33b3069eEthan Nicholas    bool onIsEqual(const GrFragmentProcessor&) const override;
630c26a9dbd0b6546731df63c01411cb2aaa5ba236Brian Salomon    GR_DECLARE_FRAGMENT_PROCESSOR_TEST
640c15ae82f0d5b5356f7650b78d749c09b3bc0403Brian Salomon    int fRangeType;
65762466e9fe0478bcf11fba532998e81e33b3069eEthan Nicholas    typedef GrFragmentProcessor INHERITED;
66f461a8fdf642ba713dcdfb217534652df1eac278krajcevski};
67f461a8fdf642ba713dcdfb217534652df1eac278krajcevski#endif
68ceb4d48ef4839aab9d99d0200dcfe403ccd0cdf3Ethan Nicholas#endif
69