1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-05-02 08:39:46 +02:00

Classes no more instantiated after previous commit become namespaces

This commit is contained in:
Paul Licameli 2019-07-07 18:56:19 -04:00
parent c7b888b903
commit 8d29746af9
7 changed files with 16 additions and 235 deletions

View File

@ -49,8 +49,6 @@ private:
static void DoUpdateVRuler( const wxRect &rect, const WaveTrack *wt );
friend class WaveTrackVRulerControls;
std::weak_ptr<SpectrumVZoomHandle> mVZoomHandle;
};

View File

@ -11,10 +11,6 @@ Paul Licameli split from TrackPanel.cpp
#include "../../../../Audacity.h"
#include "WaveTrackVRulerControls.h"
#include "SpectrumVRulerControls.h"
#include "WaveformVRulerControls.h"
#include "WaveformVZoomHandle.h"
#include "../../../../Experimental.h"
#include "../../../../RefreshCode.h"
@ -28,60 +24,12 @@ Paul Licameli split from TrackPanel.cpp
#include "../../../../widgets/Ruler.h"
///////////////////////////////////////////////////////////////////////////////
WaveTrackVRulerControls::~WaveTrackVRulerControls()
{
}
std::vector<UIHandlePtr> WaveTrackVRulerControls::HitTest
(const TrackPanelMouseState &st,
const AudacityProject *pProject)
{
std::vector<UIHandlePtr> results;
if ( st.state.GetX() <= st.rect.GetRight() - kGuard ) {
auto pTrack = FindTrack()->SharedPointer<WaveTrack>( );
if (pTrack) {
auto result = std::make_shared<WaveTrackVZoomHandle>(
pTrack, st.rect, st.state.m_y );
result = AssignUIHandlePtr(mVZoomHandle, result);
results.push_back(result);
}
}
auto more = TrackVRulerControls::HitTest(st, pProject);
std::copy(more.begin(), more.end(), std::back_inserter(results));
return results;
}
unsigned WaveTrackVRulerControls::HandleWheelRotation
(const TrackPanelMouseEvent &evt, AudacityProject *pProject)
{
using namespace RefreshCode;
const auto pTrack = FindTrack();
if (!pTrack)
return RefreshNone;
const auto wt = static_cast<WaveTrack*>(pTrack.get());
if (wt->GetDisplay() == WaveTrackViewConstants::Spectrum)
return SpectrumVRulerControls::DoHandleWheelRotation( evt, pProject, wt );
else
return WaveformVRulerControls::DoHandleWheelRotation( evt, pProject, wt );
}
Ruler &WaveTrackVRulerControls::ScratchRuler()
{
static Ruler theRuler;
return theRuler;
}
void WaveTrackVRulerControls::Draw(
TrackPanelDrawingContext &context,
const wxRect &rect_, unsigned iPass )
{
TrackVRulerControls::Draw( context, rect_, iPass );
DoDraw( *this, context, rect_, iPass );
}
void WaveTrackVRulerControls::DoDraw( TrackVRulerControls &controls,
TrackPanelDrawingContext &context,
const wxRect &rect_, unsigned iPass )
@ -131,17 +79,3 @@ void WaveTrackVRulerControls::DoDraw( TrackVRulerControls &controls,
vruler.Draw(*dc);
}
}
void WaveTrackVRulerControls::UpdateRuler( const wxRect &rect )
{
const auto wt = std::static_pointer_cast< WaveTrack >( FindTrack() );
if (!wt)
return;
const int display = wt->GetDisplay();
if (display == WaveTrackViewConstants::Waveform)
WaveformVRulerControls::DoUpdateVRuler( rect, wt.get() );
else
SpectrumVRulerControls::DoUpdateVRuler( rect, wt.get() );
}

View File

@ -15,44 +15,14 @@ Paul Licameli split from TrackPanel.cpp
class Ruler;
class WaveTrack;
class WaveTrackVZoomHandle;
class WaveTrackVRulerControls final : public TrackVRulerControls
namespace WaveTrackVRulerControls
{
static Ruler &ScratchRuler();
Ruler &ScratchRuler();
WaveTrackVRulerControls(const WaveTrackVRulerControls&) = delete;
WaveTrackVRulerControls &operator=(const WaveTrackVRulerControls&) = delete;
public:
explicit
WaveTrackVRulerControls( const std::shared_ptr<TrackView> &pTrackView )
: TrackVRulerControls( pTrackView ) {}
~WaveTrackVRulerControls();
std::vector<UIHandlePtr> HitTest
(const TrackPanelMouseState &state,
const AudacityProject *) override;
unsigned HandleWheelRotation
(const TrackPanelMouseEvent &event,
AudacityProject *pProject) override;
private:
// TrackPanelDrawable implementation
void Draw(
TrackPanelDrawingContext &context,
const wxRect &rect, unsigned iPass ) override;
static void DoDraw( TrackVRulerControls &controls,
void DoDraw( TrackVRulerControls &controls,
TrackPanelDrawingContext &context,
const wxRect &rect, unsigned iPass );
// TrackVRulerControls implementation
void UpdateRuler( const wxRect &rect ) override;
std::weak_ptr<WaveTrackVZoomHandle> mVZoomHandle;
friend class SpectrumVRulerControls;
friend class WaveformVRulerControls;
};
#endif

View File

@ -11,9 +11,6 @@ Paul Licameli split from TrackPanel.cpp
#include "../../../../Audacity.h"
#include "WaveTrackVZoomHandle.h"
#include "SpectrumVZoomHandle.h"
#include "WaveformVZoomHandle.h"
#include "../../../../Experimental.h"
#include "../../../ui/TrackVRulerControls.h"
@ -34,19 +31,6 @@ bool WaveTrackVZoomHandle::IsDragZooming(int zoomStart, int zoomEnd)
return bVZoom && (abs(zoomEnd - zoomStart) > DragThreshold);
}
WaveTrackVZoomHandle::WaveTrackVZoomHandle
(const std::shared_ptr<WaveTrack> &pTrack, const wxRect &rect, int y)
: mpTrack{ pTrack } , mZoomStart(y), mZoomEnd(y), mRect(rect)
{
}
void WaveTrackVZoomHandle::Enter(bool)
{
#ifdef EXPERIMENTAL_TRACK_PANEL_HIGHLIGHTING
mChangeHighlight = RefreshCode::RefreshCell;
#endif
}
///////////////////////////////////////////////////////////////////////////////
// Table class
@ -91,26 +75,6 @@ HitTestPreview WaveTrackVZoomHandle::HitPreview(const wxMouseState &state)
};
}
WaveTrackVZoomHandle::~WaveTrackVZoomHandle()
{
}
UIHandle::Result WaveTrackVZoomHandle::Click
(const TrackPanelMouseEvent &, AudacityProject *)
{
return RefreshCode::RefreshNone;
}
UIHandle::Result WaveTrackVZoomHandle::Drag
(const TrackPanelMouseEvent &evt, AudacityProject *pProject)
{
using namespace RefreshCode;
auto pTrack = TrackList::Get( *pProject ).Lock(mpTrack);
if (!pTrack)
return Cancelled;
return DoDrag( evt, pProject, mZoomStart, mZoomEnd );
}
UIHandle::Result WaveTrackVZoomHandle::DoDrag(
const TrackPanelMouseEvent &evt, AudacityProject *pProject,
const int zoomStart, int &zoomEnd)
@ -126,29 +90,6 @@ UIHandle::Result WaveTrackVZoomHandle::DoDrag(
return RefreshNone;
}
HitTestPreview WaveTrackVZoomHandle::Preview
(const TrackPanelMouseState &st, const AudacityProject *)
{
return HitPreview(st.state);
}
UIHandle::Result WaveTrackVZoomHandle::Release
(const TrackPanelMouseEvent &evt, AudacityProject *pProject,
wxWindow *pParent)
{
auto pTrack = TrackList::Get( *pProject ).Lock(mpTrack);
auto doZoom = (pTrack->GetDisplay() == WaveTrackViewConstants::Spectrum)
? SpectrumVZoomHandle::DoZoom
: WaveformVZoomHandle::DoZoom;
return DoRelease(
evt, pProject, pParent, pTrack.get(), mRect,
doZoom,
(pTrack->GetDisplay() == WaveTrackViewConstants::Spectrum)
? SpectrumVRulerMenuTable::Instance()
: WaveformVRulerMenuTable::Instance(),
mZoomStart, mZoomEnd );
}
UIHandle::Result WaveTrackVZoomHandle::DoRelease(
const TrackPanelMouseEvent &evt, AudacityProject *pProject,
wxWindow *pParent, WaveTrack *pTrack, const wxRect &rect,
@ -219,22 +160,6 @@ UIHandle::Result WaveTrackVZoomHandle::DoRelease(
return UpdateVRuler | RefreshAll;
}
UIHandle::Result WaveTrackVZoomHandle::Cancel(AudacityProject*)
{
// Cancel is implemented! And there is no initial state to restore,
// so just return a code.
return RefreshCode::RefreshAll;
}
void WaveTrackVZoomHandle::Draw(
TrackPanelDrawingContext &context,
const wxRect &rect, unsigned iPass )
{
if (!mpTrack.lock()) //? TrackList::Lock()
return;
return DoDraw( context, rect, iPass, mZoomStart, mZoomEnd );
}
void WaveTrackVZoomHandle::DoDraw(
TrackPanelDrawingContext &context,
const wxRect &rect, unsigned iPass, const int zoomStart, const int zoomEnd )
@ -246,12 +171,6 @@ void WaveTrackVZoomHandle::DoDraw(
}
}
wxRect WaveTrackVZoomHandle::DrawingArea(
const wxRect &rect, const wxRect &panelRect, unsigned iPass )
{
return DoDrawingArea( rect, panelRect, iPass );
}
wxRect WaveTrackVZoomHandle::DoDrawingArea(
const wxRect &rect, const wxRect &panelRect, unsigned iPass )
{

View File

@ -18,18 +18,14 @@ class WaveTrack;
#include "../../../../UIHandle.h"
class WaveTrackVZoomHandle : public UIHandle
namespace WaveTrackVZoomHandle
{
WaveTrackVZoomHandle(const WaveTrackVZoomHandle&);
static HitTestPreview HitPreview(const wxMouseState &state);
// See RefreshCode.h for bit flags:
using Result = unsigned;
public:
explicit WaveTrackVZoomHandle
(const std::shared_ptr<WaveTrack> &pTrack, const wxRect &rect, int y);
HitTestPreview HitPreview(const wxMouseState &state);
WaveTrackVZoomHandle &operator=(const WaveTrackVZoomHandle&) = default;
static bool IsDragZooming(int zoomStart, int zoomEnd);
bool IsDragZooming(int zoomStart, int zoomEnd);
using DoZoomFunction = void (*)( AudacityProject *pProject,
WaveTrack *pTrack,
@ -37,58 +33,22 @@ public:
const wxRect &rect, int zoomStart, int zoomEnd,
bool fixedMousePoint);
virtual ~WaveTrackVZoomHandle();
std::shared_ptr<WaveTrack> GetTrack() const { return mpTrack.lock(); }
void Enter(bool forward) override;
Result Click
(const TrackPanelMouseEvent &event, AudacityProject *pProject) override;
Result Drag
(const TrackPanelMouseEvent &event, AudacityProject *pProject) override;
static Result DoDrag(
Result DoDrag(
const TrackPanelMouseEvent &event, AudacityProject *pProject,
int zoomStart, int &zoomEnd );
HitTestPreview Preview
(const TrackPanelMouseState &state, const AudacityProject *pProject)
override;
Result Release
(const TrackPanelMouseEvent &event, AudacityProject *pProject,
wxWindow *pParent) override;
static Result DoRelease(
Result DoRelease(
const TrackPanelMouseEvent &event, AudacityProject *pProject,
wxWindow *pParent, WaveTrack *pTrack, const wxRect &mRect,
DoZoomFunction doZoom, PopupMenuTable &table,
int zoomStart, int zoomEnd );
Result Cancel(AudacityProject *pProject) override;
private:
// TrackPanelDrawable implementation
void Draw(
TrackPanelDrawingContext &context,
const wxRect &rect, unsigned iPass ) override;
static void DoDraw(
void DoDraw(
TrackPanelDrawingContext &context,
const wxRect &rect, unsigned iPass, int zoomStart, int zoomEnd );
wxRect DrawingArea(
const wxRect &rect, const wxRect &panelRect, unsigned iPass ) override;
static wxRect DoDrawingArea(
wxRect DoDrawingArea(
const wxRect &rect, const wxRect &panelRect, unsigned iPass );
std::weak_ptr<WaveTrack> mpTrack;
int mZoomStart{}, mZoomEnd{};
wxRect mRect{};
friend class SpectrumVZoomHandle;
friend class WaveformVZoomHandle;
};
#include "../../../../widgets/PopupMenuTable.h" // to inherit

View File

@ -145,8 +145,10 @@ static DoGetWaveTrackView registerDoGetWaveTrackView;
std::shared_ptr<TrackVRulerControls> WaveTrackView::DoGetVRulerControls()
{
return
std::make_shared<WaveTrackVRulerControls>( shared_from_this() );
// This should never be called because of delegation to the spectrum or
// waveform sub-view
wxASSERT( false );
return {};
}
#undef PROFILE_WAVEFORM

View File

@ -49,8 +49,6 @@ private:
static void DoUpdateVRuler( const wxRect &rect, const WaveTrack *wt );
friend class WaveTrackVRulerControls;
std::weak_ptr<WaveformVZoomHandle> mVZoomHandle;
};