1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
/*
* Thumbnail.cpp
*
* Created on: Apr 3, 2012
* Author: Simon
*/
#include "Thumbnail.h"
#include "simulation/Simulation.h"
#include "simulation/SaveLoader.h"
#include "Renderer.h"
Thumbnail::Thumbnail(const Thumbnail & thumb):
ID(thumb.ID),
Datestamp(thumb.Datestamp),
Data(thumb.Data),
Size(thumb.Size)
{
//Ensure the actual thumbnail data is copied
if(thumb.Data)
{
Data = (pixel *)malloc((thumb.Size.X*thumb.Size.Y) * PIXELSIZE);
memcpy(Data, thumb.Data, (thumb.Size.X*thumb.Size.Y) * PIXELSIZE);
}
else
{
Data = NULL;
}
}
Thumbnail::Thumbnail(int _id, int _datestamp, pixel * _data, ui::Point _size):
ID(_id),
Datestamp(_datestamp),
Data(_data),
Size(_size)
{
}
Thumbnail::Thumbnail(Save * save):
ID(0),
Datestamp(0),
Data(NULL),
Size(XRES+BARSIZE, YRES+MENUSIZE)
{
Graphics * g = new Graphics();
Simulation * sim = new Simulation();
Renderer * ren = new Renderer(g, sim);
sim->Load(save->GetData(), save->GetDataLength());
ren->render_parts();
int width, height;
pixel * dst;
pixel * src = g->vid;
if(SaveLoader::Info(save->GetData(), save->GetDataLength(), width, height))
goto fail;
dst = Data = (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;
}
Size = ui::Point(width*CELL, height*CELL);
fail:
delete ren;
delete sim;
delete g;
}
Thumbnail::~Thumbnail()
{
if(Data)
{
free(Data);
}
}
|