From fababbe205395b6b8c812b458df3af65e3f5e01c Mon Sep 17 00:00:00 2001 From: Neeraj Kumar Date: Thu, 3 Jun 2010 03:55:08 +0000 Subject: [PATCH] able to display rectangle on screen using grabPalette() and copyRectToScreen, will use it to test palettes and autocomputeDirtyRects features svn-id: r49404 --- engines/testbed/gfxtests.cpp | 67 ++++++++++++++++++++++++++++++++++++ engines/testbed/gfxtests.h | 13 +++++++ engines/testbed/graphics.cpp | 39 +++++---------------- engines/testbed/module.mk | 1 + 4 files changed, 89 insertions(+), 31 deletions(-) create mode 100644 engines/testbed/gfxtests.cpp create mode 100644 engines/testbed/gfxtests.h diff --git a/engines/testbed/gfxtests.cpp b/engines/testbed/gfxtests.cpp new file mode 100644 index 00000000000..3beed2aa44a --- /dev/null +++ b/engines/testbed/gfxtests.cpp @@ -0,0 +1,67 @@ +#include "testbed/gfxtests.h" +#include "testbed/testsuite.h" +#include "graphics/pixelformat.h" + +namespace Testbed { + +bool testFullScreenMode() { + + printf("Testing fullscreen mode\n"); + + bool isFeaturePresent; + bool isFeatureEnabled; + + isFeaturePresent = g_system->hasFeature(OSystem::kFeatureFullscreenMode); + isFeatureEnabled = g_system->getFeatureState(OSystem::kFeatureFullscreenMode); + + printf("Testing Feature Presence.. \n"); + + if (isFeaturePresent) { + //Toggle + printf("Supported\n"); + + g_system->beginGFXTransaction(); + g_system->setFeatureState(OSystem::kFeatureFullscreenMode, !isFeatureEnabled); + g_system->endGFXTransaction(); + + g_system->delayMillis(1000); + + g_system->beginGFXTransaction(); + g_system->setFeatureState(OSystem::kFeatureFullscreenMode, isFeatureEnabled); + g_system->endGFXTransaction(); + } + + return true; +} + +bool testAspectRatio() { + + int x_lim; + int y_lim; + + x_lim = g_system->getWidth(); + y_lim = g_system->getHeight(); + + Graphics::PixelFormat f = g_system->getScreenFormat(); + + printf("Screen is %d x %d using %d bytes per pixel\n", x_lim, y_lim, f.bytesPerPixel); + + char blackbuf[16 * 20]; + memset(blackbuf, 1, 16 * 20); // Prepare a buffer 16px wide and 240px high, to fit on a lateral strip + + uint8 pal[2 * 4]; + g_system->grabPalette(pal, 0, 2); + pal[4] = 255; + pal[5] = 255; + pal[6] = 0; + + g_system->setPalette(pal, 0, 2); + + g_system->copyRectToScreen((const byte *)blackbuf, 16, 20, 28, 16, 20); // Fix left strip + g_system->updateScreen(); + + return true; + +} + +} diff --git a/engines/testbed/gfxtests.h b/engines/testbed/gfxtests.h new file mode 100644 index 00000000000..7f5ae7d8af4 --- /dev/null +++ b/engines/testbed/gfxtests.h @@ -0,0 +1,13 @@ +#ifndef GFXTESTS_H +#define GFXTESTS_H + +namespace Testbed { + +// will contain function declarations for GFX tests +bool testFullScreenMode(); +bool testAspectRatio(); +// add more here + +} + +#endif diff --git a/engines/testbed/graphics.cpp b/engines/testbed/graphics.cpp index a2b6a8657bc..67176683ee6 100644 --- a/engines/testbed/graphics.cpp +++ b/engines/testbed/graphics.cpp @@ -1,41 +1,17 @@ #include "testbed/graphics.h" +#include "testbed/gfxtests.h" namespace Testbed { -bool testFullScreenMode() { - - printf("Testing fullscreen mode\n"); - bool isFeaturePresent; - bool isFeatureEnabled; - - isFeaturePresent = g_system->hasFeature(OSystem::kFeatureFullscreenMode); - isFeatureEnabled = g_system->getFeatureState(OSystem::kFeatureFullscreenMode); - - printf("Testing Feature Presence.. \n"); - if (isFeaturePresent) { - //Toggle - printf("Supported\n"); - - g_system->beginGFXTransaction(); - g_system->setFeatureState(OSystem::kFeatureFullscreenMode, !isFeatureEnabled); - g_system->endGFXTransaction(); - - g_system->delayMillis(1000); - - g_system->beginGFXTransaction(); - g_system->setFeatureState(OSystem::kFeatureFullscreenMode, isFeatureEnabled); - g_system->endGFXTransaction(); - } - - return true; -} - GFXTestSuite::GFXTestSuite() { - addTest("FullScreenMode", &testFullScreenMode); + //addTest("FullScreenMode", &testFullScreenMode); + addTest("AspectRatio", &testAspectRatio); } GFXTestSuite::~GFXTestSuite() { - printf("Cleanup\n"); + for (Common::Array::iterator i = _testsToExecute.begin(); i != _testsToExecute.end(); ++i) { + delete (*i); + } } const char *GFXTestSuite::getName() { @@ -46,10 +22,11 @@ int GFXTestSuite::execute() { //TODO: Implement the method for (Common::Array::iterator i = _testsToExecute.begin(); i != _testsToExecute.end(); ++i) { printf("Executing Test:%s\n", ((*i)->featureName).c_str()); - printf("Result:%d",(*i)->driver()); + printf("Result:%d\n",(*i)->driver()); } return 1; } + } diff --git a/engines/testbed/module.mk b/engines/testbed/module.mk index 368b37b6771..0c19aba4415 100644 --- a/engines/testbed/module.mk +++ b/engines/testbed/module.mk @@ -3,6 +3,7 @@ MODULE := engines/testbed MODULE_OBJS := \ detection.o \ graphics.o \ + gfxtests.o \ testbed.o MODULE_DIRS += \