[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Pingus-CVS] r3746 - in trunk/pingus/src: . display screen
From: |
grumbel at BerliOS |
Subject: |
[Pingus-CVS] r3746 - in trunk/pingus/src: . display screen |
Date: |
Tue, 8 Jul 2008 15:57:29 +0200 |
Author: grumbel
Date: 2008-07-08 15:57:28 +0200 (Tue, 08 Jul 2008)
New Revision: 3746
Modified:
trunk/pingus/src/display/display.cpp
trunk/pingus/src/display/display.hpp
trunk/pingus/src/font_test_screen.cpp
trunk/pingus/src/screen/gui_screen.cpp
trunk/pingus/src/screen/screen.hpp
trunk/pingus/src/screen/screen_manager.cpp
Log:
Resize screens on the stack when they go back into action
Modified: trunk/pingus/src/display/display.cpp
===================================================================
--- trunk/pingus/src/display/display.cpp 2008-07-08 12:16:56 UTC (rev
3745)
+++ trunk/pingus/src/display/display.cpp 2008-07-08 13:57:28 UTC (rev
3746)
@@ -76,6 +76,12 @@
return screen->h;
}
+Size
+Display::get_size()
+{
+ return Size(screen->w, screen->h);
+}
+
void
Display::clear()
{
Modified: trunk/pingus/src/display/display.hpp
===================================================================
--- trunk/pingus/src/display/display.hpp 2008-07-08 12:16:56 UTC (rev
3745)
+++ trunk/pingus/src/display/display.hpp 2008-07-08 13:57:28 UTC (rev
3746)
@@ -21,6 +21,7 @@
#include "SDL.h"
#include <list>
#include <vector>
+#include "../math/size.hpp"
class Vector2i;
class Rect;
@@ -46,6 +47,7 @@
static int get_width();
static int get_height();
+ static Size get_size();
static void set_video_mode(int width, int height);
Modified: trunk/pingus/src/font_test_screen.cpp
===================================================================
--- trunk/pingus/src/font_test_screen.cpp 2008-07-08 12:16:56 UTC (rev
3745)
+++ trunk/pingus/src/font_test_screen.cpp 2008-07-08 13:57:28 UTC (rev
3746)
@@ -20,11 +20,13 @@
#include "fonts.hpp"
#include "string_util.hpp"
#include "display/drawing_context.hpp"
+#include "display/display.hpp"
#include "font_description.hpp"
#include "font_test_screen.hpp"
FontTestScreen::FontTestScreen(const Pathname& fontfile)
- : scrollx(0),
+ : Screen(Display::get_size()),
+ scrollx(0),
scrolly(0),
dark(true)
{
Modified: trunk/pingus/src/screen/gui_screen.cpp
===================================================================
--- trunk/pingus/src/screen/gui_screen.cpp 2008-07-08 12:16:56 UTC (rev
3745)
+++ trunk/pingus/src/screen/gui_screen.cpp 2008-07-08 13:57:28 UTC (rev
3746)
@@ -16,12 +16,13 @@
#include "../globals.hpp"
#include "../debug.hpp"
+#include "../display/display.hpp"
#include "gui/gui_manager.hpp"
#include "gui_screen.hpp"
-
-
+
GUIScreen::GUIScreen()
- : gui_manager (new GUI::GUIManager())
+ : Screen(Display::get_size()),
+ gui_manager(new GUI::GUIManager())
{
}
@@ -162,7 +163,8 @@
void
GUIScreen::resize(const Size& size)
{
+ Screen::resize(size);
gui_manager->set_rect(Rect(Vector2i(0, 0), size));
}
-
+
/* EOF */
Modified: trunk/pingus/src/screen/screen.hpp
===================================================================
--- trunk/pingus/src/screen/screen.hpp 2008-07-08 12:16:56 UTC (rev 3745)
+++ trunk/pingus/src/screen/screen.hpp 2008-07-08 13:57:28 UTC (rev 3746)
@@ -18,6 +18,7 @@
#define HEADER_PINGUS_SCREEN_HPP
#include "SDL.h"
+#include "../math/size.hpp"
namespace Input {
class Event;
@@ -31,10 +32,11 @@
screens are the PingusMenu or a PingusGameSession */
class Screen
{
-private:
+protected:
+ Size size;
public:
- Screen () { }
+ Screen (const Size& size_) : size(size_) { }
virtual ~Screen () {}
/** Draw this screen @return true if draw was successfull, false if
@@ -53,8 +55,10 @@
newly pushed screen */
virtual void on_shutdown () {}
- virtual void resize(const Size&) {}
+ virtual void resize(const Size& s) { size = s; }
+ virtual Size get_size() const { return size; }
+
private:
Screen (const Screen&);
Screen& operator= (const Screen&);
Modified: trunk/pingus/src/screen/screen_manager.cpp
===================================================================
--- trunk/pingus/src/screen/screen_manager.cpp 2008-07-08 12:16:56 UTC (rev
3745)
+++ trunk/pingus/src/screen/screen_manager.cpp 2008-07-08 13:57:28 UTC (rev
3746)
@@ -183,11 +183,11 @@
{
if (!screens.empty())
{
- screens.back ()->on_shutdown ();
+ screens.back()->on_shutdown();
}
- screens.push_back (ScreenPtr(screen));
- screen->on_startup ();
+ screens.push_back(ScreenPtr(screen));
+ screen->on_startup();
}
void
@@ -216,9 +216,12 @@
ScreenManager::real_replace_screen (ScreenPtr ptr)
{
cached_action = CA_NONE;
- screens.back ()->on_shutdown ();
- screens.back () = ptr;
- screens.back ()->on_startup ();
+ screens.back()->on_shutdown ();
+ screens.back() = ptr;
+
+ if (screens.back()->get_size() != Display::get_size())
+ screens.back()->resize(Display::get_size());
+ screens.back()->on_startup();
}
void
@@ -231,7 +234,9 @@
if (!screens.empty ())
{
- screens.back()->on_startup ();
+ if (screens.back()->get_size() != Display::get_size())
+ screens.back()->resize(Display::get_size());
+ screens.back()->on_startup();
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Pingus-CVS] r3746 - in trunk/pingus/src: . display screen,
grumbel at BerliOS <=