Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / skia / include / effects / SkTransparentShader.h
1 /*
2  * Copyright 2006 The Android Open Source Project
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 SkTransparentShader_DEFINED
9 #define SkTransparentShader_DEFINED
10
11 #include "SkShader.h"
12
13 class SK_API SkTransparentShader : public SkShader {
14 public:
15     SkTransparentShader() {}
16
17     virtual size_t contextSize() const SK_OVERRIDE;
18
19     class TransparentShaderContext : public SkShader::Context {
20     public:
21         TransparentShaderContext(const SkTransparentShader& shader, const ContextRec&);
22         virtual ~TransparentShaderContext();
23
24         virtual uint32_t getFlags() const SK_OVERRIDE;
25         virtual void shadeSpan(int x, int y, SkPMColor[], int count) SK_OVERRIDE;
26         virtual void shadeSpan16(int x, int y, uint16_t span[], int count) SK_OVERRIDE;
27
28     private:
29         const SkBitmap* fDevice;
30
31         typedef SkShader::Context INHERITED;
32     };
33
34     SK_TO_STRING_OVERRIDE()
35     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTransparentShader)
36
37 protected:
38     virtual Context* onCreateContext(const ContextRec&, void* storage) const SK_OVERRIDE;
39
40     // we don't need to flatten anything at all
41     virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE {}
42
43 private:
44 #ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING
45     SkTransparentShader(SkReadBuffer& buffer) : INHERITED(buffer) {}
46 #endif
47
48     typedef SkShader INHERITED;
49 };
50
51 #endif