2 * Copyright 2006 The Android Open Source Project
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
8 #ifndef SkTransparentShader_DEFINED
9 #define SkTransparentShader_DEFINED
13 class SK_API SkTransparentShader : public SkShader {
15 SkTransparentShader() {}
17 virtual size_t contextSize() const SK_OVERRIDE;
19 class TransparentShaderContext : public SkShader::Context {
21 TransparentShaderContext(const SkTransparentShader& shader, const ContextRec&);
22 virtual ~TransparentShaderContext();
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;
29 const SkBitmap* fDevice;
31 typedef SkShader::Context INHERITED;
34 SK_TO_STRING_OVERRIDE()
35 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTransparentShader)
38 virtual Context* onCreateContext(const ContextRec&, void* storage) const SK_OVERRIDE;
40 // we don't need to flatten anything at all
41 virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE {}
44 #ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING
45 SkTransparentShader(SkReadBuffer& buffer) : INHERITED(buffer) {}
48 typedef SkShader INHERITED;