From 63e46abdb8764bc97e91bae862c8d461e61b1965 Mon Sep 17 00:00:00 2001 From: bunnei Date: Tue, 8 Apr 2014 19:25:03 -0400 Subject: got rid of 'src' folders in each sub-project --- src/common/emu_window.h | 102 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 src/common/emu_window.h (limited to 'src/common/emu_window.h') 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_ -- cgit v1.2.3