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