diff options
-rw-r--r-- | engines/testbed/gfxtests.cpp | 180 | ||||
-rw-r--r-- | engines/testbed/gfxtests.h | 15 | ||||
-rw-r--r-- | engines/testbed/graphics.cpp | 189 | ||||
-rw-r--r-- | engines/testbed/graphics.h | 10 | ||||
-rw-r--r-- | engines/testbed/module.mk | 1 | ||||
-rw-r--r-- | engines/testbed/testbed.cpp | 11 | ||||
-rw-r--r-- | engines/testbed/testsuite.h | 4 |
7 files changed, 202 insertions, 208 deletions
diff --git a/engines/testbed/gfxtests.cpp b/engines/testbed/gfxtests.cpp deleted file mode 100644 index 486171c1f7..0000000000 --- a/engines/testbed/gfxtests.cpp +++ /dev/null @@ -1,180 +0,0 @@ -#include "testbed/gfxtests.h" -#include "testbed/graphics.h" -#include "testbed/testsuite.h" - -#include "graphics/fontman.h" -#include "graphics/surface.h" -#include "graphics/cursorman.h" - -#include "common/events.h" - -namespace Testbed { - -bool testFullScreenMode() { - - Testsuite::displayMessage("Testing fullscreen mode. \n \ - If the feature is supported by the backend, you should expect to see a toggle between fullscreen and normal modes"); - - Common::Point pt(0,100); - Common::Rect rect = Testsuite::writeOnScreen("Testing fullscreen mode", pt); - - bool isFeaturePresent; - bool isFeatureEnabled; - - isFeaturePresent = g_system->hasFeature(OSystem::kFeatureFullscreenMode); - isFeatureEnabled = g_system->getFeatureState(OSystem::kFeatureFullscreenMode); - g_system->delayMillis(1000); - - if (isFeaturePresent) { - //Toggle - - 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(); - } - else { - Testsuite::displayMessage("feature not supported"); - } - - Testsuite::clearScreen(rect); - return true; -} - -bool testAspectRatio() { - Testsuite::displayMessage("Testing Aspect Ratio Correction. \n \ - With this feature enabled games running at 320x200 should be scaled upto 320x240 pixels"); - - Common::Point pt(0,100); - Common::Rect rect = Testsuite::writeOnScreen("Testing Aspect ratio correction", pt); - - bool isFeaturePresent; - bool isFeatureEnabled; - - isFeaturePresent = g_system->hasFeature(OSystem::kFeatureAspectRatioCorrection); - isFeatureEnabled = g_system->getFeatureState(OSystem::kFeatureAspectRatioCorrection); - g_system->delayMillis(1000); - - if (isFeaturePresent) { - //Toggle - - g_system->beginGFXTransaction(); - g_system->setFeatureState(OSystem::kFeatureAspectRatioCorrection, !isFeatureEnabled); - g_system->endGFXTransaction(); - - g_system->delayMillis(1000); - - g_system->beginGFXTransaction(); - g_system->setFeatureState(OSystem::kFeatureAspectRatioCorrection, isFeatureEnabled); - g_system->endGFXTransaction(); - } - else { - Testsuite::displayMessage("feature not supported"); - } - - Testsuite::clearScreen(rect); - return true; -} - -bool testPalettizedCursors() { - Testsuite::displayMessage("Testing Cursors. You should expect to see a yellow colored square cursor.\n \ - You should be able to move it. The test finishes when the mouse(L/R) is clicked"); - - Common::Point pt(0,100); - Common::Rect rect = Testsuite::writeOnScreen("Testing Palettized Cursors", pt); - - bool isFeaturePresent; - bool isFeatureEnabled; - - isFeaturePresent = g_system->hasFeature(OSystem::kFeatureCursorHasPalette); - isFeatureEnabled = g_system->getFeatureState(OSystem::kFeatureCursorHasPalette); - - if (isFeaturePresent) { - byte palette[3 * 4]; // Black, white and yellow - palette[0] = palette[1] = palette[2] = 0; - palette[4] = palette[5] = palette[6] = 255; - palette[8] = palette[9] = 255; - palette[10] = 0; - - byte buffer[10 * 10]; - memset(buffer, 2, 10 * 10); - - CursorMan.pushCursorPalette(palette, 0, 3); - CursorMan.pushCursor(buffer, 10, 10, 45, 45, 1); - CursorMan.showMouse(true); - - Common::EventManager *eventMan = g_system->getEventManager(); - Common::Event event; - - bool quitLoop = false; - uint32 lastRedraw = 0; - const uint32 waitTime = 1000 / 45; - - while (!quitLoop) { - while (eventMan->pollEvent(event)) { - - if (lastRedraw + waitTime < g_system->getMillis()) { - g_system->updateScreen(); - lastRedraw = g_system->getMillis(); - } - - switch (event.type) { - case Common::EVENT_MOUSEMOVE: - printf("Mouse Move\n"); - break; - case Common::EVENT_LBUTTONDOWN: - case Common::EVENT_RBUTTONDOWN: - Testsuite::clearScreen(rect); - Testsuite::writeOnScreen("Mouse Clicked", pt); - printf("Mouse Clicked\n"); - g_system->delayMillis(1000); - quitLoop = true; - CursorMan.popCursorPalette(); - CursorMan.popCursor(); - Testsuite::clearScreen(rect); - Testsuite::writeOnScreen("TestFinished", pt); - g_system->delayMillis(1000); - break; - default: - ;//Ignore any other event - - } - } - } - } - else { - Testsuite::displayMessage("feature not supported"); - } - Testsuite::clearScreen(rect); - return true; -} - -bool testCopyRectToScreen() { - Testsuite::displayMessage("Testing Blitting a Bitmap to screen. \n\ - You should expect to see a 20x40 yellow horizontal rectangle centred at the screen."); - - GFXTestSuite::setCustomColor(255, 255, 0); - byte buffer[20 * 40]; - memset(buffer, 2, 20 * 40); - - uint x = g_system->getWidth() / 2 - 20; - uint y = g_system->getHeight() / 2 - 10; - - g_system->copyRectToScreen(buffer, 40, x, y, 40, 20); - g_system->updateScreen(); - g_system->delayMillis(1000); - - Common::Rect rect(x, y, x+40, y+20); - Testsuite::clearScreen(rect); - - return true; - -} - - -} diff --git a/engines/testbed/gfxtests.h b/engines/testbed/gfxtests.h deleted file mode 100644 index bd219411e9..0000000000 --- a/engines/testbed/gfxtests.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef GFXTESTS_H -#define GFXTESTS_H - -namespace Testbed { - -// will contain function declarations for GFX tests -bool testFullScreenMode(); -bool testAspectRatio(); -bool testPalettizedCursors(); -bool testCopyRectToScreen(); -// add more here - -} - -#endif diff --git a/engines/testbed/graphics.cpp b/engines/testbed/graphics.cpp index c4701982c6..5b3759f2dd 100644 --- a/engines/testbed/graphics.cpp +++ b/engines/testbed/graphics.cpp @@ -1,5 +1,11 @@ +#include "common/events.h" + #include "testbed/graphics.h" -#include "testbed/gfxtests.h" +#include "testbed/testsuite.h" + +#include "graphics/cursorman.h" +#include "graphics/fontman.h" +#include "graphics/surface.h" namespace Testbed { @@ -7,16 +13,16 @@ byte GFXTestSuite::_palette[3 * 4] = {0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 25 GFXTestSuite::GFXTestSuite() { // Initialize color palettes - // Te fourth field is for alpha channel which is unused + // The fourth field is for alpha channel which is unused // Assuming 8bpp as of now g_system->setPalette(_palette, 0, 3); g_system->grabPalette(_palette, 0, 3); // Add tests here - addTest("FullScreenMode", &testFullScreenMode); - addTest("AspectRatio", &testAspectRatio); - addTest("PalettizedCursors", &testPalettizedCursors); - addTest("BlitBitmaps", &testCopyRectToScreen); + addTest("FullScreenMode", &GFXtests::fullScreenMode); + addTest("AspectRatio", &GFXtests::aspectRatio); + addTest("PalettizedCursors", &GFXtests::palettizedCursors); + addTest("BlitBitmaps", &GFXtests::copyRectToScreen); } const char *GFXTestSuite::getName() { @@ -48,4 +54,175 @@ void GFXTestSuite::execute() { genReport(); } +// GFXtests go here + +bool GFXtests::fullScreenMode() { + + Testsuite::displayMessage("Testing fullscreen mode. \n \ + If the feature is supported by the backend, you should expect to see a toggle between fullscreen and normal modes"); + + Common::Point pt(0,100); + Common::Rect rect = Testsuite::writeOnScreen("Testing fullscreen mode", pt); + + bool isFeaturePresent; + bool isFeatureEnabled; + + isFeaturePresent = g_system->hasFeature(OSystem::kFeatureFullscreenMode); + isFeatureEnabled = g_system->getFeatureState(OSystem::kFeatureFullscreenMode); + g_system->delayMillis(1000); + + if (isFeaturePresent) { + // Toggle + + 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(); + } + else { + Testsuite::displayMessage("feature not supported"); + } + + Testsuite::clearScreen(rect); + return true; +} + +bool GFXtests::aspectRatio() { + Testsuite::displayMessage("Testing Aspect Ratio Correction.\n" + "With this feature enabled games running at 320x200 should be scaled upto 320x240 pixels"); + + Common::Point pt(0,100); + Common::Rect rect = Testsuite::writeOnScreen("Testing Aspect ratio correction", pt); + + bool isFeaturePresent; + bool isFeatureEnabled; + + isFeaturePresent = g_system->hasFeature(OSystem::kFeatureAspectRatioCorrection); + isFeatureEnabled = g_system->getFeatureState(OSystem::kFeatureAspectRatioCorrection); + g_system->delayMillis(1000); + + if (isFeaturePresent) { + // Toggle + + g_system->beginGFXTransaction(); + g_system->setFeatureState(OSystem::kFeatureAspectRatioCorrection, !isFeatureEnabled); + g_system->endGFXTransaction(); + + g_system->delayMillis(1000); + + g_system->beginGFXTransaction(); + g_system->setFeatureState(OSystem::kFeatureAspectRatioCorrection, isFeatureEnabled); + g_system->endGFXTransaction(); + } + else { + Testsuite::displayMessage("feature not supported"); + } + + Testsuite::clearScreen(rect); + return true; +} + +bool GFXtests::palettizedCursors() { + Testsuite::displayMessage("Testing Cursors. You should expect to see a yellow colored square cursor.\n" + "You should be able to move it. The test finishes when the mouse(L/R) is clicked"); + + Common::Point pt(0, 100); + Common::Rect rect = Testsuite::writeOnScreen("Testing Palettized Cursors", pt); + + bool isFeaturePresent; + bool isFeatureEnabled; + + isFeaturePresent = g_system->hasFeature(OSystem::kFeatureCursorHasPalette); + isFeatureEnabled = g_system->getFeatureState(OSystem::kFeatureCursorHasPalette); + + if (isFeaturePresent) { + byte palette[3 * 4]; // Black, white and yellow + palette[0] = palette[1] = palette[2] = 0; + palette[4] = palette[5] = palette[6] = 255; + palette[8] = palette[9] = 255; + palette[10] = 0; + + byte buffer[10 * 10]; + memset(buffer, 2, 10 * 10); + + CursorMan.pushCursorPalette(palette, 0, 3); + CursorMan.pushCursor(buffer, 10, 10, 45, 45, 1); + CursorMan.showMouse(true); + + Common::EventManager *eventMan = g_system->getEventManager(); + Common::Event event; + + bool quitLoop = false; + uint32 lastRedraw = 0; + const uint32 waitTime = 1000 / 45; + + while (!quitLoop) { + while (eventMan->pollEvent(event)) { + + if (lastRedraw + waitTime < g_system->getMillis()) { + g_system->updateScreen(); + lastRedraw = g_system->getMillis(); + } + + switch (event.type) { + case Common::EVENT_MOUSEMOVE: + printf("Mouse Move\n"); + break; + case Common::EVENT_LBUTTONDOWN: + case Common::EVENT_RBUTTONDOWN: + Testsuite::clearScreen(rect); + Testsuite::writeOnScreen("Mouse Clicked", pt); + printf("Mouse Clicked\n"); + g_system->delayMillis(1000); + quitLoop = true; + CursorMan.popCursorPalette(); + CursorMan.popCursor(); + Testsuite::clearScreen(rect); + Testsuite::writeOnScreen("TestFinished", pt); + g_system->delayMillis(1000); + break; + default: + ;// Ignore any other event + + } + } + } + } else { + Testsuite::displayMessage("feature not supported"); + } + Testsuite::clearScreen(rect); + return true; +} + +bool GFXtests::mouseMovements() { + return true; +} + +bool GFXtests::copyRectToScreen() { + Testsuite::displayMessage("Testing Blitting a Bitmap to screen.\n" + "You should expect to see a 20x40 yellow horizontal rectangle centred at the screen."); + + GFXTestSuite::setCustomColor(255, 255, 0); + byte buffer[20 * 40]; + memset(buffer, 2, 20 * 40); + + uint x = g_system->getWidth() / 2 - 20; + uint y = g_system->getHeight() / 2 - 10; + + g_system->copyRectToScreen(buffer, 40, x, y, 40, 20); + g_system->updateScreen(); + g_system->delayMillis(1000); + + Common::Rect rect(x, y, x+40, y+20); + Testsuite::clearScreen(rect); + + return true; + +} + } diff --git a/engines/testbed/graphics.h b/engines/testbed/graphics.h index eb84310db7..7c83c87d62 100644 --- a/engines/testbed/graphics.h +++ b/engines/testbed/graphics.h @@ -5,6 +5,16 @@ namespace Testbed { +namespace GFXtests { +// will contain function declarations for GFX tests +bool fullScreenMode(); +bool aspectRatio(); +bool palettizedCursors(); +bool copyRectToScreen(); +bool mouseMovements(); +// add more here +} + class GFXTestSuite : public Testsuite { public: /** diff --git a/engines/testbed/module.mk b/engines/testbed/module.mk index 0c19aba441..368b37b677 100644 --- a/engines/testbed/module.mk +++ b/engines/testbed/module.mk @@ -3,7 +3,6 @@ MODULE := engines/testbed MODULE_OBJS := \ detection.o \ graphics.o \ - gfxtests.o \ testbed.o MODULE_DIRS += \ diff --git a/engines/testbed/testbed.cpp b/engines/testbed/testbed.cpp index 4d178d80bd..fb70acb9df 100644 --- a/engines/testbed/testbed.cpp +++ b/engines/testbed/testbed.cpp @@ -55,10 +55,13 @@ Common::Error TestbedEngine::run() { // TODO: Implement that bool interactive; - Common::String prompt("Welcome to the ScummVM testbed! \n \ - It is a framework to test the various ScummVM subsystems namely GFX, Sound, FS, events etc. \n \ - If you are seeing this correctly, it means interactive tests would run on this system :)"); - interactive = Testsuite::handleInteractiveInput(prompt); + Common::String prompt("Welcome to the ScummVM testbed!\n" + "It is a framework to test the various ScummVM subsystems namely GFX, Sound, FS, events etc.\n" + "If you see this, it means interactive tests would run on this system :)"); + + // To be set from config file + interactive = true; + Testsuite::displayMessage(prompt, "proceed?"); if (interactive) { printf("Running tests in Interactive Mode\n"); diff --git a/engines/testbed/testsuite.h b/engines/testbed/testsuite.h index ffeb2588c4..8ddd32e371 100644 --- a/engines/testbed/testsuite.h +++ b/engines/testbed/testsuite.h @@ -73,8 +73,8 @@ public: return prompt.runModal() == GUI::kMessageOK ? true : false; } - static void displayMessage(const Common::String &textToDisplay) { - GUI::MessageDialog prompt(textToDisplay); + static void displayMessage(const Common::String &textToDisplay, const char *defaultButton = "OK", const char *altButton = 0 ) { + GUI::MessageDialog prompt(textToDisplay, defaultButton); prompt.runModal(); } |