forked from ShuriZma/suyu
bootmanager: Fix screenshot resolution factor usage
Fixes screenshots at non integer scaling
This commit is contained in:
parent
fcf2b2c78a
commit
80f8d4989e
|
@ -44,16 +44,13 @@ FramebufferLayout DefaultFrameLayout(u32 width, u32 height) {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
FramebufferLayout FrameLayoutFromResolutionScale(u32 res_scale) {
|
FramebufferLayout FrameLayoutFromResolutionScale(f32 res_scale) {
|
||||||
u32 width, height;
|
const bool is_docked = Settings::values.use_docked_mode.GetValue();
|
||||||
|
const u32 screen_width = is_docked ? ScreenDocked::Width : ScreenUndocked::Width;
|
||||||
|
const u32 screen_height = is_docked ? ScreenDocked::Height : ScreenUndocked::Height;
|
||||||
|
|
||||||
if (Settings::values.use_docked_mode.GetValue()) {
|
const u32 width = static_cast<u32>(static_cast<f32>(screen_width) * res_scale);
|
||||||
width = ScreenDocked::Width * res_scale;
|
const u32 height = static_cast<u32>(static_cast<f32>(screen_height) * res_scale);
|
||||||
height = ScreenDocked::Height * res_scale;
|
|
||||||
} else {
|
|
||||||
width = ScreenUndocked::Width * res_scale;
|
|
||||||
height = ScreenUndocked::Height * res_scale;
|
|
||||||
}
|
|
||||||
|
|
||||||
return DefaultFrameLayout(width, height);
|
return DefaultFrameLayout(width, height);
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,7 +60,7 @@ FramebufferLayout DefaultFrameLayout(u32 width, u32 height);
|
||||||
* Convenience method to get frame layout by resolution scale
|
* Convenience method to get frame layout by resolution scale
|
||||||
* @param res_scale resolution scale factor
|
* @param res_scale resolution scale factor
|
||||||
*/
|
*/
|
||||||
FramebufferLayout FrameLayoutFromResolutionScale(u32 res_scale);
|
FramebufferLayout FrameLayoutFromResolutionScale(f32 res_scale);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convenience method to determine emulation aspect ratio
|
* Convenience method to determine emulation aspect ratio
|
||||||
|
|
|
@ -628,11 +628,9 @@ void GRenderWindow::ReleaseRenderTarget() {
|
||||||
main_context.reset();
|
main_context.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GRenderWindow::CaptureScreenshot(u32 res_scale, const QString& screenshot_path) {
|
void GRenderWindow::CaptureScreenshot(const QString& screenshot_path) {
|
||||||
VideoCore::RendererBase& renderer = system.Renderer();
|
auto& renderer = system.Renderer();
|
||||||
if (res_scale == 0) {
|
const f32 res_scale = VideoCore::GetResolutionScaleFactor(renderer);
|
||||||
res_scale = VideoCore::GetResolutionScaleFactor(renderer);
|
|
||||||
}
|
|
||||||
|
|
||||||
const Layout::FramebufferLayout layout{Layout::FrameLayoutFromResolutionScale(res_scale)};
|
const Layout::FramebufferLayout layout{Layout::FrameLayoutFromResolutionScale(res_scale)};
|
||||||
screenshot_image = QImage(QSize(layout.width, layout.height), QImage::Format_RGB32);
|
screenshot_image = QImage(QSize(layout.width, layout.height), QImage::Format_RGB32);
|
||||||
|
|
|
@ -178,7 +178,7 @@ public:
|
||||||
|
|
||||||
bool IsLoadingComplete() const;
|
bool IsLoadingComplete() const;
|
||||||
|
|
||||||
void CaptureScreenshot(u32 res_scale, const QString& screenshot_path);
|
void CaptureScreenshot(const QString& screenshot_path);
|
||||||
|
|
||||||
std::pair<u32, u32> ScaleTouch(const QPointF& pos) const;
|
std::pair<u32, u32> ScaleTouch(const QPointF& pos) const;
|
||||||
|
|
||||||
|
|
|
@ -163,7 +163,7 @@ void MicroProfileWidget::mouseReleaseEvent(QMouseEvent* ev) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void MicroProfileWidget::wheelEvent(QWheelEvent* ev) {
|
void MicroProfileWidget::wheelEvent(QWheelEvent* ev) {
|
||||||
const auto wheel_position = ev->position().toPoint();
|
const auto wheel_position = ev->pos();
|
||||||
MicroProfileMousePosition(wheel_position.x() / x_scale, wheel_position.y() / y_scale,
|
MicroProfileMousePosition(wheel_position.x() / x_scale, wheel_position.y() / y_scale,
|
||||||
ev->angleDelta().y() / 120);
|
ev->angleDelta().y() / 120);
|
||||||
ev->accept();
|
ev->accept();
|
||||||
|
|
|
@ -2892,8 +2892,7 @@ void GMainWindow::OnCaptureScreenshot() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
render_window->CaptureScreenshot(UISettings::values.screenshot_resolution_factor.GetValue(),
|
render_window->CaptureScreenshot(filename);
|
||||||
filename);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Written 2020-10-01: Remove per-game config migration code when it is irrelevant
|
// TODO: Written 2020-10-01: Remove per-game config migration code when it is irrelevant
|
||||||
|
|
|
@ -68,7 +68,6 @@ struct Values {
|
||||||
Settings::BasicSetting<bool> enable_discord_presence{true, "enable_discord_presence"};
|
Settings::BasicSetting<bool> enable_discord_presence{true, "enable_discord_presence"};
|
||||||
|
|
||||||
Settings::BasicSetting<bool> enable_screenshot_save_as{true, "enable_screenshot_save_as"};
|
Settings::BasicSetting<bool> enable_screenshot_save_as{true, "enable_screenshot_save_as"};
|
||||||
Settings::BasicSetting<u16> screenshot_resolution_factor{0, "screenshot_resolution_factor"};
|
|
||||||
|
|
||||||
QString roms_path;
|
QString roms_path;
|
||||||
QString symbols_path;
|
QString symbols_path;
|
||||||
|
|
Loading…
Reference in New Issue