summaryrefslogtreecommitdiffstats
path: root/src/curveeditor/curveeditormodel.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/curveeditor/curveeditormodel.h')
-rw-r--r--src/curveeditor/curveeditormodel.h59
1 files changed, 53 insertions, 6 deletions
diff --git a/src/curveeditor/curveeditormodel.h b/src/curveeditor/curveeditormodel.h
index 351aa73..5c0bb4e 100644
--- a/src/curveeditor/curveeditormodel.h
+++ b/src/curveeditor/curveeditormodel.h
@@ -25,7 +25,10 @@
#pragma once
-#include "curveeditorstyle.h"
+#include "detail/treeitem.h"
+#include "detail/treemodel.h"
+
+#include <QIcon>
#include <vector>
@@ -33,22 +36,66 @@ class QPointF;
namespace DesignTools {
+struct CurveEditorStyle;
+
class AnimationCurve;
-class CurveEditorModel
+class CurveEditorModel : public TreeModel
{
+ Q_OBJECT
+
+signals:
+ void curveChanged(PropertyTreeItem *item);
+
public:
virtual double minimumTime() const = 0;
virtual double maximumTime() const = 0;
- virtual double minimumValue() const = 0;
+ virtual CurveEditorStyle style() const = 0;
+
+public:
+ CurveEditorModel(QObject *parent = nullptr);
+
+ ~CurveEditorModel() override;
+
+ void setCurrentTime(uint frame);
+
+ void setCurve(unsigned int id, const AnimationCurve &curve);
+
+ void reset(const std::vector<TreeItem *> &items);
+};
+
+
+class NodeTreeItem : public TreeItem
+{
+public:
+ NodeTreeItem(const QString &name, const QIcon &icon);
+
+ NodeTreeItem *asNodeItem() override;
+
+ QIcon icon() const override;
+
+private:
+ QIcon m_icon;
+};
+
+
+class PropertyTreeItem : public TreeItem
+{
+public:
+ PropertyTreeItem(const QString &name, const AnimationCurve &curve);
+
+ PropertyTreeItem *asPropertyItem() override;
+
+ AnimationCurve curve() const;
- virtual double maximumValue() const = 0;
+ void setCurve(const AnimationCurve &curve);
- virtual AnimationCurve curve(int i) const = 0;
+private:
+ using TreeItem::addChild;
- virtual CurveEditorStyle style() const { return CurveEditorStyle(); }
+ AnimationCurve m_curve;
};
} // End namespace DesignTools.