***************************************************************************/
#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);
BezierSplineEditor::~BezierSplineEditor()
{
- if (m_pixmapCache)
- delete m_pixmapCache;
+ delete m_pixmapCache;
}
-CubicBezierSpline BezierSplineEditor::spline()
+CubicBezierSpline BezierSplineEditor::spline() const
{
return m_spline;
}
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();
}
}
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;
}
void BezierSplineEditor::paintEvent(QPaintEvent* event)
{
- Q_UNUSED(event);
+ Q_UNUSED(event)
QPainter p(this);
}
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);
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;