reed | 3061af4 | 2016-01-07 15:47:29 -0800 | [diff] [blame] | 1 | /* |
| 2 | * Copyright 2016 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 | #ifndef SkColorFilterShader_DEFINED |
| 9 | #define SkColorFilterShader_DEFINED |
| 10 | |
Mike Klein | c0bd9f9 | 2019-04-23 12:05:21 -0500 | [diff] [blame] | 11 | #include "include/core/SkColorFilter.h" |
| 12 | #include "src/shaders/SkShaderBase.h" |
reed | 3061af4 | 2016-01-07 15:47:29 -0800 | [diff] [blame] | 13 | |
Herb Derby | 83e939b | 2017-02-07 14:25:11 -0500 | [diff] [blame] | 14 | class SkArenaAlloc; |
| 15 | |
Florin Malita | 4aed138 | 2017-05-25 10:38:07 -0400 | [diff] [blame] | 16 | class SkColorFilterShader : public SkShaderBase { |
reed | 3061af4 | 2016-01-07 15:47:29 -0800 | [diff] [blame] | 17 | public: |
Mike Klein | 96bce8f | 2019-10-23 11:26:46 -0500 | [diff] [blame] | 18 | SkColorFilterShader(sk_sp<SkShader> shader, float alpha, sk_sp<SkColorFilter> filter); |
reed | 773ceda | 2016-03-03 18:18:25 -0800 | [diff] [blame] | 19 | |
reed | 3061af4 | 2016-01-07 15:47:29 -0800 | [diff] [blame] | 20 | #if SK_SUPPORT_GPU |
Mike Reed | e3429e6 | 2018-01-19 11:43:34 -0500 | [diff] [blame] | 21 | std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const GrFPArgs&) const override; |
reed | 3061af4 | 2016-01-07 15:47:29 -0800 | [diff] [blame] | 22 | #endif |
| 23 | |
Mike Klein | 746acf1 | 2019-11-05 09:54:55 -0600 | [diff] [blame] | 24 | private: |
Mike Klein | 96b6150 | 2019-11-05 10:18:05 -0600 | [diff] [blame] | 25 | bool isOpaque() const override; |
reed | 3061af4 | 2016-01-07 15:47:29 -0800 | [diff] [blame] | 26 | void flatten(SkWriteBuffer&) const override; |
Mike Reed | 1386b2d | 2019-03-13 21:15:05 -0400 | [diff] [blame] | 27 | bool onAppendStages(const SkStageRec&) const override; |
halcanary | 9d524f2 | 2016-03-29 09:03:52 -0700 | [diff] [blame] | 28 | |
Mike Klein | 746acf1 | 2019-11-05 09:54:55 -0600 | [diff] [blame] | 29 | bool onProgram(skvm::Builder*, |
| 30 | SkColorSpace* dstCS, |
Mike Klein | 1cc6067 | 2019-11-05 14:19:58 -0600 | [diff] [blame] | 31 | skvm::Uniforms* uniforms, |
Mike Klein | 746acf1 | 2019-11-05 09:54:55 -0600 | [diff] [blame] | 32 | skvm::F32 x, skvm::F32 y, |
Mike Klein | b9f2088 | 2019-11-08 12:14:15 -0600 | [diff] [blame] | 33 | skvm::F32* r, skvm::F32* g, skvm::F32* b, skvm::F32* a) const override; |
Mike Klein | 746acf1 | 2019-11-05 09:54:55 -0600 | [diff] [blame] | 34 | |
Mike Klein | 4fee323 | 2018-10-18 17:27:16 -0400 | [diff] [blame] | 35 | SK_FLATTENABLE_HOOKS(SkColorFilterShader) |
| 36 | |
reed | d053ce9 | 2016-03-22 10:17:23 -0700 | [diff] [blame] | 37 | sk_sp<SkShader> fShader; |
| 38 | sk_sp<SkColorFilter> fFilter; |
Mike Klein | 96bce8f | 2019-10-23 11:26:46 -0500 | [diff] [blame] | 39 | float fAlpha; |
halcanary | 9d524f2 | 2016-03-29 09:03:52 -0700 | [diff] [blame] | 40 | |
Florin Malita | 4aed138 | 2017-05-25 10:38:07 -0400 | [diff] [blame] | 41 | typedef SkShaderBase INHERITED; |
reed | 3061af4 | 2016-01-07 15:47:29 -0800 | [diff] [blame] | 42 | }; |
| 43 | |
| 44 | #endif |