SkFilterShader.h revision 1adcf8859cc9414591038e440e3f22382c8e4aa0
1/*
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
20    virtual uint32_t getFlags() SK_OVERRIDE;
21    virtual bool setContext(const SkBitmap&, const SkPaint&,
22                            const SkMatrix&) SK_OVERRIDE;
23    virtual void endContext() SK_OVERRIDE;
24    virtual void shadeSpan(int x, int y, SkPMColor[], int count) SK_OVERRIDE;
25    virtual void shadeSpan16(int x, int y, uint16_t[], int count) SK_OVERRIDE;
26
27    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkFilterShader)
28
29protected:
30    SkFilterShader(SkFlattenableReadBuffer& );
31    virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE;
32
33private:
34    SkShader*       fShader;
35    SkColorFilter*  fFilter;
36
37    typedef SkShader INHERITED;
38};
39
40#endif
41