summaryrefslogtreecommitdiff
path: root/src/client/requestbroker/ThumbRenderRequest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/requestbroker/ThumbRenderRequest.cpp')
-rw-r--r--src/client/requestbroker/ThumbRenderRequest.cpp56
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