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 SkDrawBitmap_DEFINED
11#define SkDrawBitmap_DEFINED
12
13#include "SkBoundable.h"
14#include "SkBase64.h"
15#include "SkBitmap.h"
16// #include "SkImageDecoder.h"
17#include "SkMemberInfo.h"
18
19class SkBaseBitmap : public SkBoundable {
20    DECLARE_MEMBER_INFO(BaseBitmap);
21    SkBaseBitmap();
22    virtual ~SkBaseBitmap();
23    virtual bool draw(SkAnimateMaker& );
24protected:
25    SkBitmap fBitmap;
26    SkScalar x;
27    SkScalar y;
28private:
29    friend class SkDrawTo;
30    friend class SkDrawBitmapShader;
31    typedef SkBoundable INHERITED;
32};
33
34class SkDrawBitmap : public SkBaseBitmap {
35    DECLARE_DRAW_MEMBER_INFO(Bitmap);
36    SkDrawBitmap();
37    virtual ~SkDrawBitmap();
38#ifdef SK_DUMP_ENABLED
39    virtual void dump(SkAnimateMaker* );
40#endif
41    virtual void onEndElement(SkAnimateMaker& );
42    virtual bool setProperty(int index, SkScriptValue& value);
43protected:
44    int /*SkBitmap::Config*/ format;
45    int32_t height;
46    int32_t rowBytes;
47    int32_t width;
48    SkColor fColor;
49    SkBool fColorSet;
50    typedef SkBaseBitmap INHERITED;
51};
52
53class SkImageBaseBitmap : public SkBaseBitmap {
54    DECLARE_MEMBER_INFO(ImageBaseBitmap);
55    SkImageBaseBitmap();
56    virtual ~SkImageBaseBitmap();
57    virtual SkDisplayable* deepCopy(SkAnimateMaker* );
58    virtual void dirty();
59    virtual bool draw(SkAnimateMaker& );
60    virtual bool getProperty(int index, SkScriptValue* value) const;
61    virtual void onEndElement(SkAnimateMaker& maker);
62private:
63    void resolve() const { (const_cast<SkImageBaseBitmap*>(this))->resolve(); }
64    void resolve();
65protected:
66    SkBase64 base64;
67    SkString src;
68    SkString fLast; // cache of src so that stream isn't unnecessarily decoded
69    SkBool fDirty;
70    const char* fUriBase;
71    typedef SkBaseBitmap INHERITED;
72};
73
74#endif // SkDrawBitmap_DEFINED
75