]> git.sesse.net Git - kdenlive/blobdiff - src/beziercurve/beziersplineeditor.cpp
Const'ref
[kdenlive] / src / beziercurve / beziersplineeditor.cpp
index 626ffd9734d07811d366eedb5e501b942c2121f8..2ea438302bf49929eb2ed5bfd16dbc628a93edca 100644 (file)
  ***************************************************************************/
 
 #include "beziersplineeditor.h"
+#include "kdenlivesettings.h"
 
 #include <QPainter>
 #include <QMouseEvent>
 
 
 BezierSplineEditor::BezierSplineEditor(QWidget* parent) :
-        QWidget(parent),
-        m_mode(ModeNormal),
-        m_zoomLevel(0),
-        m_gridLines(3),
-        m_showAllHandles(true),
-        m_pixmapCache(NULL),
-        m_pixmapIsDirty(true),
-        m_currentPointIndex(-1)
+        QWidget(parent)
+        , m_mode(ModeNormal)
+        , m_zoomLevel(0)
+        , m_gridLines(3)
+        , m_showAllHandles(true)
+        , m_pixmapCache(NULL)
+        , m_pixmapIsDirty(true)
+        , m_currentPointIndex(-1)
+       , m_currentPointType(PTypeP)
+       , m_grabOffsetX(0)
+       , m_grabOffsetY(0)
 {
     setMouseTracking(true);
     setAutoFillBackground(false);
@@ -41,11 +45,10 @@ BezierSplineEditor::BezierSplineEditor(QWidget* parent) :
 
 BezierSplineEditor::~BezierSplineEditor()
 {
-    if (m_pixmapCache)
-        delete m_pixmapCache;
+    delete m_pixmapCache;
 }
 
-CubicBezierSpline BezierSplineEditor::spline()
+CubicBezierSpline BezierSplineEditor::spline() const
 {
     return m_spline;
 }
@@ -68,13 +71,14 @@ BPoint BezierSplineEditor::getCurrentPoint()
         return BPoint();
 }
 
-void BezierSplineEditor::updateCurrentPoint(const BPoint& p)
+void BezierSplineEditor::updateCurrentPoint(const BPoint& p, bool final)
 {
     if (m_currentPointIndex >= 0) {
         m_spline.setPoint(m_currentPointIndex, p);
         // during validation the point might have changed
         emit currentPoint(m_spline.getPoint(m_currentPointIndex));
-        emit modified();
+        if (final)
+            emit modified();
         update();
     }
 }
@@ -102,11 +106,13 @@ void BezierSplineEditor::slotZoomOut()
 
 void BezierSplineEditor::setShowAllHandles(bool show)
 {
-    m_showAllHandles = show;
-    update();
+    if (m_showAllHandles != show) {
+        m_showAllHandles = show;
+        update();
+    }
 }
 
-int BezierSplineEditor::gridLines()
+int BezierSplineEditor::gridLines() const
 {
     return m_gridLines;
 }
@@ -119,7 +125,7 @@ void BezierSplineEditor::setGridLines(int lines)
 
 void BezierSplineEditor::paintEvent(QPaintEvent* event)
 {
-    Q_UNUSED(event);
+    Q_UNUSED(event)
 
     QPainter p(this);
 
@@ -436,11 +442,13 @@ void BezierSplineEditor::mouseMoveEvent(QMouseEvent* event)
         }
 
         emit currentPoint(point);
+        if (KdenliveSettings::dragvalue_directupdate())
+            emit modified();
         update();
     }
 }
 
-void BezierSplineEditor::mouseDoubleClickEvent(QMouseEvent* event)
+void BezierSplineEditor::mouseDoubleClickEvent(QMouseEvent* /*event*/)
 {
     if (m_currentPointIndex >= 0) {
         BPoint p = m_spline.getPoint(m_currentPointIndex);
@@ -455,10 +463,10 @@ void BezierSplineEditor::leaveEvent(QEvent* event)
     QWidget::leaveEvent(event);
 }
 
-int BezierSplineEditor::nearestPointInRange(QPointF p, int wWidth, int wHeight, BezierSplineEditor::point_types* sel)
+int BezierSplineEditor::nearestPointInRange(const QPointF &p, int wWidth, int wHeight, BezierSplineEditor::point_types* sel)
 {
     double nearestDistanceSquared = 1000;
-    point_types selectedPoint;
+    point_types selectedPoint = PTypeP;
     int nearestIndex = -1;
     int i = 0;