Added layer coverage preview on new textures form
This commit is contained in:
parent
08b481df7d
commit
171df529fa
8 changed files with 137 additions and 8 deletions
|
@ -75,7 +75,8 @@ HEADERS += \
|
|||
lighting/DialogMaterialEditor.h \
|
||||
common/DrawingWidget.h \
|
||||
lighting/SmallPreviewColor.h \
|
||||
lighting/SmallPreviewHues.h
|
||||
lighting/SmallPreviewHues.h \
|
||||
textures/PreviewLayerCoverage.h
|
||||
|
||||
SOURCES += \
|
||||
terrain/widgetheightmap.cpp \
|
||||
|
@ -130,7 +131,8 @@ SOURCES += \
|
|||
lighting/DialogMaterialEditor.cpp \
|
||||
common/DrawingWidget.cpp \
|
||||
lighting/SmallPreviewColor.cpp \
|
||||
lighting/SmallPreviewHues.cpp
|
||||
lighting/SmallPreviewHues.cpp \
|
||||
textures/PreviewLayerCoverage.cpp
|
||||
|
||||
FORMS += \
|
||||
terrain/dialogterrainpainting.ui \
|
||||
|
|
38
src/editing/textures/PreviewLayerCoverage.cpp
Normal file
38
src/editing/textures/PreviewLayerCoverage.cpp
Normal file
|
@ -0,0 +1,38 @@
|
|||
#include "PreviewLayerCoverage.h"
|
||||
|
||||
#include "editing/basepreview.h"
|
||||
#include "rendering/textures/tex_preview.h"
|
||||
|
||||
void PreviewLayerCoverage::setTextures(TexturesDefinition* textures)
|
||||
{
|
||||
this->textures = textures;
|
||||
}
|
||||
|
||||
void PreviewLayerCoverage::setLayer(int layer)
|
||||
{
|
||||
this->layer = layer;
|
||||
}
|
||||
|
||||
void PreviewLayerCoverage::bindEvent(BasePreview* preview)
|
||||
{
|
||||
preview->addOsd(QString("geolocation"));
|
||||
|
||||
preview->configScaling(20.0, 1000.0, 20.0, 200.0);
|
||||
preview->configScrolling(-1000.0, 1000.0, 0.0, -1000.0, 1000.0, 0.0);
|
||||
}
|
||||
|
||||
void PreviewLayerCoverage::updateEvent()
|
||||
{
|
||||
if (textures)
|
||||
{
|
||||
TexturesPreviewLayerCoverage_bind(renderer, textures);
|
||||
}
|
||||
}
|
||||
|
||||
Color PreviewLayerCoverage::getColor2D(double x, double y, double scaling)
|
||||
{
|
||||
if (textures)
|
||||
{
|
||||
return TexturesPreviewLayerCoverage_getColor(renderer, x, y, scaling, layer);
|
||||
}
|
||||
}
|
24
src/editing/textures/PreviewLayerCoverage.h
Normal file
24
src/editing/textures/PreviewLayerCoverage.h
Normal file
|
@ -0,0 +1,24 @@
|
|||
#ifndef EDITING_TEXTURES_PREVIEWLAYERCOVERAGE_H
|
||||
#define EDITING_TEXTURES_PREVIEWLAYERCOVERAGE_H
|
||||
|
||||
#include "editing/common/previewrenderer.h"
|
||||
|
||||
class BasePreview;
|
||||
|
||||
class PreviewLayerCoverage : public PreviewRenderer
|
||||
{
|
||||
public:
|
||||
void setTextures(TexturesDefinition* textures);
|
||||
void setLayer(int layer);
|
||||
|
||||
protected:
|
||||
virtual void bindEvent(BasePreview* preview);
|
||||
virtual void updateEvent();
|
||||
virtual Color getColor2D(double x, double y, double scaling);
|
||||
|
||||
private:
|
||||
TexturesDefinition* textures = 0;
|
||||
int layer;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -5,6 +5,7 @@
|
|||
#include "../common/freelayerhelper.h"
|
||||
#include "rendering/scenery.h"
|
||||
#include "previewmaterial.h"
|
||||
#include "editing/textures/PreviewLayerCoverage.h"
|
||||
|
||||
MainTexturesForm::MainTexturesForm(QWidget *parent) : QWidget(parent), ui(new Ui::MainTexturesForm)
|
||||
{
|
||||
|
@ -28,6 +29,10 @@ MainTexturesForm::MainTexturesForm(QWidget *parent) : QWidget(parent), ui(new Ui
|
|||
form_helper->setRenderButton(ui->button_render);
|
||||
form_helper->startManaging();
|
||||
|
||||
preview_layer_coverage = new PreviewLayerCoverage();
|
||||
preview_layer_coverage->setTextures(textures);
|
||||
form_helper->addPreview(ui->preview_coverage, preview_layer_coverage);
|
||||
|
||||
connect(layer_helper, SIGNAL(layersChanged()), form_helper, SLOT(processDataChange()));
|
||||
}
|
||||
|
||||
|
@ -79,6 +84,11 @@ void MainTexturesForm::selectLayer(int layer)
|
|||
{
|
||||
ui->preview_coverage->setEnabled(true);
|
||||
ui->preview_texture->setEnabled(true);
|
||||
|
||||
preview_layer_coverage->setLayer(layer);
|
||||
|
||||
ui->preview_coverage->redraw();
|
||||
ui->preview_texture->redraw();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@ class MainTexturesForm;
|
|||
|
||||
class FreeFormHelper;
|
||||
class FreeLayerHelper;
|
||||
class PreviewLayerCoverage;
|
||||
|
||||
class MainTexturesForm : public QWidget
|
||||
{
|
||||
|
@ -28,12 +29,14 @@ public slots:
|
|||
|
||||
void updateLayers();
|
||||
void selectLayer(int layer);
|
||||
void selectPreset(int preset);
|
||||
|
||||
private:
|
||||
Ui::MainTexturesForm *ui;
|
||||
TexturesDefinition* textures;
|
||||
FreeFormHelper* form_helper;
|
||||
FreeLayerHelper* layer_helper;
|
||||
PreviewLayerCoverage* preview_layer_coverage;
|
||||
};
|
||||
|
||||
#endif // MAINTEXTURESFORM_H
|
||||
|
|
|
@ -98,12 +98,6 @@ void texturesLayerAutoPreset(TexturesLayerDefinition* definition, TexturesLayerP
|
|||
|
||||
double texturesGetMaximalDisplacement(TexturesDefinition* textures);
|
||||
|
||||
/*Renderer* cloudsCreatePreviewCoverageRenderer();
|
||||
Color cloudsGetPreviewCoverage(Renderer* renderer, double x, double y, double scaling, int perspective);
|
||||
|
||||
Renderer* cloudsCreatePreviewColorRenderer();
|
||||
Color cloudsGetPreviewColor(Renderer* renderer, double x, double y);*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1,2 +1,41 @@
|
|||
#include "tex_preview.h"
|
||||
#include "private.h"
|
||||
|
||||
#include "rendering/scenery.h"
|
||||
#include "rendering/tools.h"
|
||||
|
||||
void TexturesPreviewLayerCoverage_bind(Renderer* renderer, TexturesDefinition* definition)
|
||||
{
|
||||
TerrainDefinition* terrain = (TerrainDefinition*)TerrainDefinitionClass.create();
|
||||
sceneryGetTerrain(renderer->terrain->definition);
|
||||
TerrainRendererClass.bind(renderer, terrain);
|
||||
TerrainDefinitionClass.destroy(terrain);
|
||||
|
||||
TexturesRendererClass.bind(renderer, definition);
|
||||
}
|
||||
|
||||
Color TexturesPreviewLayerCoverage_getColor(Renderer* renderer, double x, double y, double scaling, int layer)
|
||||
{
|
||||
UNUSED(scaling);
|
||||
|
||||
TexturesLayerDefinition* layerdef;
|
||||
TerrainResult terrain;
|
||||
double presence;
|
||||
Color result;
|
||||
|
||||
layerdef = (TexturesLayerDefinition*)layersGetLayer(renderer->textures->definition->layers, layer);
|
||||
if (layerdef)
|
||||
{
|
||||
terrain = renderer->terrain->getResult(renderer, x, y, 1, 1);
|
||||
presence = texturesGetLayerBasePresence(layerdef, terrain);
|
||||
|
||||
result.r = result.g = result.b = presence;
|
||||
result.a = 1.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
result = COLOR_BLACK;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
19
src/rendering/textures/tex_preview.h
Normal file
19
src/rendering/textures/tex_preview.h
Normal file
|
@ -0,0 +1,19 @@
|
|||
#ifndef TEX_PREVIEW_H
|
||||
#define TEX_PREVIEW_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "rendering/renderer.h"
|
||||
#include "rendering/textures/public.h"
|
||||
|
||||
/* Single layer coverage */
|
||||
void TexturesPreviewLayerCoverage_bind(Renderer* renderer, TexturesDefinition* definition);
|
||||
Color TexturesPreviewLayerCoverage_getColor(Renderer* renderer, double x, double y, double scaling, int layer);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
Loading…
Reference in a new issue