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 SkImageView_DEFINED
11#define SkImageView_DEFINED
12
13#include "SkView.h"
14#include "SkString.h"
15
16class SkAnimator;
17class SkBitmap;
18class SkMatrix;
19
20class SkImageView : public SkView {
21public:
22            SkImageView();
23    virtual ~SkImageView();
24
25    void    getUri(SkString*) const;
26    void    setUri(const char []);
27    void    setUri(const SkString&);
28
29
30    enum ScaleType {
31        kMatrix_ScaleType,
32        kFitXY_ScaleType,
33        kFitStart_ScaleType,
34        kFitCenter_ScaleType,
35        kFitEnd_ScaleType
36    };
37    ScaleType   getScaleType() const { return (ScaleType)fScaleType; }
38    void        setScaleType(ScaleType);
39
40    bool    getImageMatrix(SkMatrix*) const;
41    void    setImageMatrix(const SkMatrix*);
42
43protected:
44    // overrides
45    virtual bool    onEvent(const SkEvent&);
46    virtual void    onDraw(SkCanvas*);
47    virtual void    onInflate(const SkDOM&, const SkDOMNode*);
48
49private:
50    SkString    fUri;
51    SkMatrix*   fMatrix;    // null or copy of caller's matrix ,,,,,
52    union {
53        SkAnimator* fAnim;
54        SkBitmap* fBitmap;
55    } fData;
56    uint8_t     fScaleType;
57    SkBool8     fDataIsAnim;    // as opposed to bitmap
58    SkBool8     fUriIsValid;
59
60    void    onUriChange();
61    bool    getDataBounds(SkRect* bounds);
62    bool    freeData();
63    bool    ensureUriIsLoaded();
64
65    typedef SkView INHERITED;
66};
67
68#endif
69