]> git.sesse.net Git - kdenlive/blobdiff - src/profilesdialog.h
Const'ref
[kdenlive] / src / profilesdialog.h
index 04dbe8dc72c07ad0af0cbbd9bf0905033534025d..11760eeab5e65d367fab218d7752b4d07c5002bc 100644 (file)
 #include "definitions.h"
 #include "ui_profiledialog_ui.h"
 
-class ProfilesDialog : public QDialog {
+class ProfilesDialog : public QDialog
+{
     Q_OBJECT
 
 public:
     ProfilesDialog(QWidget * parent = 0);
+    /** @brief Using this constructor, the dialog only allows editing one profile. */
+    explicit ProfilesDialog(QString profilePath, QWidget * parent = 0);
 
-    void fillList(const QString selectedProfile = QString());
-    static QString getProfileDescription(QString name);
-    static QMap< QString, QString > getSettingsForProfile(const QString profileName);
-    static QMap< QString, QString > getSettingsFromFile(const QString path);
-    static QString getPathFromDescription(const QString profileDesc);
-    static MltVideoProfile getVideoProfile(QString name);
+    void fillList(const QString &selectedProfile = QString());
+    static QMap< QString, QString > getSettingsForProfile(const QString &profileName);
+    static QMap< QString, QString > getSettingsFromFile(const QString& path);
+    static QString getPathFromDescription(const QString& profileDesc);
+    static MltVideoProfile getVideoProfile(const QString &name);
     static QMap <QString, QString> getProfilesInfo();
+    static void saveProfile(MltVideoProfile &profile, QString profilePath = QString());
+    static QString existingProfile(const MltVideoProfile &profile);
+    static bool existingProfileDescription(const QString &desc);
+
+    /** @brief Check if a given profile matches passed properties:
+     *  @param width The profile frame width
+     *  @param height The profile frame height
+     *  @param fps The profile fps
+     *  @param par The sample aspect ratio
+     *  @param isImage If true, compare width with profile's display width ( = dar * height)
+     *  @param profile The profile to match
+     *  @return true if properties match profile */
+    static bool matchProfile(int width, int height, double fps, double par, bool isImage, const MltVideoProfile &profile);
+
+    /** @brief Find profiles that match parameter properties:
+     *  @param width The profile frame width
+     *  @param height The profile frame height
+     *  @param fps The profile fps
+     *  @param par The sample aspect ratio
+     *  @param useDisplayWidth If true, compare width with profile's display width ( = dar * height)
+     *  @return A string list of the matching profiles description */
+    static QMap <QString, QString> getProfilesFromProperties(int width, int height, double fps, double par, bool useDisplayWidth = false);
+
+    /** @brief Returns an value from a string by replacing "%width" and "%height" with given profile values:
+     *  @param profile The profile that gives width & height
+     *  @param eval The string to be evaluated, for example: "%width / 2"
+     *  @return the evaluated value */
+    static double getStringEval(const MltVideoProfile &profile, QString eval, const QPoint &frameSize = QPoint());
+
+    /** @brief Get the descriptive text for given colorspace code (defined by MLT)
+     *  @param colorspace An int as defined in mlt_profile.h
+     *  @return The string description */
+    static QString getColorspaceDescription(int colorspace);
+
+    /** @brief Get the colorspace code (defined by MLT) from a descriptive text
+     *  @param desctiption A string description as defined in getColorspaceDescription(int colorspace)
+     *  @return The int code */
+    static int getColorspaceFromDescription(const QString &description);
 
 protected:
     virtual void closeEvent(QCloseEvent *event);
 
 private slots:
-    void slotUpdateDisplay();
+    void slotUpdateDisplay(QString currentProfile = QString());
     void slotCreateProfile();
     bool slotSaveProfile();
     void slotDeleteProfile();
@@ -53,12 +93,12 @@ private slots:
 
 private:
     Ui::ProfilesDialog_UI m_view;
-    QStringList m_mltProfilesList;
-    QStringList m_customProfilesList;
     int m_selectedProfileIndex;
     bool m_profileIsModified;
     bool m_isCustomProfile;
-    void saveProfile(const QString path);
+    /** @brief If we are in single profile editing, should contain the path for this profile. */
+    QString m_customProfilePath;
+    void saveProfile(QString path);
     bool askForSave();
 };