Audacity 3.2.0
WaveformSettings.h
Go to the documentation of this file.
1/**********************************************************************
2
3Audacity: A Digital Audio Editor
4
5WaveformSettings.h
6
7Paul Licameli
8
9**********************************************************************/
10
11#ifndef __AUDACITY_WAVEFORM_SETTINGS__
12#define __AUDACITY_WAVEFORM_SETTINGS__
13
14#include "ClientData.h" // to inherit
15#include "Prefs.h"
16
17class wxRect;
18
20class WaveTrack;
21
22class AUDACITY_DLL_API WaveformSettings
23 : public PrefsListener
24 , public ClientData::Cloneable< ClientData::UniquePtr >
25{
26public:
27
30 static WaveformSettings &Get(const WaveTrack &track);
31
33 static void Set(
34 WaveTrack &track, std::unique_ptr<WaveformSettings> pSettings );
35
36 // Singleton for settings that are not per-track
37 class AUDACITY_DLL_API Globals
38 {
39 public:
40 static Globals &Get();
41 void SavePrefs();
42
43 private:
44 Globals();
45 void LoadPrefs();
46 };
47
48 static WaveformSettings &defaults();
49
52 WaveformSettings& operator= (const WaveformSettings &other);
53 ~WaveformSettings() override;
54
55 PointerType Clone() const override;
56
57 bool IsDefault() const
58 {
59 return this == &defaults();
60 }
61
62 bool Validate(bool quiet);
63 void LoadPrefs();
64 void SavePrefs();
65 void Update();
66
67 void UpdatePrefs() override;
68
69 void ConvertToEnumeratedDBRange();
70 void ConvertToActualDBRange();
71 void NextLowerDBRange();
72 void NextHigherDBRange();
73
74 typedef int ScaleType;
75 enum ScaleTypeValues : int {
79
81 };
82
83 static const EnumValueSymbols &GetScaleNames();
84
87
88 // Convenience
89 bool isLinear() const { return scaleType == stLinearAmp || scaleType == stLinearDb; }
90};
91
92class AUDACITY_DLL_API WaveformScale
93 : public ClientData::Cloneable< ClientData::UniquePtr >
94{
95public:
97 static WaveformScale &Get(const WaveTrack &track);
98
99 ~WaveformScale() override;
100 PointerType Clone() const override;
101
102 int ZeroLevelYCoordinate(wxRect rect) const;
103
104 void GetDisplayBounds(float &min, float &max) const
105 { min = mDisplayMin; max = mDisplayMax; }
106
107 void SetDisplayBounds(float min, float max)
108 { mDisplayMin = min; mDisplayMax = max; }
109
110 float GetLastScaleType() const { return mLastScaleType; }
111 void SetLastScaleType(int type) { mLastScaleType = type; }
112
113 int GetLastDBRange() const { return mLastdBRange; }
114 void SetLastDBRange(int range) { mLastdBRange = range; }
115
116private:
117 float mDisplayMin = -1.0f, mDisplayMax = 1.0f;
118 int mLastScaleType = -1;
119 int mLastdBRange = -1;
120};
121
122#endif
Utility ClientData::Site to register hooks into a host class that attach client data.
int min(int a, int b)
A listener notified of changes in preferences.
Definition: Prefs.h:556
virtual void UpdatePrefs()=0
Definition: Prefs.cpp:123
A Track that contains audio waveform data.
Definition: WaveTrack.h:51
void SetLastDBRange(int range)
void GetDisplayBounds(float &min, float &max) const
int GetLastDBRange() const
void SetDisplayBounds(float min, float max)
void SetLastScaleType(int type)
~WaveformScale() override
float GetLastScaleType() const
Waveform settings, either for one track or as defaults.
bool isLinear() const
bool IsDefault() const
Services * Get()
Fetch the global instance, or nullptr if none is yet installed.
Definition: BasicUI.cpp:196
A convenient base class defining abstract virtual Clone() for a given kind of pointer.
Definition: ClientData.h:48
virtual PointerType Clone() const =0
ClientData::UniquePtr< Base > PointerType
Definition: ClientData.h:50