diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-06-05 19:08:35 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-06-05 19:08:35 (GMT) |
| commit | 49dafbfd263957631116557ac4fa59429390ebaa (patch) | |
| tree | d33a60331bf704db792e481d81e6bf8229e7493e /src/simulation/SaveRenderer.cpp | |
| parent | bc35d622adb0965652955b6517c17b19f41fd41f (diff) | |
| download | powder-49dafbfd263957631116557ac4fa59429390ebaa.zip powder-49dafbfd263957631116557ac4fa59429390ebaa.tar.gz | |
Use a different method for decoding saves with uncompressed object in memory for stamps and clipboard, also allows for transformation (rotation), missing failure states and code for loading it into a Simulation
Diffstat (limited to 'src/simulation/SaveRenderer.cpp')
| -rw-r--r-- | src/simulation/SaveRenderer.cpp | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/src/simulation/SaveRenderer.cpp b/src/simulation/SaveRenderer.cpp index 7a5f5c2..52dcfaf 100644 --- a/src/simulation/SaveRenderer.cpp +++ b/src/simulation/SaveRenderer.cpp @@ -18,41 +18,48 @@ SaveRenderer::SaveRenderer(){ ren = new Renderer(g, sim); } -Thumbnail * SaveRenderer::Render(unsigned char * data, int dataLength) +Thumbnail * SaveRenderer::Render(GameSave * save) { Thumbnail * tempThumb = NULL; int width, height; + width, height = save->width, save->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)) + if(sim->Load(save)) 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; } +Thumbnail * SaveRenderer::Render(unsigned char * saveData, int dataSize) +{ + GameSave * tempSave = new GameSave((char*)saveData, dataSize); + Thumbnail * thumb = Render(tempSave); + delete tempSave; + return thumb; +} + SaveRenderer::~SaveRenderer() { // TODO Auto-generated destructor stub } |
