From 988360c0415646e3b436ce9d600d84fe7adfdb78 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Wed, 22 Oct 2008 23:34:57 +0000 Subject: [PATCH] Allow users to force aspect ratio for a clip in clip properties->advanced, Should help fixing issue: http://www.kdenlive.org/mantis/view.php?id=245 svn path=/branches/KDE4/; revision=2539 --- src/clipproperties.cpp | 20 ++++++++++++++++---- src/docclipbase.cpp | 8 ++++++++ src/initeffects.cpp | 4 ++-- src/mainwindow.cpp | 4 ++-- src/renderer.cpp | 4 ++++ 5 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/clipproperties.cpp b/src/clipproperties.cpp index 38338e0e..616ce400 100644 --- a/src/clipproperties.cpp +++ b/src/clipproperties.cpp @@ -49,7 +49,11 @@ ClipProperties::ClipProperties(DocClipBase *clip, Timecode tc, double fps, QWidg m_view.clip_description->setText(m_clip->description()); QMap 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 ClipProperties::properties() { QMap props; props["description"] = m_view.clip_description->text(); CLIPTYPE t = m_clip->clipType(); + QMap 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 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 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 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()); diff --git a/src/docclipbase.cpp b/src/docclipbase.cpp index 9b607b98..0cfc7646 100644 --- a/src/docclipbase.cpp +++ b/src/docclipbase.cpp @@ -462,6 +462,12 @@ void DocClipBase::setProperties(QMap 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()); } } diff --git a/src/initeffects.cpp b/src/initeffects.cpp index 4c5454df..8ec8551a 100644 --- a/src/initeffects.cpp +++ b/src/initeffects.cpp @@ -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); } } diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 95dac6aa..7da11852 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -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; diff --git a/src/renderer.cpp b/src/renderer.cpp index 5e8b5ad4..ac1c2e5d 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -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; //} } -- 2.39.5