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 68 of file SpectrumView.cpp.

Constructor & Destructor Documentation

◆ SpectralDataSaver()

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

Definition at line 70 of file SpectrumView.cpp.

71 : mView{ view }
72 {}

◆ ~SpectralDataSaver()

SpectrumView::SpectralDataSaver::~SpectralDataSaver ( )
inlineoverride

Definition at line 98 of file SpectrumView.cpp.

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

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 74 of file SpectrumView.cpp.

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

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

Here is the call graph for this function:

Member Data Documentation

◆ mpProject

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

Definition at line 118 of file SpectrumView.cpp.

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

◆ mView

SpectrumView& SpectrumView::SpectralDataSaver::mView
private

Definition at line 117 of file SpectrumView.cpp.

Referenced by Init().


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