mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-21 05:09:34 -06:00
Reformat all the things. Have fun with merge conflicts.
This commit is contained in:
@ -21,295 +21,305 @@
|
||||
#include "VideoCommon/RenderBase.h"
|
||||
|
||||
PostProcessingConfigDiag::PostProcessingConfigDiag(wxWindow* parent, const std::string& shader)
|
||||
: wxDialog(parent, wxID_ANY, _("Post Processing Shader Configuration")),
|
||||
m_shader(shader)
|
||||
: wxDialog(parent, wxID_ANY, _("Post Processing Shader Configuration")), m_shader(shader)
|
||||
{
|
||||
// Depending on if we are running already, either use the one from the videobackend
|
||||
// or generate our own.
|
||||
if (g_renderer && g_renderer->GetPostProcessor())
|
||||
{
|
||||
m_post_processor = g_renderer->GetPostProcessor()->GetConfig();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_post_processor = new PostProcessingShaderConfiguration();
|
||||
m_post_processor->LoadShader(m_shader);
|
||||
}
|
||||
// Depending on if we are running already, either use the one from the videobackend
|
||||
// or generate our own.
|
||||
if (g_renderer && g_renderer->GetPostProcessor())
|
||||
{
|
||||
m_post_processor = g_renderer->GetPostProcessor()->GetConfig();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_post_processor = new PostProcessingShaderConfiguration();
|
||||
m_post_processor->LoadShader(m_shader);
|
||||
}
|
||||
|
||||
// Create our UI classes
|
||||
const PostProcessingShaderConfiguration::ConfigMap& config_map = m_post_processor->GetOptions();
|
||||
for (const auto& it : config_map)
|
||||
{
|
||||
if (it.second.m_type == PostProcessingShaderConfiguration::ConfigurationOption::OptionType::OPTION_BOOL)
|
||||
{
|
||||
ConfigGrouping* group = new ConfigGrouping(ConfigGrouping::WidgetType::TYPE_TOGGLE,
|
||||
it.second.m_gui_name, it.first, it.second.m_dependent_option,
|
||||
&it.second);
|
||||
m_config_map[it.first] = group;
|
||||
}
|
||||
else
|
||||
{
|
||||
ConfigGrouping* group = new ConfigGrouping(ConfigGrouping::WidgetType::TYPE_SLIDER,
|
||||
it.second.m_gui_name, it.first, it.second.m_dependent_option,
|
||||
&it.second);
|
||||
m_config_map[it.first] = group;
|
||||
}
|
||||
}
|
||||
// Create our UI classes
|
||||
const PostProcessingShaderConfiguration::ConfigMap& config_map = m_post_processor->GetOptions();
|
||||
for (const auto& it : config_map)
|
||||
{
|
||||
if (it.second.m_type ==
|
||||
PostProcessingShaderConfiguration::ConfigurationOption::OptionType::OPTION_BOOL)
|
||||
{
|
||||
ConfigGrouping* group =
|
||||
new ConfigGrouping(ConfigGrouping::WidgetType::TYPE_TOGGLE, it.second.m_gui_name,
|
||||
it.first, it.second.m_dependent_option, &it.second);
|
||||
m_config_map[it.first] = group;
|
||||
}
|
||||
else
|
||||
{
|
||||
ConfigGrouping* group =
|
||||
new ConfigGrouping(ConfigGrouping::WidgetType::TYPE_SLIDER, it.second.m_gui_name,
|
||||
it.first, it.second.m_dependent_option, &it.second);
|
||||
m_config_map[it.first] = group;
|
||||
}
|
||||
}
|
||||
|
||||
// Arrange our vectors based on dependency
|
||||
for (const auto& it : m_config_map)
|
||||
{
|
||||
const std::string parent_name = it.second->GetParent();
|
||||
if (parent_name.size())
|
||||
{
|
||||
// Since it depends on a different object, push it to a parent's object
|
||||
m_config_map[parent_name]->AddChild(m_config_map[it.first]);
|
||||
}
|
||||
else
|
||||
{
|
||||
// It doesn't have a child, just push it to the vector
|
||||
m_config_groups.push_back(m_config_map[it.first]);
|
||||
}
|
||||
}
|
||||
// Arrange our vectors based on dependency
|
||||
for (const auto& it : m_config_map)
|
||||
{
|
||||
const std::string parent_name = it.second->GetParent();
|
||||
if (parent_name.size())
|
||||
{
|
||||
// Since it depends on a different object, push it to a parent's object
|
||||
m_config_map[parent_name]->AddChild(m_config_map[it.first]);
|
||||
}
|
||||
else
|
||||
{
|
||||
// It doesn't have a child, just push it to the vector
|
||||
m_config_groups.push_back(m_config_map[it.first]);
|
||||
}
|
||||
}
|
||||
|
||||
// Generate our UI
|
||||
wxNotebook* const notebook = new wxNotebook(this, wxID_ANY);
|
||||
wxPanel* const page_general = new wxPanel(notebook);
|
||||
wxFlexGridSizer* const szr_general = new wxFlexGridSizer(2, 5, 5);
|
||||
// Generate our UI
|
||||
wxNotebook* const notebook = new wxNotebook(this, wxID_ANY);
|
||||
wxPanel* const page_general = new wxPanel(notebook);
|
||||
wxFlexGridSizer* const szr_general = new wxFlexGridSizer(2, 5, 5);
|
||||
|
||||
// Now let's actually populate our window with our information
|
||||
bool add_general_page = false;
|
||||
for (const auto& it : m_config_groups)
|
||||
{
|
||||
if (it->HasChildren())
|
||||
{
|
||||
// Options with children get their own tab
|
||||
wxPanel* const page_option = new wxPanel(notebook);
|
||||
wxFlexGridSizer* const szr_option = new wxFlexGridSizer(2, 10, 5);
|
||||
it->GenerateUI(this, page_option, szr_option);
|
||||
// Now let's actually populate our window with our information
|
||||
bool add_general_page = false;
|
||||
for (const auto& it : m_config_groups)
|
||||
{
|
||||
if (it->HasChildren())
|
||||
{
|
||||
// Options with children get their own tab
|
||||
wxPanel* const page_option = new wxPanel(notebook);
|
||||
wxFlexGridSizer* const szr_option = new wxFlexGridSizer(2, 10, 5);
|
||||
it->GenerateUI(this, page_option, szr_option);
|
||||
|
||||
// Add all the children
|
||||
for (const auto& child : it->GetChildren())
|
||||
{
|
||||
child->GenerateUI(this, page_option, szr_option);
|
||||
}
|
||||
page_option->SetSizerAndFit(szr_option);
|
||||
notebook->AddPage(page_option, _(it->GetGUIName()));
|
||||
}
|
||||
else
|
||||
{
|
||||
// Options with no children go in to the general tab
|
||||
if (!add_general_page)
|
||||
{
|
||||
// Make it so it doesn't show up if there aren't any options without children.
|
||||
add_general_page = true;
|
||||
}
|
||||
it->GenerateUI(this, page_general, szr_general);
|
||||
}
|
||||
}
|
||||
// Add all the children
|
||||
for (const auto& child : it->GetChildren())
|
||||
{
|
||||
child->GenerateUI(this, page_option, szr_option);
|
||||
}
|
||||
page_option->SetSizerAndFit(szr_option);
|
||||
notebook->AddPage(page_option, _(it->GetGUIName()));
|
||||
}
|
||||
else
|
||||
{
|
||||
// Options with no children go in to the general tab
|
||||
if (!add_general_page)
|
||||
{
|
||||
// Make it so it doesn't show up if there aren't any options without children.
|
||||
add_general_page = true;
|
||||
}
|
||||
it->GenerateUI(this, page_general, szr_general);
|
||||
}
|
||||
}
|
||||
|
||||
if (add_general_page)
|
||||
{
|
||||
page_general->SetSizerAndFit(szr_general);
|
||||
notebook->InsertPage(0, page_general, _("General"));
|
||||
}
|
||||
if (add_general_page)
|
||||
{
|
||||
page_general->SetSizerAndFit(szr_general);
|
||||
notebook->InsertPage(0, page_general, _("General"));
|
||||
}
|
||||
|
||||
// Close Button
|
||||
wxButton* const btn_close = new wxButton(this, wxID_OK, _("Close"));
|
||||
btn_close->Bind(wxEVT_BUTTON, &PostProcessingConfigDiag::Event_ClickClose, this);
|
||||
// Close Button
|
||||
wxButton* const btn_close = new wxButton(this, wxID_OK, _("Close"));
|
||||
btn_close->Bind(wxEVT_BUTTON, &PostProcessingConfigDiag::Event_ClickClose, this);
|
||||
|
||||
Bind(wxEVT_CLOSE_WINDOW, &PostProcessingConfigDiag::Event_Close, this);
|
||||
Bind(wxEVT_CLOSE_WINDOW, &PostProcessingConfigDiag::Event_Close, this);
|
||||
|
||||
wxBoxSizer* const szr_main = new wxBoxSizer(wxVERTICAL);
|
||||
szr_main->Add(notebook, 1, wxEXPAND | wxALL, 5);
|
||||
szr_main->Add(btn_close, 0, wxALIGN_RIGHT | wxRIGHT | wxBOTTOM, 5);
|
||||
wxBoxSizer* const szr_main = new wxBoxSizer(wxVERTICAL);
|
||||
szr_main->Add(notebook, 1, wxEXPAND | wxALL, 5);
|
||||
szr_main->Add(btn_close, 0, wxALIGN_RIGHT | wxRIGHT | wxBOTTOM, 5);
|
||||
|
||||
SetSizerAndFit(szr_main);
|
||||
Center();
|
||||
SetFocus();
|
||||
SetSizerAndFit(szr_main);
|
||||
Center();
|
||||
SetFocus();
|
||||
|
||||
UpdateWindowUI();
|
||||
UpdateWindowUI();
|
||||
}
|
||||
|
||||
PostProcessingConfigDiag::~PostProcessingConfigDiag()
|
||||
{
|
||||
m_post_processor->SaveOptionsConfiguration();
|
||||
if (g_renderer && g_renderer->GetPostProcessor())
|
||||
m_post_processor = nullptr;
|
||||
else
|
||||
delete m_post_processor;
|
||||
m_post_processor->SaveOptionsConfiguration();
|
||||
if (g_renderer && g_renderer->GetPostProcessor())
|
||||
m_post_processor = nullptr;
|
||||
else
|
||||
delete m_post_processor;
|
||||
}
|
||||
|
||||
void PostProcessingConfigDiag::ConfigGrouping::GenerateUI(PostProcessingConfigDiag* dialog, wxWindow* parent, wxFlexGridSizer* sizer)
|
||||
void PostProcessingConfigDiag::ConfigGrouping::GenerateUI(PostProcessingConfigDiag* dialog,
|
||||
wxWindow* parent, wxFlexGridSizer* sizer)
|
||||
{
|
||||
if (m_type == WidgetType::TYPE_TOGGLE)
|
||||
{
|
||||
m_option_checkbox = new wxCheckBox(parent, wxID_ANY, _(m_gui_name));
|
||||
m_option_checkbox->SetValue(m_config_option->m_bool_value);
|
||||
m_option_checkbox->Bind(wxEVT_CHECKBOX, &PostProcessingConfigDiag::Event_CheckBox,
|
||||
dialog, wxID_ANY, wxID_ANY, new UserEventData(m_option));
|
||||
if (m_type == WidgetType::TYPE_TOGGLE)
|
||||
{
|
||||
m_option_checkbox = new wxCheckBox(parent, wxID_ANY, _(m_gui_name));
|
||||
m_option_checkbox->SetValue(m_config_option->m_bool_value);
|
||||
m_option_checkbox->Bind(wxEVT_CHECKBOX, &PostProcessingConfigDiag::Event_CheckBox, dialog,
|
||||
wxID_ANY, wxID_ANY, new UserEventData(m_option));
|
||||
|
||||
sizer->Add(m_option_checkbox);
|
||||
sizer->AddStretchSpacer();
|
||||
}
|
||||
else
|
||||
{
|
||||
size_t vector_size = 0;
|
||||
if (m_config_option->m_type == PostProcessingShaderConfiguration::ConfigurationOption::OptionType::OPTION_INTEGER)
|
||||
vector_size = m_config_option->m_integer_values.size();
|
||||
else
|
||||
vector_size = m_config_option->m_float_values.size();
|
||||
sizer->Add(m_option_checkbox);
|
||||
sizer->AddStretchSpacer();
|
||||
}
|
||||
else
|
||||
{
|
||||
size_t vector_size = 0;
|
||||
if (m_config_option->m_type ==
|
||||
PostProcessingShaderConfiguration::ConfigurationOption::OptionType::OPTION_INTEGER)
|
||||
vector_size = m_config_option->m_integer_values.size();
|
||||
else
|
||||
vector_size = m_config_option->m_float_values.size();
|
||||
|
||||
wxFlexGridSizer* const szr_values = new wxFlexGridSizer(vector_size + 1, 0, 0);
|
||||
wxStaticText* const option_static_text = new wxStaticText(parent, wxID_ANY, _(m_gui_name));
|
||||
sizer->Add(option_static_text);
|
||||
wxFlexGridSizer* const szr_values = new wxFlexGridSizer(vector_size + 1, 0, 0);
|
||||
wxStaticText* const option_static_text = new wxStaticText(parent, wxID_ANY, _(m_gui_name));
|
||||
sizer->Add(option_static_text);
|
||||
|
||||
for (size_t i = 0; i < vector_size; ++i)
|
||||
{
|
||||
// wxSlider uses a signed integer for it's minimum and maximum values
|
||||
// This won't work for floats.
|
||||
// Let's determine how many steps we can take and use that instead.
|
||||
int steps = 0;
|
||||
int current_value = 0;
|
||||
std::string string_value;
|
||||
if (m_config_option->m_type == PostProcessingShaderConfiguration::ConfigurationOption::OptionType::OPTION_INTEGER)
|
||||
{
|
||||
// Find out our range by taking the max subtracting the minimum.
|
||||
double range = m_config_option->m_integer_max_values[i] - m_config_option->m_integer_min_values[i];
|
||||
for (size_t i = 0; i < vector_size; ++i)
|
||||
{
|
||||
// wxSlider uses a signed integer for it's minimum and maximum values
|
||||
// This won't work for floats.
|
||||
// Let's determine how many steps we can take and use that instead.
|
||||
int steps = 0;
|
||||
int current_value = 0;
|
||||
std::string string_value;
|
||||
if (m_config_option->m_type ==
|
||||
PostProcessingShaderConfiguration::ConfigurationOption::OptionType::OPTION_INTEGER)
|
||||
{
|
||||
// Find out our range by taking the max subtracting the minimum.
|
||||
double range =
|
||||
m_config_option->m_integer_max_values[i] - m_config_option->m_integer_min_values[i];
|
||||
|
||||
// How many steps we have is the range divided by the step interval configured.
|
||||
// This may not be 100% spot on accurate since developers can have odd stepping intervals set.
|
||||
// Round up so if it is outside our range, then set it to the minimum or maximum
|
||||
steps = ceil(range / (double)m_config_option->m_integer_step_values[i]);
|
||||
// How many steps we have is the range divided by the step interval configured.
|
||||
// This may not be 100% spot on accurate since developers can have odd stepping intervals
|
||||
// set.
|
||||
// Round up so if it is outside our range, then set it to the minimum or maximum
|
||||
steps = ceil(range / (double)m_config_option->m_integer_step_values[i]);
|
||||
|
||||
// Default value is just the currently set value here
|
||||
current_value = m_config_option->m_integer_values[i];
|
||||
string_value = std::to_string(m_config_option->m_integer_values[i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Same as above but with floats
|
||||
float range = m_config_option->m_float_max_values[i] - m_config_option->m_float_min_values[i];
|
||||
steps = ceil(range / m_config_option->m_float_step_values[i]);
|
||||
// Default value is just the currently set value here
|
||||
current_value = m_config_option->m_integer_values[i];
|
||||
string_value = std::to_string(m_config_option->m_integer_values[i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Same as above but with floats
|
||||
float range =
|
||||
m_config_option->m_float_max_values[i] - m_config_option->m_float_min_values[i];
|
||||
steps = ceil(range / m_config_option->m_float_step_values[i]);
|
||||
|
||||
// We need to convert our default float value from a float to the nearest step value range
|
||||
current_value = (m_config_option->m_float_values[i] / m_config_option->m_float_step_values[i]);
|
||||
string_value = std::to_string(m_config_option->m_float_values[i]);
|
||||
}
|
||||
// We need to convert our default float value from a float to the nearest step value range
|
||||
current_value =
|
||||
(m_config_option->m_float_values[i] / m_config_option->m_float_step_values[i]);
|
||||
string_value = std::to_string(m_config_option->m_float_values[i]);
|
||||
}
|
||||
|
||||
wxSlider* slider = new wxSlider(parent, wxID_ANY, current_value, 0, steps,
|
||||
wxDefaultPosition, wxSize(200, -1), wxSL_HORIZONTAL | wxSL_BOTTOM);
|
||||
wxTextCtrl* text_ctrl = new wxTextCtrl(parent, wxID_ANY, string_value);
|
||||
wxSlider* slider = new wxSlider(parent, wxID_ANY, current_value, 0, steps, wxDefaultPosition,
|
||||
wxSize(200, -1), wxSL_HORIZONTAL | wxSL_BOTTOM);
|
||||
wxTextCtrl* text_ctrl = new wxTextCtrl(parent, wxID_ANY, string_value);
|
||||
|
||||
// Disable the textctrl, it's only there to show the absolute value from the slider
|
||||
text_ctrl->Disable();
|
||||
// Disable the textctrl, it's only there to show the absolute value from the slider
|
||||
text_ctrl->Disable();
|
||||
|
||||
// wxWidget takes over the pointer provided to it in the event handler.
|
||||
// This won't be a memory leak, it'll be destroyed on dialog close.
|
||||
slider->Bind(wxEVT_SLIDER, &PostProcessingConfigDiag::Event_Slider,
|
||||
dialog, wxID_ANY, wxID_ANY, new UserEventData(m_option));
|
||||
// wxWidget takes over the pointer provided to it in the event handler.
|
||||
// This won't be a memory leak, it'll be destroyed on dialog close.
|
||||
slider->Bind(wxEVT_SLIDER, &PostProcessingConfigDiag::Event_Slider, dialog, wxID_ANY,
|
||||
wxID_ANY, new UserEventData(m_option));
|
||||
|
||||
m_option_sliders.push_back(slider);
|
||||
m_option_text_ctrls.push_back(text_ctrl);
|
||||
}
|
||||
m_option_sliders.push_back(slider);
|
||||
m_option_text_ctrls.push_back(text_ctrl);
|
||||
}
|
||||
|
||||
if (vector_size == 1)
|
||||
{
|
||||
szr_values->Add(m_option_sliders[0], wxSizerFlags().Align(wxALIGN_CENTER_VERTICAL));
|
||||
szr_values->Add(m_option_text_ctrls[0]);
|
||||
if (vector_size == 1)
|
||||
{
|
||||
szr_values->Add(m_option_sliders[0], wxSizerFlags().Align(wxALIGN_CENTER_VERTICAL));
|
||||
szr_values->Add(m_option_text_ctrls[0]);
|
||||
|
||||
sizer->Add(szr_values);
|
||||
}
|
||||
else
|
||||
{
|
||||
wxFlexGridSizer* const szr_inside = new wxFlexGridSizer(2, 0, 0);
|
||||
for (size_t i = 0; i < vector_size; ++i)
|
||||
{
|
||||
szr_inside->Add(m_option_sliders[i], wxSizerFlags().Align(wxALIGN_CENTER_VERTICAL));
|
||||
szr_inside->Add(m_option_text_ctrls[i]);
|
||||
}
|
||||
sizer->Add(szr_values);
|
||||
}
|
||||
else
|
||||
{
|
||||
wxFlexGridSizer* const szr_inside = new wxFlexGridSizer(2, 0, 0);
|
||||
for (size_t i = 0; i < vector_size; ++i)
|
||||
{
|
||||
szr_inside->Add(m_option_sliders[i], wxSizerFlags().Align(wxALIGN_CENTER_VERTICAL));
|
||||
szr_inside->Add(m_option_text_ctrls[i]);
|
||||
}
|
||||
|
||||
szr_values->Add(szr_inside);
|
||||
sizer->Add(szr_values);
|
||||
}
|
||||
}
|
||||
szr_values->Add(szr_inside);
|
||||
sizer->Add(szr_values);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PostProcessingConfigDiag::ConfigGrouping::EnableDependentChildren(bool enable)
|
||||
{
|
||||
// Enable or disable all the children
|
||||
for (auto& it : m_children)
|
||||
{
|
||||
if (it->m_type == ConfigGrouping::WidgetType::TYPE_TOGGLE)
|
||||
{
|
||||
it->m_option_checkbox->Enable(enable);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (auto& slider : it->m_option_sliders)
|
||||
slider->Enable(enable);
|
||||
}
|
||||
// Set this objects children as well
|
||||
it->EnableDependentChildren(enable);
|
||||
}
|
||||
// Enable or disable all the children
|
||||
for (auto& it : m_children)
|
||||
{
|
||||
if (it->m_type == ConfigGrouping::WidgetType::TYPE_TOGGLE)
|
||||
{
|
||||
it->m_option_checkbox->Enable(enable);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (auto& slider : it->m_option_sliders)
|
||||
slider->Enable(enable);
|
||||
}
|
||||
// Set this objects children as well
|
||||
it->EnableDependentChildren(enable);
|
||||
}
|
||||
}
|
||||
|
||||
void PostProcessingConfigDiag::Event_CheckBox(wxCommandEvent &ev)
|
||||
void PostProcessingConfigDiag::Event_CheckBox(wxCommandEvent& ev)
|
||||
{
|
||||
UserEventData* config_option = (UserEventData*)ev.GetEventUserData();
|
||||
ConfigGrouping* config = m_config_map[config_option->GetData()];
|
||||
UserEventData* config_option = (UserEventData*)ev.GetEventUserData();
|
||||
ConfigGrouping* config = m_config_map[config_option->GetData()];
|
||||
|
||||
m_post_processor->SetOptionb(config->GetOption(), ev.IsChecked());
|
||||
m_post_processor->SetOptionb(config->GetOption(), ev.IsChecked());
|
||||
|
||||
config->EnableDependentChildren(ev.IsChecked());
|
||||
config->EnableDependentChildren(ev.IsChecked());
|
||||
|
||||
ev.Skip();
|
||||
ev.Skip();
|
||||
}
|
||||
|
||||
void PostProcessingConfigDiag::Event_Slider(wxCommandEvent &ev)
|
||||
void PostProcessingConfigDiag::Event_Slider(wxCommandEvent& ev)
|
||||
{
|
||||
UserEventData* config_option = (UserEventData*)ev.GetEventUserData();
|
||||
ConfigGrouping* config = m_config_map[config_option->GetData()];
|
||||
UserEventData* config_option = (UserEventData*)ev.GetEventUserData();
|
||||
ConfigGrouping* config = m_config_map[config_option->GetData()];
|
||||
|
||||
const auto& option_data = m_post_processor->GetOption(config->GetOption());
|
||||
const auto& option_data = m_post_processor->GetOption(config->GetOption());
|
||||
|
||||
size_t vector_size = 0;
|
||||
if (option_data.m_type == PostProcessingShaderConfiguration::ConfigurationOption::OptionType::OPTION_INTEGER)
|
||||
vector_size = option_data.m_integer_values.size();
|
||||
else
|
||||
vector_size = option_data.m_float_values.size();
|
||||
size_t vector_size = 0;
|
||||
if (option_data.m_type ==
|
||||
PostProcessingShaderConfiguration::ConfigurationOption::OptionType::OPTION_INTEGER)
|
||||
vector_size = option_data.m_integer_values.size();
|
||||
else
|
||||
vector_size = option_data.m_float_values.size();
|
||||
|
||||
for (size_t i = 0; i < vector_size; ++i)
|
||||
{
|
||||
// Got to do this garbage again.
|
||||
// Convert current step in to the real range value
|
||||
int current_step = config->GetSliderValue(i);
|
||||
std::string string_value;
|
||||
if (option_data.m_type == PostProcessingShaderConfiguration::ConfigurationOption::OptionType::OPTION_INTEGER)
|
||||
{
|
||||
s32 value = option_data.m_integer_step_values[i] * current_step + option_data.m_integer_min_values[i];
|
||||
m_post_processor->SetOptioni(config->GetOption(), i, value);
|
||||
string_value = std::to_string(value);
|
||||
}
|
||||
else
|
||||
{
|
||||
float value = option_data.m_float_step_values[i] * current_step + option_data.m_float_min_values[i];
|
||||
m_post_processor->SetOptionf(config->GetOption(), i, value);
|
||||
string_value = std::to_string(value);
|
||||
}
|
||||
// Update the text box to include the new value
|
||||
config->SetSliderText(i, string_value);
|
||||
}
|
||||
ev.Skip();
|
||||
for (size_t i = 0; i < vector_size; ++i)
|
||||
{
|
||||
// Got to do this garbage again.
|
||||
// Convert current step in to the real range value
|
||||
int current_step = config->GetSliderValue(i);
|
||||
std::string string_value;
|
||||
if (option_data.m_type ==
|
||||
PostProcessingShaderConfiguration::ConfigurationOption::OptionType::OPTION_INTEGER)
|
||||
{
|
||||
s32 value =
|
||||
option_data.m_integer_step_values[i] * current_step + option_data.m_integer_min_values[i];
|
||||
m_post_processor->SetOptioni(config->GetOption(), i, value);
|
||||
string_value = std::to_string(value);
|
||||
}
|
||||
else
|
||||
{
|
||||
float value =
|
||||
option_data.m_float_step_values[i] * current_step + option_data.m_float_min_values[i];
|
||||
m_post_processor->SetOptionf(config->GetOption(), i, value);
|
||||
string_value = std::to_string(value);
|
||||
}
|
||||
// Update the text box to include the new value
|
||||
config->SetSliderText(i, string_value);
|
||||
}
|
||||
ev.Skip();
|
||||
}
|
||||
|
||||
void PostProcessingConfigDiag::Event_ClickClose(wxCommandEvent&)
|
||||
{
|
||||
Close();
|
||||
Close();
|
||||
}
|
||||
|
||||
void PostProcessingConfigDiag::Event_Close(wxCloseEvent& ev)
|
||||
{
|
||||
EndModal(wxID_OK);
|
||||
EndModal(wxID_OK);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user