Просмотр исходного кода

Add default hotkey to swap primary screens.

Also minor style changes
James Rowe 9 лет назад
Родитель
Сommit
d9305b0a07

+ 2 - 1
src/citra/config.cpp

@@ -73,7 +73,8 @@ void Config::ReadValues() {
     Settings::values.bg_blue = (float)sdl2_config->GetReal("Renderer", "bg_blue", 1.0);
     Settings::values.bg_blue = (float)sdl2_config->GetReal("Renderer", "bg_blue", 1.0);
 
 
     // Layout
     // Layout
-    Settings::values.layout_option = static_cast<Settings::LayoutOption>(sdl2_config->GetInteger("Layout", "layout_option", 0));
+    Settings::values.layout_option =
+        static_cast<Settings::LayoutOption>(sdl2_config->GetInteger("Layout", "layout_option", 0));
     Settings::values.swap_screen = sdl2_config->GetBoolean("Layout", "swap_screen", false);
     Settings::values.swap_screen = sdl2_config->GetBoolean("Layout", "swap_screen", false);
 
 
     // Audio
     // Audio

+ 2 - 1
src/citra_qt/config.cpp

@@ -55,7 +55,8 @@ void Config::ReadValues() {
     qt_config->endGroup();
     qt_config->endGroup();
 
 
     qt_config->beginGroup("Layout");
     qt_config->beginGroup("Layout");
-    Settings::values.layout_option = static_cast<Settings::LayoutOption>(qt_config->value("layout_option").toInt());
+    Settings::values.layout_option =
+        static_cast<Settings::LayoutOption>(qt_config->value("layout_option").toInt());
     Settings::values.swap_screen = qt_config->value("swap_screen", false).toBool();
     Settings::values.swap_screen = qt_config->value("swap_screen", false).toBool();
     qt_config->endGroup();
     qt_config->endGroup();
 
 

+ 2 - 1
src/citra_qt/configure_graphics.cpp

@@ -32,7 +32,8 @@ void ConfigureGraphics::applyConfiguration() {
     Settings::values.use_shader_jit = ui->toggle_shader_jit->isChecked();
     Settings::values.use_shader_jit = ui->toggle_shader_jit->isChecked();
     Settings::values.use_scaled_resolution = ui->toggle_scaled_resolution->isChecked();
     Settings::values.use_scaled_resolution = ui->toggle_scaled_resolution->isChecked();
     Settings::values.use_vsync = ui->toggle_vsync->isChecked();
     Settings::values.use_vsync = ui->toggle_vsync->isChecked();
-    Settings::values.layout_option = static_cast<Settings::LayoutOption>(ui->layout_combobox->currentIndex());
+    Settings::values.layout_option =
+        static_cast<Settings::LayoutOption>(ui->layout_combobox->currentIndex());
     Settings::values.swap_screen = ui->swap_screen->isChecked();
     Settings::values.swap_screen = ui->swap_screen->isChecked();
     Settings::Apply();
     Settings::Apply();
 }
 }

+ 8 - 0
src/citra_qt/main.cpp

@@ -196,6 +196,7 @@ GMainWindow::GMainWindow() : config(new Config()), emu_thread(nullptr) {
 
 
     // Setup hotkeys
     // Setup hotkeys
     RegisterHotkey("Main Window", "Load File", QKeySequence::Open);
     RegisterHotkey("Main Window", "Load File", QKeySequence::Open);
+    RegisterHotkey("Main Window", "Swap Screens", QKeySequence::NextChild);
     RegisterHotkey("Main Window", "Start Emulation");
     RegisterHotkey("Main Window", "Start Emulation");
     LoadHotkeys();
     LoadHotkeys();
 
 
@@ -203,6 +204,8 @@ GMainWindow::GMainWindow() : config(new Config()), emu_thread(nullptr) {
             SLOT(OnMenuLoadFile()));
             SLOT(OnMenuLoadFile()));
     connect(GetHotkey("Main Window", "Start Emulation", this), SIGNAL(activated()), this,
     connect(GetHotkey("Main Window", "Start Emulation", this), SIGNAL(activated()), this,
             SLOT(OnStartGame()));
             SLOT(OnStartGame()));
+    connect(GetHotkey("Main Window", "Swap Screens", this), SIGNAL(activated()), this,
+            SLOT(OnSwapScreens()));
 
 
     std::string window_title =
     std::string window_title =
         Common::StringFromFormat("Citra | %s-%s", Common::g_scm_branch, Common::g_scm_desc);
         Common::StringFromFormat("Citra | %s-%s", Common::g_scm_branch, Common::g_scm_desc);
@@ -550,6 +553,11 @@ void GMainWindow::OnConfigure() {
     }
     }
 }
 }
 
 
+void GMainWindow::OnSwapScreens() {
+    Settings::values.swap_screen = !Settings::values.swap_screen;
+    Settings::Apply();
+}
+
 void GMainWindow::OnCreateGraphicsSurfaceViewer() {
 void GMainWindow::OnCreateGraphicsSurfaceViewer() {
     auto graphicsSurfaceViewerWidget = new GraphicsSurfaceWidget(Pica::g_debug_context, this);
     auto graphicsSurfaceViewerWidget = new GraphicsSurfaceWidget(Pica::g_debug_context, this);
     addDockWidget(Qt::RightDockWidgetArea, graphicsSurfaceViewerWidget);
     addDockWidget(Qt::RightDockWidgetArea, graphicsSurfaceViewerWidget);

+ 1 - 0
src/citra_qt/main.h

@@ -105,6 +105,7 @@ private slots:
     /// Called whenever a user selects the "File->Select Game List Root" menu item
     /// Called whenever a user selects the "File->Select Game List Root" menu item
     void OnMenuSelectGameListRoot();
     void OnMenuSelectGameListRoot();
     void OnMenuRecentFile();
     void OnMenuRecentFile();
+    void OnSwapScreens();
     void OnConfigure();
     void OnConfigure();
     void OnDisplayTitleBars(bool);
     void OnDisplayTitleBars(bool);
     void ToggleWindowMode();
     void ToggleWindowMode();

+ 1 - 1
src/common/emu_window.h

@@ -200,7 +200,7 @@ public:
     }
     }
 
 
     /**
     /**
-     * Convenience method to update the VideoCore EmuWindow
+     * Convenience method to update the current frame layout
      * Read from the current settings to determine which layout to use.
      * Read from the current settings to determine which layout to use.
      */
      */
     void UpdateCurrentFramebufferLayout(unsigned width, unsigned height);
     void UpdateCurrentFramebufferLayout(unsigned width, unsigned height);

+ 5 - 1
src/common/framebuffer_layout.cpp

@@ -51,11 +51,15 @@ FramebufferLayout DefaultFrameLayout(unsigned width, unsigned height, bool swapp
             bot_screen.TranslateX((screen_window_area.GetWidth() - bot_screen.GetWidth()) / 2);
             bot_screen.TranslateX((screen_window_area.GetWidth() - bot_screen.GetWidth()) / 2);
     } else {
     } else {
         // Window is narrower than the emulation content => apply borders to the top and bottom
         // Window is narrower than the emulation content => apply borders to the top and bottom
-        top_screen = top_screen.TranslateY(height / 2 - top_screen.GetHeight());
         // Recalculate the bottom screen to account for the width difference between top and bottom
         // Recalculate the bottom screen to account for the width difference between top and bottom
         screen_window_area = {0, 0, width, top_screen.GetHeight()};
         screen_window_area = {0, 0, width, top_screen.GetHeight()};
         bot_screen = maxRectangle(screen_window_area, BOT_SCREEN_ASPECT_RATIO);
         bot_screen = maxRectangle(screen_window_area, BOT_SCREEN_ASPECT_RATIO);
         bot_screen = bot_screen.TranslateX((top_screen.GetWidth() - bot_screen.GetWidth()) / 2);
         bot_screen = bot_screen.TranslateX((top_screen.GetWidth() - bot_screen.GetWidth()) / 2);
+        if (swapped) {
+            bot_screen = bot_screen.TranslateY(height / 2 - bot_screen.GetHeight());
+        } else {
+            top_screen = top_screen.TranslateY(height / 2 - top_screen.GetHeight());
+        }
     }
     }
     // Move the top screen to the bottom if we are swapped.
     // Move the top screen to the bottom if we are swapped.
     res.top_screen = swapped ? top_screen.TranslateY(height / 2) : top_screen;
     res.top_screen = swapped ? top_screen.TranslateY(height / 2) : top_screen;

+ 2 - 1
src/common/framebuffer_layout.h

@@ -33,7 +33,8 @@ FramebufferLayout DefaultFrameLayout(unsigned width, unsigned height, bool is_sw
 FramebufferLayout SingleFrameLayout(unsigned width, unsigned height, bool is_swapped);
 FramebufferLayout SingleFrameLayout(unsigned width, unsigned height, bool is_swapped);
 
 
 /**
 /**
- * Factory method for constructing a Frame with the a 4x size Top screen with a 1x size bottom screen on the right
+ * Factory method for constructing a Frame with the a 4x size Top screen with a 1x size bottom
+ * screen on the right
  * This is useful in particular because it matches well with a 1920x1080 resolution monitor
  * This is useful in particular because it matches well with a 1920x1080 resolution monitor
  * @param width Window framebuffer width in pixels
  * @param width Window framebuffer width in pixels
  * @param height Window framebuffer height in pixels
  * @param height Window framebuffer height in pixels

+ 2 - 4
src/common/math_util.h

@@ -45,10 +45,8 @@ struct Rectangle {
         return Rectangle{left, top + y, right, bottom + y};
         return Rectangle{left, top + y, right, bottom + y};
     }
     }
     Rectangle<T> Scale(const float s) const {
     Rectangle<T> Scale(const float s) const {
-        ASSERT(s > 0);
-        return Rectangle {
-            left, top, static_cast<T>((right + left) * s), static_cast<T>((top + bottom) * s)
-        };
+        return Rectangle{left, top, static_cast<T>((right + left) * s),
+                         static_cast<T>((top + bottom) * s)};
     }
     }
 };
 };
 
 

+ 2 - 3
src/video_core/renderer_opengl/renderer_opengl.cpp

@@ -406,9 +406,8 @@ void RendererOpenGL::DrawScreens() {
     glUniform1i(uniform_color_texture, 0);
     glUniform1i(uniform_color_texture, 0);
 
 
     if (layout.top_screen_enabled) {
     if (layout.top_screen_enabled) {
-        DrawSingleScreenRotated(screen_infos[0], (float)top_screen.left,
-                                (float)top_screen.top, (float)top_screen.GetWidth(),
-                                (float)top_screen.GetHeight());
+        DrawSingleScreenRotated(screen_infos[0], (float)top_screen.left, (float)top_screen.top,
+                                (float)top_screen.GetWidth(), (float)top_screen.GetHeight());
     }
     }
     if (layout.bottom_screen_enabled) {
     if (layout.bottom_screen_enabled) {
         DrawSingleScreenRotated(screen_infos[1], (float)bottom_screen.left,
         DrawSingleScreenRotated(screen_infos[1], (float)bottom_screen.left,