]> git.sesse.net Git - kdenlive/commitdiff
complex parameters editable
authorMarco Gittler <marco@gitma.de>
Thu, 28 Feb 2008 18:16:19 +0000 (18:16 +0000)
committerMarco Gittler <marco@gitma.de>
Thu, 28 Feb 2008 18:16:19 +0000 (18:16 +0000)
svn path=/branches/KDE4/; revision=1963

effects/obscure.xml
src/clipitem.cpp
src/effectstackedit.cpp
src/initeffects.cpp
src/parameterplotter.cpp

index a676fe5be67c19a4bfd7d593ce15c06a2d586b62..bf5d43bc8e13b347c1145a286cf7aa6808db26cc 100644 (file)
@@ -9,7 +9,7 @@
        <label>Height</label>
        <label>Averaging</label>
        <properties id="obscure" tag="obscure" />
-       <parameter type="complex" name="X;Y;Width;Height;Averaging" max="MAX_WIDTH;MAX_HEIGHT;1000;1000;100" min="0;0;0;0;3" default="MID_WIDTH;MID_HEIGHT;100;100;20">
+       <parameter type="complex" name="X;Y;Width;Height;Averaging" max="MAX_WIDTH;MAX_HEIGHT;1000;1000;100" min="0;0;0;0;3" default="MID_WIDTH;MID_HEIGHT;100;100;20" format="%d,%d:%dx%d">
                <name>Region</name>
        </parameter>
 </effect>
index 03ce5eec343361a3246a7540055a614987701377..d7b929d7fb7d959fee62cacb81ed1aa1e9041555 100644 (file)
@@ -638,6 +638,20 @@ QMap <QString, QString> ClipItem::getEffectArgs(QDomElement effect)
   QDomNodeList params = effect.elementsByTagName("parameter");
   for (int i = 0; i < params.count(); i++) {
     QDomElement e = params.item(i).toElement();
+         if (e.attribute("name").contains(";")){
+                 QString format=e.attribute("format");
+                 QStringList separators=format.split("%d",QString::SkipEmptyParts);
+                 QStringList values=e.attribute("value").split(QRegExp("[,:;x]"));
+                 QString neu;
+                 QTextStream txtNeu(&neu);
+                 if (values.size()>0)
+                         txtNeu << (int)values[0].toDouble();
+                 for (int i=0;i<separators.size() && i+1<values.size();i++){
+                         txtNeu << separators[i];
+                         txtNeu << (int)(values[i+1].toDouble());
+                 }
+                 effectParams["start"]=neu; 
+         }else
     if (!e.isNull())
       effectParams[e.attribute("name")] = e.attribute("value");
   }
index 36973d06928caacfe5a629fc8c23eea19ca7650a..ab4785190e25a04c3807304ae15364993bae3be5 100644 (file)
@@ -109,7 +109,7 @@ void EffectStackEdit::transferParamDesc(const QDomElement& d,int ,int){
                        valueItems[paramName]=bval;
                        uiItems.append(bval);
                }else if(type=="complex"){
-                       QStringList names=nodeAtts.namedItem("name").nodeValue().split(";");
+                       /*QStringList names=nodeAtts.namedItem("name").nodeValue().split(";");
                        QStringList max=nodeAtts.namedItem("max").nodeValue().split(";");
                        QStringList min=nodeAtts.namedItem("min").nodeValue().split(";");
                        QStringList val=value.split(";");
@@ -121,7 +121,7 @@ void EffectStackEdit::transferParamDesc(const QDomElement& d,int ,int){
                                for (int i=0;i< names.size();i++){
                                        createSliderItem(names[i],val[i].toInt(),min[i].toInt(),max[i].toInt());
                                };
-                       }
+                       }*/
                        ComplexParameter *pl=new ComplexParameter;
                        connect (pl, SIGNAL ( parameterChanged()),this, SLOT( collectAllParameters ()) );
                        pl->setupParam(d,0,100);
index ecbdfaf3fed63e6be5a88e5679071d0ebad60382..30daa7678d0f64edd96f437c2b7de3722a26c7b3 100644 (file)
@@ -384,8 +384,16 @@ QDomDocument initEffects::createDescriptionFromMlt(Mlt::Repository* repository,
                                        params.setAttribute("type","constant");
                                if (QString(paramdesc.get("type"))=="boolean" )
                                        params.setAttribute("type","bool");
+                               if (!QString(paramdesc.get("format")).isEmpty()){
+                                       params.setAttribute("type","complex");
+                                       params.setAttribute("format",paramdesc.get("format"));
+                               }
                                if (paramdesc.get("default") ) params.setAttribute("default",paramdesc.get("default"));
-                               if (paramdesc.get("value") ) params.setAttribute("value",paramdesc.get("value"));
+                               if (paramdesc.get("value") ){ 
+                                       params.setAttribute("value",paramdesc.get("value"));
+                               }else{
+                                       params.setAttribute("value",paramdesc.get("default"));
+                               }
                                
                                
                                QDomElement pname=ret.createElement("name");
index fe9dd87da961c8cc15b4347e0443a1aca7c67f4e..6701638fb05cb181b2ec396247ddecd6e256af4f 100644 (file)
@@ -80,7 +80,13 @@ void ParameterPlotter::setPointLists(const QDomElement& d,int startframe,int end
                
                //max_y=pa.attributes().namedItem("max").nodeValue().toInt();
                //int val=pa.attributes().namedItem("value").nodeValue().toInt();
-               QStringList defauls=pa.attributes().namedItem("default").nodeValue().split(";");
+               QStringList defaults;
+               if (pa.attributes().namedItem("start").nodeValue().contains(";"))
+                       defaults=pa.attributes().namedItem("start").nodeValue().split(";");
+               else if (pa.attributes().namedItem("value").nodeValue().contains(";"))
+                       defaults=pa.attributes().namedItem("value").nodeValue().split(";");
+               else if (pa.attributes().namedItem("default").nodeValue().contains(";"))
+                       defaults=pa.attributes().namedItem("default").nodeValue().split(";");
                QStringList maxv=pa.attributes().namedItem("max").nodeValue().split(";");
                QStringList minv=pa.attributes().namedItem("max").nodeValue().split(";");
                for (int i=0;i<maxv.size();i++){
@@ -97,10 +103,11 @@ void ParameterPlotter::setPointLists(const QDomElement& d,int startframe,int end
                                else
                                        stretchFactors[i]=1.0;
                        }
-                       
-                       plot->addPoint(startframe,defauls[i].toInt()*stretchFactors[i]);
+                       if (defaults[i].toDouble()>max_y)
+                               defaults[i]=max_y;
+                       plot->addPoint(startframe,defaults[i].toInt()*stretchFactors[i]);
                        //add keyframes here
-                       plot->addPoint(endframe,defauls[i].toInt()*stretchFactors[i]);
+                       plot->addPoint(endframe,defaults[i].toInt()*stretchFactors[i]);
                
                        plotobjects.append(plot);
                }
@@ -128,24 +135,22 @@ void ParameterPlotter::createParametersNew(){
                kDebug() << "ERROR size not equal";
        }
        QDomNodeList namenode = itemParameter.elementsByTagName("parameter");
-       for (int i=0;i<namenode.count() ;i++){
-               QList<KPlotPoint*> points=plotobjs[i]->points();
-               QDomNode pa=namenode.item(i);
-               
-               
-               
-               
-               
-               
-               QMap<int,QVariant> vals;
-               foreach (KPlotPoint *o,points){
-                       //vals[o->x()]=o->y();
-                       pa.attributes().namedItem("value").setNodeValue(QString::number(o->y()));
+       QString paramlist;
+       QTextStream txtstr(&paramlist);
+       QDomNode pa=namenode.item(0);
+       if (namenode.count()>0){
+               for (int i=0;i<plotobjs.count();i++){
+                       QList<KPlotPoint*> points=plotobjs[i]->points();
+                       foreach (KPlotPoint *o,points){
+                               txtstr << (int)o->y() ;
+                               break;//first no keyframes
+                       }
+                       if (i+1!=plotobjs.count())
+                               txtstr<< ";";
                }
-               QPair<QString,QMap<int,QVariant> > pair("contrast",vals);
-               //ret.append(pair);
        }
-       
+       pa.attributes().namedItem("value").setNodeValue(paramlist);
+       pa.attributes().namedItem("start").setNodeValue(paramlist);
        emit parameterChanged(itemParameter);
        
 }