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