blob: 2ff6cdaf6359617fd4be21b7c8ba0c76083aa100 [file] [log] [blame]
reed@google.com02f65f22012-08-06 21:20:05 +00001/*
2 * Copyright 2012 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 SkFilterShader_DEFINED
9#define SkFilterShader_DEFINED
10
11#include "SkShader.h"
12
13class SkColorFilter;
14
15class SkFilterShader : public SkShader {
16public:
17 SkFilterShader(SkShader* shader, SkColorFilter* filter);
18 virtual ~SkFilterShader();
19
commit-bot@chromium.org87fcd952014-04-23 19:10:51 +000020 virtual size_t contextSize() const SK_OVERRIDE;
21
22 class FilterShaderContext : public SkShader::Context {
23 public:
24 // Takes ownership of shaderContext and calls its destructor.
commit-bot@chromium.orge901b6d2014-05-01 19:31:31 +000025 FilterShaderContext(const SkFilterShader&, SkShader::Context*, const ContextRec&);
commit-bot@chromium.org87fcd952014-04-23 19:10:51 +000026 virtual ~FilterShaderContext();
27
28 virtual uint32_t getFlags() const SK_OVERRIDE;
29
30 virtual void shadeSpan(int x, int y, SkPMColor[], int count) SK_OVERRIDE;
31 virtual void shadeSpan16(int x, int y, uint16_t[], int count) SK_OVERRIDE;
32
33 private:
34 SkShader::Context* fShaderContext;
35
36 typedef SkShader::Context INHERITED;
37 };
reed@google.com02f65f22012-08-06 21:20:05 +000038
commit-bot@chromium.org0f10f7b2014-03-13 18:02:17 +000039 SK_TO_STRING_OVERRIDE()
reed@google.com02f65f22012-08-06 21:20:05 +000040 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkFilterShader)
41
42protected:
reed9fa60da2014-08-21 07:59:51 -070043#ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING
44 SkFilterShader(SkReadBuffer&);
45#endif
commit-bot@chromium.org8b0e8ac2014-01-30 18:58:24 +000046 virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE;
commit-bot@chromium.orgce56d962014-05-05 18:39:18 +000047 virtual Context* onCreateContext(const ContextRec&, void* storage) const SK_OVERRIDE;
skia.committer@gmail.comedda70e2014-05-06 03:06:53 +000048
reed@google.com02f65f22012-08-06 21:20:05 +000049
50private:
51 SkShader* fShader;
52 SkColorFilter* fFilter;
53
54 typedef SkShader INHERITED;
55};
56
57#endif