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.cpp | |
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.cpp')
-rw-r--r-- | gui/widget.cpp | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/gui/widget.cpp b/gui/widget.cpp new file mode 100644 index 0000000000..6168eca278 --- /dev/null +++ b/gui/widget.cpp @@ -0,0 +1,99 @@ +/* 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$ + */ + +#include "stdafx.h" +#include "widget.h" +#include "dialog.h" +#include "newgui.h" + + +Widget::Widget(Dialog *boss, int x, int y, int w, int h) + : _boss(boss), _x(x), _y(y), _w(w), _h(h), _id(0), _flags(0) +{ + // Insert into the widget list of the boss + _next = _boss->_firstWidget; + _boss->_firstWidget = this; +} + +void Widget::draw() +{ + if (_flags & WIDGET_INVISIBLE) + return; + + // Account for our relative position in the dialog + _x += _boss->_x; + _y += _boss->_y; + + // Clear background + if (_flags & WIDGET_CLEARBG) + _boss->_gui->clearArea(_x, _y, _w, _h); + + // Draw border + if (_flags & WIDGET_BORDER) { + _boss->_gui->box(_x, _y, _w, _h); + _x += 4; + _y += 4; + } + + // Now perform the actual widget draw + drawWidget(false); + + if (_flags & WIDGET_BORDER) { + _x -= 4; + _y -= 4; + } + + // Restore x/y + _x -= _boss->_x; + _y -= _boss->_y; +} + + +#pragma mark - + + +StaticTextWidget::StaticTextWidget(Dialog *boss, int x, int y, int w, int h, const char *text) + : Widget(boss, x, y, w, h) +{ + // FIXME - maybe we should make a real copy of the string? + _text = text; +} + +void StaticTextWidget::drawWidget(bool hilite) +{ + NewGui *gui = _boss->_gui; + gui->drawString(_text, _x, _y, _w, hilite ? gui->_textcolorhi : gui->_textcolor); +} + + +#pragma mark - + + +ButtonWidget::ButtonWidget(Dialog *boss, int x, int y, int w, int h, const char *label, uint32 cmd) + : StaticTextWidget(boss, x, y, w, h, label), _cmd(cmd), _hotkey(0) +{ + _flags = WIDGET_ENABLED | WIDGET_BORDER /* | WIDGET_CLEARBG */; +} + +void ButtonWidget::handleClick(int button) +{ + if (_flags & WIDGET_ENABLED) + _boss->handleCommand(_cmd); +} |