]> git.sesse.net Git - kdenlive/commitdiff
Geometry widget:
authorTill Theato <root@ttill.de>
Fri, 3 Sep 2010 16:22:34 +0000 (16:22 +0000)
committerTill Theato <root@ttill.de>
Fri, 3 Sep 2010 16:22:34 +0000 (16:22 +0000)
- Sync timlines when activating syncing
- Larger keyframe items in timeline

svn path=/trunk/kdenlive/; revision=4825

src/geometrywidget.cpp
src/keyframehelper.cpp
src/keyframehelper.h

index d9d67d7ef062b7434cb1f22daa34aaeca1213f8f..e32e2f339c5f2e97414e5111e7e75276c93b20d9 100644 (file)
@@ -183,12 +183,10 @@ void GeometryWidget::setupParam(const QDomElement elem, int minframe, int maxfra
     m_inPoint = minframe;
     m_outPoint = maxframe;
 
-    char *tmp = (char *) qstrdup(elem.attribute("value").toUtf8().data());
     if (m_geometry)
-        m_geometry->parse(tmp, maxframe - minframe, m_monitor->render->renderWidth(), m_monitor->render->renderHeight());
+        m_geometry->parse(elem.attribute("value").toUtf8().data(), maxframe - minframe, m_monitor->render->renderWidth(), m_monitor->render->renderHeight());
     else
-        m_geometry = new Mlt::Geometry(tmp, maxframe - minframe, m_monitor->render->renderWidth(), m_monitor->render->renderHeight());
-    delete[] tmp;
+        m_geometry = new Mlt::Geometry(elem.attribute("value").toUtf8().data(), maxframe - minframe, m_monitor->render->renderWidth(), m_monitor->render->renderHeight());
 
     if (elem.attribute("fixed") == "1" || maxframe < minframe) {
         // Keyframes are disabled
@@ -514,6 +512,8 @@ void GeometryWidget::slotMoveBottom()
 void GeometryWidget::slotSetSynchronize(bool sync)
 {
     KdenliveSettings::setTransitionfollowcursor(sync);
+    if (sync)
+        emit seekToPos(m_clipPos + m_timePos->getValue());
 }
 
 void GeometryWidget::slotShowScene(bool show)
index 682e67a9e76a8e64b7e939658066e3ad6f848f0b..c5a6350263b20b345251e4437fac45a62a38a793 100644 (file)
@@ -34,7 +34,8 @@ KeyframeHelper::KeyframeHelper(QWidget *parent) :
         m_geom(NULL),
         m_position(0),
         m_scale(0),
-        m_movingKeyframe(false)
+        m_movingKeyframe(false),
+        m_lineHeight(9)
 {
     setFont(KGlobalSettings::toolBarFont());
 }
@@ -42,7 +43,7 @@ KeyframeHelper::KeyframeHelper(QWidget *parent) :
 // virtual
 void KeyframeHelper::mousePressEvent(QMouseEvent * event)
 {
-    if (m_geom != NULL && (event->y() < height() / 2) && event->button() == Qt::LeftButton) {
+    if (m_geom != NULL && (event->y() < m_lineHeight) && event->button() == Qt::LeftButton) {
         // check if we want to move a keyframe
         int mousePos = qMax((int)(event->x() / m_scale), 0);
         Mlt::GeometryItem item;
@@ -118,8 +119,10 @@ void KeyframeHelper::mouseReleaseEvent(QMouseEvent * event)
 // virtual
 void KeyframeHelper::wheelEvent(QWheelEvent * e)
 {
-    if (e->delta() < 0) m_position = m_position - 1;
-    else m_position = m_position + 1;
+    if (e->delta() < 0)
+        --m_position;
+    else
+        ++m_position;
     m_position = qMax(0, m_position);
     m_position = qMin(frameLength, m_position);
     emit positionChanged(m_position);
@@ -148,10 +151,14 @@ void KeyframeHelper::paintEvent(QPaintEvent *e)
             pos = item.frame();
             int scaledPos = pos * m_scale;
             // draw keyframes
-            p.drawLine(scaledPos, 6, scaledPos, 10);
+            p.drawLine(scaledPos, 10, scaledPos, 14);
             // draw pointer
-            QPolygon pa(3);
-            pa.setPoints(3, scaledPos - 4, 0, scaledPos + 4, 0, scaledPos, 4);
+            QPolygon pa(4);
+            pa.setPoints(4,
+                         scaledPos,     0,
+                         scaledPos - 4, 4,
+                         scaledPos,     8,
+                         scaledPos + 4, 4);
             p.drawPolygon(pa);
             //p.fillRect(QRect(scaledPos - 1, 0, 2, 15), QBrush(QColor(255, 20, 20)));
             pos++;
@@ -159,20 +166,24 @@ void KeyframeHelper::paintEvent(QPaintEvent *e)
         if (m_movingKeyframe) {
             int scaledPos = (int)(m_movingItem.frame() * m_scale);
             // draw keyframes
-            p.drawLine(scaledPos, 6, scaledPos, 10);
+            p.drawLine(scaledPos, 10, scaledPos, 14);
             // draw pointer
-            QPolygon pa(3);
-            pa.setPoints(3, scaledPos - 4, 0, scaledPos + 4, 0, scaledPos, 4);
+            QPolygon pa(5);
+            pa.setPoints(4,
+                         scaledPos,     0,
+                         scaledPos - 4, 4,
+                         scaledPos,     8,
+                         scaledPos + 4, 4);
             p.drawPolygon(pa);
         }
     }
     p.setPen(palette().dark().color());
-    p.drawLine(clipRect.x(), 5, clipRect.right(), 5);
+    p.drawLine(clipRect.x(), m_lineHeight, clipRect.right(), m_lineHeight);
 
     // draw pointer
     QPolygon pa(3);
     const int cursor = m_position * m_scale;
-    pa.setPoints(3, cursor - 5, 11, cursor + 5, 11, cursor, 6);
+    pa.setPoints(3, cursor - 5, 15, cursor + 5, 15, cursor, 10);
     p.setBrush(palette().dark().color());
     p.drawPolygon(pa);
 
index 6bcbd375fb6b690d41f0959aa1ac54152ca060a7..39ecb483da00c4e9384da66f683724c2df0963bb 100644 (file)
@@ -50,6 +50,7 @@ private:
     bool m_movingKeyframe;
     Mlt::GeometryItem m_movingItem;
     QPoint m_dragStart;
+    int m_lineHeight;
 
 public slots:
     void setKeyGeometry(Mlt::Geometry *geom, const int length);