From fda746ff9366ff7101417893e4390ddd0cfc0753 Mon Sep 17 00:00:00 2001 From: Gregory Hainaut Date: Thu, 7 May 2015 22:12:25 +0200 Subject: [PATCH] gsdx-gui-linux: support 3 states hack options Based on a Combo Box on linux. As good as 3 states check buttons --- plugins/GSdx/GSLinuxDialog.cpp | 22 ++++++++++++++-------- plugins/GSdx/GSdx.cpp | 4 ++++ plugins/GSdx/GSdx.h | 1 + 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/plugins/GSdx/GSLinuxDialog.cpp b/plugins/GSdx/GSLinuxDialog.cpp index 0483161582..aa0bf05658 100644 --- a/plugins/GSdx/GSLinuxDialog.cpp +++ b/plugins/GSdx/GSLinuxDialog.cpp @@ -106,7 +106,7 @@ void CB_ChangedComboBox(GtkComboBox *combo, gpointer user_data) } } -GtkWidget* CreateComboBoxFromVector(const vector& s, const char* opt_name, int opt_default) +GtkWidget* CreateComboBoxFromVector(const vector& s, const char* opt_name, int opt_default = 0) { GtkWidget* combo_box = gtk_combo_box_text_new(); int opt_value = theApp.GetConfig(opt_name, opt_default); @@ -382,12 +382,15 @@ void populate_hack_table(GtkWidget* hack_table) GtkWidget* hack_skipdraw_spin = CreateSpinButton(0, 1000, "UserHacks_SkipDraw"); GtkWidget* hack_enble_check = CreateCheckBox("Enable User Hacks", "UserHacks"); GtkWidget* hack_wild_check = CreateCheckBox("Wild arm Hack", "UserHacks_WildHack"); - GtkWidget* hack_sprite_check = CreateCheckBox("Sprite Hack", "UserHacks_SpriteHack"); GtkWidget* hack_tco_label = gtk_label_new("Texture Offset: 0x"); GtkWidget* hack_tco_entry = CreateTextBox("UserHacks_TCOffset"); GtkWidget* hack_logz_check = CreateCheckBox("Log Depth Hack", "logz", true); - GtkWidget* align_sprite_check = CreateCheckBox("Anti vertical line hack", "UserHacks_align_sprite_X"); - GtkWidget* stretch_hack_check = CreateCheckBox("Improve 2D sprite scaling", "UserHacks_round_sprite_offset"); + GtkWidget* align_sprite_check = CreateCheckBox("Align sprite hack", "UserHacks_align_sprite_X"); + + GtkWidget* hack_sprite_box = CreateComboBoxFromVector(theApp.m_gs_hack, "UserHacks_SpriteHack"); + GtkWidget* hack_sprite_label = gtk_label_new("Alpha-Sprite Hack:"); + GtkWidget* stretch_hack_box = CreateComboBoxFromVector(theApp.m_gs_hack, "UserHacks_round_sprite_offset"); + GtkWidget* stretch_hack_label = gtk_label_new("Align Sprite Texture:"); // Reuse windows helper string :) gtk_widget_set_tooltip_text(hack_alpha_check, dialog_message(IDC_ALPHAHACK)); @@ -397,20 +400,23 @@ void populate_hack_table(GtkWidget* hack_table) gtk_widget_set_tooltip_text(hack_skipdraw_spin, dialog_message(IDC_SKIPDRAWHACK)); gtk_widget_set_tooltip_text(hack_enble_check, "Allow to use hack below"); gtk_widget_set_tooltip_text(hack_wild_check, dialog_message(IDC_WILDHACK)); - gtk_widget_set_tooltip_text(hack_sprite_check, dialog_message(IDC_SPRITEHACK)); + gtk_widget_set_tooltip_text(hack_sprite_box, dialog_message(IDC_SPRITEHACK)); + gtk_widget_set_tooltip_text(hack_sprite_label, dialog_message(IDC_SPRITEHACK)); gtk_widget_set_tooltip_text(hack_tco_label, dialog_message(IDC_TCOFFSETX)); gtk_widget_set_tooltip_text(hack_tco_entry, dialog_message(IDC_TCOFFSETX)); gtk_widget_set_tooltip_text(hack_logz_check, "Use a logarithm depth instead of a linear depth (superseeded by ARB_clip_control)"); gtk_widget_set_tooltip_text(align_sprite_check, dialog_message(IDC_ALIGN_SPRITE)); - gtk_widget_set_tooltip_text(stretch_hack_check, dialog_message(IDC_ROUND_SPRITE)); + gtk_widget_set_tooltip_text(stretch_hack_box, dialog_message(IDC_ROUND_SPRITE)); + gtk_widget_set_tooltip_text(stretch_hack_label, dialog_message(IDC_ROUND_SPRITE)); s_table_line = 0; InsertWidgetInTable(hack_table , hack_enble_check); InsertWidgetInTable(hack_table , hack_alpha_check , hack_offset_check); - InsertWidgetInTable(hack_table , hack_sprite_check , hack_wild_check); InsertWidgetInTable(hack_table , hack_logz_check , hack_date_check); - InsertWidgetInTable(hack_table , stretch_hack_check , align_sprite_check); + InsertWidgetInTable(hack_table , hack_wild_check , align_sprite_check); + InsertWidgetInTable(hack_table , hack_sprite_label , hack_sprite_box ); + InsertWidgetInTable(hack_table , stretch_hack_label , stretch_hack_box ); InsertWidgetInTable(hack_table , hack_skipdraw_label , hack_skipdraw_spin); InsertWidgetInTable(hack_table , hack_tco_label , hack_tco_entry); } diff --git a/plugins/GSdx/GSdx.cpp b/plugins/GSdx/GSdx.cpp index 43d1ca44a2..1b3dff0cdc 100644 --- a/plugins/GSdx/GSdx.cpp +++ b/plugins/GSdx/GSdx.cpp @@ -176,6 +176,10 @@ GSdxApp::GSdxApp() m_gs_gl_ext.push_back(GSSetting(0, "Force-Disabled", "")); m_gs_gl_ext.push_back(GSSetting(1, "Force-Enabled", "")); + m_gs_hack.push_back(GSSetting(0, "Off", "")); + m_gs_hack.push_back(GSSetting(1, "Halfly On", "")); + m_gs_hack.push_back(GSSetting(2, "Fully On", "")); + m_gpu_renderers.push_back(GSSetting(0, "Direct3D9 (Software)", "")); m_gpu_renderers.push_back(GSSetting(1, "Direct3D11 (Software)", "")); m_gpu_renderers.push_back(GSSetting(2, "SDL 1.3 (Software)", "")); diff --git a/plugins/GSdx/GSdx.h b/plugins/GSdx/GSdx.h index 37310c5190..31e7b499bc 100644 --- a/plugins/GSdx/GSdx.h +++ b/plugins/GSdx/GSdx.h @@ -65,6 +65,7 @@ public: vector m_gs_max_anisotropy; vector m_gs_filter; vector m_gs_gl_ext; + vector m_gs_hack; vector m_gpu_renderers; vector m_gpu_filter;