diff options
Diffstat (limited to 'src/client/requestbroker/ThumbRenderRequest.cpp')
| -rw-r--r-- | src/client/requestbroker/ThumbRenderRequest.cpp | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/client/requestbroker/ThumbRenderRequest.cpp b/src/client/requestbroker/ThumbRenderRequest.cpp new file mode 100644 index 0000000..e239883 --- /dev/null +++ b/src/client/requestbroker/ThumbRenderRequest.cpp @@ -0,0 +1,56 @@ +#include <typeinfo> +#include "ThumbRenderRequest.h" +#include "client/GameSave.h" +#include "graphics/Graphics.h" +#include "search/Thumbnail.h" +#include "simulation/SaveRenderer.h" + +ThumbRenderRequest::ThumbRenderRequest(GameSave * save, bool decorations, bool fire, int width, int height, ListenerHandle listener): + RequestBroker::Request(ThumbnailRender, listener) +{ + Save = save; + Width = width; + Height = height; + Decorations = decorations; + Fire = fire; +} + +RequestBroker::ProcessResponse ThumbRenderRequest::Process(RequestBroker & rb) +{ +#ifdef DEBUG + std::cout << typeid(*this).name() << " Processing render request" << std::endl; +#endif + Thumbnail * thumbnail = SaveRenderer::Ref().Render(Save, Decorations, Fire); + + delete Save; + Save = NULL; + + if(thumbnail) + { + thumbnail->Resize(Width, Height); + ResultObject = (void*)thumbnail; + rb.requestComplete((Request*)this); + return RequestBroker::Finished; + } + else + { + return RequestBroker::Failed; + } + return RequestBroker::Failed; +} + +ThumbRenderRequest::~ThumbRenderRequest() +{ + if(Save) + delete Save; +} + +void ThumbRenderRequest::Cleanup() +{ + Request::Cleanup(); + if(ResultObject) + { + delete ((VideoBuffer*)ResultObject); + ResultObject = NULL; + } +}
\ No newline at end of file |
