/* * Copyright (c) 1987, 1988, 1989 Stanford University * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of Stanford not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. Stanford makes no representations about * the suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * STANFORD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. * IN NO EVENT SHALL STANFORD BE LIABLE FOR ANY SPECIAL, INDIRECT OR * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * A frame surrounds another interactor. */ #ifndef frame_h #define frame_h #include class Frame : public MonoScene { public: Frame(Interactor* = nil, int width = 1); Frame(const char*, Interactor* = nil, int width = 1); protected: int left:8, bottom:8, right:8, top:8; Frame(Interactor*, int, int, int, int); Frame(const char*, Interactor*, int, int, int, int); ~Frame(); virtual void Reconfig(); virtual void Resize(); virtual void Redraw(Coord, Coord, Coord, Coord); private: void Init(Interactor*, int, int, int, int); }; class ShowFrame : public Frame { public: ShowFrame(Interactor* i = nil, int width = 1); ShowFrame(const char* name, Interactor* i = nil, int width = 1); virtual void Handle(Event&); virtual void HandleInput(Event&); virtual void InsideFrame(bool); protected: ShowFrame(Interactor* i, int l, int b, int r, int h); ShowFrame(const char* name, Interactor* i, int l, int b, int r, int h); private: void Init(); }; class Banner; class TitleFrame : public ShowFrame { public: TitleFrame(Banner*, Interactor*, int width = 1); TitleFrame(const char*, Banner*, Interactor*, int width = 1); virtual void InsideFrame(bool); protected: Banner* banner; virtual Interactor* Wrap(Interactor*); private: void Init(Banner*, Interactor*); }; class BorderFrame : public ShowFrame { public: BorderFrame(Interactor* = nil, int width = 1); BorderFrame(const char*, Interactor* = nil, int width = 1); virtual void InsideFrame(bool); protected: virtual void Redraw(Coord, Coord, Coord, Coord); private: bool normal; void Init(); }; class ShadowFrame : public Frame { public: ShadowFrame(Interactor* = nil, int h = 1, int v = 1); ShadowFrame(const char*, Interactor* = nil, int h = 1, int v = 1); protected: virtual void Redraw(Coord, Coord, Coord, Coord); private: void Init(Interactor*, int h, int v); }; class MarginFrame : public Frame { public: MarginFrame(Interactor* = nil, int margin = 0); MarginFrame(const char*, Interactor* = nil, int margin = 0); MarginFrame(Interactor*, int margin, int shrink, int stretch); MarginFrame(Interactor*, int hmargin, int vmargin); MarginFrame(Interactor*, int hmargin, int hshrink, int hstretch, int vmargin, int vshrink, int vstretch ); protected: virtual void Reconfig(); virtual void Resize(); virtual void Redraw(Coord, Coord, Coord, Coord); protected: int hmargin, hshrink, hstretch; int vmargin, vshrink, vstretch; private: void Init(int, int, int, int, int, int); }; #endif