configure_graphics.cpp 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. // Copyright 2016 Citra Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #include "citra_qt/configure_graphics.h"
  5. #include "core/core.h"
  6. #include "core/settings.h"
  7. #include "ui_configure_graphics.h"
  8. ConfigureGraphics::ConfigureGraphics(QWidget* parent)
  9. : QWidget(parent), ui(new Ui::ConfigureGraphics) {
  10. ui->setupUi(this);
  11. this->setConfiguration();
  12. ui->toggle_vsync->setEnabled(!Core::System::GetInstance().IsPoweredOn());
  13. ui->layoutBox->setEnabled(!Settings::values.custom_layout);
  14. }
  15. ConfigureGraphics::~ConfigureGraphics() {}
  16. enum class Resolution : int {
  17. Auto,
  18. Scale1x,
  19. Scale2x,
  20. Scale3x,
  21. Scale4x,
  22. Scale5x,
  23. Scale6x,
  24. Scale7x,
  25. Scale8x,
  26. Scale9x,
  27. Scale10x,
  28. };
  29. float ToResolutionFactor(Resolution option) {
  30. switch (option) {
  31. case Resolution::Auto:
  32. return 0.f;
  33. case Resolution::Scale1x:
  34. return 1.f;
  35. case Resolution::Scale2x:
  36. return 2.f;
  37. case Resolution::Scale3x:
  38. return 3.f;
  39. case Resolution::Scale4x:
  40. return 4.f;
  41. case Resolution::Scale5x:
  42. return 5.f;
  43. case Resolution::Scale6x:
  44. return 6.f;
  45. case Resolution::Scale7x:
  46. return 7.f;
  47. case Resolution::Scale8x:
  48. return 8.f;
  49. case Resolution::Scale9x:
  50. return 9.f;
  51. case Resolution::Scale10x:
  52. return 10.f;
  53. }
  54. return 0.f;
  55. }
  56. Resolution FromResolutionFactor(float factor) {
  57. if (factor == 0.f) {
  58. return Resolution::Auto;
  59. } else if (factor == 1.f) {
  60. return Resolution::Scale1x;
  61. } else if (factor == 2.f) {
  62. return Resolution::Scale2x;
  63. } else if (factor == 3.f) {
  64. return Resolution::Scale3x;
  65. } else if (factor == 4.f) {
  66. return Resolution::Scale4x;
  67. } else if (factor == 5.f) {
  68. return Resolution::Scale5x;
  69. } else if (factor == 6.f) {
  70. return Resolution::Scale6x;
  71. } else if (factor == 7.f) {
  72. return Resolution::Scale7x;
  73. } else if (factor == 8.f) {
  74. return Resolution::Scale8x;
  75. } else if (factor == 9.f) {
  76. return Resolution::Scale9x;
  77. } else if (factor == 10.f) {
  78. return Resolution::Scale10x;
  79. }
  80. return Resolution::Auto;
  81. }
  82. void ConfigureGraphics::setConfiguration() {
  83. ui->toggle_hw_renderer->setChecked(Settings::values.use_hw_renderer);
  84. ui->resolution_factor_combobox->setEnabled(Settings::values.use_hw_renderer);
  85. ui->toggle_shader_jit->setChecked(Settings::values.use_shader_jit);
  86. ui->resolution_factor_combobox->setCurrentIndex(
  87. static_cast<int>(FromResolutionFactor(Settings::values.resolution_factor)));
  88. ui->toggle_vsync->setChecked(Settings::values.use_vsync);
  89. ui->toggle_framelimit->setChecked(Settings::values.toggle_framelimit);
  90. ui->layout_combobox->setCurrentIndex(static_cast<int>(Settings::values.layout_option));
  91. ui->swap_screen->setChecked(Settings::values.swap_screen);
  92. }
  93. void ConfigureGraphics::applyConfiguration() {
  94. Settings::values.use_hw_renderer = ui->toggle_hw_renderer->isChecked();
  95. Settings::values.use_shader_jit = ui->toggle_shader_jit->isChecked();
  96. Settings::values.resolution_factor =
  97. ToResolutionFactor(static_cast<Resolution>(ui->resolution_factor_combobox->currentIndex()));
  98. Settings::values.use_vsync = ui->toggle_vsync->isChecked();
  99. Settings::values.toggle_framelimit = ui->toggle_framelimit->isChecked();
  100. Settings::values.layout_option =
  101. static_cast<Settings::LayoutOption>(ui->layout_combobox->currentIndex());
  102. Settings::values.swap_screen = ui->swap_screen->isChecked();
  103. Settings::Apply();
  104. }