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 SkStackViewLayout_DEFINED michael@0: #define SkStackViewLayout_DEFINED michael@0: michael@0: #include "SkView.h" michael@0: michael@0: class SkStackViewLayout : public SkView::Layout { michael@0: public: michael@0: SkStackViewLayout(); michael@0: michael@0: enum Orient { michael@0: kHorizontal_Orient, michael@0: kVertical_Orient, michael@0: michael@0: kOrientCount michael@0: }; michael@0: Orient getOrient() const { return (Orient)fOrient; } michael@0: void setOrient(Orient); michael@0: michael@0: void getMargin(SkRect*) const; michael@0: void setMargin(const SkRect&); michael@0: michael@0: SkScalar getSpacer() const { return fSpacer; } michael@0: void setSpacer(SkScalar); michael@0: michael@0: /** Controls the posititioning in the same direction as the orientation michael@0: */ michael@0: enum Pack { michael@0: kStart_Pack, michael@0: kCenter_Pack, michael@0: kEnd_Pack, michael@0: michael@0: kPackCount michael@0: }; michael@0: Pack getPack() const { return (Pack)fPack; } michael@0: void setPack(Pack); michael@0: michael@0: /** Controls the posititioning at right angles to the orientation michael@0: */ michael@0: enum Align { michael@0: kStart_Align, michael@0: kCenter_Align, michael@0: kEnd_Align, michael@0: kStretch_Align, michael@0: michael@0: kAlignCount michael@0: }; michael@0: Align getAlign() const { return (Align)fAlign; } michael@0: void setAlign(Align); michael@0: michael@0: bool getRound() const { return SkToBool(fRound); } michael@0: void setRound(bool); michael@0: michael@0: protected: michael@0: virtual void onLayoutChildren(SkView* parent); michael@0: virtual void onInflate(const SkDOM&, const SkDOM::Node*); michael@0: michael@0: private: michael@0: SkRect fMargin; michael@0: SkScalar fSpacer; michael@0: uint8_t fOrient, fPack, fAlign, fRound; michael@0: }; michael@0: michael@0: class SkFillViewLayout : public SkView::Layout { michael@0: public: michael@0: SkFillViewLayout(); michael@0: void getMargin(SkRect*) const; michael@0: void setMargin(const SkRect&); michael@0: michael@0: protected: michael@0: // overrides; michael@0: virtual void onLayoutChildren(SkView* parent); michael@0: virtual void onInflate(const SkDOM& dom, const SkDOM::Node* node); michael@0: michael@0: private: michael@0: SkRect fMargin; michael@0: typedef SkView::Layout INHERITED; michael@0: }; michael@0: michael@0: #endif