-#include "display.h"
#include "window.h"
#include "window_private.h"
+#include <msp/core/application.h>
+#include "display.h"
using namespace std;
namespace Msp {
namespace Graphics {
-WindowOptions::WindowOptions():
- width(640),
- height(480),
- fullscreen(false),
- resizable(false)
-{ }
-
-
Window::Window(Display &dpy, unsigned w, unsigned h, bool fs):
display(dpy)
{
void Window::init()
{
- visible = false;
- kbd_autorepeat = true;
- resizing = false;
priv = new Private;
+ if(options.fullscreen && !options.fullscreen_monitor)
+ options.fullscreen_monitor = display.get_desktop_mode().monitor;
+
platform_init();
display.add_window(*this);
display.check_error();
+
+ const string &app_name = Application::get_name();
+ if(!app_name.empty())
+ set_title(app_name);
}
Window::~Window()
bool fullscreen_changed = (opts.fullscreen!=options.fullscreen);
if(opts.width!=options.width || opts.height!=options.height)
resizing = true;
+ if(opts.x!=options.x || opts.y!=options.y)
+ moving = true;
+
+ options = opts;
if(visible)
{
- if(opts.fullscreen)
- display.set_mode(VideoMode(opts.width, opts.height));
+ if(options.fullscreen)
+ set_fullscreen_mode();
else if(fullscreen_changed)
display.restore_mode();
}
- options = opts;
platform_reconfigure(fullscreen_changed);
}
+void Window::set_fullscreen_mode()
+{
+ if(!options.fullscreen_monitor)
+ options.fullscreen_monitor = display.get_desktop_mode().monitor;
+ VideoMode mode(options.width, options.height);
+ mode.monitor = options.fullscreen_monitor;
+ mode.rotation = mode.monitor->desktop_settings.rotation;
+ if(mode.rotation==ROTATE_LEFT || mode.rotation==ROTATE_RIGHT)
+ swap(mode.width, mode.height);
+ display.set_mode(mode, options.fullscreen_exclusive);
+}
+
void Window::set_keyboard_autorepeat(bool r)
{
kbd_autorepeat = r;
}
+void Window::set_touch_input(bool t)
+{
+ touch_input = t;
+ platform_set_touch_input();
+}
+
void Window::show()
{
platform_show();
if(options.fullscreen)
{
- display.set_mode(VideoMode(options.width, options.height), true);
+ set_fullscreen_mode();
warp_pointer(options.width/2, options.height/2);
}
}