7 #include "imagescaling.h"
8 #include "settings/messagecomposersettings.h"
13 class MessageComposer::ImageScalingPrivate
16 ImageScalingPrivate() =
default;
24 ImageScaling::ImageScaling()
29 ImageScaling::~ImageScaling() =
default;
31 bool ImageScaling::loadImageFromData(
const QByteArray &data)
33 if (!d->mImage.loadFromData(data)) {
39 bool ImageScaling::resizeImage()
41 if (d->mImage.isNull()) {
44 const int width = d->mImage.width();
45 const int height = d->mImage.height();
48 if (MessageComposer::MessageComposerSettings::self()->reduceImageToMaximum()) {
49 int maximumWidth = MessageComposer::MessageComposerSettings::self()->maximumWidth();
50 if (maximumWidth == -1) {
51 maximumWidth = MessageComposer::MessageComposerSettings::self()->customMaximumWidth();
53 int maximumHeight = MessageComposer::MessageComposerSettings::self()->maximumHeight();
54 if (maximumHeight == -1) {
55 maximumHeight = MessageComposer::MessageComposerSettings::self()->customMaximumHeight();
57 if (width > maximumWidth) {
58 newWidth = maximumWidth;
62 if (height > maximumHeight) {
63 newHeight = maximumHeight;
71 if (MessageComposer::MessageComposerSettings::self()->enlargeImageToMinimum()) {
72 int minimumWidth = MessageComposer::MessageComposerSettings::self()->minimumWidth();
73 if (minimumWidth == -1) {
74 minimumWidth = MessageComposer::MessageComposerSettings::self()->customMinimumWidth();
77 int minimumHeight = MessageComposer::MessageComposerSettings::self()->minimumHeight();
78 if (minimumHeight == -1) {
79 minimumHeight = MessageComposer::MessageComposerSettings::self()->customMinimumHeight();
81 if (newWidth < minimumWidth) {
82 newWidth = minimumWidth;
84 if (newHeight < minimumHeight) {
85 newHeight = minimumHeight;
88 if ((newHeight != height) || (newWidth != width)) {
90 d->mImage = d->mImage.scaled(newWidth,
95 if (d->mMimeType ==
"image/jpeg") {
96 format = QByteArrayLiteral(
"JPG");
97 }
else if (d->mMimeType ==
"image/png") {
98 format = QByteArrayLiteral(
"PNG");
100 format = MessageComposer::MessageComposerSettings::self()->writeFormat().toLocal8Bit();
102 format = QByteArrayLiteral(
"PNG");
105 const bool result = d->mImage.save(&d->mBuffer, format.
constData());
116 if (d->mMimeType.isEmpty()) {
119 if ((d->mMimeType ==
"image/jpeg") || (d->mMimeType ==
"image/png")) {
123 const QString type = MessageComposer::MessageComposerSettings::self()->writeFormat();
132 void ImageScaling::setMimetype(
const QByteArray &mimetype)
134 d->mMimeType = mimetype;
137 void ImageScaling::setName(
const QString &name)
144 return d->mBuffer.
data();
147 QString ImageScaling::generateNewName()
149 if (d->mName.isEmpty()) {
154 if ((d->mMimeType ==
"image/jpeg") || (d->mMimeType ==
"image/png")) {
157 QString type = MessageComposer::MessageComposerSettings::self()->writeFormat();
158 if (type.isEmpty()) {
159 type = QStringLiteral(
"PNG");