Audacity 3.2.0
Public Member Functions | Private Attributes | List of all members
SpectrumView::SpectralDataSaver Class Reference
Inheritance diagram for SpectrumView::SpectralDataSaver:
[legend]
Collaboration diagram for SpectrumView::SpectralDataSaver:
[legend]

Public Member Functions

 SpectralDataSaver (SpectrumView &view)
 
void Init (AudacityProject &project, bool clearAll) override
 
 ~SpectralDataSaver () override
 
- Public Member Functions inherited from BrushHandle::StateSaver
virtual ~StateSaver ()
 
virtual void Init (AudacityProject &project, bool clearAll)=0
 
void Commit ()
 

Private Attributes

SpectrumViewmView
 
AudacityProjectmpProject = nullptr
 

Additional Inherited Members

- Protected Attributes inherited from BrushHandle::StateSaver
bool mCommitted = false
 

Detailed Description

Definition at line 70 of file SpectrumView.cpp.

Constructor & Destructor Documentation

◆ SpectralDataSaver()

SpectrumView::SpectralDataSaver::SpectralDataSaver ( SpectrumView view)
inlineexplicit

Definition at line 72 of file SpectrumView.cpp.

73 : mView{ view }
74 {}

◆ ~SpectralDataSaver()

SpectrumView::SpectralDataSaver::~SpectralDataSaver ( )
inlineoverride

Definition at line 100 of file SpectrumView.cpp.

101 {
102 if (mpProject)
103 ForAll( *mpProject, [this](SpectrumView &view){
104 if (mCommitted) {
105 // Discard all backups
106 view.mpBackupSpectralData = {};
107 }
108 else {
109 // Restore all
110 if (auto &pBackupData = view.mpBackupSpectralData) {
111 view.mpSpectralData->CopyFrom(*pBackupData);
112 pBackupData.reset();
113 }
114 }
115 });
116 }
static void ForAll(AudacityProject &project, std::function< void(SpectrumView &view)> fn)
std::shared_ptr< SpectralData > mpBackupSpectralData
Definition: SpectrumView.h:148

References SpectrumView::ForAll(), BrushHandle::StateSaver::mCommitted, SpectrumView::mpBackupSpectralData, and mpProject.

Here is the call graph for this function:

Member Function Documentation

◆ Init()

void SpectrumView::SpectralDataSaver::Init ( AudacityProject project,
bool  clearAll 
)
inlineoverridevirtual

Implements BrushHandle::StateSaver.

Definition at line 76 of file SpectrumView.cpp.

77 {
79 ForAll( project, [this, clearAll](SpectrumView &view){
80 auto pOldData = view.mpSpectralData;
81 if (clearAll) {
82 auto &pNewData = view.mpBackupSpectralData =
83 std::make_shared<SpectralData>(pOldData->GetSR());
84 pNewData->CopyFrom(*pOldData);
85 pOldData->clearAllData();
86 }
87 else {
88 // Back up one view only
89 if (&mView == &view) {
90 auto &pNewData = view.mpBackupSpectralData =
91 std::make_shared<SpectralData>(pOldData->GetSR());
92 pNewData->CopyFrom( *pOldData );
93 }
94 else
95 view.mpBackupSpectralData = {};
96 }
97 });
98 }
const auto project
std::shared_ptr< SpectralData > mpSpectralData
Definition: SpectrumView.h:148

References SpectrumView::ForAll(), SpectrumView::mpBackupSpectralData, mpProject, SpectrumView::mpSpectralData, mView, and project.

Here is the call graph for this function:

Member Data Documentation

◆ mpProject

AudacityProject* SpectrumView::SpectralDataSaver::mpProject = nullptr
private

Definition at line 120 of file SpectrumView.cpp.

Referenced by Init(), and ~SpectralDataSaver().

◆ mView

SpectrumView& SpectrumView::SpectralDataSaver::mView
private

Definition at line 119 of file SpectrumView.cpp.

Referenced by Init().


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