Audacity 3.2.0
Static Public Member Functions | List of all members
SyncLock Class Reference

#include <SyncLock.h>

Static Public Member Functions

static bool IsSyncLockSelected (const Track *pTrack)
 
static bool IsSelectedOrSyncLockSelected (const Track *pTrack)
 
static TrackIterRange< TrackGroup (Track *pTrack)
 
static TrackIterRange< const TrackGroup (const Track *pTrack)
 

Detailed Description

Definition at line 41 of file SyncLock.h.

Member Function Documentation

◆ Group() [1/2]

static TrackIterRange< const Track > SyncLock::Group ( const Track pTrack)
inlinestatic

Precondition
pTrack->GetOwner() != nullptr

Definition at line 53 of file SyncLock.h.

54 {
55 return Group(const_cast<Track*>(pTrack)).Filter<const Track>();
56 }
static TrackIterRange< Track > Group(Track *pTrack)
Definition: SyncLock.cpp:161
Abstract base class for an object holding data associated with points on a time axis.
Definition: Track.h:162

References TrackIterRange< TrackType >::Filter().

Here is the call graph for this function:

◆ Group() [2/2]

TrackIterRange< Track > SyncLock::Group ( Track pTrack)
static
Precondition
pTrack->GetOwner() != nullptr

Definition at line 161 of file SyncLock.cpp.

162{
163 auto pList = pTrack->GetOwner();
164 auto tracks = FindSyncLockGroup(const_cast<Track*>( pTrack ) );
165 return pList->Any().StartingWith(tracks.first).EndingAfter(tracks.second);
166}
std::shared_ptr< TrackList > GetOwner() const
Definition: Track.h:344
std::pair< Track *, Track * > FindSyncLockGroup(Track *pMember)
Definition: SyncLock.cpp:118

References anonymous_namespace{SyncLock.cpp}::FindSyncLockGroup(), and Track::GetOwner().

Referenced by ClipMoveState::Init(), IsSyncLockSelected(), NyquistEffect::Process(), EffectTruncSilence::ProcessIndependently(), NyquistEffect::ProcessOne(), StretchHandle::Release(), and SelectionState::SelectTrackLength().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsSelectedOrSyncLockSelected()

bool SyncLock::IsSelectedOrSyncLockSelected ( const Track pTrack)
static
Returns
pTrack is not null, and is selected, or is sync-lock selected

Definition at line 112 of file SyncLock.cpp.

113{
114 return pTrack && (pTrack->IsSelected() || IsSyncLockSelected(pTrack));
115}
static bool IsSyncLockSelected(const Track *pTrack)
Definition: SyncLock.cpp:82
bool IsSelected() const
Definition: Track.cpp:302

References Track::IsSelected(), and IsSyncLockSelected().

Referenced by Effect::CopyInputTracks(), anonymous_namespace{TrackMenus.cpp}::DoAlign(), EffectTruncSilence::DoRemoval(), LabelTrackView::Draw(), TrackArt::DrawBackgroundWithSelection(), anonymous_namespace{WaveformView.cpp}::DrawClipWaveform(), anonymous_namespace{EditMenus.cpp}::OnCut(), anonymous_namespace{EditMenus.cpp}::OnDelete(), anonymous_namespace{EditMenus.cpp}::OnPaste(), EffectChangeSpeed::Process(), EffectRepeat::Process(), and EffectReverse::Process().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsSyncLockSelected()

bool SyncLock::IsSyncLockSelected ( const Track pTrack)
static
Returns
pTrack is not null, sync lock is on, and some member of its group is selected

Definition at line 82 of file SyncLock.cpp.

83{
84 if (!pTrack)
85 return false;
86 auto pList = pTrack->GetOwner();
87 if (!pList)
88 return false;
89
90 auto p = pList->GetOwner();
91 if (!p || !SyncLockState::Get( *p ).IsSyncLocked())
92 return false;
93
94 auto shTrack = pTrack->SubstituteOriginalTrack();
95 if (!shTrack)
96 return false;
97
98 const auto pOrigTrack = shTrack.get();
99 auto trackRange = Group( pOrigTrack );
100
101 if (trackRange.size() <= 1) {
102 // Not in a sync-locked group.
103 // Return true iff selected and of a sync-lockable type.
104 return (IsSyncLockableNonSeparatorTrack( pOrigTrack ) ||
105 IsSeparatorTrack( pOrigTrack )) && pTrack->GetSelected();
106 }
107
108 // Return true iff any track in the group is selected.
109 return *(trackRange + &Track::IsSelected).begin();
110}
bool IsSyncLocked() const
Definition: SyncLock.cpp:43
static SyncLockState & Get(AudacityProject &project)
Definition: SyncLock.cpp:26
bool GetSelected() const
Selectedness is always the same for all channels of a group.
Definition: Track.cpp:82
std::shared_ptr< const Track > SubstituteOriginalTrack() const
Definition: Track.cpp:1139
auto begin(const Ptr< Type, BaseDeleter > &p)
Enables range-for.
Definition: PackedArray.h:150
bool IsSeparatorTrack(const Track *pTrack)
Definition: SyncLock.cpp:62
bool IsSyncLockableNonSeparatorTrack(const Track *pTrack)
Definition: SyncLock.cpp:57

References PackedArray::begin(), SyncLockState::Get(), Track::GetOwner(), Track::GetSelected(), Group(), Track::IsSelected(), anonymous_namespace{SyncLock.cpp}::IsSeparatorTrack(), anonymous_namespace{SyncLock.cpp}::IsSyncLockableNonSeparatorTrack(), SyncLockState::IsSyncLocked(), and Track::SubstituteOriginalTrack().

Referenced by ClipParameters::ClipParameters(), anonymous_namespace{LabelMenus.cpp}::EditByLabel(), anonymous_namespace{LabelMenus.cpp}::EditClipboardByLabel(), IsSelectedOrSyncLockSelected(), TrackInfo::MinimizeSyncLockDrawFunction(), anonymous_namespace{EditMenus.cpp}::OnPaste(), SelectActions::Handler::OnSelectSyncLockSel(), EffectChangeSpeed::Process(), Generator::Process(), EffectPaulstretch::Process(), EffectRepeat::Process(), EffectSBSMS::Process(), NyquistEffect::ProcessOne(), and PerTrackEffect::ProcessPass().

Here is the call graph for this function:
Here is the caller graph for this function:

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