paysages: Qt GUI (WIP)
git-svn-id: https://subversion.assembla.com/svn/thunderk/paysages@218 b1fd45b6-86a6-48da-8261-f70d1f35bdcc
This commit is contained in:
parent
a5bc77e798
commit
db453d6fa9
21 changed files with 392 additions and 14 deletions
|
@ -3,6 +3,8 @@
|
||||||
#include "inputdouble.h"
|
#include "inputdouble.h"
|
||||||
#include "inputint.h"
|
#include "inputint.h"
|
||||||
#include "inputcolor.h"
|
#include "inputcolor.h"
|
||||||
|
#include "inputcolorgradation.h"
|
||||||
|
#include "inputnoise.h"
|
||||||
|
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
#include <QHBoxLayout>
|
#include <QHBoxLayout>
|
||||||
|
@ -27,12 +29,15 @@ BaseForm::BaseForm(QWidget* parent) :
|
||||||
|
|
||||||
form = new QWidget(this);
|
form = new QWidget(this);
|
||||||
form->setLayout(new QGridLayout());
|
form->setLayout(new QGridLayout());
|
||||||
|
form->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
|
||||||
|
|
||||||
buttons = new QWidget(this);
|
buttons = new QWidget(this);
|
||||||
buttons->setLayout(new QHBoxLayout());
|
buttons->setLayout(new QHBoxLayout());
|
||||||
|
|
||||||
hlayout->addWidget(previews);
|
hlayout->addWidget(previews);
|
||||||
hlayout->addWidget(form);
|
hlayout->addWidget(form);
|
||||||
|
hlayout->setAlignment(form, Qt::AlignTop);
|
||||||
|
|
||||||
vlayout->addWidget(hwidget);
|
vlayout->addWidget(hwidget);
|
||||||
vlayout->addWidget(buttons);
|
vlayout->addWidget(buttons);
|
||||||
|
|
||||||
|
@ -93,6 +98,10 @@ void BaseForm::addInput(BaseInput* input)
|
||||||
layout->addWidget(input->preview(), row, 1);
|
layout->addWidget(input->preview(), row, 1);
|
||||||
layout->addWidget(input->control(), row, 2);
|
layout->addWidget(input->control(), row, 2);
|
||||||
|
|
||||||
|
input->label()->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||||
|
input->preview()->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||||
|
input->control()->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
|
||||||
|
|
||||||
connect(input, SIGNAL(valueChanged()), this, SLOT(applyConfigPreview()));
|
connect(input, SIGNAL(valueChanged()), this, SLOT(applyConfigPreview()));
|
||||||
|
|
||||||
input->setObjectName("_form_input_");
|
input->setObjectName("_form_input_");
|
||||||
|
@ -112,3 +121,13 @@ void BaseForm::addInputColor(QString label, Color* value)
|
||||||
{
|
{
|
||||||
addInput(new InputColor(form, label, value));
|
addInput(new InputColor(form, label, value));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BaseForm::addInputColorGradation(QString label, ColorGradation* value)
|
||||||
|
{
|
||||||
|
addInput(new InputColorGradation(form, label, value));
|
||||||
|
}
|
||||||
|
|
||||||
|
void BaseForm::addInputNoise(QString label, NoiseGenerator* value)
|
||||||
|
{
|
||||||
|
addInput(new InputNoise(form, label, value));
|
||||||
|
}
|
||||||
|
|
|
@ -16,9 +16,11 @@ public:
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
virtual void revertConfig();
|
virtual void revertConfig();
|
||||||
virtual void applyConfigPreview();
|
|
||||||
virtual void applyConfig();
|
virtual void applyConfig();
|
||||||
|
|
||||||
|
protected slots:
|
||||||
|
virtual void applyConfigPreview();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void addPreview(Preview* preview, QString label);
|
void addPreview(Preview* preview, QString label);
|
||||||
QPushButton* addButton(QString label);
|
QPushButton* addButton(QString label);
|
||||||
|
@ -26,6 +28,8 @@ protected:
|
||||||
void addInputInt(QString label, int* value, int min, int max, int small_step, int large_step);
|
void addInputInt(QString label, int* value, int min, int max, int small_step, int large_step);
|
||||||
void addInputDouble(QString label, double* value, double min, double max, double small_step, double large_step);
|
void addInputDouble(QString label, double* value, double min, double max, double small_step, double large_step);
|
||||||
void addInputColor(QString label, Color* value);
|
void addInputColor(QString label, Color* value);
|
||||||
|
void addInputColorGradation(QString label, ColorGradation* value);
|
||||||
|
void addInputNoise(QString label, NoiseGenerator* value);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QWidget* previews;
|
QWidget* previews;
|
||||||
|
|
73
gui_qt/formsky.cpp
Normal file
73
gui_qt/formsky.cpp
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
#include "formsky.h"
|
||||||
|
|
||||||
|
#include "tools.h"
|
||||||
|
|
||||||
|
#include <QColor>
|
||||||
|
#include <QSlider>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
#include "../lib_paysages/sky.h"
|
||||||
|
#include "../lib_paysages/shared/functions.h"
|
||||||
|
#include "../lib_paysages/shared/constants.h"
|
||||||
|
|
||||||
|
static SkyDefinition _definition;
|
||||||
|
|
||||||
|
/**************** Previews ****************/
|
||||||
|
class PreviewHorizon:public Preview
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
PreviewHorizon(QWidget* parent):
|
||||||
|
Preview(parent)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
protected:
|
||||||
|
QColor getColor(double x, double y)
|
||||||
|
{
|
||||||
|
Vector3 eye = {0.0, 0.0, 0.0};
|
||||||
|
Vector3 look;
|
||||||
|
|
||||||
|
look.x = cos(M_PI * (x / 128.0 + 0.5)) * cos(M_PI * (y / 256.0));
|
||||||
|
look.y = -sin(M_PI * (y / 256.0));
|
||||||
|
look.z = sin(M_PI * (x / 128.0 + 0.5)) * cos(M_PI * (y / 256.0));
|
||||||
|
|
||||||
|
return colorToQColor(skyGetColorCustom(eye, look, &_definition, NULL, NULL));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**************** Form ****************/
|
||||||
|
FormSky::FormSky(QWidget *parent):
|
||||||
|
BaseForm(parent)
|
||||||
|
{
|
||||||
|
_definition = skyCreateDefinition();
|
||||||
|
|
||||||
|
previewHorizon = new PreviewHorizon(this);
|
||||||
|
addPreview(previewHorizon, QString("Horizon preview"));
|
||||||
|
|
||||||
|
addInputDouble("Day time", &_definition.daytime, 0.0, 1.0, 0.01, 0.1);
|
||||||
|
addInputColorGradation("Sun color", &_definition.sun_color);
|
||||||
|
addInputDouble("Sun radius", &_definition.sun_radius, 0.0, 0.3, 0.01, 0.03);
|
||||||
|
addInputColorGradation("Zenith color", &_definition.zenith_color);
|
||||||
|
addInputColorGradation("Haze color", &_definition.haze_color);
|
||||||
|
addInputDouble("Haze height", &_definition.haze_height, 0.0, 1.0, 0.01, 0.1);
|
||||||
|
addInputDouble("Haze smoothing", &_definition.haze_smoothing, 0.0, 1.0, 0.01, 0.1);
|
||||||
|
|
||||||
|
revertConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
void FormSky::revertConfig()
|
||||||
|
{
|
||||||
|
skyCopyDefinition(skyGetDefinition(), &_definition);
|
||||||
|
BaseForm::revertConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
void FormSky::applyConfig()
|
||||||
|
{
|
||||||
|
skySetDefinition(_definition);
|
||||||
|
BaseForm::applyConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
void FormSky::applyConfigPreview()
|
||||||
|
{
|
||||||
|
skyValidateDefinition(&_definition);
|
||||||
|
BaseForm::applyConfigPreview();
|
||||||
|
}
|
26
gui_qt/formsky.h
Normal file
26
gui_qt/formsky.h
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
#ifndef _PAYSAGES_QT_FORMSKY_H_
|
||||||
|
#define _PAYSAGES_QT_FORMSKY_H_
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
#include "preview.h"
|
||||||
|
#include "baseform.h"
|
||||||
|
|
||||||
|
class FormSky : public BaseForm
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit FormSky(QWidget *parent = 0);
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
virtual void revertConfig();
|
||||||
|
virtual void applyConfig();
|
||||||
|
|
||||||
|
protected slots:
|
||||||
|
virtual void applyConfigPreview();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Preview* previewHorizon;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _PAYSAGES_QT_FORMSKY_H_
|
|
@ -137,6 +137,8 @@ FormWater::FormWater(QWidget *parent):
|
||||||
addInputDouble("Reflection", &_definition.reflection, 0.0, 1.0, 0.001, 0.1);
|
addInputDouble("Reflection", &_definition.reflection, 0.0, 1.0, 0.001, 0.1);
|
||||||
addInputColor("Depth color", &_definition.depth_color);
|
addInputColor("Depth color", &_definition.depth_color);
|
||||||
addInputDouble("Depth filtering", &_definition.transparency_depth, 0.0, 100.0, 0.5, 5.0);
|
addInputDouble("Depth filtering", &_definition.transparency_depth, 0.0, 100.0, 0.5, 5.0);
|
||||||
|
addInputNoise("Wave noise", _definition.height_noise);
|
||||||
|
addInputDouble("Wave factor", &_definition.height_noise_factor, 0.0, 3.0, 0.1, 1.0);
|
||||||
|
|
||||||
revertConfig();
|
revertConfig();
|
||||||
}
|
}
|
||||||
|
@ -147,8 +149,8 @@ void FormWater::revertConfig()
|
||||||
BaseForm::revertConfig();
|
BaseForm::revertConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*void FormWater::applyConfig()
|
void FormWater::applyConfig()
|
||||||
{
|
{
|
||||||
waterSetDefinition(_definition);
|
waterSetDefinition(_definition);
|
||||||
//guiUpdate();
|
BaseForm::applyConfig();
|
||||||
}*/
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@ public:
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
virtual void revertConfig();
|
virtual void revertConfig();
|
||||||
|
virtual void applyConfig();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Preview* previewCoverage;
|
Preview* previewCoverage;
|
||||||
|
|
|
@ -2,20 +2,58 @@
|
||||||
|
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
|
#include <QPainter>
|
||||||
|
#include <QColorDialog>
|
||||||
|
|
||||||
|
class ColorPreview:public QWidget
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ColorPreview(QWidget* parent):
|
||||||
|
QWidget(parent)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void paintEvent(QPaintEvent* event)
|
||||||
|
{
|
||||||
|
QPainter painter(this);
|
||||||
|
painter.fillRect(this->rect(), col);
|
||||||
|
}
|
||||||
|
QColor col;
|
||||||
|
};
|
||||||
|
|
||||||
InputColor::InputColor(QWidget* form, QString label, Color* value):
|
InputColor::InputColor(QWidget* form, QString label, Color* value):
|
||||||
BaseInput(form, label),
|
BaseInput(form, label),
|
||||||
_value(value)
|
_value(value)
|
||||||
{
|
{
|
||||||
_preview = new QWidget(form);
|
_preview = new ColorPreview(form);
|
||||||
|
_preview->setMinimumSize(50, 20);
|
||||||
_control = new QPushButton("Edit", form);
|
_control = new QPushButton("Edit", form);
|
||||||
|
_control->setMaximumWidth(150);
|
||||||
|
|
||||||
|
connect((QPushButton*)_control, SIGNAL(clicked()), this, SLOT(chooseColor()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void InputColor::applyValue()
|
void InputColor::applyValue()
|
||||||
{
|
{
|
||||||
|
_value->r = ((ColorPreview*)_preview)->col.redF();
|
||||||
|
_value->g = ((ColorPreview*)_preview)->col.greenF();
|
||||||
|
_value->b = ((ColorPreview*)_preview)->col.blueF();
|
||||||
|
_value->a = 1.0;
|
||||||
BaseInput::applyValue();
|
BaseInput::applyValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
void InputColor::revert()
|
void InputColor::revert()
|
||||||
{
|
{
|
||||||
|
((ColorPreview*)_preview)->col = QColor::fromRgbF(_value->r, _value->g, _value->b);
|
||||||
|
_preview->update();
|
||||||
|
}
|
||||||
|
|
||||||
|
void InputColor::chooseColor()
|
||||||
|
{
|
||||||
|
QColor col = QColorDialog::getColor(((ColorPreview*)_preview)->col, _control);
|
||||||
|
if (col.isValid())
|
||||||
|
{
|
||||||
|
((ColorPreview*)_preview)->col = col;
|
||||||
|
applyValue();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,9 @@ public slots:
|
||||||
protected slots:
|
protected slots:
|
||||||
virtual void applyValue();
|
virtual void applyValue();
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void chooseColor();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Color* _value;
|
Color* _value;
|
||||||
};
|
};
|
||||||
|
|
59
gui_qt/inputcolorgradation.cpp
Normal file
59
gui_qt/inputcolorgradation.cpp
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
#include "inputcolorgradation.h"
|
||||||
|
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QPushButton>
|
||||||
|
#include <QPainter>
|
||||||
|
#include <QColorDialog>
|
||||||
|
|
||||||
|
class ColorGradationPreview:public QWidget
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ColorGradationPreview(QWidget* parent):
|
||||||
|
QWidget(parent)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void paintEvent(QPaintEvent* event)
|
||||||
|
{
|
||||||
|
/*QPainter painter(this);
|
||||||
|
painter.fillRect(this->rect(), col);*/
|
||||||
|
}
|
||||||
|
ColorGradation* gradation;
|
||||||
|
};
|
||||||
|
|
||||||
|
InputColorGradation::InputColorGradation(QWidget* form, QString label, ColorGradation* value):
|
||||||
|
BaseInput(form, label),
|
||||||
|
_value(value)
|
||||||
|
{
|
||||||
|
_preview = new ColorGradationPreview(form);
|
||||||
|
_preview->setMinimumSize(200, 20);
|
||||||
|
_control = new QPushButton("Edit", form);
|
||||||
|
_control->setMaximumWidth(150);
|
||||||
|
|
||||||
|
connect((QPushButton*)_control, SIGNAL(clicked()), this, SLOT(editGradation()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void InputColorGradation::applyValue()
|
||||||
|
{
|
||||||
|
/*_value->r = ((ColorPreview*)_preview)->col.redF();
|
||||||
|
_value->g = ((ColorPreview*)_preview)->col.greenF();
|
||||||
|
_value->b = ((ColorPreview*)_preview)->col.blueF();
|
||||||
|
_value->a = 1.0;*/
|
||||||
|
BaseInput::applyValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
void InputColorGradation::revert()
|
||||||
|
{
|
||||||
|
/*((ColorPreview*)_preview)->col = QColor::fromRgbF(_value->r, _value->g, _value->b);
|
||||||
|
_preview->update();*/
|
||||||
|
}
|
||||||
|
|
||||||
|
void InputColorGradation::editGradation()
|
||||||
|
{
|
||||||
|
/*QColor col = QColorDialog::getColor(((ColorPreview*)_preview)->col, _control);
|
||||||
|
if (col.isValid())
|
||||||
|
{
|
||||||
|
((ColorPreview*)_preview)->col = col;
|
||||||
|
applyValue();
|
||||||
|
}*/
|
||||||
|
}
|
29
gui_qt/inputcolorgradation.h
Normal file
29
gui_qt/inputcolorgradation.h
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
#ifndef _PAYSAGES_QT_INPUTCOLORGRADATION_H_
|
||||||
|
#define _PAYSAGES_QT_INPUTCOLORGRADATION_H_
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
#include "baseinput.h"
|
||||||
|
|
||||||
|
#include "../lib_paysages/shared/types.h"
|
||||||
|
|
||||||
|
class InputColorGradation:public BaseInput
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
InputColorGradation(QWidget* form, QString label, ColorGradation* value);
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
virtual void revert();
|
||||||
|
|
||||||
|
protected slots:
|
||||||
|
virtual void applyValue();
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void editGradation();
|
||||||
|
|
||||||
|
private:
|
||||||
|
ColorGradation* _value;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _PAYSAGES_QT_INPUTCOLORGRADATION_H_
|
59
gui_qt/inputnoise.cpp
Normal file
59
gui_qt/inputnoise.cpp
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
#include "inputnoise.h"
|
||||||
|
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QPushButton>
|
||||||
|
#include <QPainter>
|
||||||
|
#include <QColorDialog>
|
||||||
|
|
||||||
|
class NoiseSmallPreview:public QWidget
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
NoiseSmallPreview(QWidget* parent):
|
||||||
|
QWidget(parent)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void paintEvent(QPaintEvent* event)
|
||||||
|
{
|
||||||
|
/*QPainter painter(this);
|
||||||
|
painter.fillRect(this->rect(), col);*/
|
||||||
|
}
|
||||||
|
NoiseGenerator* noise;
|
||||||
|
};
|
||||||
|
|
||||||
|
InputNoise::InputNoise(QWidget* form, QString label, NoiseGenerator* value):
|
||||||
|
BaseInput(form, label),
|
||||||
|
_value(value)
|
||||||
|
{
|
||||||
|
_preview = new NoiseSmallPreview(form);
|
||||||
|
_preview->setMinimumSize(100, 40);
|
||||||
|
_control = new QPushButton("Edit", form);
|
||||||
|
_control->setMaximumWidth(150);
|
||||||
|
|
||||||
|
connect((QPushButton*)_control, SIGNAL(clicked()), this, SLOT(editNoise()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void InputNoise::applyValue()
|
||||||
|
{
|
||||||
|
/*_value->r = ((ColorPreview*)_preview)->col.redF();
|
||||||
|
_value->g = ((ColorPreview*)_preview)->col.greenF();
|
||||||
|
_value->b = ((ColorPreview*)_preview)->col.blueF();
|
||||||
|
_value->a = 1.0;*/
|
||||||
|
BaseInput::applyValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
void InputNoise::revert()
|
||||||
|
{
|
||||||
|
/*((ColorPreview*)_preview)->col = QColor::fromRgbF(_value->r, _value->g, _value->b);
|
||||||
|
_preview->update();*/
|
||||||
|
}
|
||||||
|
|
||||||
|
void InputNoise::editNoise()
|
||||||
|
{
|
||||||
|
/*QColor col = QColorDialog::getColor(((ColorPreview*)_preview)->col, _control);
|
||||||
|
if (col.isValid())
|
||||||
|
{
|
||||||
|
((ColorPreview*)_preview)->col = col;
|
||||||
|
applyValue();
|
||||||
|
}*/
|
||||||
|
}
|
29
gui_qt/inputnoise.h
Normal file
29
gui_qt/inputnoise.h
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
#ifndef _PAYSAGES_QT_INPUTNOISE_H_
|
||||||
|
#define _PAYSAGES_QT_INPUTNOISE_H_
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
#include "baseinput.h"
|
||||||
|
|
||||||
|
#include "../lib_paysages/shared/types.h"
|
||||||
|
|
||||||
|
class InputNoise:public BaseInput
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
InputNoise(QWidget* form, QString label, NoiseGenerator* value);
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
virtual void revert();
|
||||||
|
|
||||||
|
protected slots:
|
||||||
|
virtual void applyValue();
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void editNoise();
|
||||||
|
|
||||||
|
private:
|
||||||
|
NoiseGenerator* _value;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _PAYSAGES_QT_INPUTNOISE_H_
|
|
@ -1,6 +1,7 @@
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
#include "formwater.h"
|
#include "formwater.h"
|
||||||
|
#include "formsky.h"
|
||||||
#include "formrender.h"
|
#include "formrender.h"
|
||||||
|
|
||||||
#include "../lib_paysages/shared/functions.h"
|
#include "../lib_paysages/shared/functions.h"
|
||||||
|
@ -27,6 +28,7 @@ MainWindow::MainWindow(QWidget *parent) :
|
||||||
tabs = new QTabWidget(this);
|
tabs = new QTabWidget(this);
|
||||||
tabs->addTab(new BaseForm(tabs), "Temp");
|
tabs->addTab(new BaseForm(tabs), "Temp");
|
||||||
tabs->addTab(new FormWater(tabs), "Water");
|
tabs->addTab(new FormWater(tabs), "Water");
|
||||||
|
tabs->addTab(new FormSky(tabs), "Sky");
|
||||||
tabs->addTab(new FormRender(tabs), "Render");
|
tabs->addTab(new FormRender(tabs), "Render");
|
||||||
|
|
||||||
setCentralWidget(tabs);
|
setCentralWidget(tabs);
|
||||||
|
|
|
@ -6,9 +6,11 @@ TEMPLATE = app
|
||||||
TARGET =
|
TARGET =
|
||||||
DEPENDPATH += .
|
DEPENDPATH += .
|
||||||
INCLUDEPATH += .
|
INCLUDEPATH += .
|
||||||
CONFIG += debug
|
unix:CONFIG += debug
|
||||||
|
win32:CONFIG += release
|
||||||
|
|
||||||
LIBS += -L../lib_paysages/ -lpaysages
|
unix:LIBS += -L../lib_paysages/ -lpaysages
|
||||||
|
win32:LIBS += ../libpaysages.a -lDevIL -lILU -lILUT -lglib-2.0 -lgthread-2.0
|
||||||
|
|
||||||
# Input
|
# Input
|
||||||
HEADERS += ../lib_paysages/shared/functions.h ../lib_paysages/shared/types.h \
|
HEADERS += ../lib_paysages/shared/functions.h ../lib_paysages/shared/types.h \
|
||||||
|
@ -21,7 +23,11 @@ HEADERS += ../lib_paysages/shared/functions.h ../lib_paysages/shared/types.h \
|
||||||
inputcolor.h \
|
inputcolor.h \
|
||||||
formrender.h \
|
formrender.h \
|
||||||
inputint.h \
|
inputint.h \
|
||||||
dialogrender.h
|
dialogrender.h \
|
||||||
|
inputcolorgradation.h \
|
||||||
|
formsky.h \
|
||||||
|
inputnoise.h \
|
||||||
|
tools.h
|
||||||
FORMS +=
|
FORMS +=
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
mainwindow.cpp \
|
mainwindow.cpp \
|
||||||
|
@ -33,4 +39,7 @@ SOURCES += \
|
||||||
inputcolor.cpp \
|
inputcolor.cpp \
|
||||||
formrender.cpp \
|
formrender.cpp \
|
||||||
inputint.cpp \
|
inputint.cpp \
|
||||||
dialogrender.cpp
|
dialogrender.cpp \
|
||||||
|
inputcolorgradation.cpp \
|
||||||
|
formsky.cpp \
|
||||||
|
inputnoise.cpp
|
||||||
|
|
|
@ -72,9 +72,9 @@ void Preview::doRender()
|
||||||
|
|
||||||
void Preview::redraw()
|
void Preview::redraw()
|
||||||
{
|
{
|
||||||
lock->lock();
|
//lock->lock();
|
||||||
need_rerender = 1;
|
need_rerender = 1;
|
||||||
lock->unlock();
|
//lock->unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Preview::resizeEvent(QResizeEvent* event)
|
void Preview::resizeEvent(QResizeEvent* event)
|
||||||
|
@ -134,7 +134,7 @@ void Preview::renderPixbuf()
|
||||||
done = true;
|
done = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (done)
|
if (done && (x == w - 1 || x % 10 == 0))
|
||||||
{
|
{
|
||||||
this->update();
|
this->update();
|
||||||
}
|
}
|
||||||
|
|
13
gui_qt/tools.h
Normal file
13
gui_qt/tools.h
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
#ifndef _PAYSAGES_QT_TOOLS_H_
|
||||||
|
#define _PAYSAGES_QT_TOOLS_H_
|
||||||
|
|
||||||
|
#include <QColor>
|
||||||
|
|
||||||
|
#include "../lib_paysages/shared/types.h"
|
||||||
|
|
||||||
|
static inline QColor colorToQColor(Color color)
|
||||||
|
{
|
||||||
|
return QColor(color.r * 255.0, color.g * 255.0, color.b * 255.0, color.a * 255.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // _PAYSAGES_QT_TOOLS_H_
|
|
@ -197,7 +197,7 @@ void autoGenRealisticLandscape(int seed)
|
||||||
noiseAddLevelSimple(cloud.noise, 50.0 / 800.0, 0.001);
|
noiseAddLevelSimple(cloud.noise, 50.0 / 800.0, 0.001);
|
||||||
noiseAddLevelSimple(cloud.noise, 50.0 / 1000.0, 0.0005);
|
noiseAddLevelSimple(cloud.noise, 50.0 / 1000.0, 0.0005);
|
||||||
layer = cloudsAddLayer();
|
layer = cloudsAddLayer();
|
||||||
//cloudsSetDefinition(layer, cloud);
|
cloudsSetDefinition(layer, cloud);
|
||||||
|
|
||||||
/* Water */
|
/* Water */
|
||||||
water.height = 0.0;
|
water.height = 0.0;
|
||||||
|
@ -213,6 +213,7 @@ void autoGenRealisticLandscape(int seed)
|
||||||
water.depth_color.b = 0.3;
|
water.depth_color.b = 0.3;
|
||||||
water.depth_color.a = 1.0;
|
water.depth_color.a = 1.0;
|
||||||
water.height_noise = noiseCreateGenerator();
|
water.height_noise = noiseCreateGenerator();
|
||||||
|
water.height_noise_factor = 1.0;
|
||||||
noiseGenerateBaseNoise(water.height_noise, 262144);
|
noiseGenerateBaseNoise(water.height_noise, 262144);
|
||||||
noiseAddLevelsSimple(water.height_noise, 2, 0.2, 0.015);
|
noiseAddLevelsSimple(water.height_noise, 2, 0.2, 0.015);
|
||||||
noiseAddLevelsSimple(water.height_noise, 3, 0.03, 0.003);
|
noiseAddLevelsSimple(water.height_noise, 3, 0.03, 0.003);
|
||||||
|
|
|
@ -11,10 +11,12 @@
|
||||||
#include "shared/constants.h"
|
#include "shared/constants.h"
|
||||||
#include "shared/functions.h"
|
#include "shared/functions.h"
|
||||||
#include "shared/globals.h"
|
#include "shared/globals.h"
|
||||||
|
#include "shared/system.h"
|
||||||
#include "terrain.h"
|
#include "terrain.h"
|
||||||
|
|
||||||
void paysagesInit()
|
void paysagesInit()
|
||||||
{
|
{
|
||||||
|
systemInit();
|
||||||
ilInit();
|
ilInit();
|
||||||
iluInit();
|
iluInit();
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,11 @@ extern "C" {
|
||||||
typedef GThread Thread;
|
typedef GThread Thread;
|
||||||
typedef void*(*ThreadFunction)(void* data);
|
typedef void*(*ThreadFunction)(void* data);
|
||||||
|
|
||||||
|
static inline void systemInit()
|
||||||
|
{
|
||||||
|
g_thread_init(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
static inline Thread* threadCreate(ThreadFunction function, void* data)
|
static inline Thread* threadCreate(ThreadFunction function, void* data)
|
||||||
{
|
{
|
||||||
GError* error;
|
GError* error;
|
||||||
|
|
|
@ -56,6 +56,7 @@ void waterSave(FILE* f)
|
||||||
toolsSaveDouble(f, _definition.transparency);
|
toolsSaveDouble(f, _definition.transparency);
|
||||||
toolsSaveDouble(f, _definition.reflection);
|
toolsSaveDouble(f, _definition.reflection);
|
||||||
noiseSave(_definition.height_noise, f);
|
noiseSave(_definition.height_noise, f);
|
||||||
|
toolsSaveDouble(f, _definition.height_noise_factor);
|
||||||
}
|
}
|
||||||
|
|
||||||
void waterLoad(FILE* f)
|
void waterLoad(FILE* f)
|
||||||
|
@ -67,6 +68,7 @@ void waterLoad(FILE* f)
|
||||||
_definition.transparency = toolsLoadDouble(f);
|
_definition.transparency = toolsLoadDouble(f);
|
||||||
_definition.reflection = toolsLoadDouble(f);
|
_definition.reflection = toolsLoadDouble(f);
|
||||||
noiseLoad(_definition.height_noise, f);
|
noiseLoad(_definition.height_noise, f);
|
||||||
|
_definition.height_noise_factor = toolsLoadDouble(f);
|
||||||
}
|
}
|
||||||
|
|
||||||
WaterDefinition waterCreateDefinition()
|
WaterDefinition waterCreateDefinition()
|
||||||
|
@ -75,6 +77,7 @@ WaterDefinition waterCreateDefinition()
|
||||||
|
|
||||||
result.height = -1000.0;
|
result.height = -1000.0;
|
||||||
result.height_noise = noiseCreateGenerator();
|
result.height_noise = noiseCreateGenerator();
|
||||||
|
result.height_noise_factor = 1.0;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -118,7 +121,7 @@ WaterQuality waterGetQuality()
|
||||||
|
|
||||||
static inline double _getHeight(WaterDefinition* definition, double x, double z, double detail)
|
static inline double _getHeight(WaterDefinition* definition, double x, double z, double detail)
|
||||||
{
|
{
|
||||||
return definition->height + noiseGet2DDetail(definition->height_noise, x, z, detail);
|
return definition->height + noiseGet2DDetail(definition->height_noise, x, z, detail) * definition->height_noise_factor;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline Vector3 _getNormal(WaterDefinition* definition, Vector3 base, double detail)
|
static inline Vector3 _getNormal(WaterDefinition* definition, Vector3 base, double detail)
|
||||||
|
|
|
@ -17,6 +17,7 @@ typedef struct
|
||||||
Color depth_color;
|
Color depth_color;
|
||||||
double transparency_depth;
|
double transparency_depth;
|
||||||
NoiseGenerator* height_noise;
|
NoiseGenerator* height_noise;
|
||||||
|
double height_noise_factor;
|
||||||
} WaterDefinition;
|
} WaterDefinition;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
|
|
Loading…
Reference in a new issue