]> git.sesse.net Git - kdenlive/commitdiff
Fix title clip duration has 1 frame offset: http://www.kdenlive.org/mantis/view.php...
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Tue, 25 Dec 2012 23:58:37 +0000 (00:58 +0100)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Tue, 25 Dec 2012 23:58:37 +0000 (00:58 +0100)
src/clipmanager.cpp
src/kdenlivedoc.cpp
src/mainwindow.cpp
src/titlewidget.cpp
src/titlewidget.h

index 8ae95fbf986ab879ca9a9e07e9cd77274ae592d1..38ae8e90ab374e93c148fab423e8715d1cb9222f 100644 (file)
@@ -691,7 +691,7 @@ void ClipManager::slotAddSlideshowClipFile(QMap <QString, QString> properties, c
 
 
 
-void ClipManager::slotAddTextClipFile(const QString &titleName, int out, const QString &xml, const QString &group, const QString &groupId)
+void ClipManager::slotAddTextClipFile(const QString &titleName, int duration, const QString &xml, const QString &group, const QString &groupId)
 {
     QDomDocument doc;
     QDomElement prod = doc.createElement("producer");
@@ -708,7 +708,7 @@ void ClipManager::slotAddTextClipFile(const QString &titleName, int out, const Q
     prod.setAttribute("type", (int) TEXT);
     prod.setAttribute("transparency", "1");
     prod.setAttribute("in", "0");
-    prod.setAttribute("out", out);
+    prod.setAttribute("out", duration - 1);
     AddClipCommand *command = new AddClipCommand(m_doc, doc.documentElement(), QString::number(id), true);
     m_doc->commandStack()->push(command);
 }
index 611d5a36346197744c10581d7d37942839de8534..e74fbfaf1883a0c1bf835a6972c598889b4a844e 100644 (file)
@@ -1274,7 +1274,7 @@ void KdenliveDoc::slotCreateTextClip(QString group, const QString &groupId, cons
     KStandardDirs::makeDir(titlesFolder);
     QPointer<TitleWidget> dia_ui = new TitleWidget(templatePath, m_timecode, titlesFolder, m_render, kapp->activeWindow());
     if (dia_ui->exec() == QDialog::Accepted) {
-        m_clipManager->slotAddTextClipFile(i18n("Title clip"), dia_ui->outPoint(), dia_ui->xml().toString(), group, groupId);
+        m_clipManager->slotAddTextClipFile(i18n("Title clip"), dia_ui->duration(), dia_ui->xml().toString(), group, groupId);
         setModified(true);
         emit selectLastAddedClip(QString::number(m_clipManager->lastClipId()));
     }
index 7c1aee5b35bcd8f5cdbf3f4450c3d4abb8cbe9a9..f422fadb21e6fc2521ce2be5880c8e0476f8a484 100644 (file)
@@ -3306,12 +3306,12 @@ void MainWindow::slotShowClipProperties(DocClipBase *clip)
         if (dia_ui->exec() == QDialog::Accepted) {
             QMap <QString, QString> newprops;
             newprops.insert("xmldata", dia_ui->xml().toString());
-            if (dia_ui->outPoint() != clip->duration().frames(m_activeDocument->fps())) {
+            if (dia_ui->duration() != clip->duration().frames(m_activeDocument->fps())) {
                 // duration changed, we need to update duration
-                newprops.insert("out", QString::number(dia_ui->outPoint()));
+                newprops.insert("out", QString::number(dia_ui->duration() - 1));
                 int currentLength = QString(clip->producerProperty("length")).toInt();
-                if (currentLength <= dia_ui->outPoint())
-                        newprops.insert("length", QString::number(dia_ui->outPoint() + 1));
+                if (currentLength <= dia_ui->duration())
+                        newprops.insert("length", QString::number(dia_ui->duration()));
                 else newprops.insert("length", clip->producerProperty("length"));
             }
             if (!path.isEmpty()) {
index 0fc6c42de9444d4b568b00587a00e9d8af6e82d9..bc2e0309a58d0654db84e4d3af425c8fc40db5f7 100644 (file)
@@ -1875,7 +1875,7 @@ void TitleWidget::saveTitle(KUrl url)
         delete fs;
     }
     if (!url.isEmpty()) {
-        if (m_titledocument.saveDocument(url, m_startViewport, m_endViewport, m_tc.getFrameCount(title_duration->text()), embed_image) == false)
+        if (m_titledocument.saveDocument(url, m_startViewport, m_endViewport, m_tc.getFrameCount(title_duration->text()) - 1, embed_image) == false)
             KMessageBox::error(this, i18n("Cannot write to file %1", url.path()));
     }
 }
@@ -1883,11 +1883,11 @@ void TitleWidget::saveTitle(KUrl url)
 QDomDocument TitleWidget::xml()
 {
     QDomDocument doc = m_titledocument.xml(m_startViewport, m_endViewport);
-    doc.documentElement().setAttribute("out", m_tc.getFrameCount(title_duration->text()));
+    doc.documentElement().setAttribute("out", m_tc.getFrameCount(title_duration->text()) - 1);
     return doc;
 }
 
-int TitleWidget::outPoint() const
+int TitleWidget::duration() const
 {
     return m_tc.getFrameCount(title_duration->text());
 }
@@ -1897,7 +1897,7 @@ void TitleWidget::setXml(QDomDocument doc)
     int out;
     m_count = m_titledocument.loadFromXml(doc, m_startViewport, m_endViewport, &out, m_projectTitlePath);
     adjustFrameSize();
-    title_duration->setText(m_tc.getTimecode(GenTime(out, m_render->fps())));
+    title_duration->setText(m_tc.getTimecode(GenTime(out + 1, m_render->fps())));
     /*if (doc.documentElement().hasAttribute("out")) {
     GenTime duration = GenTime(doc.documentElement().attribute("out").toDouble() / 1000.0);
     title_duration->setText(m_tc.getTimecode(duration));
index 478bad411482c0506ffb5fdba315dab123d99ba4..dfc537b60181505384302a22c3cb9e5ecb7ad653 100644 (file)
@@ -97,8 +97,8 @@ public:
      * get the file name. There is no check for the existence of the file. */
     static QString getTitleResourceFromName(const KUrl &projectUrl, const QString &titleName);
 
-    /** @brief Returns clip out position. */
-    int outPoint() const;
+    /** @brief Returns clip duration. */
+    int duration() const;
 
     /** @brief Retrieves a list of all available title templates. */
     static void refreshTitleTemplates();