52 lines
972 B
C++
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;
|
|
}
|
|
|