]> git.sesse.net Git - kdenlive/commitdiff
Missing commit for title clip duration + fix background for title clips
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 16 Aug 2009 08:10:16 +0000 (08:10 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 16 Aug 2009 08:10:16 +0000 (08:10 +0000)
svn path=/trunk/kdenlive/; revision=3826

src/clipmanager.cpp
src/titledocument.cpp
src/titledocument.h
src/titlewidget.cpp
src/titlewidget.h

index 2437fdade9d3de9f298c32f16af7cc2983cb2685..3b6f6b4f17225f0e81b4268d66e97ca1b5a19ac0 100644 (file)
@@ -277,10 +277,9 @@ void ClipManager::slotAddClipList(const KUrl::List urls, const QString group, co
                     prod.setAttribute("type", (int) TEXT);
                     prod.setAttribute("resource", file.path());
                     prod.setAttribute("xmldata", txtdoc.toString());
-                    GenTime outPos(txtdoc.documentElement().attribute("out").toDouble() / 1000.0);
                     prod.setAttribute("transparency", 1);
                     prod.setAttribute("in", 0);
-                    int out = (int) outPos.frames(m_doc->fps());
+                    int out = txtdoc.documentElement().attribute("out").toInt();
                     if (out > 0) prod.setAttribute("out", out);
                 } else txtfile.close();
             }
index 9ff9e6d56e3ac1b8d15e84a5097ea19a10ca4956..a402a195d2fd3d6a8a69f2c6b73e605b18e1c1e5 100644 (file)
@@ -169,7 +169,7 @@ QColor TitleDocument::getBackgroundColor()
 }
 
 
-bool TitleDocument::saveDocument(const KUrl& url, QGraphicsPolygonItem* startv, QGraphicsPolygonItem* endv, double out)
+bool TitleDocument::saveDocument(const KUrl& url, QGraphicsPolygonItem* startv, QGraphicsPolygonItem* endv, int out)
 {
     if (!m_scene)
         return false;
@@ -192,27 +192,7 @@ bool TitleDocument::saveDocument(const KUrl& url, QGraphicsPolygonItem* startv,
     return KIO::NetAccess::upload(tmpfile.fileName(), url, 0);
 }
 
-int TitleDocument::loadDocument(const KUrl& url, QGraphicsPolygonItem* startv, QGraphicsPolygonItem* endv, double *out)
-{
-    QString tmpfile;
-    QDomDocument doc;
-    if (!m_scene)
-        return -1;
-
-    if (KIO::NetAccess::download(url, tmpfile, 0)) {
-        QFile file(tmpfile);
-        if (file.open(QIODevice::ReadOnly)) {
-            doc.setContent(&file, false);
-            file.close();
-        } else
-            return -1;
-        KIO::NetAccess::removeTempFile(tmpfile);
-        return loadFromXml(doc, startv, endv, out);
-    }
-    return -1;
-}
-
-int TitleDocument::loadFromXml(QDomDocument doc, QGraphicsPolygonItem* startv, QGraphicsPolygonItem* endv, double *out)
+int TitleDocument::loadFromXml(QDomDocument doc, QGraphicsPolygonItem* startv, QGraphicsPolygonItem* endv, int *out)
 {
     QDomNodeList titles = doc.elementsByTagName("kdenlivetitle");
     //TODO: Check if the opened title size is equal to project size, otherwise warn user and rescale
@@ -228,9 +208,9 @@ int TitleDocument::loadFromXml(QDomDocument doc, QGraphicsPolygonItem* startv, Q
     }
     //TODO: get default title duration instead of hardcoded one
     if (doc.documentElement().hasAttribute("out"))
-        *out = doc.documentElement().attribute("out").toDouble();
+        *out = doc.documentElement().attribute("out").toInt();
     else
-        *out = 5000;
+        *out = 125;
 
     int maxZValue = 0;
     if (titles.size()) {
index cc5d838e6fcb6213c405f750a18d1fcccc3b0b78..2d006475a620a71e46688bfd21ae7fe3c309460f 100644 (file)
@@ -30,10 +30,9 @@ class TitleDocument
 public:
     TitleDocument();
     void setScene(QGraphicsScene* scene, int width, int height);
-    bool saveDocument(const KUrl& url, QGraphicsPolygonItem* startv, QGraphicsPolygonItem* endv, double out);
-    int loadDocument(const KUrl& url, QGraphicsPolygonItem* startv, QGraphicsPolygonItem* endv, double *out);
+    bool saveDocument(const KUrl& url, QGraphicsPolygonItem* startv, QGraphicsPolygonItem* endv, int out);
     QDomDocument xml(QGraphicsPolygonItem* startv, QGraphicsPolygonItem* endv);
-    int loadFromXml(QDomDocument doc, QGraphicsPolygonItem* startv, QGraphicsPolygonItem* endv, double *out);
+    int loadFromXml(QDomDocument doc, QGraphicsPolygonItem* startv, QGraphicsPolygonItem* endv, int *out);
     /** \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 getBackgroundColor();
index 27ac97c0e4cc026523c0d23c230caee5542031a0..1edc631e6f3fc0538df431dd16e5b0e79eb1df83 100644 (file)
@@ -25,6 +25,7 @@
 #include <KFileDialog>
 #include <KStandardDirs>
 #include <KMessageBox>
+#include <kio/netaccess.h>
 
 #include <QDomDocument>
 #include <QGraphicsItem>
@@ -267,16 +268,11 @@ TitleWidget::TitleWidget(KUrl url, Timecode tc, QString projectTitlePath, Render
     //graphicsView->resize(400, 300);
     kDebug() << "// TITLE WIDGWT: " << graphicsView->viewport()->width() << "x" << graphicsView->viewport()->height();
     //toolBox->setItemEnabled(2, false);
-    if (!url.isEmpty()) {
-        double out;
-        m_count = m_titledocument.loadDocument(url, m_startViewport, m_endViewport, &out) + 1;
-        adjustFrameSize();
-        title_duration->setText(m_tc.getTimecode(GenTime(out)));
-        slotSelectTool();
-    } else {
+    if (!url.isEmpty()) loadTitle(url);
+    else {
         slotTextTool();
+        QTimer::singleShot(200, this, SLOT(slotAdjustZoom()));
     }
-    QTimer::singleShot(200, this, SLOT(slotAdjustZoom()));
 }
 
 TitleWidget::~TitleWidget()
@@ -1304,19 +1300,31 @@ void TitleWidget::setupViewports()
     }
 }
 
-void TitleWidget::loadTitle()
+void TitleWidget::loadTitle(KUrl url)
 {
-    KUrl url = KFileDialog::getOpenUrl(KUrl(m_projectTitlePath), "application/x-kdenlivetitle", this, i18n("Load Title"));
+    if (url.isEmpty()) url = KFileDialog::getOpenUrl(KUrl(m_projectTitlePath), "application/x-kdenlivetitle", this, i18n("Load Title"));
     if (!url.isEmpty()) {
         QList<QGraphicsItem *> items = m_scene->items();
         for (int i = 0; i < items.size(); i++) {
             if (items.at(i)->zValue() > -1000) delete items.at(i);
         }
         m_scene->clearTextSelection();
-        double out;
+        QDomDocument doc;
+        QString tmpfile;
+
+        if (KIO::NetAccess::download(url, tmpfile, 0)) {
+            QFile file(tmpfile);
+            if (file.open(QIODevice::ReadOnly)) {
+                doc.setContent(&file, false);
+                file.close();
+            } else return;
+            KIO::NetAccess::removeTempFile(tmpfile);
+        }
+        setXml(doc);
+        /*int out;
         m_count = m_titledocument.loadDocument(url, m_startViewport, m_endViewport, &out) + 1;
         adjustFrameSize();
-        title_duration->setText(m_tc.getTimecode(GenTime(out / 1000.0)));
+        title_duration->setText(m_tc.getTimecode(GenTime(out, m_render->fps())));
         insertingValues = true;
         startViewportX->setValue(m_startViewport->data(0).toInt());
         startViewportY->setValue(m_startViewport->data(1).toInt());
@@ -1324,9 +1332,10 @@ void TitleWidget::loadTitle()
         endViewportX->setValue(m_endViewport->data(0).toInt());
         endViewportY->setValue(m_endViewport->data(1).toInt());
         endViewportSize->setValue(m_endViewport->data(2).toInt());
+
         insertingValues = false;
         slotSelectTool();
-        slotAdjustZoom();
+        slotAdjustZoom();*/
     }
 }
 
@@ -1334,7 +1343,7 @@ void TitleWidget::saveTitle(KUrl url)
 {
     if (url.isEmpty()) url = KFileDialog::getSaveUrl(KUrl(m_projectTitlePath), "application/x-kdenlivetitle", this, i18n("Save Title"));
     if (!url.isEmpty()) {
-        if (m_titledocument.saveDocument(url, m_startViewport, m_endViewport, GenTime(m_tc.getFrameCount(title_duration->text()), m_render->fps()).ms()) == false)
+        if (m_titledocument.saveDocument(url, m_startViewport, m_endViewport, m_tc.getFrameCount(title_duration->text())) == false)
             KMessageBox::error(this, i18n("Cannot write to file %1", url.path()));
     }
 }
@@ -1342,7 +1351,7 @@ void TitleWidget::saveTitle(KUrl url)
 QDomDocument TitleWidget::xml()
 {
     QDomDocument doc = m_titledocument.xml(m_startViewport, m_endViewport);
-    doc.documentElement().setAttribute("out", GenTime(m_tc.getFrameCount(title_duration->text()), m_render->fps()).ms());
+    doc.documentElement().setAttribute("out", m_tc.getFrameCount(title_duration->text()));
     if (cropImage->isChecked()) {
         doc.documentElement().setAttribute("crop", 1);
     }
@@ -1356,10 +1365,10 @@ int TitleWidget::duration() const
 
 void TitleWidget::setXml(QDomDocument doc)
 {
-    double out;
+    int out;
     m_count = m_titledocument.loadFromXml(doc, m_startViewport, m_endViewport, &out);
     adjustFrameSize();
-    title_duration->setText(m_tc.getTimecode(GenTime(out / 1000.0)));
+    title_duration->setText(m_tc.getTimecode(GenTime(out, 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));
@@ -1388,6 +1397,14 @@ void TitleWidget::setXml(QDomDocument doc)
     kcolorbutton->setColor(background_color);
     horizontalSlider->blockSignals(false);
     kcolorbutton->blockSignals(false);
+
+    startViewportX->setValue(m_startViewport->data(0).toInt());
+    startViewportY->setValue(m_startViewport->data(1).toInt());
+    startViewportSize->setValue(m_startViewport->data(2).toInt());
+    endViewportX->setValue(m_endViewport->data(0).toInt());
+    endViewportY->setValue(m_endViewport->data(1).toInt());
+    endViewportSize->setValue(m_endViewport->data(2).toInt());
+
     QTimer::singleShot(200, this, SLOT(slotAdjustZoom()));
     slotSelectTool();
 }
index ac60a32556f231ed87e7b63d6d959b3ab54ba5df..288daa840b6cb3dcc574ab54d97af1e28fd0528f 100644 (file)
@@ -159,7 +159,7 @@ public slots:
     void itemHCenter();
     void itemVCenter();
     void saveTitle(KUrl url = KUrl());
-    void loadTitle();
+    void loadTitle(KUrl url = KUrl());
     QImage renderedPixmap();
 
 private slots: