|  | 
 | /* | 
 |  * Copyright 2006 The Android Open Source Project | 
 |  * | 
 |  * Use of this source code is governed by a BSD-style license that can be | 
 |  * found in the LICENSE file. | 
 |  */ | 
 |  | 
 |  | 
 | #ifndef SkDrawBitmap_DEFINED | 
 | #define SkDrawBitmap_DEFINED | 
 |  | 
 | #include "SkBoundable.h" | 
 | #include "SkBase64.h" | 
 | #include "SkBitmap.h" | 
 | #include "SkMemberInfo.h" | 
 |  | 
 | class SkBaseBitmap : public SkBoundable { | 
 |     DECLARE_MEMBER_INFO(BaseBitmap); | 
 |     SkBaseBitmap(); | 
 |     virtual ~SkBaseBitmap(); | 
 |     bool draw(SkAnimateMaker& ) override; | 
 | 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 | 
 |     void dump(SkAnimateMaker* ) override; | 
 | #endif | 
 |     void onEndElement(SkAnimateMaker& ) override; | 
 |     bool setProperty(int index, SkScriptValue& value) override; | 
 | protected: | 
 |     int /*SkBitmap::Config*/ format; | 
 |     int32_t height; | 
 |     int32_t rowBytes; | 
 |     int32_t width; | 
 |     SkColor fColor; | 
 |     SkBool fColorSet; | 
 |     typedef SkBaseBitmap INHERITED; | 
 | }; | 
 |  | 
 | class SkImageBaseBitmap : public SkBaseBitmap { | 
 |     DECLARE_MEMBER_INFO(ImageBaseBitmap); | 
 |     SkImageBaseBitmap(); | 
 |     virtual ~SkImageBaseBitmap(); | 
 |     SkDisplayable* deepCopy(SkAnimateMaker* ) override; | 
 |     void dirty() override; | 
 |     bool draw(SkAnimateMaker& ) override; | 
 |     bool getProperty(int index, SkScriptValue* value) const override; | 
 |     void onEndElement(SkAnimateMaker& maker) override; | 
 | private: | 
 |     void resolve() const { (const_cast<SkImageBaseBitmap*>(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 |