]> git.sesse.net Git - kdenlive/commitdiff
Allow users to force aspect ratio for a clip in clip properties->advanced,
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 22 Oct 2008 23:34:57 +0000 (23:34 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 22 Oct 2008 23:34:57 +0000 (23:34 +0000)
Should help fixing issue:
http://www.kdenlive.org/mantis/view.php?id=245

svn path=/branches/KDE4/; revision=2539

src/clipproperties.cpp
src/docclipbase.cpp
src/initeffects.cpp
src/mainwindow.cpp
src/renderer.cpp

index 38338e0ebbb427ab519027ee049145aca0502fc0..616ce400f53c091c76c137dbc4e3138a9581a097 100644 (file)
@@ -49,7 +49,11 @@ ClipProperties::ClipProperties(DocClipBase *clip, Timecode tc, double fps, QWidg
     m_view.clip_description->setText(m_clip->description());
     QMap <QString, QString> props = m_clip->properties();
     // disable advanced properties until implemented
-    m_view.tabWidget->widget(ADVANCEDTAB)->setEnabled(false);
+    //m_view.tabWidget->widget(ADVANCEDTAB)->setEnabled(false);
+    if (props.contains("force_aspect_ratio") && props.value("force_aspect_ratio").toDouble() > 0) {
+        m_view.clip_force_ar->setChecked(true);
+        m_view.clip_ar->setValue(props.value("force_aspect_ratio").toDouble());
+    }
 
     if (props.contains("audiocodec"))
         m_view.clip_acodec->setText(props.value("audiocodec"));
@@ -215,21 +219,29 @@ QMap <QString, QString> ClipProperties::properties() {
     QMap <QString, QString> props;
     props["description"] = m_view.clip_description->text();
     CLIPTYPE t = m_clip->clipType();
+    QMap <QString, QString> old_props = m_clip->properties();
+    double aspect = m_view.clip_ar->value();
+    if (m_view.clip_force_ar->isChecked()) {
+        if (aspect != old_props.value("force_aspect_ratio").toDouble()) {
+            props["force_aspect_ratio"] = QString::number(aspect);
+            m_clipNeedsRefresh = true;
+        }
+    } else if (old_props.contains("force_aspect_ratio")) {
+        props["force_aspect_ratio"] = QString();
+        m_clipNeedsRefresh = true;
+    }
     if (t == COLOR) {
-        QMap <QString, QString> old_props = m_clip->properties();
         QString new_color = m_view.clip_color->color().name();
         if (new_color != QString("#" + old_props.value("colour").right(8).left(6))) {
             m_clipNeedsRefresh = true;
             props["colour"] = "0x" + new_color.right(6) + "ff";
         }
     } else if (t == IMAGE) {
-        QMap <QString, QString> old_props = m_clip->properties();
         if ((int) m_view.image_transparency->isChecked() != old_props.value("transparency").toInt()) {
             props["transparency"] = QString::number((int)m_view.image_transparency->isChecked());
             m_clipNeedsRefresh = true;
         }
     } else if (t == SLIDESHOW) {
-        QMap <QString, QString> old_props = m_clip->properties();
         QString value = QString::number((int) m_view.slide_loop->isChecked());
         if (old_props.value("loop") != value) props["loop"] = value;
         value = QString::number((int) m_view.slide_fade->isChecked());
index 9b607b9871b07a9e1819570f81bf3d24f8940d51..0cfc7646f2e313b77df5b3f0d6b9ab5041746fec 100644 (file)
@@ -462,6 +462,12 @@ void DocClipBase::setProperties(QMap <QString, QString> properties) {
             delete[] tmp;
         } else if (i.key() == "xmldata") {
             m_clipProducer->set("force_reload", 1);
+        } else if (i.key() == "force_aspect_ratio") {
+            double val = i.value().toDouble();
+            if (val == 0) {
+                m_properties.remove("force_aspect_ratio");
+                m_clipProducer->set("force_aspect_ratio", 0);
+            } else m_clipProducer->set("force_aspect_ratio", val);
         }
     }
     if (refreshProducer) slotRefreshProducer();
@@ -482,6 +488,8 @@ void DocClipBase::setProperty(const QString &key, const QString &value) {
         delete[] tmp;
     } else if (key == "xmldata") {
         m_clipProducer->set("force_reload", 1);
+    } else if (key == "force_aspect_ratio") {
+        m_clipProducer->set("force_aspect_ratio", value.toDouble());
     }
 }
 
index 4c5454dfb40d8c0d2e1d71e366646de28fc8b89d..8ec8551a87bf468f9e5ad22ce50d8dd2bc0e8cd5 100644 (file)
@@ -92,7 +92,7 @@ Mlt::Repository *initEffects::parseEffectFiles() {
     if (file.open(QIODevice::ReadOnly)) {
         QTextStream in(&file);
         while (!in.atEnd()) {
-           QString black = in.readLine().simplified();
+            QString black = in.readLine().simplified();
             if (!black.isEmpty() && !black.startsWith('#')) blackListed.append(black);
         }
     }
@@ -107,7 +107,7 @@ Mlt::Repository *initEffects::parseEffectFiles() {
     if (file2.open(QIODevice::ReadOnly)) {
         QTextStream in(&file2);
         while (!in.atEnd()) {
-           QString black = in.readLine().simplified();
+            QString black = in.readLine().simplified();
             if (!black.isEmpty() && !black.startsWith('#')) blackListedtransitions.append(black);
         }
     }
index 95dac6aa6091b209d1cbe5fb7f147214e471bb5e..7da118524ac41057b84456042708e9362aa0aeae 100644 (file)
@@ -899,8 +899,8 @@ void MainWindow::closeCurrentDocument() {
     }
     m_timelineArea->removeTab(m_timelineArea->indexOf(w));
     if (m_timelineArea->count() == 1) {
-       m_timelineArea->setTabBarHidden(true);
-       m_closeAction->setEnabled(false);
+        m_timelineArea->setTabBarHidden(true);
+        m_closeAction->setEnabled(false);
     }
     delete docToClose;
     delete w;
index 5e8b5ad429df1732bf056f7a0630570d171c8566..ac1c2e5d36ca9265ac1286aac412a7977d52e484 100644 (file)
@@ -498,6 +498,10 @@ void Render::getFileProperties(const QDomElement &xml, const QString &clipId) {
         else {*/
         char *tmp = decodedString(urlpath);
         producer = new Mlt::Producer(*m_mltProfile, tmp);
+        if (xml.hasAttribute("force_aspect_ratio")) {
+            double aspect = xml.attribute("force_aspect_ratio").toDouble();
+            if (aspect > 0) producer->set("force_aspect_ratio", aspect);
+        }
         delete[] tmp;
         //}
     }