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 
19 class SkBaseBitmap : public SkBoundable {
20     DECLARE_MEMBER_INFO(BaseBitmap);
21     SkBaseBitmap();
22     virtual ~SkBaseBitmap();
23     bool draw(SkAnimateMaker& ) override;
24 protected:
25     SkBitmap fBitmap;
26     SkScalar x;
27     SkScalar y;
28 private:
29     friend class SkDrawTo;
30     friend class SkDrawBitmapShader;
31     typedef SkBoundable INHERITED;
32 };
33 
34 class SkDrawBitmap : public SkBaseBitmap {
35     DECLARE_DRAW_MEMBER_INFO(Bitmap);
36     SkDrawBitmap();
37     virtual ~SkDrawBitmap();
38 #ifdef SK_DUMP_ENABLED
39     void dump(SkAnimateMaker* ) override;
40 #endif
41     void onEndElement(SkAnimateMaker& ) override;
42     bool setProperty(int index, SkScriptValue& value) override;
43 protected:
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 
53 class SkImageBaseBitmap : public SkBaseBitmap {
54     DECLARE_MEMBER_INFO(ImageBaseBitmap);
55     SkImageBaseBitmap();
56     virtual ~SkImageBaseBitmap();
57     SkDisplayable* deepCopy(SkAnimateMaker* ) override;
58     void dirty() override;
59     bool draw(SkAnimateMaker& ) override;
60     bool getProperty(int index, SkScriptValue* value) const override;
61     void onEndElement(SkAnimateMaker& maker) override;
62 private:
resolve()63     void resolve() const { (const_cast<SkImageBaseBitmap*>(this))->resolve(); }
64     void resolve();
65 protected:
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