mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	added emu_window.h to define interface to drawing to a window
This commit is contained in:
		
							parent
							
								
									d953d3d017
								
							
						
					
					
						commit
						4ca6d6452e
					
				
					 3 changed files with 108 additions and 0 deletions
				
			
		|  | @ -154,6 +154,7 @@ | ||||||
|     <ClInclude Include="src\console_listener.h" /> |     <ClInclude Include="src\console_listener.h" /> | ||||||
|     <ClInclude Include="src\cpu_detect.h" /> |     <ClInclude Include="src\cpu_detect.h" /> | ||||||
|     <ClInclude Include="src\debug_interface.h" /> |     <ClInclude Include="src\debug_interface.h" /> | ||||||
|  |     <ClInclude Include="src\emu_window.h" /> | ||||||
|     <ClInclude Include="src\extended_trace.h" /> |     <ClInclude Include="src\extended_trace.h" /> | ||||||
|     <ClInclude Include="src\fifo_queue.h" /> |     <ClInclude Include="src\fifo_queue.h" /> | ||||||
|     <ClInclude Include="src\file_search.h" /> |     <ClInclude Include="src\file_search.h" /> | ||||||
|  |  | ||||||
|  | @ -52,6 +52,7 @@ | ||||||
|     <ClInclude Include="src\timer.h" /> |     <ClInclude Include="src\timer.h" /> | ||||||
|     <ClInclude Include="src\atomic_gcc.h" /> |     <ClInclude Include="src\atomic_gcc.h" /> | ||||||
|     <ClInclude Include="src\atomic_win32.h" /> |     <ClInclude Include="src\atomic_win32.h" /> | ||||||
|  |     <ClInclude Include="src\emu_window.h" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <None Include="CMakeLists.txt" /> |     <None Include="CMakeLists.txt" /> | ||||||
|  |  | ||||||
							
								
								
									
										106
									
								
								src/common/src/emu_window.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								src/common/src/emu_window.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,106 @@ | ||||||
|  | /**
 | ||||||
|  |  * Copyright (C) 2005-2012 Gekko Emulator | ||||||
|  |  * | ||||||
|  |  * @file    emuwindow.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" | ||||||
|  | #include "config.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() : controller_interface_(NULL), client_area_width_(640), client_area_height_(480) { | ||||||
|  |         char window_title[255]; | ||||||
|  |         sprintf(window_title, "gekko [%s|%s] - %s",  | ||||||
|  |             common::g_config->CPUCoreTypeToString(common::g_config->powerpc_core()).c_str(),  | ||||||
|  |             common::g_config->RenderTypeToString(common::g_config->current_renderer()).c_str(),  | ||||||
|  |             __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
 | ||||||
|  | 
 | ||||||
|  |     input_common::KeyboardInput* controller_interface_; | ||||||
|  | 
 | ||||||
|  |     DISALLOW_COPY_AND_ASSIGN(EmuWindow); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #endif // CORE_EMUWINDOW_H_
 | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue