Skip to content

Commit

Permalink
Connect WaveTrackMeter to the data stream
Browse files Browse the repository at this point in the history
  • Loading branch information
Paul-Licameli committed Jun 2, 2024
1 parent c2e4e05 commit 551249a
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 2 deletions.
32 changes: 32 additions & 0 deletions src/tracks/playabletrack/wavetrack/ui/WaveTrackMeter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include "Decibels.h"
#include "PeakAndRmsMeter.h"
#include "../../../../widgets/MeterPainter.h"
#include "TransportUtilities.h"
#include "WaveTrack.h"

#include <wx/dc.h>
Expand Down Expand Up @@ -55,6 +56,16 @@ int ChooseBgColor(bool selected) {

const AttachedTrackObjects::RegisteredFactory key{
[](Track &track){ return std::make_shared<WaveTrackMeter>(); } };

TransportUtilities::GetTrackMeters::WrapperScope scope {
[](const auto &prevFn){ return [prevFn](WaveTrack &track){
MeterPtrs results;
if (prevFn)
results = prevFn(track);
results.push_back(WaveTrackMeter::Get(track).weak_from_this());
return results;
}; }
};
}

struct WaveTrackMeter::Impl{
Expand Down Expand Up @@ -123,3 +134,24 @@ void WaveTrackMeter::Draw(wxDC &dc, wxRect rect, bool selected) {
meter.mStats[i]);
}
}

void WaveTrackMeter::Update(unsigned numChannels,
unsigned long numFrames, const float *sampleData, bool interleaved)
{
mpImpl->mpMeter->Update(numChannels, numFrames, sampleData, interleaved);
}

bool WaveTrackMeter::IsDisabled() const
{
return mpImpl->mpMeter->IsDisabled();
}

void WaveTrackMeter::Clear()
{
mpImpl->mpMeter->Clear();
}

void WaveTrackMeter::Reset(double sampleRate, bool resetClipping)
{
mpImpl->mpMeter->Reset(sampleRate, resetClipping);
}
13 changes: 11 additions & 2 deletions src/tracks/playabletrack/wavetrack/ui/WaveTrackMeter.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#ifndef __AUDACITY_WAVE_TRACK_METER__
#define __AUDACITY_WAVE_TRACK_METER__

#include "Meter.h"
#include "TrackAttachment.h"
#include <memory>

Expand All @@ -18,17 +19,25 @@ class wxDC;
struct wxRect;

class WaveTrackMeter final
: public TrackAttachment
: public Meter
, public TrackAttachment
, public std::enable_shared_from_this<WaveTrackMeter>
{
public:
static WaveTrackMeter &Get(WaveTrack &track);

WaveTrackMeter();
~WaveTrackMeter();
~WaveTrackMeter() override;

void Draw(wxDC &dc, wxRect rect, bool selected);

void Update(unsigned numChannels,
unsigned long numFrames, const float *sampleData, bool interleaved)
override;
bool IsDisabled() const override;
void Clear() override;
void Reset(double sampleRate, bool resetClipping) override;

private:
struct Impl;
const std::unique_ptr<Impl> mpImpl;
Expand Down

0 comments on commit 551249a

Please sign in to comment.