[Scummvm-git-logs] scummvm master -> 8ec10f5892b99787c472cb9b50da17c9d76e65b4
lephilousophe
noreply at scummvm.org
Sun Apr 10 16:11:49 UTC 2022
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
8ec10f5892 GRAPHICS: Create a dynamic list of available renderers
Commit: 8ec10f5892b99787c472cb9b50da17c9d76e65b4
https://github.com/scummvm/scummvm/commit/8ec10f5892b99787c472cb9b50da17c9d76e65b4
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2022-04-10T18:11:46+02:00
Commit Message:
GRAPHICS: Create a dynamic list of available renderers
This allows us to not offer a renderer which is not available on the
platform.
Changed paths:
graphics/renderer.cpp
graphics/renderer.h
gui/options.cpp
diff --git a/graphics/renderer.cpp b/graphics/renderer.cpp
index b3b42bed9f2..f1defb637ff 100644
--- a/graphics/renderer.cpp
+++ b/graphics/renderer.cpp
@@ -43,12 +43,19 @@ static const RendererTypeDescription rendererTypes[] = {
DECLARE_TRANSLATION_ADDITIONAL_CONTEXT("OpenGL with shaders", "lowres")
-const RendererTypeDescription *Renderer::listTypes() {
- return rendererTypes;
+Common::Array<RendererTypeDescription> Renderer::listTypes() {
+ uint32 available = getAvailableTypes();
+ Common::Array<RendererTypeDescription> ret;
+ for (const RendererTypeDescription *rt = rendererTypes; rt->code; ++rt) {
+ if (available & rt->id) {
+ ret.push_back(*rt);
+ }
+ }
+ return ret;
}
RendererType Renderer::parseTypeCode(const Common::String &code) {
- const RendererTypeDescription *rt = listTypes();
+ const RendererTypeDescription *rt = rendererTypes;
while (rt->code) {
if (rt->code == code) {
return rt->id;
@@ -60,7 +67,7 @@ RendererType Renderer::parseTypeCode(const Common::String &code) {
}
Common::String Renderer::getTypeCode(RendererType type) {
- const RendererTypeDescription *rt = listTypes();
+ const RendererTypeDescription *rt = rendererTypes;
while (rt->code) {
if (rt->id == type) {
return rt->code;
diff --git a/graphics/renderer.h b/graphics/renderer.h
index 33615d128bd..1c031191433 100644
--- a/graphics/renderer.h
+++ b/graphics/renderer.h
@@ -23,6 +23,7 @@
#define GRAPHICS_RENDERER_H
#include "common/scummsys.h"
+#include "common/array.h"
#include "common/str.h"
namespace Graphics {
@@ -56,7 +57,7 @@ struct RendererTypeDescription {
class Renderer {
public:
- static const RendererTypeDescription *listTypes();
+ static Common::Array<RendererTypeDescription> listTypes();
/** Convert a renderer code to a RendererType enum value */
static RendererType parseTypeCode(const Common::String &code);
@@ -75,7 +76,7 @@ public:
return getBestMatchingType(desired, getAvailableTypes() & supported);
}
};
- /** @} */
+/** @} */
} // End of namespace Graphics
#endif
diff --git a/gui/options.cpp b/gui/options.cpp
index f3fb5a47f40..9bdfd4bac2c 100644
--- a/gui/options.cpp
+++ b/gui/options.cpp
@@ -1446,12 +1446,14 @@ void OptionsDialog::addGraphicControls(GuiObject *boss, const Common::String &pr
_rendererTypePopUp = new PopUpWidget(boss, prefix + "grRendererTypePopup");
_rendererTypePopUp->appendEntry(_("<default>"), Graphics::kRendererTypeDefault);
_rendererTypePopUp->appendEntry("");
- const Graphics::RendererTypeDescription *rt = Graphics::Renderer::listTypes();
- for (; rt->code; ++rt) {
- if (g_system->getOverlayWidth() > 320)
- _rendererTypePopUp->appendEntry(_(rt->description), rt->id);
- else
- _rendererTypePopUp->appendEntry(_c(rt->description, "lowres"), rt->id);
+ Common::Array<Graphics::RendererTypeDescription> rt = Graphics::Renderer::listTypes();
+ for (Common::Array<Graphics::RendererTypeDescription>::iterator it = rt.begin();
+ it != rt.end(); ++it) {
+ if (g_system->getOverlayWidth() > 320) {
+ _rendererTypePopUp->appendEntry(_(it->description), it->id);
+ } else {
+ _rendererTypePopUp->appendEntry(_c(it->description, "lowres"), it->id);
+ }
}
_antiAliasPopUpDesc = new StaticTextWidget(boss, prefix + "grAntiAliasPopupDesc", _("3D Anti-aliasing:"));
More information about the Scummvm-git-logs
mailing list