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 size_t contextSize() const override; 18 19 class TransparentShaderContext : public SkShader::Context { 20 public: 21 TransparentShaderContext(const SkTransparentShader& shader, const ContextRec&); 22 virtual ~TransparentShaderContext(); 23 24 uint32_t getFlags() const override; 25 void shadeSpan(int x, int y, SkPMColor[], int count) override; 26 void shadeSpan16(int x, int y, uint16_t span[], int count) 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 Context* onCreateContext(const ContextRec&, void* storage) const override; 39 40 // we don't need to flatten anything at all 41 void flatten(SkWriteBuffer&) const override {} 42 43private: 44 typedef SkShader INHERITED; 45}; 46 47#endif 48