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 SkBoundable_DEFINED 11 #define SkBoundable_DEFINED 12 13 #include "SkDrawable.h" 14 #include "SkRect.h" 15 16 class SkBoundable : public SkDrawable { 17 public: 18 SkBoundable(); 19 virtual void clearBounder(); 20 virtual void enableBounder(); 21 virtual void getBounds(SkRect* ); hasBounds()22 bool hasBounds() { return fBounds.fLeft != (int16_t)0x8000U; } setBounds(SkIRect & bounds)23 void setBounds(SkIRect& bounds) { fBounds = bounds; } 24 protected: clearBounds()25 void clearBounds() { fBounds.fLeft = (int16_t) SkToU16(0x8000); }; // mark bounds as unset 26 SkIRect fBounds; 27 private: 28 typedef SkDrawable INHERITED; 29 }; 30 31 class SkBoundableAuto { 32 public: 33 SkBoundableAuto(SkBoundable* boundable, SkAnimateMaker& maker); 34 ~SkBoundableAuto(); 35 private: 36 SkBoundable* fBoundable; 37 SkAnimateMaker& fMaker; 38 SkBoundableAuto& operator= (const SkBoundableAuto& ); 39 }; 40 41 #endif // SkBoundable_DEFINED 42