/* * Copyright (c)1998 by Angry Red Planet. * * This code is distributed under a modified form of the * Artistic License. A copy of this license should have * been included with it; if this wasn't the case, the * entire package can be obtained at * . * * A logical GUI layout engine: the programmer describes * high-level relationships between the different user interface * object through formal container classes, which then take care * of their physical placement. The system is completely * font-sensitive and resizeable. * * ---------------------------------------------------------------------- * * ArpLView.h * * A basic BView that is also an ArpLayoutable. * * ---------------------------------------------------------------------- * * Known Bugs * ~~~~~~~~~~ * * ---------------------------------------------------------------------- * * To Do * ~~~~~ * * ---------------------------------------------------------------------- * * History * ~~~~~~~ * * Dec 6, 1998: * First public release. * */ #pragma once #ifndef ARPLAYOUT_ARPLVIEW_H #define ARPLAYOUT_ARPLVIEW_H #ifndef ARPLAYOUT_ARPVIEWWRAPPER_H #include #endif #ifndef _VIEW_H #include #endif class ArpLView : public BView, public ArpViewWrapper { public: ArpLView(const char* name, uint32 flags=B_WILL_DRAW|B_FULL_UPDATE_ON_RESIZE); ArpLView(BMessage* data); // Almost all users will not want this form -- the initial // frame and resizing behavior are entirely handled by the // ArpLayoutable classes. ArpLView(BRect frame, const char* name, uint32 resizeMask, uint32 flags=B_WILL_DRAW|B_FULL_UPDATE_ON_RESIZE); static BArchivable* Instantiate(BMessage* archive); virtual status_t Archive(BMessage* data, bool deep=TRUE); // Inplement some standard BView<->ArpLayoutable interaction. virtual void Draw(BRect updateRect); virtual void MakeFocus(bool focusState = true); virtual void GetPreferredSize(float* width, float* height); virtual void ResizeToPreferred(); protected: void ComputeDimens(void); private: }; #endif