mirror of
https://github.com/cookiengineer/audacity
synced 2025-05-02 00:29:41 +02:00
Move display type from WaveTrack to WaveTrackView
This commit is contained in:
parent
c28e47bd38
commit
6ccca16a75
@ -97,15 +97,6 @@ WaveTrack::WaveTrack(const std::shared_ptr<DirManager> &projDirManager, sampleFo
|
||||
}
|
||||
}
|
||||
|
||||
// Force creation always:
|
||||
WaveformSettings &settings = GetIndependentWaveformSettings();
|
||||
|
||||
mDisplay = TracksPrefs::ViewModeChoice();
|
||||
if (mDisplay == WaveTrackViewConstants::obsoleteWaveformDBDisplay) {
|
||||
mDisplay = WaveTrackViewConstants::Waveform;
|
||||
settings.scaleType = WaveformSettings::stLogarithmic;
|
||||
}
|
||||
|
||||
mLegacyProjectFileOffset = 0;
|
||||
|
||||
mFormat = format;
|
||||
@ -161,7 +152,6 @@ void WaveTrack::Init(const WaveTrack &orig)
|
||||
mOldGain[1] = 0.0;
|
||||
SetDefaultName(orig.GetDefaultName());
|
||||
SetName(orig.GetName());
|
||||
mDisplay = orig.mDisplay;
|
||||
mDisplayMin = orig.mDisplayMin;
|
||||
mDisplayMax = orig.mDisplayMax;
|
||||
mSpectrumMin = orig.mSpectrumMin;
|
||||
@ -196,7 +186,6 @@ void WaveTrack::Merge(const Track &orig)
|
||||
{
|
||||
orig.TypeSwitch( [&](const WaveTrack *pwt) {
|
||||
const WaveTrack &wt = *pwt;
|
||||
mDisplay = wt.mDisplay;
|
||||
mGain = wt.mGain;
|
||||
mPan = wt.mPan;
|
||||
mDisplayMin = wt.mDisplayMin;
|
||||
|
@ -17,7 +17,6 @@
|
||||
#include <wx/longlong.h>
|
||||
|
||||
#include "WaveTrackLocation.h"
|
||||
#include "tracks/playabletrack/wavetrack/ui/WaveTrackViewConstants.h"
|
||||
|
||||
class ProgressDialog;
|
||||
|
||||
@ -523,17 +522,12 @@ private:
|
||||
// Set the unique autosave ID
|
||||
void SetAutoSaveIdent(int id);
|
||||
|
||||
using WaveTrackDisplay = WaveTrackViewConstants::Display;
|
||||
|
||||
int GetLastScaleType() const { return mLastScaleType; }
|
||||
void SetLastScaleType() const;
|
||||
|
||||
int GetLastdBRange() const { return mLastdBRange; }
|
||||
void SetLastdBRange() const;
|
||||
|
||||
WaveTrackDisplay GetDisplay() const { return mDisplay; }
|
||||
void SetDisplay(WaveTrackDisplay display) { mDisplay = display; }
|
||||
|
||||
void GetDisplayBounds(float *min, float *max) const;
|
||||
void SetDisplayBounds(float min, float max) const;
|
||||
void GetSpectrumBounds(float *min, float *max) const;
|
||||
@ -568,7 +562,6 @@ private:
|
||||
mutable float mSpectrumMin;
|
||||
mutable float mSpectrumMax;
|
||||
|
||||
WaveTrackDisplay mDisplay;
|
||||
mutable int mLastScaleType; // last scale type choice
|
||||
mutable int mLastdBRange;
|
||||
mutable std::vector <Location> mDisplayLocationsCache;
|
||||
|
@ -44,7 +44,8 @@ SetTrackAudioCommand and SetTrackVisualsCommand.
|
||||
#include "../prefs/SpectrogramSettings.h"
|
||||
#include "../Shuttle.h"
|
||||
#include "../ShuttleGui.h"
|
||||
#include "../tracks/ui/TrackView.h"
|
||||
#include "../tracks/playabletrack/wavetrack/ui/WaveTrackView.h"
|
||||
#include "../tracks/playabletrack/wavetrack/ui/WaveTrackViewConstants.h"
|
||||
#include "CommandContext.h"
|
||||
|
||||
SetTrackBase::SetTrackBase(){
|
||||
@ -353,7 +354,7 @@ bool SetTrackVisualsCommand::ApplyInner(const CommandContext & context, Track *
|
||||
TrackView::Get( *t ).SetHeight( mHeight );
|
||||
|
||||
if( wt && bHasDisplayType )
|
||||
wt->SetDisplay(
|
||||
WaveTrackView::Get( *wt ).SetDisplay(
|
||||
(mDisplayType == kWaveform) ?
|
||||
WaveTrackViewConstants::Waveform
|
||||
: WaveTrackViewConstants::Spectrum
|
||||
|
@ -68,6 +68,8 @@ greater use in future.
|
||||
#include "../widgets/ProgressDialog.h"
|
||||
#include "../ondemand/ODManager.h"
|
||||
#include "TimeWarper.h"
|
||||
#include "../tracks/playabletrack/wavetrack/ui/WaveTrackView.h"
|
||||
#include "../tracks/playabletrack/wavetrack/ui/WaveTrackViewConstants.h"
|
||||
#include "../widgets/HelpSystem.h"
|
||||
#include "../widgets/NumericTextCtrl.h"
|
||||
#include "../widgets/AudacityMessageBox.h"
|
||||
@ -2360,7 +2362,8 @@ void Effect::Preview(bool dryOnly)
|
||||
|
||||
mixLeft->Offset(-mixLeft->GetStartTime());
|
||||
mixLeft->SetSelected(true);
|
||||
mixLeft->SetDisplay(WaveTrackViewConstants::NoDisplay);
|
||||
WaveTrackView::Get( *mixLeft )
|
||||
.SetDisplay(WaveTrackViewConstants::NoDisplay);
|
||||
auto pLeft = mTracks->Add( mixLeft );
|
||||
Track *pRight{};
|
||||
if (mixRight) {
|
||||
@ -2375,8 +2378,8 @@ void Effect::Preview(bool dryOnly)
|
||||
if (src->GetSelected() || mPreviewWithNotSelected) {
|
||||
auto dest = src->Copy(mT0, t1);
|
||||
dest->SetSelected(src->GetSelected());
|
||||
static_cast<WaveTrack*>(dest.get())
|
||||
->SetDisplay(WaveTrackViewConstants::NoDisplay);
|
||||
WaveTrackView::Get( *static_cast<WaveTrack*>(dest.get()) )
|
||||
.SetDisplay(WaveTrackViewConstants::NoDisplay);
|
||||
mTracks->Add( dest );
|
||||
}
|
||||
}
|
||||
|
@ -73,6 +73,8 @@ effects from this one class.
|
||||
#include "../../wxFileNameWrapper.h"
|
||||
#include "../../prefs/GUIPrefs.h"
|
||||
#include "../../prefs/WaveformSettings.h"
|
||||
#include "../../tracks/playabletrack/wavetrack/ui/WaveTrackView.h"
|
||||
#include "../../tracks/playabletrack/wavetrack/ui/WaveTrackViewConstants.h"
|
||||
#include "../../widgets/NumericTextCtrl.h"
|
||||
#include "../../widgets/ProgressDialog.h"
|
||||
|
||||
@ -542,7 +544,8 @@ bool NyquistEffect::Init()
|
||||
|
||||
for ( auto t :
|
||||
TrackList::Get( *project ).Selected< const WaveTrack >() ) {
|
||||
if (t->GetDisplay() != WaveTrackViewConstants::Spectrum ||
|
||||
if (WaveTrackView::Get(*t).GetDisplay()
|
||||
!= WaveTrackViewConstants::Spectrum ||
|
||||
!(t->GetSpectrogramSettings().SpectralSelectionEnabled())) {
|
||||
bAllowSpectralEditing = false;
|
||||
break;
|
||||
@ -1066,7 +1069,7 @@ bool NyquistEffect::ProcessOne()
|
||||
[&](const WaveTrack *wt) {
|
||||
type = wxT("wave");
|
||||
spectralEditp = mCurTrack[0]->GetSpectrogramSettings().SpectralSelectionEnabled()? wxT("T") : wxT("NIL");
|
||||
switch (wt->GetDisplay())
|
||||
switch ( WaveTrackView::Get( *wt ).GetDisplay() )
|
||||
{
|
||||
case Waveform:
|
||||
view = (mCurTrack[0]->GetWaveformSettings().scaleType == 0) ? wxT("\"Waveform\"") : wxT("\"Waveform (dB)\"");
|
||||
|
@ -21,6 +21,8 @@
|
||||
#include "../commands/CommandManager.h"
|
||||
#include "../toolbars/ControlToolBar.h"
|
||||
#include "../tracks/ui/SelectHandle.h"
|
||||
#include "../tracks/playabletrack/wavetrack/ui/WaveTrackView.h"
|
||||
#include "../tracks/playabletrack/wavetrack/ui/WaveTrackViewConstants.h"
|
||||
|
||||
// private helper classes and functions
|
||||
namespace {
|
||||
@ -33,7 +35,7 @@ void DoNextPeakFrequency(AudacityProject &project, bool up)
|
||||
// Find the first selected wave track that is in a spectrogram view.
|
||||
const WaveTrack *pTrack {};
|
||||
for ( auto wt : tracks.Selected< const WaveTrack >() ) {
|
||||
const int display = wt->GetDisplay();
|
||||
const auto display = WaveTrackView::Get( *wt ).GetDisplay();
|
||||
if (display == WaveTrackViewConstants::Spectrum) {
|
||||
pTrack = wt;
|
||||
break;
|
||||
|
@ -31,6 +31,7 @@
|
||||
|
||||
#include "../TrackPanel.h"
|
||||
#include "../WaveTrack.h"
|
||||
#include "../tracks/playabletrack/wavetrack/ui/WaveTrackView.h"
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
@ -48,7 +49,7 @@ SpectrumPrefs::SpectrumPrefs(wxWindow * parent, wxWindowID winid, WaveTrack *wt)
|
||||
wt->GetSpectrumBounds(&mOrigMin, &mOrigMax);
|
||||
mTempSettings.maxFreq = mOrigMax;
|
||||
mTempSettings.minFreq = mOrigMin;
|
||||
mOrigDisplay = mWt->GetDisplay();
|
||||
mOrigDisplay = WaveTrackView::Get( *mWt ).GetDisplay();
|
||||
}
|
||||
else {
|
||||
mTempSettings = mOrigSettings = SpectrogramSettings::defaults();
|
||||
@ -423,7 +424,7 @@ void SpectrumPrefs::Rollback()
|
||||
if (mWt && isOpenPage) {
|
||||
auto channels = TrackList::Channels(mWt);
|
||||
for (auto channel : channels)
|
||||
channel->SetDisplay(mOrigDisplay);
|
||||
WaveTrackView::Get( *channel ).SetDisplay( mOrigDisplay );
|
||||
}
|
||||
|
||||
if (isOpenPage) {
|
||||
@ -470,7 +471,8 @@ void SpectrumPrefs::Preview()
|
||||
|
||||
if (mWt && isOpenPage) {
|
||||
for (auto channel : TrackList::Channels(mWt))
|
||||
channel->SetDisplay(WaveTrackViewConstants::Spectrum);
|
||||
WaveTrackView::Get( *channel )
|
||||
.SetDisplay( WaveTrackViewConstants::Spectrum );
|
||||
}
|
||||
|
||||
if (isOpenPage) {
|
||||
|
@ -27,6 +27,8 @@ Paul Licameli
|
||||
#include "../TrackPanel.h"
|
||||
#include "../ShuttleGui.h"
|
||||
#include "../WaveTrack.h"
|
||||
#include "../tracks/playabletrack/wavetrack/ui/WaveTrackView.h"
|
||||
#include "../tracks/playabletrack/wavetrack/ui/WaveTrackViewConstants.h"
|
||||
|
||||
WaveformPrefs::WaveformPrefs(wxWindow * parent, wxWindowID winid, WaveTrack *wt)
|
||||
/* i18n-hint: A waveform is a visual representation of vibration */
|
||||
@ -184,7 +186,8 @@ bool WaveformPrefs::Commit()
|
||||
|
||||
if (mWt && isOpenPage) {
|
||||
for (auto channel : TrackList::Channels(mWt))
|
||||
channel->SetDisplay(WaveTrackViewConstants::Waveform);
|
||||
WaveTrackView::Get( *channel )
|
||||
.SetDisplay( WaveTrackViewConstants::Waveform );
|
||||
}
|
||||
|
||||
if (isOpenPage) {
|
||||
|
@ -15,6 +15,7 @@ Paul Licameli split from WaveTrackView.cpp
|
||||
|
||||
#include "SpectrumVRulerControls.h"
|
||||
#include "WaveTrackView.h"
|
||||
#include "WaveTrackViewConstants.h"
|
||||
|
||||
#include "../../../../AColor.h"
|
||||
#include "../../../../Prefs.h"
|
||||
|
@ -16,7 +16,7 @@ Paul Licameli split from TrackPanel.cpp
|
||||
#include "../../ui/PlayableTrackButtonHandles.h"
|
||||
#include "WaveTrackSliderHandles.h"
|
||||
|
||||
#include "../../../ui/TrackView.h"
|
||||
#include "WaveTrackView.h"
|
||||
#include "../../../../AudioIOBase.h"
|
||||
#include "../../../../CellularPanel.h"
|
||||
#include "../../../../Menus.h"
|
||||
@ -599,7 +599,7 @@ void WaveTrackMenuTable::InitMenu(Menu *pMenu, void *pUserData)
|
||||
|
||||
std::vector<int> checkedIds;
|
||||
|
||||
const int display = pTrack->GetDisplay();
|
||||
const auto display = WaveTrackView::Get( *pTrack ).GetDisplay();
|
||||
checkedIds.push_back(
|
||||
display == WaveTrackViewConstants::Waveform
|
||||
? (pTrack->GetWaveformSettings().isLinear()
|
||||
@ -702,7 +702,9 @@ BEGIN_POPUP_MENU(WaveTrackMenuTable)
|
||||
#endif
|
||||
|
||||
WaveTrack *const pTrack = static_cast<WaveTrack*>(mpTrack);
|
||||
if( pTrack && pTrack->GetDisplay() != WaveTrackViewConstants::Spectrum ){
|
||||
if( pTrack &&
|
||||
WaveTrackView::Get( *pTrack ).GetDisplay()
|
||||
!= WaveTrackViewConstants::Spectrum ){
|
||||
POPUP_MENU_SEPARATOR()
|
||||
POPUP_MENU_SUB_MENU(OnWaveColorID, _("&Wave Color"), WaveColorMenuTable)
|
||||
}
|
||||
@ -723,7 +725,7 @@ void WaveTrackMenuTable::OnSetDisplay(wxCommandEvent & event)
|
||||
const auto pTrack = static_cast<WaveTrack*>(mpData->pTrack);
|
||||
|
||||
bool linear = false;
|
||||
WaveTrack::WaveTrackDisplay id;
|
||||
WaveTrackView::WaveTrackDisplay id;
|
||||
switch (idInt) {
|
||||
default:
|
||||
case OnWaveformID:
|
||||
@ -734,14 +736,15 @@ void WaveTrackMenuTable::OnSetDisplay(wxCommandEvent & event)
|
||||
id = Spectrum; break;
|
||||
}
|
||||
|
||||
const bool wrongType = pTrack->GetDisplay() != id;
|
||||
const bool wrongType = WaveTrackView::Get( *pTrack ).GetDisplay() != id;
|
||||
const bool wrongScale =
|
||||
(id == Waveform &&
|
||||
pTrack->GetWaveformSettings().isLinear() != linear);
|
||||
if (wrongType || wrongScale) {
|
||||
for (auto channel : TrackList::Channels(pTrack)) {
|
||||
channel->SetLastScaleType();
|
||||
channel->SetDisplay(WaveTrack::WaveTrackDisplay(id));
|
||||
WaveTrackView::Get( *channel )
|
||||
.SetDisplay(WaveTrackView::WaveTrackDisplay(id));
|
||||
if (wrongScale)
|
||||
channel->GetIndependentWaveformSettings().scaleType = linear
|
||||
? WaveformSettings::stLinear
|
||||
@ -876,8 +879,8 @@ void WaveTrackMenuTable::OnMergeStereo(wxCommandEvent &)
|
||||
|
||||
// Set NEW track heights and minimized state
|
||||
auto
|
||||
&view = TrackView::Get( *pTrack ),
|
||||
&partnerView = TrackView::Get( *partner );
|
||||
&view = WaveTrackView::Get( *pTrack ),
|
||||
&partnerView = WaveTrackView::Get( *partner );
|
||||
view.SetMinimized(false);
|
||||
partnerView.SetMinimized(false);
|
||||
int AverageHeight = (view.GetHeight() + partnerView.GetHeight()) / 2;
|
||||
@ -886,6 +889,8 @@ void WaveTrackMenuTable::OnMergeStereo(wxCommandEvent &)
|
||||
view.SetMinimized(bBothMinimizedp);
|
||||
partnerView.SetMinimized(bBothMinimizedp);
|
||||
|
||||
partnerView.SetDisplay( view.GetDisplay() );
|
||||
|
||||
//On Demand - join the queues together.
|
||||
if (ODManager::IsInstanceCreated())
|
||||
if (!ODManager::Instance()
|
||||
|
@ -22,6 +22,8 @@ Paul Licameli split from TrackPanel.cpp
|
||||
#include "../../../../TrackPanelMouseEvent.h"
|
||||
#include "../../../../ViewInfo.h"
|
||||
#include "../../../../prefs/SpectrogramSettings.h"
|
||||
#include "../../../../prefs/WaveformSettings.h"
|
||||
#include "../../../../prefs/TracksPrefs.h"
|
||||
|
||||
#include "../../../ui/TimeShiftHandle.h"
|
||||
|
||||
@ -39,12 +41,34 @@ WaveTrackView::WaveTrackView( const std::shared_ptr<Track> &pTrack )
|
||||
: CommonTrackView{ pTrack }
|
||||
{
|
||||
WaveTrackSubViews::BuildAll();
|
||||
|
||||
mDisplay = TracksPrefs::ViewModeChoice();
|
||||
|
||||
// Force creation always:
|
||||
WaveformSettings &settings = static_cast< WaveTrack* >( pTrack.get() )
|
||||
->GetIndependentWaveformSettings();
|
||||
|
||||
if (mDisplay == WaveTrackViewConstants::obsoleteWaveformDBDisplay) {
|
||||
mDisplay = WaveTrackViewConstants::Waveform;
|
||||
settings.scaleType = WaveformSettings::stLogarithmic;
|
||||
}
|
||||
}
|
||||
|
||||
WaveTrackView::~WaveTrackView()
|
||||
{
|
||||
}
|
||||
|
||||
void WaveTrackView::CopyTo( Track &track ) const
|
||||
{
|
||||
TrackView::CopyTo( track );
|
||||
auto &other = TrackView::Get( track );
|
||||
|
||||
if ( const auto pOther = dynamic_cast< WaveTrackView* >( &other ) ) {
|
||||
// only one field is important to preserve in undo/redo history
|
||||
pOther->mDisplay = mDisplay;
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<UIHandlePtr> WaveTrackView::DetailedHitTest
|
||||
(const TrackPanelMouseState &st,
|
||||
const AudacityProject *pProject, int currentTool, bool bMultiTool)
|
||||
@ -87,8 +111,7 @@ WaveTrackView::DoDetailedHitTest
|
||||
|
||||
auto WaveTrackView::GetSubViews( const wxRect &rect ) -> Refinement
|
||||
{
|
||||
auto wt = static_cast<WaveTrack*>( FindTrack().get() );
|
||||
auto display = wt->GetDisplay();
|
||||
auto display = mDisplay;
|
||||
std::shared_ptr<TrackView> pSubView;
|
||||
WaveTrackSubViews::ForEach( [&,display]( WaveTrackSubView &subView ){
|
||||
if ( subView.SubViewType() == display )
|
||||
|
@ -44,6 +44,9 @@ public:
|
||||
WaveTrackView( const std::shared_ptr<Track> &pTrack );
|
||||
~WaveTrackView() override;
|
||||
|
||||
// Preserve some view state too for undo/redo purposes
|
||||
void CopyTo( Track &track ) const override;
|
||||
|
||||
std::shared_ptr<TrackVRulerControls> DoGetVRulerControls() override;
|
||||
|
||||
// CommonTrackView implementation
|
||||
@ -58,6 +61,11 @@ public:
|
||||
const std::shared_ptr<WaveTrack> &wt,
|
||||
CommonTrackView &view);
|
||||
|
||||
using WaveTrackDisplay = WaveTrackViewConstants::Display;
|
||||
|
||||
WaveTrackDisplay GetDisplay() const { return mDisplay; }
|
||||
void SetDisplay(WaveTrackDisplay display) { mDisplay = display; }
|
||||
|
||||
private:
|
||||
// TrackPanelDrawable implementation
|
||||
void Draw(
|
||||
@ -74,6 +82,8 @@ private:
|
||||
|
||||
protected:
|
||||
void DoSetMinimized( bool minimized ) override;
|
||||
|
||||
WaveTrackDisplay mDisplay;
|
||||
};
|
||||
|
||||
// Helper for drawing routines
|
||||
|
@ -15,6 +15,7 @@ Paul Licameli split from WaveTrackView.cpp
|
||||
|
||||
#include "WaveformVRulerControls.h"
|
||||
#include "WaveTrackView.h"
|
||||
#include "WaveTrackViewConstants.h"
|
||||
|
||||
#include "CutlineHandle.h"
|
||||
#include "SampleHandle.h"
|
||||
|
Loading…
x
Reference in New Issue
Block a user