[Scummvm-cvs-logs] SF.net SVN: scummvm: [23006] scummvm/trunk/backends/wince/CEgui
knakos at users.sourceforge.net
knakos at users.sourceforge.net
Sat Jun 10 13:23:07 CEST 2006
Revision: 23006
Author: knakos
Date: 2006-06-10 04:23:00 -0700 (Sat, 10 Jun 2006)
ViewCVS: http://svn.sourceforge.net/scummvm/?rev=23006&view=rev
Log Message:
-----------
added multiple state support
Modified Paths:
--------------
scummvm/trunk/backends/wince/CEgui/ItemSwitch.cpp
scummvm/trunk/backends/wince/CEgui/ItemSwitch.h
Modified: scummvm/trunk/backends/wince/CEgui/ItemSwitch.cpp
===================================================================
--- scummvm/trunk/backends/wince/CEgui/ItemSwitch.cpp 2006-06-10 11:16:43 UTC (rev 23005)
+++ scummvm/trunk/backends/wince/CEgui/ItemSwitch.cpp 2006-06-10 11:23:00 UTC (rev 23006)
@@ -25,9 +25,7 @@
namespace CEGUI {
- ItemSwitch::ItemSwitch(WORD referenceTrue, WORD referenceFalse, bool *item) :
- PanelItem(referenceTrue) {
- _item = item;
+ void ItemSwitch::init(WORD referenceTrue, WORD referenceFalse) {
_backgroundTrue = _background;
_backgroundFalse = new SDL_ImageResource();
if (!_backgroundFalse->load(referenceFalse)) {
@@ -36,10 +34,25 @@
_background = NULL;
_backgroundFalse = NULL;
}
+ }
+
+ ItemSwitch::ItemSwitch(WORD referenceTrue, WORD referenceFalse, bool *item) :
+ PanelItem(referenceTrue) {
+ init(referenceTrue, referenceFalse);
+ _item = item;
+ _itemmax = -1;
if (!*_item)
_background = _backgroundFalse;
}
+ ItemSwitch::ItemSwitch(WORD referenceTrue, WORD referenceFalse, int *item, int max) :
+ PanelItem(referenceTrue) {
+ init(referenceTrue, referenceFalse);
+ _itemmultiple = item;
+ _itemmax = max;
+ if (!*item)
+ _background = _backgroundFalse;
+ }
ItemSwitch::~ItemSwitch() {
if (_backgroundFalse)
@@ -49,18 +62,32 @@
bool ItemSwitch::action(int x, int y, bool pushed) {
if (checkInside(x, y) && _visible && pushed) {
- *_item = !*_item;
- if (*_item)
- _background = _backgroundTrue;
- else
- _background = _backgroundFalse;
+ if (_itemmax <= 0) {
+ *_item = !*_item;
+ if (*_item)
+ _background = _backgroundTrue;
+ else
+ _background = _backgroundFalse;
- if (_panel)
- _panel->forceRedraw();
+ if (_panel)
+ _panel->forceRedraw();
- return true;
- }
- else
+ return true;
+ } else {
+ *_itemmultiple = *_itemmultiple + 1;
+ if (*_itemmultiple > _itemmax)
+ *_itemmultiple = 0;
+ if (*_itemmultiple)
+ _background = _backgroundTrue;
+ else
+ _background = _backgroundFalse;
+
+ if (_panel)
+ _panel->forceRedraw();
+
+ return true;
+ }
+ } else
return false;
}
}
Modified: scummvm/trunk/backends/wince/CEgui/ItemSwitch.h
===================================================================
--- scummvm/trunk/backends/wince/CEgui/ItemSwitch.h 2006-06-10 11:16:43 UTC (rev 23005)
+++ scummvm/trunk/backends/wince/CEgui/ItemSwitch.h 2006-06-10 11:23:00 UTC (rev 23006)
@@ -37,10 +37,14 @@
class ItemSwitch : public PanelItem {
public:
ItemSwitch(WORD referenceTrue, WORD referenceFalse, bool *item);
+ ItemSwitch(WORD referenceTrue, WORD referenceFalse, int *item, int max);
virtual ~ItemSwitch();
virtual bool action(int x, int y, bool pushed);
private:
+ void init(WORD referenceTrue, WORD referenceFalse);
bool *_item;
+ static bool _itemdummy;
+ int *_itemmultiple, _itemmax;
SDL_ImageResource *_backgroundTrue;
SDL_ImageResource *_backgroundFalse;
};
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list