19#include "digikam_config.h"
58 bool setExifOrientationTag =
false;
73 QMap<QString, QVariant> ioAttributes(
IOFileSettings*
const iofileSettings,
const QString& givenMimeType)
const;
77 void putImageData(uchar*
const data,
int w,
int h,
bool sixteenBit);
82 void saveAs(
const QString& file,
IOFileSettings*
const iofileSettings,
83 bool setExifOrientationTag,
const QString& givenMimeType,
89 bool rotatedOrFlipped =
false;
90 bool exifOrient =
false;
91 bool doSoftProofing =
false;
106 QWidget* displayingWidget =
nullptr;
109 int currentFileToSave = 0;
130 qCWarning(DIGIKAM_GENERAL_LOG) <<
"d->image is NULL";
136 qCWarning(DIGIKAM_GENERAL_LOG) <<
"New image is NULL";
140 if ((w == -1) && (h == -1))
177 if (filesToSave.isEmpty() || (currentFileToSave >= filesToSave.size()))
182 FileToSave& file = filesToSave[currentFileToSave];
183 qCDebug(DIGIKAM_GENERAL_LOG) <<
"Saving file" << file.
filePath <<
"at" << file.
historyStep;
193 undoMan->putImageDataAndHistory(&file.
image, currentStep - file.
historyStep);
196 QMap<QString, QVariant>::const_iterator it;
218 undoMan->addAction(action);
230 image.setAttribute(QLatin1String(
"originalSize"), image.size());
235 const QString& mimeType)
const
237 QMap<QString, QVariant> attributes;
242 (mimeType.toUpper() == QLatin1String(
"JPG")) ||
243 (mimeType.toUpper() == QLatin1String(
"JPEG")) ||
244 (mimeType.toUpper() == QLatin1String(
"JPE"))
247 attributes.insert(QLatin1String(
"quality"), iofileSettings->
JPEGCompression);
248 attributes.insert(QLatin1String(
"subsampling"), iofileSettings->
JPEGSubSampling);
253 if (mimeType.toUpper() == QLatin1String(
"PNG"))
255 attributes.insert(QLatin1String(
"quality"), iofileSettings->
PNGCompression);
261 (mimeType.toUpper() == QLatin1String(
"TIFF")) ||
262 (mimeType.toUpper() == QLatin1String(
"TIF"))
265 attributes.insert(QLatin1String(
"compress"), iofileSettings->
TIFFCompression);
273 (mimeType.toUpper() == QLatin1String(
"JP2")) ||
274 (mimeType.toUpper() == QLatin1String(
"JPX")) ||
275 (mimeType.toUpper() == QLatin1String(
"JPC")) ||
276 (mimeType.toUpper() == QLatin1String(
"PGX")) ||
277 (mimeType.toUpper() == QLatin1String(
"J2K"))
282 attributes.insert(QLatin1String(
"quality"), 100);
297 (mimeType.toUpper() == QLatin1String(
"HEIC")) ||
298 (mimeType.toUpper() == QLatin1String(
"HEIF")) ||
299 (mimeType.toUpper() == QLatin1String(
"HIF"))
304 attributes.insert(QLatin1String(
"quality"), 0);
308 attributes.insert(QLatin1String(
"quality"), iofileSettings->
HEIFCompression);
316 if (mimeType.toUpper() == QLatin1String(
"PGF"))
320 attributes.insert(QLatin1String(
"quality"), 0);
324 attributes.insert(QLatin1String(
"quality"), iofileSettings->
PGFCompression);
330 if (mimeType.toUpper() == QLatin1String(
"JXL"))
334 attributes.insert(QLatin1String(
"quality"), 100);
338 attributes.insert(QLatin1String(
"quality"), iofileSettings->
JXLCompression);
344 if (mimeType.toUpper() == QLatin1String(
"WEBP"))
348 attributes.insert(QLatin1String(
"quality"), 100);
352 attributes.insert(QLatin1String(
"quality"), iofileSettings->
WEBPCompression);
358 if (mimeType.toUpper() == QLatin1String(
"AVIF"))
362 attributes.insert(QLatin1String(
"quality"), 100);
366 attributes.insert(QLatin1String(
"quality"), iofileSettings->
AVIFCompression);
374 bool setExifOrientationTag,
const QString& givenMimeType,
383 currentFileToSave = 0;
385 QString mimeType = givenMimeType;
389 if (mimeType.isEmpty())
412 QMap<int, VersionFileInfo>::const_iterator it;
417 file.
fileName = it.value().fileName;
418 file.
filePath = it.value().filePath();
421 file.
ioAttributes = ioAttributes(iofileSettings, it.value().format);
426 qCDebug(DIGIKAM_GENERAL_LOG) <<
"Saving intermediate at history step" << file.
historyStep
437 primary.
ioAttributes = ioAttributes(iofileSettings, mimeType);
440 primary.
image = image;
441 filesToSave << primary;
443 qCDebug(DIGIKAM_GENERAL_LOG) <<
"Saving to :" << primary.
filePath <<
"(" << primary.
mimeType <<
")";
450 thread->load(currentDescription,
464 if (description != currentDescription)
467 currentDescription = description;
Definition dimagehistory.h:39
int size() const
Returns the number of entries.
Definition dimagehistory.cpp:123
Definition dimgbuiltinfilter.h:34
FilterAction filterAction() const
Definition dimgbuiltinfilter.cpp:221
void apply(DImg &image) const
Definition dimgbuiltinfilter.cpp:155
bool isNull() const
Definition dimg_props.cpp:22
QSize size() const
Definition dimg_props.cpp:37
void setAttribute(const QString &key, const QVariant &value)
Definition dimg_props.cpp:214
void putImageData(uint width, uint height, bool sixteenBit, bool alpha, uchar *const data, bool copyData=true)
Definition dimg_data.cpp:61
void prepareMetadataToSave(const QString &intendedDestPath, const QString &destMimeType, const QString &originalFileName=QString(), PrepareMetadataFlags flags=PrepareMetadataFlagsAll)
Definition dimg_metadata.cpp:133
bool hasAlpha() const
Definition dimg_props.cpp:67
DImg copyMetaData() const
Definition dimg_copy.cpp:37
Definition dpluginrawimport.h:29
Definition editorcore_p.h:55
QString filePath
Definition editorcore_p.h:62
QString mimeType
Definition editorcore_p.h:64
int historyStep
Definition editorcore_p.h:59
QString intendedFilePath
Definition editorcore_p.h:63
QString fileName
Definition editorcore_p.h:61
bool setExifOrientationTag
Definition editorcore_p.h:58
QMap< QString, QVariant > ioAttributes
Definition editorcore_p.h:65
DImg image
Definition editorcore_p.h:66
Definition editorcore_p.h:50
LoadingDescription currentDescription
Definition editorcore_p.h:123
void resetValues()
Definition editorcore_p.h:159
QMap< QString, QVariant > ioAttributes(IOFileSettings *const iofileSettings, const QString &givenMimeType) const
Definition editorcore_p.h:234
void applyBuiltinFilter(const DImgBuiltinFilter &filter, UndoAction *const action)
Definition editorcore_p.h:216
ICCSettingsContainer cmSettings
Definition editorcore_p.h:115
DImageHistory resolvedInitialHistory
Definition editorcore_p.h:112
void loadCurrent()
Definition editorcore_p.h:448
void saveAs(const QString &file, IOFileSettings *const iofileSettings, bool setExifOrientationTag, const QString &givenMimeType, const VersionFileOperation &operation, const QString &intendedFilePath)
Definition editorcore_p.h:373
void putImageData(uchar *const data, int w, int h, bool sixteenBit)
Definition editorcore_p.h:126
void applyReversibleBuiltinFilter(const DImgBuiltinFilter &filter)
Definition editorcore_p.h:211
int origHeight
Definition editorcore_p.h:96
int origWidth
Definition editorcore_p.h:95
void saveNext()
Definition editorcore_p.h:175
DImg image
Definition editorcore_p.h:111
QList< FileToSave > filesToSave
Definition editorcore_p.h:108
void load(const LoadingDescription &description)
Definition editorcore_p.h:457
QSize loadedSize
Definition editorcore_p.h:102
Definition editorcore.h:48
int origWidth() const
Definition editorcore.cpp:581
void setModified()
Definition editorcore.cpp:524
int height() const
Definition editorcore.cpp:576
void signalImageLoaded(const QString &filePath, bool success)
void signalSavingStarted(const QString &filename)
bool sixteenBit() const
Definition editorcore.cpp:596
QString getImageFormat() const
Definition editorcore.cpp:836
int origHeight() const
Definition editorcore.cpp:586
static EditorCore * defaultInstance()
Definition editorcore.cpp:44
void signalLoadingStarted(const QString &filename)
int width() const
Definition editorcore.cpp:571
DImageHistory getItemHistory() const
Definition editorcore.cpp:692
Definition exposurecontainer.h:29
Definition iccsettingscontainer.h:35
Definition iofilesettings.h:26
bool AVIFLossLess
AVIF lossless compression.
Definition iofilesettings.h:81
int PGFCompression
PGF quality value.
Definition iofilesettings.h:54
bool JPEG2000LossLess
JPEG2000 lossless compression.
Definition iofilesettings.h:51
bool WEBPLossLess
WEBP lossless compression.
Definition iofilesettings.h:75
bool TIFFCompression
TIFF deflate compression.
Definition iofilesettings.h:45
bool PGFLossLess
PGF lossless compression.
Definition iofilesettings.h:57
int HEIFCompression
HEIF quality value.
Definition iofilesettings.h:60
int JPEGCompression
JPEG quality value.
Definition iofilesettings.h:36
int JXLCompression
JXL quality value.
Definition iofilesettings.h:66
int WEBPCompression
WEBP quality value.
Definition iofilesettings.h:72
int PNGCompression
PNG compression value.
Definition iofilesettings.h:42
bool JXLLossLess
JXL lossless compression.
Definition iofilesettings.h:69
int JPEGSubSampling
JPEG chroma sub-sampling value.
Definition iofilesettings.h:39
int JPEG2000Compression
JPEG2000 quality value.
Definition iofilesettings.h:48
bool HEIFLossLess
HEIF lossless compression.
Definition iofilesettings.h:63
int AVIFCompression
AVIF quality value.
Definition iofilesettings.h:78
@ AccessModeReadWrite
Definition loadsavethread.h:125
Definition loadingdescription.h:35
@ LoadingPolicyFirstRemovePrevious
Definition managedloadsavethread.h:39
Definition sharedloadsavethread.h:25
Definition undoaction.h:90
Definition undoaction.h:56
Definition undomanager.h:37
QString path
Definition versionfileoperation.h:52
QString fileName
Definition versionfileoperation.h:53
Definition versionfileoperation.h:60
VersionFileInfo saveFile
Definition versionfileoperation.h:108
QMap< int, VersionFileInfo > intermediates
Definition versionfileoperation.h:112
VersionFileInfo intermediateForLoadedFile
Definition versionfileoperation.h:110
@ SaveAndDelete
Similar to Replace, but the new file name differs from the old one, which should be removed.
Definition versionfileoperation.h:72
@ MoveToIntermediate
Move loadedFile to loadedFileToIntermediate.
Definition versionfileoperation.h:75
@ Replace
loadedFile and saveFile are the same - replace. Excludes NewFile.
Definition versionfileoperation.h:69
Tasks tasks
Definition versionfileoperation.h:104
Definition datefolderview.cpp:34