From 8a98de8cb3500afb9f25ccd11664b90b3f4c3799 Mon Sep 17 00:00:00 2001 From: Leifa <26681464+TrickyLeifa@users.noreply.github.com> Date: Tue, 9 Jul 2024 12:52:41 +0200 Subject: [PATCH] Fix transformation mode for layers (#998) * Fix transformation mode for layers Resolve #997 * always use smooth transform resampling for stretched images * Used fixed frame size * Run Clang Format over file --------- Co-authored-by: in1tiate <32779090+in1tiate@users.noreply.github.com> Co-authored-by: Salanto <62221668+Salanto@users.noreply.github.com> Co-authored-by: stonedDiscord --- src/animationlayer.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/animationlayer.cpp b/src/animationlayer.cpp index 175ce9a..9e77124 100644 --- a/src/animationlayer.cpp +++ b/src/animationlayer.cpp @@ -229,6 +229,7 @@ void AnimationLayer::calculateFrameGeometry() { m_mask_rect = QRect(); m_scaled_frame_size = QSize(); + m_transformation_mode = m_transformation_mode_hint; QSize widget_size = size(); if (!widget_size.isValid() || !m_frame_size.isValid()) @@ -239,6 +240,7 @@ void AnimationLayer::calculateFrameGeometry() if (m_stretch_to_fit) { m_scaled_frame_size = widget_size; + m_transformation_mode = Qt::SmoothTransformation; } else { @@ -251,11 +253,11 @@ void AnimationLayer::calculateFrameGeometry() double scale = double(widget_size.height()) / double(m_scaled_frame_size.height()); m_scaled_frame_size *= scale; + } - if (m_transformation_mode_hint == Qt::FastTransformation) - { - m_transformation_mode = scale < 1.0 ? Qt::SmoothTransformation : Qt::FastTransformation; - } + if (m_transformation_mode_hint == Qt::FastTransformation) + { + m_transformation_mode = widget_size.height() < m_frame_size.height() ? Qt::SmoothTransformation : Qt::FastTransformation; } displayCurrentFrame();