diff options
author | Max Horn | 2002-07-05 16:56:53 +0000 |
---|---|---|
committer | Max Horn | 2002-07-05 16:56:53 +0000 |
commit | 84cafcc64a7ae6b62112c917c063f616dba0efe4 (patch) | |
tree | 7416be2ad50f5c00e8bf98e6f9794855ed330d91 /gui/widget.h | |
parent | 7bfaa15f151ab4f4b4a5b9a09d109651e389db2a (diff) | |
download | scummvm-rg350-84cafcc64a7ae6b62112c917c063f616dba0efe4.tar.gz scummvm-rg350-84cafcc64a7ae6b62112c917c063f616dba0efe4.tar.bz2 scummvm-rg350-84cafcc64a7ae6b62112c917c063f616dba0efe4.zip |
new experimental GUI code
svn-id: r4463
Diffstat (limited to 'gui/widget.h')
-rw-r--r-- | gui/widget.h | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/gui/widget.h b/gui/widget.h new file mode 100644 index 0000000000..30b0b6c431 --- /dev/null +++ b/gui/widget.h @@ -0,0 +1,89 @@ +/* ScummVM - Scumm Interpreter + * Copyright (C) 2002 The ScummVM project + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * $Header$ + */ + +#ifndef WIDGET_H +#define WIDGET_H + +#include "scummsys.h" + + +class Dialog; + +enum { + WIDGET_ENABLED = 1 << 0, + WIDGET_INVISIBLE = 1 << 1, + WIDGET_BORDER = 1 << 2, + WIDGET_CLEARBG = 1 << 3, + WIDGET_WANT_TICKLE = 1 << 4, +}; + +/* Widget */ +class Widget { +friend class Dialog; +protected: + Dialog *_boss; + Widget *_next; + int16 _x, _y; + uint16 _w, _h; + uint16 _id; + int _flags; +public: + Widget(Dialog *boss, int x, int y, int w, int h); + + virtual void handleClick(int button) {} + void draw(); + + void setFlags(int flags) { _flags |= flags; } + void clearFlags(int flags) { _flags &= ~flags; } + int getFlags() const { return _flags; } + +protected: + virtual void drawWidget(bool hilite) {} +}; + + +/* StaticTextWidget */ +class StaticTextWidget : public Widget { +protected: + const char *_text; +public: + StaticTextWidget(Dialog *boss, int x, int y, int w, int h, const char *text); + void setText(const char *text); + const char *getText(); + +protected: + void drawWidget(bool hilite); +}; + + +/* ButtonWidget */ +class ButtonWidget : public StaticTextWidget { +protected: + uint8 _hotkey; + uint32 _cmd; +public: + ButtonWidget(Dialog *boss, int x, int y, int w, int h, const char *label, uint32 cmd); + void setCmd(uint32 cmd); + uint32 getCmd(); + void handleClick(int button); +}; + + +#endif |