// Copyright Epic Games, Inc. All Rights Reserved. #include "TraceServices/Model/Screenshot.h" #include "Model/ScreenshotProviderPrivate.h" #include "AnalysisServicePrivate.h" #include "Common/FormatArgs.h" namespace TraceServices { FScreenshotProvider::FScreenshotProvider(IAnalysisSession& InSession) : Session(InSession) { } TSharedPtr FScreenshotProvider::AddScreenshot(uint32 Id) { TSharedPtr NewScreenshot = Screenshots.Add(Id, MakeShared()); return NewScreenshot; } void FScreenshotProvider::AddScreenshotChunk(uint32 Id, uint32 ChunkNum, uint16 Size, const TArrayView& ChunkData) { TSharedPtr *ScreenshotPtr = Screenshots.Find(Id); if (ScreenshotPtr == nullptr) { return; } TSharedPtr Screenshot = *ScreenshotPtr; constexpr uint32 ChunkSize = TNumericLimits::Max(); check(Screenshot->Data.Num() == ChunkNum * ChunkSize); Screenshot->Data.Append(ChunkData.GetData(), Size); } const TSharedPtr FScreenshotProvider::GetScreenshot(uint32 Id) const { const TSharedPtr* ScreenshotPtr = Screenshots.Find(Id); if (ScreenshotPtr == nullptr) { return nullptr; } return *ScreenshotPtr; } FName GetScreenshotProviderName() { static const FName Name("ScreenshotProvider"); return Name; } const IScreenshotProvider& ReadScreenshotProvider(const IAnalysisSession& Session) { return *Session.ReadProvider(GetScreenshotProviderName()); } } // namespace TraceServices