[Scummvm-git-logs] scummvm master -> 4b53b4f1aa1578a9fe5da34d86968856b5b4eef8
sev-
noreply at scummvm.org
Mon Mar 20 18:26:55 UTC 2023
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
83b2ce00d7 GUI: Display titles in alternate color if unreachable
4b53b4f1aa GUI: Darken thumbnails of invalid entries
Commit: 83b2ce00d7b8053e8f40ff884ff3acf1d5e645a2
https://github.com/scummvm/scummvm/commit/83b2ce00d7b8053e8f40ff884ff3acf1d5e645a2
Author: Walter Agazzi (walter.agazzi at protonmail.com)
Date: 2023-03-20T19:26:44+01:00
Commit Message:
GUI: Display titles in alternate color if unreachable
Changed paths:
gui/launcher.cpp
gui/widgets/grid.cpp
gui/widgets/grid.h
diff --git a/gui/launcher.cpp b/gui/launcher.cpp
index fb1a0dec175..ab7b83c00e4 100644
--- a/gui/launcher.cpp
+++ b/gui/launcher.cpp
@@ -1520,11 +1520,14 @@ void LauncherGrid::updateListing() {
Common::String language = "XX";
Common::String platform;
Common::String extra;
+ Common::String path;
+ bool valid_path = false;
iter->domain->tryGetVal("engineid", engineid);
iter->domain->tryGetVal("language", language);
iter->domain->tryGetVal("platform", platform);
iter->domain->tryGetVal("extra", extra);
- gridList.push_back(GridItemInfo(k++, engineid, gameid, iter->title, iter->description, extra, Common::parseLanguage(language), Common::parsePlatform(platform)));
+ valid_path = (!iter->domain->tryGetVal("path", path) || !Common::FSNode(path).isDirectory()) ? false : true;
+ gridList.push_back(GridItemInfo(k++, engineid, gameid, iter->title, iter->description, extra, Common::parseLanguage(language), Common::parsePlatform(platform), valid_path));
_domains.push_back(iter->key);
}
diff --git a/gui/widgets/grid.cpp b/gui/widgets/grid.cpp
index 3457212e5ed..77efe1d89b9 100644
--- a/gui/widgets/grid.cpp
+++ b/gui/widgets/grid.cpp
@@ -154,9 +154,13 @@ void GridItemWidget::drawWidget() {
titleLines[1].deleteLastChar();
titleLines[1] += Common::U32String("...");
}
+ // Display text in alternate color if the path is unreachable
+ // Should be ok using kStateDisabled, but the list widget uses FontColorAlternate so let's stick to that
+ GUI::ThemeEngine::FontColor color = _activeEntry->validEntry ? GUI::ThemeEngine::kFontColorNormal : GUI::ThemeEngine::kFontColorAlternate;
Common::Rect r(_x, _y + thumbHeight, _x + thumbWidth, _y + thumbHeight + kLineHeight);
for (uint k = 0; k < MIN(2U, titleLines.size()); ++k) {
- g_gui.theme()->drawText(r, titleLines[k], GUI::ThemeEngine::kStateEnabled, Graphics::kTextAlignCenter);
+ g_gui.theme()->drawText(r, titleLines[k], GUI::ThemeEngine::kStateEnabled, Graphics::kTextAlignCenter, GUI::ThemeEngine::kTextInversionNone,
+ 0, true, ThemeEngine::kFontStyleBold, color);
r.translate(0, kLineHeight);
}
}
diff --git a/gui/widgets/grid.h b/gui/widgets/grid.h
index 232760fb1bd..087e32d482c 100644
--- a/gui/widgets/grid.h
+++ b/gui/widgets/grid.h
@@ -48,7 +48,7 @@ enum {
/* GridItemInfo */
struct GridItemInfo {
- bool isHeader;
+ bool isHeader, validEntry;
int entryID;
Common::String engineid;
Common::String gameid;
@@ -64,13 +64,13 @@ struct GridItemInfo {
int32 x, y, w, h;
GridItemInfo(int id, const Common::String &eid, const Common::String &gid, const Common::String &t,
- const Common::String &d, const Common::String &e, Common::Language l, Common::Platform p)
- : entryID(id), gameid(gid), engineid(eid), title(t), description(d), extra(e), language(l), platform(p), isHeader(false) {
+ const Common::String &d, const Common::String &e, Common::Language l, Common::Platform p, bool v)
+ : entryID(id), gameid(gid), engineid(eid), title(t), description(d), extra(e), language(l), platform(p), validEntry(v), isHeader(false) {
thumbPath = Common::String::format("icons/%s-%s.png", engineid.c_str(), gameid.c_str());
}
GridItemInfo(const Common::String &groupHeader, int groupID) : title(groupHeader), description(groupHeader),
- isHeader(true), entryID(groupID), language(Common::UNK_LANG), platform(Common::kPlatformUnknown) {
+ isHeader(true), validEntry(true), entryID(groupID), language(Common::UNK_LANG), platform(Common::kPlatformUnknown) {
thumbPath = Common::String("");
}
};
Commit: 4b53b4f1aa1578a9fe5da34d86968856b5b4eef8
https://github.com/scummvm/scummvm/commit/4b53b4f1aa1578a9fe5da34d86968856b5b4eef8
Author: Walter Agazzi (walter.agazzi at protonmail.com)
Date: 2023-03-20T19:26:44+01:00
Commit Message:
GUI: Darken thumbnails of invalid entries
Applies a dark transparent overlay to the
games that are non-startable
Changed paths:
gui/widgets/grid.cpp
gui/widgets/grid.h
diff --git a/gui/widgets/grid.cpp b/gui/widgets/grid.cpp
index 77efe1d89b9..91031f12be7 100644
--- a/gui/widgets/grid.cpp
+++ b/gui/widgets/grid.cpp
@@ -145,6 +145,17 @@ void GridItemWidget::drawWidget() {
g_gui.theme()->drawSurface(p, *demoGfx, true);
}
+ bool validEntry = _activeEntry->validEntry;
+
+ // Darken thumbnail if path is unreachable
+ if (!validEntry) {
+ const Graphics::ManagedSurface *darkenGfx = _grid->disabledThumbnail();
+ if (darkenGfx) {
+ Common::Point p(_x, _y);
+ g_gui.theme()->drawSurface(p, *darkenGfx, true);
+ }
+ }
+
// Draw Title
if (_grid->_isTitlesVisible) {
// TODO: Currently title is fixed to two lines at all times, we may want
@@ -156,7 +167,7 @@ void GridItemWidget::drawWidget() {
}
// Display text in alternate color if the path is unreachable
// Should be ok using kStateDisabled, but the list widget uses FontColorAlternate so let's stick to that
- GUI::ThemeEngine::FontColor color = _activeEntry->validEntry ? GUI::ThemeEngine::kFontColorNormal : GUI::ThemeEngine::kFontColorAlternate;
+ GUI::ThemeEngine::FontColor color = validEntry ? GUI::ThemeEngine::kFontColorNormal : GUI::ThemeEngine::kFontColorAlternate;
Common::Rect r(_x, _y + thumbHeight, _x + thumbWidth, _y + thumbHeight + kLineHeight);
for (uint k = 0; k < MIN(2U, titleLines.size()); ++k) {
g_gui.theme()->drawText(r, titleLines[k], GUI::ThemeEngine::kStateEnabled, Graphics::kTextAlignCenter, GUI::ThemeEngine::kTextInversionNone,
@@ -354,6 +365,8 @@ GridWidget::GridWidget(GuiObject *boss, const Common::String &name)
_platformIconWidth = 0;
_extraIconHeight = 0;
_extraIconWidth = 0;
+ _disabledIconOverlay = nullptr;
+
_minGridXSpacing = 0;
_minGridYSpacing = 0;
_isTitlesVisible = 0;
@@ -392,6 +405,7 @@ GridWidget::~GridWidget() {
unloadSurfaces(_languageIcons);
unloadSurfaces(_extraIcons);
unloadSurfaces(_loadedSurfaces);
+ delete _disabledIconOverlay;
_gridItems.clear();
_dataEntryList.clear();
_headerEntryList.clear();
@@ -431,6 +445,10 @@ const Graphics::ManagedSurface *GridWidget::demoToSurface(const Common::String e
return _extraIcons[0];
}
+const Graphics::ManagedSurface *GridWidget::disabledThumbnail() {
+ return _disabledIconOverlay;
+}
+
void GridWidget::setEntryList(Common::Array<GridItemInfo> *list) {
_dataEntryList.clear();
_headerEntryList.clear();
@@ -952,10 +970,20 @@ void GridWidget::reflowLayout() {
unloadSurfaces(_platformIcons);
unloadSurfaces(_languageIcons);
unloadSurfaces(_loadedSurfaces);
+ if (_disabledIconOverlay)
+ _disabledIconOverlay->free();
reloadThumbnails();
loadFlagIcons();
loadPlatformIcons();
loadExtraIcons();
+
+ Graphics::ManagedSurface *gfx = new Graphics::ManagedSurface(_thumbnailWidth, _thumbnailHeight, g_system->getOverlayFormat());
+ uint32 disabledThumbnailColor = gfx->format.ARGBToColor(153, 0, 0, 0); // 60% opacity black
+ gfx->fillRect(Common::Rect(0, 0, _thumbnailWidth, _thumbnailHeight), disabledThumbnailColor);
+ if (gfx)
+ _disabledIconOverlay = gfx;
+ else
+ _disabledIconOverlay = nullptr;
}
_trayHeight = kLineHeight * 3;
diff --git a/gui/widgets/grid.h b/gui/widgets/grid.h
index 087e32d482c..98d47339a8a 100644
--- a/gui/widgets/grid.h
+++ b/gui/widgets/grid.h
@@ -101,7 +101,7 @@ protected:
Common::HashMap<int, const Graphics::ManagedSurface *> _platformIcons;
Common::HashMap<int, const Graphics::ManagedSurface *> _languageIcons;
Common::HashMap<int, const Graphics::ManagedSurface *> _extraIcons;
-
+ Graphics::ManagedSurface *_disabledIconOverlay;
// Images are mapped by filename -> surface.
Common::HashMap<Common::String, const Graphics::ManagedSurface *> _loadedSurfaces;
@@ -174,6 +174,7 @@ public:
const Graphics::ManagedSurface *languageToSurface(Common::Language languageCode);
const Graphics::ManagedSurface *platformToSurface(Common::Platform platformCode);
const Graphics::ManagedSurface *demoToSurface(const Common::String extraString);
+ const Graphics::ManagedSurface *disabledThumbnail();
/// Update _visibleEntries from _allEntries and returns true if reload is required.
bool calcVisibleEntries();
More information about the Scummvm-git-logs
mailing list