2012-01-06 16:09:03 +00:00
|
|
|
#include "formrender.h"
|
|
|
|
|
2013-08-23 22:50:56 +00:00
|
|
|
#include <QPushButton>
|
|
|
|
|
2012-01-06 16:09:03 +00:00
|
|
|
#include "dialogrender.h"
|
2012-01-27 23:01:21 +00:00
|
|
|
#include "inputcamera.h"
|
2012-04-12 20:02:31 +00:00
|
|
|
#include "tools.h"
|
2013-12-10 21:32:58 +00:00
|
|
|
#include "DesktopScenery.h"
|
2013-11-07 08:37:11 +00:00
|
|
|
#include "PackStream.h"
|
2014-06-12 15:45:59 +00:00
|
|
|
#include "SoftwareCanvasRenderer.h"
|
2013-11-12 22:15:35 +00:00
|
|
|
#include "BasePreview.h"
|
2013-11-15 22:26:44 +00:00
|
|
|
#include "CloudsDefinition.h"
|
2013-11-14 17:47:03 +00:00
|
|
|
#include "CameraDefinition.h"
|
2013-11-30 17:06:41 +00:00
|
|
|
#include "SceneryTopDownPreviewRenderer.h"
|
2012-04-12 20:02:31 +00:00
|
|
|
|
2012-01-06 16:09:03 +00:00
|
|
|
/**************** Form ****************/
|
|
|
|
FormRender::FormRender(QWidget *parent) :
|
2013-04-27 19:41:57 +00:00
|
|
|
BaseForm(parent, true)
|
2012-01-06 16:09:03 +00:00
|
|
|
{
|
|
|
|
QPushButton* button;
|
|
|
|
|
2012-06-13 15:38:11 +00:00
|
|
|
_params.quality = 5;
|
|
|
|
_params.width = 800;
|
|
|
|
_params.height = 600;
|
|
|
|
_params.antialias = 1;
|
2013-11-14 17:47:03 +00:00
|
|
|
_camera = new CameraDefinition;
|
2012-12-02 11:08:56 +00:00
|
|
|
|
2012-04-02 19:38:59 +00:00
|
|
|
_renderer_inited = false;
|
2012-12-02 11:08:56 +00:00
|
|
|
|
2012-06-27 13:28:12 +00:00
|
|
|
disablePreviewsUpdate();
|
2012-01-27 23:01:21 +00:00
|
|
|
|
2013-11-30 17:06:41 +00:00
|
|
|
_preview_landscape = new BasePreview(this);
|
2013-12-10 21:32:58 +00:00
|
|
|
_preview_landscape_renderer = new SceneryTopDownPreviewRenderer(DesktopScenery::getCurrent());
|
2012-04-12 20:02:31 +00:00
|
|
|
addPreview(_preview_landscape, QString(tr("Top-down preview")));
|
2013-11-30 17:06:41 +00:00
|
|
|
_preview_landscape->setRenderer(_preview_landscape_renderer);
|
2012-12-02 11:08:56 +00:00
|
|
|
|
2013-04-27 19:41:57 +00:00
|
|
|
addInput(new InputCamera(this, tr("Camera"), _camera));
|
2012-06-13 15:38:11 +00:00
|
|
|
addInputInt(tr("Quality"), &_params.quality, 1, 10, 1, 1);
|
2014-08-18 15:16:17 +00:00
|
|
|
addInputInt(tr("Image width"), &_params.width, 100, 4000, 10, 100);
|
|
|
|
addInputInt(tr("Image height"), &_params.height, 100, 3000, 10, 100);
|
2012-06-13 15:38:11 +00:00
|
|
|
addInputInt(tr("Anti aliasing"), &_params.antialias, 1, 4, 1, 1);
|
2012-01-06 16:09:03 +00:00
|
|
|
|
2012-02-28 13:45:11 +00:00
|
|
|
button = addButton(tr("Start new render"));
|
2012-01-06 16:09:03 +00:00
|
|
|
connect(button, SIGNAL(clicked()), this, SLOT(startRender()));
|
2012-02-28 13:45:11 +00:00
|
|
|
button = addButton(tr("Show last render"));
|
2012-01-06 16:09:03 +00:00
|
|
|
connect(button, SIGNAL(clicked()), this, SLOT(showRender()));
|
|
|
|
|
|
|
|
revertConfig();
|
|
|
|
}
|
|
|
|
|
2012-04-02 19:38:59 +00:00
|
|
|
FormRender::~FormRender()
|
|
|
|
{
|
2013-11-14 17:47:03 +00:00
|
|
|
delete _camera;
|
2012-04-02 19:38:59 +00:00
|
|
|
if (_renderer_inited)
|
|
|
|
{
|
2013-12-09 10:59:57 +00:00
|
|
|
delete _renderer;
|
2012-04-02 19:38:59 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2012-06-27 10:30:00 +00:00
|
|
|
void FormRender::savePack(PackStream* stream)
|
|
|
|
{
|
|
|
|
BaseForm::savePack(stream);
|
2012-12-02 11:08:56 +00:00
|
|
|
|
2013-11-03 12:00:31 +00:00
|
|
|
stream->write(&_params.width);
|
|
|
|
stream->write(&_params.height);
|
|
|
|
stream->write(&_params.antialias);
|
|
|
|
stream->write(&_params.quality);
|
2012-06-27 10:30:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void FormRender::loadPack(PackStream* stream)
|
|
|
|
{
|
|
|
|
BaseForm::loadPack(stream);
|
2012-12-02 11:08:56 +00:00
|
|
|
|
2013-11-03 12:00:31 +00:00
|
|
|
stream->read(&_params.width);
|
|
|
|
stream->read(&_params.height);
|
|
|
|
stream->read(&_params.antialias);
|
|
|
|
stream->read(&_params.quality);
|
2012-12-02 11:08:56 +00:00
|
|
|
|
2012-06-27 10:30:00 +00:00
|
|
|
revertConfig();
|
|
|
|
}
|
|
|
|
|
2012-01-27 23:01:21 +00:00
|
|
|
void FormRender::revertConfig()
|
|
|
|
{
|
2013-12-10 21:32:58 +00:00
|
|
|
DesktopScenery::getCurrent()->getCamera(_camera);
|
2012-01-27 23:01:21 +00:00
|
|
|
BaseForm::revertConfig();
|
|
|
|
}
|
|
|
|
|
|
|
|
void FormRender::applyConfig()
|
|
|
|
{
|
2013-12-10 21:32:58 +00:00
|
|
|
DesktopScenery::getCurrent()->setCamera(_camera);
|
2012-01-27 23:01:21 +00:00
|
|
|
BaseForm::applyConfig();
|
|
|
|
}
|
|
|
|
|
|
|
|
void FormRender::configChangeEvent()
|
|
|
|
{
|
2013-11-14 17:47:03 +00:00
|
|
|
_camera->validate();
|
2012-01-27 23:01:21 +00:00
|
|
|
BaseForm::configChangeEvent();
|
|
|
|
}
|
|
|
|
|
2012-04-02 19:38:59 +00:00
|
|
|
void FormRender::startQuickRender()
|
|
|
|
{
|
|
|
|
if (_renderer_inited)
|
|
|
|
{
|
2013-12-09 10:59:57 +00:00
|
|
|
delete _renderer;
|
2012-04-02 19:38:59 +00:00
|
|
|
}
|
2014-08-20 12:23:35 +00:00
|
|
|
|
|
|
|
RenderConfig config(400, 300, 1, 3);
|
|
|
|
|
2014-06-12 15:45:59 +00:00
|
|
|
_renderer = new SoftwareCanvasRenderer();
|
|
|
|
_renderer->setScenery(DesktopScenery::getCurrent());
|
2014-08-20 12:23:35 +00:00
|
|
|
_renderer->setConfig(config);
|
2012-04-02 19:38:59 +00:00
|
|
|
_renderer_inited = true;
|
2012-12-02 11:08:56 +00:00
|
|
|
|
2014-08-20 12:23:35 +00:00
|
|
|
DialogRender dialog(this, _renderer);
|
|
|
|
dialog.startRender();
|
2012-04-02 19:38:59 +00:00
|
|
|
}
|
|
|
|
|
2012-01-06 16:09:03 +00:00
|
|
|
void FormRender::startRender()
|
|
|
|
{
|
2012-04-02 19:38:59 +00:00
|
|
|
if (_renderer_inited)
|
|
|
|
{
|
2013-12-09 10:59:57 +00:00
|
|
|
delete _renderer;
|
2012-04-02 19:38:59 +00:00
|
|
|
}
|
2014-06-12 15:45:59 +00:00
|
|
|
_renderer = new SoftwareCanvasRenderer();
|
|
|
|
_renderer->setScenery(DesktopScenery::getCurrent());
|
2014-08-20 12:23:35 +00:00
|
|
|
_renderer->setConfig(_params);
|
2012-04-02 19:38:59 +00:00
|
|
|
_renderer_inited = true;
|
2012-12-02 11:08:56 +00:00
|
|
|
|
2014-08-20 12:23:35 +00:00
|
|
|
DialogRender dialog(this, _renderer);
|
|
|
|
dialog.startRender();
|
2012-01-06 16:09:03 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void FormRender::showRender()
|
|
|
|
{
|
2012-04-02 19:38:59 +00:00
|
|
|
if (_renderer_inited)
|
|
|
|
{
|
2014-08-20 12:23:35 +00:00
|
|
|
DialogRender dialog(this, _renderer);
|
|
|
|
dialog.loadLastRender();
|
2012-04-02 19:38:59 +00:00
|
|
|
}
|
2012-01-06 16:09:03 +00:00
|
|
|
}
|