aboutsummaryrefslogtreecommitdiff
path: root/gui/InterfaceManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gui/InterfaceManager.cpp')
-rw-r--r--gui/InterfaceManager.cpp97
1 files changed, 97 insertions, 0 deletions
diff --git a/gui/InterfaceManager.cpp b/gui/InterfaceManager.cpp
index f886423e4c..8469654657 100644
--- a/gui/InterfaceManager.cpp
+++ b/gui/InterfaceManager.cpp
@@ -34,6 +34,103 @@
namespace GUI {
+template<typename PixelType>
+void InterfaceManager::screenInit() {
+ freeScreen();
+
+ _screen = new Graphics::Surface;
+ _screen->create(_system->getOverlayWidth(), _system->getOverlayHeight(), sizeof(PixelType));
+ _system->clearOverlay();
+}
+
+void InterfaceManager::setGraphicsMode(Graphics_Mode mode) {
+ if (mode == _graphicsMode)
+ return;
+
+ _graphicsMode = mode;
+
+ switch (mode) {
+ case GFX_Standard_16bit:
+ _bytesPerPixel = sizeof(uint16);
+ screenInit<uint16>();
+ break;
+
+ case GFX_Antialias_16bit:
+ _bytesPerPixel = sizeof(uint16);
+ screenInit<uint16>();
+ break;
+ }
+
+ _vectorRenderer = Graphics::createRenderer(mode);
+ _vectorRenderer->setSurface(_screen);
+}
+
+int InterfaceManager::runGUI() {
+ Common::EventManager *eventMan = _system->getEventManager();
+ _system->showOverlay();
+
+ Graphics::DrawStep *steps = new Graphics::DrawStep[5];
+
+ steps[0].color1.r = 214;
+ steps[0].color1.g = 113;
+ steps[0].color1.b = 8;
+ steps[0].color2.r = 240;
+ steps[0].color2.g = 200;
+ steps[0].color2.b = 25;
+ steps[0].fill_mode = Graphics::kFillMode_Gradient;
+ steps[0].drawing_call = &Graphics::VectorRenderer::drawCallback_FILLSURFACE;
+ steps[0].flags = Graphics::kDrawStep_SetGradient | Graphics::kDrawStep_SetFillMode;
+
+ steps[1].color1.r = 206;
+ steps[1].color1.g = 121;
+ steps[1].color1.b = 99;
+ steps[1].color2.r = 173;
+ steps[1].color2.g = 40;
+ steps[1].color2.b = 8;
+ steps[1].x = 500;
+ steps[1].y = 95;
+ steps[1].r = 8;
+ steps[1].w = 120;
+ steps[1].h = 30;
+ steps[1].drawing_call = &Graphics::VectorRenderer::drawCallback_ROUNDSQ;
+ steps[1].flags = Graphics::kDrawStep_SetGradient;
+
+ steps[2].x = 500;
+ steps[2].y = 135;
+ steps[2].r = 8;
+ steps[2].w = 120;
+ steps[2].h = 30;
+ steps[2].drawing_call = &Graphics::VectorRenderer::drawCallback_ROUNDSQ;
+ steps[2].flags = Graphics::kDrawStep_CallbackOnly;
+
+ steps[3].x = 500;
+ steps[3].y = 175;
+ steps[3].r = 8;
+ steps[3].w = 120;
+ steps[3].h = 30;
+ steps[3].drawing_call = &Graphics::VectorRenderer::drawCallback_ROUNDSQ;
+ steps[3].flags = Graphics::kDrawStep_CallbackOnly;
+
+ bool running = true;
+ while (running) { // draw!!
+
+ for (int i = 0; i < 4; ++i)
+ _vectorRenderer->drawStep(&steps[i]);
+
+ _vectorRenderer->copyFrame(_system);
+
+ Common::Event event;
+ _system->delayMillis(100);
+ while (eventMan->pollEvent(event)) {
+ if (event.type == Common::EVENT_QUIT)
+ running = false;
+ }
+ }
+
+ _system->hideOverlay();
+ return 1;
+}
+
} // end of namespace GUI.