[Scummvm-cvs-logs] SF.net SVN: scummvm:[34865] scummvm/trunk/graphics

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Wed Oct 29 21:02:56 CET 2008


Revision: 34865
          http://scummvm.svn.sourceforge.net/scummvm/?rev=34865&view=rev
Author:   lordhoto
Date:     2008-10-29 20:02:56 +0000 (Wed, 29 Oct 2008)

Log Message:
-----------
Enable gui renderer for all bit depths we support currently.

Modified Paths:
--------------
    scummvm/trunk/graphics/VectorRenderer.h
    scummvm/trunk/graphics/VectorRendererSpec.cpp

Modified: scummvm/trunk/graphics/VectorRenderer.h
===================================================================
--- scummvm/trunk/graphics/VectorRenderer.h	2008-10-29 19:48:15 UTC (rev 34864)
+++ scummvm/trunk/graphics/VectorRenderer.h	2008-10-29 20:02:56 UTC (rev 34865)
@@ -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 @@
  * 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

Modified: scummvm/trunk/graphics/VectorRendererSpec.cpp
===================================================================
--- scummvm/trunk/graphics/VectorRendererSpec.cpp	2008-10-29 19:48:15 UTC (rev 34864)
+++ scummvm/trunk/graphics/VectorRendererSpec.cpp	2008-10-29 20:02:56 UTC (rev 34865)
@@ -151,22 +151,44 @@
 }
 
 
+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


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