diff options
Diffstat (limited to 'src/curveeditor/curveeditormodel.h')
-rw-r--r-- | src/curveeditor/curveeditormodel.h | 59 |
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. |