X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Finiteffects.h;h=57cc82547c33f29dd53dd5f52ed1a6232bd2f518;hb=56aee6aedeeed3efd10ada8fe3c229eddc01ef05;hp=4bd9f3ca7842ae624d7664e297f1fd32b3e9632e;hpb=d3573270ef50282c0a142b7ce6d602dff7095f66;p=kdenlive diff --git a/src/initeffects.h b/src/initeffects.h index 4bd9f3ca..57cc8254 100644 --- a/src/initeffects.h +++ b/src/initeffects.h @@ -20,6 +20,7 @@ #include #include +#include #include @@ -29,29 +30,88 @@ class EffectsList; -class initEffects { +class initEffectsThumbnailer : public QThread +{ + Q_OBJECT public: - initEffects(); - ~initEffects(); + initEffectsThumbnailer(); + void prepareThumbnailsCall(const QStringList&); + void run(); +private : + QStringList m_list; - static Mlt::Repository *parseEffectFiles(EffectsList *audioEffectList, EffectsList *videoEffectList, EffectsList *transitions); +}; + +class initEffects +{ +public: + + /** @brief Fills the effects and transitions lists. + * @ref fillTransitionsList + * @ref parseEffectFile + * @return pointer to the MLT repository + * + * It checks for all available effects and transitions, removes blacklisted + * ones, calls fillTransitionsList() and parseEffectFile() to fill the lists + * (with sorted, unique items) and then fills the global lists. */ + static void parseEffectFiles(const QString &locale = QString()); + static void refreshLumas(); static QDomDocument createDescriptionFromMlt(Mlt::Repository* repository, const QString& type, const QString& name); - static void fillTransitionsList(Mlt::Repository *, EffectsList* transitions, QStringList names); - static QDomElement quickParameterFill(QDomDocument & doc, QString name, QString tag, QString type, QString def = QString(), QString min = QString(), QString max = QString()); - static void parseEffectFile(EffectsList *audioEffectList, EffectsList *videoEffectList, QString name, QStringList filtersList, QStringList producersList); - static char* ladspaEffectString(int ladspaId, QStringList params); - static void ladspaEffectFile(const QString & fname, int ladspaId, QStringList params); - - static char* ladspaPitchEffectString(QStringList params); - static char* ladspaReverbEffectString(QStringList params); - static char* ladspaRoomReverbEffectString(QStringList params); - static char* ladspaEqualizerEffectString(QStringList params); - static char* ladspaDeclipEffectString(QStringList); - static char* ladspaVinylEffectString(QStringList params); - static char* ladspaLimiterEffectString(QStringList params); - static char* ladspaPitchShifterEffectString(QStringList params); - static char* ladspaPhaserEffectString(QStringList params); - static char* ladspaRateScalerEffectString(QStringList params); + static QDomDocument getUsedCustomEffects(const QMap &effectids); + + /** @brief Fills the transitions list. + * @param repository MLT repository + * @param transitions list to save the transitions data in + * @param names list of transitions names + * + * It creates an element for each transition, asking to MLT for information + * when possible, using default parameters otherwise. It also adds some + * "virtual" transition, and removes those not implemented. */ + static void fillTransitionsList(Mlt::Repository *repository, + EffectsList *transitions, + QStringList names); + + /** @brief Creates an element describing a transition parameter. + * @param doc document containing the transition element + * @param name parameter name + * @param tag parameter tag + * @param type parameter type (string, double, bool, etc.) + * @return element with the parameter information */ + static QDomElement quickParameterFill(QDomDocument & doc, + const QString &name, + const QString &tag, + const QString &type, + const QString &def = QString(), + const QString &min = QString(), + const QString &max = QString(), + const QString &list = QString(), + const QString &listdisplaynames = QString(), + const QString &factor = QString(), + const QString &namedesc = QString(), + const QString &format = QString(), + const QString &opacity = QString()); + + /** @brief Parses a file to record information about one or more effects. + * @param customEffectList list of custom effect + * @param audioEffectList list of audio effects + * @param videoEffectList list of video effects + * @param name file name + * @param filtersList list of filters in the MLT repository + * @param producersList list of producers in the MLT repository + * @param repository MLT repository */ + static void parseEffectFile(EffectsList *customEffectList, + EffectsList *audioEffectList, + EffectsList *videoEffectList, + const QString &name, QStringList filtersList, + QStringList producersList, + Mlt::Repository *repository); + + /** @brief Reloads information about custom effects. */ + static void parseCustomEffectsFile(); + +private: + initEffects(); // disable the constructor + static initEffectsThumbnailer thumbnailer; };