blob: a21da0be5131819aa561b8e4b64ffd2c76ba0152 [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
reed@android.com8a1c16f2008-12-17 15:59:43 +00002/*
epoger@google.comec3ed6a2011-07-28 14:26:00 +00003 * Copyright 2006 The Android Open Source Project
reed@android.com8a1c16f2008-12-17 15:59:43 +00004 *
epoger@google.comec3ed6a2011-07-28 14:26:00 +00005 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
reed@android.com8a1c16f2008-12-17 15:59:43 +00007 */
8
epoger@google.comec3ed6a2011-07-28 14:26:00 +00009
reed@android.com8a1c16f2008-12-17 15:59:43 +000010#ifndef SkImageView_DEFINED
11#define SkImageView_DEFINED
12
13#include "SkView.h"
14#include "SkString.h"
15
16class SkAnimator;
17class SkBitmap;
reed@android.com48cf8ac2011-02-03 15:51:56 +000018class SkMatrix;
reed@android.com8a1c16f2008-12-17 15:59:43 +000019
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&);
rmistry@google.comfbfcd562012-08-23 18:09:54 +000028
reed@android.com8a1c16f2008-12-17 15:59:43 +000029
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);
rmistry@google.comfbfcd562012-08-23 18:09:54 +000039
reed@android.com8a1c16f2008-12-17 15:59:43 +000040 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*);
rmistry@google.comfbfcd562012-08-23 18:09:54 +000048
reed@android.com8a1c16f2008-12-17 15:59:43 +000049private:
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;
rmistry@google.comfbfcd562012-08-23 18:09:54 +000059
reed@android.com8a1c16f2008-12-17 15:59:43 +000060 void onUriChange();
61 bool getDataBounds(SkRect* bounds);
62 bool freeData();
63 bool ensureUriIsLoaded();
64
65 typedef SkView INHERITED;
66};
67
68#endif