5 #ifndef pqAnimationModel_h
6 #define pqAnimationModel_h
8 #include "pqWidgetsModule.h"
12 #include <QGraphicsScene>
15 #include <QStandardItemModel>
17 class pqAnimationTrack;
18 class pqAnimationKeyFrame;
25 :
public QGraphicsScene
29 Q_PROPERTY(ModeType mode READ mode WRITE setMode)
30 Q_PROPERTY(
int ticks READ ticks WRITE setTicks)
31 Q_PROPERTY(
double currentTime READ currentTime WRITE setCurrentTime)
32 Q_PROPERTY(
double startTime READ startTime WRITE setStartTime)
33 Q_PROPERTY(
double endTime READ endTime WRITE setEndTime)
34 Q_PROPERTY(
bool interactive READ interactive WRITE setInteractive)
50 pqAnimationModel(QGraphicsView* p =
nullptr);
51 ~pqAnimationModel()
override;
60 pqAnimationTrack* track(
int);
66 pqAnimationTrack* addTrack(pqAnimationTrack* trackToAdd =
nullptr);
70 void removeTrack(pqAnimationTrack* track);
75 ModeType
mode()
const;
83 double currentTime()
const;
91 double endTime()
const;
95 double zoomStartTime()
const;
99 double zoomEndTime()
const;
103 double zoomFactor()
const;
108 bool interactive()
const;
110 QAbstractItemModel* header();
111 QAbstractItemModel* enabledHeader();
113 void setRowHeight(
int);
114 int rowHeight()
const;
119 void positionZoom(
double zoomStartTime);
124 const QList<double>& customTicks()
const {
return this->CustomTicks; }
130 void setEnabledHeaderToolTip(
const QString& val);
131 const QString& enabledHeaderToolTip()
const {
return this->EnabledHeaderToolTip; }
138 void setMode(ModeType);
146 void setCurrentTime(
double);
150 void setStartTime(
double);
154 void setEndTime(
double);
158 void setInteractive(
bool);
163 void setTickMarks(
int num,
double* tick_marks);
168 void setTimePrecision(
int precision);
174 void setTimeNotation(
const QChar& notation);
179 void zoomTrack(pqAnimationTrack* track);
183 void trackSelected(pqAnimationTrack*);
185 void currentTimeSet(
double);
187 void keyFrameTimeChanged(pqAnimationTrack* track, pqAnimationKeyFrame* kf,
int end,
double time);
194 void trackNameChanged();
195 void enabledChanged();
198 QPolygonF timeBarPoly(
double time);
199 double positionFromTime(
double time);
200 double timeFromPosition(
double pos);
201 double timeFromTick(
int tick);
202 int tickFromTime(
double pos);
203 void drawForeground(QPainter* painter,
const QRectF& rect)
override;
210 QRectF drawTimeLabel(
double time,
const QRectF& row, QPainter* painter,
211 const QFontMetrics& metrics, QList<const QRectF*>
const& priorities);
213 void updateNewTime(QGraphicsSceneMouseEvent* mouseEvent);
214 bool hitTestCurrentTimePoly(
const QPointF& pos);
215 pqAnimationTrack* hitTestTracks(
const QPointF& pos);
216 pqAnimationKeyFrame* hitTestKeyFrame(pqAnimationTrack* t,
const QPointF& pos);
218 bool eventFilter(QObject* w, QEvent* e)
override;
220 void mouseDoubleClickEvent(QGraphicsSceneMouseEvent* mouseEvent)
override;
221 void mousePressEvent(QGraphicsSceneMouseEvent* mouseEvent)
override;
222 void mouseMoveEvent(QGraphicsSceneMouseEvent* mouseEvent)
override;
223 void mouseReleaseEvent(QGraphicsSceneMouseEvent* mouseEvent)
override;
224 void wheelEvent(QGraphicsSceneWheelEvent* wheelEvent)
override;
226 double timeToNormalizedTime(
double)
const;
227 double normalizedTimeToTime(
double)
const;
233 int currentTicks()
const;
236 ModeType Mode = Real;
238 double CurrentTime = 0;
239 double StartTime = 0;
241 double ZoomStartTime = 0;
242 double ZoomEndTime = 1;
243 double ZoomFactor = 1;
245 bool Interactive =
false;
247 QList<double> CustomTicks;
250 bool CurrentTimeGrabbed =
false;
251 double NewCurrentTime = 0;
252 double TimeLineGrabbedPosition = 0;
253 double OldZoomStartTime = 0;
254 bool TimeLineGrabbed =
false;
255 pqAnimationTrack* CurrentTrackGrabbed =
nullptr;
256 pqAnimationKeyFrame* CurrentKeyFrameGrabbed =
nullptr;
257 int CurrentKeyFrameEdge = 0;
258 QPair<double, double> InteractiveRange;
259 QList<double> SnapHints;
261 QList<pqAnimationTrack*> Tracks;
264 QStandardItemModel Header;
267 QStandardItemModel EnabledHeader;
271 QString EnabledHeaderToolTip =
"Enable/Disable Track";
273 int TimePrecision = 6;
274 QChar TimeNotation =
'g';
277 #endif // pqAnimationModel_h