34 lines
1.1 KiB
C++
34 lines
1.1 KiB
C++
#pragma once
|
|
#include "SPatternInstance.h"
|
|
#include "PeakFile/PeakFile.h"
|
|
#include "UI/Widget/WaveformViewer.h"
|
|
|
|
class SSamplePatternInstance;
|
|
|
|
class FSamplePatternInstanceWaveformHandle : public IWaveformHandle
|
|
{
|
|
public:
|
|
FSamplePatternInstanceWaveformHandle(TSharedRef<SSamplePatternInstance> InPatternInstance);
|
|
virtual ~FSamplePatternInstanceWaveformHandle() override { delete RenderData; }
|
|
TWeakPtr<SSamplePatternInstance> PatternInstanceWidget;
|
|
virtual TArrayView<const FSamplePeak> GetWaveform(int32 SizeX) override;
|
|
virtual bool NeedUpdate() const override;
|
|
|
|
TRange<AudioFrame> GetRenderRange() const;
|
|
FWaveform* RenderData = nullptr;
|
|
TRange<AudioFrame> LastRenderRange;
|
|
};
|
|
|
|
class ARONA_API SSamplePatternInstance : public SPatternInstance
|
|
{
|
|
public:
|
|
SSamplePatternInstance();
|
|
virtual void Construct(const FArguments& InArgs) override;
|
|
virtual TSharedRef<SWidget> GetViewWidget() override;
|
|
virtual void RequestUpdate() override;
|
|
protected:
|
|
virtual FReply OpenPatternMenu() override;
|
|
TSharedPtr<FSamplePatternInstanceWaveformHandle> WaveformHandle;
|
|
TSharedPtr<SWaveformViewer> WaveformViewer;
|
|
};
|