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 SkStackViewLayout_DEFINED 11 #define SkStackViewLayout_DEFINED 12 13 #include "SkView.h" 14 15 class SkStackViewLayout : public SkView::Layout { 16 public: 17 SkStackViewLayout(); 18 19 enum Orient { 20 kHorizontal_Orient, 21 kVertical_Orient, 22 23 kOrientCount 24 }; getOrient()25 Orient getOrient() const { return (Orient)fOrient; } 26 void setOrient(Orient); 27 28 void getMargin(SkRect*) const; 29 void setMargin(const SkRect&); 30 getSpacer()31 SkScalar getSpacer() const { return fSpacer; } 32 void setSpacer(SkScalar); 33 34 /** Controls the posititioning in the same direction as the orientation 35 */ 36 enum Pack { 37 kStart_Pack, 38 kCenter_Pack, 39 kEnd_Pack, 40 41 kPackCount 42 }; getPack()43 Pack getPack() const { return (Pack)fPack; } 44 void setPack(Pack); 45 46 /** Controls the posititioning at right angles to the orientation 47 */ 48 enum Align { 49 kStart_Align, 50 kCenter_Align, 51 kEnd_Align, 52 kStretch_Align, 53 54 kAlignCount 55 }; getAlign()56 Align getAlign() const { return (Align)fAlign; } 57 void setAlign(Align); 58 getRound()59 bool getRound() const { return SkToBool(fRound); } 60 void setRound(bool); 61 62 protected: 63 virtual void onLayoutChildren(SkView* parent); 64 virtual void onInflate(const SkDOM&, const SkDOM::Node*); 65 66 private: 67 SkRect fMargin; 68 SkScalar fSpacer; 69 uint8_t fOrient, fPack, fAlign, fRound; 70 }; 71 72 class SkFillViewLayout : public SkView::Layout { 73 public: 74 SkFillViewLayout(); 75 void getMargin(SkRect*) const; 76 void setMargin(const SkRect&); 77 78 protected: 79 // overrides; 80 virtual void onLayoutChildren(SkView* parent); 81 virtual void onInflate(const SkDOM& dom, const SkDOM::Node* node); 82 83 private: 84 SkRect fMargin; 85 typedef SkView::Layout INHERITED; 86 }; 87 88 #endif 89