paysages3d/src/interface/desktop/lighting/DialogMaterialEditor.cpp

80 lines
2 KiB
C++

#include "DialogMaterialEditor.h"
#include "ui_DialogMaterialEditor.h"
#include "common/freeformhelper.h"
DialogMaterialEditor::DialogMaterialEditor(QWidget *parent, SurfaceMaterial* material) :
QDialog(parent),
ui(new Ui::DialogMaterialEditor),
preview_lighted(&edited)
{
ui->setupUi(this);
original = material;
edited = *original;
form_helper = new FreeFormHelper(this);
form_helper->addPreview(ui->preview_lighted, &preview_lighted);
form_helper->addDoubleInputSlider(ui->slider_hue, &edited.base.h);
form_helper->addDoubleInputSlider(ui->slider_lightness, &edited.base.l);
form_helper->addDoubleInputSlider(ui->slider_saturation, &edited.base.s);
form_helper->addDoubleInputSlider(ui->slider_hardness, &edited.hardness);
form_helper->addDoubleInputSlider(ui->slider_reflection, &edited.reflection);
form_helper->addDoubleInputSlider(ui->slider_specularity, &edited.shininess);
form_helper->addDoubleInputSlider(ui->slider_receive_shadows, &edited.receive_shadows);
form_helper->setRevertButton(ui->button_revert);
form_helper->startManaging();
ui->preview_color->setColor(&edited._rgb);
connect(ui->button_apply, SIGNAL(clicked()), this, SLOT(accept()));
connect(ui->button_cancel, SIGNAL(clicked()), this, SLOT(reject()));
}
DialogMaterialEditor::~DialogMaterialEditor()
{
delete form_helper;
delete ui;
}
bool DialogMaterialEditor::getMaterial(QWidget* parent, SurfaceMaterial* material)
{
DialogMaterialEditor dialog(parent, material);
bool validated = dialog.exec() != 0;
if (validated)
{
*material = dialog.edited;
}
return validated;
}
void DialogMaterialEditor::refreshFromLocalData()
{
edited.validate();
ui->preview_color->update();
}
void DialogMaterialEditor::refreshFromFellowData()
{
}
void DialogMaterialEditor::updateLocalDataFromScenery()
{
// Revert
edited = *original;
}
void DialogMaterialEditor::commitLocalDataToScenery()
{
}
void DialogMaterialEditor::alterRenderer(SoftwareRenderer*)
{
}