11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
20b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger/*
31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2006 The Android Open Source Project
40b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger *
51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be
61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file.
70b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger */
80b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger
91cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
100b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger#ifndef SkStackViewLayout_DEFINED
110b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger#define SkStackViewLayout_DEFINED
120b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger
130b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger#include "SkView.h"
140b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger
150b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerclass SkStackViewLayout : public SkView::Layout {
160b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerpublic:
170b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    SkStackViewLayout();
180b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger
190b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    enum Orient {
200b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger        kHorizontal_Orient,
210b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger        kVertical_Orient,
220b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger
230b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger        kOrientCount
240b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    };
250b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    Orient  getOrient() const { return (Orient)fOrient; }
260b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    void    setOrient(Orient);
270b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger
280b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    void        getMargin(SkRect*) const;
290b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    void        setMargin(const SkRect&);
300b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger
310b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    SkScalar    getSpacer() const { return fSpacer; }
320b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    void        setSpacer(SkScalar);
330b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger
340b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    /** Controls the posititioning in the same direction as the orientation
350b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    */
360b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    enum Pack {
370b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger        kStart_Pack,
380b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger        kCenter_Pack,
390b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger        kEnd_Pack,
400b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger
410b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger        kPackCount
420b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    };
430b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    Pack    getPack() const { return (Pack)fPack; }
440b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    void    setPack(Pack);
450b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger
460b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    /** Controls the posititioning at right angles to the orientation
470b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    */
480b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    enum Align {
490b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger        kStart_Align,
500b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger        kCenter_Align,
510b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger        kEnd_Align,
520b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger        kStretch_Align,
530b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger
540b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger        kAlignCount
550b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    };
560b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    Align   getAlign() const { return (Align)fAlign; }
570b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    void    setAlign(Align);
580b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger
590b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    bool    getRound() const { return SkToBool(fRound); }
600b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    void    setRound(bool);
610b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger
620b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerprotected:
630b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    virtual void onLayoutChildren(SkView* parent);
640b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    virtual void onInflate(const SkDOM&, const SkDOM::Node*);
650b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger
660b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerprivate:
670b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    SkRect      fMargin;
680b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    SkScalar    fSpacer;
690b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    uint8_t     fOrient, fPack, fAlign, fRound;
700b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger};
710b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger
720b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerclass SkFillViewLayout : public SkView::Layout {
730b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerpublic:
740b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger            SkFillViewLayout();
750b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    void    getMargin(SkRect*) const;
760b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    void    setMargin(const SkRect&);
770b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger
780b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerprotected:
790b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    // overrides;
800b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    virtual void onLayoutChildren(SkView* parent);
810b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    virtual void onInflate(const SkDOM& dom, const SkDOM::Node* node);
820b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger
830b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerprivate:
840b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    SkRect  fMargin;
850b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    typedef SkView::Layout INHERITED;
860b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger};
870b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger
880b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger#endif
890b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger
90