2015-09-09 22:40:47 +00:00
|
|
|
#include "Thread.h"
|
|
|
|
#include "SoftwareCanvasRenderer.h"
|
|
|
|
|
2015-11-09 21:30:46 +00:00
|
|
|
class RenderThread : public Thread {
|
|
|
|
public:
|
|
|
|
RenderThread(SoftwareCanvasRenderer *renderer, const char *outputpath)
|
|
|
|
: renderer(renderer), outputpath(outputpath) {
|
2015-09-09 22:40:47 +00:00
|
|
|
}
|
|
|
|
|
2015-11-09 21:30:46 +00:00
|
|
|
virtual void run() override {
|
2015-09-09 22:40:47 +00:00
|
|
|
renderer->render();
|
|
|
|
}
|
|
|
|
|
2015-11-09 21:30:46 +00:00
|
|
|
private:
|
2015-09-09 22:40:47 +00:00
|
|
|
SoftwareCanvasRenderer *renderer;
|
|
|
|
const char *outputpath;
|
|
|
|
};
|
|
|
|
|
2015-11-09 21:30:46 +00:00
|
|
|
void startRender(SoftwareCanvasRenderer *renderer, const char *outputpath) {
|
2015-09-09 22:40:47 +00:00
|
|
|
RenderThread thread(renderer, outputpath);
|
|
|
|
|
|
|
|
printf("\rRendering %s ... \n", outputpath);
|
|
|
|
thread.start();
|
|
|
|
|
2015-11-09 21:30:46 +00:00
|
|
|
while (thread.isWorking()) {
|
2015-09-09 22:40:47 +00:00
|
|
|
Thread::timeSleepMs(200);
|
|
|
|
|
|
|
|
printf("\rProgress : %0.1f%% ", renderer->getProgress() * 100.0);
|
|
|
|
fflush(stdout);
|
|
|
|
}
|
|
|
|
thread.join();
|
|
|
|
|
|
|
|
printf("\rSaving %s ... \n", outputpath);
|
|
|
|
remove(outputpath);
|
|
|
|
renderer->saveToDisk(outputpath);
|
|
|
|
}
|