File indexing completed on 2024-05-12 16:06:47

0001 /*
0002     SPDX-FileCopyrightText: 2023 g10 Code GmbH
0003     SPDX-FileContributor: Sune Stolborg Vuorela <sune@vuorela.dk>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 #include "imagescaling.h"
0008 #include <QPainter>
0009 
0010 QImage imagescaling::scaleAndFitCanvas(const QImage &input, QSize expectedSize)
0011 {
0012     if (input.size() == expectedSize) {
0013         return input;
0014     }
0015     auto scaled = input.scaled(expectedSize, Qt::KeepAspectRatio);
0016     if (scaled.size() == expectedSize) {
0017         return scaled;
0018     }
0019     QImage canvas(expectedSize, QImage::Format_ARGB32);
0020     canvas.fill(Qt::transparent);
0021     auto scaledSize = scaled.size();
0022     QPoint topLeft((expectedSize.width() - scaledSize.width()) / 2, (expectedSize.height() - scaledSize.height()) / 2);
0023     QPainter painter(&canvas);
0024     painter.drawImage(topLeft, scaled);
0025     return canvas;
0026 }