blob: ec414c7c1dc350ea3df85b5b9e9399d55c2fa272 [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
reed@android.com8a1c16f2008-12-17 15:59:43 +00002/*
epoger@google.comec3ed6a2011-07-28 14:26:00 +00003 * Copyright 2006 The Android Open Source Project
reed@android.com8a1c16f2008-12-17 15:59:43 +00004 *
epoger@google.comec3ed6a2011-07-28 14:26:00 +00005 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
reed@android.com8a1c16f2008-12-17 15:59:43 +00007 */
8
epoger@google.comec3ed6a2011-07-28 14:26:00 +00009
reed@android.com8a1c16f2008-12-17 15:59:43 +000010#ifndef SkTransparentShader_DEFINED
11#define SkTransparentShader_DEFINED
12
13#include "SkShader.h"
14
15class SkTransparentShader : public SkShader {
16public:
17 SkTransparentShader() {}
18 virtual uint32_t getFlags();
19 virtual bool setContext( const SkBitmap& device,
20 const SkPaint& paint,
21 const SkMatrix& matrix);
22 virtual void shadeSpan(int x, int y, SkPMColor[], int count);
23 virtual void shadeSpan16(int x, int y, uint16_t span[], int count);
24
25 // overrides for SkFlattenable
26 virtual Factory getFactory() { return Create; }
mike@reedtribe.org6b919c32011-04-20 11:17:30 +000027 virtual void flatten(SkFlattenableWriteBuffer& buffer) {
reed@android.com8a1c16f2008-12-17 15:59:43 +000028 this->INHERITED::flatten(buffer);
29 }
30
31private:
32 // these are a cache from the call to setContext()
33 const SkBitmap* fDevice;
34 uint8_t fAlpha;
35
36 SkTransparentShader(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {}
37
mike@reedtribe.org6b919c32011-04-20 11:17:30 +000038 static SkFlattenable* Create(SkFlattenableReadBuffer& buffer) {
reed@android.com8a1c16f2008-12-17 15:59:43 +000039 return SkNEW_ARGS(SkTransparentShader, (buffer));
40 }
41
42 typedef SkShader INHERITED;
43};
44
45#endif
46