* Copyright 2007, Ingo Weinhold <bonefish@cs.tu-berlin.de>.
* All rights reserved. Distributed under the terms of the MIT License.
*/
#ifndef WIDGET_LAYOUT_TEST_VIEW_H
#define WIDGET_LAYOUT_TEST_VIEW_H
#include <Alignment.h>
#include <List.h>
#include <Rect.h>
class BView;
class View {
public:
View();
View(BRect frame);
virtual ~View();
virtual void SetFrame(BRect frame);
BRect Frame() const;
BRect Bounds() const;
void SetLocation(BPoint location);
BPoint Location() const;
void SetSize(BSize size);
BSize Size() const;
virtual BSize MinSize();
virtual BSize MaxSize();
virtual BSize PreferredSize();
virtual BAlignment Alignment();
BPoint LocationInContainer() const;
BRect FrameInContainer() const;
BPoint ConvertFromContainer(BPoint point) const;
BRect ConvertFromContainer(BRect rect) const;
BPoint ConvertToContainer(BPoint point) const;
BRect ConvertToContainer(BRect rect) const;
View* Parent() const;
BView* Container() const;
bool AddChild(View* child);
bool RemoveChild(View* child);
View* RemoveChild(int32 index);
int32 CountChildren() const;
View* ChildAt(int32 index) const;
View* ChildAt(BPoint point) const;
View* AncestorAt(BPoint point,
BPoint* localPoint = NULL) const;
int32 IndexOfChild(View* child) const;
void Invalidate(BRect rect);
void Invalidate();
virtual void InvalidateLayout();
bool IsLayoutValid() const;
void SetViewColor(rgb_color color);
virtual void Draw(BView* container, BRect updateRect);
virtual void MouseDown(BPoint where, uint32 buttons,
int32 modifiers);
virtual void MouseUp(BPoint where, uint32 buttons,
int32 modifiers);
virtual void MouseMoved(BPoint where, uint32 buttons,
int32 modifiers);
virtual void AddedToContainer();
virtual void RemovingFromContainer();
virtual void FrameChanged(BRect oldFrame, BRect newFrame);
virtual void Layout();
protected:
void _AddedToParent(View* parent);
void _RemovingFromParent();
void _AddedToContainer(BView* container);
void _RemovingFromContainer();
void _Draw(BView* container, BRect updateRect);
private:
BRect fFrame;
BView* fContainer;
View* fParent;
BList fChildren;
rgb_color fViewColor;
bool fLayoutValid;
};
#endif