michael@0: michael@0: /* michael@0: * Copyright 2006 The Android Open Source Project michael@0: * michael@0: * Use of this source code is governed by a BSD-style license that can be michael@0: * found in the LICENSE file. michael@0: */ michael@0: michael@0: michael@0: #ifndef SkImageView_DEFINED michael@0: #define SkImageView_DEFINED michael@0: michael@0: #include "SkView.h" michael@0: #include "SkString.h" michael@0: michael@0: class SkAnimator; michael@0: class SkBitmap; michael@0: class SkMatrix; michael@0: michael@0: class SkImageView : public SkView { michael@0: public: michael@0: SkImageView(); michael@0: virtual ~SkImageView(); michael@0: michael@0: void getUri(SkString*) const; michael@0: void setUri(const char []); michael@0: void setUri(const SkString&); michael@0: michael@0: michael@0: enum ScaleType { michael@0: kMatrix_ScaleType, michael@0: kFitXY_ScaleType, michael@0: kFitStart_ScaleType, michael@0: kFitCenter_ScaleType, michael@0: kFitEnd_ScaleType michael@0: }; michael@0: ScaleType getScaleType() const { return (ScaleType)fScaleType; } michael@0: void setScaleType(ScaleType); michael@0: michael@0: bool getImageMatrix(SkMatrix*) const; michael@0: void setImageMatrix(const SkMatrix*); michael@0: michael@0: protected: michael@0: // overrides michael@0: virtual bool onEvent(const SkEvent&); michael@0: virtual void onDraw(SkCanvas*); michael@0: virtual void onInflate(const SkDOM&, const SkDOMNode*); michael@0: michael@0: private: michael@0: SkString fUri; michael@0: SkMatrix* fMatrix; // null or copy of caller's matrix ,,,,, michael@0: union { michael@0: SkAnimator* fAnim; michael@0: SkBitmap* fBitmap; michael@0: } fData; michael@0: uint8_t fScaleType; michael@0: SkBool8 fDataIsAnim; // as opposed to bitmap michael@0: SkBool8 fUriIsValid; michael@0: michael@0: void onUriChange(); michael@0: bool getDataBounds(SkRect* bounds); michael@0: bool freeData(); michael@0: bool ensureUriIsLoaded(); michael@0: michael@0: typedef SkView INHERITED; michael@0: }; michael@0: michael@0: #endif