From d5be88ada9452009aba022561ae1a57702b0e419 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Mon, 14 Feb 2011 09:03:15 +0000 Subject: [PATCH] * Fix wrong resizing in composite transition when using "Fit to width / height" * Proxy clip: do not fetch properties of the proxy (frame size, ...), use the one from original clip svn path=/trunk/kdenlive/; revision=5406 --- src/geometrywidget.cpp | 10 +++++----- src/renderer.cpp | 6 +++++- src/renderer.h | 2 ++ 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/geometrywidget.cpp b/src/geometrywidget.cpp index 78f6c723..6e385075 100644 --- a/src/geometrywidget.cpp +++ b/src/geometrywidget.cpp @@ -550,24 +550,24 @@ void GeometryWidget::setFrameSize(QPoint size) void GeometryWidget::slotAdjustToFrameSize() { if (m_frameSize == QPoint()) m_frameSize = QPoint(m_monitor->render->frameRenderWidth(), m_monitor->render->renderHeight()); - m_spinWidth->setValue(m_frameSize.x()); + m_spinWidth->setValue((int) (m_frameSize.x() / m_monitor->render->sar() + 0.5)); m_spinHeight->setValue(m_frameSize.y()); } void GeometryWidget::slotFitToWidth() { if (m_frameSize == QPoint()) m_frameSize = QPoint(m_monitor->render->frameRenderWidth(), m_monitor->render->renderHeight()); - double factor = (double) m_monitor->render->frameRenderWidth() / m_frameSize.x(); - m_spinHeight->setValue(m_frameSize.y() * factor); + double factor = (double) m_monitor->render->frameRenderWidth() / m_frameSize.x() * m_monitor->render->sar(); + m_spinHeight->setValue((int) (m_frameSize.y() * factor + 0.5)); m_spinWidth->setValue(m_monitor->render->frameRenderWidth()); } void GeometryWidget::slotFitToHeight() { if (m_frameSize == QPoint()) m_frameSize = QPoint(m_monitor->render->frameRenderWidth(), m_monitor->render->renderHeight()); - double factor = m_monitor->render->renderHeight() / m_frameSize.y(); + double factor = (double) m_monitor->render->renderHeight() / m_frameSize.y(); m_spinHeight->setValue(m_monitor->render->renderHeight()); - m_spinWidth->setValue(m_frameSize.x() * factor); + m_spinWidth->setValue((int) (m_frameSize.x() / m_monitor->render->sar() * factor + 0.5)); } #include "geometrywidget.moc" diff --git a/src/renderer.cpp b/src/renderer.cpp index 7c110a10..90f733b9 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -463,6 +463,10 @@ double Render::dar() const return m_mltProfile->dar(); } +double Render::sar() const +{ + return m_mltProfile->sar(); +} void Render::slotSplitView(bool doit) { @@ -630,7 +634,7 @@ void Render::getFileProperties(const QDomElement xml, const QString &clipId, int if (xml.hasAttribute("templatetext")) producer->set("templatetext", xml.attribute("templatetext").toUtf8().constData()); - if (!replaceProducer && xml.hasAttribute("file_hash")) { + if ((!replaceProducer && xml.hasAttribute("file_hash")) || xml.hasAttribute("proxy")) { // Clip already has all properties emit replyGetFileProperties(clipId, producer, QMap < QString, QString >(), QMap < QString, QString >(), replaceProducer, selectClip); return; diff --git a/src/renderer.h b/src/renderer.h index 14a2186e..e8716dd0 100644 --- a/src/renderer.h +++ b/src/renderer.h @@ -179,6 +179,8 @@ Q_OBJECT public: /** @brief Returns display aspect ratio. */ double dar() const; + /** @brief Returns sample aspect ratio. */ + double sar() const; /* * Playlist manipulation. -- 2.39.2