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 SkImage : public SkBaseBitmap { 54 DECLARE_MEMBER_INFO(Image); 55 SkImage(); 56 virtual ~SkImage(); 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<SkImage*>(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