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