1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-08-02 08:59:28 +02:00

Simplify iterations over TrackPanelCells with range-for

This commit is contained in:
Paul Licameli 2017-06-16 22:57:08 -04:00
parent f94ac4dc43
commit ffbc4d5f90
6 changed files with 14 additions and 16 deletions

View File

@ -3166,6 +3166,14 @@ void TrackInfo::UpdatePrefs()
} while (textWidth >= allowableWidth); } while (textWidth >= allowableWidth);
} }
IteratorRange< TrackPanelCellIterator > TrackPanel::Cells()
{
return {
TrackPanelCellIterator( this, true ),
TrackPanelCellIterator( this, false )
};
}
TrackPanelCellIterator::TrackPanelCellIterator(TrackPanel *trackPanel, bool begin) TrackPanelCellIterator::TrackPanelCellIterator(TrackPanel *trackPanel, bool begin)
: mPanel(trackPanel) : mPanel(trackPanel)
, mIter(trackPanel->GetProject()) , mIter(trackPanel->GetProject())

View File

@ -44,6 +44,7 @@ class MixerBoard;
class AudacityProject; class AudacityProject;
class TrackPanelAx; class TrackPanelAx;
class TrackPanelCellIterator;
struct TrackPanelMouseEvent; struct TrackPanelMouseEvent;
class ViewInfo; class ViewInfo;
@ -259,6 +260,8 @@ class AUDACITY_DLL_API TrackPanel final : public OverlayPanel {
virtual ~ TrackPanel(); virtual ~ TrackPanel();
IteratorRange< TrackPanelCellIterator > Cells();
void UpdatePrefs(); void UpdatePrefs();
void ApplyUpdatedTheme(); void ApplyUpdatedTheme();

View File

@ -102,13 +102,10 @@ void EditCursorOverlay::Draw(OverlayPanel &panel, wxDC &dc)
if (auto tp = dynamic_cast<TrackPanel*>(&panel)) { if (auto tp = dynamic_cast<TrackPanel*>(&panel)) {
wxASSERT(mIsMaster); wxASSERT(mIsMaster);
AColor::CursorColor(&dc); AColor::CursorColor(&dc);
TrackPanelCellIterator begin(tp, true);
TrackPanelCellIterator end(tp, false);
// Draw cursor in all selected tracks // Draw cursor in all selected tracks
for (; begin != end; ++begin) for ( const auto &data : tp->Cells() )
{ {
TrackPanelCellIterator::value_type data(*begin);
Track *const pTrack = dynamic_cast<Track*>(data.first); Track *const pTrack = dynamic_cast<Track*>(data.first);
if (!pTrack) if (!pTrack)
continue; continue;

View File

@ -69,13 +69,9 @@ void PlayIndicatorOverlayBase::Draw(OverlayPanel &panel, wxDC &dc)
if(auto tp = dynamic_cast<TrackPanel*>(&panel)) { if(auto tp = dynamic_cast<TrackPanel*>(&panel)) {
wxASSERT(mIsMaster); wxASSERT(mIsMaster);
TrackPanelCellIterator begin(tp, true);
TrackPanelCellIterator end(tp, false);
// Draw indicator in all visible tracks // Draw indicator in all visible tracks
for (; begin != end; ++begin) for ( const auto &data : tp->Cells() )
{ {
TrackPanelCellIterator::value_type data(*begin);
Track *const pTrack = dynamic_cast<Track*>(data.first); Track *const pTrack = dynamic_cast<Track*>(data.first);
if (!pTrack) if (!pTrack)
continue; continue;

View File

@ -17,7 +17,6 @@ Paul Licameli split from TrackPanel.cpp
#include "../../Project.h" #include "../../Project.h"
#include "../../TrackPanel.h" #include "../../TrackPanel.h"
#include "../../TrackPanelCell.h" #include "../../TrackPanelCell.h"
#include "../../TrackPanelCellIterator.h"
#include "../../commands/CommandFunctors.h" #include "../../commands/CommandFunctors.h"
#include "../../prefs/TracksPrefs.h" #include "../../prefs/TracksPrefs.h"
#include "../../toolbars/ControlToolBar.h" #include "../../toolbars/ControlToolBar.h"

View File

@ -1826,10 +1826,6 @@ std::pair<wxRect, bool> QuickPlayIndicatorOverlay::DoGetRectangle(wxSize size)
void QuickPlayIndicatorOverlay::Draw(OverlayPanel &panel, wxDC &dc) void QuickPlayIndicatorOverlay::Draw(OverlayPanel &panel, wxDC &dc)
{ {
TrackPanel &tp = static_cast<TrackPanel&>(panel);
TrackPanelCellIterator begin(&tp, true);
TrackPanelCellIterator end(&tp, false);
mOldQPIndicatorPos = mNewQPIndicatorPos; mOldQPIndicatorPos = mNewQPIndicatorPos;
mOldQPIndicatorSnapped = mNewQPIndicatorSnapped; mOldQPIndicatorSnapped = mNewQPIndicatorSnapped;
mOldPreviewingScrub = mNewPreviewingScrub; mOldPreviewingScrub = mNewPreviewingScrub;
@ -1843,9 +1839,8 @@ void QuickPlayIndicatorOverlay::Draw(OverlayPanel &panel, wxDC &dc)
; ;
// Draw indicator in all visible tracks // Draw indicator in all visible tracks
for (; begin != end; ++begin) for ( const auto &data : static_cast<TrackPanel&>(panel).Cells() )
{ {
TrackPanelCellIterator::value_type data(*begin);
Track *const pTrack = dynamic_cast<Track*>(data.first); Track *const pTrack = dynamic_cast<Track*>(data.first);
if (!pTrack) if (!pTrack)
continue; continue;