1 /***************************************************************************
2 * Copyright (C) 2008 by Jean-Baptiste Mardelle (jb@kdenlive.org) *
4 * This program is free software; you can redistribute it and/or modify *
5 * it under the terms of the GNU General Public License as published by *
6 * the Free Software Foundation; either version 2 of the License, or *
7 * (at your option) any later version. *
9 * This program is distributed in the hope that it will be useful, *
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
12 * GNU General Public License for more details. *
14 * You should have received a copy of the GNU General Public License *
15 * along with this program; if not, write to the *
16 * Free Software Foundation, Inc., *
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
18 ***************************************************************************/
21 #ifndef PROFILESDIALOG_H
22 #define PROFILESDIALOG_H
25 #include "definitions.h"
26 #include "ui_profiledialog_ui.h"
28 class ProfilesDialog : public QDialog
33 ProfilesDialog(QWidget * parent = 0);
35 void fillList(const QString selectedProfile = QString());
36 static QMap< QString, QString > getSettingsForProfile(const QString profileName);
37 static QMap< QString, QString > getSettingsFromFile(const QString path);
38 static QString getPathFromDescription(const QString profileDesc);
39 static MltVideoProfile getVideoProfile(QString name);
40 static QMap <QString, QString> getProfilesInfo();
41 static void saveProfile(MltVideoProfile &profile, QString profilePath = QString());
42 static QString existingProfile(MltVideoProfile profile);
43 static bool existingProfileDescription(const QString &desc);
45 /** @brief Check if a given profile matches passed properties:
46 * @param width The profile frame width
47 * @param height The profile frame height
48 * @param fps The profile fps
49 * @param par The sample aspect ratio
50 * @param isImage If true, compare width with profile's display width ( = dar * height)
51 * @param profile The profile to match
52 * @return true if properties match profile */
53 static bool matchProfile(int width, int height, double fps, double par, bool isImage, MltVideoProfile profile);
55 /** @brief Find profiles that match parameter properties:
56 * @param width The profile frame width
57 * @param height The profile frame height
58 * @param fps The profile fps
59 * @param par The sample aspect ratio
60 * @param useDisplayWidth If true, compare width with profile's display width ( = dar * height)
61 * @return A string list of the matching profiles description */
62 static QMap <QString, QString> getProfilesFromProperties(int width, int height, double fps, double par, bool useDisplayWidth = false);
64 /** @brief Returns an value from a string by replacing "%width" and "%height" with given profile values:
65 * @param profile The profile that gives width & height
66 * @param eval The string to be evaluated, for example: "%width / 2"
67 * @return the evaluated value */
68 static double getStringEval(const MltVideoProfile &profile, QString eval);
70 /** @brief Get the descriptive text for given colorspace code (defined by MLT)
71 * @param colorspace An int as defined in mlt_profile.h
72 * @return The string description */
73 static QString getColorspaceDescription(int colorspace);
75 /** @brief Get the colorspace code (defined by MLT) from a descriptive text
76 * @param desctiption A string description as defined in getColorspaceDescription(int colorspace)
77 * @return The int code */
78 static int getColorspaceFromDescription(const QString &description);
81 virtual void closeEvent(QCloseEvent *event);
84 void slotUpdateDisplay();
85 void slotCreateProfile();
86 bool slotSaveProfile();
87 void slotDeleteProfile();
88 void slotSetDefaultProfile();
89 void slotProfileEdited();
90 virtual void accept();
93 Ui::ProfilesDialog_UI m_view;
94 int m_selectedProfileIndex;
95 bool m_profileIsModified;
96 bool m_isCustomProfile;
97 void saveProfile(const QString path);