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 16 class SkAnimator; 17 class SkBitmap; 18 class SkMatrix; 19 20 class SkImageView : public SkView { 21 public: 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 }; getScaleType()37 ScaleType getScaleType() const { return (ScaleType)fScaleType; } 38 void setScaleType(ScaleType); 39 40 bool getImageMatrix(SkMatrix*) const; 41 void setImageMatrix(const SkMatrix*); 42 43 protected: 44 // overrides 45 virtual bool onEvent(const SkEvent&); 46 virtual void onDraw(SkCanvas*); 47 virtual void onInflate(const SkDOM&, const SkDOMNode*); 48 49 private: 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