1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-11-14 09:03:54 +01:00

Move drawing code for snap guidelines

This commit is contained in:
Paul Licameli
2019-06-21 15:10:11 -04:00
parent e6dae33038
commit dc216d669b
9 changed files with 55 additions and 108 deletions

View File

@@ -27,7 +27,9 @@ Paul Licameli split from TrackPanel.cpp
#include "../../RefreshCode.h"
#include "../../SelectUtilities.h"
#include "../../SelectionState.h"
#include "../../TrackArtist.h"
#include "../../TrackPanel.h"
#include "../../TrackPanelDrawingContext.h"
#include "../../TrackPanelMouseEvent.h"
#include "../../ViewInfo.h"
#include "../../WaveClip.h"
@@ -1009,19 +1011,30 @@ UIHandle::Result SelectHandle::Cancel(AudacityProject *pProject)
return RefreshCode::RefreshAll;
}
void SelectHandle::DrawExtras
(DrawingPass pass, wxDC * dc, const wxRegion &, const wxRect &)
void SelectHandle::Draw(
TrackPanelDrawingContext &context,
const wxRect &rect, unsigned iPass )
{
if (pass == Panel) {
if ( iPass == TrackArtist::PassSnapping ) {
auto &dc = context.dc;
// Draw snap guidelines if we have any
if ( mSnapManager ) {
auto coord1 = (mUseSnap || IsClicked()) ? mSnapStart.outCoord : -1;
auto coord2 = (!mUseSnap || !IsClicked()) ? -1 : mSnapEnd.outCoord;
mSnapManager->Draw( dc, coord1, coord2 );
mSnapManager->Draw( &dc, coord1, coord2 );
}
}
}
wxRect SelectHandle::DrawingArea(
const wxRect &rect, const wxRect &panelRect, unsigned iPass )
{
if ( iPass == TrackArtist::PassSnapping )
return MaximizeHeight( rect, panelRect );
else
return rect;
}
void SelectHandle::Connect(AudacityProject *pProject)
{
mTimerHandler = std::make_shared<TimerHandler>( this, pProject );

View File

@@ -73,11 +73,6 @@ public:
Result Cancel(AudacityProject*) override;
void DrawExtras
(DrawingPass pass,
wxDC * dc, const wxRegion &updateRegion, const wxRect &panelRect)
override;
static UIHandle::Result NeedChangeHighlight
(const SelectHandle &oldState,
const SelectHandle &newState);
@@ -116,6 +111,15 @@ public:
(SpectrumAnalyst &analyst,
ViewInfo &viewInfo, const WaveTrack *pTrack, bool up);
private:
// TrackPanelDrawable implementation
void Draw(
TrackPanelDrawingContext &context,
const wxRect &rect, unsigned iPass ) override;
wxRect DrawingArea(
const wxRect &rect, const wxRect &panelRect, unsigned iPass ) override;
//void ResetFreqSelectionPin
// (const ViewInfo &viewInfo, double hintFrequency, bool logF);

View File

@@ -21,6 +21,8 @@ Paul Licameli split from TrackPanel.cpp
#include "../../ProjectHistory.h"
#include "../../ProjectSettings.h"
#include "../../RefreshCode.h"
#include "../../TrackArtist.h"
#include "../../TrackPanelDrawingContext.h"
#include "../../TrackPanelMouseEvent.h"
#include "../../UndoManager.h"
#include "../../WaveClip.h"
@@ -848,14 +850,25 @@ UIHandle::Result TimeShiftHandle::Cancel(AudacityProject *pProject)
return RefreshCode::RefreshAll;
}
void TimeShiftHandle::DrawExtras
(DrawingPass pass,
wxDC * dc, const wxRegion &, const wxRect &)
void TimeShiftHandle::Draw(
TrackPanelDrawingContext &context,
const wxRect &rect, unsigned iPass )
{
if (pass == Panel) {
if ( iPass == TrackArtist::PassSnapping ) {
auto &dc = context.dc;
// Draw snap guidelines if we have any
if ( mSnapManager )
mSnapManager->Draw
( dc, mClipMoveState.snapLeft, mClipMoveState.snapRight );
if ( mSnapManager ) {
mSnapManager->Draw(
&dc, mClipMoveState.snapLeft, mClipMoveState.snapRight );
}
}
}
wxRect TimeShiftHandle::DrawingArea(
const wxRect &rect, const wxRect &panelRect, unsigned iPass )
{
if ( iPass == TrackArtist::PassSnapping )
return MaximizeHeight( rect, panelRect );
else
return rect;
}

View File

@@ -102,13 +102,17 @@ public:
Result Cancel(AudacityProject *pProject) override;
void DrawExtras
(DrawingPass pass,
wxDC * dc, const wxRegion &, const wxRect &panelRect) override;
bool StopsOnKeystroke() override { return true; }
private:
// TrackPanelDrawable implementation
void Draw(
TrackPanelDrawingContext &context,
const wxRect &rect, unsigned iPass ) override;
wxRect DrawingArea(
const wxRect &rect, const wxRect &panelRect, unsigned iPass ) override;
std::shared_ptr<Track> mCapturedTrack;
wxRect mRect{};