7
#define DECFACTOR 100000.0f
11
Dialog::Dialog(PointBasedRenderer* r, QGLWidget* gla, QWidget *parent)
12
: QDockWidget(parent) {
18
this->setWidget(ui.frame);
19
this->setFeatures(QDockWidget::AllDockWidgetFeatures);
20
this->setAllowedAreas(Qt::LeftDockWidgetArea);
21
this->setFloating(true);
23
colorSignalMapper = new QSignalMapper(this);
24
valueSignalMapper = new QSignalMapper(this);
27
QGridLayout * qgrid = new QGridLayout(ui.uvTab);
28
qgrid->setColumnMinimumWidth(0, 45);
29
qgrid->setColumnMinimumWidth(1, 40);
30
qgrid->setColumnMinimumWidth(2, 40);
31
qgrid->setColumnMinimumWidth(3, 40);
33
QLabel *perVertexColorLabel = new QLabel(this);
34
perVertexColorLabel->setText("Use PerVertex Color");
36
QCheckBox *perVertexColorCBox = new QCheckBox(this);
38
// rendMode->colorMode = GLW::CMNone;
40
connect(perVertexColorCBox, SIGNAL(stateChanged(int)), this, SLOT(setColorMode(int)));
41
qgrid->addWidget(perVertexColorLabel, 0, 0);
42
qgrid->addWidget(perVertexColorCBox, 0, 1);
44
// connect(colorSignalMapper, SIGNAL(mapped(const QString &)), this, SLOT(setColorValue(const QString &)));
45
// connect(valueSignalMapper, SIGNAL(mapped(const QString &)), this, SLOT(valuesChanged(const QString &)));
47
QLabel *radiusSizeLabel = new QLabel(this);
48
radiusSizeLabel->setText("Radius Size");
50
QDoubleSpinBox *radiusSizeSBox = new QDoubleSpinBox(this);
51
connect(radiusSizeSBox, SIGNAL(valueChanged(double)), this, SLOT(setRadiusSize(double)));
52
qgrid->addWidget(radiusSizeLabel, 1, 0);
53
qgrid->addWidget(radiusSizeSBox, 1, 1);
54
radiusSizeSBox->setMaximum(99.0);
55
radiusSizeSBox->setValue(0.001);
56
radiusSizeSBox->setDecimals(4);
57
radiusSizeSBox->setSingleStep(0.01);
60
QLabel *prefilterSizeLabel = new QLabel(this);
61
prefilterSizeLabel->setText("Prefilter Size");
63
QDoubleSpinBox *prefilterSizeSBox = new QDoubleSpinBox(this);
64
connect(prefilterSizeSBox, SIGNAL(valueChanged(double)), this, SLOT(setPrefilterSize(double)));
65
qgrid->addWidget(prefilterSizeLabel, 2, 0);
66
qgrid->addWidget(prefilterSizeSBox, 2, 1);
67
prefilterSizeSBox->setMaximum(99.0);
68
prefilterSizeSBox->setValue(1.0);
69
prefilterSizeSBox->setDecimals(3);
70
prefilterSizeSBox->setSingleStep(0.01);
73
QLabel *minimumSizeLabel = new QLabel(this);
74
minimumSizeLabel->setText("Minimum Radius Size");
76
QDoubleSpinBox *minimumSizeSBox = new QDoubleSpinBox(this);
77
connect(minimumSizeSBox, SIGNAL(valueChanged(double)), this, SLOT(setMinimumSize(double)));
78
qgrid->addWidget(minimumSizeLabel, 3, 0);
79
qgrid->addWidget(minimumSizeSBox, 3, 1);
80
minimumSizeSBox->setMaximum(99.0);
81
minimumSizeSBox->setValue(0.1);
82
minimumSizeSBox->setDecimals(3);
83
minimumSizeSBox->setSingleStep(0.01);
85
// this->setWindowFlags(Qt::WindowStaysOnTopHint);
86
connect(ui.okButton, SIGNAL(clicked()), this, SLOT(accept()));
93
void Dialog::setRadiusSize(double value) {
94
renderer->setReconstructionFilterSize(value);
98
void Dialog::setPrefilterSize(double value) {
99
renderer->setPrefilterSize(value);
103
void Dialog::setMinimumSize(double value) {
104
renderer->setMinimumRadiusSize(value);
109
void Dialog::setColorMode(int state) {
110
if (state == Qt::Checked) {
111
rendMode->colorMode = GLW::CMPerVert;
113
rendMode->colorMode = GLW::CMNone;
118
void Dialog::changeTexturePath(int i) {
119
shaderInfo->textureInfo[i].path = textLineEdits[i]->text();
123
void Dialog::browseTexturePath(int i) {
124
QFileDialog fd(0,"Choose new texture");
126
QDir shadersDir = QDir(qApp->applicationDirPath());
127
#if defined(Q_OS_WIN)
128
if (shadersDir.dirName() == "debug" || shadersDir.dirName() == "release")
130
#elif defined(Q_OS_MAC)
131
if (shadersDir.dirName() == "MacOS") {
137
shadersDir.cd("textures");
139
fd.setDirectory(shadersDir);
145
newPath = fd.selectedFiles();
146
textLineEdits[i]->setText(newPath.at(0));
147
shaderInfo->textureInfo[i].path = newPath.at(0);
153
void Dialog::reloadTexture(int i) {
154
glDeleteTextures( 1, &shaderInfo->textureInfo[i].tId);
156
glEnable(shaderInfo->textureInfo[i].Target);
157
QImage img, imgScaled, imgGL;
158
img.load(shaderInfo->textureInfo[i].path);
159
// image has to be scaled to a 2^n size. We choose the first 2^N <= picture size.
160
int bestW=pow(2.0,floor(::log(double(img.width() ))/::log(2.0)));
161
int bestH=pow(2.0,floor(::log(double(img.height()))/::log(2.0)));
162
imgScaled=img.scaled(bestW,bestH,Qt::IgnoreAspectRatio,Qt::SmoothTransformation);
163
imgGL=QGLWidget::convertToGLFormat(imgScaled);
165
glGenTextures( 1, &(shaderInfo->textureInfo[i].tId) );
166
glBindTexture( shaderInfo->textureInfo[i].Target, shaderInfo->textureInfo[i].tId );
167
glTexImage2D( shaderInfo->textureInfo[i].Target, 0, 3, imgGL.width(), imgGL.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, imgGL.bits() );
168
glTexParameteri( shaderInfo->textureInfo[i].Target, GL_TEXTURE_MIN_FILTER, shaderInfo->textureInfo[i].MinFilter );
169
glTexParameteri( shaderInfo->textureInfo[i].Target, GL_TEXTURE_MAG_FILTER, shaderInfo->textureInfo[i].MagFilter );
170
glTexParameteri( shaderInfo->textureInfo[i].Target, GL_TEXTURE_WRAP_S, shaderInfo->textureInfo[i].WrapS );
171
glTexParameteri( shaderInfo->textureInfo[i].Target, GL_TEXTURE_WRAP_T, shaderInfo->textureInfo[i].WrapT );
172
glTexParameteri( shaderInfo->textureInfo[i].Target, GL_TEXTURE_WRAP_R, shaderInfo->textureInfo[i].WrapR );