Home | History | Annotate | Download | only in views
      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     };
     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