annotate base/Preferences.h @ 1376:d9511f9e04d7 dev/refactor-piper-related

Introduce some POD structs for describing an external server application and the desired libraries to load from it, and disambiguating between empty list request and invalid list request. This allows for overriding PiperVampPluginFactory behaviour for using a PluginScan to populate the list request.
author Lucas Thompson <lucas.thompson@qmul.ac.uk>
date Fri, 10 Feb 2017 11:15:19 +0000
parents ea28ee929034
children 07f23b90701a
rev   line source
Chris@136 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@136 2
Chris@136 3 /*
Chris@136 4 Sonic Visualiser
Chris@136 5 An audio file viewer and annotation editor.
Chris@136 6 Centre for Digital Music, Queen Mary, University of London.
Chris@202 7 This file copyright 2006 Chris Cannam and QMUL.
Chris@136 8
Chris@136 9 This program is free software; you can redistribute it and/or
Chris@136 10 modify it under the terms of the GNU General Public License as
Chris@136 11 published by the Free Software Foundation; either version 2 of the
Chris@136 12 License, or (at your option) any later version. See the file
Chris@136 13 COPYING included with this distribution for more information.
Chris@136 14 */
Chris@136 15
Chris@136 16 #ifndef _PREFERENCES_H_
Chris@136 17 #define _PREFERENCES_H_
Chris@136 18
Chris@136 19 #include "PropertyContainer.h"
Chris@136 20
Chris@140 21 #include "Window.h"
Chris@140 22
Chris@136 23 class Preferences : public PropertyContainer
Chris@136 24 {
Chris@136 25 Q_OBJECT
Chris@136 26
Chris@136 27 public:
Chris@156 28 static Preferences *getInstance();
Chris@136 29
Chris@136 30 virtual PropertyList getProperties() const;
Chris@136 31 virtual QString getPropertyLabel(const PropertyName &) const;
Chris@136 32 virtual PropertyType getPropertyType(const PropertyName &) const;
Chris@245 33 virtual int getPropertyRangeAndValue(const PropertyName &, int *, int *, int *) const;
Chris@136 34 virtual QString getPropertyValueLabel(const PropertyName &, int value) const;
Chris@136 35 virtual QString getPropertyContainerName() const;
Chris@136 36 virtual QString getPropertyContainerIconName() const;
Chris@136 37
Chris@246 38 enum SpectrogramSmoothing {
Chris@246 39 NoSpectrogramSmoothing,
Chris@246 40 SpectrogramInterpolated,
Chris@246 41 SpectrogramZeroPadded,
Chris@246 42 SpectrogramZeroPaddedAndInterpolated
Chris@246 43 };
Chris@246 44
Chris@553 45 enum SpectrogramXSmoothing {
Chris@553 46 NoSpectrogramXSmoothing,
Chris@553 47 SpectrogramXInterpolated
Chris@553 48 };
Chris@553 49
Chris@246 50 SpectrogramSmoothing getSpectrogramSmoothing() const { return m_spectrogramSmoothing; }
Chris@553 51 SpectrogramXSmoothing getSpectrogramXSmoothing() const { return m_spectrogramXSmoothing; }
Chris@1038 52 double getTuningFrequency() const { return m_tuningFrequency; }
Chris@140 53 WindowType getWindowType() const { return m_windowType; }
Chris@136 54
Chris@1225 55 bool getRunPluginsInProcess() const { return m_runPluginsInProcess; }
Chris@1225 56
Chris@138 57 //!!! harmonise with PaneStack
Chris@138 58 enum PropertyBoxLayout {
Chris@138 59 VerticallyStacked,
Chris@138 60 Layered
Chris@138 61 };
Chris@138 62 PropertyBoxLayout getPropertyBoxLayout() const { return m_propertyBoxLayout; }
Chris@138 63
Chris@354 64 int getViewFontSize() const { return m_viewFontSize; }
Chris@354 65
Chris@277 66 bool getOmitTempsFromRecentFiles() const { return m_omitRecentTemps; }
Chris@277 67
Chris@297 68 QString getTemporaryDirectoryRoot() const { return m_tempDirRoot; }
Chris@297 69
Chris@919 70 /// If we should always resample audio to the same rate, return it; otherwise (the normal case) return 0
Chris@1047 71 sv_samplerate_t getFixedSampleRate() const { return m_fixedSampleRate; }
Chris@919 72
Chris@919 73 /// True if we should resample second or subsequent audio file to match first audio file's rate
Chris@1313 74 bool getResampleOnLoad() const { return m_resampleOnLoad; }
Chris@1313 75
Chris@1313 76 /// True if mp3 files should be loaded "gaplessly", i.e. compensating for encoder/decoder delay and padding
Chris@1313 77 bool getUseGaplessMode() const { return m_gapless; }
Chris@297 78
Chris@921 79 /// True if audio files should be loaded with normalisation (max == 1)
Chris@921 80 bool getNormaliseAudio() const { return m_normaliseAudio; }
Chris@921 81
Chris@297 82 enum BackgroundMode {
Chris@297 83 BackgroundFromTheme,
Chris@297 84 DarkBackground,
Chris@297 85 LightBackground
Chris@297 86 };
Chris@297 87 BackgroundMode getBackgroundMode() const { return m_backgroundMode; }
Chris@297 88
Chris@612 89 enum TimeToTextMode {
Chris@612 90 TimeToTextMs,
Chris@612 91 TimeToTextUs,
Chris@612 92 TimeToText24Frame,
Chris@612 93 TimeToText25Frame,
Chris@612 94 TimeToText30Frame,
Chris@612 95 TimeToText50Frame,
Chris@612 96 TimeToText60Frame
Chris@612 97 };
Chris@612 98 TimeToTextMode getTimeToTextMode() const { return m_timeToTextMode; }
Chris@612 99
Chris@1031 100 bool getShowHMS() const { return m_showHMS; }
Chris@1031 101
Chris@892 102 int getOctaveOfMiddleC() const {
Chris@892 103 // weed out unsupported octaves
Chris@892 104 return getOctaveOfMiddleCInSystem(getSystemWithMiddleCInOctave(m_octave));
Chris@892 105 }
Chris@892 106 int getOctaveOfLowestMIDINote() const {
Chris@892 107 return getOctaveOfMiddleC() - 5;
Chris@892 108 }
Chris@892 109
Chris@372 110 bool getShowSplash() const { return m_showSplash; }
Chris@372 111
Chris@136 112 public slots:
Chris@136 113 virtual void setProperty(const PropertyName &, int);
Chris@136 114
Chris@246 115 void setSpectrogramSmoothing(SpectrogramSmoothing smoothing);
Chris@553 116 void setSpectrogramXSmoothing(SpectrogramXSmoothing smoothing);
Chris@1038 117 void setTuningFrequency(double freq);
Chris@138 118 void setPropertyBoxLayout(PropertyBoxLayout layout);
Chris@140 119 void setWindowType(WindowType type);
Chris@1225 120 void setRunPluginsInProcess(bool r);
Chris@277 121 void setOmitTempsFromRecentFiles(bool omit);
Chris@297 122 void setTemporaryDirectoryRoot(QString tempDirRoot);
Chris@1047 123 void setFixedSampleRate(sv_samplerate_t);
Chris@297 124 void setResampleOnLoad(bool);
Chris@1313 125 void setUseGaplessMode(bool);
Chris@921 126 void setNormaliseAudio(bool);
Chris@297 127 void setBackgroundMode(BackgroundMode mode);
Chris@612 128 void setTimeToTextMode(TimeToTextMode mode);
Chris@1031 129 void setShowHMS(bool show);
Chris@892 130 void setOctaveOfMiddleC(int oct);
Chris@354 131 void setViewFontSize(int size);
Chris@372 132 void setShowSplash(bool);
Chris@136 133
Chris@136 134 private:
Chris@145 135 Preferences(); // may throw DirectoryCreationFailed
Chris@145 136 virtual ~Preferences();
Chris@136 137
Chris@136 138 static Preferences *m_instance;
Chris@136 139
Chris@892 140 // We don't support arbitrary octaves in the gui, because we want
Chris@892 141 // to be able to label what the octave system comes from. These
Chris@892 142 // are the ones we support. (But we save and load as octave
Chris@892 143 // numbers, so as not to make the prefs format really confusing)
Chris@892 144 enum OctaveNumberingSystem {
Chris@892 145 C0_Centre,
Chris@892 146 C3_Logic,
Chris@892 147 C4_ASA,
Chris@892 148 C5_Sonar
Chris@892 149 };
Chris@892 150 static int getOctaveOfMiddleCInSystem(OctaveNumberingSystem s);
Chris@892 151 static OctaveNumberingSystem getSystemWithMiddleCInOctave(int o);
Chris@892 152
Chris@246 153 SpectrogramSmoothing m_spectrogramSmoothing;
Chris@553 154 SpectrogramXSmoothing m_spectrogramXSmoothing;
Chris@1038 155 double m_tuningFrequency;
Chris@138 156 PropertyBoxLayout m_propertyBoxLayout;
Chris@140 157 WindowType m_windowType;
Chris@1225 158 bool m_runPluginsInProcess;
Chris@277 159 bool m_omitRecentTemps;
Chris@297 160 QString m_tempDirRoot;
Chris@1047 161 sv_samplerate_t m_fixedSampleRate;
Chris@297 162 bool m_resampleOnLoad;
Chris@1313 163 bool m_gapless;
Chris@921 164 bool m_normaliseAudio;
Chris@354 165 int m_viewFontSize;
Chris@297 166 BackgroundMode m_backgroundMode;
Chris@612 167 TimeToTextMode m_timeToTextMode;
Chris@1031 168 bool m_showHMS;
Chris@892 169 int m_octave;
Chris@372 170 bool m_showSplash;
Chris@136 171 };
Chris@136 172
Chris@136 173 #endif