Home | History | Annotate | Download | only in animator
      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     virtual bool draw(SkAnimateMaker& );
     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     virtual void dump(SkAnimateMaker* );
     40 #endif
     41     virtual void onEndElement(SkAnimateMaker& );
     42     virtual bool setProperty(int index, SkScriptValue& value);
     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     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);
     62 private:
     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