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 13class SK_API SkTransparentShader : public SkShader { 14public: 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 37protected: 38 virtual Context* onCreateContext(const ContextRec&, void* storage) const SK_OVERRIDE; 39 40private: 41 SkTransparentShader(SkReadBuffer& buffer) : INHERITED(buffer) {} 42 43 typedef SkShader INHERITED; 44}; 45 46#endif 47