[Scummvm-git-logs] scummvm master -> 0ecaa79f08d7cf4caed3f274a728906de5e2115a
sev-
sev at scummvm.org
Sat Jan 14 13:18:22 CET 2017
This automated email contains information about 5 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
0b95b734b8 COMMON: Add ReadStream::readPascalString()
95d0477674 WAGE: Switch to the common readPascalString
a0907d2679 GRAPHICS: MACGUI: Added method for reading menu from resource
8690fe444e WAGE: Switch menu reading to common code
0ecaa79f08 GRAPHICS: Renamed Menu to MacMenu to avoid potential name collision
Commit: 0b95b734b85219044fe817c0609d1d23d6203700
https://github.com/scummvm/scummvm/commit/0b95b734b85219044fe817c0609d1d23d6203700
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-01-14T12:45:58+01:00
Commit Message:
COMMON: Add ReadStream::readPascalString()
Changed paths:
common/stream.cpp
common/stream.h
diff --git a/common/stream.cpp b/common/stream.cpp
index 0877431..8d93888 100644
--- a/common/stream.cpp
+++ b/common/stream.cpp
@@ -39,6 +39,27 @@ SeekableReadStream *ReadStream::readStream(uint32 dataSize) {
return new MemoryReadStream((byte *)buf, dataSize, DisposeAfterUse::YES);
}
+Common::String ReadStream::readPascalString(bool transformCR) {
+ Common::String s;
+ char *buf;
+ int len;
+ int i;
+
+ len = readByte();
+ buf = (char *)malloc(len + 1);
+ for (i = 0; i < len; i++) {
+ buf[i] = readByte();
+ if (transformCR && buf[i] == 0x0d)
+ buf[i] = '\n';
+ }
+
+ buf[i] = 0;
+
+ s = buf;
+ free(buf);
+
+ return s;
+}
uint32 MemoryReadStream::read(void *dataPtr, uint32 dataSize) {
// Read at most as many bytes as are still available...
diff --git a/common/stream.h b/common/stream.h
index 3010772..0ff430f 100644
--- a/common/stream.h
+++ b/common/stream.h
@@ -427,6 +427,14 @@ public:
*/
SeekableReadStream *readStream(uint32 dataSize);
+ /**
+ * Read stream in Pascal format, that is, one byte is
+ * string length, followed by string data
+ *
+ * @param transformCR if set (default), then transform \r into \n
+ */
+ Common::String readPascalString(bool transformCR = true);
+
};
Commit: 95d047767417504dac9ff6cbe9d86b63baea3ce8
https://github.com/scummvm/scummvm/commit/95d047767417504dac9ff6cbe9d86b63baea3ce8
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-01-14T12:46:27+01:00
Commit Message:
WAGE: Switch to the common readPascalString
Changed paths:
engines/wage/entities.cpp
engines/wage/util.cpp
engines/wage/wage.h
engines/wage/world.cpp
diff --git a/engines/wage/entities.cpp b/engines/wage/entities.cpp
index 90247a5..f4981a7 100644
--- a/engines/wage/entities.cpp
+++ b/engines/wage/entities.cpp
@@ -123,11 +123,11 @@ Scene::Scene(Common::String name, Common::SeekableReadStream *data) {
_soundFrequency = data->readSint16BE();
_soundType = data->readByte();
data->readByte(); // unknown
- _messages[NORTH] = readPascalString(data);
- _messages[SOUTH] = readPascalString(data);
- _messages[EAST] = readPascalString(data);
- _messages[WEST] = readPascalString(data);
- _soundName = readPascalString(data);
+ _messages[NORTH] = data->readPascalString();
+ _messages[SOUTH] = data->readPascalString();
+ _messages[EAST] = data->readPascalString();
+ _messages[WEST] = data->readPascalString();
+ _soundName = data->readPascalString();
_visited = false;
@@ -229,12 +229,12 @@ Obj::Obj(Common::String name, Common::SeekableReadStream *data, int resourceId)
else
error("Obj <%s> had weird returnTo set", name.c_str());
- _sceneOrOwner = readPascalString(data);
- _clickMessage = readPascalString(data);
- _operativeVerb = readPascalString(data);
- _failureMessage = readPascalString(data);
- _useMessage = readPascalString(data);
- _sound = readPascalString(data);
+ _sceneOrOwner = data->readPascalString();
+ _clickMessage = data->readPascalString();
+ _operativeVerb = data->readPascalString();
+ _failureMessage = data->readPascalString();
+ _useMessage = data->readPascalString();
+ _sound = data->readPascalString();
delete data;
}
@@ -329,27 +329,27 @@ Chr::Chr(Common::String name, Common::SeekableReadStream *data) {
else
_nameProperNoun = false;
- _initialScene = readPascalString(data);
- _nativeWeapon1 = readPascalString(data);
- _operativeVerb1 = readPascalString(data);
- _nativeWeapon2 = readPascalString(data);
- _operativeVerb2 = readPascalString(data);
-
- _initialComment = readPascalString(data);
- _scoresHitComment = readPascalString(data);
- _receivesHitComment = readPascalString(data);
- _makesOfferComment = readPascalString(data);
- _rejectsOfferComment = readPascalString(data);
- _acceptsOfferComment = readPascalString(data);
- _dyingWords = readPascalString(data);
-
- _initialSound = readPascalString(data);
- _scoresHitSound = readPascalString(data);
- _receivesHitSound = readPascalString(data);
- _dyingSound = readPascalString(data);
-
- _weaponSound1 = readPascalString(data);
- _weaponSound2 = readPascalString(data);
+ _initialScene = data->readPascalString();
+ _nativeWeapon1 = data->readPascalString();
+ _operativeVerb1 = data->readPascalString();
+ _nativeWeapon2 = data->readPascalString();
+ _operativeVerb2 = data->readPascalString();
+
+ _initialComment = data->readPascalString();
+ _scoresHitComment = data->readPascalString();
+ _receivesHitComment = data->readPascalString();
+ _makesOfferComment = data->readPascalString();
+ _rejectsOfferComment = data->readPascalString();
+ _acceptsOfferComment = data->readPascalString();
+ _dyingWords = data->readPascalString();
+
+ _initialSound = data->readPascalString();
+ _scoresHitSound = data->readPascalString();
+ _receivesHitSound = data->readPascalString();
+ _dyingSound = data->readPascalString();
+
+ _weaponSound1 = data->readPascalString();
+ _weaponSound2 = data->readPascalString();
for (int i = 0; i < NUMBER_OF_ARMOR_TYPES; i++)
_armor[i] = NULL;
diff --git a/engines/wage/util.cpp b/engines/wage/util.cpp
index 6cab7f8..f2073ac 100644
--- a/engines/wage/util.cpp
+++ b/engines/wage/util.cpp
@@ -51,28 +51,6 @@
namespace Wage {
-Common::String readPascalString(Common::SeekableReadStream *in) {
- Common::String s;
- char *buf;
- int len;
- int i;
-
- len = in->readByte();
- buf = (char *)malloc(len + 1);
- for (i = 0; i < len; i++) {
- buf[i] = in->readByte();
- if (buf[i] == 0x0d)
- buf[i] = '\n';
- }
-
- buf[i] = 0;
-
- s = buf;
- free(buf);
-
- return s;
-}
-
Common::Rect *readRect(Common::SeekableReadStream *in) {
int x1, y1, x2, y2;
diff --git a/engines/wage/wage.h b/engines/wage/wage.h
index 38c5294..4c93399 100644
--- a/engines/wage/wage.h
+++ b/engines/wage/wage.h
@@ -103,7 +103,6 @@ enum {
// the current limitation is 32 debug levels (1 << 31 is the last one)
};
-Common::String readPascalString(Common::SeekableReadStream *in);
Common::Rect *readRect(Common::SeekableReadStream *in);
const char *getIndefiniteArticle(const Common::String &word);
const char *prependGenderSpecificPronoun(int gender);
diff --git a/engines/wage/world.cpp b/engines/wage/world.cpp
index 90d6897..2e99af9 100644
--- a/engines/wage/world.cpp
+++ b/engines/wage/world.cpp
@@ -156,13 +156,13 @@ bool World::loadWorld(Common::MacResManager *resMan) {
error("Unexpected value for weapons menu");
res->skip(3);
- _aboutMessage = readPascalString(res);
+ _aboutMessage = res->readPascalString();
if (!scumm_stricmp(resMan->getBaseFileName().c_str(), "Scepters"))
res->skip(1); // ????
- _soundLibrary1 = readPascalString(res);
- _soundLibrary2 = readPascalString(res);
+ _soundLibrary1 = res->readPascalString();
+ _soundLibrary2 = res->readPascalString();
delete res;
}
@@ -337,8 +337,8 @@ void World::addSound(Sound *sound) {
Common::StringArray *World::readMenu(Common::SeekableReadStream *res) {
res->skip(10);
int enableFlags = res->readUint32BE();
- Common::String menuName = readPascalString(res);
- Common::String menuItem = readPascalString(res);
+ Common::String menuName = res->readPascalString();
+ Common::String menuItem = res->readPascalString();
int menuItemNumber = 1;
Common::String menu;
byte itemData[4];
@@ -363,7 +363,7 @@ Common::StringArray *World::readMenu(Common::SeekableReadStream *res) {
menu += '/';
menu += (char)itemData[1];
}
- menuItem = readPascalString(res);
+ menuItem = res->readPascalString();
menuItemNumber++;
}
@@ -408,7 +408,7 @@ Common::String *World::loadStringFromDITL(Common::MacResManager *resMan, int res
for (int i = 0; i <= itemCount; i++) {
// int placeholder; short rect[4]; byte flags; pstring str;
res->skip(13);
- Common::String message = readPascalString(res);
+ Common::String message = res->readPascalString();
if (i == itemIndex) {
Common::String *msg = new Common::String(message);
delete res;
Commit: a0907d26792dcd8301d24c821e3375c41c41b04a
https://github.com/scummvm/scummvm/commit/a0907d26792dcd8301d24c821e3375c41c41b04a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-01-14T13:04:21+01:00
Commit Message:
GRAPHICS: MACGUI: Added method for reading menu from resource
Changed paths:
graphics/macgui/macmenu.cpp
graphics/macgui/macmenu.h
diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index 449cf58..4017dde 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -112,6 +112,49 @@ Menu::~Menu() {
}
}
+Common::StringArray *Menu::readMenuFromResource(Common::SeekableReadStream *res) {
+ res->skip(10);
+ int enableFlags = res->readUint32BE();
+ Common::String menuName = res->readPascalString();
+ Common::String menuItem = res->readPascalString();
+ int menuItemNumber = 1;
+ Common::String menu;
+ byte itemData[4];
+
+ while (!menuItem.empty()) {
+ if (!menu.empty()) {
+ menu += ';';
+ }
+ if ((enableFlags & (1 << menuItemNumber)) == 0) {
+ menu += '(';
+ }
+ menu += menuItem;
+ res->read(itemData, 4);
+ static const char styles[] = {'B', 'I', 'U', 'O', 'S', 'C', 'E', 0};
+ for (int i = 0; styles[i] != 0; i++) {
+ if ((itemData[3] & (1 << i)) != 0) {
+ menu += '<';
+ menu += styles[i];
+ }
+ }
+ if (itemData[1] != 0) {
+ menu += '/';
+ menu += (char)itemData[1];
+ }
+ menuItem = res->readPascalString();
+ menuItemNumber++;
+ }
+
+ Common::StringArray *result = new Common::StringArray;
+ result->push_back(menuName);
+ result->push_back(menu);
+
+ debug(4, "menuName: %s", menuName.c_str());
+ debug(4, "menu: %s", menu.c_str());
+
+ return result;
+}
+
void Menu::addStaticMenus(const MenuData *data) {
MenuItem *about = new MenuItem(_wm->_fontMan->hasBuiltInFonts() ? "\xa9" : "\xf0"); // (c) Symbol as the most resembling apple
_items.push_back(about);
diff --git a/graphics/macgui/macmenu.h b/graphics/macgui/macmenu.h
index 8e02ee1..39fc575 100644
--- a/graphics/macgui/macmenu.h
+++ b/graphics/macgui/macmenu.h
@@ -23,6 +23,8 @@
#ifndef GRAPHICS_MACGUI_MACMENU_H
#define GRAPHICS_MACGUI_MACMENU_H
+#include "common/str-array.h"
+
namespace Graphics {
struct MenuItem;
@@ -41,6 +43,8 @@ public:
Menu(int id, const Common::Rect &bounds, MacWindowManager *wm);
~Menu();
+ static Common::StringArray *readMenuFromResource(Common::SeekableReadStream *res);
+
void setCommandsCallback(void (*callback)(int, Common::String &, void *), void *data) { _ccallback = callback; _cdata = data; }
void addStaticMenus(const MenuData *data);
Commit: 8690fe444e6959bc2aa17ba7517303dbceda86c8
https://github.com/scummvm/scummvm/commit/8690fe444e6959bc2aa17ba7517303dbceda86c8
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-01-14T13:04:40+01:00
Commit Message:
WAGE: Switch menu reading to common code
Changed paths:
engines/wage/world.cpp
engines/wage/world.h
diff --git a/engines/wage/world.cpp b/engines/wage/world.cpp
index 2e99af9..9118c8b 100644
--- a/engines/wage/world.cpp
+++ b/engines/wage/world.cpp
@@ -46,7 +46,9 @@
*/
#include "common/file.h"
+#include "graphics/macgui/macwindowmanager.h"
#include "graphics/macgui/macfontmanager.h"
+#include "graphics/macgui/macmenu.h"
#include "wage/wage.h"
#include "wage/entities.h"
@@ -294,7 +296,7 @@ bool World::loadWorld(Common::MacResManager *resMan) {
res = resMan->getResource(MKTAG('M','E','N','U'), 2001);
if (res != NULL) {
- Common::StringArray *menu = readMenu(res);
+ Common::StringArray *menu = Graphics::Menu::readMenuFromResource(res);
_aboutMenuItemName.clear();
Common::String string = menu->operator[](1);
@@ -306,7 +308,7 @@ bool World::loadWorld(Common::MacResManager *resMan) {
}
res = resMan->getResource(MKTAG('M','E','N','U'), 2004);
if (res != NULL) {
- Common::StringArray *menu = readMenu(res);
+ Common::StringArray *menu = Graphics::Menu::readMenuFromResource(res);
_commandsMenuName = menu->operator[](0);
_commandsMenu = menu->operator[](1);
delete menu;
@@ -314,7 +316,7 @@ bool World::loadWorld(Common::MacResManager *resMan) {
}
res = resMan->getResource(MKTAG('M','E','N','U'), 2005);
if (res != NULL) {
- Common::StringArray *menu = readMenu(res);
+ Common::StringArray *menu = Graphics::Menu::readMenuFromResource(res);
_weaponsMenuName = menu->operator[](0);
delete menu;
delete res;
@@ -334,49 +336,6 @@ void World::addSound(Sound *sound) {
_orderedSounds.push_back(sound);
}
-Common::StringArray *World::readMenu(Common::SeekableReadStream *res) {
- res->skip(10);
- int enableFlags = res->readUint32BE();
- Common::String menuName = res->readPascalString();
- Common::String menuItem = res->readPascalString();
- int menuItemNumber = 1;
- Common::String menu;
- byte itemData[4];
-
- while (!menuItem.empty()) {
- if (!menu.empty()) {
- menu += ';';
- }
- if ((enableFlags & (1 << menuItemNumber)) == 0) {
- menu += '(';
- }
- menu += menuItem;
- res->read(itemData, 4);
- static const char styles[] = {'B', 'I', 'U', 'O', 'S', 'C', 'E', 0};
- for (int i = 0; styles[i] != 0; i++) {
- if ((itemData[3] & (1 << i)) != 0) {
- menu += '<';
- menu += styles[i];
- }
- }
- if (itemData[1] != 0) {
- menu += '/';
- menu += (char)itemData[1];
- }
- menuItem = res->readPascalString();
- menuItemNumber++;
- }
-
- Common::StringArray *result = new Common::StringArray;
- result->push_back(menuName);
- result->push_back(menu);
-
- debug(4, "menuName: %s", menuName.c_str());
- debug(4, "menu: %s", menu.c_str());
-
- return result;
-}
-
void World::loadExternalSounds(Common::String fname) {
Common::File in;
diff --git a/engines/wage/world.h b/engines/wage/world.h
index b5ad33a..dbcf710 100644
--- a/engines/wage/world.h
+++ b/engines/wage/world.h
@@ -134,9 +134,6 @@ public:
}
void addSound(Sound *sound);
-
-private:
- Common::StringArray *readMenu(Common::SeekableReadStream *res);
};
} // End of namespace Wage
Commit: 0ecaa79f08d7cf4caed3f274a728906de5e2115a
https://github.com/scummvm/scummvm/commit/0ecaa79f08d7cf4caed3f274a728906de5e2115a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-01-14T13:17:38+01:00
Commit Message:
GRAPHICS: Renamed Menu to MacMenu to avoid potential name collision
Changed paths:
engines/macventure/gui.cpp
engines/macventure/gui.h
engines/wage/gui.cpp
engines/wage/gui.h
engines/wage/world.cpp
graphics/macgui/macmenu.cpp
graphics/macgui/macmenu.h
graphics/macgui/macwindowmanager.cpp
graphics/macgui/macwindowmanager.h
diff --git a/engines/macventure/gui.cpp b/engines/macventure/gui.cpp
index 87d5161..0008e34 100644
--- a/engines/macventure/gui.cpp
+++ b/engines/macventure/gui.cpp
@@ -68,7 +68,7 @@ enum {
const bool kLoadStaticMenus = true;
-static const Graphics::MenuData menuSubItems[] = {
+static const Graphics::MacMenuData menuSubItems[] = {
{ kMenuHighLevel, "File", 0, 0, false },
{ kMenuHighLevel, "Edit", 0, 0, false },
{ kMenuHighLevel, "Special", 0, 0, false },
diff --git a/engines/macventure/gui.h b/engines/macventure/gui.h
index b57e00f..fa27e16 100644
--- a/engines/macventure/gui.h
+++ b/engines/macventure/gui.h
@@ -183,7 +183,7 @@ private: // Attributes
Graphics::MacWindow *_exitsWindow;
Graphics::MacWindow *_diplomaWindow;
Common::Array<Graphics::MacWindow*> _inventoryWindows;
- Graphics::Menu *_menu;
+ Graphics::MacMenu *_menu;
Dialog *_dialog;
Container *_graphics;
diff --git a/engines/wage/gui.cpp b/engines/wage/gui.cpp
index e434060..130747c 100644
--- a/engines/wage/gui.cpp
+++ b/engines/wage/gui.cpp
@@ -61,7 +61,7 @@
namespace Wage {
-static const Graphics::MenuData menuSubItems[] = {
+static const Graphics::MacMenuData menuSubItems[] = {
{ kMenuHighLevel, "File", 0, 0, false },
{ kMenuHighLevel, "Edit", 0, 0, false },
{ kMenuFile, "New", kMenuActionNew, 0, false },
diff --git a/engines/wage/gui.h b/engines/wage/gui.h
index cf76c64..10eb782 100644
--- a/engines/wage/gui.h
+++ b/engines/wage/gui.h
@@ -179,7 +179,7 @@ public:
private:
Graphics::ManagedSurface _console;
- Graphics::Menu *_menu;
+ Graphics::MacMenu *_menu;
bool _sceneDirty;
bool _consoleDirty;
diff --git a/engines/wage/world.cpp b/engines/wage/world.cpp
index 9118c8b..465240a 100644
--- a/engines/wage/world.cpp
+++ b/engines/wage/world.cpp
@@ -296,7 +296,7 @@ bool World::loadWorld(Common::MacResManager *resMan) {
res = resMan->getResource(MKTAG('M','E','N','U'), 2001);
if (res != NULL) {
- Common::StringArray *menu = Graphics::Menu::readMenuFromResource(res);
+ Common::StringArray *menu = Graphics::MacMenu::readMenuFromResource(res);
_aboutMenuItemName.clear();
Common::String string = menu->operator[](1);
@@ -308,7 +308,7 @@ bool World::loadWorld(Common::MacResManager *resMan) {
}
res = resMan->getResource(MKTAG('M','E','N','U'), 2004);
if (res != NULL) {
- Common::StringArray *menu = Graphics::Menu::readMenuFromResource(res);
+ Common::StringArray *menu = Graphics::MacMenu::readMenuFromResource(res);
_commandsMenuName = menu->operator[](0);
_commandsMenu = menu->operator[](1);
delete menu;
@@ -316,7 +316,7 @@ bool World::loadWorld(Common::MacResManager *resMan) {
}
res = resMan->getResource(MKTAG('M','E','N','U'), 2005);
if (res != NULL) {
- Common::StringArray *menu = Graphics::Menu::readMenuFromResource(res);
+ Common::StringArray *menu = Graphics::MacMenu::readMenuFromResource(res);
_weaponsMenuName = menu->operator[](0);
delete menu;
delete res;
diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index 4017dde..6cb14f9 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -61,7 +61,7 @@ enum {
};
-struct MenuSubItem {
+struct MacMenuSubItem {
Common::String text;
int action;
int style;
@@ -69,21 +69,21 @@ struct MenuSubItem {
bool enabled;
Common::Rect bbox;
- MenuSubItem(const char *t, int a, int s = 0, char sh = 0, bool e = true) : text(t), action(a), style(s), shortcut(sh), enabled(e) {}
+ MacMenuSubItem(const char *t, int a, int s = 0, char sh = 0, bool e = true) : text(t), action(a), style(s), shortcut(sh), enabled(e) {}
};
-typedef Common::Array<MenuSubItem *> SubItemArray;
+typedef Common::Array<MacMenuSubItem *> SubItemArray;
-struct MenuItem {
+struct MacMenuItem {
Common::String name;
SubItemArray subitems;
Common::Rect bbox;
Common::Rect subbbox;
- MenuItem(const char *n) : name(n) {}
+ MacMenuItem(const char *n) : name(n) {}
};
-Menu::Menu(int id, const Common::Rect &bounds, MacWindowManager *wm)
+MacMenu::MacMenu(int id, const Common::Rect &bounds, MacWindowManager *wm)
: BaseMacWindow(id, false, wm) {
_font = getMenuFont();
@@ -104,7 +104,7 @@ Menu::Menu(int id, const Common::Rect &bounds, MacWindowManager *wm)
_tempSurface.create(_screen.w, _font->getFontHeight(), PixelFormat::createFormatCLUT8());
}
-Menu::~Menu() {
+MacMenu::~MacMenu() {
for (uint i = 0; i < _items.size(); i++) {
for (uint j = 0; j < _items[i]->subitems.size(); j++)
delete _items[i]->subitems[j];
@@ -112,7 +112,7 @@ Menu::~Menu() {
}
}
-Common::StringArray *Menu::readMenuFromResource(Common::SeekableReadStream *res) {
+Common::StringArray *MacMenu::readMenuFromResource(Common::SeekableReadStream *res) {
res->skip(10);
int enableFlags = res->readUint32BE();
Common::String menuName = res->readPascalString();
@@ -155,38 +155,38 @@ Common::StringArray *Menu::readMenuFromResource(Common::SeekableReadStream *res)
return result;
}
-void Menu::addStaticMenus(const MenuData *data) {
- MenuItem *about = new MenuItem(_wm->_fontMan->hasBuiltInFonts() ? "\xa9" : "\xf0"); // (c) Symbol as the most resembling apple
+void MacMenu::addStaticMenus(const MacMenuData *data) {
+ MacMenuItem *about = new MacMenuItem(_wm->_fontMan->hasBuiltInFonts() ? "\xa9" : "\xf0"); // (c) Symbol as the most resembling apple
_items.push_back(about);
for (int i = 0; data[i].menunum; i++) {
- const MenuData *m = &data[i];
+ const MacMenuData *m = &data[i];
if (m->menunum == kMenuHighLevel) {
- MenuItem *item = new MenuItem(m->title);
+ MacMenuItem *item = new MacMenuItem(m->title);
_items.push_back(item);
continue;
}
- _items[m->menunum]->subitems.push_back(new MenuSubItem(m->title, m->action, 0, m->shortcut, m->enabled));
+ _items[m->menunum]->subitems.push_back(new MacMenuSubItem(m->title, m->action, 0, m->shortcut, m->enabled));
}
}
-int Menu::addMenuItem(const char *name) {
- MenuItem *i = new MenuItem(name);
+int MacMenu::addMenuItem(const char *name) {
+ MacMenuItem *i = new MacMenuItem(name);
_items.push_back(i);
return _items.size() - 1;
}
-void Menu::addMenuSubItem(int id, const char *text, int action, int style, char shortcut, bool enabled) {
- _items[id]->subitems.push_back(new MenuSubItem(text, action, style, shortcut, enabled));
+void MacMenu::addMenuSubItem(int id, const char *text, int action, int style, char shortcut, bool enabled) {
+ _items[id]->subitems.push_back(new MacMenuSubItem(text, action, style, shortcut, enabled));
calcMenuBounds(_items[id]);
}
-void Menu::calcDimensions() {
+void MacMenu::calcDimensions() {
// Calculate menu dimensions
int y = 1;
int x = 18;
@@ -207,8 +207,8 @@ void Menu::calcDimensions() {
}
}
-void Menu::clearSubMenu(int id) {
- MenuItem *menu = _items[id];
+void MacMenu::clearSubMenu(int id) {
+ MacMenuItem *menu = _items[id];
for (uint j = 0; j < menu->subitems.size(); j++)
delete menu->subitems[j];
@@ -216,10 +216,10 @@ void Menu::clearSubMenu(int id) {
menu->subitems.clear();
}
-void Menu::createSubMenuFromString(int id, const char *str) {
+void MacMenu::createSubMenuFromString(int id, const char *str) {
clearSubMenu(id);
- MenuItem *menu = _items[id];
+ MacMenuItem *menu = _items[id];
Common::String string(str);
Common::String item;
@@ -229,7 +229,7 @@ void Menu::createSubMenuFromString(int id, const char *str) {
item += string[i++];
if (item == "(-") {
- menu->subitems.push_back(new MenuSubItem(NULL, 0));
+ menu->subitems.push_back(new MacMenuSubItem(NULL, 0));
} else {
bool enabled = true;
int style = 0;
@@ -278,7 +278,7 @@ void Menu::createSubMenuFromString(int id, const char *str) {
}
}
- menu->subitems.push_back(new MenuSubItem(item.c_str(), kMenuActionCommand, style, shortcut, enabled));
+ menu->subitems.push_back(new MacMenuSubItem(item.c_str(), kMenuActionCommand, style, shortcut, enabled));
}
item.clear();
@@ -287,11 +287,11 @@ void Menu::createSubMenuFromString(int id, const char *str) {
calcMenuBounds(menu);
}
-const Font *Menu::getMenuFont() {
+const Font *MacMenu::getMenuFont() {
return _wm->_fontMan->getFont(Graphics::MacFont(kMacFontChicago, 12));
}
-const char *Menu::getAcceleratorString(MenuSubItem *item, const char *prefix) {
+const char *MacMenu::getAcceleratorString(MacMenuSubItem *item, const char *prefix) {
static char res[20];
*res = 0;
@@ -301,10 +301,10 @@ const char *Menu::getAcceleratorString(MenuSubItem *item, const char *prefix) {
return res;
}
-int Menu::calculateMenuWidth(MenuItem *menu) {
+int MacMenu::calculateMenuWidth(MacMenuItem *menu) {
int maxWidth = 0;
for (uint i = 0; i < menu->subitems.size(); i++) {
- MenuSubItem *item = menu->subitems[i];
+ MacMenuSubItem *item = menu->subitems[i];
if (!item->text.empty()) {
Common::String text(item->text);
Common::String acceleratorText(getAcceleratorString(item, " "));
@@ -321,7 +321,7 @@ int Menu::calculateMenuWidth(MenuItem *menu) {
return maxWidth;
}
-void Menu::calcMenuBounds(MenuItem *menu) {
+void MacMenu::calcMenuBounds(MacMenuItem *menu) {
// TODO: cache maxWidth
int maxWidth = calculateMenuWidth(menu);
int x1 = menu->bbox.left - 1;
@@ -346,7 +346,7 @@ static void drawFilledRoundRect(ManagedSurface *surface, Common::Rect &rect, int
drawRoundRect(rect, arc, color, true, drawPixelPlain, surface);
}
-bool Menu::draw(ManagedSurface *g, bool forceRedraw) {
+bool MacMenu::draw(ManagedSurface *g, bool forceRedraw) {
Common::Rect r(_bbox);
if (!_contentIsDirty && !forceRedraw)
@@ -367,7 +367,7 @@ bool Menu::draw(ManagedSurface *g, bool forceRedraw) {
for (uint i = 0; i < _items.size(); i++) {
int color = kColorBlack;
- MenuItem *it = _items[i];
+ MacMenuItem *it = _items[i];
if ((uint)_activeItem == i) {
Common::Rect hbox = it->bbox;
@@ -393,7 +393,7 @@ bool Menu::draw(ManagedSurface *g, bool forceRedraw) {
return true;
}
-void Menu::renderSubmenu(MenuItem *menu) {
+void MacMenu::renderSubmenu(MacMenuItem *menu) {
Common::Rect *r = &menu->subbbox;
if (r->width() == 0 || r->height() == 0)
@@ -470,7 +470,7 @@ void Menu::renderSubmenu(MenuItem *menu) {
//g_system->copyRectToScreen(_screen.getBasePtr(r->left, r->top), _screen.pitch, r->left, r->top, r->width() + 2, r->height() + 2);
}
-bool Menu::processEvent(Common::Event &event) {
+bool MacMenu::processEvent(Common::Event &event) {
switch (event.type) {
case Common::EVENT_KEYDOWN:
return keyEvent(event);
@@ -485,7 +485,7 @@ bool Menu::processEvent(Common::Event &event) {
}
}
-bool Menu::keyEvent(Common::Event &event) {
+bool MacMenu::keyEvent(Common::Event &event) {
if (event.type != Common::EVENT_KEYDOWN)
return false;
@@ -498,7 +498,7 @@ bool Menu::keyEvent(Common::Event &event) {
return false;
}
-bool Menu::mouseClick(int x, int y) {
+bool MacMenu::mouseClick(int x, int y) {
if (_bbox.contains(x, y)) {
for (uint i = 0; i < _items.size(); i++)
if (_items[i]->bbox.contains(x, y)) {
@@ -522,7 +522,7 @@ bool Menu::mouseClick(int x, int y) {
return true;
}
} else if (_menuActivated && _items[_activeItem]->subbbox.contains(x, y)) {
- MenuItem *it = _items[_activeItem];
+ MacMenuItem *it = _items[_activeItem];
int numSubItem = (y - it->subbbox.top) / kMenuDropdownItemHeight;
if (numSubItem != _activeSubItem) {
@@ -541,7 +541,7 @@ bool Menu::mouseClick(int x, int y) {
return false;
}
-bool Menu::mouseMove(int x, int y) {
+bool MacMenu::mouseMove(int x, int y) {
if (_menuActivated)
if (mouseClick(x, y))
return true;
@@ -549,7 +549,7 @@ bool Menu::mouseMove(int x, int y) {
return false;
}
-bool Menu::mouseRelease(int x, int y) {
+bool MacMenu::mouseRelease(int x, int y) {
if (_menuActivated) {
_menuActivated = false;
@@ -568,7 +568,7 @@ bool Menu::mouseRelease(int x, int y) {
return false;
}
-bool Menu::processMenuShortCut(byte flags, uint16 ascii) {
+bool MacMenu::processMenuShortCut(byte flags, uint16 ascii) {
ascii = tolower(ascii);
if (flags & (Common::KBD_CTRL | Common::KBD_META)) {
@@ -583,7 +583,7 @@ bool Menu::processMenuShortCut(byte flags, uint16 ascii) {
return false;
}
-void Menu::enableCommand(int menunum, int action, bool state) {
+void MacMenu::enableCommand(int menunum, int action, bool state) {
for (uint i = 0; i < _items[menunum]->subitems.size(); i++)
if (_items[menunum]->subitems[i]->action == action)
_items[menunum]->subitems[i]->enabled = state;
@@ -591,7 +591,7 @@ void Menu::enableCommand(int menunum, int action, bool state) {
_contentIsDirty = true;
}
-void Menu::disableAllMenus() {
+void MacMenu::disableAllMenus() {
for (uint i = 1; i < _items.size(); i++) // Leave About menu on
for (uint j = 0; j < _items[i]->subitems.size(); j++)
_items[i]->subitems[j]->enabled = false;
diff --git a/graphics/macgui/macmenu.h b/graphics/macgui/macmenu.h
index 39fc575..e7dde9a 100644
--- a/graphics/macgui/macmenu.h
+++ b/graphics/macgui/macmenu.h
@@ -27,10 +27,10 @@
namespace Graphics {
-struct MenuItem;
-struct MenuSubItem;
+struct MacMenuItem;
+struct MacMenuSubItem;
-struct MenuData {
+struct MacMenuData {
int menunum;
const char *title;
int action;
@@ -38,16 +38,16 @@ struct MenuData {
bool enabled;
};
-class Menu : public BaseMacWindow {
+class MacMenu : public BaseMacWindow {
public:
- Menu(int id, const Common::Rect &bounds, MacWindowManager *wm);
- ~Menu();
+ MacMenu(int id, const Common::Rect &bounds, MacWindowManager *wm);
+ ~MacMenu();
static Common::StringArray *readMenuFromResource(Common::SeekableReadStream *res);
void setCommandsCallback(void (*callback)(int, Common::String &, void *), void *data) { _ccallback = callback; _cdata = data; }
- void addStaticMenus(const MenuData *data);
+ void addStaticMenus(const MacMenuData *data);
void calcDimensions();
int addMenuItem(const char *name);
@@ -72,10 +72,10 @@ private:
private:
const Font *getMenuFont();
- const char *getAcceleratorString(MenuSubItem *item, const char *prefix);
- int calculateMenuWidth(MenuItem *menu);
- void calcMenuBounds(MenuItem *menu);
- void renderSubmenu(MenuItem *menu);
+ const char *getAcceleratorString(MacMenuSubItem *item, const char *prefix);
+ int calculateMenuWidth(MacMenuItem *menu);
+ void calcMenuBounds(MacMenuItem *menu);
+ void renderSubmenu(MacMenuItem *menu);
bool keyEvent(Common::Event &event);
bool mouseClick(int x, int y);
@@ -84,7 +84,7 @@ private:
bool processMenuShortCut(byte flags, uint16 ascii);
- Common::Array<MenuItem *> _items;
+ Common::Array<MacMenuItem *> _items;
const Font *_font;
diff --git a/graphics/macgui/macwindowmanager.cpp b/graphics/macgui/macwindowmanager.cpp
index 77f22a1..5329959 100644
--- a/graphics/macgui/macwindowmanager.cpp
+++ b/graphics/macgui/macwindowmanager.cpp
@@ -89,40 +89,40 @@ static const byte macCursorBeam[] = {
0, 0, 3, 3, 3, 0, 0, 3, 3, 3, 3,
};
static const byte macCursorCrossHair[] = {
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
static const byte macCursorWatch[] = {
- 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
- 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
- 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
- 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
- 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1,
- 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0,
- 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
- 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
- 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
- 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
+ 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1,
+ 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0,
+ 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0,
};
static const byte macCursorCrossBar[] = {
0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
@@ -185,8 +185,8 @@ MacWindow *MacWindowManager::addWindow(bool scrollable, bool resizable, bool edi
return w;
}
-Menu *MacWindowManager::addMenu() {
- _menu = new Menu(_lastId, _screen->getBounds(), this);
+MacMenu *MacWindowManager::addMenu() {
+ _menu = new MacMenu(_lastId, _screen->getBounds(), this);
_windows.push_back(_menu);
diff --git a/graphics/macgui/macwindowmanager.h b/graphics/macgui/macwindowmanager.h
index 8f04861..bd597f6 100644
--- a/graphics/macgui/macwindowmanager.h
+++ b/graphics/macgui/macwindowmanager.h
@@ -59,7 +59,7 @@ using namespace MacGUIConstants;
class ManagedSurface;
-class Menu;
+class MacMenu;
class MacFontManager;
@@ -109,7 +109,7 @@ public:
* afterwards.
* @return Pointer to a new empty menu.
*/
- Menu *addMenu();
+ MacMenu *addMenu();
/**
* Set the desired window state to active.
* @param id ID of the window that has to be set to active.
@@ -191,7 +191,7 @@ private:
MacPatterns _patterns;
- Menu *_menu;
+ MacMenu *_menu;
bool _cursorIsArrow;
};
More information about the Scummvm-git-logs
mailing list