gizmos: consolidated input param dragging code into reusable class

This commit is contained in:
itsmattkc
2020-05-07 14:41:50 +10:00
parent d02e9090b9
commit 3436740d23
11 changed files with 237 additions and 87 deletions
+19 -3
View File
@@ -139,12 +139,28 @@ bool PolygonGenerator::GizmoPress(const NodeValueDatabase &db, const QPointF &p,
return false;
}
void PolygonGenerator::GizmoMove(const QPointF &p, const QVector2D &scale)
void PolygonGenerator::GizmoMove(const QPointF &p, const QVector2D &scale, const rational& time)
{
QVector2D new_pos = QVector2D(p) / scale;
gizmo_drag_->set_standard_value(new_pos.x(), 0);
gizmo_drag_->set_standard_value(new_pos.y(), 1);
if (!gizmo_x_dragger_.IsStarted()) {
gizmo_x_dragger_.Start(gizmo_drag_, time, 0);
}
if (!gizmo_y_dragger_.IsStarted()) {
gizmo_y_dragger_.Start(gizmo_drag_, time, 1);
}
gizmo_x_dragger_.Drag(new_pos.x());
gizmo_y_dragger_.Drag(new_pos.y());
InvalidateVisible(gizmo_drag_, gizmo_drag_);
}
void PolygonGenerator::GizmoRelease(const QPointF &p)
{
gizmo_x_dragger_.End();
gizmo_y_dragger_.End();
}
QVector<QPointF> PolygonGenerator::GetGizmoCoordinates(const NodeValueDatabase &db, const QVector2D& scale) const
+6 -2
View File
@@ -22,6 +22,7 @@
#define POLYGONGENERATOR_H
#include "node/node.h"
#include "node/inputdragger.h"
OLIVE_NAMESPACE_ENTER
@@ -46,8 +47,8 @@ public:
virtual void DrawGizmos(const NodeValueDatabase& db, QPainter *p, const QVector2D &scale) const override;
virtual bool GizmoPress(const NodeValueDatabase& db, const QPointF &p, const QVector2D &scale) override;
virtual void GizmoMove(const QPointF &p, const QVector2D &scale) override;
//virtual void GizmoRelease(const QPointF &p) override;
virtual void GizmoMove(const QPointF &p, const QVector2D &scale, const rational &time) override;
virtual void GizmoRelease(const QPointF &p) override;
private:
QVector<QPointF> GetGizmoCoordinates(const NodeValueDatabase &db, const QVector2D &scale) const;
@@ -61,6 +62,9 @@ private:
NodeInput* gizmo_drag_;
QPointF gizmo_drag_start_;
NodeInputDragger gizmo_x_dragger_;
NodeInputDragger gizmo_y_dragger_;
};
OLIVE_NAMESPACE_EXIT