]> git.sesse.net Git - kdenlive/blobdiff - src/clipitem.cpp
delete effect from effect stack
[kdenlive] / src / clipitem.cpp
index 14682fe3863eeda5fab639eade13d6ab818d4942..0bc7a5e9fca9f694e91a2f755e82fde0d218c1b5 100644 (file)
@@ -245,17 +245,33 @@ int ClipItem::endPos()
       }
     }
 
-    painter->setClipRect(option->exposedRect);
     QPen pen = painter->pen();
-    pen.setColor(Qt::red);
-    pen.setStyle(Qt::DashDotDotLine); //Qt::DotLine);
-
+    pen.setColor(Qt::white);
+    //pen.setStyle(Qt::DashDotDotLine); //Qt::DotLine);
     // Draw clip name
+    QString effects = effectNames().join(" / ");
+    if (!effects.isEmpty()) {
+      painter->setPen(pen);
+      QFont font = painter->font();
+      QFont smallFont = font;
+      smallFont.setPointSize(8);
+      painter->setFont(smallFont);
+      QRectF txtBounding = painter->boundingRect(br, Qt::AlignLeft | Qt::AlignTop, " " + effects + " ");
+      painter->fillRect(txtBounding, QBrush(QColor(0,0,0,150)));
+      painter->drawText(txtBounding, Qt::AlignCenter, effects);
+      pen.setColor(Qt::black);
+      painter->setPen(pen);
+      painter->setFont(font);
+    }
+
     QRectF txtBounding = painter->boundingRect(br, Qt::AlignCenter, " " + m_clipName + " ");
     painter->fillRect(txtBounding, QBrush(QColor(255,255,255,150)));
     painter->drawText(txtBounding, Qt::AlignCenter, m_clipName);
 
+    pen.setColor(Qt::red);
+    pen.setStyle(Qt::DashDotDotLine); //Qt::DotLine);
     if (isSelected()) painter->setPen(pen);
+    painter->setClipRect(option->exposedRect);
     painter->drawPath(roundRectPath);
     //painter->fillRect(QRect(br.x(), br.y(), roundingX, roundingY), QBrush(QColor(Qt::green)));
 
@@ -454,6 +470,68 @@ void ClipItem::setTrack(int track)
   m_track = track;
 }
 
+int ClipItem::effectsCount()
+{
+  return m_effectList.size();
+}
+
+QStringList ClipItem::effectNames()
+{
+  QStringList result;
+  for (int i = 0; i < m_effectList.size(); ++i) {
+       QDomNode namenode = m_effectList.at(i).elementsByTagName("name").item(0);
+       if (!namenode.isNull()) result.append(namenode.toElement().text());
+  }
+  kDebug()<<"///  EFFECT LIST FOR CLIP IS: "<<result;
+  return result;
+}
+
+QDomElement ClipItem::effectAt(int ix)
+{
+  return m_effectList.at(ix);
+}
+
+QMap <QString, QString> ClipItem::addEffect(QDomElement effect)
+{
+  QMap <QString, QString> effectParams;
+  effectParams["kdenlive_ix"] = QString::number(m_effectList.size());
+  m_effectList.append(effect);
+  effectParams["tag"] = effect.attribute("tag");
+  QDomNodeList params = effect.elementsByTagName("parameter");
+  for (int i = 0; i < params.count(); i++) {
+    QDomElement e = params.item(i).toElement();
+    if (!e.isNull())
+      effectParams[e.attribute("name")] = e.attribute("value");
+  }
+  update(boundingRect());
+  return effectParams;
+}
+
+QMap <QString, QString> ClipItem::getEffectArgs(QDomElement effect)
+{
+  QMap <QString, QString> effectParams;
+  effectParams["kdenlive_ix"] = effect.attribute("kdenlive_ix");
+  effectParams["tag"] = effect.attribute("tag");
+  QDomNodeList params = effect.elementsByTagName("parameter");
+  for (int i = 0; i < params.count(); i++) {
+    QDomElement e = params.item(i).toElement();
+    if (!e.isNull())
+      effectParams[e.attribute("name")] = e.attribute("value");
+  }
+  return effectParams;
+}
+
+void ClipItem::deleteEffect(QString tag)
+{
+  for (int i = 0; i < m_effectList.size(); ++i) {
+    if (m_effectList.at(i).attribute("kdenlive_ix") == tag) {
+      m_effectList.removeAt(i);
+      break;
+    }
+  }
+  update(boundingRect());
+}
+
 
 // virtual 
 /*