Enable gui renderer for all bit depths we support currently.
svn-id: r34865
This commit is contained in:
parent
98b0c4b33c
commit
ebcb486191
2 changed files with 45 additions and 9 deletions
|
@ -34,6 +34,12 @@
|
|||
|
||||
#include "gui/ThemeEngine.h"
|
||||
|
||||
// To assure we have VECTOR_RENDERER_FORMAT specified when
|
||||
// DISABLE_FANCY_THEMES is defined, we error out elsewise
|
||||
#if defined(DISABLE_FANCY_THEMES) && !defined(VECTOR_RENDERER_FORMAT)
|
||||
#error "You need to specify a fixed overlay format via VECTOR_RENDERER_FORMAT"
|
||||
#endif
|
||||
|
||||
namespace Graphics {
|
||||
class VectorRenderer;
|
||||
|
||||
|
@ -84,6 +90,14 @@ VectorRenderer *createRenderer(int mode);
|
|||
* the actual rendering functionality for each Byte Depth / Byte Format
|
||||
* combination, and may also contain platform specific code.
|
||||
*
|
||||
* When specifing define DISABLE_FANCY_THEMES some eye candy related code
|
||||
* gets stripped of. This is especially useful for small devices like NDS.
|
||||
* Also note that if you specify DISABLE_FANCY_THEMES, you'll need to
|
||||
* specify a forced overlay bit format via VECTOR_RENDERER_FORMAT define.
|
||||
* The value looks like 'XYZ' for RXGYBZ mode, so R5G5B5 would be specified
|
||||
* via:
|
||||
* #define VECTOR_RENDERER_FORMAT 565
|
||||
*
|
||||
* TODO: Expand documentation.
|
||||
*
|
||||
* @see VectorRendererSpec
|
||||
|
|
|
@ -151,22 +151,44 @@ inline uint32 fp_sqroot(uint32 x) {
|
|||
}
|
||||
|
||||
|
||||
extern int gBitFormat;
|
||||
|
||||
namespace Graphics {
|
||||
|
||||
VectorRenderer *createRenderer(int mode) {
|
||||
switch (mode) {
|
||||
case GUI::ThemeEngine::kGfxStandard16bit:
|
||||
return new VectorRendererSpec<uint16, ColorMasks<565> >;
|
||||
#ifdef DISABLE_FANCY_THEMES
|
||||
assert(mode == GUI::ThemeEngine::kGfxStandard16bit);
|
||||
return new VectorRendererSpec<uint16, ColorMasks<VECTOR_RENDERER_FORMAT> >;
|
||||
#else
|
||||
#define CREATE_RENDERER_16(bitFormat) \
|
||||
switch (mode) { \
|
||||
case GUI::ThemeEngine::kGfxStandard16bit: \
|
||||
return new VectorRendererSpec<uint16, ColorMasks<bitFormat> >; \
|
||||
\
|
||||
case GUI::ThemeEngine::kGfxAntialias16bit: \
|
||||
return new VectorRendererAA<uint16, ColorMasks<bitFormat> >; \
|
||||
\
|
||||
default: \
|
||||
return 0; \
|
||||
}
|
||||
|
||||
#ifndef DISABLE_FANCY_THEMES
|
||||
case GUI::ThemeEngine::kGfxAntialias16bit:
|
||||
return new VectorRendererAA<uint16, ColorMasks<565> >;
|
||||
#endif
|
||||
|
||||
default:
|
||||
// FIXME/TODO: This looks like a real gross hack.
|
||||
// It might be fine to assume that '1555' only happens for PSP
|
||||
// so it could maybe be handled via DISABLE_FANCY_THEMES,
|
||||
// same goes for 4444, which is only used by DC port.
|
||||
if (gBitFormat == 1555) {
|
||||
CREATE_RENDERER_16(1555)
|
||||
} else if (gBitFormat == 4444) {
|
||||
CREATE_RENDERER_16(4444)
|
||||
} else if (gBitFormat == 555) {
|
||||
CREATE_RENDERER_16(555)
|
||||
} else if (gBitFormat == 565) {
|
||||
CREATE_RENDERER_16(565)
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
#undef CREATE_RENDERER_16
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef DISABLE_FANCY_THEMES
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue