SkBitmapProcShader.h revision 135e16cd8ebb2ba30458b284d4a17e1eea81ad35
1 2/* 3 * Copyright 2006 The Android Open Source Project 4 * 5 * Use of this source code is governed by a BSD-style license that can be 6 * found in the LICENSE file. 7 */ 8 9 10#ifndef SkBitmapProcShader_DEFINED 11#define SkBitmapProcShader_DEFINED 12 13#include "SkShader.h" 14#include "SkBitmapProcState.h" 15 16class SkBitmapProcShader : public SkShader { 17public: 18 SkBitmapProcShader(const SkBitmap& src, TileMode tx, TileMode ty); 19 20 // overrides from SkShader 21 virtual bool isOpaque() const SK_OVERRIDE; 22 virtual bool setContext(const SkBitmap&, const SkPaint&, const SkMatrix&); 23 virtual uint32_t getFlags() { return fFlags; } 24 virtual void shadeSpan(int x, int y, SkPMColor dstC[], int count); 25 virtual ShadeProc asAShadeProc(void** ctx) SK_OVERRIDE; 26 virtual void shadeSpan16(int x, int y, uint16_t dstC[], int count); 27 virtual void beginSession(); 28 virtual void endSession(); 29 virtual BitmapType asABitmap(SkBitmap*, SkMatrix*, TileMode*) const; 30 31 static bool CanDo(const SkBitmap&, TileMode tx, TileMode ty); 32 33 // override from flattenable 34 virtual bool toDumpString(SkString* str) const; 35 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBitmapProcShader) 36 37protected: 38 SkBitmapProcShader(SkFlattenableReadBuffer& ); 39 virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; 40 41 SkBitmap fRawBitmap; // experimental for RLE encoding 42 SkBitmapProcState fState; 43 uint32_t fFlags; 44 45private: 46 typedef SkShader INHERITED; 47}; 48 49#endif 50