[Scummvm-cvs-logs] SF.net SVN: scummvm:[45839] scummvm/trunk/engines/sci/gui
m_kiewitz at users.sourceforge.net
m_kiewitz at users.sourceforge.net
Wed Nov 11 21:08:55 CET 2009
Revision: 45839
http://scummvm.svn.sourceforge.net/scummvm/?rev=45839&view=rev
Author: m_kiewitz
Date: 2009-11-11 20:08:55 +0000 (Wed, 11 Nov 2009)
Log Message:
-----------
SCI/newgui: menu now only missing: menu invert, separators
Modified Paths:
--------------
scummvm/trunk/engines/sci/gui/gui_menu.cpp
scummvm/trunk/engines/sci/gui/gui_menu.h
Modified: scummvm/trunk/engines/sci/gui/gui_menu.cpp
===================================================================
--- scummvm/trunk/engines/sci/gui/gui_menu.cpp 2009-11-11 19:43:51 UTC (rev 45838)
+++ scummvm/trunk/engines/sci/gui/gui_menu.cpp 2009-11-11 20:08:55 UTC (rev 45839)
@@ -400,6 +400,7 @@
GuiMenuItemList::iterator itemIterator = _itemList.begin();
GuiMenuItemList::iterator itemEnd = _itemList.end();
GuiMenuItemEntry *itemEntry;
+ GuiMenuItemEntry *firstItemEntry = NULL;
GuiMenuItemEntry *lastItemEntry = NULL;
// Fixup menuId if needed
@@ -407,20 +408,21 @@
menuId = 1;
if (menuId == 0)
menuId = _listCount;
- // Fixup itemId as well
- if (itemId == 0)
- itemId = 32678;
while (itemIterator != itemEnd) {
itemEntry = *itemIterator;
if (itemEntry->menuId == menuId) {
if (itemEntry->id == itemId)
return itemEntry;
+ if (!firstItemEntry)
+ firstItemEntry = itemEntry;
if ((!lastItemEntry) || (itemEntry->id > lastItemEntry->id))
lastItemEntry = itemEntry;
}
itemIterator++;
}
- return lastItemEntry;
+ if (itemId == 0)
+ return lastItemEntry;
+ return firstItemEntry;
}
void SciGuiMenu::drawMenu(uint16 menuId) {
@@ -496,6 +498,17 @@
_gfx->BitsShow(_menuRect);
}
+void SciGuiMenu::invertMenuSelection(uint16 itemId) {
+ Common::Rect itemRect = _menuRect;
+
+ itemRect.top += (itemId - 1) * _gfx->_curPort->fontHeight;
+ itemRect.bottom = itemRect.top + _gfx->_curPort->fontHeight + 1;
+ itemRect.left++; itemRect.right--;
+
+ _gfx->InvertRect(itemRect);
+ _gfx->BitsShow(itemRect);
+}
+
GuiMenuItemEntry *SciGuiMenu::interactiveWithKeyboard() {
sci_event_t curEvent;
uint16 newMenuId = _curMenuId;
@@ -506,8 +519,13 @@
calculateTextWidth();
_oldPort = _gfx->SetPort(_gfx->_menuPort);
_barSaveHandle = _gfx->BitsSave(_gfx->_menuBarRect, SCI_SCREEN_MASK_VISUAL);
+
+ _gfx->PenColor(0);
+ _gfx->BackColor(_screen->_colorWhite);
+
drawBar();
drawMenu(curItemEntry->menuId);
+ invertMenuSelection(curItemEntry->id);
_gfx->BitsShow(_gfx->_menuBarRect);
_gfx->BitsShow(_menuRect);
@@ -544,7 +562,10 @@
if (newMenuId != curItemEntry->menuId) {
// Menu changed, remove cur menu and paint new menu
drawMenu(newMenuId);
+ } else {
+ invertMenuSelection(curItemEntry->id);
}
+ invertMenuSelection(newItemId);
curItemEntry = newItemEntry;
}
Modified: scummvm/trunk/engines/sci/gui/gui_menu.h
===================================================================
--- scummvm/trunk/engines/sci/gui/gui_menu.h 2009-11-11 19:43:51 UTC (rev 45838)
+++ scummvm/trunk/engines/sci/gui/gui_menu.h 2009-11-11 20:08:55 UTC (rev 45839)
@@ -94,6 +94,7 @@
GuiMenuItemEntry *findItem(uint16 menuId, uint16 itemId);
void calculateTextWidth();
void drawMenu(uint16 menuId);
+ void invertMenuSelection(uint16 itemId);
GuiMenuItemEntry *interactiveWithKeyboard();
GuiMenuItemEntry *interactiveWithMouse();
GuiMenuItemEntry *interactiveGetItem(uint16 menuId, uint16 itemId);
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