15#include "../../../HitTestResult.h"
19#include "../../ui/ChannelView.h"
21#include "../../../RefreshCode.h"
24#include "../../../TrackArtist.h"
25#include "../../../TrackPanelDrawingContext.h"
26#include "../../../TrackPanelMouseEvent.h"
27#include "../../../UIHandle.h"
28#include "../../../widgets/Ruler.h"
29#include "../../../widgets/LinearUpdater.h"
30#include "../../../widgets/LogarithmicUpdater.h"
31#include "../../../widgets/RealFormat.h"
40 static Ruler theRuler{
51 std::vector<UIHandlePtr> results;
56 auto result = std::make_shared<TimeTrackVZoomHandle>(
59 results.push_back(result);
64 std::copy(more.begin(), more.end(), std::back_inserter(results));
71 const wxRect &rect_,
unsigned iPass)
87 auto dc = &context.
dc;
98 if (
size.first < rect.GetWidth()) {
99 int adj = rr.GetWidth() -
size.first;
106 auto vruler = &
ruler();
115 const auto tt = std::static_pointer_cast<TimeTrack>(
FindTrack());
118 auto vruler = &
ruler();
121 min = tt->GetRangeLower() * 100.0;
122 max = tt->GetRangeUpper() * 100.0;
124 vruler->SetDbMirrorValue( 0.0 );
126 rect.x, rect.y, rect.x + rect.width, rect.y + rect.height - 1);
127 vruler->SetOrientation(wxVERTICAL);
128 vruler->SetRange(max,
min);
129 vruler->SetFormat(tt->GetDisplayLog()
132 vruler->SetUnits({});
133 vruler->SetLabelEdges(
false);
134 if (tt->GetDisplayLog())
140 vruler->GetMaxSize(&
size.first, &
size.second);
std::shared_ptr< Subclass > AssignUIHandlePtr(std::weak_ptr< Subclass > &holder, const std::shared_ptr< Subclass > &pNew)
static void BevelTrackInfo(wxDC &dc, bool up, const wxRect &r, bool highlight=false)
The top-level handle to an Audacity project. It serves as a source of events that other objects can b...
std::vector< UIHandlePtr > HitTest(const TrackPanelMouseState &state, const AudacityProject *pProject) override
void Draw(TrackPanelDrawingContext &context, const wxRect &rect, unsigned iPass) override
static ChannelView & Get(Channel &channel)
std::pair< int, int > vrulerSize
std::shared_ptr< Track > FindTrack()
static const LinearUpdater & Instance()
static const LogarithmicUpdater & Instance()
wxColour & Colour(int iIndex)
A kind of Track used to 'warp time'.
void Draw(TrackPanelDrawingContext &context, const wxRect &rect, unsigned iPass) override
~TimeTrackVRulerControls()
std::weak_ptr< TimeTrackVZoomHandle > mVZoomHandle
void UpdateRuler(const wxRect &rect) override
std::vector< UIHandlePtr > HitTest(const TrackPanelMouseState &state, const AudacityProject *) override
void copy(const T *src, T *dst, int32_t n)