Krita Source Code Documentation
Loading...
Searching...
No Matches
KisDlgAnimationRenderer.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2016 Boudewijn Rempt <boud@valdyas.org>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6#ifndef DLG_ANIMATIONRENDERERIMAGE
7#define DLG_ANIMATIONRENDERERIMAGE
8
9#include <KoDialog.h>
11
12#include "ui_wdg_animationrenderer.h"
13
14#include <kis_types.h>
15
16
17#include "kritaui_export.h"
18
19class KisDocument;
21class KisConfigWidget;
22class QHBoxLayout;
25
26class WdgAnimationRenderer : public QWidget, public Ui::WdgAnimationRenderer
27{
28 Q_OBJECT
29
30public:
31 WdgAnimationRenderer(QWidget *parent)
32 : QWidget(parent)
33 {
34 setupUi(this);
35 }
36};
37
38class KRITAUI_EXPORT KisDlgAnimationRenderer: public KoDialog
39{
40
41 Q_OBJECT
42
43public:
44
45 KisDlgAnimationRenderer(KisDocument *doc, QWidget *parent = 0);
46 ~KisDlgAnimationRenderer() override;
47
48 KisAnimationRenderingOptions getEncoderOptions() const;
49
50private Q_SLOTS:
51 void selectRenderType(int i);
52 void selectRenderOptions();
57 void sequenceMimeTypeOptionsClicked();
58
59 void slotLockAspectRatioDimensionsWidth(int width);
60 void slotLockAspectRatioDimensionsHeight(int height);
61
62 void slotExportTypeChanged();
63 void setFFmpegPath(const QString& path);
64
65 void frameRateChanged(int framerate);
66
67protected Q_SLOTS:
68
69 void slotButtonClicked(int button) override;
70 void slotDialogAccepted();
71
72
73private:
74#ifdef Q_OS_ANDROID
75 static constexpr bool PLATFORM_SUPPORTS_FFMPEG = false;
76#else
77 static constexpr bool PLATFORM_SUPPORTS_FFMPEG = true;
78#endif
79
81 VALID = 1,
83 NOT_A_BINARY = -1,
84 COMPRESSED_FORMAT = -2
85 };
86
87 void initializeRenderSettings(const KisDocument &doc, const KisAnimationRenderingOptions &lastUsedOptions);
88 void ffmpegWarningCheck();
89 FFmpegValidationResult validateFFmpeg(const QString &ffmpegPath);
90
91 static QString defaultVideoFileName(KisDocument *doc, const QString &mimeType);
92
93 static void getDefaultVideoEncoderOptions(const QString &mimeType,
95 const QStringList &availableEncoders,
96 QString *customFFMpegOptionsString,
97 bool *forceHDRVideo);
98
99 static void filterSequenceMimeTypes(QStringList &mimeTypes);
100 static QStringList makeVideoMimeTypesList();
101 QStringList filterMimeTypeListByAvailableEncoders(const QStringList &mimeTypes);
102 static bool imageMimeSupportsHDR(QString &hdr);
103
104 static KisPropertiesConfigurationSP loadLastConfiguration(QString configurationID);
105 static void saveLastUsedConfiguration(QString configurationID, KisPropertiesConfigurationSP config);
106
107private:
110
112 QString ffmpegVersion = "None";
113
114 QStringList ffmpegCodecs = QStringList(); // List of all supported output formats.
115 QMap<QString, QStringList> ffmpegEncoderTypes; // Maps supported output format to available list of encoder(s)
116
117 bool m_wantsRenderWithHDR = false;
118
120};
121
122#endif // DLG_ANIMATIONRENDERERIMAGE
QList< QString > QStringList
QMap< QString, QStringList > ffmpegEncoderTypes
The base class for import and export filters.
A dialog base class with standard buttons and predefined layouts.
Definition KoDialog.h:116
virtual void slotButtonClicked(int button)
Definition KoDialog.cpp:811
WdgAnimationRenderer(QWidget *parent)
@ INVALID
Definition kis_brush.h:31
QString button(const QWheelEvent &ev)