aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/common/emu_window.h
diff options
context:
space:
mode:
authorGravatar bunnei <ericbunnie@gmail.com>2014-04-08 19:25:03 -0400
committerGravatar bunnei <ericbunnie@gmail.com>2014-04-08 19:25:03 -0400
commit63e46abdb8764bc97e91bae862c8d461e61b1965 (patch)
treee73f4aa25d7b4015a265e7bbfb6004dab7561027 /src/common/emu_window.h
parent03c245345e1f319da5007c15019ed54432029fb8 (diff)
got rid of 'src' folders in each sub-project
Diffstat (limited to 'src/common/emu_window.h')
-rw-r--r--src/common/emu_window.h102
1 files changed, 102 insertions, 0 deletions
diff --git a/src/common/emu_window.h b/src/common/emu_window.h
new file mode 100644
index 00000000..f4936705
--- /dev/null
+++ b/src/common/emu_window.h
@@ -0,0 +1,102 @@
+/**
+ * Copyright (C) 2005-2012 Gekko Emulator
+ *
+ * @file emu_window.h
+ * @author Neobrain
+ * @date 2012-06-01
+ * @brief Interface for implementing an emulator window manager
+ *
+ * @section LICENSE
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details at
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * Official project repository can be found at:
+ * http://code.google.com/p/gekko-gc-emu/
+ */
+
+#ifndef CORE_EMUWINDOW_H_
+#define CORE_EMUWINDOW_H_
+
+#include "common.h"
+
+//namespace input_common
+//{
+//class KeyboardInput;
+//}
+
+// Abstraction class used to provide an interface between emulation code and the frontend (e.g. SDL,
+// QGLWidget, GLFW, etc...)
+class EmuWindow
+{
+
+public:
+ /// Data structure to store an emuwindow configuration
+ struct Config{
+ bool fullscreen;
+ int res_width;
+ int res_height;
+ };
+
+ /// Swap buffers to display the next frame
+ virtual void SwapBuffers() = 0;
+
+ /// Polls window events
+ virtual void PollEvents() = 0;
+
+ /// Makes the graphics context current for the caller thread
+ virtual void MakeCurrent() = 0;
+
+ /// Releases (dunno if this is the "right" word) the GLFW context from the caller thread
+ virtual void DoneCurrent() = 0;
+
+ /**
+ * @brief Called from KeyboardInput constructor to notify EmuWindow about its presence
+ * @param controller_interface Pointer to a running KeyboardInput interface
+ */
+ //void set_controller_interface(input_common::KeyboardInput* controller_interface) {
+ // controller_interface_ = controller_interface;
+ //}
+ //input_common::KeyboardInput* controller_interface() { return controller_interface_; }
+
+ Config config() { return config_; }
+ void set_config(Config val) { config_ = val; }
+
+ int client_area_width() { return client_area_width_; }
+ void set_client_area_width(int val) { client_area_width_ = val; }
+
+ int client_area_height() { return client_area_height_; }
+ void set_client_area_height(int val) { client_area_height_ = val; }
+
+ std::string window_title() { return window_title_; }
+ void set_window_title(std::string val) { window_title_ = val; }
+
+protected:
+ EmuWindow() : client_area_width_(640), client_area_height_(480) {
+ char window_title[255];
+ sprintf(window_title, "citra [%s|%s] - %s",
+ "null-cpu",
+ "null-renderer",
+ __DATE__);
+ window_title_ = window_title;
+ }
+ virtual ~EmuWindow() {}
+
+ std::string window_title_; ///< Current window title, should be used by window impl.
+
+ int client_area_width_; ///< Current client width, should be set by window impl.
+ int client_area_height_; ///< Current client height, should be set by window impl.
+
+private:
+ Config config_; ///< Internal configuration
+
+};
+
+#endif // CORE_EMUWINDOW_H_