implemented bulk of curve editor's functionality

While certainly not entirely complete yet, this implements most of the UI
functionality of the graph editor.
This commit is contained in:
itsmattkc
2019-12-28 18:26:37 +11:00
parent b65abe4881
commit 26cafa7936
21 changed files with 603 additions and 36 deletions
+14 -3
View File
@@ -7,11 +7,11 @@
#include "common/qtversionabstraction.h"
KeyframeViewItem::KeyframeViewItem(NodeKeyframePtr key, qreal vcenter, QGraphicsItem *parent) :
KeyframeViewItem::KeyframeViewItem(NodeKeyframePtr key, QGraphicsItem *parent) :
QGraphicsRectItem(parent),
key_(key),
scale_(1.0),
middle_(vcenter)
vert_center_(0)
{
keyframe_size_ = QFontMetricsWidth(qApp->fontMetrics(), "Oi");
setFlag(QGraphicsItem::ItemIsSelectable);
@@ -24,6 +24,12 @@ KeyframeViewItem::KeyframeViewItem(NodeKeyframePtr key, qreal vcenter, QGraphics
UpdatePos();
}
void KeyframeViewItem::SetOverrideY(qreal vertical_center)
{
vert_center_ = vertical_center;
UpdatePos();
}
void KeyframeViewItem::SetScale(double scale)
{
scale_ = scale;
@@ -35,6 +41,11 @@ NodeKeyframePtr KeyframeViewItem::key() const
return key_;
}
QPointF KeyframeViewItem::center_pos() const
{
return pos() + rect().center();
}
void KeyframeViewItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
painter->setPen(Qt::black);
@@ -71,7 +82,7 @@ void KeyframeViewItem::UpdatePos()
{
double x_center = key_->time().toDouble() * scale_;
setPos(x_center - keyframe_size_/2, middle_ - keyframe_size_/2);
setPos(x_center - keyframe_size_/2, vert_center_ - keyframe_size_/2);
}
void KeyframeViewItem::Redraw()