LMMS
Loading...
Searching...
No Matches
PatternTrack.h
Go to the documentation of this file.
1/*
2 * PatternTrack.h - a track representing a pattern in the PatternStore
3 *
4 * Copyright (c) 2004-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
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
25#ifndef LMMS_PATTERN_TRACK_H
26#define LMMS_PATTERN_TRACK_H
27
28#include <QMap>
29
30#include "Track.h"
31
32namespace lmms
33{
34
35class TrackContainer;
36
37namespace gui
38{
39
41
42} // namespace gui
43
44
46class LMMS_EXPORT PatternTrack : public Track
47{
48 Q_OBJECT
49public:
51 ~PatternTrack() override;
52
53 bool play( const TimePos & _start, const f_cnt_t _frames,
54
55 const f_cnt_t _frame_base, int _clip_num = -1 ) override;
57 Clip* createClip(const TimePos & pos) override;
58
59 void saveTrackSpecificSettings(QDomDocument& doc, QDomElement& parent, bool presetMode) override;
60 void loadTrackSpecificSettings( const QDomElement & _this ) override;
61
62 static PatternTrack* findPatternTrack(int pattern_num);
63 static void swapPatternTracks(Track* track1, Track* track2);
64
66 {
67 return s_infoMap[this];
68 }
69
70 bool automationDisabled( Track * _track )
71 {
72 return( m_disabledTracks.contains( _track ) );
73 }
74 void disableAutomation( Track * _track )
75 {
76 m_disabledTracks.append( _track );
77 }
78 void enableAutomation( Track * _track )
79 {
80 m_disabledTracks.removeAll( _track );
81 }
82
83protected:
84 inline QString nodeName() const override
85 {
86 return "patterntrack";
87 }
88
89
90private:
91 QList<Track *> m_disabledTracks;
92
93 using infoMap = QMap<PatternTrack*, int>;
95
97} ;
98
99
100
101} // namespace lmms
102
103#endif // LMMS_PATTERN_TRACK_H
Definition Clip.h:50
int patternIndex()
Definition PatternTrack.h:65
bool play(const TimePos &_start, const f_cnt_t _frames, const f_cnt_t _frame_base, int _clip_num=-1) override
Definition PatternTrack.cpp:89
QList< Track * > m_disabledTracks
Definition PatternTrack.h:91
PatternTrack(TrackContainer *tc)
Definition PatternTrack.cpp:43
static PatternTrack * findPatternTrack(int pattern_num)
Definition PatternTrack.cpp:222
Clip * createClip(const TimePos &pos) override
Definition PatternTrack.cpp:147
QString nodeName() const override
Definition PatternTrack.h:84
void disableAutomation(Track *_track)
Definition PatternTrack.h:74
void enableAutomation(Track *_track)
Definition PatternTrack.h:78
void saveTrackSpecificSettings(QDomDocument &doc, QDomElement &parent, bool presetMode) override
Definition PatternTrack.cpp:157
static infoMap s_infoMap
Definition PatternTrack.h:94
QMap< PatternTrack *, int > infoMap
Definition PatternTrack.h:93
static void swapPatternTracks(Track *track1, Track *track2)
Definition PatternTrack.cpp:238
void loadTrackSpecificSettings(const QDomElement &_this) override
Definition PatternTrack.cpp:178
bool automationDisabled(Track *_track)
Definition PatternTrack.h:70
gui::TrackView * createView(gui::TrackContainerView *tcv) override
Definition PatternTrack.cpp:139
Definition TimePos.h:68
Definition TrackContainer.h:49
Track(Type type, TrackContainer *tc)
Create a new (empty) track object.
Definition Track.cpp:59
Definition PatternTrackView.h:42
Definition TrackContainerView.h:71
Definition TrackView.h:60
static uintptr_t parent
Definition pugl.h:1644
Definition AudioPortAudio.cpp:223
Definition AudioAlsa.cpp:35
std::uint64_t f_cnt_t
Definition LmmsTypes.h:43