X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fprofilesdialog.h;h=18e26fe1c7906dbfc0c3e857325adb2d1f86dfb5;hb=604434de173b7c8ad677fb5331a72dc4effd469e;hp=0ee22a5d8e250910866cca283dcbcfbedb5c6810;hpb=ad714e626d37b94307a43df649cc800e8dac9045;p=kdenlive diff --git a/src/profilesdialog.h b/src/profilesdialog.h index 0ee22a5d..18e26fe1 100644 --- a/src/profilesdialog.h +++ b/src/profilesdialog.h @@ -31,6 +31,8 @@ class ProfilesDialog : public QDialog 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 QMap< QString, QString > getSettingsForProfile(const QString profileName); @@ -38,23 +40,50 @@ public: static QString getPathFromDescription(const QString profileDesc); static MltVideoProfile getVideoProfile(QString name); static QMap getProfilesInfo(); - static void saveProfile(MltVideoProfile &profile); + static void saveProfile(MltVideoProfile &profile, QString profilePath = QString()); static QString existingProfile(MltVideoProfile profile); static bool existingProfileDescription(const QString &desc); - /** @brief Find a profile to match parameter properties: + /** @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 useDisplayWidth If true, compare width with profile's display width ( = dar * height) */ - static QString getPathFromProperties(int width, int height, double fps, bool useDisplayWidth = false); - static double getStringEval(const MltVideoProfile &profile, QString eval); + * @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, 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 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, 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(); @@ -67,6 +96,8 @@ private: int m_selectedProfileIndex; bool m_profileIsModified; bool m_isCustomProfile; + /** @brief If we are in single profile editing, should contain the path for this profile. */ + QString m_customProfilePath; void saveProfile(const QString path); bool askForSave(); };