Audacity 3.2.0
EqualizationCurves.h
Go to the documentation of this file.
1/**********************************************************************
2
3 Audacity: A Digital Audio Editor
4
5 EqualizationCurves.h
6
7 Mitch Golden
8 Vaughan Johnson (Preview)
9
10 Paul Licameli split from Equalization.h
11
12***********************************************************************/
13#ifndef __AUDACITY_EFFECT_EQUALIZATION_CURVES__
14#define __AUDACITY_EFFECT_EQUALIZATION_CURVES__
15
16#include "XMLTagHandler.h"
17
18#include <vector>
20
21namespace EQUtils{
22int DoMessageBox(
24 const TranslatableString &msg,
25 const TranslatableString &titleStr,
26 long style = wxOK | wxCENTRE);
27}
28
31{
32public:
33 EQPoint( const double f, const double d ) { Freq = f; dB = d; }
34
35 bool operator < (const EQPoint &p1) const
36 {
37 return Freq < p1.Freq;
38 }
39
40 double Freq;
41 double dB;
42};
43
46{
47public:
48 EQCurve( const wxString & name = {} ) { Name = name; }
49 EQCurve( const wxChar * name ) { Name = name; }
50
51 bool operator < (const EQCurve &that) const
52 {
53 return Name.CmpNoCase(that.Name) < 0;
54 }
55
56 wxString Name;
57 std::vector<EQPoint> points;
58};
59
60using EQCurveArray = std::vector<EQCurve>;
61
64public:
65 explicit EQCurveWriter(const EQCurveArray &curves) : mCurves{ curves } {}
66 void SaveCurves(const wxString &fileName = {});
67
68private:
69 void WriteXML(XMLWriter &xmlFile) const;
71};
72
75public:
77 EQCurveArray &curves, const TranslatableString &name, int options)
78 : mCurves{ curves }, mName{ name }, mOptions{ options } {}
79
80 // XMLTagHandler callback methods for loading and saving
81 bool HandleXMLTag(const std::string_view& tag, const AttributesList &attrs) override;
82 XMLTagHandler *HandleXMLChild(const std::string_view& tag) override;
83
84 void LoadCurves(const wxString &fileName = {}, bool append = false);
85
86private:
87 bool GetDefaultFileName(wxFileName &fileName);
88 wxString GetPrefsPrefix();
89 // Merge NEW curves only or update all factory presets.
90 // Uses EQCurveWriter
91 void UpdateDefaultCurves(bool updateAll = false);
94 const int mOptions;
95};
96
97#endif
const TranslatableString name
Definition: Distortion.cpp:76
std::vector< EQCurve > EQCurveArray
std::vector< Attribute > AttributesList
Definition: XMLTagHandler.h:40
One curve in a list.
EQCurve(const wxChar *name)
bool operator<(const EQCurve &that) const
std::vector< EQPoint > points
EQCurve(const wxString &name={})
wxString Name
Deserializer of curves from XML files.
wxString GetPrefsPrefix()
EQCurveReader(EQCurveArray &curves, const TranslatableString &name, int options)
const TranslatableString mName
bool GetDefaultFileName(wxFileName &fileName)
EQCurveArray & mCurves
void UpdateDefaultCurves(bool updateAll=false)
bool HandleXMLTag(const std::string_view &tag, const AttributesList &attrs) override
XMLTagHandler * HandleXMLChild(const std::string_view &tag) override
void LoadCurves(const wxString &fileName={}, bool append=false)
Serializer of curves into XML files.
void SaveCurves(const wxString &fileName={})
void WriteXML(XMLWriter &xmlFile) const
const EQCurveArray & mCurves
EQCurveWriter(const EQCurveArray &curves)
One point in a curve.
EQPoint(const double f, const double d)
bool operator<(const EQPoint &p1) const
Holds a msgid for the translation catalog; may also bind format arguments.
This class is an interface which should be implemented by classes which wish to be able to load and s...
Definition: XMLTagHandler.h:42
Base class for XMLFileWriter and XMLStringWriter that provides the general functionality for creating...
Definition: XMLWriter.h:25
int DoMessageBox(const TranslatableString &name, const TranslatableString &msg, const TranslatableString &titleStr, long style=wxOK|wxCENTRE)