paysages : Preview are now paused when not in active window.
paysages : Started material editor dialog (WIP). git-svn-id: https://subversion.assembla.com/svn/thunderk/paysages@331 b1fd45b6-86a6-48da-8261-f70d1f35bdcc
This commit is contained in:
parent
a338872c82
commit
4daf92f3dd
20 changed files with 492 additions and 95 deletions
3
TODO
3
TODO
|
@ -9,7 +9,7 @@ Technology Preview 2 :
|
|||
- Add logarithmic sliders for some float values.
|
||||
- Save GUI config (views, render params).
|
||||
- Add an OSD ability on previews and use it for camera location and user landmarks.
|
||||
- Add a material editor dialog.
|
||||
- WIP : Add a material editor dialog.
|
||||
- Add a zone editor dialog for localized textures.
|
||||
- Add a terrain modifier dialog with zones.
|
||||
- Use the curve editor in noise editor
|
||||
|
@ -29,7 +29,6 @@ Technology Preview 2 :
|
|||
=> Add toggles (for water...)
|
||||
=> Max texture size should depend on GPU memory available
|
||||
- Water and terrain LOD moves with the camera, fix it like in the wanderer.
|
||||
- Pause previews drawing of main window when a dialog is opened.
|
||||
- Interrupt preview chunk renderings that will be discarded at commit, or that are no more visible.
|
||||
- Fix "RGB parameters out of range" (and segfault) on preview while moving render params fast in render tab.
|
||||
=> May need to change the updateData system.
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include "inputcolorgradation.h"
|
||||
#include "inputnoise.h"
|
||||
#include "inputcurve.h"
|
||||
#include "inputmaterial.h"
|
||||
|
||||
#include <QVBoxLayout>
|
||||
#include <QHBoxLayout>
|
||||
|
@ -92,11 +93,16 @@ BaseForm::BaseForm(QWidget* parent, bool auto_apply, bool with_layers) : QWidget
|
|||
|
||||
if (auto_apply)
|
||||
{
|
||||
button_apply->hide();
|
||||
button_revert->hide();
|
||||
hideButtons();
|
||||
}
|
||||
}
|
||||
|
||||
void BaseForm::hideButtons()
|
||||
{
|
||||
button_apply->hide();
|
||||
button_revert->hide();
|
||||
}
|
||||
|
||||
void BaseForm::configChangeEvent()
|
||||
{
|
||||
if (auto_apply)
|
||||
|
@ -242,6 +248,11 @@ void BaseForm::addInputCurve(QString label, Curve* value, double xmin, double xm
|
|||
addInput(new InputCurve(form, label, value, xmin, xmax, ymin, ymax));
|
||||
}
|
||||
|
||||
void BaseForm::addInputMaterial(QString label, SurfaceMaterial* material)
|
||||
{
|
||||
addInput(new InputMaterial(form, label, material));
|
||||
}
|
||||
|
||||
int BaseForm::currentLayer()
|
||||
{
|
||||
if (with_layers)
|
||||
|
|
|
@ -17,6 +17,7 @@ class BaseForm:public QWidget
|
|||
|
||||
public:
|
||||
BaseForm(QWidget* parent, bool auto_apply=false, bool with_layers=false);
|
||||
void hideButtons();
|
||||
|
||||
signals:
|
||||
void configApplied();
|
||||
|
@ -44,7 +45,8 @@ protected:
|
|||
void addInputColorGradation(QString label, ColorGradation* value);
|
||||
void addInputNoise(QString label, NoiseGenerator* value);
|
||||
void addInputCurve(QString label, Curve* value, double xmin, double xmax, double ymin, double ymax);
|
||||
|
||||
void addInputMaterial(QString label, SurfaceMaterial* material);
|
||||
|
||||
int currentLayer();
|
||||
void setLayerCount(int layer_count);
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#include <QPainter>
|
||||
#include <QTimer>
|
||||
#include <QWheelEvent>
|
||||
#include "tools.h"
|
||||
|
||||
/*************** PreviewChunk ***************/
|
||||
class PreviewChunk
|
||||
|
@ -45,12 +46,16 @@ public:
|
|||
|
||||
if (_need_render)
|
||||
{
|
||||
_need_render = false;
|
||||
|
||||
if (!_preview->isVisible())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!_preview->window()->isActiveWindow())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
_need_render = false;
|
||||
|
||||
QImage pixbuf = _preview->startChunkTransaction(_xstart, _ystart, _xsize, _ysize, &revision);
|
||||
|
||||
|
@ -198,6 +203,22 @@ void PreviewDrawingManager::updateChunks(BasePreview* preview)
|
|||
}
|
||||
}
|
||||
|
||||
void PreviewDrawingManager::updateAllChunks()
|
||||
{
|
||||
for (int i = 0; i < _chunks.size(); i++)
|
||||
{
|
||||
PreviewChunk* chunk;
|
||||
chunk = _chunks.at(i);
|
||||
chunk->update();
|
||||
_lock.lock();
|
||||
if (!_updateQueue.contains(chunk))
|
||||
{
|
||||
_updateQueue.prepend(chunk);
|
||||
}
|
||||
_lock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
void PreviewDrawingManager::performOneThreadJob()
|
||||
{
|
||||
PreviewChunk* chunk;
|
||||
|
@ -274,6 +295,12 @@ void BasePreview::stopDrawers()
|
|||
_drawing_manager->stopThreads();
|
||||
}
|
||||
|
||||
void BasePreview::reviveAll()
|
||||
{
|
||||
logDebug("Reviving all previews");
|
||||
_drawing_manager->updateAllChunks();
|
||||
}
|
||||
|
||||
void BasePreview::updateData()
|
||||
{
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@ public:
|
|||
|
||||
static void initDrawers();
|
||||
static void stopDrawers();
|
||||
static void reviveAll();
|
||||
|
||||
void redraw();
|
||||
|
||||
|
@ -114,6 +115,7 @@ public:
|
|||
void addChunk(PreviewChunk* chunk);
|
||||
void removeChunks(BasePreview* preview);
|
||||
void updateChunks(BasePreview* preview);
|
||||
void updateAllChunks();
|
||||
void performOneThreadJob();
|
||||
|
||||
private:
|
||||
|
|
66
gui_qt/dialogmaterial.cpp
Normal file
66
gui_qt/dialogmaterial.cpp
Normal file
|
@ -0,0 +1,66 @@
|
|||
#include "dialogmaterial.h"
|
||||
|
||||
#include <QVBoxLayout>
|
||||
#include <QHBoxLayout>
|
||||
#include <QPushButton>
|
||||
#include <QWidget>
|
||||
|
||||
/**************** Dialog form ****************/
|
||||
DialogMaterial::DialogMaterial(QWidget *parent, SurfaceMaterial* material) : QDialog(parent)
|
||||
{
|
||||
QPushButton* button;
|
||||
QWidget* buttons;
|
||||
|
||||
setLayout(new QVBoxLayout());
|
||||
|
||||
_form = new FormMaterial(this, material);
|
||||
_form->hideButtons();
|
||||
layout()->addWidget(_form);
|
||||
|
||||
buttons = new QWidget(this);
|
||||
buttons->setLayout(new QHBoxLayout());
|
||||
layout()->addWidget(buttons);
|
||||
layout()->setAlignment(buttons, Qt::AlignBottom);
|
||||
|
||||
button = new QPushButton(tr("Validate"), buttons);
|
||||
buttons->layout()->addWidget(button);
|
||||
QObject::connect(button, SIGNAL(clicked()), this, SLOT(accept()));
|
||||
|
||||
button = new QPushButton(tr("Reset"), buttons);
|
||||
buttons->layout()->addWidget(button);
|
||||
QObject::connect(button, SIGNAL(clicked()), this, SLOT(revert()));
|
||||
|
||||
button = new QPushButton(tr("Cancel"), buttons);
|
||||
buttons->layout()->addWidget(button);
|
||||
QObject::connect(button, SIGNAL(clicked()), this, SLOT(reject()));
|
||||
|
||||
setWindowTitle(tr("Paysages 3D - Material editor"));
|
||||
}
|
||||
|
||||
bool DialogMaterial::getMaterial(QWidget* parent, SurfaceMaterial* material)
|
||||
{
|
||||
int result;
|
||||
|
||||
DialogMaterial* dialog = new DialogMaterial(parent, material);
|
||||
result = dialog->exec();
|
||||
|
||||
if (result)
|
||||
{
|
||||
dialog->_form->getMaterial(material);
|
||||
}
|
||||
|
||||
delete dialog;
|
||||
|
||||
return (result != 0) ? true : false;
|
||||
}
|
||||
|
||||
void DialogMaterial::accept()
|
||||
{
|
||||
_form->applyConfig();
|
||||
QDialog::accept();
|
||||
}
|
||||
|
||||
void DialogMaterial::revert()
|
||||
{
|
||||
_form->revertConfig();
|
||||
}
|
26
gui_qt/dialogmaterial.h
Normal file
26
gui_qt/dialogmaterial.h
Normal file
|
@ -0,0 +1,26 @@
|
|||
#ifndef _PAYSAGES_QT_DIALOGMATERIAL_H_
|
||||
#define _PAYSAGES_QT_DIALOGMATERIAL_H_
|
||||
|
||||
#include <QDialog>
|
||||
#include <QListWidget>
|
||||
#include "basepreview.h"
|
||||
#include "formmaterial.h"
|
||||
|
||||
#include "../lib_paysages/shared/types.h"
|
||||
|
||||
class DialogMaterial : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit DialogMaterial(QWidget* parent, SurfaceMaterial* material);
|
||||
static bool getMaterial(QWidget* parent, SurfaceMaterial* material);
|
||||
|
||||
public slots:
|
||||
virtual void accept();
|
||||
void revert();
|
||||
|
||||
private:
|
||||
FormMaterial* _form;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -148,15 +148,13 @@ FormClouds::FormClouds(QWidget *parent):
|
|||
addPreview(new PreviewCloudsCoverage(parent), tr("Layer coverage (no lighting)"));
|
||||
addPreview(new PreviewCloudsColor(parent), tr("Color and lighting"));
|
||||
|
||||
addInputDouble(tr("Lower altitude"), &_layer.ymin, -10.0, 250.0, 0.5, 5.0);
|
||||
addInputDouble(tr("Upper altitude"), &_layer.ymax, -10.0, 250.0, 0.5, 5.0);
|
||||
addInputCurve(tr("Density / Altitude"), _layer.density_altitude, 0.0, 1.0, 0.0, 1.0);
|
||||
addInputDouble(tr("Lower altitude"), &_layer.ymin, -10.0, 50.0, 0.5, 5.0);
|
||||
addInputDouble(tr("Upper altitude"), &_layer.ymax, -10.0, 50.0, 0.5, 5.0);
|
||||
addInputCurve(tr("Density by altitude"), _layer.density_altitude, 0.0, 1.0, 0.0, 1.0);
|
||||
addInputNoise(tr("Noise"), _layer.noise);
|
||||
addInputDouble(tr("Coverage"), &_layer.coverage, 0.0, 1.0, 0.01, 0.1);
|
||||
addInputDouble(tr("Scaling"), &_layer.scaling, 1.0, 100.0, 0.5, 5.0);
|
||||
addInputColor(tr("Base color"), &_layer.material.base);
|
||||
addInputDouble(tr("Light reflection"), &_layer.material.reflection, 0.0, 1.0, 0.01, 0.1);
|
||||
addInputDouble(tr("Light reflection shininess"), &_layer.material.shininess, 0.0, 20.0, 0.1, 1.0);
|
||||
addInputMaterial(tr("Material"), &_layer.material);
|
||||
addInputDouble(tr("Hardness to light"), &_layer.hardness, 0.0, 1.0, 0.01, 0.1);
|
||||
addInputDouble(tr("Transparency depth"), &_layer.transparencydepth, 0.0, 100.0, 0.5, 5.0);
|
||||
addInputDouble(tr("Light traversal depth"), &_layer.lighttraversal, 0.0, 100.0, 0.5, 5.0);
|
||||
|
|
52
gui_qt/formmaterial.cpp
Normal file
52
gui_qt/formmaterial.cpp
Normal file
|
@ -0,0 +1,52 @@
|
|||
#include "formmaterial.h"
|
||||
|
||||
#include "../lib_paysages/lighting.h"
|
||||
|
||||
/**************** Previews ****************/
|
||||
class PreviewMaterialColor:public BasePreview
|
||||
{
|
||||
public:
|
||||
PreviewMaterialColor(QWidget* parent, SurfaceMaterial* material) : BasePreview(parent)
|
||||
{
|
||||
configScaling(0.05, 2.0, 0.05, 2.0);
|
||||
}
|
||||
protected:
|
||||
/*void updateData()
|
||||
{
|
||||
noiseCopy(_noise_original, _noise_preview);
|
||||
}*/
|
||||
QColor getColor(double x, double y)
|
||||
{
|
||||
return QColor(0, 0, 0);
|
||||
}
|
||||
private:
|
||||
SurfaceMaterial* _material;
|
||||
};
|
||||
|
||||
/**************** Form ****************/
|
||||
FormMaterial::FormMaterial(QWidget* parent, SurfaceMaterial* material) : BaseForm(parent)
|
||||
{
|
||||
_initial = material;
|
||||
_material = *_initial;
|
||||
|
||||
addInputColor(tr("Base color"), &_material.base);
|
||||
addInputDouble(tr("Light reflection"), &_material.reflection, 0.0, 1.0, 0.01, 0.1);
|
||||
addInputDouble(tr("Light reflection shininess"), &_material.shininess, 0.0, 20.0, 0.1, 1.0);
|
||||
|
||||
_preview_color = new PreviewMaterialColor(this, &_material);
|
||||
addPreview(_preview_color, tr("Lighting preview"));
|
||||
|
||||
revertConfig();
|
||||
}
|
||||
|
||||
void FormMaterial::getMaterial(SurfaceMaterial* material)
|
||||
{
|
||||
*material = _material;
|
||||
}
|
||||
|
||||
void FormMaterial::revertConfig()
|
||||
{
|
||||
_material = *_initial;
|
||||
|
||||
BaseForm::revertConfig();
|
||||
}
|
27
gui_qt/formmaterial.h
Normal file
27
gui_qt/formmaterial.h
Normal file
|
@ -0,0 +1,27 @@
|
|||
#ifndef _PAYSAGES_QT_FORMMATERIAL_H_
|
||||
#define _PAYSAGES_QT_FORMMATERIAL_H_
|
||||
|
||||
#include "basepreview.h"
|
||||
#include "baseform.h"
|
||||
|
||||
#include "../lib_paysages/shared/types.h"
|
||||
|
||||
class FormMaterial : public BaseForm
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
FormMaterial(QWidget* parent, SurfaceMaterial* material);
|
||||
void getMaterial(SurfaceMaterial* material);
|
||||
|
||||
public slots:
|
||||
virtual void revertConfig();
|
||||
// virtual void applyConfig();
|
||||
|
||||
private:
|
||||
BasePreview* _preview_color;
|
||||
SurfaceMaterial* _initial;
|
||||
SurfaceMaterial _material;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -141,9 +141,7 @@ FormTextures::FormTextures(QWidget *parent):
|
|||
addInputNoise(tr("Surface noise"), _layer.bump_noise);
|
||||
addInputDouble(tr("Surface noise height"), &_layer.bump_height, 0.0, 0.5, 0.001, 0.05);
|
||||
addInputDouble(tr("Surface noise scaling"), &_layer.bump_scaling, 0.01, 1.0, 0.01, 0.1);
|
||||
addInputColor(tr("Base color"), &_layer.material.base);
|
||||
addInputDouble(tr("Light reflection"), &_layer.material.reflection, 0.0, 1.0, 0.01, 0.1);
|
||||
addInputDouble(tr("Light reflection shininess"), &_layer.material.shininess, 0.0, 20.0, 0.1, 1.0);
|
||||
addInputMaterial(tr("Material"), &_layer.material);
|
||||
|
||||
addInputDouble(tr("Hard minimal height"), &_supp.height_hard_min, -20.0, 20.0, 0.1, 1.0);
|
||||
addInputDouble(tr("Soft minimal height"), &_supp.height_soft_min, -20.0, 20.0, 0.1, 1.0);
|
||||
|
|
|
@ -178,13 +178,11 @@ FormWater::FormWater(QWidget *parent):
|
|||
addPreview(previewColor, QString(tr("Rendered preview (without/with lighting)")));
|
||||
|
||||
addInputDouble(tr("Height"), &_definition.height, -10.0, 10.0, 0.1, 1.0);
|
||||
addInputColor(tr("Surface color"), &_definition.material.base);
|
||||
addInputDouble(tr("Light reflection"), &_definition.material.reflection, 0.0, 1.0, 0.01, 0.1);
|
||||
addInputDouble(tr("Shininess to light"), &_definition.material.shininess, 0.0, 20.0, 0.1, 1.0);
|
||||
addInputMaterial(tr("Surface material"), &_definition.material);
|
||||
addInputColor(tr("Depth color"), &_definition.depth_color);
|
||||
addInputDouble(tr("Transparency"), &_definition.transparency, 0.0, 1.0, 0.001, 0.1);
|
||||
addInputDouble(tr("Reflection"), &_definition.reflection, 0.0, 1.0, 0.001, 0.1);
|
||||
addInputDouble(tr("Transparency distance"), &_definition.transparency_depth, 0.0, 20.0, 0.1, 1.0);
|
||||
addInputColor(tr("Depth color"), &_definition.depth_color);
|
||||
addInputDouble(tr("Light-through distance"), &_definition.lighting_depth, 0.0, 20.0, 0.1, 1.0);
|
||||
addInputNoise(tr("Waves noise"), _definition.waves_noise);
|
||||
addInputDouble(tr("Waves height"), &_definition.waves_noise_height, 0.0, 0.1, 0.001, 0.01);
|
||||
|
|
79
gui_qt/inputmaterial.cpp
Normal file
79
gui_qt/inputmaterial.cpp
Normal file
|
@ -0,0 +1,79 @@
|
|||
#include "inputmaterial.h"
|
||||
|
||||
#include <QLabel>
|
||||
#include <QPushButton>
|
||||
#include <QPainter>
|
||||
#include <QColorDialog>
|
||||
#include "dialogmaterial.h"
|
||||
|
||||
class MaterialSmallPreview:public QWidget
|
||||
{
|
||||
public:
|
||||
MaterialSmallPreview(QWidget* parent, SurfaceMaterial* value) : QWidget(parent)
|
||||
{
|
||||
_value = value;
|
||||
}
|
||||
|
||||
void paintEvent(QPaintEvent* event)
|
||||
{
|
||||
if (!_value)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/*QPainter painter(this);
|
||||
int width = this->width();
|
||||
int height = this->height();
|
||||
double value, factor;
|
||||
|
||||
for (int x = 0; x < width; x++)
|
||||
{
|
||||
factor = ((double)(height / 2)) / noiseGetMaxValue(noise);
|
||||
value = noiseGet1DTotal(noise, ((double)x) / factor) * factor;
|
||||
painter.setPen(QColor(255, 255, 255));
|
||||
painter.drawLine(x, 0, x, height / 2 + value);
|
||||
painter.setPen(QColor(0, 0, 0));
|
||||
painter.drawLine(x, height / 2 + value + 1, x, height);
|
||||
}*/
|
||||
}
|
||||
|
||||
SurfaceMaterial* _value;
|
||||
};
|
||||
|
||||
InputMaterial::InputMaterial(QWidget* form, QString label, SurfaceMaterial* value) : BaseInput(form, label)
|
||||
{
|
||||
_value = value;
|
||||
|
||||
_preview = new MaterialSmallPreview(form, value);
|
||||
_preview->setMinimumSize(100, 40);
|
||||
|
||||
_control = new QPushButton(tr("Edit"), form);
|
||||
_control->setMaximumWidth(150);
|
||||
|
||||
connect((QPushButton*)_control, SIGNAL(clicked()), this, SLOT(editMaterial()));
|
||||
}
|
||||
|
||||
void InputMaterial::updatePreview()
|
||||
{
|
||||
_preview->update();
|
||||
|
||||
BaseInput::updatePreview();
|
||||
}
|
||||
|
||||
void InputMaterial::applyValue()
|
||||
{
|
||||
BaseInput::applyValue();
|
||||
}
|
||||
|
||||
void InputMaterial::revert()
|
||||
{
|
||||
BaseInput::revert();
|
||||
}
|
||||
|
||||
void InputMaterial::editMaterial()
|
||||
{
|
||||
if (DialogMaterial::getMaterial(_control, _value))
|
||||
{
|
||||
applyValue();
|
||||
}
|
||||
}
|
28
gui_qt/inputmaterial.h
Normal file
28
gui_qt/inputmaterial.h
Normal file
|
@ -0,0 +1,28 @@
|
|||
#ifndef _PAYSAGES_QT_INPUTMATERIAL_H_
|
||||
#define _PAYSAGES_QT_INPUTMATERIAL_H_
|
||||
|
||||
#include <QWidget>
|
||||
#include "baseinput.h"
|
||||
|
||||
#include "../lib_paysages/shared/types.h"
|
||||
|
||||
class InputMaterial:public BaseInput
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
InputMaterial(QWidget* form, QString label, SurfaceMaterial* value);
|
||||
|
||||
public slots:
|
||||
virtual void updatePreview();
|
||||
virtual void applyValue();
|
||||
virtual void revert();
|
||||
|
||||
private slots:
|
||||
void editMaterial();
|
||||
|
||||
private:
|
||||
SurfaceMaterial* _value;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -25,4 +25,4 @@ private:
|
|||
NoiseGenerator* _value;
|
||||
};
|
||||
|
||||
#endif // _PAYSAGES_QT_INPUTNOISE_H_
|
||||
#endif
|
||||
|
|
|
@ -124,13 +124,23 @@ QMainWindow(parent)
|
|||
toolbar->addAction(QIcon("images/explore.png"), tr("&Explore (F2)"), this, SLOT(explore3D()))->setShortcut(QKeySequence(tr("F2")));
|
||||
toolbar->addAction(QIcon("images/render.png"), tr("&Quick\nrender (F5)"), this, SLOT(quickPreview()))->setShortcut(QKeySequence(tr("F5")));
|
||||
toolbar->addAction(QIcon("images/about.png"), tr("&About"), this, SLOT(showAboutDialog()));
|
||||
|
||||
|
||||
setCentralWidget(tabs);
|
||||
|
||||
setWindowTitle("Paysages 3D");
|
||||
setWindowIcon(QIcon("images/logo_32.png"));
|
||||
}
|
||||
|
||||
bool MainWindow::event(QEvent* event)
|
||||
{
|
||||
if (event->type() == QEvent::WindowActivate)
|
||||
{
|
||||
BasePreview::reviveAll();
|
||||
}
|
||||
|
||||
return QMainWindow::event(event);
|
||||
}
|
||||
|
||||
void MainWindow::refreshAll()
|
||||
{
|
||||
QList<BaseForm*> list_forms = this->findChildren<BaseForm*>("_base_form_");
|
||||
|
|
|
@ -10,6 +10,7 @@ class MainWindow : public QMainWindow
|
|||
|
||||
public:
|
||||
explicit MainWindow(QWidget *parent = 0);
|
||||
virtual bool event(QEvent* event);
|
||||
|
||||
public slots:
|
||||
void refreshAll();
|
||||
|
|
|
@ -6,8 +6,11 @@ INCLUDEPATH += .
|
|||
OBJECTS_DIR = ./obj/$$BUILDMODE/
|
||||
MOC_DIR = ./moc/$$BUILDMODE/
|
||||
DESTDIR = ../build/$$BUILDMODE/
|
||||
CONFIG -= release
|
||||
CONFIG += $$BUILDMODE
|
||||
|
||||
release:DEFINES += NDEBUG
|
||||
|
||||
LIBS += -lGLU
|
||||
unix:LIBS += -L$$DESTDIR -lpaysages
|
||||
win32:LIBS += ../libpaysages.a -lDevIL -lILU -lILUT -lglib-2.0 -lgthread-2.0
|
||||
|
|
|
@ -12,4 +12,14 @@ static inline QColor colorToQColor(Color color)
|
|||
return QColor(color.r * 255.0, color.g * 255.0, color.b * 255.0, color.a * 255.0);
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
#include <QDebug>
|
||||
static inline void logDebug(QString string)
|
||||
{
|
||||
qDebug() << string;
|
||||
}
|
||||
#else
|
||||
#define logDebug(_x_) ;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -4,32 +4,32 @@
|
|||
<context>
|
||||
<name>BaseForm</name>
|
||||
<message>
|
||||
<location filename="../gui_qt/baseform.cpp" line="38"/>
|
||||
<location filename="../gui_qt/baseform.cpp" line="39"/>
|
||||
<source>Layers : </source>
|
||||
<translation>Niveaux :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/baseform.cpp" line="46"/>
|
||||
<location filename="../gui_qt/baseform.cpp" line="47"/>
|
||||
<source>Add layer</source>
|
||||
<translation>Ajouter un niveau</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/baseform.cpp" line="50"/>
|
||||
<location filename="../gui_qt/baseform.cpp" line="51"/>
|
||||
<source>Delete layer</source>
|
||||
<translation>Supprimer un niveau</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/baseform.cpp" line="86"/>
|
||||
<location filename="../gui_qt/baseform.cpp" line="87"/>
|
||||
<source>Apply</source>
|
||||
<translation>Appliquer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/baseform.cpp" line="89"/>
|
||||
<location filename="../gui_qt/baseform.cpp" line="90"/>
|
||||
<source>Revert</source>
|
||||
<translation>Annuler les modifications</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/baseform.cpp" line="268"/>
|
||||
<location filename="../gui_qt/baseform.cpp" line="279"/>
|
||||
<source>Layer %1</source>
|
||||
<translation>Niveau %1</translation>
|
||||
</message>
|
||||
|
@ -121,6 +121,29 @@ Right click on a point to delete it.</source>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DialogMaterial</name>
|
||||
<message>
|
||||
<location filename="../gui_qt/dialogmaterial.cpp" line="25"/>
|
||||
<source>Validate</source>
|
||||
<translation type="unfinished">Valider</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/dialogmaterial.cpp" line="29"/>
|
||||
<source>Reset</source>
|
||||
<translation type="unfinished">Recommencer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/dialogmaterial.cpp" line="33"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished">Annuler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/dialogmaterial.cpp" line="37"/>
|
||||
<source>Paysages 3D - Material editor</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DialogNoise</name>
|
||||
<message>
|
||||
|
@ -317,7 +340,7 @@ Maintenir Ctrl : Plus rapide</translation>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formclouds.cpp" line="153"/>
|
||||
<source>Density / Altitude</source>
|
||||
<source>Density by altitude</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
|
@ -337,36 +360,38 @@ Maintenir Ctrl : Plus rapide</translation>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formclouds.cpp" line="157"/>
|
||||
<source>Material</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Base color</source>
|
||||
<translation>Couleur de base</translation>
|
||||
<translation type="obsolete">Couleur de base</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Light reflection</source>
|
||||
<translation type="obsolete">Facteur de réflexion de la lumière</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Light reflection shininess</source>
|
||||
<translation type="obsolete">Concentration de la réflexion de lumière</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formclouds.cpp" line="158"/>
|
||||
<source>Light reflection</source>
|
||||
<translation>Facteur de réflexion de la lumière</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formclouds.cpp" line="159"/>
|
||||
<source>Light reflection shininess</source>
|
||||
<translation>Concentration de la réflexion de lumière</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formclouds.cpp" line="160"/>
|
||||
<source>Hardness to light</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formclouds.cpp" line="161"/>
|
||||
<location filename="../gui_qt/formclouds.cpp" line="159"/>
|
||||
<source>Transparency depth</source>
|
||||
<translation>Distance de transparence</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formclouds.cpp" line="162"/>
|
||||
<location filename="../gui_qt/formclouds.cpp" line="160"/>
|
||||
<source>Light traversal depth</source>
|
||||
<translation>Distance de traversée de la lumière</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formclouds.cpp" line="163"/>
|
||||
<location filename="../gui_qt/formclouds.cpp" line="161"/>
|
||||
<source>Minimum lighting</source>
|
||||
<translation>Eclairage minimal</translation>
|
||||
</message>
|
||||
|
@ -398,6 +423,29 @@ Maintenir Ctrl : Plus rapide</translation>
|
|||
<translation type="obsolete">Annuler</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FormMaterial</name>
|
||||
<message>
|
||||
<location filename="../gui_qt/formmaterial.cpp" line="32"/>
|
||||
<source>Base color</source>
|
||||
<translation type="unfinished">Couleur de base</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formmaterial.cpp" line="33"/>
|
||||
<source>Light reflection</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formmaterial.cpp" line="34"/>
|
||||
<source>Light reflection shininess</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formmaterial.cpp" line="37"/>
|
||||
<source>Lighting preview</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FormRender</name>
|
||||
<message>
|
||||
|
@ -581,57 +629,59 @@ Maintenir Ctrl : Plus rapide</translation>
|
|||
<translation>Echelle du bruit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formtextures.cpp" line="144"/>
|
||||
<source>Base color</source>
|
||||
<translation>Couleur de base</translation>
|
||||
<translation type="obsolete">Couleur de base</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formtextures.cpp" line="145"/>
|
||||
<source>Light reflection</source>
|
||||
<translation>Réflexion de lumière</translation>
|
||||
<translation type="obsolete">Réflexion de lumière</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formtextures.cpp" line="146"/>
|
||||
<source>Light reflection shininess</source>
|
||||
<translation>Concentration de la lumière réfléchie</translation>
|
||||
<translation type="obsolete">Concentration de la lumière réfléchie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formtextures.cpp" line="149"/>
|
||||
<location filename="../gui_qt/formtextures.cpp" line="147"/>
|
||||
<source>Soft minimal height</source>
|
||||
<translation>Altitude minimal (adoucie)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formtextures.cpp" line="148"/>
|
||||
<location filename="../gui_qt/formtextures.cpp" line="146"/>
|
||||
<source>Hard minimal height</source>
|
||||
<translation>Altitude minimale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formtextures.cpp" line="151"/>
|
||||
<location filename="../gui_qt/formtextures.cpp" line="144"/>
|
||||
<source>Material</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formtextures.cpp" line="149"/>
|
||||
<source>Hard maximal height</source>
|
||||
<translation>Altitude maximale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formtextures.cpp" line="150"/>
|
||||
<location filename="../gui_qt/formtextures.cpp" line="148"/>
|
||||
<source>Soft maximal height</source>
|
||||
<translation>Altitude maximale (adoucie)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formtextures.cpp" line="153"/>
|
||||
<location filename="../gui_qt/formtextures.cpp" line="151"/>
|
||||
<source>Soft minimal slope</source>
|
||||
<translation>Pente minimale (adoucie)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formtextures.cpp" line="152"/>
|
||||
<location filename="../gui_qt/formtextures.cpp" line="150"/>
|
||||
<source>Hard minimal slope</source>
|
||||
<translation>Pente minimale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formtextures.cpp" line="155"/>
|
||||
<location filename="../gui_qt/formtextures.cpp" line="153"/>
|
||||
<source>Hard maximal slope</source>
|
||||
<translation>Pente maximale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formtextures.cpp" line="154"/>
|
||||
<location filename="../gui_qt/formtextures.cpp" line="152"/>
|
||||
<source>Soft maximal slope</source>
|
||||
<translation>Pente maximale (adoucie)</translation>
|
||||
</message>
|
||||
|
@ -654,57 +704,59 @@ Maintenir Ctrl : Plus rapide</translation>
|
|||
<translation>Hauteur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formwater.cpp" line="181"/>
|
||||
<source>Surface color</source>
|
||||
<translation>Couleur de la surface</translation>
|
||||
<translation type="obsolete">Couleur de la surface</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formwater.cpp" line="182"/>
|
||||
<source>Light reflection</source>
|
||||
<translation>Réflection de la lumière</translation>
|
||||
<translation type="obsolete">Réflection de la lumière</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Shininess to light</source>
|
||||
<translation type="obsolete">Concentration de la lumière réfléchie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formwater.cpp" line="181"/>
|
||||
<source>Surface material</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formwater.cpp" line="183"/>
|
||||
<source>Shininess to light</source>
|
||||
<translation>Concentration de la lumière réfléchie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formwater.cpp" line="184"/>
|
||||
<source>Transparency</source>
|
||||
<translation>Transparence</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formwater.cpp" line="185"/>
|
||||
<location filename="../gui_qt/formwater.cpp" line="184"/>
|
||||
<source>Reflection</source>
|
||||
<translation>Reflets</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formwater.cpp" line="186"/>
|
||||
<location filename="../gui_qt/formwater.cpp" line="185"/>
|
||||
<source>Transparency distance</source>
|
||||
<translation>Distance maximale de transparence</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formwater.cpp" line="187"/>
|
||||
<location filename="../gui_qt/formwater.cpp" line="182"/>
|
||||
<source>Depth color</source>
|
||||
<translation>Couleur en profondeur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formwater.cpp" line="188"/>
|
||||
<location filename="../gui_qt/formwater.cpp" line="186"/>
|
||||
<source>Light-through distance</source>
|
||||
<translation>Distance de filtrage de la lumière</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formwater.cpp" line="189"/>
|
||||
<location filename="../gui_qt/formwater.cpp" line="187"/>
|
||||
<source>Waves noise</source>
|
||||
<translation>Bruit des vagues</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formwater.cpp" line="190"/>
|
||||
<location filename="../gui_qt/formwater.cpp" line="188"/>
|
||||
<source>Waves height</source>
|
||||
<translation>Hauteur des vagues</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/formwater.cpp" line="191"/>
|
||||
<location filename="../gui_qt/formwater.cpp" line="189"/>
|
||||
<source>Waves scaling</source>
|
||||
<translation>Echelle des vagues</translation>
|
||||
</message>
|
||||
|
@ -754,6 +806,14 @@ Maintenir Ctrl : Plus rapide</translation>
|
|||
<translation type="unfinished">Editer</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>InputMaterial</name>
|
||||
<message>
|
||||
<location filename="../gui_qt/inputmaterial.cpp" line="50"/>
|
||||
<source>Edit</source>
|
||||
<translation type="unfinished">Editer</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>InputNoise</name>
|
||||
<message>
|
||||
|
@ -817,87 +877,87 @@ rapide (F5)</translation>
|
|||
<translation>F5</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="145"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="155"/>
|
||||
<source>Do you want to start a new scenery ? Any unsaved changes will be lost.</source>
|
||||
<translation>Voulez-vous commencer un nouveau paysage ? Les modifications non sauvegardées seront perdues.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="145"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="155"/>
|
||||
<source>Paysages 3D - New scenery</source>
|
||||
<translation>Paysages 3D - Nouvelle scène</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="155"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="165"/>
|
||||
<source>Paysages 3D - Choose a file to save the scenery</source>
|
||||
<translation>Paysages 3D - Choisissez un fichier pour enregistrer la scène</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="155"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="181"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="165"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="191"/>
|
||||
<source>Paysages 3D Scenery (*.p3d)</source>
|
||||
<translation>Scène Paysages 3D (*.p3d)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="169"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="172"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="179"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="182"/>
|
||||
<source>Paysages 3D - File saving error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="169"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="179"/>
|
||||
<source>Can't write specified file : %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="172"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="182"/>
|
||||
<source>Unexpected error while saving file : %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="179"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="189"/>
|
||||
<source>Do you want to load a scenery from file ? Any unsaved changes will be lost.</source>
|
||||
<translation>Voulez-vous charger une scène ? Les modifications nons sauvegardées seront perdues.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="179"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="189"/>
|
||||
<source>Paysages 3D - Load scenery</source>
|
||||
<translation>Paysages 3D - Charger une scène</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="181"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="191"/>
|
||||
<source>Paysages 3D - Choose a scenery file to load</source>
|
||||
<translation>Paysages 3D - Choisissez un fichier de scène à charger</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="191"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="194"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="197"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="200"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="201"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="204"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="207"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="210"/>
|
||||
<source>Paysages 3D - File loading error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="191"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="201"/>
|
||||
<source>Can't read specified file : %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="194"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="204"/>
|
||||
<source>This file doesn't look like a Paysages 3D file : %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="197"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="207"/>
|
||||
<source>This file was created with an incompatible Paysages 3D version : %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="200"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="210"/>
|
||||
<source>Unexpected error while loading file : %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="208"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="218"/>
|
||||
<source>A 3D landscape editing and rendering software.
|
||||
|
||||
Authors :
|
||||
|
@ -1007,7 +1067,7 @@ GLib - http://www.gtk.org/
|
|||
<translation type="obsolete">Voulez-vous charger un paysage ? Les modifications nons sauvegardées seront perdues.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="208"/>
|
||||
<location filename="../gui_qt/mainwindow.cpp" line="218"/>
|
||||
<source>Paysages 3D</source>
|
||||
<translation>Paysages 3D</translation>
|
||||
</message>
|
||||
|
|
Loading…
Reference in a new issue