]> git.sesse.net Git - kdenlive/blobdiff - src/keyframehelper.cpp
Check & update clip length in timeline when doing a "clip reload" from project tree...
[kdenlive] / src / keyframehelper.cpp
index c46928a7facf46ac6c351344f56c6b0fb4ac7926..a199bc7d8f163e70b878a6fd1cfad7fcddb6a6eb 100644 (file)
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA          *
  ***************************************************************************/
 
-#include <QMouseEvent>
-#include <QStylePainter>
+
+#include "keyframehelper.h"
+#include "definitions.h"
 
 #include <KDebug>
 #include <KGlobalSettings>
 
-#include "keyframehelper.h"
-#include "definitions.h"
+#include <QMouseEvent>
+#include <QStylePainter>
 
 
-KeyframeHelper::KeyframeHelper(QWidget *parent)
-        : QWidget(parent), m_geom(NULL), m_position(0), m_scale(0) {
+KeyframeHelper::KeyframeHelper(QWidget *parent) :
+        QWidget(parent),
+        m_geom(NULL),
+        m_position(0),
+        m_scale(0)
+{
     setFont(KGlobalSettings::toolBarFont());
 }
 
 // virtual
-void KeyframeHelper::mousePressEvent(QMouseEvent * event) {
+void KeyframeHelper::mousePressEvent(QMouseEvent * event)
+{
     m_position = event->x() / m_scale;
     emit positionChanged(m_position);
     update();
 }
 
 // virtual
-void KeyframeHelper::mouseMoveEvent(QMouseEvent * event) {
+void KeyframeHelper::mouseMoveEvent(QMouseEvent * event)
+{
     m_position = event->x() / m_scale;
     m_position = qMax(0, m_position);
     m_position = qMin(m_length, m_position);
@@ -50,7 +57,8 @@ void KeyframeHelper::mouseMoveEvent(QMouseEvent * event) {
 
 
 // virtual
-void KeyframeHelper::wheelEvent(QWheelEvent * e) {
+void KeyframeHelper::wheelEvent(QWheelEvent * e)
+{
     if (e->delta() < 0) m_position = m_position - 1;
     else m_position = m_position + 1;
     m_position = qMax(0, m_position);
@@ -65,45 +73,58 @@ void KeyframeHelper::wheelEvent(QWheelEvent * e) {
 }
 
 // virtual
-void KeyframeHelper::paintEvent(QPaintEvent *e) {
+void KeyframeHelper::paintEvent(QPaintEvent *e)
+{
     QStylePainter p(this);
     const QRectF clipRect = e->rect();
     p.setClipRect(clipRect);
     m_scale = (double) width() / m_length;
     if (m_geom != NULL) {
         int pos = 0;
-        p.setBrush(QColor(255, 20, 20));
+        p.setPen(QColor(255, 20, 20));
         Mlt::GeometryItem item;
         while (true) {
             if (m_geom->next_key(&item, pos) == 1) break;
             pos = item.frame();
             int scaledPos = pos * m_scale;
-            p.drawLine(scaledPos, clipRect.y() , scaledPos, clipRect.bottom());
+            // draw keyframes
+            p.drawLine(scaledPos, 6, scaledPos, 10);
+            // draw pointer
+            QPolygon pa(3);
+            pa.setPoints(3, scaledPos - 4, 0, scaledPos + 4, 0, scaledPos, 4);
+            p.setBrush(QColor(255, 20, 20));
+            p.drawPolygon(pa);
             //p.fillRect(QRect(scaledPos - 1, 0, 2, 15), QBrush(QColor(255, 20, 20)));
             pos++;
         }
     }
+    p.setPen(palette().dark().color());
+    p.drawLine(clipRect.x(), 5, clipRect.right(), 5);
+
     // draw pointer
     QPolygon pa(3);
     const int cursor = m_position * m_scale;
-    pa.setPoints(3, cursor - 5, 14, cursor + 5, 14, cursor/*+0*/, 9);
+    pa.setPoints(3, cursor - 5, 11, cursor + 5, 11, cursor, 6);
     p.setBrush(palette().dark().color());
     p.drawPolygon(pa);
 
 
 }
 
-const int KeyframeHelper::value() const {
+int KeyframeHelper::value() const
+{
     return m_position;
 }
 
-void KeyframeHelper::setValue(const int pos) {
-    if (pos == m_position) return;
+void KeyframeHelper::setValue(const int pos)
+{
+    if (pos == m_position || m_geom == NULL) return;
     m_position = pos;
     update();
 }
 
-void KeyframeHelper::setKeyGeometry(Mlt::Geometry *geom, const int length) {
+void KeyframeHelper::setKeyGeometry(Mlt::Geometry *geom, const int length)
+{
     m_geom = geom;
     m_length = length;
     update();