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