Home | History | Annotate | Download | only in effects
      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 private:
     41     SkTransparentShader(SkReadBuffer& buffer) : INHERITED(buffer) {}
     42 
     43     typedef SkShader INHERITED;
     44 };
     45 
     46 #endif
     47