X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Finiteffects.cpp;h=1470cc48f7e91049c79bc15743e038f65b4fffc4;hb=3e0775f80b929fbced7ba25e58e50973b3ae6563;hp=8ec8551a87bf468f9e5ad22ce50d8dd2bc0e8cd5;hpb=988360c0415646e3b436ce9d600d84fe7adfdb78;p=kdenlive diff --git a/src/initeffects.cpp b/src/initeffects.cpp index 8ec8551a..1470cc48 100644 --- a/src/initeffects.cpp +++ b/src/initeffects.cpp @@ -66,6 +66,48 @@ initEffects::initEffects() { initEffects::~initEffects() { } + +// static +void initEffects::refreshLumas() { + + // Check for Kdenlive installed luma files + QStringList imagenamelist; + QStringList imagefiles; + QStringList filters; + filters << "*.pgm" << "*.png"; + + QStringList customLumas = KGlobal::dirs()->findDirs("appdata", "lumas"); + foreach(const QString &folder, customLumas) { + QStringList filesnames = QDir(folder).entryList(filters, QDir::Files); + foreach(const QString &fname, filesnames) { + imagenamelist.append(fname); + imagefiles.append(folder + '/' + fname); + } + } + + // Check for MLT lumas + QString folder = mlt_environment("MLT_DATA"); + folder.append("/lumas/").append(mlt_environment("MLT_NORMALISATION")); + QDir lumafolder(folder); + QStringList filesnames = lumafolder.entryList(filters, QDir::Files); + foreach(const QString &fname, filesnames) { + imagenamelist.append(fname); + imagefiles.append(folder + '/' + fname); + } + QDomElement lumaTransition = MainWindow::transitions.getEffectByTag("luma", QString()); + QDomNodeList params = lumaTransition.elementsByTagName("parameter"); + for (int i = 0; i < params.count(); i++) { + QDomElement e = params.item(i).toElement(); + if (e.attribute("tag") == "resource") { + e.setAttribute("paramlistdisplay", imagenamelist.join(",")); + e.setAttribute("paramlist", imagefiles.join(",")); + break; + } + } + + +} + //static Mlt::Repository *initEffects::parseEffectFiles() { QStringList::Iterator more; @@ -511,12 +553,19 @@ void initEffects::fillTransitionsList(Mlt::Repository * repository, EffectsList* QDomDocument ret; QDomElement ktrans = ret.createElement("ktransition"); ret.appendChild(ktrans); + ktrans.setAttribute("tag", name); QDomElement tname = ret.createElement("name"); + + QDomElement desc = ret.createElement("description"); + QList paramList; Mlt::Properties *metadata = repository->metadata(transition_type, name.toAscii().data()); //kDebug() << filtername; if (metadata && metadata->is_valid()) { + + desc.appendChild(ret.createTextNode(metadata->get("description"))); + Mlt::Properties param_props((mlt_properties) metadata->get_data("parameters")); for (int j = 0; param_props.is_valid() && j < param_props.count();j++) { QDomElement params = ret.createElement("parameter"); @@ -566,30 +615,41 @@ void initEffects::fillTransitionsList(Mlt::Repository * repository, EffectsList* if (name == "luma") { tname.appendChild(ret.createTextNode("Luma")); + desc.appendChild(ret.createTextNode("Applies a luma transition between the current and next frames")); + + // Check for Kdenlive installed luma files + QStringList imagenamelist; + QStringList imagefiles; + QStringList filters; + filters << "*.pgm" << "*.png"; + + QStringList customLumas = KGlobal::dirs()->findDirs("appdata", "lumas"); + foreach(const QString &folder, customLumas) { + QStringList filesnames = QDir(folder).entryList(filters, QDir::Files); + foreach(const QString &fname, filesnames) { + imagenamelist.append(fname); + imagefiles.append(folder + '/' + fname); + } + } - QString path(mlt_environment("MLT_DATA")); - path.append("/lumas/").append(mlt_environment("MLT_NORMALISATION")); - Mlt::Properties entries; - mlt_properties_dir_list(entries.get_properties(), path.toAscii().data(), "*.*", 1); - kDebug() << path << entries.count(); - QString imagefiles; - //QStringList imagelist; - QString imagenamelist; - for (int i = 0;i < entries.count();i++) { - //if (!imagefiles.isEmpty()) // add empty entry too - imagefiles.append(","); - imagefiles.append(entries.get(i)); - //imagelist << entries.get(i); - imagenamelist.append(","); - imagenamelist.append(KUrl(entries.get(i)).fileName()); + // Check for MLT lumas + QString folder = mlt_environment("MLT_DATA"); + folder.append("/lumas/").append(mlt_environment("MLT_NORMALISATION")); + QDir lumafolder(folder); + QStringList filesnames = lumafolder.entryList(filters, QDir::Files); + foreach(const QString &fname, filesnames) { + imagenamelist.append(fname); + imagefiles.append(folder + '/' + fname); } + paramList.append(quickParameterFill(ret, "Softness", "softness", "double", "0", "0", "100", "", "", "100")); paramList.append(quickParameterFill(ret, "Invert", "invert", "bool", "0", "0", "1")); - paramList.append(quickParameterFill(ret, "ImageFile", "resource", "list", "", "", "", imagefiles, imagenamelist)); + paramList.append(quickParameterFill(ret, "ImageFile", "resource", "list", "", "", "", imagefiles.join(","), imagenamelist.join(","))); paramList.append(quickParameterFill(ret, "Reverse Transition", "reverse", "bool", "0", "0", "1")); //thumbnailer.prepareThumbnailsCall(imagelist); } else if (name == "composite") { + desc.appendChild(ret.createTextNode("A key-framable alpha-channel compositor for two frames.")); paramList.append(quickParameterFill(ret, "Geometry", "geometry", "geometry", "0%,0%:100%x100%:100", "-500;-500;-500;-500;0", "500;500;500;500;100")); paramList.append(quickParameterFill(ret, "Distort", "distort", "bool", "1", "1", "1")); tname.appendChild(ret.createTextNode("Composite")); @@ -628,6 +688,7 @@ void initEffects::fillTransitionsList(Mlt::Repository * repository, EffectsList* } ktrans.appendChild(tname); + ktrans.appendChild(desc); foreach(const QDomElement &e, paramList) { ktrans.appendChild(e); @@ -636,17 +697,22 @@ void initEffects::fillTransitionsList(Mlt::Repository * repository, EffectsList* transitions->append(ret.documentElement()); //kDebug() << "//// //// TRANSITON XML"; - //kDebug() << ret.toString(); + kDebug() << ret.toString(); /* */ } - QString wipetrans = "WipeDirection Align"; + QString wipetrans = "WipeSlide image from one side to anotherDirection Align"; QDomDocument ret; ret.setContent(wipetrans); transitions->append(ret.documentElement()); + + QString alphatrans = "Alpha transparencyMake alpha channel transparentDirectionRescaleAlign"; + QDomDocument ret2; + ret2.setContent(alphatrans); + transitions->append(ret2.documentElement()); } QDomElement initEffects::quickParameterFill(QDomDocument & doc, QString name, QString tag, QString type, QString def, QString min, QString max, QString list, QString listdisplaynames, QString factor, QString namedesc, QString format) {