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