![]() |
Audacity 3.2.0
|
A kind of Track used to 'warp time'. More...
#include <TimeTrack.h>
Public Member Functions | |
| TimeTrack () | |
| TimeTrack (const TimeTrack &orig, ProtectedCreationArg &&, double *pT0=nullptr, double *pT1=nullptr) | |
| Copy-Constructor - create a NEW TimeTrack:: which is an independent copy of the original. More... | |
| virtual | ~TimeTrack () |
| const TypeInfo & | GetTypeInfo () const override |
| bool | SupportsBasicEditing () const override |
| Whether this track type implements cut-copy-paste; by default, true. More... | |
| Track::Holder | PasteInto (AudacityProject &project, TrackList &list) const override |
| Track::Holder | Cut (double t0, double t1) override |
| Create tracks and modify this track. More... | |
| Track::Holder | Copy (double t0, double t1, bool forClipboard) const override |
| Create new tracks and don't modify this track. More... | |
| void | Clear (double t0, double t1) override |
| void | Paste (double t, const Track &src) override |
| Weak precondition allows overrides to replicate one channel into many. More... | |
| void | Silence (double t0, double t1, ProgressReporter reportProgress={}) override |
| void | InsertSilence (double t, double len) override |
| void | MoveTo (double) override |
| Change start time to given time point. More... | |
| void | ShiftBy (double, double) override |
Shift all intervals that starts after t0 by delta seconds. More... | |
| bool | HandleXMLTag (const std::string_view &tag, const AttributesList &attrs) override |
| void | HandleXMLEndTag (const std::string_view &tag) override |
| XMLTagHandler * | HandleXMLChild (const std::string_view &tag) override |
| void | WriteXML (XMLWriter &xmlFile) const override |
| BoundedEnvelope * | GetEnvelope () |
| const BoundedEnvelope * | GetEnvelope () const |
| double | GetRangeLower () const |
| double | GetRangeUpper () const |
| void | SetRangeLower (double lower) |
| void | SetRangeUpper (double upper) |
| bool | GetDisplayLog () const |
| void | SetDisplayLog (bool displayLog) |
| bool | GetInterpolateLog () const |
| void | SetInterpolateLog (bool interpolateLog) |
| void | testMe () |
| size_t | NIntervals () const override |
| Report the number of intervals. More... | |
Public Member Functions inherited from UniqueChannelTrack< Base > | |
| size_t | NChannels () const override |
| Report the number of channels. More... | |
| std::shared_ptr< Channel > | DoGetChannel (size_t iChannel) override |
Public Member Functions inherited from Track | |
| TrackId | GetId () const |
| template<typename Subclass = Track> | |
| std::shared_ptr< Subclass > | SharedPointer () |
| template<typename Subclass = const Track> | |
| auto | SharedPointer () const -> std::enable_if_t< std::is_const_v< Subclass >, std::shared_ptr< Subclass > > |
| virtual const TypeInfo & | GetTypeInfo () const =0 |
| virtual const TypeNames & | GetTypeNames () const |
| virtual bool | SupportsBasicEditing () const |
| Whether this track type implements cut-copy-paste; by default, true. More... | |
| virtual Holder | PasteInto (AudacityProject &project, TrackList &list) const =0 |
| virtual bool | LinkConsistencyFix (bool doFix=true) |
| Check consistency of channel groups, and maybe fix it. More... | |
| bool | LinkConsistencyCheck () |
| Do the non-mutating part of consistency fix only and return status. More... | |
| bool | HasOwner () const |
| std::shared_ptr< TrackList > | GetOwner () const |
| LinkType | GetLinkType () const noexcept |
| Track () | |
| Track (const Track &orig, ProtectedCreationArg &&) | |
| Track & | operator= (const Track &orig)=delete |
| virtual | ~Track () |
| void | Init (const Track &orig) |
| virtual Holder | Duplicate (DuplicateOptions={}) const |
| public nonvirtual duplication function that invokes Clone() More... | |
| void | ReparentAllAttachments () |
| const wxString & | GetName () const |
| Name is always the same for all channels of a group. More... | |
| void | SetName (const wxString &n) |
| bool | GetSelected () const |
| Selectedness is always the same for all channels of a group. More... | |
| virtual void | SetSelected (bool s) |
| virtual Holder | Cut (double t0, double t1)=0 |
| Create tracks and modify this track. More... | |
| virtual Holder | Copy (double t0, double t1, bool forClipboard=true) const =0 |
| Create new tracks and don't modify this track. More... | |
| virtual void | Clear (double t0, double t1)=0 |
| virtual void | Paste (double t, const Track &src)=0 |
| Weak precondition allows overrides to replicate one channel into many. More... | |
| virtual void | SyncLockAdjust (double oldT1, double newT1) |
| virtual void | Silence (double t0, double t1, ProgressReporter reportProgress={})=0 |
| virtual void | InsertSilence (double t, double len)=0 |
| bool | SameKindAs (const Track &track) const |
| template<typename R = void, typename ... Functions> | |
| R | TypeSwitch (const Functions &...functions) |
| template<typename R = void, typename ... Functions> | |
| R | TypeSwitch (const Functions &...functions) const |
| virtual void | WriteXML (XMLWriter &xmlFile) const =0 |
| virtual std::optional< TranslatableString > | GetErrorOpening () const |
| void | Notify (bool allChannels, int code=-1) |
| bool | Any () const |
| bool | IsSelected () const |
| bool | IsLeader () const |
| void | AdjustPositions () |
| void | WriteCommonXMLAttributes (XMLWriter &xmlFile, bool includeNameAndSelected=true) const |
| bool | HandleCommonXMLAttribute (const std::string_view &attr, const XMLAttributeValueView &valueView) |
Public Member Functions inherited from XMLTagHandler | |
| XMLTagHandler () | |
| virtual | ~XMLTagHandler () |
| virtual bool | HandleXMLTag (const std::string_view &tag, const AttributesList &attrs)=0 |
| virtual void | HandleXMLEndTag (const std::string_view &WXUNUSED(tag)) |
| virtual void | HandleXMLContent (const std::string_view &WXUNUSED(content)) |
| virtual XMLTagHandler * | HandleXMLChild (const std::string_view &tag)=0 |
| void | ReadXMLEndTag (const char *tag) |
| void | ReadXMLContent (const char *s, int len) |
| XMLTagHandler * | ReadXMLChild (const char *tag) |
Public Member Functions inherited from ClientData::Site< Host, ClientData, ObjectCopyingPolicy, Pointer, ObjectLockingPolicy, RegistryLockingPolicy > | |
| ~Site () | |
| Site () | |
| Site (const Site &other) | |
| Site & | operator= (const Site &other) |
| Site (Site &&other) | |
| Site & | operator= (Site &&other) |
| size_t | size () const |
| How many attachment pointers are in the Site. More... | |
| template<typename Subclass = ClientData> | |
| Subclass & | Get (const RegisteredFactory &key) |
| Get reference to an attachment, creating on demand if not present, down-cast it to Subclass. More... | |
| template<typename Subclass = const ClientData> | |
| auto | Get (const RegisteredFactory &key) const -> std::enable_if_t< std::is_const< Subclass >::value, Subclass & > |
| Get reference to an attachment, creating on demand if not present, down-cast it to Subclass. More... | |
| template<typename Subclass = ClientData> | |
| Subclass * | Find (const RegisteredFactory &key) |
| Get a (bare) pointer to an attachment, or null, down-cast it to Subclass *; will not create on demand. More... | |
| template<typename Subclass = const ClientData> | |
| auto | Find (const RegisteredFactory &key) const -> std::enable_if_t< std::is_const< Subclass >::value, Subclass * > |
| Get a (bare) pointer to an attachment, or null, down-cast it to Subclass *; will not create on demand. More... | |
| template<typename ReplacementPointer > | |
| void | Assign (const RegisteredFactory &key, ReplacementPointer &&replacement) |
| Reassign Site's pointer to ClientData. More... | |
Public Member Functions inherited from ChannelGroup | |
| virtual | ~ChannelGroup () |
| double | GetStartTime () const |
| Get the minimum of Start() values of intervals, or 0 when none. More... | |
| double | GetEndTime () const |
| Get the maximum of End() values of intervals, or 0 when none. More... | |
| void | ShiftBy (double t) |
| Change start time by given duration. More... | |
| virtual void | ShiftBy (double t0, double delta)=0 |
Shift all intervals that starts after t0 by delta seconds. More... | |
| virtual void | MoveTo (double o)=0 |
| Change start time to given time point. More... | |
| template<typename ChannelType = Channel> | |
| std::shared_ptr< ChannelType > | GetChannel (size_t iChannel) |
| Retrieve a channel, cast to the given type. More... | |
| template<typename ChannelType = const Channel> | |
| auto | GetChannel (size_t iChannel) const -> std::enable_if_t< std::is_const_v< ChannelType >, std::shared_ptr< ChannelType > > |
| template<typename ChannelType = Channel> | |
| IteratorRange< ChannelIterator< ChannelType > > | Channels () |
| Get range of channels with mutative access. More... | |
| template<typename ChannelType = const Channel> | |
| auto | Channels () const -> std::enable_if_t< std::is_const_v< ChannelType >, IteratorRange< ChannelIterator< ChannelType > > > |
| Get range of channels with read-only access. More... | |
| std::shared_ptr< Channel > | NthChannel (size_t nChannel) |
| std::shared_ptr< const Channel > | NthChannel (size_t nChannel) const |
| template<typename IntervalType = Interval> | |
| std::shared_ptr< IntervalType > | GetInterval (size_t iInterval) |
| Retrieve an interval, cast to the given type. More... | |
| template<typename IntervalType = const Interval> | |
| auto | GetInterval (size_t iInterval) const -> std::enable_if_t< std::is_const_v< IntervalType >, std::shared_ptr< IntervalType > > |
| template<typename IntervalType = Interval> | |
| IteratorRange< IntervalIterator< IntervalType > > | Intervals () |
| Get range of intervals with mutative access. More... | |
| template<typename IntervalType = const Interval> | |
| auto | Intervals () const -> std::enable_if_t< std::is_const_v< IntervalType >, IteratorRange< IntervalIterator< IntervalType > > > |
| Get range of intervals with read-only access. More... | |
Public Member Functions inherited from Channel | |
| virtual | ~Channel () |
| ChannelGroup & | GetChannelGroup () |
| Channel object's lifetime is assumed to be nested in its Track's. More... | |
| const ChannelGroup & | GetChannelGroup () const |
| Channel object's lifetime is assumed to be nested in its Track's. More... | |
| size_t | GetChannelIndex () const |
| size_t | NIntervals () const |
| Report the number of intervals. More... | |
| template<typename IntervalType = Interval> | |
| std::shared_ptr< IntervalType > | GetInterval (size_t iInterval) |
| Retrieve an interval, cast to the given type. More... | |
| template<typename IntervalType = const Interval> | |
| auto | GetInterval (size_t iInterval) const -> std::enable_if_t< std::is_const_v< IntervalType >, std::shared_ptr< IntervalType > > |
| template<typename IntervalType = Interval> | |
| IteratorRange< IntervalIterator< IntervalType > > | Intervals () |
| Get range of intervals with mutative access. More... | |
| template<typename IntervalType = const Interval> | |
| auto | Intervals () const -> std::enable_if_t< std::is_const_v< IntervalType >, IteratorRange< IntervalIterator< IntervalType > > > |
| Get range of intervals with read-only access. More... | |
Static Public Member Functions | |
| static wxString | GetDefaultName () |
| static TimeTrack * | New (AudacityProject &project) |
| static const TypeInfo & | ClassTypeInfo () |
Static Public Member Functions inherited from Track | |
| template<typename Subclass = Track> | |
| static std::shared_ptr< Subclass > | SharedPointer (Track *pTrack) |
| template<typename Subclass = const Track> | |
| static std::shared_ptr< Subclass > | SharedPointer (const Track *pTrack) |
| static const TypeInfo & | ClassTypeInfo () |
| static void | CopyAttachments (Track &dst, const Track &src, bool deep) |
| Copy (deep) or just share (!deep) AttachedTrackObjects. More... | |
Static Public Member Functions inherited from ClientData::Site< Host, ClientData, ObjectCopyingPolicy, Pointer, ObjectLockingPolicy, RegistryLockingPolicy > | |
| static size_t | numFactories () |
| How many static factories have been registered with this specialization of Site. More... | |
Private Types | |
| using | Holder = std::unique_ptr< TimeTrack > |
Private Member Functions | |
| std::shared_ptr< WideChannelGroupInterval > | DoGetInterval (size_t iInterval) override |
| Retrieve an interval. More... | |
| void | CleanState () |
| void | Init (const TimeTrack &orig) |
| Copy the metadata from another track but not the points. More... | |
| Track::Holder | Clone (bool backup) const override |
Private Attributes | |
| std::unique_ptr< BoundedEnvelope > | mEnvelope |
| bool | mDisplayLog |
| bool | mRescaleXMLValues |
Additional Inherited Members | |
Public Types inherited from Track | |
| using | AttachedObjects = ::AttachedTrackObjects |
| Alias for my base type. More... | |
| using | Holder = std::shared_ptr< Track > |
Public Types inherited from ClientData::Site< Host, ClientData, ObjectCopyingPolicy, Pointer, ObjectLockingPolicy, RegistryLockingPolicy > | |
| using | DataType = ClientData |
| using | DataPointer = Pointer< ClientData > |
| using | DataFactory = std::function< DataPointer(Host &) > |
| Type of function from which RegisteredFactory is constructed; it builds attachments. More... | |
Public Types inherited from ChannelGroup | |
| enum class | LinkType : int { None = 0 , Group = 2 , Aligned } |
| For two tracks describes the type of the linkage. More... | |
| using | Attachments = ChannelGroupAttachments |
| using | Interval = WideChannelGroupInterval |
Public Types inherited from Channel | |
| using | Interval = ChannelInterval |
Protected Member Functions inherited from UniqueChannelTrack< Base > | |
| ChannelGroup & | DoGetChannelGroup () const override |
| Subclass must override. More... | |
Protected Member Functions inherited from Track | |
| void | SetLinkType (LinkType linkType, bool completeList=true) |
Protected Member Functions inherited from ClientData::Site< Host, ClientData, ObjectCopyingPolicy, Pointer, ObjectLockingPolicy, RegistryLockingPolicy > | |
| template<typename Function > | |
| void | ForEach (const Function &function) |
Invoke function on each ClientData object that has been created in this. More... | |
| template<typename Function > | |
| void | ForEach (const Function &function) const |
Invoke function on each ClientData object that has been created in this. More... | |
| template<typename Function > | |
| void | ForCorresponding (Site &other, const Function &function, bool create=true) |
| template<typename Function > | |
| ClientData * | FindIf (const Function &function) |
Return pointer to first attachment in this that is not null and satisfies a predicate, or nullptr. More... | |
| template<typename Function > | |
| const ClientData * | FindIf (const Function &function) const |
Return pointer to first attachment in this that is not null and satisfies a predicate, or nullptr. More... | |
| template<typename Function > | |
| void | EraseIf (const Function &function) |
| Erase attached objects satisfying a predicate. More... | |
| void | BuildAll () |
For each RegisteredFactory, if the corresponding attachment is absent in this, build and store it. More... | |
| virtual std::shared_ptr< Channel > | DoGetChannel (size_t iChannel)=0 |
| virtual std::shared_ptr< Interval > | DoGetInterval (size_t iInterval)=0 |
| Retrieve an interval. More... | |
| virtual ChannelGroup & | DoGetChannelGroup () const =0 |
| Subclass must override. More... | |
Protected Attributes inherited from Track | |
| std::weak_ptr< TrackList > | mList |
| TrackNodePointer | mNode {} |
| Holds iterator to self, so that TrackList::Find can be constant-time. More... | |
A kind of Track used to 'warp time'.
Definition at line 22 of file TimeTrack.h.
|
private |
Definition at line 121 of file TimeTrack.h.
| TimeTrack::TimeTrack | ( | ) |
Definition at line 47 of file TimeTrack.cpp.
References CleanState().
| TimeTrack::TimeTrack | ( | const TimeTrack & | orig, |
| ProtectedCreationArg && | a, | ||
| double * | pT0 = nullptr, |
||
| double * | pT1 = nullptr |
||
| ) |
Copy-Constructor - create a NEW TimeTrack:: which is an independent copy of the original.
Calls TimeTrack::Init() to copy the track metadata, then does a bunch of manipulations on the Envelope:: members in order to copy one to the other - unfortunately both lack a copy-constructor to encapsulate this.
| orig | The original track to copy from |
| pT0 | if not null, then the start of the sub-range to copy |
| pT1 | if not null, then the end of the sub-range to copy |
Definition at line 67 of file TimeTrack.cpp.
References GetRangeLower(), GetRangeUpper(), Init(), mEnvelope, SetRangeLower(), and SetRangeUpper().
|
virtual |
Definition at line 96 of file TimeTrack.cpp.
|
static |
Definition at line 132 of file TimeTrack.cpp.
References typeInfo().
|
private |
Definition at line 52 of file TimeTrack.cpp.
References GetDefaultName(), mDisplayLog, mEnvelope, Track::SetName(), SetRangeLower(), SetRangeUpper(), TIMETRACK_MAX, and TIMETRACK_MIN.
Referenced by TimeTrack().
|
overridevirtual |
May assume precondition: t0 <= t1
Implements Track.
Definition at line 191 of file TimeTrack.cpp.
References anonymous_namespace{TimeTrack.cpp}::GetRate(), and mEnvelope.
Referenced by Cut().
|
overrideprivatevirtual |
Subclass responsibility implements only a part of Duplicate(), copying the track data proper (not associated data such as for groups and views) including TrackId
| backup | whether the duplication is for backup purposes while opening a project, instead of other editing operations |
this Implements Track.
Definition at line 220 of file TimeTrack.cpp.
|
overridevirtual |
Create new tracks and don't modify this track.
Implements Track.
Definition at line 173 of file TimeTrack.cpp.
Referenced by Cut().
|
overridevirtual |
Create tracks and modify this track.
Implements Track.
Definition at line 166 of file TimeTrack.cpp.
References Clear(), and Copy().
|
overrideprivatevirtual |
Retrieve an interval.
!(iInterval < NIntervals()) || result Implements ChannelGroup.
Definition at line 322 of file TimeTrack.cpp.
|
static |
Definition at line 34 of file TimeTrack.cpp.
References _.
Referenced by CleanState().
|
inline |
Definition at line 95 of file TimeTrack.h.
Referenced by anonymous_namespace{TimeTrackView.cpp}::DrawHorzRulerAndCurve(), anonymous_namespace{TimeTrackView.cpp}::DrawTimeTrack(), anonymous_namespace{EnvelopeHandle.cpp}::GetTimeTrackData(), and Init().
|
inline |
Definition at line 84 of file TimeTrack.h.
Referenced by DEFINE_ATTACHED_VIRTUAL_OVERRIDE(), anonymous_namespace{TimeTrackView.cpp}::DrawHorzRulerAndCurve(), anonymous_namespace{TimeTrackView.cpp}::DrawTimeTrack(), AUPImportFileHandle::HandleEnvelope(), and testMe().
|
inline |
Definition at line 85 of file TimeTrack.h.
| bool TimeTrack::GetInterpolateLog | ( | ) | const |
Definition at line 227 of file TimeTrack.cpp.
References mEnvelope.
| double TimeTrack::GetRangeLower | ( | ) | const |
Definition at line 100 of file TimeTrack.cpp.
References mEnvelope.
Referenced by anonymous_namespace{TimeTrackView.cpp}::DrawHorzRulerAndCurve(), anonymous_namespace{TimeTrackView.cpp}::DrawTimeTrack(), anonymous_namespace{EnvelopeHandle.cpp}::GetTimeTrackData(), HandleXMLEndTag(), HandleXMLTag(), PasteInto(), and TimeTrack().
| double TimeTrack::GetRangeUpper | ( | ) | const |
Definition at line 105 of file TimeTrack.cpp.
References mEnvelope.
Referenced by anonymous_namespace{TimeTrackView.cpp}::DrawHorzRulerAndCurve(), anonymous_namespace{TimeTrackView.cpp}::DrawTimeTrack(), anonymous_namespace{EnvelopeHandle.cpp}::GetTimeTrackData(), HandleXMLEndTag(), HandleXMLTag(), PasteInto(), and TimeTrack().
|
overridevirtual |
Implements Track.
Definition at line 127 of file TimeTrack.cpp.
References typeInfo().
|
overridevirtual |
|
override |
Definition at line 280 of file TimeTrack.cpp.
References GetRangeLower(), GetRangeUpper(), mEnvelope, mRescaleXMLValues, TIMETRACK_MAX, and TIMETRACK_MIN.
|
overridevirtual |
Implements XMLTagHandler.
Definition at line 236 of file TimeTrack.cpp.
References GetRangeLower(), GetRangeUpper(), Track::HandleCommonXMLAttribute(), mEnvelope, mRescaleXMLValues, SetDisplayLog(), SetInterpolateLog(), SetRangeLower(), and SetRangeUpper().
|
private |
Copy the metadata from another track but not the points.
Copies the Name, DefaultName, Range and Display data from the source track
| orig | the TimeTrack to copy from |
Definition at line 89 of file TimeTrack.cpp.
References GetDisplayLog(), Track::GetName(), Track::Init(), SetDisplayLog(), and Track::SetName().
Referenced by TimeTrack().
|
overridevirtual |
May assume precondition: t0 <= t1
Implements Track.
Definition at line 215 of file TimeTrack.cpp.
References mEnvelope.
|
inlineoverridevirtual |
Change start time to given time point.
Implements ChannelGroup.
Definition at line 66 of file TimeTrack.h.
|
static |
Definition at line 39 of file TimeTrack.cpp.
References TrackList::Get(), project, and tracks.
|
overridevirtual |
Report the number of intervals.
Implements ChannelGroup.
Definition at line 316 of file TimeTrack.cpp.
|
overridevirtual |
Weak precondition allows overrides to replicate one channel into many.
SameKindAs(src) src.NChannels() == 1 || src.NChannels() == NChannels() Implements Track.
Definition at line 197 of file TimeTrack.cpp.
References anonymous_namespace{TimeTrack.cpp}::GetRate(), mEnvelope, and Track::TypeSwitch().
|
overridevirtual |
Find or create the destination track for a paste, maybe in a different project
| list | to which any newly created tracks are added; but left unchanged if an existing track is found in the project instead |
Implements Track.
Definition at line 142 of file TimeTrack.cpp.
References TrackList::Add(), details::begin(), TrackList::Get(), GetRangeLower(), GetRangeUpper(), and project.
|
inline |
Definition at line 96 of file TimeTrack.h.
Referenced by HandleXMLTag(), Init(), TimeTrackMenuTable::OnTimeTrackLin(), and TimeTrackMenuTable::OnTimeTrackLog().
| void TimeTrack::SetInterpolateLog | ( | bool | interpolateLog | ) |
Definition at line 232 of file TimeTrack.cpp.
References mEnvelope.
Referenced by HandleXMLTag().
| void TimeTrack::SetRangeLower | ( | double | lower | ) |
Definition at line 110 of file TimeTrack.cpp.
References mEnvelope.
Referenced by CleanState(), HandleXMLTag(), and TimeTrack().
| void TimeTrack::SetRangeUpper | ( | double | upper | ) |
Definition at line 115 of file TimeTrack.cpp.
References mEnvelope.
Referenced by CleanState(), HandleXMLTag(), and TimeTrack().
|
inlineoverridevirtual |
Shift all intervals that starts after t0 by delta seconds.
Implements ChannelGroup.
Definition at line 67 of file TimeTrack.h.
|
overridevirtual |
|
overridevirtual |
Whether this track type implements cut-copy-paste; by default, true.
Reimplemented from Track.
Definition at line 137 of file TimeTrack.cpp.
| void TimeTrack::testMe | ( | ) |
Definition at line 327 of file TimeTrack.cpp.
References Envelope::Flatten(), GetEnvelope(), Envelope::InsertOrReplace(), Envelope::Integral(), and Envelope::IntegralOfInverse().
|
overridevirtual |
Implements Track.
Definition at line 298 of file TimeTrack.cpp.
References Track::WriteCommonXMLAttributes(), and wxT().
|
private |
Definition at line 111 of file TimeTrack.h.
Referenced by CleanState().
|
private |
Definition at line 110 of file TimeTrack.h.
Referenced by CleanState(), Clear(), GetInterpolateLog(), GetRangeLower(), GetRangeUpper(), HandleXMLChild(), HandleXMLEndTag(), HandleXMLTag(), InsertSilence(), Paste(), SetInterpolateLog(), SetRangeLower(), SetRangeUpper(), and TimeTrack().
|
private |
Definition at line 112 of file TimeTrack.h.
Referenced by HandleXMLEndTag(), and HandleXMLTag().