summaryrefslogtreecommitdiff
path: root/src/simulation/SaveRenderer.cpp
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-04-03 16:08:56 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-04-03 16:08:56 (GMT)
commit838a612026c821c03e663c818d4bc9fe740febd8 (patch)
tree4b467bec3336452d8f65793b1cee31f0ffb05d2e /src/simulation/SaveRenderer.cpp
parent73c5082cbcdd3a986765723bd4182e45386ce766 (diff)
downloadpowder-838a612026c821c03e663c818d4bc9fe740febd8.zip
powder-838a612026c821c03e663c818d4bc9fe740febd8.tar.gz
Use a single instance of a background simulation for thumbnail rendering
Diffstat (limited to 'src/simulation/SaveRenderer.cpp')
-rw-r--r--src/simulation/SaveRenderer.cpp59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/simulation/SaveRenderer.cpp b/src/simulation/SaveRenderer.cpp
new file mode 100644
index 0000000..7a5f5c2
--- /dev/null
+++ b/src/simulation/SaveRenderer.cpp
@@ -0,0 +1,59 @@
+/*
+ * SaveRenderer.cpp
+ *
+ * Created on: Apr 3, 2012
+ * Author: Simon
+ */
+
+#include "SaveRenderer.h"
+#include "Graphics.h"
+#include "Simulation.h"
+#include "Renderer.h"
+#include "SaveLoader.h"
+
+
+SaveRenderer::SaveRenderer(){
+ g = new Graphics();
+ sim = new Simulation();
+ ren = new Renderer(g, sim);
+}
+
+Thumbnail * SaveRenderer::Render(unsigned char * data, int dataLength)
+{
+ Thumbnail * tempThumb = NULL;
+ int width, height;
+ pixel * pData = NULL;
+ pixel * dst;
+ pixel * src = g->vid;
+
+ g->Clear();
+ sim->clear_sim();
+ if(sim->Load(data, dataLength))
+ goto finish;
+
+ if(SaveLoader::Info(data, dataLength, width, height))
+ goto finish;
+
+ ren->render_parts();
+
+ dst = pData = (pixel *)malloc(PIXELSIZE * ((width*CELL)*(height*CELL)));
+
+ for(int i = 0; i < height*CELL; i++)
+ {
+ memcpy(dst, src, (width*CELL)*PIXELSIZE);
+ dst+=(width*CELL);///PIXELSIZE;
+ src+=XRES+BARSIZE;
+ }
+
+ tempThumb = new Thumbnail(0, 0, pData, ui::Point(width*CELL, height*CELL));
+
+finish:
+ if(pData)
+ free(pData);
+ return tempThumb;
+}
+
+SaveRenderer::~SaveRenderer() {
+ // TODO Auto-generated destructor stub
+}
+