commit-bot@chromium.org | 5970f62 | 2014-05-12 20:42:21 +0000 | [diff] [blame] | 1 | /* |
| 2 | * Copyright 2014 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 SkLocalMatrixShader_DEFINED |
| 9 | #define SkLocalMatrixShader_DEFINED |
| 10 | |
Mike Klein | c0bd9f9 | 2019-04-23 12:05:21 -0500 | [diff] [blame] | 11 | #include "src/core/SkReadBuffer.h" |
| 12 | #include "src/core/SkWriteBuffer.h" |
| 13 | #include "src/shaders/SkShaderBase.h" |
commit-bot@chromium.org | 5970f62 | 2014-05-12 20:42:21 +0000 | [diff] [blame] | 14 | |
bungeman | 06ca8ec | 2016-06-09 08:01:03 -0700 | [diff] [blame] | 15 | class GrFragmentProcessor; |
Herb Derby | 83e939b | 2017-02-07 14:25:11 -0500 | [diff] [blame] | 16 | class SkArenaAlloc; |
bungeman | 06ca8ec | 2016-06-09 08:01:03 -0700 | [diff] [blame] | 17 | |
Florin Malita | 5769dd2 | 2017-07-12 13:31:25 -0400 | [diff] [blame] | 18 | class SkLocalMatrixShader final : public SkShaderBase { |
commit-bot@chromium.org | 5970f62 | 2014-05-12 20:42:21 +0000 | [diff] [blame] | 19 | public: |
Ben Wagner | a8834bb | 2016-10-24 11:36:21 -0400 | [diff] [blame] | 20 | SkLocalMatrixShader(sk_sp<SkShader> proxy, const SkMatrix& localMatrix) |
scroggo | c870d49 | 2014-07-11 10:42:12 -0700 | [diff] [blame] | 21 | : INHERITED(&localMatrix) |
Ben Wagner | a8834bb | 2016-10-24 11:36:21 -0400 | [diff] [blame] | 22 | , fProxyShader(std::move(proxy)) |
commit-bot@chromium.org | 5970f62 | 2014-05-12 20:42:21 +0000 | [diff] [blame] | 23 | {} |
skia.committer@gmail.com | e92c68f | 2014-05-13 03:06:05 +0000 | [diff] [blame] | 24 | |
mtklein | 36352bf | 2015-03-25 18:17:31 -0700 | [diff] [blame] | 25 | GradientType asAGradient(GradientInfo* info) const override { |
commit-bot@chromium.org | 5970f62 | 2014-05-12 20:42:21 +0000 | [diff] [blame] | 26 | return fProxyShader->asAGradient(info); |
| 27 | } |
skia.committer@gmail.com | e92c68f | 2014-05-13 03:06:05 +0000 | [diff] [blame] | 28 | |
dandov | 9de5b51 | 2014-06-10 14:38:28 -0700 | [diff] [blame] | 29 | #if SK_SUPPORT_GPU |
Mike Reed | e3429e6 | 2018-01-19 11:43:34 -0500 | [diff] [blame] | 30 | std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const GrFPArgs&) const override; |
dandov | 9de5b51 | 2014-06-10 14:38:28 -0700 | [diff] [blame] | 31 | #endif |
mtklein | 3f3b3d0 | 2014-12-01 11:47:08 -0800 | [diff] [blame] | 32 | |
Ben Wagner | a8834bb | 2016-10-24 11:36:21 -0400 | [diff] [blame] | 33 | sk_sp<SkShader> makeAsALocalMatrixShader(SkMatrix* localMatrix) const override { |
commit-bot@chromium.org | 5970f62 | 2014-05-12 20:42:21 +0000 | [diff] [blame] | 34 | if (localMatrix) { |
scroggo | c870d49 | 2014-07-11 10:42:12 -0700 | [diff] [blame] | 35 | *localMatrix = this->getLocalMatrix(); |
commit-bot@chromium.org | 5970f62 | 2014-05-12 20:42:21 +0000 | [diff] [blame] | 36 | } |
Ben Wagner | a8834bb | 2016-10-24 11:36:21 -0400 | [diff] [blame] | 37 | return fProxyShader; |
commit-bot@chromium.org | 5970f62 | 2014-05-12 20:42:21 +0000 | [diff] [blame] | 38 | } |
skia.committer@gmail.com | e92c68f | 2014-05-13 03:06:05 +0000 | [diff] [blame] | 39 | |
Hal Canary | 8a64fa6 | 2019-05-30 10:29:40 -0400 | [diff] [blame] | 40 | SkPicture* isAPicture(SkMatrix*, SkTileMode[2], SkRect* tile) const override; |
| 41 | |
commit-bot@chromium.org | 5970f62 | 2014-05-12 20:42:21 +0000 | [diff] [blame] | 42 | protected: |
mtklein | 36352bf | 2015-03-25 18:17:31 -0700 | [diff] [blame] | 43 | void flatten(SkWriteBuffer&) const override; |
skia.committer@gmail.com | e92c68f | 2014-05-13 03:06:05 +0000 | [diff] [blame] | 44 | |
Mike Reed | e92aae6 | 2018-10-17 10:21:51 -0400 | [diff] [blame] | 45 | #ifdef SK_ENABLE_LEGACY_SHADERCONTEXT |
Herb Derby | 83e939b | 2017-02-07 14:25:11 -0500 | [diff] [blame] | 46 | Context* onMakeContext(const ContextRec&, SkArenaAlloc*) const override; |
Mike Reed | e92aae6 | 2018-10-17 10:21:51 -0400 | [diff] [blame] | 47 | #endif |
reed | 773ceda | 2016-03-03 18:18:25 -0800 | [diff] [blame] | 48 | |
Mike Reed | fae8fce | 2019-04-03 10:27:45 -0400 | [diff] [blame] | 49 | SkImage* onIsAImage(SkMatrix* matrix, SkTileMode* mode) const override; |
Mike Reed | 627778d | 2016-09-28 17:13:38 -0400 | [diff] [blame] | 50 | |
Mike Reed | 1386b2d | 2019-03-13 21:15:05 -0400 | [diff] [blame] | 51 | bool onAppendStages(const SkStageRec&) const override; |
Florin Malita | 882ccaf | 2017-01-27 10:51:58 -0500 | [diff] [blame] | 52 | |
commit-bot@chromium.org | 5970f62 | 2014-05-12 20:42:21 +0000 | [diff] [blame] | 53 | private: |
Mike Klein | 4fee323 | 2018-10-18 17:27:16 -0400 | [diff] [blame] | 54 | SK_FLATTENABLE_HOOKS(SkLocalMatrixShader) |
| 55 | |
Ben Wagner | a8834bb | 2016-10-24 11:36:21 -0400 | [diff] [blame] | 56 | sk_sp<SkShader> fProxyShader; |
skia.committer@gmail.com | e92c68f | 2014-05-13 03:06:05 +0000 | [diff] [blame] | 57 | |
Florin Malita | 4aed138 | 2017-05-25 10:38:07 -0400 | [diff] [blame] | 58 | typedef SkShaderBase INHERITED; |
commit-bot@chromium.org | 5970f62 | 2014-05-12 20:42:21 +0000 | [diff] [blame] | 59 | }; |
| 60 | |
| 61 | #endif |