Audacity 3.2.0
TimeTrack.h
Go to the documentation of this file.
1/**********************************************************************
2
3 Audacity: A Digital Audio Editor
4
5 TimeTrack.h
6
7 Dr William Bland
8
9**********************************************************************/
10
11#ifndef __AUDACITY_TIMETRACK__
12#define __AUDACITY_TIMETRACK__
13
14#include "Track.h"
15
16#include <algorithm>
17
18class wxRect;
19class BoundedEnvelope;
21
22class TIME_TRACK_API TimeTrack final
23 : public UniqueChannelTrack<>
24{
25
26 public:
27
28 static wxString GetDefaultName();
29
30 // Construct and also build all attachments
31 static TimeTrack *New(AudacityProject &project);
32
33 TimeTrack();
44 double *pT0 = nullptr, double *pT1 = nullptr);
45
46 virtual ~TimeTrack();
47
48 const TypeInfo &GetTypeInfo() const override;
49 static const TypeInfo &ClassTypeInfo();
50
51 bool SupportsBasicEditing() const override;
52
54 const override;
55
56 Track::Holder Cut(double t0, double t1) override;
57 Track::Holder Copy(double t0, double t1, bool forClipboard) const override;
58 void Clear(double t0, double t1) override;
59 void Paste(double t, const Track &src) override;
60 void
61 Silence(double t0, double t1, ProgressReporter reportProgress = {}) override;
62 void InsertSilence(double t, double len) override;
63
64 // TimeTrack parameters
65
66 void MoveTo(double /* t */) override {}
67
68 // XMLTagHandler callback methods for loading and saving
69
70 bool HandleXMLTag(const std::string_view& tag, const AttributesList& attrs) override;
71 void HandleXMLEndTag(const std::string_view& tag) override;
72 XMLTagHandler *HandleXMLChild(const std::string_view& tag) override;
73 void WriteXML(XMLWriter &xmlFile) const override;
74
75 // Lock and unlock the track: you must lock the track before
76 // doing a copy and paste between projects.
77
78 // bool Lock();
79 // bool Unlock();
80
81 // Access the track's speed envelope
82
83 BoundedEnvelope *GetEnvelope() { return mEnvelope.get(); }
84 const BoundedEnvelope *GetEnvelope() const { return mEnvelope.get(); }
85
86 // Get/Set the speed-warping range, as percentage of original speed (e.g. 90%-110%)
87
88 double GetRangeLower() const;
89 double GetRangeUpper() const;
90
91 void SetRangeLower(double lower);
92 void SetRangeUpper(double upper);
93
94 bool GetDisplayLog() const { return mDisplayLog; }
95 void SetDisplayLog(bool displayLog) { mDisplayLog = displayLog; }
96 bool GetInterpolateLog() const;
97 void SetInterpolateLog(bool interpolateLog);
98
99 void testMe();
100
101 size_t NIntervals() const override;
102
103private:
104 std::shared_ptr<WideChannelGroupInterval> DoGetInterval(size_t iInterval)
105 override;
106
107 void CleanState();
108
109 std::unique_ptr<BoundedEnvelope> mEnvelope;
111 bool mRescaleXMLValues; // needed for backward-compatibility with older project files
112
118 void Init(const TimeTrack &orig);
119
120 using Holder = std::unique_ptr<TimeTrack>;
121
122private:
123 Track::Holder Clone(bool backup) const override;
124};
125
127
128
129#endif // __AUDACITY_TIMETRACK__
130
const auto project
ENUMERATE_TRACK_TYPE(TimeTrack)
declares abstract base class Track, TrackList, and iterators over TrackList
std::function< void(double)> ProgressReporter
Definition: Track.h:48
std::vector< Attribute > AttributesList
Definition: XMLTagHandler.h:40
The top-level handle to an Audacity project. It serves as a source of events that other objects can b...
Definition: Project.h:90
virtual std::shared_ptr< Interval > DoGetInterval(size_t iInterval)=0
Retrieve an interval.
size_t NIntervals() const
Report the number of intervals.
Definition: Channel.h:537
A kind of Track used to 'warp time'.
Definition: TimeTrack.h:24
bool mRescaleXMLValues
Definition: TimeTrack.h:111
void SetDisplayLog(bool displayLog)
Definition: TimeTrack.h:95
std::unique_ptr< TimeTrack > Holder
Definition: TimeTrack.h:120
std::unique_ptr< BoundedEnvelope > mEnvelope
Definition: TimeTrack.h:109
const BoundedEnvelope * GetEnvelope() const
Definition: TimeTrack.h:84
BoundedEnvelope * GetEnvelope()
Definition: TimeTrack.h:83
bool GetDisplayLog() const
Definition: TimeTrack.h:94
bool mDisplayLog
Definition: TimeTrack.h:110
void MoveTo(double) override
Change start time to given time point.
Definition: TimeTrack.h:66
Abstract base class for an object holding data associated with points on a time axis.
Definition: Track.h:110
virtual Holder Clone(bool backup) const =0
virtual void Paste(double t, const Track &src)=0
Weak precondition allows overrides to replicate one channel into many.
virtual Holder PasteInto(AudacityProject &project, TrackList &list) const =0
virtual Holder Copy(double t0, double t1, bool forClipboard=true) const =0
Create new tracks and don't modify this track.
virtual const TypeInfo & GetTypeInfo() const =0
virtual void InsertSilence(double t, double len)=0
virtual bool SupportsBasicEditing() const
Whether this track type implements cut-copy-paste; by default, true.
Definition: Track.cpp:797
static const TypeInfo & ClassTypeInfo()
Definition: Track.cpp:790
virtual void Clear(double t0, double t1)=0
std::shared_ptr< Track > Holder
Definition: Track.h:202
void Init(const Track &orig)
Definition: Track.cpp:47
virtual void WriteXML(XMLWriter &xmlFile) const =0
virtual void Silence(double t0, double t1, ProgressReporter reportProgress={})=0
virtual Holder Cut(double t0, double t1)=0
Create tracks and modify this track.
A flat linked list of tracks supporting Add, Remove, Clear, and Contains, serialization of the list o...
Definition: Track.h:850
Generates overrides of channel-related functions.
Definition: Track.h:450
This class is an interface which should be implemented by classes which wish to be able to load and s...
Definition: XMLTagHandler.h:42
virtual XMLTagHandler * HandleXMLChild(const std::string_view &tag)=0
virtual void HandleXMLEndTag(const std::string_view &WXUNUSED(tag))
Definition: XMLTagHandler.h:59
virtual bool HandleXMLTag(const std::string_view &tag, const AttributesList &attrs)=0
Base class for XMLFileWriter and XMLStringWriter that provides the general functionality for creating...
Definition: XMLWriter.h:25
Empty argument passed to some public constructors.
Definition: Track.h:117