Cockatrice 2025-11-30-Development-2.11.0-beta.38
A cross-platform virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
replay_timeline_widget.h
Go to the documentation of this file.
1
6
7#ifndef REPLAY_TIMELINE_WIDGET
8#define REPLAY_TIMELINE_WIDGET
9
11
12#include <QMouseEvent>
13#include <QWidget>
14
15class QPaintEvent;
16class QTimer;
17
18class ReplayTimelineWidget : public QWidget
19{
20 Q_OBJECT
21signals:
22 void processNextEvent(EventProcessingOptions options);
24 void rewound();
25
26private:
33
34 static constexpr int TIMER_INTERVAL_MS = 200;
35 static constexpr int BIN_LENGTH = 5000;
36
37 QTimer *replayTimer;
39 QList<int> replayTimeline;
40 QList<int> histogram;
43 int currentVisualTime; // time currently displayed by the timeline
44 int currentProcessedTime; // time that events are currently processed up to. Could differ from visual time due to
45 // rewind buffering
47
48 void skipToTime(int newTime, bool doRewindBuffering);
49 void handleBackwardsSkip(bool doRewindBuffering);
50 void processRewind();
51 void processNewEvents(PlaybackMode playbackMode);
52private slots:
53 void replayTimerTimeout();
54
55public:
56 static constexpr int SMALL_SKIP_MS = 1000;
57 static constexpr int BIG_SKIP_MS = 10000;
58 static constexpr qreal FAST_FORWARD_SCALE_FACTOR = 10.0;
59
60 explicit ReplayTimelineWidget(QWidget *parent = nullptr);
61 void setTimeline(const QList<int> &_replayTimeline);
62 [[nodiscard]] QSize sizeHint() const override;
63 [[nodiscard]] QSize minimumSizeHint() const override;
64 void setTimeScaleFactor(qreal _timeScaleFactor);
65 [[nodiscard]] int getCurrentEvent() const
66 {
67 return currentEvent;
68 }
69public slots:
70 void startReplay();
71 void stopReplay();
72 void skipByAmount(int amount); // use a negative amount to skip backwards
73
74protected:
75 void paintEvent(QPaintEvent *event) override;
76 void mousePressEvent(QMouseEvent *event) override;
77};
78
79#endif
QSize minimumSizeHint() const override
Definition replay_timeline_widget.cpp:134
QSize sizeHint() const override
Definition replay_timeline_widget.cpp:129
PlaybackMode
Definition replay_timeline_widget.h:28
@ NORMAL_PLAYBACK
Definition replay_timeline_widget.h:29
@ BACKWARD_SKIP
Definition replay_timeline_widget.h:31
@ FORWARD_SKIP
Definition replay_timeline_widget.h:30
QTimer * replayTimer
Definition replay_timeline_widget.h:37
int currentEvent
Definition replay_timeline_widget.h:46
static constexpr int TIMER_INTERVAL_MS
Definition replay_timeline_widget.h:34
QList< int > replayTimeline
Definition replay_timeline_widget.h:39
static constexpr int SMALL_SKIP_MS
Definition replay_timeline_widget.h:56
QTimer * rewindBufferingTimer
Definition replay_timeline_widget.h:38
int getCurrentEvent() const
Definition replay_timeline_widget.h:65
void setTimeScaleFactor(qreal _timeScaleFactor)
Definition replay_timeline_widget.cpp:175
void processNewEvents(PlaybackMode playbackMode)
Processes all unprocessed events up to the current time.
Definition replay_timeline_widget.cpp:150
int currentProcessedTime
Definition replay_timeline_widget.h:44
static constexpr int BIG_SKIP_MS
Definition replay_timeline_widget.h:57
QList< int > histogram
Definition replay_timeline_widget.h:40
int maxTime
Definition replay_timeline_widget.h:41
void handleBackwardsSkip(bool doRewindBuffering)
Definition replay_timeline_widget.cpp:104
void mousePressEvent(QMouseEvent *event) override
Definition replay_timeline_widget.cpp:67
int currentVisualTime
Definition replay_timeline_widget.h:43
void skipByAmount(int amount)
Definition replay_timeline_widget.cpp:191
static constexpr qreal FAST_FORWARD_SCALE_FACTOR
Definition replay_timeline_widget.h:58
void startReplay()
Definition replay_timeline_widget.cpp:181
void stopReplay()
Definition replay_timeline_widget.cpp:186
static constexpr int BIN_LENGTH
Definition replay_timeline_widget.h:35
void skipToTime(int newTime, bool doRewindBuffering)
Definition replay_timeline_widget.cpp:78
qreal timeScaleFactor
Definition replay_timeline_widget.h:42
void paintEvent(QPaintEvent *event) override
Definition replay_timeline_widget.cpp:48
int maxBinValue
Definition replay_timeline_widget.h:41
void setTimeline(const QList< int > &_replayTimeline)
Definition replay_timeline_widget.cpp:21
void processRewind()
Definition replay_timeline_widget.cpp:118
void replayTimerTimeout()
Definition replay_timeline_widget.cpp:139
ReplayTimelineWidget(QWidget *parent=nullptr)
Definition replay_timeline_widget.cpp:9
void processNextEvent(EventProcessingOptions options)
TODO: Document this.