aboutsummaryrefslogtreecommitdiffhomepage
path: root/libs/graphics/animator/SkDrawBitmap.h
blob: f5ef3303cd259b9173a3eb52706d7558a69bebb3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#ifndef SkDrawBitmap_DEFINED
#define SkDrawBitmap_DEFINED

#include "SkBoundable.h"
#include "SkBase64.h"
#include "SkBitmap.h"
// #include "SkImageDecoder.h"
#include "SkMemberInfo.h"

class SkBaseBitmap : public SkBoundable {
	DECLARE_MEMBER_INFO(BaseBitmap);
	SkBaseBitmap();
	virtual ~SkBaseBitmap();
	virtual bool draw(SkAnimateMaker& );
protected:
	SkBitmap fBitmap;
	SkScalar x;
	SkScalar y;
private:
	friend class SkDrawTo;
	friend class SkDrawBitmapShader;
	typedef SkBoundable INHERITED;
};

class SkDrawBitmap : public SkBaseBitmap {
	DECLARE_DRAW_MEMBER_INFO(Bitmap);
	SkDrawBitmap();
	virtual ~SkDrawBitmap();
#ifdef SK_DUMP_ENABLED
    virtual void dump(SkAnimateMaker* );
#endif
	virtual void onEndElement(SkAnimateMaker& );
	virtual bool setProperty(int index, SkScriptValue& value);
protected:
	int /*SkBitmap::Config*/ format;
	S32 height;
	S32 rowBytes;
	S32 width;
	SkColor fColor;
	SkBool fColorSet;
	typedef SkBaseBitmap INHERITED;
};

class SkImage : public SkBaseBitmap {
	DECLARE_MEMBER_INFO(Image);
	SkImage();
	virtual ~SkImage();
    virtual SkDisplayable* deepCopy(SkAnimateMaker* );
	virtual void dirty();
	virtual bool draw(SkAnimateMaker& );
	virtual bool getProperty(int index, SkScriptValue* value) const;
	virtual void onEndElement(SkAnimateMaker& maker);
private:
	void resolve() const { (const_cast<SkImage*>(this))->resolve();	}
	void resolve();
protected:
	SkBase64 base64;
	SkString src;
	SkString fLast; // cache of src so that stream isn't unnecessarily decoded 
	SkBool fDirty;
	const char* fUriBase;
	typedef SkBaseBitmap INHERITED;
};

#endif // SkDrawBitmap_DEFINED