[Scummvm-cvs-logs] CVS: scummvm/backends/wince/CEgui CEGUI.h,NONE,1.1 GUIElement.cpp,NONE,1.1 GUIElement.h,NONE,1.1 ItemAction.cpp,NONE,1.1 ItemAction.h,NONE,1.1 ItemSendKey.cpp,NONE,1.1 ItemSendKey.h,NONE,1.1 ItemSwitch.cpp,NONE,1.1 ItemSwitch.h,NONE,1.1 Panel.cpp,NONE,1.1 Panel.h,NONE,1.1 PanelItem.cpp,NONE,1.1 PanelItem.h,NONE,1.1 PanelKeyboard.cpp,NONE,1.1 PanelKeyboard.h,NONE,1.1 SDL_ImageResource.cpp,NONE,1.1 SDL_ImageResource.h,NONE,1.1 Toolbar.cpp,NONE,1.1 Toolbar.h,NONE,1.1 ToolbarHandler.cpp,NONE,1.1 ToolbarHandler.h,NONE,1.1
Nicolas Bacca
arisme at users.sourceforge.net
Mon Jan 26 12:22:41 CET 2004
Update of /cvsroot/scummvm/scummvm/backends/wince/CEgui
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14578
Added Files:
CEGUI.h GUIElement.cpp GUIElement.h ItemAction.cpp
ItemAction.h ItemSendKey.cpp ItemSendKey.h ItemSwitch.cpp
ItemSwitch.h Panel.cpp Panel.h PanelItem.cpp PanelItem.h
PanelKeyboard.cpp PanelKeyboard.h SDL_ImageResource.cpp
SDL_ImageResource.h Toolbar.cpp Toolbar.h ToolbarHandler.cpp
ToolbarHandler.h
Log Message:
Initial CE GUI classes commit
--- NEW FILE: CEGUI.h ---
/* ScummVM - Scumm Interpreter
* Copyright (C) 2001-2004 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: /cvsroot/scummvm/scummvm/backends/wince/CEgui/CEGUI.h,v 1.1 2004/01/26 08:10:06 arisme Exp $
*
*/
#include "ToolbarHandler.h"
#include "Panel.h"
#include "ItemSendKey.h"
#include "ItemSwitch.h"
#include "PanelKeyboard.h"
--- NEW FILE: GUIElement.cpp ---
/* ScummVM - Scumm Interpreter
* Copyright (C) 2001-2004 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: /cvsroot/scummvm/scummvm/backends/wince/CEgui/GUIElement.cpp,v 1.1 2004/01/26 08:10:06 arisme Exp $
*
*/
#include "stdafx.h"
#include "Toolbar.h"
#include "SDL_ImageResource.h"
namespace CEGUI {
GUIElement::GUIElement(int x, int y, int width, int height) :
_background(0), _drawn(false), _visible(true), _x(x), _y(y), _width(width), _height(height)
{
}
bool GUIElement::setBackground(WORD backgroundReference) {
_background = new SDL_ImageResource();
if (!_background->load(backgroundReference)) {
delete _background;
_background = NULL;
return false;
}
if (!_height && !_width) {
_height = _background->height();
_width = _background->width();
}
else
if (_background->height() != _height || _background->width() != _width) {
delete _background;
_background = NULL;
return false;
}
return true;
}
void GUIElement::move(int x, int y) {
_x = x;
_y = y;
}
bool GUIElement::draw(SDL_Surface *surface) {
if (_background && !_drawn && _visible) {
SDL_Rect rect;
rect.x = _x;
rect.y = _y;
rect.w = _width;
rect.h = _height;
SDL_BlitSurface(_background->get(), NULL, surface, &rect);
_drawn = true;
return true;
}
else
return false;
}
bool GUIElement::checkInside(int x, int y) {
if (x >= _x && x <= _x + _width && y >= _y && y <= _y + _height)
return true;
else
return false;
}
void GUIElement::setVisible(bool visibility) {
if (visibility && !_visible)
_drawn = false;
_visible = visibility;
}
bool GUIElement::visible() {
return _visible;
}
void GUIElement::forceRedraw() {
_drawn = false;
}
bool GUIElement::drawn() {
return _drawn;
}
int GUIElement::x() {
return _x;
}
int GUIElement::y() {
return _y;
}
int GUIElement::width() {
return _width;
}
int GUIElement::height() {
return _height;
}
GUIElement::~GUIElement() {
if (_background)
delete _background;
}
}
--- NEW FILE: GUIElement.h ---
/* ScummVM - Scumm Interpreter
* Copyright (C) 2001-2004 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: /cvsroot/scummvm/scummvm/backends/wince/CEgui/GUIElement.h,v 1.1 2004/01/26 08:10:06 arisme Exp $
*
*/
#ifndef CEGUI_GUIELEMENT
#define CEGUI_GUIELEMENT
#include "common/stdafx.h"
#include "common/scummsys.h"
#include "common/system.h"
#include "SDL.h"
#include "SDL_ImageResource.h"
namespace CEGUI {
class GUIElement {
public:
bool setBackground(WORD backgroundReference);
void setVisible(bool visibility);
virtual void forceRedraw();
virtual bool draw(SDL_Surface *surface);
virtual ~GUIElement();
void move(int x, int y);
int width();
int height();
int x();
int y();
virtual bool action(int x, int y, bool pushed) = 0;
bool visible();
bool drawn();
protected:
GUIElement(int x = 0, int y = 0, int width = 0, int height = 0);
bool checkInside(int x, int y);
bool _visible;
SDL_ImageResource *_background;
int _x;
int _y;
bool _drawn;
private:
int _width;
int _height;
};
}
#endif
--- NEW FILE: ItemAction.cpp ---
/* ScummVM - Scumm Interpreter
* Copyright (C) 2001-2004 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: /cvsroot/scummvm/scummvm/backends/wince/CEgui/ItemAction.cpp,v 1.1 2004/01/26 08:10:06 arisme Exp $
*
*/
#include "stdafx.h"
#include "ItemAction.h"
namespace CEGUI {
ItemAction::ItemAction(WORD reference, ActionType action) :
PanelItem(reference) {
_action = action;
if (!CEActions::Instance()->isEnabled(_action))
_visible = false;
}
ItemAction::~ItemAction() {
}
bool ItemAction::action(int x, int y, bool pushed) {
if (checkInside(x, y) && _visible) {
CEActions::Instance()->perform(_action);
return true;
}
else
return false;
}
}
--- NEW FILE: ItemAction.h ---
/* ScummVM - Scumm Interpreter
* Copyright (C) 2001-2004 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: /cvsroot/scummvm/scummvm/backends/wince/CEgui/ItemAction.h,v 1.1 2004/01/26 08:10:06 arisme Exp $
*
*/
#ifndef CEGUI_ITEMACTION
#define CEGUI_ITEMACTION
#include "common/stdafx.h"
#include "common/scummsys.h"
#include "common/system.h"
#include "CEActions.h"
namespace CEGUI {
class ItemAction : public PanelItem {
public:
ItemAction(WORD reference, ActionType action);
virtual ~ItemAction();
virtual bool action(int x, int y, bool pushed);
private:
ActionType _action;
};
}
#endif
--- NEW FILE: ItemSendKey.cpp ---
/* ScummVM - Scumm Interpreter
* Copyright (C) 2001-2004 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: /cvsroot/scummvm/scummvm/backends/wince/CEgui/ItemSendKey.cpp,v 1.1 2004/01/26 08:10:06 arisme Exp $
*
*/
#include "stdafx.h"
#include "ItemSendKey.h"
namespace CEGUI {
ItemSendKey::ItemSendKey(WORD reference, KeysBuffer *buffer, int ascii, int keycode, int flags) :
PanelItem(reference) {
_key.setAscii(ascii);
_key.setKeycode(keycode);
_key.setFlags(flags);
_buffer = buffer->Instance();
}
ItemSendKey::~ItemSendKey() {
}
bool ItemSendKey::action(int x, int y, bool pushed) {
if (checkInside(x, y) && _visible) {
_key.setPushed(pushed);
_buffer->add(&_key);
return true;
}
else
return false;
}
}
--- NEW FILE: ItemSendKey.h ---
/* ScummVM - Scumm Interpreter
* Copyright (C) 2001-2004 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: /cvsroot/scummvm/scummvm/backends/wince/CEgui/ItemSendKey.h,v 1.1 2004/01/26 08:10:06 arisme Exp $
*
*/
#ifndef CEGUI_ITEMSENDKEY
#define CEGUI_ITEMSENDKEY
#include "common/stdafx.h"
#include "common/scummsys.h"
#include "common/system.h"
#include "PanelItem.h"
#include "KeysBuffer.h"
using CEKEYS::KeysBuffer;
using CEKEYS::Key;
namespace CEGUI {
class ItemSendKey : public PanelItem {
public:
ItemSendKey(WORD reference, KeysBuffer *buffer, int ascii, int keycode = 0, int flags = 0);
virtual ~ItemSendKey();
virtual bool action(int x, int y, bool pushed);
private:
KeysBuffer *_buffer;
Key _key;
};
}
#endif
--- NEW FILE: ItemSwitch.cpp ---
/* ScummVM - Scumm Interpreter
* Copyright (C) 2001-2004 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: /cvsroot/scummvm/scummvm/backends/wince/CEgui/ItemSwitch.cpp,v 1.1 2004/01/26 08:10:06 arisme Exp $
*
*/
#include "stdafx.h"
#include "ItemSwitch.h"
namespace CEGUI {
ItemSwitch::ItemSwitch(WORD referenceTrue, WORD referenceFalse, bool *item) :
PanelItem(referenceTrue) {
_item = item;
_backgroundTrue = _background;
_backgroundFalse = new SDL_ImageResource();
if (!_backgroundFalse->load(referenceFalse)) {
delete _backgroundFalse;
delete _background;
_background = NULL;
_backgroundFalse = NULL;
}
if (!*_item)
_background = _backgroundFalse;
}
ItemSwitch::~ItemSwitch() {
if (_backgroundFalse)
delete _backgroundFalse;
}
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 (_panel)
_panel->forceRedraw();
return true;
}
else
return false;
}
}
--- NEW FILE: ItemSwitch.h ---
/* ScummVM - Scumm Interpreter
* Copyright (C) 2001-2004 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: /cvsroot/scummvm/scummvm/backends/wince/CEgui/ItemSwitch.h,v 1.1 2004/01/26 08:10:06 arisme Exp $
*
*/
#ifndef CEGUI_ITEMSWITCH
#define CEGUI_ITEMSWITCH
#include "common/stdafx.h"
#include "common/scummsys.h"
#include "common/system.h"
#include "Panel.h"
#include "KeysBuffer.h"
using CEKEYS::KeysBuffer;
using CEKEYS::Key;
namespace CEGUI {
class ItemSwitch : public PanelItem {
public:
ItemSwitch(WORD referenceTrue, WORD referenceFalse, bool *item);
virtual ~ItemSwitch();
virtual bool action(int x, int y, bool pushed);
private:
bool *_item;
SDL_ImageResource *_backgroundTrue;
SDL_ImageResource *_backgroundFalse;
};
}
#endif
--- NEW FILE: Panel.cpp ---
/* ScummVM - Scumm Interpreter
* Copyright (C) 2001-2004 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: /cvsroot/scummvm/scummvm/backends/wince/CEgui/Panel.cpp,v 1.1 2004/01/26 08:10:06 arisme Exp $
*
*/
#include "stdafx.h"
#include "Panel.h"
namespace CEGUI {
Panel::Panel(int interleave_first, int interleave) : Toolbar()
{
_interleave = interleave;
_currentItem = _x + interleave_first;
}
bool Panel::add(const String &name, const PanelItem *item) {
_itemsMap.addKey(name);
_itemsMap[name] = (PanelItem*)item;
_itemsMap[name]->move(_currentItem, _y + 10);
_itemsMap[name]->setPanel(this);
_currentItem += _interleave;
return true;
}
bool Panel::draw(SDL_Surface *surface) {
ItemMap::ConstIterator iterator;
if (!_drawn) {
GUIElement::draw(surface);
for (iterator = _itemsMap.begin(); iterator != _itemsMap.end(); ++iterator) {
((GUIElement*)(iterator->_value))->draw(surface);
}
return true;
}
else
return false;
}
void Panel::forceRedraw() {
ItemMap::ConstIterator iterator;
GUIElement::forceRedraw();
for (iterator = _itemsMap.begin(); iterator != _itemsMap.end(); ++iterator)
((GUIElement*)(iterator->_value))->forceRedraw();
}
bool Panel::action(int x, int y, bool pushed) {
ItemMap::ConstIterator iterator;
bool result = false;
if (!checkInside(x, y))
return false;
for (iterator = _itemsMap.begin(); !result && iterator != _itemsMap.end(); ++iterator)
result = ((GUIElement*)(iterator->_value))->action(x, y, pushed);
return result;
}
void Panel::clear() {
_itemsMap.clear();
}
Panel::~Panel() {
_itemsMap.clear();
}
}
--- NEW FILE: Panel.h ---
/* ScummVM - Scumm Interpreter
* Copyright (C) 2001-2004 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: /cvsroot/scummvm/scummvm/backends/wince/CEgui/Panel.h,v 1.1 2004/01/26 08:10:06 arisme Exp $
*
*/
#ifndef CEGUI_PANEL
#define CEGUI_PANEL
#include "common/stdafx.h"
#include "common/scummsys.h"
#include "common/system.h"
#include "common/map.h"
#include "common/str.h"
#include "PanelItem.h"
#include "Toolbar.h"
using Common::String;
using Common::Map;
namespace CEGUI {
class Panel : public Toolbar {
public:
Panel(int interleave_first, int interleave);
virtual bool draw(SDL_Surface *surface);
virtual ~Panel();
bool add(const String &name, const PanelItem *item);
void clear();
virtual void forceRedraw();
virtual bool action(int x, int y, bool pushed);
private:
struct IgnoreCaseComparator {
int operator()(const String& x, const String& y) const {
return scumm_stricmp(x.c_str(), y.c_str()); }
};
typedef Map<String, PanelItem*, IgnoreCaseComparator> ItemMap;
ItemMap _itemsMap;
int _interleave;
int _currentItem;
};
}
#endif
--- NEW FILE: PanelItem.cpp ---
/* ScummVM - Scumm Interpreter
* Copyright (C) 2001-2004 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: /cvsroot/scummvm/scummvm/backends/wince/CEgui/PanelItem.cpp,v 1.1 2004/01/26 08:10:06 arisme Exp $
*
*/
#include "stdafx.h"
#include "PanelItem.h"
namespace CEGUI {
PanelItem::PanelItem(WORD reference) : GUIElement() {
setBackground(reference);
_panel = NULL;
}
PanelItem::~PanelItem() {
}
bool PanelItem::action(int x, int y, bool pushed) {
return false;
}
void PanelItem::setPanel(Panel *panel) {
_panel = panel;
}
}
--- NEW FILE: PanelItem.h ---
/* ScummVM - Scumm Interpreter
* Copyright (C) 2001-2004 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: /cvsroot/scummvm/scummvm/backends/wince/CEgui/PanelItem.h,v 1.1 2004/01/26 08:10:06 arisme Exp $
*
*/
#ifndef CEGUI_PANELITEM
#define CEGUI_PANELITEM
#include "common/stdafx.h"
#include "common/scummsys.h"
#include "common/system.h"
#include "Toolbar.h"
namespace CEGUI {
class Panel;
class PanelItem : public GUIElement {
friend class Panel;
public:
PanelItem(WORD reference);
virtual ~PanelItem();
virtual bool action(int x, int y, bool pushed);
protected:
void setPanel(Panel *panel);
Panel *_panel;
};
}
#endif
--- NEW FILE: PanelKeyboard.cpp ---
/* ScummVM - Scumm Interpreter
* Copyright (C) 2001-2004 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: /cvsroot/scummvm/scummvm/backends/wince/CEgui/PanelKeyboard.cpp,v 1.1 2004/01/26 08:10:06 arisme Exp $
*
*/
#include "stdafx.h"
#include "PanelKeyboard.h"
namespace CEGUI {
const char KEYBOARD_MAPPING_ALPHA_HIGH[] = {"abcdefghijklm"};
const char KEYBOARD_MAPPING_NUMERIC_HIGH[] = {"12345"};
const char KEYBOARD_MAPPING_ALPHA_LOW[] = {"nopqrstuvwxyz"};
const char KEYBOARD_MAPPING_NUMERIC_LOW[] = {"67890"};
PanelKeyboard::PanelKeyboard(WORD reference, KeysBuffer *buffer) : Toolbar() {
setBackground(reference);
_buffer = buffer->Instance();
}
PanelKeyboard::~PanelKeyboard() {
}
bool PanelKeyboard::action(int x, int y, bool pushed) {
if (checkInside(x, y)) {
char keyAscii = 0;
char keyCode = 0;
if (x < 185) {
// Alpha selection
if (y <= _y + 20)
keyAscii = KEYBOARD_MAPPING_ALPHA_HIGH[((x + 10) / 14) - 1];
else
keyAscii = KEYBOARD_MAPPING_ALPHA_LOW[((x + 10) / 14) - 1];
keyCode = tolower(keyAscii);
}
else
if (x >= 186 && x <= 255) {
// Numeric selection
if (y <= _y + 20)
keyAscii = KEYBOARD_MAPPING_NUMERIC_HIGH[((x - 187 + 10) / 14) - 1];
else
keyAscii = KEYBOARD_MAPPING_NUMERIC_LOW[((x - 187 + 10) / 14) - 1];
keyCode = keyAscii;
}
else
if (x >= 302 && x <= 316 && y < _y + 20) {
// Backspace
keyAscii = VK_BACK;
keyCode = keyAscii;
}
else
if (x >= 302 && x <= 316 && y >= _y + 20) {
// Enter
keyAscii = 13;
keyCode = 10;
}
if (keyAscii != 0) {
_key.setAscii(keyAscii);
_key.setKeycode(tolower(keyAscii));
_key.setPushed(pushed);
_buffer->add(&_key);
return true;
}
else
return false;
}
else
return false;
}
}
--- NEW FILE: PanelKeyboard.h ---
/* ScummVM - Scumm Interpreter
* Copyright (C) 2001-2004 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: /cvsroot/scummvm/scummvm/backends/wince/CEgui/PanelKeyboard.h,v 1.1 2004/01/26 08:10:06 arisme Exp $
*
*/
#ifndef CEGUI_PANELKEYBOARD
#define CEGUI_PANELKEYBOARD
#include "common/stdafx.h"
#include "common/scummsys.h"
#include "common/system.h"
#include "Toolbar.h"
#include "KeysBuffer.h"
using CEKEYS::KeysBuffer;
using CEKEYS::Key;
namespace CEGUI {
class PanelKeyboard : public Toolbar {
public:
PanelKeyboard(WORD reference, KeysBuffer *buffer);
virtual ~PanelKeyboard();
virtual bool action(int x, int y, bool pushed);
private:
KeysBuffer *_buffer;
Key _key;
};
}
#endif
--- NEW FILE: SDL_ImageResource.cpp ---
/* ScummVM - Scumm Interpreter
* Copyright (C) 2001-2004 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: /cvsroot/scummvm/scummvm/backends/wince/CEgui/SDL_ImageResource.cpp,v 1.1 2004/01/26 08:10:06 arisme Exp $
*
*/
#include "stdafx.h"
#include "SDL_ImageResource.h"
namespace CEGUI {
SDL_ImageResource::SDL_ImageResource() :
_surface(0)
{
}
SDL_Surface* SDL_ImageResource::load(WORD resourceID) {
HRSRC resource;
HGLOBAL resourceGlobal;
LPVOID resourcePointer;
DWORD resourceSize;
SDL_RWops *surfaceData;
HMODULE moduleHandle;
moduleHandle = GetModuleHandle(NULL);
resource = FindResource(moduleHandle, MAKEINTRESOURCE(resourceID), TEXT("BINARY"));
if (!resource)
return NULL;
resourceSize = SizeofResource(moduleHandle, resource);
if (!resourceSize)
return NULL;
resourceGlobal = LoadResource(moduleHandle, resource);
if (!resourceGlobal)
return NULL;
resourcePointer = LockResource(resourceGlobal);
if (!resourcePointer)
return NULL;
surfaceData = SDL_RWFromMem(resourcePointer, resourceSize);
if (!surfaceData)
return NULL;
_surface = SDL_LoadBMP_RW(surfaceData, 1);
return _surface;
};
SDL_Surface* SDL_ImageResource::get() {
return _surface;
}
int SDL_ImageResource::height() {
if (_surface)
return _surface->h;
return 0;
}
int SDL_ImageResource::width() {
if (_surface)
return _surface->w;
return 0;
}
SDL_ImageResource::~SDL_ImageResource() {
if (_surface)
SDL_FreeSurface(_surface);
}
}
--- NEW FILE: SDL_ImageResource.h ---
/* ScummVM - Scumm Interpreter
* Copyright (C) 2001-2004 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: /cvsroot/scummvm/scummvm/backends/wince/CEgui/SDL_ImageResource.h,v 1.1 2004/01/26 08:10:06 arisme Exp $
*
*/
#ifndef CEGUI_SDL_IMAGERESOURCE
#define CEGUI_SDL_IMAGERESOURCE
#include "common/stdafx.h"
#include "common/scummsys.h"
#include "common/system.h"
#include "SDL.h"
namespace CEGUI {
class SDL_ImageResource {
public:
SDL_ImageResource();
SDL_Surface* load(WORD resourceID);
SDL_Surface* get();
int height();
int width();
virtual ~SDL_ImageResource();
private:
SDL_Surface *_surface;
};
}
#endif
--- NEW FILE: Toolbar.cpp ---
/* ScummVM - Scumm Interpreter
* Copyright (C) 2001-2004 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: /cvsroot/scummvm/scummvm/backends/wince/CEgui/Toolbar.cpp,v 1.1 2004/01/26 08:10:06 arisme Exp $
*
*/
#include "stdafx.h"
#include "Toolbar.h"
namespace CEGUI {
// FIXME (could be game dependant)
Toolbar::Toolbar() : GUIElement(0, 200, 320, 40)
{
}
Toolbar::~Toolbar() {
}
}
--- NEW FILE: Toolbar.h ---
/* ScummVM - Scumm Interpreter
* Copyright (C) 2001-2004 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: /cvsroot/scummvm/scummvm/backends/wince/CEgui/Toolbar.h,v 1.1 2004/01/26 08:10:06 arisme Exp $
*
*/
#ifndef CEGUI_TOOLBAR
#define CEGUI_TOOLBAR
#include "common/stdafx.h"
#include "common/scummsys.h"
#include "common/system.h"
#include "common/map.h"
#include "common/str.h"
#include "GUIElement.h"
namespace CEGUI {
class Toolbar : public GUIElement {
public:
virtual ~Toolbar();
virtual bool action(int x, int y, bool pushed) = 0;
protected:
Toolbar();
};
}
#endif
--- NEW FILE: ToolbarHandler.cpp ---
/* ScummVM - Scumm Interpreter
* Copyright (C) 2001-2004 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: /cvsroot/scummvm/scummvm/backends/wince/CEgui/ToolbarHandler.cpp,v 1.1 2004/01/26 08:10:06 arisme Exp $
*
*/
#include "stdafx.h"
#include "ToolbarHandler.h"
namespace CEGUI {
ToolbarHandler::ToolbarHandler():
_current(""), _active(NULL) {
}
bool ToolbarHandler::add(const String &name, const Toolbar &toolbar) {
_toolbarMap.addKey(name);
_toolbarMap[name] = (Toolbar*)&toolbar;
if (!_active) {
_active = &((Toolbar&)toolbar);
_current = name;
}
return true;
}
String ToolbarHandler::activeName() {
return _current;
}
bool ToolbarHandler::setActive(const String &name) {
if (!_toolbarMap.contains(name))
return false;
if (_current == name)
return true;
_current = name;
_active = _toolbarMap[name];
_active->forceRedraw();
return true;
}
bool ToolbarHandler::action(int x, int y, bool pushed) {
if (_active)
return _active->action(x, y, pushed);
else
return false;
}
void ToolbarHandler::setVisible(bool visible) {
if (_active)
_active->setVisible(visible);
}
bool ToolbarHandler::visible() {
if (_active)
return _active->visible();
else
return false;
}
void ToolbarHandler::forceRedraw() {
if (_active)
_active->forceRedraw();
}
bool ToolbarHandler::drawn() {
if (_active)
return _active->drawn();
else
return false;
}
bool ToolbarHandler::draw(SDL_Surface *surface, SDL_Rect *rect) {
if (_active) {
bool result = _active->draw(surface);
if (result) {
rect->x = _active->x();
rect->y = _active->y();
rect->w = _active->width();
rect->h = _active->height();
}
return result;
}
else
return false;
}
Toolbar* ToolbarHandler::active() {
return _active;
}
ToolbarHandler::~ToolbarHandler() {
_toolbarMap.clear();
}
}
--- NEW FILE: ToolbarHandler.h ---
/* ScummVM - Scumm Interpreter
* Copyright (C) 2001-2004 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: /cvsroot/scummvm/scummvm/backends/wince/CEgui/ToolbarHandler.h,v 1.1 2004/01/26 08:10:06 arisme Exp $
*
*/
#ifndef CEGUI_TOOLBARHANDLER
#define CEGUI_TOOLBARHANDLER
#include "common/stdafx.h"
#include "common/scummsys.h"
#include "common/system.h"
#include "common/str.h"
#include "common/map.h"
#include "Toolbar.h"
using Common::String;
using Common::Map;
namespace CEGUI {
class ToolbarHandler {
public:
ToolbarHandler();
bool add(const String &name, const Toolbar &toolbar);
bool setActive(const String &name);
bool action(int x, int y, bool pushed);
void setVisible(bool visible);
bool visible();
String activeName();
void forceRedraw();
bool draw(SDL_Surface *surface, SDL_Rect *rect);
bool drawn();
Toolbar *active();
virtual ~ToolbarHandler();
private:
struct IgnoreCaseComparator {
int operator()(const String& x, const String& y) const {
return scumm_stricmp(x.c_str(), y.c_str()); }
};
Map<String, Toolbar*, IgnoreCaseComparator> _toolbarMap;
String _current;
Toolbar *_active;
};
}
#endif
More information about the Scummvm-git-logs
mailing list