This repository has been archived on 2025-03-20. You can view files and clone it, but cannot push or open issues or pull requests.
The-Powder-Toy/src/client/ThumbnailRendererTask.cpp

52 lines
972 B
C++

#include "ThumbnailRendererTask.h"
#include <cmath>
#include "graphics/Graphics.h"
#include "simulation/SaveRenderer.h"
#include "client/GameSave.h"
int ThumbnailRendererTask::queueSize = 0;
int ThumbnailRendererTask::QueueSize()
{
return queueSize;
}
ThumbnailRendererTask::ThumbnailRendererTask(GameSave const &save, Vec2<int> size, bool decorations, bool fire):
save(std::make_unique<GameSave>(save)),
size(size),
decorations(decorations),
fire(fire)
{
queueSize += 1;
}
ThumbnailRendererTask::~ThumbnailRendererTask()
{
queueSize -= 1;
}
bool ThumbnailRendererTask::doWork()
{
thumbnail = std::unique_ptr<VideoBuffer>(SaveRenderer::Ref().Render(save.get(), decorations, fire));
if (thumbnail)
{
thumbnail->ResizeToFit(size, true);
size = thumbnail->Size();
return true;
}
else
{
return false;
}
}
std::unique_ptr<VideoBuffer> ThumbnailRendererTask::Finish()
{
auto ptr = std::move(thumbnail);
AbandonableTask::Finish();
return ptr;
}