* Copyright 2007, Ingo Weinhold <bonefish@cs.tu-berlin.de>.
* All rights reserved. Distributed under the terms of the MIT License.
*/
#ifndef WIDGET_LAYOUT_TEST_GROUP_VIEW_H
#define WIDGET_LAYOUT_TEST_GROUP_VIEW_H
#include "View.h"
class GroupView : public View {
public:
GroupView(enum orientation orientation,
int32 lineCount = 1);
virtual ~GroupView();
void SetSpacing(float horizontal, float vertical);
void SetInsets(float left, float top, float right,
float bottom);
virtual BSize MinSize();
virtual BSize MaxSize();
virtual BSize PreferredSize();
virtual BAlignment Alignment();
virtual void InvalidateLayout();
virtual void Layout();
private:
struct LayoutInfo;
private:
void _ValidateMinMax();
void _LayoutLine(int32 size, LayoutInfo* infos,
int32 infoCount);
BSize _AddInsetsAndSpacing(BSize size);
BSize _SubtractInsetsAndSpacing(BSize size);
int32 _RowCount() const;
int32 _ColumnCount() const;
View* _ChildAt(int32 column, int32 row) const;
private:
enum orientation fOrientation;
int32 fLineCount;
float fColumnSpacing;
float fRowSpacing;
BRect fInsets;
bool fMinMaxValid;
int32 fMinWidth;
int32 fMinHeight;
int32 fMaxWidth;
int32 fMaxHeight;
int32 fPreferredWidth;
int32 fPreferredHeight;
LayoutInfo* fColumnInfos;
LayoutInfo* fRowInfos;
int32 fColumnCount;
int32 fRowCount;
};
class Glue : public View {
public:
Glue();
};
class Strut : public View {
public:
Strut(float pixelWidth, float pixelHeight);
virtual BSize MinSize();
virtual BSize MaxSize();
private:
BSize fSize;
};
class HStrut : public Strut {
public:
HStrut(float width);
};
class VStrut : public Strut {
public:
VStrut(float height);
};
#endif