• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2006 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef SkImageView_DEFINED
18 #define SkImageView_DEFINED
19 
20 #include "SkView.h"
21 #include "SkString.h"
22 
23 class SkAnimator;
24 class SkBitmap;
25 struct SkMatrix;
26 
27 class SkImageView : public SkView {
28 public:
29             SkImageView();
30     virtual ~SkImageView();
31 
32     void    getUri(SkString*) const;
33     void    setUri(const char []);
34     void    setUri(const SkString&);
35 
36 
37     enum ScaleType {
38         kMatrix_ScaleType,
39         kFitXY_ScaleType,
40         kFitStart_ScaleType,
41         kFitCenter_ScaleType,
42         kFitEnd_ScaleType
43     };
getScaleType()44     ScaleType   getScaleType() const { return (ScaleType)fScaleType; }
45     void        setScaleType(ScaleType);
46 
47     bool    getImageMatrix(SkMatrix*) const;
48     void    setImageMatrix(const SkMatrix*);
49 
50 protected:
51     // overrides
52     virtual bool    onEvent(const SkEvent&);
53     virtual void    onDraw(SkCanvas*);
54     virtual void    onInflate(const SkDOM&, const SkDOMNode*);
55 
56 private:
57     SkString    fUri;
58     SkMatrix*   fMatrix;    // null or copy of caller's matrix ,,,,,
59     union {
60         SkAnimator* fAnim;
61         SkBitmap* fBitmap;
62     } fData;
63     uint8_t     fScaleType;
64     SkBool8     fDataIsAnim;    // as opposed to bitmap
65     SkBool8     fUriIsValid;
66 
67     void    onUriChange();
68     bool    getDataBounds(SkRect* bounds);
69     bool    freeData();
70     bool    ensureUriIsLoaded();
71 
72     typedef SkView INHERITED;
73 };
74 
75 #endif
76