paysages: More UI polishing + top down render preview + configurable preview scaling.

git-svn-id: https://subversion.assembla.com/svn/thunderk/paysages@292 b1fd45b6-86a6-48da-8261-f70d1f35bdcc
This commit is contained in:
Michaël Lemaire 2012-04-12 20:02:31 +00:00 committed by ThunderK
parent 81cbbb9880
commit 6099241ec9
13 changed files with 310 additions and 111 deletions

2
TODO
View file

@ -1,6 +1,6 @@
- Make colorgradation dialog sizable (and reduce minimum size).
- Make all UI more sizable.
- Implement scaling and scrolling on previews.
- Implement scrolling on previews.
- Add a material editor dialog.
- Replace FILE* by a custom type for Save and Load.
- Water and terrain LOD moves with the camera, fix it like in the wanderer.

View file

@ -44,6 +44,7 @@ BasePreview::BasePreview(QWidget* parent) :
this->conf_scroll_ymax = 0.0;
this->conf_scale_min = 1.0;
this->conf_scale_max = 1.0;
this->conf_scale_init = 1.0;
this->conf_scale_step = 0.0;
this->scaling = 1.0;
this->xoffset = 0.0;
@ -86,6 +87,21 @@ QColor BasePreview::getColor(double x, double y)
return QColor(0, 0, 0);
}
void BasePreview::configScaling(double min, double max, double step, double init)
{
double size = (double)width();
if (size >= 1.0)
{
conf_scale_min = min / size;
conf_scale_max = max / size;
conf_scale_step = step / size;
conf_scale_init = init / size;
scaling = init / size;
redraw();
}
}
void BasePreview::start()
{
this->updater->start();
@ -121,13 +137,6 @@ void BasePreview::handleRedraw()
lock_drawing->unlock();
}
void BasePreview::setScaling(double scaling)
{
// TODO Follow conf_scale
this->scaling = scaling;
redraw();
}
void BasePreview::resizeEvent(QResizeEvent* event)
{
QImage* image;
@ -207,16 +216,39 @@ void BasePreview::renderPixbuf()
void BasePreview::wheelEvent(QWheelEvent* event)
{
double factor;
if (event->modifiers() & Qt::ShiftModifier)
{
factor = 5.0;
}
else if (event->modifiers() & Qt::ControlModifier)
{
factor = 0.2;
}
else
{
factor = 1.0;
}
if (event->orientation() == Qt::Vertical)
{
if (event->delta() > 0 && scaling > 0.19)
if (event->delta() > 0 && scaling > conf_scale_min)
{
scaling -= 0.1;
scaling -= conf_scale_step * factor;
if (scaling < conf_scale_min)
{
scaling = conf_scale_min;
}
redraw();
}
else if (event->delta() < 0 && scaling < 10.0)
else if (event->delta() < 0 && scaling < conf_scale_max)
{
scaling += 0.1;
scaling += conf_scale_step * factor;
if (scaling > conf_scale_max)
{
scaling = conf_scale_max;
}
redraw();
}
event->accept();

View file

@ -18,12 +18,12 @@ public:
void doRender();
void redraw();
void setScaling(double scaling);
protected:
virtual void updateData();
virtual QColor getColor(double x, double y);
void configScaling(double min, double max, double step, double init);
double xoffset;
double yoffset;
double scaling;
@ -56,6 +56,7 @@ private:
double conf_scale_min;
double conf_scale_max;
double conf_scale_init;
double conf_scale_step;
signals:

View file

@ -18,6 +18,8 @@ public:
_noise_original = noise;
_noise_preview = noiseCreateGenerator();
_level = -1;
configScaling(0.05, 2.0, 0.05, 2.0);
}
void setLevel(int row)
@ -54,6 +56,8 @@ public:
{
_noise_original = noise;
_noise_preview = noiseCreateGenerator();
configScaling(0.05, 2.0, 0.03, 2.0);
}
protected:
void updateData()
@ -97,12 +101,10 @@ DialogNoise::DialogNoise(QWidget *parent, NoiseGenerator* value):
previewLevel = new PreviewLevel(previews, _current);
previews->layout()->addWidget(new QLabel(tr("Level preview")));
previews->layout()->addWidget(previewLevel);
previewLevel->setScaling(1.0 / 127.0);
previewLevel->start();
previewTotal = new PreviewTotal(previews, _current);
previews->layout()->addWidget(new QLabel(tr("Total preview")));
previews->layout()->addWidget(previewTotal);
previewTotal->setScaling(1.0 / 127.0);
previewTotal->start();
form = new QWidget(this);

View file

@ -17,6 +17,8 @@ public:
{
_renderer = rendererCreate();
_preview_definition = atmosphereCreateDefinition();
configScaling(100.0, 1000.0, 20.0, 200.0);
}
protected:
QColor getColor(double x, double y)

View file

@ -21,6 +21,8 @@ public:
_renderer.render_quality = 3;
_preview_layer = cloudsLayerCreateDefinition();
configScaling(100.0, 1000.0, 20.0, 200.0);
}
protected:
QColor getColor(double x, double y)
@ -79,6 +81,8 @@ public:
_renderer.maskLight = _maskLight;
_renderer.customData[0] = &_preview_layer;
_renderer.customData[1] = &_lighting;
configScaling(100.0, 400.0, 20.0, 200.0);
}
protected:
QColor getColor(double x, double y)

View file

@ -4,9 +4,91 @@
#include <QMessageBox>
#include "dialogrender.h"
#include "inputcamera.h"
#include "tools.h"
#include "../lib_paysages/render.h"
#include "../lib_paysages/scenery.h"
/**************** Previews ****************/
class PreviewRenderLandscape:public BasePreview
{
public:
PreviewRenderLandscape(QWidget* parent):BasePreview(parent)
{
_renderer = rendererCreate();
_renderer.applyTextures = _applyTextures;
_renderer.getTerrainHeight = _getTerrainHeight;
_renderer.applyLightingToSurface = _applyLightingToSurface;
_renderer.maskLight = _maskLight;
_renderer.camera_location.x = 0.0;
_renderer.camera_location.y = 50.0;
_renderer.camera_location.z = 0.0;
_terrain = terrainCreateDefinition();
_textures = texturesCreateDefinition();
_lighting = lightingCreateDefinition();
_water = waterCreateDefinition();
_renderer.customData[0] = &_terrain;
_renderer.customData[1] = &_textures;
_renderer.customData[2] = &_lighting;
_renderer.customData[3] = &_water;
configScaling(0.5, 200.0, 1.0, 50.0);
}
protected:
QColor getColor(double x, double y)
{
Vector3 down = {0.0, -1.0, 0.0};
Vector3 location;
double height = terrainGetHeight(&_terrain, x, y);
if (height < _water.height)
{
location.x = x;
location.y = _water.height;
location.z = y;
return colorToQColor(waterGetColor(&_water, &_renderer, location, down));
}
else
{
return colorToQColor(terrainGetColor(&_terrain, &_renderer, x, y, scaling));
}
}
void updateData()
{
sceneryGetTerrain(&_terrain);
sceneryGetLighting(&_lighting);
sceneryGetTextures(&_textures);
sceneryGetWater(&_water);
}
private:
Renderer _renderer;
TerrainDefinition _terrain;
WaterDefinition _water;
TexturesDefinition _textures;
LightingDefinition _lighting;
static double _getTerrainHeight(Renderer* renderer, double x, double z)
{
return terrainGetHeight((TerrainDefinition*)(renderer->customData[0]), x, z);
}
static Color _applyTextures(Renderer* renderer, Vector3 location, double precision)
{
return texturesGetColor((TexturesDefinition*)(renderer->customData[1]), renderer, location, precision);
}
static Color _applyLightingToSurface(Renderer* renderer, Vector3 location, Vector3 normal, SurfaceMaterial material)
{
return lightingApplyToSurface((LightingDefinition*)renderer->customData[2], renderer, location, normal, material);
}
static Color _maskLight(Renderer* renderer, Color light_color, Vector3 at_location, Vector3 light_location, Vector3 direction_to_light)
{
return terrainLightFilter((TerrainDefinition*)(renderer->customData[0]), renderer, light_color, at_location, light_location, direction_to_light);
}
};
/**************** Form ****************/
FormRender::FormRender(QWidget *parent) :
BaseForm(parent, true)
@ -20,6 +102,9 @@ FormRender::FormRender(QWidget *parent) :
_renderer_inited = false;
_preview_landscape = new PreviewRenderLandscape(this);
addPreview(_preview_landscape, QString(tr("Top-down preview")));
addInput(new InputCamera(this, tr("Camera"), &_camera));
addInputInt(tr("Quality"), &_quality, 1, 10, 1, 1);
addInputInt(tr("Image width"), &_width, 100, 2000, 10, 100);

View file

@ -33,6 +33,7 @@ private:
CameraDefinition _camera;
Renderer _renderer;
bool _renderer_inited;
BasePreview* _preview_landscape;
};
#endif // _PAYSAGES_QT_FORMRENDER_H_

View file

@ -22,6 +22,8 @@ public:
{
_renderer = rendererCreate();
_preview_definition = skyCreateDefinition();
configScaling(0.5, 5.0, 0.5, 2.5);
}
protected:
QColor getColor(double x, double y)
@ -29,7 +31,7 @@ protected:
Vector3 eye = {0.0, 0.0, 0.0};
Vector3 look;
look.x = 100.0;
look.x = 1.0;
look.y = -y;
look.z = x;
@ -52,6 +54,8 @@ public:
{
_renderer = rendererCreate();
_preview_definition = skyCreateDefinition();
configScaling(0.5, 5.0, 0.5, 2.5);
}
protected:
QColor getColor(double x, double y)
@ -59,7 +63,7 @@ protected:
Vector3 eye = {0.0, 0.0, 0.0};
Vector3 look;
look.x = -100.0;
look.x = -1.0;
look.y = -y;
look.z = -x;

View file

@ -18,6 +18,8 @@ public:
PreviewTerrainHeight(QWidget* parent):BasePreview(parent)
{
_preview_definition = terrainCreateDefinition();
configScaling(0.5, 200.0, 1.0, 50.0);
}
protected:
QColor getColor(double x, double y)
@ -40,16 +42,54 @@ class PreviewTerrainColor:public BasePreview
public:
PreviewTerrainColor(QWidget* parent):BasePreview(parent)
{
LightDefinition light;
TextureLayerDefinition* texture;
_renderer = rendererCreate();
_renderer.applyTextures = _applyTextures;
_renderer.getTerrainHeight = _getTerrainHeight;
/*_renderer.applyLightingToSurface = _applyLightingToSurface;*/
_renderer.applyLightingToSurface = _applyLightingToSurface;
_renderer.maskLight = _maskLight;
_lighting = lightingCreateDefinition();
light.color.r = 0.7;
light.color.g = 0.7;
light.color.b = 0.7;
light.amplitude = 0.0;
light.direction.x = -0.5;
light.direction.y = -0.7071;
light.direction.z = 0.5;
light.filtered = 0;
light.masked = 1;
light.reflection = 0.0;
lightingAddLight(&_lighting, light);
light.color.r = 0.3;
light.color.g = 0.3;
light.color.b = 0.3;
light.amplitude = 0.0;
light.direction.x = 0.5;
light.direction.y = -0.7071;
light.direction.z = -0.5;
light.filtered = 0;
light.masked = 0;
light.reflection = 0.0;
lightingAddLight(&_lighting, light);
lightingValidateDefinition(&_lighting);
_terrain = terrainCreateDefinition();
_textures = texturesCreateDefinition();
texturesAddLayer(&_textures);
texture = texturesGetLayer(&_textures, 0);
texture->material.base = COLOR_WHITE;
texture->material.reflection = 0.0;
texture->bump_height = 0.0;
texturesLayerValidateDefinition(texture);
_renderer.customData[0] = &_terrain;
_renderer.customData[1] = &_textures;
_renderer.customData[2] = &_lighting;
configScaling(0.5, 200.0, 1.0, 50.0);
}
protected:
QColor getColor(double x, double y)
@ -59,12 +99,13 @@ protected:
void updateData()
{
terrainCopyDefinition(&_definition, &_terrain);
sceneryGetTextures(&_textures);
//sceneryGetTextures(&_textures);
}
private:
Renderer _renderer;
TerrainDefinition _terrain;
TexturesDefinition _textures;
LightingDefinition _lighting;
static double _getTerrainHeight(Renderer* renderer, double x, double z)
{
@ -75,6 +116,16 @@ private:
{
return texturesGetColor((TexturesDefinition*)(renderer->customData[1]), renderer, location, precision);
}
static Color _applyLightingToSurface(Renderer* renderer, Vector3 location, Vector3 normal, SurfaceMaterial material)
{
return lightingApplyToSurface((LightingDefinition*)renderer->customData[2], renderer, location, normal, material);
}
static Color _maskLight(Renderer* renderer, Color light_color, Vector3 at_location, Vector3 light_location, Vector3 direction_to_light)
{
return terrainLightFilter((TerrainDefinition*)(renderer->customData[0]), renderer, light_color, at_location, light_location, direction_to_light);
}
};
/**************** Form ****************/
@ -86,7 +137,7 @@ FormTerrain::FormTerrain(QWidget *parent):
previewHeight = new PreviewTerrainHeight(this);
previewColor = new PreviewTerrainColor(this);
addPreview(previewHeight, QString(tr("Height preview (normalized)")));
addPreview(previewColor, QString(tr("Textured preview (no shadow)")));
addPreview(previewColor, QString(tr("Lighted preview (no texture)")));
addInputNoise(tr("Noise"), _definition.height_noise);
addInputDouble(tr("Height"), &_definition.height_factor, 0.0, 20.0, 0.1, 1.0);

View file

@ -34,6 +34,8 @@ public:
_renderer.customData[0] = &_terrain;
_preview_layer = texturesLayerCreateDefinition();
configScaling(0.5, 200.0, 1.0, 50.0);
}
protected:
QColor getColor(double x, double y)
@ -91,15 +93,17 @@ public:
_renderer.camera_location.x = 0.0;
_renderer.camera_location.y = 20.0;
_renderer.camera_location.z = 0.0;
configScaling(0.1, 10.0, 0.1, 1.0);
}
protected:
QColor getColor(double x, double y)
{
Vector3 location;
location.x = x * 0.01;
location.x = x;
location.y = 0.0;
location.z = y * 0.01;
return colorToQColor(texturesGetLayerColor(&_preview_layer, &_renderer, location, this->scaling * 0.01));
location.z = y;
return colorToQColor(texturesGetLayerColor(&_preview_layer, &_renderer, location, this->scaling));
}
void updateData()
{

View file

@ -24,6 +24,8 @@ public:
{
_water = waterCreateDefinition();
_terrain = terrainCreateDefinition();
configScaling(0.5, 200.0, 1.0, 50.0);
}
protected:
QColor getColor(double x, double y)
@ -77,6 +79,8 @@ public:
_renderer.applyLightingToSurface = _applyLightingToSurface;
_renderer.customData[0] = &_water;
_renderer.customData[1] = &_lighting;
configScaling(10.0, 1000.0, 10.0, 250.0);
}
protected:
QColor getColor(double x, double y)

View file

@ -93,62 +93,62 @@ Cliquez avec le bouton droit sur un point pour le supprimer.</translation>
<context>
<name>DialogNoise</name>
<message>
<location filename="../gui_qt/dialognoise.cpp" line="98"/>
<location filename="../gui_qt/dialognoise.cpp" line="102"/>
<source>Level preview</source>
<translation>Aperçu du composant</translation>
</message>
<message>
<location filename="../gui_qt/dialognoise.cpp" line="103"/>
<location filename="../gui_qt/dialognoise.cpp" line="106"/>
<source>Total preview</source>
<translation>Aperçu du total</translation>
</message>
<message>
<location filename="../gui_qt/dialognoise.cpp" line="112"/>
<location filename="../gui_qt/dialognoise.cpp" line="114"/>
<source>Noise components</source>
<translation>Composants du bruit</translation>
</message>
<message>
<location filename="../gui_qt/dialognoise.cpp" line="121"/>
<location filename="../gui_qt/dialognoise.cpp" line="123"/>
<source>Add component</source>
<translation>Ajouter un composant</translation>
</message>
<message>
<location filename="../gui_qt/dialognoise.cpp" line="125"/>
<location filename="../gui_qt/dialognoise.cpp" line="127"/>
<source>Remove component</source>
<translation>Supprimer un composant</translation>
</message>
<message>
<location filename="../gui_qt/dialognoise.cpp" line="129"/>
<location filename="../gui_qt/dialognoise.cpp" line="131"/>
<source>Component height</source>
<translation>Hauteur du composant</translation>
</message>
<message>
<location filename="../gui_qt/dialognoise.cpp" line="141"/>
<location filename="../gui_qt/dialognoise.cpp" line="143"/>
<source>Component scaling</source>
<translation>Echelle du composant</translation>
</message>
<message>
<location filename="../gui_qt/dialognoise.cpp" line="157"/>
<location filename="../gui_qt/dialognoise.cpp" line="159"/>
<source>Validate</source>
<translation>Valider</translation>
</message>
<message>
<location filename="../gui_qt/dialognoise.cpp" line="161"/>
<location filename="../gui_qt/dialognoise.cpp" line="163"/>
<source>Reset</source>
<translation>Recommencer</translation>
</message>
<message>
<location filename="../gui_qt/dialognoise.cpp" line="165"/>
<location filename="../gui_qt/dialognoise.cpp" line="167"/>
<source>Cancel</source>
<translation>Annuler</translation>
</message>
<message>
<location filename="../gui_qt/dialognoise.cpp" line="169"/>
<location filename="../gui_qt/dialognoise.cpp" line="171"/>
<source>Paysages 3D - Noise editor</source>
<translation>Paysages 3D - Editeur de bruit</translation>
</message>
<message>
<location filename="../gui_qt/dialognoise.cpp" line="220"/>
<location filename="../gui_qt/dialognoise.cpp" line="222"/>
<source>Component %1</source>
<translation>Composant %1</translation>
</message>
@ -220,32 +220,32 @@ Maintenir Ctrl : Plus rapide</translation>
<context>
<name>FormAtmosphere</name>
<message>
<location filename="../gui_qt/formatmosphere.cpp" line="62"/>
<location filename="../gui_qt/formatmosphere.cpp" line="64"/>
<source>Color preview</source>
<translation>Aperçu de la couleur</translation>
</message>
<message>
<location filename="../gui_qt/formatmosphere.cpp" line="64"/>
<location filename="../gui_qt/formatmosphere.cpp" line="66"/>
<source>Start distance</source>
<translation>Distance de début</translation>
</message>
<message>
<location filename="../gui_qt/formatmosphere.cpp" line="65"/>
<location filename="../gui_qt/formatmosphere.cpp" line="67"/>
<source>End distance</source>
<translation>Distance de fin</translation>
</message>
<message>
<location filename="../gui_qt/formatmosphere.cpp" line="66"/>
<location filename="../gui_qt/formatmosphere.cpp" line="68"/>
<source>Masking power</source>
<translation>Opacité maximale</translation>
</message>
<message>
<location filename="../gui_qt/formatmosphere.cpp" line="67"/>
<location filename="../gui_qt/formatmosphere.cpp" line="69"/>
<source>Lock color on haze</source>
<translation>Verrouiller sur la couleur de la brume</translation>
</message>
<message>
<location filename="../gui_qt/formatmosphere.cpp" line="68"/>
<location filename="../gui_qt/formatmosphere.cpp" line="70"/>
<source>Color</source>
<translation>Couleur</translation>
</message>
@ -253,72 +253,72 @@ Maintenir Ctrl : Plus rapide</translation>
<context>
<name>FormClouds</name>
<message>
<location filename="../gui_qt/formclouds.cpp" line="145"/>
<location filename="../gui_qt/formclouds.cpp" line="149"/>
<source>Layer coverage (no lighting)</source>
<translation>Couverture de la couche (sans éclairage)</translation>
</message>
<message>
<location filename="../gui_qt/formclouds.cpp" line="146"/>
<location filename="../gui_qt/formclouds.cpp" line="150"/>
<source>Color and lighting</source>
<translation>Echantillon éclairé</translation>
</message>
<message>
<location filename="../gui_qt/formclouds.cpp" line="148"/>
<location filename="../gui_qt/formclouds.cpp" line="152"/>
<source>Start altitude</source>
<translation>Altitude de début</translation>
</message>
<message>
<location filename="../gui_qt/formclouds.cpp" line="149"/>
<location filename="../gui_qt/formclouds.cpp" line="153"/>
<source>Max density altitude</source>
<translation>Altitude de densité maximale</translation>
</message>
<message>
<location filename="../gui_qt/formclouds.cpp" line="150"/>
<location filename="../gui_qt/formclouds.cpp" line="154"/>
<source>End altitude</source>
<translation>Altitude de fin</translation>
</message>
<message>
<location filename="../gui_qt/formclouds.cpp" line="151"/>
<location filename="../gui_qt/formclouds.cpp" line="155"/>
<source>Noise</source>
<translation>Bruit</translation>
</message>
<message>
<location filename="../gui_qt/formclouds.cpp" line="152"/>
<location filename="../gui_qt/formclouds.cpp" line="156"/>
<source>Coverage</source>
<translation>Couverture</translation>
</message>
<message>
<location filename="../gui_qt/formclouds.cpp" line="153"/>
<location filename="../gui_qt/formclouds.cpp" line="157"/>
<source>Scaling</source>
<translation>Echelle</translation>
</message>
<message>
<location filename="../gui_qt/formclouds.cpp" line="154"/>
<location filename="../gui_qt/formclouds.cpp" line="158"/>
<source>Base color</source>
<translation>Couleur de base</translation>
</message>
<message>
<location filename="../gui_qt/formclouds.cpp" line="155"/>
<location filename="../gui_qt/formclouds.cpp" line="159"/>
<source>Light reflection</source>
<translation>Facteur de réflexion de la lumière</translation>
</message>
<message>
<location filename="../gui_qt/formclouds.cpp" line="156"/>
<location filename="../gui_qt/formclouds.cpp" line="160"/>
<source>Light reflection shininess</source>
<translation>Concentration de la réflexion de lumière</translation>
</message>
<message>
<location filename="../gui_qt/formclouds.cpp" line="157"/>
<location filename="../gui_qt/formclouds.cpp" line="161"/>
<source>Transparency depth</source>
<translation>Distance de transparence</translation>
</message>
<message>
<location filename="../gui_qt/formclouds.cpp" line="158"/>
<location filename="../gui_qt/formclouds.cpp" line="162"/>
<source>Light traversal depth</source>
<translation>Distance de traversée de la lumière</translation>
</message>
<message>
<location filename="../gui_qt/formclouds.cpp" line="159"/>
<location filename="../gui_qt/formclouds.cpp" line="163"/>
<source>Minimum lighting</source>
<translation>Eclairage minimal</translation>
</message>
@ -353,47 +353,52 @@ Maintenir Ctrl : Plus rapide</translation>
<context>
<name>FormRender</name>
<message>
<location filename="../gui_qt/formrender.cpp" line="23"/>
<location filename="../gui_qt/formrender.cpp" line="106"/>
<source>Top-down preview</source>
<translation>Aperçu plongeant</translation>
</message>
<message>
<location filename="../gui_qt/formrender.cpp" line="108"/>
<source>Camera</source>
<translation>Caméra</translation>
</message>
<message>
<location filename="../gui_qt/formrender.cpp" line="24"/>
<location filename="../gui_qt/formrender.cpp" line="109"/>
<source>Quality</source>
<translation>Qualité de rendu</translation>
</message>
<message>
<location filename="../gui_qt/formrender.cpp" line="25"/>
<location filename="../gui_qt/formrender.cpp" line="110"/>
<source>Image width</source>
<translation>Largeur de l&apos;image</translation>
</message>
<message>
<location filename="../gui_qt/formrender.cpp" line="26"/>
<location filename="../gui_qt/formrender.cpp" line="111"/>
<source>Image height</source>
<translation>Hauteur de l&apos;image</translation>
</message>
<message>
<location filename="../gui_qt/formrender.cpp" line="28"/>
<location filename="../gui_qt/formrender.cpp" line="113"/>
<source>Start new render</source>
<translation>Démarrer un rendu</translation>
</message>
<message>
<location filename="../gui_qt/formrender.cpp" line="30"/>
<location filename="../gui_qt/formrender.cpp" line="115"/>
<source>Show last render</source>
<translation>Voir le dernier rendu</translation>
</message>
<message>
<location filename="../gui_qt/formrender.cpp" line="32"/>
<location filename="../gui_qt/formrender.cpp" line="117"/>
<source>Save last render</source>
<translation>Sauvegarder le dernier rendu</translation>
</message>
<message>
<location filename="../gui_qt/formrender.cpp" line="111"/>
<location filename="../gui_qt/formrender.cpp" line="196"/>
<source>Choose a filename to save the last render</source>
<translation>Choisissez un nom de fichier pour le rendu</translation>
</message>
<message>
<location filename="../gui_qt/formrender.cpp" line="115"/>
<location filename="../gui_qt/formrender.cpp" line="200"/>
<source>The picture %1 has been saved.</source>
<translation>L&apos;image %1 a é sauvegardée.</translation>
</message>
@ -401,47 +406,47 @@ Maintenir Ctrl : Plus rapide</translation>
<context>
<name>FormSky</name>
<message>
<location filename="../gui_qt/formsky.cpp" line="84"/>
<location filename="../gui_qt/formsky.cpp" line="88"/>
<source>West preview</source>
<translation>Aperçu de l&apos;ouest</translation>
</message>
<message>
<location filename="../gui_qt/formsky.cpp" line="86"/>
<location filename="../gui_qt/formsky.cpp" line="90"/>
<source>East preview</source>
<translation>Aperçu de l&apos;est</translation>
</message>
<message>
<location filename="../gui_qt/formsky.cpp" line="88"/>
<location filename="../gui_qt/formsky.cpp" line="92"/>
<source>Day time</source>
<translation>Heure du jour</translation>
</message>
<message>
<location filename="../gui_qt/formsky.cpp" line="89"/>
<location filename="../gui_qt/formsky.cpp" line="93"/>
<source>Sun color</source>
<translation>Couleur du soleil</translation>
</message>
<message>
<location filename="../gui_qt/formsky.cpp" line="90"/>
<location filename="../gui_qt/formsky.cpp" line="94"/>
<source>Sun radius</source>
<translation>Diamètre apparent du soleil</translation>
</message>
<message>
<location filename="../gui_qt/formsky.cpp" line="91"/>
<location filename="../gui_qt/formsky.cpp" line="95"/>
<source>Zenith color</source>
<translation>Couleur du ciel au zénith</translation>
</message>
<message>
<location filename="../gui_qt/formsky.cpp" line="92"/>
<location filename="../gui_qt/formsky.cpp" line="96"/>
<source>Haze color</source>
<translation>Couleur de la brume</translation>
</message>
<message>
<location filename="../gui_qt/formsky.cpp" line="93"/>
<location filename="../gui_qt/formsky.cpp" line="97"/>
<source>Haze height</source>
<translation>Hauteur apparente de la brume</translation>
</message>
<message>
<location filename="../gui_qt/formsky.cpp" line="94"/>
<location filename="../gui_qt/formsky.cpp" line="98"/>
<source>Haze smoothing</source>
<translation>Facteur de lissage de la brume</translation>
</message>
@ -449,27 +454,31 @@ Maintenir Ctrl : Plus rapide</translation>
<context>
<name>FormTerrain</name>
<message>
<location filename="../gui_qt/formterrain.cpp" line="88"/>
<location filename="../gui_qt/formterrain.cpp" line="139"/>
<source>Height preview (normalized)</source>
<translation>Aperçu de la hauteur (normalisée)</translation>
</message>
<message>
<location filename="../gui_qt/formterrain.cpp" line="89"/>
<source>Textured preview (no shadow)</source>
<translation>Aperçu du rendu (sans ombres)</translation>
<translation type="obsolete">Aperçu du rendu (sans ombres)</translation>
</message>
<message>
<location filename="../gui_qt/formterrain.cpp" line="91"/>
<location filename="../gui_qt/formterrain.cpp" line="140"/>
<source>Lighted preview (no texture)</source>
<translation>Aperçu éclairé (sans texture)</translation>
</message>
<message>
<location filename="../gui_qt/formterrain.cpp" line="142"/>
<source>Noise</source>
<translation>Bruit</translation>
</message>
<message>
<location filename="../gui_qt/formterrain.cpp" line="92"/>
<location filename="../gui_qt/formterrain.cpp" line="143"/>
<source>Height</source>
<translation>Hauteur</translation>
</message>
<message>
<location filename="../gui_qt/formterrain.cpp" line="93"/>
<location filename="../gui_qt/formterrain.cpp" line="144"/>
<source>Scaling</source>
<translation>Echelle</translation>
</message>
@ -477,7 +486,7 @@ Maintenir Ctrl : Plus rapide</translation>
<context>
<name>FormTextures</name>
<message>
<location filename="../gui_qt/formtextures.cpp" line="128"/>
<location filename="../gui_qt/formtextures.cpp" line="132"/>
<source>Coverage preview</source>
<translation>Aperçu de la couverture</translation>
</message>
@ -486,77 +495,77 @@ Maintenir Ctrl : Plus rapide</translation>
<translation type="obsolete">Rendu en couleur</translation>
</message>
<message>
<location filename="../gui_qt/formtextures.cpp" line="129"/>
<location filename="../gui_qt/formtextures.cpp" line="133"/>
<source>Lighted sample</source>
<translation>Echantillon éclairé</translation>
</message>
<message>
<location filename="../gui_qt/formtextures.cpp" line="131"/>
<location filename="../gui_qt/formtextures.cpp" line="135"/>
<source>Surface noise</source>
<translation>Bruit de surface</translation>
</message>
<message>
<location filename="../gui_qt/formtextures.cpp" line="132"/>
<location filename="../gui_qt/formtextures.cpp" line="136"/>
<source>Surface noise height</source>
<translation>Hauteur du bruit</translation>
</message>
<message>
<location filename="../gui_qt/formtextures.cpp" line="133"/>
<location filename="../gui_qt/formtextures.cpp" line="137"/>
<source>Surface noise scaling</source>
<translation>Echelle du bruit</translation>
</message>
<message>
<location filename="../gui_qt/formtextures.cpp" line="134"/>
<location filename="../gui_qt/formtextures.cpp" line="138"/>
<source>Base color</source>
<translation>Couleur de base</translation>
</message>
<message>
<location filename="../gui_qt/formtextures.cpp" line="135"/>
<location filename="../gui_qt/formtextures.cpp" line="139"/>
<source>Light reflection</source>
<translation>Réflexion de lumière</translation>
</message>
<message>
<location filename="../gui_qt/formtextures.cpp" line="136"/>
<location filename="../gui_qt/formtextures.cpp" line="140"/>
<source>Light reflection shininess</source>
<translation>Concentration de la réflexion de lumière</translation>
<translation>Concentration de la lumière réfléchie</translation>
</message>
<message>
<location filename="../gui_qt/formtextures.cpp" line="139"/>
<location filename="../gui_qt/formtextures.cpp" line="143"/>
<source>Soft minimal height</source>
<translation>Altitude minimal (adoucie)</translation>
</message>
<message>
<location filename="../gui_qt/formtextures.cpp" line="138"/>
<location filename="../gui_qt/formtextures.cpp" line="142"/>
<source>Hard minimal height</source>
<translation>Altitude minimale</translation>
</message>
<message>
<location filename="../gui_qt/formtextures.cpp" line="141"/>
<location filename="../gui_qt/formtextures.cpp" line="145"/>
<source>Hard maximal height</source>
<translation>Altitude maximale</translation>
</message>
<message>
<location filename="../gui_qt/formtextures.cpp" line="140"/>
<location filename="../gui_qt/formtextures.cpp" line="144"/>
<source>Soft maximal height</source>
<translation>Altitude maximale (adoucie)</translation>
</message>
<message>
<location filename="../gui_qt/formtextures.cpp" line="143"/>
<location filename="../gui_qt/formtextures.cpp" line="147"/>
<source>Soft minimal slope</source>
<translation>Pente minimale (adoucie)</translation>
</message>
<message>
<location filename="../gui_qt/formtextures.cpp" line="142"/>
<location filename="../gui_qt/formtextures.cpp" line="146"/>
<source>Hard minimal slope</source>
<translation>Pente minimale</translation>
</message>
<message>
<location filename="../gui_qt/formtextures.cpp" line="145"/>
<location filename="../gui_qt/formtextures.cpp" line="149"/>
<source>Hard maximal slope</source>
<translation>Pente maximale</translation>
</message>
<message>
<location filename="../gui_qt/formtextures.cpp" line="144"/>
<location filename="../gui_qt/formtextures.cpp" line="148"/>
<source>Soft maximal slope</source>
<translation>Pente maximale (adoucie)</translation>
</message>
@ -564,72 +573,72 @@ Maintenir Ctrl : Plus rapide</translation>
<context>
<name>FormWater</name>
<message>
<location filename="../gui_qt/formwater.cpp" line="173"/>
<location filename="../gui_qt/formwater.cpp" line="177"/>
<source>Coverage preview</source>
<translation>Aperçu de la couverture</translation>
</message>
<message>
<location filename="../gui_qt/formwater.cpp" line="174"/>
<location filename="../gui_qt/formwater.cpp" line="178"/>
<source>Rendered preview (without/with lighting)</source>
<translation>Aperçu du rendu (sans/avec éclairage)</translation>
</message>
<message>
<location filename="../gui_qt/formwater.cpp" line="176"/>
<location filename="../gui_qt/formwater.cpp" line="180"/>
<source>Height</source>
<translation>Hauteur</translation>
</message>
<message>
<location filename="../gui_qt/formwater.cpp" line="177"/>
<location filename="../gui_qt/formwater.cpp" line="181"/>
<source>Surface color</source>
<translation>Couleur de la surface</translation>
</message>
<message>
<location filename="../gui_qt/formwater.cpp" line="178"/>
<location filename="../gui_qt/formwater.cpp" line="182"/>
<source>Light reflection</source>
<translation>Réflection de la lumière</translation>
</message>
<message>
<location filename="../gui_qt/formwater.cpp" line="179"/>
<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="180"/>
<location filename="../gui_qt/formwater.cpp" line="184"/>
<source>Transparency</source>
<translation>Transparence</translation>
</message>
<message>
<location filename="../gui_qt/formwater.cpp" line="181"/>
<location filename="../gui_qt/formwater.cpp" line="185"/>
<source>Reflection</source>
<translation>Reflets</translation>
</message>
<message>
<location filename="../gui_qt/formwater.cpp" line="182"/>
<location filename="../gui_qt/formwater.cpp" line="186"/>
<source>Transparency distance</source>
<translation>Distance maximale de transparence</translation>
</message>
<message>
<location filename="../gui_qt/formwater.cpp" line="183"/>
<location filename="../gui_qt/formwater.cpp" line="187"/>
<source>Depth color</source>
<translation>Couleur en profondeur</translation>
</message>
<message>
<location filename="../gui_qt/formwater.cpp" line="184"/>
<location filename="../gui_qt/formwater.cpp" line="188"/>
<source>Light-through distance</source>
<translation>Distance de filtrage de la lumière</translation>
</message>
<message>
<location filename="../gui_qt/formwater.cpp" line="185"/>
<location filename="../gui_qt/formwater.cpp" line="189"/>
<source>Waves noise</source>
<translation>Bruit des vagues</translation>
</message>
<message>
<location filename="../gui_qt/formwater.cpp" line="186"/>
<location filename="../gui_qt/formwater.cpp" line="190"/>
<source>Waves height</source>
<translation>Hauteur des vagues</translation>
</message>
<message>
<location filename="../gui_qt/formwater.cpp" line="187"/>
<location filename="../gui_qt/formwater.cpp" line="191"/>
<source>Waves scaling</source>
<translation>Echelle des vagues</translation>
</message>