/* * Copyright 2006 The Android Open Source Project * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkStackViewLayout_DEFINED #define SkStackViewLayout_DEFINED #include "SkView.h" class SkStackViewLayout : public SkView::Layout { public: SkStackViewLayout(); enum Orient { kHorizontal_Orient, kVertical_Orient, kOrientCount }; Orient getOrient() const { return (Orient)fOrient; } void setOrient(Orient); void getMargin(SkRect*) const; void setMargin(const SkRect&); SkScalar getSpacer() const { return fSpacer; } void setSpacer(SkScalar); /** Controls the posititioning in the same direction as the orientation */ enum Pack { kStart_Pack, kCenter_Pack, kEnd_Pack, kPackCount }; Pack getPack() const { return (Pack)fPack; } void setPack(Pack); /** Controls the posititioning at right angles to the orientation */ enum Align { kStart_Align, kCenter_Align, kEnd_Align, kStretch_Align, kAlignCount }; Align getAlign() const { return (Align)fAlign; } void setAlign(Align); bool getRound() const { return SkToBool(fRound); } void setRound(bool); protected: virtual void onLayoutChildren(SkView* parent); virtual void onInflate(const SkDOM&, const SkDOM::Node*); private: SkRect fMargin; SkScalar fSpacer; uint8_t fOrient, fPack, fAlign, fRound; }; class SkFillViewLayout : public SkView::Layout { public: SkFillViewLayout(); void getMargin(SkRect*) const; void setMargin(const SkRect&); protected: // overrides; virtual void onLayoutChildren(SkView* parent); virtual void onInflate(const SkDOM& dom, const SkDOM::Node* node); private: SkRect fMargin; typedef SkView::Layout INHERITED; }; #endif