180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru/*
380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Copyright 2006 The Android Open Source Project
480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru *
580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Use of this source code is governed by a BSD-style license that can be
680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * found in the LICENSE file.
780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru */
880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
1080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#ifndef SkDrawBitmap_DEFINED
1180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#define SkDrawBitmap_DEFINED
1280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
1380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkBoundable.h"
1480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkBase64.h"
1580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkBitmap.h"
1680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru// #include "SkImageDecoder.h"
1780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkMemberInfo.h"
1880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
1980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass SkBaseBitmap : public SkBoundable {
2080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    DECLARE_MEMBER_INFO(BaseBitmap);
2180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkBaseBitmap();
2280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual ~SkBaseBitmap();
2380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual bool draw(SkAnimateMaker& );
2480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprotected:
2580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkBitmap fBitmap;
2680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkScalar x;
2780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkScalar y;
2880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate:
2980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    friend class SkDrawTo;
3080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    friend class SkDrawBitmapShader;
3180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    typedef SkBoundable INHERITED;
3280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru};
3380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
3480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass SkDrawBitmap : public SkBaseBitmap {
3580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    DECLARE_DRAW_MEMBER_INFO(Bitmap);
3680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkDrawBitmap();
3780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual ~SkDrawBitmap();
3880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#ifdef SK_DUMP_ENABLED
3980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual void dump(SkAnimateMaker* );
4080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#endif
4180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual void onEndElement(SkAnimateMaker& );
4280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual bool setProperty(int index, SkScriptValue& value);
4380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprotected:
4480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    int /*SkBitmap::Config*/ format;
4580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    int32_t height;
4680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    int32_t rowBytes;
4780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    int32_t width;
4880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkColor fColor;
4980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkBool fColorSet;
5080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    typedef SkBaseBitmap INHERITED;
5180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru};
5280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
5380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass SkImageBaseBitmap : public SkBaseBitmap {
5480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    DECLARE_MEMBER_INFO(ImageBaseBitmap);
5580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkImageBaseBitmap();
5680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual ~SkImageBaseBitmap();
5780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual SkDisplayable* deepCopy(SkAnimateMaker* );
5880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual void dirty();
5980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual bool draw(SkAnimateMaker& );
6080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual bool getProperty(int index, SkScriptValue* value) const;
6180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual void onEndElement(SkAnimateMaker& maker);
6280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate:
6380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    void resolve() const { (const_cast<SkImageBaseBitmap*>(this))->resolve(); }
6480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    void resolve();
6580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprotected:
6680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkBase64 base64;
6780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkString src;
6880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkString fLast; // cache of src so that stream isn't unnecessarily decoded
6980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkBool fDirty;
7080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    const char* fUriBase;
7180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    typedef SkBaseBitmap INHERITED;
7280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru};
7380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
7480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#endif // SkDrawBitmap_DEFINED
75