diff --git a/data/ui_pictures.qrc b/data/ui_pictures.qrc
index 1a0f84c..4e7e83e 100644
--- a/data/ui_pictures.qrc
+++ b/data/ui_pictures.qrc
@@ -14,6 +14,7 @@
images/layer_down.png
images/layer_rename.png
images/layer_up.png
+ images/auto.png
images/tab_atmosphere.png
diff --git a/src/editing/common/freeformhelper.cpp b/src/editing/common/freeformhelper.cpp
index 8d191d6..5ea3724 100644
--- a/src/editing/common/freeformhelper.cpp
+++ b/src/editing/common/freeformhelper.cpp
@@ -39,15 +39,15 @@ bool FreeFormHelper::eventFilter(QObject* object, QEvent* event)
if (form_size.width() > 1400 && form_size.height() > 900)
{
- preview_size = QSize(300, 300);
+ preview_size = QSize(320, 320);
}
else if (form_size.width() < 1000 || form_size.height() < 700)
{
- preview_size = QSize(160, 160);
+ preview_size = QSize(200, 200);
}
else
{
- preview_size = QSize(220, 220);
+ preview_size = QSize(260, 260);
}
for (int i = 0; i < _previews.size(); i++)
diff --git a/src/editing/common/freelayerhelper.cpp b/src/editing/common/freelayerhelper.cpp
index a9a95e7..9e92ac6 100644
--- a/src/editing/common/freelayerhelper.cpp
+++ b/src/editing/common/freelayerhelper.cpp
@@ -67,12 +67,26 @@ void FreeLayerHelper::setDelButton(QPushButton* button)
void FreeLayerHelper::setDownButton(QPushButton* button)
{
- connect(button, SIGNAL(clicked()), this, SLOT(moveLayerDown()));
+ if (_reverse)
+ {
+ connect(button, SIGNAL(clicked()), this, SLOT(moveLayerDown()));
+ }
+ else
+ {
+ connect(button, SIGNAL(clicked()), this, SLOT(moveLayerUp()));
+ }
}
void FreeLayerHelper::setUpButton(QPushButton* button)
{
- connect(button, SIGNAL(clicked()), this, SLOT(moveLayerUp()));
+ if (_reverse)
+ {
+ connect(button, SIGNAL(clicked()), this, SLOT(moveLayerUp()));
+ }
+ else
+ {
+ connect(button, SIGNAL(clicked()), this, SLOT(moveLayerDown()));
+ }
}
void FreeLayerHelper::addLayer()
@@ -88,16 +102,30 @@ void FreeLayerHelper::deleteLayer()
{
layersDeleteLayer(_layers, _selected);
emit(layersChanged());
+ refreshLayers();
}
- refreshLayers();
}
void FreeLayerHelper::moveLayerDown()
{
+ if (_selected > 0)
+ {
+ layersMove(_layers, _selected, _selected - 1);
+ _selected--;
+ emit(layersChanged());
+ refreshLayers();
+ }
}
void FreeLayerHelper::moveLayerUp()
{
+ if (_selected >= 0 && _selected < layersCount(_layers) - 1)
+ {
+ layersMove(_layers, _selected, _selected + 1);
+ _selected++;
+ emit(layersChanged());
+ refreshLayers();
+ }
}
void FreeLayerHelper::tableSelectionChanged(int row, int)
diff --git a/src/editing/common/mainwindow.cpp b/src/editing/common/mainwindow.cpp
index 6b9f392..dcae771 100644
--- a/src/editing/common/mainwindow.cpp
+++ b/src/editing/common/mainwindow.cpp
@@ -15,7 +15,6 @@
#include "basepreview.h"
#include "formclouds.h"
#include "formatmosphere.h"
-#include "formtextures.h"
#include "formwater.h"
#include "formrender.h"
@@ -92,16 +91,12 @@ MainWindow::MainWindow() :
connect(ui->action_explore, SIGNAL(triggered()), this, SLOT(explore3D()));
connect(ui->action_quick_render, SIGNAL(triggered()), this, SLOT(quickPreview()));
connect(ui->action_final_render, SIGNAL(triggered()), this, SLOT(finalRender()));
+ connect(ui->action_last_render, SIGNAL(triggered()), this, SLOT(showLastRender()));
connect(ui->action_file_new, SIGNAL(triggered()), this, SLOT(fileNew()));
connect(ui->action_file_save, SIGNAL(triggered()), this, SLOT(fileSave()));
connect(ui->action_file_load, SIGNAL(triggered()), this, SLOT(fileLoad()));
connect(ui->action_about, SIGNAL(triggered()), this, SLOT(showAboutDialog()));
- form = new FormTextures(ui->tabs);
- ui->tabs->addTab(form, QIcon(getDataPath("images/tab_textures.png")), tr("Textures"));
- QObject::connect(form, SIGNAL(configApplied()), this, SLOT(refreshAll()), Qt::QueuedConnection);
- _forms.append(form);
-
form = new FormWater(ui->tabs);
ui->tabs->addTab(form, QIcon(getDataPath("images/tab_water.png")), tr("Water"));
QObject::connect(form, SIGNAL(configApplied()), this, SLOT(refreshAll()), Qt::QueuedConnection);
diff --git a/src/editing/textures/maintexturesform.cpp b/src/editing/textures/maintexturesform.cpp
index 0effdd3..42579c1 100644
--- a/src/editing/textures/maintexturesform.cpp
+++ b/src/editing/textures/maintexturesform.cpp
@@ -12,13 +12,6 @@ MainTexturesForm::MainTexturesForm(QWidget *parent) : QWidget(parent), ui(new Ui
ui->setupUi(this);
- form_helper = new FreeFormHelper(this);
- form_helper->setApplyButton(ui->button_apply);
- form_helper->setRevertButton(ui->button_revert);
- form_helper->setExploreButton(ui->button_explore);
- form_helper->setRenderButton(ui->button_render);
- form_helper->startManaging();
-
layer_helper = new FreeLayerHelper(textures->layers, true);
layer_helper->setLayerTable(ui->layersGrid);
layer_helper->setAddButton(ui->layer_add);
@@ -26,8 +19,16 @@ MainTexturesForm::MainTexturesForm(QWidget *parent) : QWidget(parent), ui(new Ui
layer_helper->setDownButton(ui->layer_down);
layer_helper->setUpButton(ui->layer_up);
connect(layer_helper, SIGNAL(tableUpdateNeeded()), this, SLOT(updateLayers()));
- connect(layer_helper, SIGNAL(layersChanged()), form_helper, SLOT(processDataChange()));
connect(layer_helper, SIGNAL(selectionChanged(int)), this, SLOT(selectLayer(int)));
+
+ form_helper = new FreeFormHelper(this);
+ form_helper->setApplyButton(ui->button_apply);
+ form_helper->setRevertButton(ui->button_revert);
+ form_helper->setExploreButton(ui->button_explore);
+ form_helper->setRenderButton(ui->button_render);
+ form_helper->startManaging();
+
+ connect(layer_helper, SIGNAL(layersChanged()), form_helper, SLOT(processDataChange()));
}
MainTexturesForm::~MainTexturesForm()
diff --git a/src/editing/textures/maintexturesform.ui b/src/editing/textures/maintexturesform.ui
index 79b545b..f3db5cb 100644
--- a/src/editing/textures/maintexturesform.ui
+++ b/src/editing/textures/maintexturesform.ui
@@ -77,11 +77,6 @@
Material
-
-
- Modify terrain
-
-
-
@@ -186,13 +181,13 @@
-
-
+
- Move layer down
+ Move layer up
- :/buttons/logo/images/layer_down.png:/buttons/logo/images/layer_down.png
+ :/buttons/logo/images/layer_up.png:/buttons/logo/images/layer_up.png
@@ -203,13 +198,13 @@
-
-
+
- Move layer up
+ Move layer down
- :/buttons/logo/images/layer_up.png:/buttons/logo/images/layer_up.png
+ :/buttons/logo/images/layer_down.png:/buttons/logo/images/layer_down.png
@@ -401,6 +396,17 @@
true
+
-
+
+
+ Load preset
+
+
+
+ :/buttons/logo/images/auto.png:/buttons/logo/images/auto.png
+
+
+
-
diff --git a/src/rendering/render.c b/src/rendering/render.c
index cf3dac3..54113b1 100644
--- a/src/rendering/render.c
+++ b/src/rendering/render.c
@@ -86,8 +86,6 @@ typedef struct
RenderArea* area;
} RenderChunk;
-#define RENDER_INVERSE 1
-
static void _callbackStart(int width, int height, Color background) {}
static void _callbackDraw(int x, int y, Color col) {}
static void _callbackUpdate(double progress) {}
@@ -602,13 +600,9 @@ void* _renderPostProcessChunk(void* data)
RenderFragment* fragment;
RenderChunk* chunk = (RenderChunk*)data;
-#ifdef RENDER_INVERSE
- for (y = chunk->area->params.height * chunk->area->params.antialias - 1 - chunk->starty; y >= chunk->area->params.height * chunk->area->params.antialias - 1 - chunk->endy; y--)
-#else
- for (y = chunk->starty; y <= chunk->endy; y++)
-#endif
- {
- for (x = chunk->startx; x <= chunk->endx; x++)
+ for (x = chunk->startx; x <= chunk->endx; x++)
+{
+ for (y = chunk->starty; y <= chunk->endy; y++)
{
fragment = chunk->area->pixels + (y * chunk->area->params.width * chunk->area->params.antialias + x);
if (fragment->flags.dirty)
@@ -681,7 +675,7 @@ void renderPostProcess(RenderArea* area, int nbchunks)
running = 0;
loops = 0;
- while ((y < ny && !area->renderer->render_interrupt) || running > 0)
+ while ((x < nx && !area->renderer->render_interrupt) || running > 0)
{
timeSleepMs(50);
@@ -703,7 +697,7 @@ void renderPostProcess(RenderArea* area, int nbchunks)
area->renderer->render_progress = 0.1 + ((double)area->pixel_done / (double)area->pixel_count) * 0.9;
- if (y < ny && !chunks[i].thread && !area->renderer->render_interrupt)
+ if (x < nx && !chunks[i].thread && !area->renderer->render_interrupt)
{
chunks[i].finished = 0;
chunks[i].interrupt = 0;
@@ -729,10 +723,10 @@ void renderPostProcess(RenderArea* area, int nbchunks)
chunks[i].thread = threadCreate(_renderPostProcessChunk, (void*)(chunks + i));
running++;
- if (++x >= nx)
+ if (++y >= ny)
{
- y++;
- x = 0;
+ x++;
+ y = 0;
}
}
}