]> git.sesse.net Git - kdenlive/blobdiff - src/titledocument.cpp
Fix mem leak
[kdenlive] / src / titledocument.cpp
index 6ab7d19e9cf89ff83b494f868a30b40cf1ab1f10..66c8e196db0976bc4a9cd10053cdb9332636a50c 100644 (file)
@@ -182,6 +182,7 @@ QDomDocument TitleDocument::xml(QGraphicsRectItem* startv, QGraphicsRectItem* en
             if (!t->data(100).isNull()) {
                 QStringList effectParams = t->data(100).toStringList();
                 QString effectName = effectParams.takeFirst();
+               content.setAttribute("textwidth", t->sceneBoundingRect().width());
                 content.setAttribute(effectName, effectParams.join(";"));
             }
 
@@ -230,7 +231,8 @@ QDomDocument TitleDocument::xml(QGraphicsRectItem* startv, QGraphicsRectItem* en
             if (blur) {
                 effect.setAttribute("type", "blur");
                 effect.setAttribute("blurradius", blur->blurRadius());
-            } else {
+            } /*else {
+               //WARNING:those effects are anyways broken because they use QPixmaps which are not safe for MLT's threaded workflow
                 QGraphicsDropShadowEffect *shadow = static_cast <QGraphicsDropShadowEffect *>(eff);
                 if (shadow) {
                     effect.setAttribute("type", "shadow");
@@ -238,7 +240,7 @@ QDomDocument TitleDocument::xml(QGraphicsRectItem* startv, QGraphicsRectItem* en
                     effect.setAttribute("xoffset", shadow->xOffset());
                     effect.setAttribute("yoffset", shadow->yOffset());
                 }
-            }
+            }*/
             e.appendChild(effect);
         }
 #endif
@@ -268,7 +270,7 @@ QDomDocument TitleDocument::xml(QGraphicsRectItem* startv, QGraphicsRectItem* en
 
 /** \brief Get the background color (incl. alpha) from the document, if possibly
   * \returns The background color of the document, inclusive alpha. If none found, returns (0,0,0,0) */
-QColor TitleDocument::getBackgroundColor()
+QColor TitleDocument::getBackgroundColor() const
 {
     QColor color(0, 0, 0, 0);
     if (m_scene) {
@@ -284,13 +286,15 @@ QColor TitleDocument::getBackgroundColor()
 }
 
 
-bool TitleDocument::saveDocument(const KUrl& url, QGraphicsRectItem* startv, QGraphicsRectItem* endv, int out, bool embed)
+bool TitleDocument::saveDocument(const KUrl& url, QGraphicsRectItem* startv, QGraphicsRectItem* endv, int duration, bool embed)
 {
     if (!m_scene)
         return false;
 
     QDomDocument doc = xml(startv, endv, embed);
-    doc.documentElement().setAttribute("out", out);
+    doc.documentElement().setAttribute("duration", duration);
+    // keep some time for backwards compatibility (opening projects with older versions) - 26/12/12
+    doc.documentElement().setAttribute("out", duration);
     KTemporaryFile tmpfile;
     if (!tmpfile.open()) {
         kWarning() << "/////  CANNOT CREATE TMP FILE in: " << tmpfile.fileName();
@@ -308,7 +312,7 @@ bool TitleDocument::saveDocument(const KUrl& url, QGraphicsRectItem* startv, QGr
     return KIO::NetAccess::upload(tmpfile.fileName(), url, 0);
 }
 
-int TitleDocument::loadFromXml(QDomDocument doc, QGraphicsRectItem* startv, QGraphicsRectItem* endv, int *out, const QString& projectpath)
+int TitleDocument::loadFromXml(const QDomDocument& doc, QGraphicsRectItem* startv, QGraphicsRectItem* endv, int *duration, const QString& projectpath)
 {
     m_projectPath = projectpath;
     QDomNodeList titles = doc.elementsByTagName("kdenlivetitle");
@@ -334,10 +338,12 @@ int TitleDocument::loadFromXml(QDomDocument doc, QGraphicsRectItem* startv, QGra
         }
     }
     //TODO: get default title duration instead of hardcoded one
-    if (doc.documentElement().hasAttribute("out"))
-        *out = doc.documentElement().attribute("out").toInt();
+    if (doc.documentElement().hasAttribute("duration"))
+        *duration = doc.documentElement().attribute("duration").toInt();
+    else if (doc.documentElement().hasAttribute("out"))
+        *duration = doc.documentElement().attribute("out").toInt();
     else
-        *out = 125;
+        *duration = 125;
 
     int maxZValue = 0;
     if (titles.size()) {