AronaSlate/Source/Arona/UI/Widget/PatternThumbnail/SSamplePatternThumbnail.h

45 lines
1023 B
C++

// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "SCompoundWidget.h"
#include "SPatternThumbnail.h"
#include "Render/UpdatableTexture.h"
#include "UI/Widget/WaveformViewer.h"
class FSampler;
class FSamplePatternWaveformHandle : public IWaveformHandle
{
public:
FSamplePatternWaveformHandle(FSampler* InSampler)
: Sampler(InSampler)
{
}
FSampler* Sampler = nullptr;
FWaveform* RenderData = nullptr;
virtual TArrayView<const FSamplePeak> GetWaveform(int32 SizeX) override;
virtual bool NeedUpdate() const override;
};
/**
*
*/
class ARONA_API SSamplePatternThumbnail : public SPatternThumbnail
{
public:
SLATE_BEGIN_ARGS(SSamplePatternThumbnail)
{}
SLATE_END_ARGS()
/** Constructs this widget with InArgs */
void Construct(const FArguments& InArgs, FSampler* InSampler);
virtual void Redraw() override;
private:
TSharedPtr<FSamplePatternWaveformHandle> WaveformHandle;
TSharedPtr<SWaveformViewer> WaveformViewer;
};