| 
									
										
										
										
											2010-12-05 15:59:11 +00:00
										 |  |  | // Copyright (C) 2003 Dolphin Project.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // 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, version 2.0.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // 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 2.0 for more details.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // A copy of the GPL 2.0 should have been included with the program.
 | 
					
						
							|  |  |  | // If not, see http://www.gnu.org/licenses/
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Official SVN repository and contact information can be found at
 | 
					
						
							|  |  |  | // http://code.google.com/p/dolphin-emu/
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-12 09:10:11 +00:00
										 |  |  | #include "VideoConfigDiag.h"
 | 
					
						
							| 
									
										
										
										
											2010-12-05 15:59:11 +00:00
										 |  |  | #include "VideoConfigDialog.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "FileUtil.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define _connect_macro_(b, f, c, s)	(b)->Connect(wxID_ANY, (c), wxCommandEventHandler( f ), (wxObject*)0, (wxEvtHandler*)s)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | template <typename T> | 
					
						
							|  |  |  | IntegerSetting<T>::IntegerSetting(wxWindow* parent, const wxString& label, T& setting, int minVal, int maxVal, long style) : | 
					
						
							|  |  |  | 	wxSpinCtrl(parent, -1, label, wxDefaultPosition, wxDefaultSize, style), | 
					
						
							|  |  |  | 	m_setting(setting) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	SetRange(minVal, maxVal); | 
					
						
							|  |  |  | 	SetValue(m_setting); | 
					
						
							|  |  |  | 	_connect_macro_(this, IntegerSetting::UpdateValue, wxEVT_COMMAND_SPINCTRL_UPDATED, this); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | VideoConfigDialog::VideoConfigDialog(wxWindow* parent, const std::string& title, const std::string& _ininame) : | 
					
						
							|  |  |  | 	wxDialog(parent, -1, | 
					
						
							|  |  |  | 		wxString(wxT("Dolphin ")).append(wxString::FromAscii(title.c_str())).append(wxT(" Graphics Configuration")), | 
					
						
							|  |  |  | 		wxDefaultPosition, wxDefaultSize), | 
					
						
							| 
									
										
										
										
											2011-01-29 04:52:19 +00:00
										 |  |  | 	vconfig(g_SWVideoConfig), | 
					
						
							| 
									
										
										
										
											2010-12-05 15:59:11 +00:00
										 |  |  | 	ininame(_ininame) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	vconfig.Load((File::GetUserPath(D_CONFIG_IDX) + ininame + ".ini").c_str()); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	wxNotebook* const notebook = new wxNotebook(this, -1, wxDefaultPosition, wxDefaultSize);	 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// -- GENERAL --
 | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 	wxPanel* const page_general= new wxPanel(notebook, -1, wxDefaultPosition); | 
					
						
							|  |  |  | 	notebook->AddPage(page_general, wxT("General")); | 
					
						
							|  |  |  | 	wxBoxSizer* const szr_general = new wxBoxSizer(wxVERTICAL); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// - rendering
 | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 	wxStaticBoxSizer* const group_rendering = new wxStaticBoxSizer(wxVERTICAL, page_general, wxT("Rendering")); | 
					
						
							|  |  |  | 	szr_general->Add(group_rendering, 0, wxEXPAND | wxALL, 5); | 
					
						
							|  |  |  | 	wxGridSizer* const szr_rendering = new wxGridSizer(2, 5, 5); | 
					
						
							|  |  |  | 	group_rendering->Add(szr_rendering, 1, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-12 09:10:11 +00:00
										 |  |  | 	szr_rendering->Add(new SettingCheckBox(page_general, wxT("Hardware rasterization"), wxT(""), vconfig.bHwRasterizer)); | 
					
						
							| 
									
										
										
										
											2010-12-05 15:59:11 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// - info
 | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 	wxStaticBoxSizer* const group_info = new wxStaticBoxSizer(wxVERTICAL, page_general, wxT("Overlay Information")); | 
					
						
							|  |  |  | 	szr_general->Add(group_info, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5); | 
					
						
							|  |  |  | 	wxGridSizer* const szr_info = new wxGridSizer(2, 5, 5); | 
					
						
							|  |  |  | 	group_info->Add(szr_info, 1, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-12 09:10:11 +00:00
										 |  |  | 	szr_info->Add(new SettingCheckBox(page_general, wxT("Various Statistics"), wxT(""), vconfig.bShowStats)); | 
					
						
							| 
									
										
										
										
											2010-12-05 15:59:11 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	// - utility
 | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 	wxStaticBoxSizer* const group_utility = new wxStaticBoxSizer(wxVERTICAL, page_general, wxT("Utility")); | 
					
						
							|  |  |  | 	szr_general->Add(group_utility, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5); | 
					
						
							|  |  |  | 	wxGridSizer* const szr_utility = new wxGridSizer(2, 5, 5); | 
					
						
							|  |  |  | 	group_utility->Add(szr_utility, 1, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-12 09:10:11 +00:00
										 |  |  | 	szr_utility->Add(new SettingCheckBox(page_general, wxT("Dump Textures"), wxT(""), vconfig.bDumpTextures)); | 
					
						
							|  |  |  | 	szr_utility->Add(new SettingCheckBox(page_general, wxT("Dump Objects"), wxT(""), vconfig.bDumpObjects)); | 
					
						
							|  |  |  | 	szr_utility->Add(new SettingCheckBox(page_general, wxT("Dump Frames"), wxT(""), vconfig.bDumpFrames)); | 
					
						
							| 
									
										
										
										
											2010-12-05 15:59:11 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// - debug only
 | 
					
						
							|  |  |  | 	wxStaticBoxSizer* const group_debug_only_utility = new wxStaticBoxSizer(wxHORIZONTAL, page_general, wxT("Debug Only")); | 
					
						
							|  |  |  | 	group_utility->Add(group_debug_only_utility, 0, wxEXPAND | wxBOTTOM, 5); | 
					
						
							|  |  |  | 	wxGridSizer* const szr_debug_only_utility = new wxGridSizer(2, 5, 5); | 
					
						
							|  |  |  | 	group_debug_only_utility->Add(szr_debug_only_utility, 1, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-12 09:10:11 +00:00
										 |  |  | 	szr_debug_only_utility->Add(new SettingCheckBox(page_general, wxT("Dump TEV Stages"), wxT(""), vconfig.bDumpTevStages)); | 
					
						
							|  |  |  | 	szr_debug_only_utility->Add(new SettingCheckBox(page_general, wxT("Dump Texture Fetches"), wxT(""), vconfig.bDumpTevTextureFetches)); | 
					
						
							| 
									
										
										
										
											2010-12-05 15:59:11 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// - misc
 | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 	wxStaticBoxSizer* const group_misc = new wxStaticBoxSizer(wxVERTICAL, page_general, wxT("Drawn Object Range")); | 
					
						
							|  |  |  | 	szr_general->Add(group_misc, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5); | 
					
						
							|  |  |  | 	wxFlexGridSizer* const szr_misc = new wxFlexGridSizer(2, 5, 5); | 
					
						
							|  |  |  | 	group_misc->Add(szr_misc, 1, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	szr_misc->Add(new U32Setting(page_general, wxT("Start"), vconfig.drawStart, 0, 100000)); | 
					
						
							|  |  |  | 	szr_misc->Add(new U32Setting(page_general, wxT("End"), vconfig.drawEnd, 0, 100000)); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	page_general->SetSizerAndFit(szr_general); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	wxBoxSizer* const szr_main = new wxBoxSizer(wxVERTICAL); | 
					
						
							|  |  |  | 	szr_main->Add(notebook, 1, wxEXPAND | wxALL, 5); | 
					
						
							| 
									
										
										
										
											2011-03-16 22:22:21 +00:00
										 |  |  | 	szr_main->Add(new wxButton(this, wxID_OK, wxT("Close"), wxDefaultPosition), | 
					
						
							|  |  |  | 			0, wxALIGN_RIGHT | wxRIGHT | wxBOTTOM, 5); | 
					
						
							| 
									
										
										
										
											2010-12-05 15:59:11 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	SetSizerAndFit(szr_main); | 
					
						
							|  |  |  | 	Center(); | 
					
						
							| 
									
										
										
										
											2011-03-16 22:22:21 +00:00
										 |  |  | 	SetFocus(); | 
					
						
							| 
									
										
										
										
											2010-12-05 15:59:11 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-16 22:22:21 +00:00
										 |  |  | VideoConfigDialog::~VideoConfigDialog() | 
					
						
							| 
									
										
										
										
											2010-12-05 15:59:11 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2011-01-29 04:52:19 +00:00
										 |  |  | 	g_SWVideoConfig.Save((File::GetUserPath(D_CONFIG_IDX) + ininame + ".ini").c_str()); | 
					
						
							| 
									
										
										
										
											2010-12-05 15:59:11 +00:00
										 |  |  | } |