Audacity  2.2.0
TimeTrack Class Referencefinal

A kind of Track used to 'warp time'. More...

#include <TimeTrack.h>

Inheritance diagram for TimeTrack:
Track CommonTrackPanelCell XMLTagHandler TrackPanelCell

Public Member Functions

 TimeTrack (const std::shared_ptr< DirManager > &projDirManager, const ZoomInfo *zoomInfo)
 
 TimeTrack (const TimeTrack &orig, double *pT0=nullptr, double *pT1=nullptr)
 Copy-Constructor - create a NEW TimeTrack:: which is an independent copy of the original. More...
 
virtual ~TimeTrack ()
 
Holder Cut (double t0, double t1) override
 
Holder Copy (double t0, double t1, bool forClipboard) const override
 
void Clear (double t0, double t1) override
 
void Paste (double t, const Track *src) override
 
void Silence (double t0, double t1) override
 
void InsertSilence (double t, double len) override
 
std::vector< UIHandlePtrDetailedHitTest (const TrackPanelMouseState &state, const AudacityProject *pProject, int currentTool, bool bMultiTool) override
 
int GetKind () const override
 
double GetOffset () const override
 
void SetOffset (double) override
 
double GetStartTime () const override
 
double GetEndTime () const override
 
void Draw (TrackPanelDrawingContext &context, const wxRect &r, const ZoomInfo &zoomInfo) const
 
bool HandleXMLTag (const wxChar *tag, const wxChar **attrs) override
 
void HandleXMLEndTag (const wxChar *tag) override
 
XMLTagHandlerHandleXMLChild (const wxChar *tag) override
 
void WriteXML (XMLWriter &xmlFile) const override
 
EnvelopeGetEnvelope ()
 
const EnvelopeGetEnvelope () const
 
double ComputeWarpFactor (double t0, double t1) const
 Compute the integral warp factor between two non-warped time points. More...
 
double ComputeWarpedLength (double t0, double t1) const
 Compute the duration (in seconds at playback) of the specified region of the track. More...
 
double SolveWarpedLength (double t0, double length) const
 Compute how much unwarped time must have elapsed if length seconds of warped time has elapsed. More...
 
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 ()
 
- Public Member Functions inherited from Track
std::vector< UIHandlePtrHitTest (const TrackPanelMouseState &, const AudacityProject *pProject) finaloverride
 
std::shared_ptr< TrackPanelCellGetTrackControl ()
 
std::shared_ptr< TrackPanelCellGetVRulerControl ()
 
std::shared_ptr< TrackPanelCellGetResizer ()
 
virtual int GetMinimizedHeight () const
 
int GetActualHeight () const
 
int GetIndex () const
 
void SetIndex (int index)
 
int GetY () const
 
void SetY (int y)
 
int GetHeight () const
 
virtual void SetHeight (int h)
 
bool GetMinimized () const
 
void SetMinimized (bool isMinimized)
 
TrackGetLink () const
 
 Track (const std::shared_ptr< DirManager > &projDirManager)
 
 Track (const Track &orig)
 
virtual ~Track ()
 
void Init (const Track &orig)
 
virtual void Merge (const Track &orig)
 
wxString GetName () const
 
void SetName (const wxString &n)
 
wxString GetDefaultName () const
 
void SetDefaultName (const wxString &n)
 
bool GetSelected () const
 
bool GetLinked () const
 
virtual void SetSelected (bool s)
 
void SetLinked (bool l)
 
virtual int GetChannel () const
 
void Offset (double t)
 
void SetChannel (int c)
 
virtual void SetPan (float)
 
virtual void SetPanFromChannelType ()
 
const std::shared_ptr
< DirManager > & 
GetDirManager () const
 
virtual Holder Cut (double WXUNUSED(t0), double WXUNUSED(t1))=0
 
virtual Holder Copy (double WXUNUSED(t0), double WXUNUSED(t1), bool forClipboard=true) const =0
 
virtual void Clear (double WXUNUSED(t0), double WXUNUSED(t1))=0
 
virtual void Paste (double WXUNUSED(t), const Track *WXUNUSED(src))=0
 
virtual void SyncLockAdjust (double oldT1, double newT1)
 
virtual void Silence (double WXUNUSED(t0), double WXUNUSED(t1))=0
 
virtual void InsertSilence (double WXUNUSED(t), double WXUNUSED(len))=0
 
virtual bool GetErrorOpening ()
 
bool IsSyncLockSelected () const
 
- Public Member Functions inherited from CommonTrackPanelCell
 CommonTrackPanelCell ()
 
virtual ~CommonTrackPanelCell ()=0
 
- Public Member Functions inherited from TrackPanelCell
virtual ~TrackPanelCell ()=0
 
virtual unsigned DoContextMenu (const wxRect &rect, wxWindow *pParent, wxPoint *pPosition)
 
virtual unsigned CaptureKey (wxKeyEvent &event, ViewInfo &viewInfo, wxWindow *pParent)
 
virtual unsigned KeyDown (wxKeyEvent &event, ViewInfo &viewInfo, wxWindow *pParent)
 
virtual unsigned KeyUp (wxKeyEvent &event, ViewInfo &viewInfo, wxWindow *pParent)
 
virtual unsigned Char (wxKeyEvent &event, ViewInfo &viewInfo, wxWindow *pParent)
 
- Public Member Functions inherited from XMLTagHandler
 XMLTagHandler ()
 
virtual ~XMLTagHandler ()
 
virtual void HandleXMLEndTag (const wxChar *WXUNUSED(tag))
 
virtual void HandleXMLContent (const wxString &WXUNUSED(content))
 
bool ReadXMLTag (const char *tag, const char **attrs)
 
void ReadXMLEndTag (const char *tag)
 
void ReadXMLContent (const char *s, int len)
 
XMLTagHandlerReadXMLChild (const char *tag)
 

Protected Member Functions

std::shared_ptr< TrackControlsGetControls () override
 
std::shared_ptr
< TrackVRulerControls
GetVRulerControls () override
 
- Protected Member Functions inherited from Track
std::shared_ptr< TrackFindTrack () override
 
- Protected Member Functions inherited from CommonTrackPanelCell
unsigned HandleWheelRotation (const TrackPanelMouseEvent &event, AudacityProject *pProject) override
 

Private Types

using Holder = std::unique_ptr< TimeTrack >
 

Private Member Functions

void Init (const TimeTrack &orig)
 Copy the metadata from another track but not the points. More...
 
Track::Holder Duplicate () const override
 

Private Attributes

const ZoomInfo *const mZoomInfo
 
std::unique_ptr< EnvelopemEnvelope
 
std::unique_ptr< RulermRuler
 
double mRangeLower
 
double mRangeUpper
 
bool mDisplayLog
 
bool mRescaleXMLValues
 
std::weak_ptr< EnvelopeHandlemEnvelopeHandle
 

Friends

class TrackFactory
 

Additional Inherited Members

- Public Types inherited from Track
enum  { LeftChannel = 0, RightChannel = 1, MonoChannel = 2 }
 
enum  TrackKindEnum {
  None, Wave, Label, Time,
  All
}
 
enum  : unsigned { DefaultHeight = 150 }
 
using Holder = std::unique_ptr< Track >
 
- Static Public Member Functions inherited from Track
template<typename Subclass = Track>
static std::shared_ptr< Subclass > Pointer (Track *t)
 
template<typename Subclass = const Track>
static std::shared_ptr< Subclass > Pointer (const Track *t)
 
- Public Attributes inherited from Track
wxSize vrulerSize
 
- Protected Attributes inherited from Track
std::weak_ptr< TrackListmList
 
TrackNodePointer mNode {}
 
int mIndex
 
int mY
 
int mHeight
 
wxString mName
 
wxString mDefaultName
 
bool mSelected
 
bool mLinked
 
bool mMinimized
 
int mChannel
 
double mOffset
 
std::shared_ptr< DirManagermDirManager
 
std::shared_ptr< TrackControlsmpControls
 
std::shared_ptr
< TrackVRulerControls
mpVRulerContols
 
std::shared_ptr
< TrackPanelResizerCell
mpResizer
 
std::weak_ptr< SelectHandlemSelectHandle
 
std::weak_ptr< TimeShiftHandlemTimeShiftHandle
 

Detailed Description

A kind of Track used to 'warp time'.

Member Typedef Documentation

using TimeTrack::Holder = std::unique_ptr<TimeTrack>
private

Constructor & Destructor Documentation

TimeTrack::TimeTrack ( const std::shared_ptr< DirManager > &  projDirManager,
const ZoomInfo zoomInfo 
)
TimeTrack::TimeTrack ( const TimeTrack orig,
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:: and Ruler:: members in order to copy one to the other - unfortunately both lack a copy-constructor to encapsulate this.

Parameters
origThe original track to copy from
pT0if not null, then the start of the sub-range to copy
pT1if not null, then the end of the sub-range to copy

: Give Ruler:: a copy-constructor instead of this?

References Init(), mEnvelope, mRuler, mZoomInfo, and Ruler::TimeFormat.

TimeTrack::~TimeTrack ( )
virtual

Member Function Documentation

void TimeTrack::Clear ( double  t0,
double  t1 
)
override
double TimeTrack::ComputeWarpedLength ( double  t0,
double  t1 
) const

Compute the duration (in seconds at playback) of the specified region of the track.

Takes a region of the time track (specified by the unwarped time points in the project), and calculates how long it will actually take to play this region back, taking the time track's warping effects into account.

Parameters
t0unwarped time to start calculation from
t1unwarped time to stop calculation at
Returns
the warped duration in seconds

References GetEnvelope(), and Envelope::IntegralOfInverse().

Referenced by audacityAudioCallback(), AudioIO::StartStream(), and Ruler::Update().

double TimeTrack::ComputeWarpFactor ( double  t0,
double  t1 
) const

Compute the integral warp factor between two non-warped time points.

Calculate the relative length increase of the chosen segment from the original sound. So if this time track has a low value (i.e. makes the sound slower), the NEW warped sound will be longer than the original sound, so the return value of this function is larger.

Parameters
t0The starting time to calculate from
t1The ending time to calculate to
Returns
The relative length increase of the chosen segment from the original sound.

References Envelope::AverageOfInverse(), and GetEnvelope().

Referenced by Mixer::MixVariableRates().

Track::Holder TimeTrack::Copy ( double  t0,
double  t1,
bool  forClipboard 
) const
override

Referenced by Cut().

Track::Holder TimeTrack::Cut ( double  t0,
double  t1 
)
override

References Clear(), and Copy().

std::vector< UIHandlePtr > TimeTrack::DetailedHitTest ( const TrackPanelMouseState state,
const AudacityProject pProject,
int  currentTool,
bool  bMultiTool 
)
overridevirtual
Track::Holder TimeTrack::Duplicate ( ) const
overrideprivatevirtual

Implements Track.

std::shared_ptr< TrackControls > TimeTrack::GetControls ( )
overrideprotectedvirtual

Implements Track.

References Track::Pointer().

bool TimeTrack::GetDisplayLog ( ) const
inline
double TimeTrack::GetEndTime ( ) const
inlineoverridevirtual

Implements Track.

Envelope* TimeTrack::GetEnvelope ( )
inline
const Envelope* TimeTrack::GetEnvelope ( ) const
inline

References mEnvelope.

bool TimeTrack::GetInterpolateLog ( ) const
int TimeTrack::GetKind ( ) const
inlineoverridevirtual

Reimplemented from Track.

References Track::Time.

double TimeTrack::GetOffset ( ) const
inlineoverridevirtual

Implements Track.

double TimeTrack::GetRangeLower ( ) const
inline
double TimeTrack::GetRangeUpper ( ) const
inline
double TimeTrack::GetStartTime ( ) const
inlineoverridevirtual

Implements Track.

std::shared_ptr< TrackVRulerControls > TimeTrack::GetVRulerControls ( )
overrideprotectedvirtual

Implements Track.

References Track::Pointer().

XMLTagHandler * TimeTrack::HandleXMLChild ( const wxChar *  tag)
overridevirtual

Implements XMLTagHandler.

References mEnvelope.

void TimeTrack::HandleXMLEndTag ( const wxChar *  tag)
override
void TimeTrack::Init ( const TimeTrack orig)
private

Copy the metadata from another track but not the points.

Copies the Name, DefaultName, Range and Display data from the source track

Parameters
origthe TimeTrack to copy from

References Track::GetDefaultName(), GetDisplayLog(), Track::GetName(), GetRangeLower(), GetRangeUpper(), Track::Init(), Track::SetDefaultName(), SetDisplayLog(), Track::SetName(), SetRangeLower(), and SetRangeUpper().

Referenced by TimeTrack().

void TimeTrack::InsertSilence ( double  t,
double  len 
)
override

References mEnvelope.

void TimeTrack::Paste ( double  t,
const Track src 
)
override
void TimeTrack::SetDisplayLog ( bool  displayLog)
inline
void TimeTrack::SetInterpolateLog ( bool  interpolateLog)
void TimeTrack::SetOffset ( double  )
inlineoverridevirtual

Reimplemented from Track.

void TimeTrack::SetRangeLower ( double  lower)
inline
void TimeTrack::SetRangeUpper ( double  upper)
inline
void TimeTrack::Silence ( double  t0,
double  t1 
)
override
double TimeTrack::SolveWarpedLength ( double  t0,
double  length 
) const

Compute how much unwarped time must have elapsed if length seconds of warped time has elapsed.

Parameters
t0The unwarped time (seconds from project start) at which to start
lengthHow many seconds of warped time went past.
Returns
The end point (in seconds from project start) as unwarped time

References GetEnvelope(), and Envelope::SolveIntegralOfInverse().

Referenced by audacityAudioCallback().

void TimeTrack::WriteXML ( XMLWriter xmlFile) const
overridevirtual

Implements Track.

Friends And Related Function Documentation

friend class TrackFactory
friend

Member Data Documentation

bool TimeTrack::mDisplayLog
private
std::weak_ptr<EnvelopeHandle> TimeTrack::mEnvelopeHandle
private
double TimeTrack::mRangeLower
private
double TimeTrack::mRangeUpper
private
bool TimeTrack::mRescaleXMLValues
private

Referenced by HandleXMLEndTag(), and HandleXMLTag().

std::unique_ptr<Ruler> TimeTrack::mRuler
private

Referenced by TimeTrack().

const ZoomInfo* const TimeTrack::mZoomInfo
private

Referenced by TimeTrack().


The documentation for this class was generated from the following files: