LMMS
Loading...
Searching...
No Matches
Timeline.h
Go to the documentation of this file.
1/*
2 * Timeline.h
3 *
4 * Copyright (c) 2023 Dominic Clark
5 *
6 * This file is part of LMMS - https://lmms.io
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public
19 * License along with this program (see COPYING); if not, write to the
20 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 * Boston, MA 02110-1301 USA.
22 */
23
24#ifndef LMMS_TIMELINE_H
25#define LMMS_TIMELINE_H
26
27#include <QObject>
28
29#include "AudioEngine.h"
30#include "Engine.h"
31#include "JournallingObject.h"
32#include "TimePos.h"
33
34namespace lmms {
35
36class Timeline : public QObject, public JournallingObject
37{
38 Q_OBJECT
39
40public:
47
48 auto pos() const -> const TimePos& { return m_pos; }
49
50 auto ticks() const -> tick_t { return m_pos.getTicks(); }
51
54 void setTicks(tick_t ticks, bool jumped = true)
55 {
56 m_pos.setTicks(ticks);
57 m_frameOffset = 0;
59 if (jumped) { emit positionJumped(); }
60 emit positionChanged();
61 }
62
64 void incrementTicks(tick_t increment)
65 {
66 m_pos.setTicks(ticks() + increment);
68 emit positionChanged();
69 }
70
71 auto frameOffset() const -> float { return m_frameOffset; }
72 void setFrameOffset(const float frame) { m_frameOffset = frame; }
73
74 auto loopBegin() const -> TimePos { return m_loopBegin; }
75 auto loopEnd() const -> TimePos { return m_loopEnd; }
76 auto loopEnabled() const -> bool { return m_loopEnabled; }
77
78 void setLoopBegin(TimePos begin);
79 void setLoopEnd(TimePos end);
80 void setLoopPoints(TimePos begin, TimePos end);
81 void setLoopEnabled(bool enabled);
82
85
87 void setStopBehaviour(StopBehaviour behaviour);
88
90
91 auto nodeName() const -> QString override { return "timeline"; }
92
93signals:
94 void loopEnabledChanged(bool enabled);
98
99protected:
100 void saveSettings(QDomDocument& doc, QDomElement& element) override;
101 void loadSettings(const QDomElement& element) override;
102
103private:
106 bool m_loopEnabled = false;
108
109 float m_frameOffset = 0;
110
112
115};
116
117} // namespace lmms
118
119#endif // LMMS_TIMELINE_H
sample_rate_t outputSampleRate() const
Definition AudioEngine.h:200
static float framesPerTick()
Definition Engine.h:96
static AudioEngine * audioEngine()
Definition Engine.h:59
JournallingObject()
Definition JournallingObject.cpp:36
Definition TimePos.h:68
Definition Timeline.h:37
StopBehaviour m_stopBehaviour
Definition Timeline.h:113
TimePos m_pos
Definition Timeline.h:107
void saveSettings(QDomDocument &doc, QDomElement &element) override
Definition Timeline.cpp:64
auto loopEnd() const -> TimePos
Definition Timeline.h:75
StopBehaviour
Definition Timeline.h:42
@ BackToStart
Definition Timeline.h:44
@ BackToZero
Definition Timeline.h:43
@ KeepPosition
Definition Timeline.h:45
bool m_loopEnabled
Definition Timeline.h:106
double m_elapsedSeconds
Definition Timeline.h:111
float m_frameOffset
Definition Timeline.h:109
void positionChanged()
auto playStartPosition() const -> TimePos
Definition Timeline.h:83
TimePos m_loopBegin
Definition Timeline.h:104
auto loopBegin() const -> TimePos
Definition Timeline.h:74
auto stopBehaviour() const -> StopBehaviour
Definition Timeline.h:84
void setLoopEnabled(bool enabled)
Definition Timeline.cpp:48
auto pos() const -> const TimePos &
Definition Timeline.h:48
void setTicks(tick_t ticks, bool jumped=true)
Definition Timeline.h:54
void setFrameOffset(const float frame)
Definition Timeline.h:72
void setLoopPoints(TimePos begin, TimePos end)
Definition Timeline.cpp:43
auto ticks() const -> tick_t
Definition Timeline.h:50
void positionJumped()
void incrementTicks(tick_t increment)
Advances the current timeline position by a certain number of ticks, in addition to updating the elap...
Definition Timeline.h:64
TimePos m_playStartPosition
Definition Timeline.h:114
auto frameOffset() const -> float
Definition Timeline.h:71
void setLoopBegin(TimePos begin)
Definition Timeline.cpp:33
void loopEnabledChanged(bool enabled)
void stopBehaviourChanged(lmms::Timeline::StopBehaviour behaviour)
auto nodeName() const -> QString override
Definition Timeline.h:91
TimePos m_loopEnd
Definition Timeline.h:105
void setLoopEnd(TimePos end)
Definition Timeline.cpp:38
auto loopEnabled() const -> bool
Definition Timeline.h:76
void loadSettings(const QDomElement &element) override
Definition Timeline.cpp:72
auto getElapsedSeconds() const -> double
Definition Timeline.h:89
void setPlayStartPosition(TimePos position)
Definition Timeline.h:86
void setStopBehaviour(StopBehaviour behaviour)
Definition Timeline.cpp:56
Definition AudioAlsa.cpp:35
const int DefaultTicksPerBar
Definition TimePos.h:38
QPoint position(const QDropEvent *de)
position is a backwards-compatible adapter for QDropEvent::position and pos functions.
Definition DeprecationHelper.h:47
std::int32_t tick_t
Definition LmmsTypes.h:35
#define const
Definition zconf.h:137