diff options
Diffstat (limited to 'Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp')
| -rw-r--r-- | Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp | 86 |
1 files changed, 77 insertions, 9 deletions
diff --git a/Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp b/Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp index 98089e6d3d..281d4b264a 100644 --- a/Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp +++ b/Source/Core/DolphinQt/Config/Graphics/AdvancedWidget.cpp @@ -153,12 +153,47 @@ void AdvancedWidget::CreateWidgets() m_png_compression_level->SetTitle(tr("PNG Compression Level")); dump_layout->addWidget(m_png_compression_level, 3, 1); + // Crop. + auto* crop_box = new QGroupBox(tr("Crop")); + auto* crop_box_layout = new QVBoxLayout(); + crop_box->setLayout(crop_box_layout); + + m_crop_to_aspect_ratio = + new ConfigBool(tr("To Aspect Ratio"), Config::GFX_CROP_TO_ASPECT_RATIO, m_game_layer); + m_crop_custom = new ConfigBool(tr("Custom"), Config::GFX_CROP_CUSTOM, m_game_layer); + + m_crop_custom_box = new QGroupBox(tr("Custom")); + auto* misc_crop_custom_layout = new QGridLayout(); + m_crop_custom_box->setLayout(misc_crop_custom_layout); + m_crop_custom_box->setDisabled(!m_crop_custom->isChecked()); + + m_crop_custom_left = new ConfigInteger(0, 640, Config::GFX_CROP_CUSTOM_LEFT, m_game_layer, 1); + auto crop_custom_left_label = new ConfigIntegerLabel(tr("Left"), m_crop_custom_left); + m_crop_custom_top = new ConfigInteger(0, 528, Config::GFX_CROP_CUSTOM_TOP, m_game_layer, 1); + auto crop_custom_top_label = new ConfigIntegerLabel(tr("Top"), m_crop_custom_top); + m_crop_custom_right = new ConfigInteger(0, 640, Config::GFX_CROP_CUSTOM_RIGHT, m_game_layer, 1); + auto crop_custom_right_label = new ConfigIntegerLabel(tr("Right"), m_crop_custom_right); + m_crop_custom_bottom = new ConfigInteger(0, 528, Config::GFX_CROP_CUSTOM_BOTTOM, m_game_layer, 1); + auto crop_custom_bottom_label = new ConfigIntegerLabel(tr("Bottom"), m_crop_custom_bottom); + + misc_crop_custom_layout->addWidget(crop_custom_left_label, 0, 0); + misc_crop_custom_layout->addWidget(m_crop_custom_left, 0, 1); + misc_crop_custom_layout->addWidget(crop_custom_top_label, 0, 2); + misc_crop_custom_layout->addWidget(m_crop_custom_top, 0, 3); + misc_crop_custom_layout->addWidget(crop_custom_right_label, 1, 0); + misc_crop_custom_layout->addWidget(m_crop_custom_right, 1, 1); + misc_crop_custom_layout->addWidget(crop_custom_bottom_label, 1, 2); + misc_crop_custom_layout->addWidget(m_crop_custom_bottom, 1, 3); + + crop_box_layout->addWidget(m_crop_to_aspect_ratio); + crop_box_layout->addWidget(m_crop_custom); + crop_box_layout->addWidget(m_crop_custom_box); + // Misc. auto* misc_box = new QGroupBox(tr("Misc")); auto* misc_layout = new QGridLayout(); misc_box->setLayout(misc_layout); - m_enable_cropping = new ConfigBool(tr("Crop"), Config::GFX_CROP, m_game_layer); m_enable_prog_scan = new ConfigBool(tr("Enable Progressive Scan"), Config::SYSCONF_PROGRESSIVE_SCAN, m_game_layer); m_backend_multithreading = new ConfigBool(tr("Backend Multithreading"), @@ -169,11 +204,11 @@ void AdvancedWidget::CreateWidgets() m_game_layer); m_cpu_cull = new ConfigBool(tr("Cull Vertices on the CPU"), Config::GFX_CPU_CULL, m_game_layer); - misc_layout->addWidget(m_enable_cropping, 0, 0); + misc_layout->addWidget(m_backend_multithreading, 0, 0); misc_layout->addWidget(m_enable_prog_scan, 0, 1); - misc_layout->addWidget(m_backend_multithreading, 1, 0); + misc_layout->addWidget(m_cpu_cull, 1, 0); misc_layout->addWidget(m_prefer_vs_for_point_line_expansion, 1, 1); - misc_layout->addWidget(m_cpu_cull, 2, 0); + #ifdef _WIN32 m_borderless_fullscreen = new ConfigBool(tr("Borderless Fullscreen"), Config::GFX_BORDERLESS_FULLSCREEN, m_game_layer); @@ -198,6 +233,7 @@ void AdvancedWidget::CreateWidgets() main_layout->addWidget(utility_box); main_layout->addWidget(texture_dump_box); main_layout->addWidget(dump_box); + main_layout->addWidget(crop_box); main_layout->addWidget(misc_box); main_layout->addWidget(experimental_box); main_layout->addStretch(); @@ -215,6 +251,8 @@ void AdvancedWidget::ConnectWidgets() }); connect(m_enable_graphics_mods, &QCheckBox::toggled, this, [](bool checked) { emit Settings::Instance().EnableGfxModsChanged(checked); }); + connect(m_crop_custom, &QCheckBox::toggled, this, + [this](bool checked) { m_crop_custom_box->setDisabled(!checked); }); #if defined(HAVE_FFMPEG) connect(m_dump_use_lossless, &QCheckBox::toggled, this, [this](bool checked) { m_dump_bitrate->setEnabled(!checked); }); @@ -318,10 +356,6 @@ void AdvancedWidget::AddDescriptions() "However, for PNG files, levels between 3 and 6 are generally about as good as " "level 9 but finish in significantly less time.<br><br>" "<dolphin_emphasis>If unsure, leave this at 6.</dolphin_emphasis>"); - static const char TR_CROPPING_DESCRIPTION[] = QT_TR_NOOP( - "Crops the picture from its native aspect ratio (which rarely exactly matches 4:3 or 16:9)," - " to the specific user target aspect ratio (e.g. 4:3 or 16:9).<br><br>" - "<dolphin_emphasis>If unsure, leave this unchecked.</dolphin_emphasis>"); static const char TR_PROGRESSIVE_SCAN_DESCRIPTION[] = QT_TR_NOOP( "Enables progressive scan if supported by the emulated software. Most games don't have " "any issue with this.<br><br><dolphin_emphasis>If unsure, leave this " @@ -367,6 +401,35 @@ void AdvancedWidget::AddDescriptions() "unchecked.</dolphin_emphasis>"); #endif + // Crop. + static const char TR_CROP_TO_ASPECT_RATIO_DESCRIPTION[] = QT_TR_NOOP( + "Crops the picture from its native aspect ratio (which rarely exactly matches 4:3 or 16:9, " + "because it often includes overscan) to the specific user target aspect ratio (e.g. 4:3 or " + "16:9)." + "<br><br>This option was previously known as Graphics/Advanced/Misc/Crop." + "<br><br><dolphin_emphasis>If unsure, leave this unchecked.</dolphin_emphasis>"); + static const char TR_CROP_CUSTOM_DESCRIPTION[] = QT_TR_NOOP( + "Enables options to crop the picture by discrete native pixels (independent of the internal " + "resolution setting) in order to attain a specific " + "user target aspect ratio. Useful to resolve letterboxing issues." + " <br><br><dolphin_emphasis>If unsure, leave this unchecked.</dolphin_emphasis>"); + static const char TR_CROP_CUSTOM_LEFT[] = QT_TR_NOOP( + "Crops the picture left side by discrete native pixels (independent of the internal " + "resolution setting) in order to attain a specific user target aspect ratio. " + " <br><br><dolphin_emphasis>If unsure, leave this value to 0.</dolphin_emphasis>"); + static const char TR_CROP_CUSTOM_TOP[] = QT_TR_NOOP( + "Crops the picture top side by discrete native pixels (independent of the internal " + "resolution setting) in order to attain a specific user target aspect ratio. " + " <br><br><dolphin_emphasis>If unsure, leave this value to 0.</dolphin_emphasis>"); + static const char TR_CROP_CUSTOM_RIGHT[] = QT_TR_NOOP( + "Crops the picture right side by discrete native pixels (independent of the internal " + "resolution setting) in order to attain a specific user target aspect ratio. " + " <br><br><dolphin_emphasis>If unsure, leave this value to 0.</dolphin_emphasis>"); + static const char TR_CROP_CUSTOM_BOTTOM[] = QT_TR_NOOP( + "Crops the picture bottom side by discrete native pixels (independent of the internal " + "resolution setting) in order to attain a specific user target aspect ratio. " + " <br><br><dolphin_emphasis>If unsure, leave this value to 0.</dolphin_emphasis>"); + static const char IF_UNSURE_UNCHECKED[] = QT_TR_NOOP("<dolphin_emphasis>If unsure, leave this unchecked.</dolphin_emphasis>"); @@ -388,7 +451,6 @@ void AdvancedWidget::AddDescriptions() m_dump_use_lossless->SetDescription(tr(TR_USE_LOSSLESS_DESCRIPTION)); #endif m_png_compression_level->SetDescription(tr(TR_PNG_COMPRESSION_LEVEL_DESCRIPTION)); - m_enable_cropping->SetDescription(tr(TR_CROPPING_DESCRIPTION)); m_enable_prog_scan->SetDescription(tr(TR_PROGRESSIVE_SCAN_DESCRIPTION)); m_backend_multithreading->SetDescription(tr(TR_BACKEND_MULTITHREADING_DESCRIPTION)); QString vsexpand_extra; @@ -406,6 +468,12 @@ void AdvancedWidget::AddDescriptions() #ifdef _WIN32 m_borderless_fullscreen->SetDescription(tr(TR_BORDERLESS_FULLSCREEN_DESCRIPTION)); #endif + m_crop_to_aspect_ratio->SetDescription(tr(TR_CROP_TO_ASPECT_RATIO_DESCRIPTION)); + m_crop_custom->SetDescription(tr(TR_CROP_CUSTOM_DESCRIPTION)); + m_crop_custom_left->SetDescription(tr(TR_CROP_CUSTOM_LEFT)); + m_crop_custom_top->SetDescription(tr(TR_CROP_CUSTOM_TOP)); + m_crop_custom_right->SetDescription(tr(TR_CROP_CUSTOM_RIGHT)); + m_crop_custom_bottom->SetDescription(tr(TR_CROP_CUSTOM_BOTTOM)); m_defer_efb_access_invalidation->SetDescription(tr(TR_DEFER_EFB_ACCESS_INVALIDATION_DESCRIPTION)); m_manual_texture_sampling->SetDescription(tr(TR_MANUAL_TEXTURE_SAMPLING_DESCRIPTION)); } |
