/* SPDX-FileCopyrightText: 2007 Paolo Capriotti SPDX-License-Identifier: GPL-2.0-or-later */ #include "distance.h" #include #include #include float distance(const QSize &size, const QSize &desired) { const float desiredAspectRatio = (desired.height() > 0) ? desired.width() / static_cast(desired.height()) : 0; const float candidateAspectRatio = (size.height() > 0) ? size.width() / static_cast(size.height()) : std::numeric_limits::max(); float delta = size.width() - desired.width(); delta = delta >= 0.0 ? delta : -delta * 2; // Penalize for scaling up return std::abs(candidateAspectRatio - desiredAspectRatio) * 25000 + delta; } QSize resSize(const QString &str) { const int index = str.indexOf(QLatin1Char('x')); if (index != -1) { return QSize(QStringView(str).left(index).toInt(), QStringView(str).mid(index + 1).toInt()); } return QSize(); }