8ffb8373
dmayerich
Improved material...
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#include <QtGui>
#include <QtOpenGL/QtOpenGL>
#include <GL/glu.h>
#include <math.h>
#include "qtSpectrumDisplay.h"
int axisMargins = 50;
qtSpectrumDisplay::qtSpectrumDisplay(QWidget *parent)
: QGLWidget(parent)
{
object = 0;
xRot = 0;
yRot = 0;
zRot = 0;
qtGreen = QColor::fromCmykF(0.40, 0.0, 1.0, 0.0);
qtPurple = QColor::fromCmykF(0.39, 0.39, 0.0, 0.0);
}
qtSpectrumDisplay::~qtSpectrumDisplay()
{
makeCurrent();
glDeleteLists(object, 1);
}
QSize qtSpectrumDisplay::minimumSizeHint() const
|
39a7d6e9
dmayerich
Added dialog supp...
|
30
|
{
|
8ffb8373
dmayerich
Improved material...
|
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
return QSize(50, 50);
}
QSize qtSpectrumDisplay::sizeHint() const
{
return QSize(400, 400);
}
void qtSpectrumDisplay::initializeGL()
{
//qglClearColor(qtPurple.dark());
glClearColor(0.0, 0.0, 0.0, 0.0);
//object = makeObject();
glShadeModel(GL_FLAT);
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
}
void qtSpectrumDisplay::printWavenumber(int xPos)
{
int viewParams[4];
glGetIntegerv(GL_VIEWPORT, viewParams);
float a = (float)xPos/(float)viewParams[2];
int wn = a * (nuMax - nuMin) + nuMin;
cout<<wn<<endl;
}
void qtSpectrumDisplay::paintGL()
{
//************* Draw Absorbance/Intensity **************************
//get the window size
int w = width();
int h = height();
glViewport(50, 30, w, h);
//prepare the projection for spectra (orthographic, bounded by spectral values)
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(nuMin, nuMax, aMin, aMax);
glMatrixMode(GL_MODELVIEW);
|
39a7d6e9
dmayerich
Added dialog supp...
|
77
78
79
|
glLoadIdentity();
//clear the screen
|
8ffb8373
dmayerich
Improved material...
|
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//set the line width
glLineWidth(1);
//draw the simulated spectrum (in white)
if(dispSimSpec)
{
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_LINE_STRIP);
for(unsigned int i=0; i<SimSpectrum.size(); i++)
glVertex2f(SimSpectrum[i].nu, SimSpectrum[i].A);
glEnd();
}
//draw the reference spectrum in gray
if(dispRefSpec && RefSpectrum.size() > 0)
{
glColor3f(0.5, 0.5, 0.5);
glBegin(GL_LINE_STRIP);
float nu;
for(unsigned int i=0; i<RefSpectrum[currentSpec].size(); i++)
{
nu = RefSpectrum[currentSpec][i].nu;
glVertex2f(nu, RefSpectrum[currentSpec][i].A + nu * refSlope);
}
glEnd();
|
39a7d6e9
dmayerich
Added dialog supp...
|
106
|
}
|
39a7d6e9
dmayerich
Added dialog supp...
|
107
108
109
|
//compute the maximum k and n
int nSamples = MaterialList[currentMaterial].eta.size();
|
8ffb8373
dmayerich
Improved material...
|
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
//************* Draw k **************************
//change the viewport properties and draw n
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(nuMin, nuMax, 0.0, kMax);
//glMatrixMode(GL_MODELVIEW);
//glLoadIdentity();
float nu;
if(dispMatK)
{
glColor3f(1.0, 0.0, 0.0);
glBegin(GL_LINE_STRIP);
for(int i=0; i<nSamples; i++)
{
nu = MaterialList[currentMaterial].nu[i];
glVertex2f(nu, MaterialList[currentMaterial].eta[i].imag());
}
glEnd();
}
if(dispSimK)
|
39a7d6e9
dmayerich
Added dialog supp...
|
133
|
{
|
8ffb8373
dmayerich
Improved material...
|
134
135
136
137
138
139
140
141
|
glColor3f(1.0, 1.0, 0.0);
glBegin(GL_LINE_STRIP);
for(unsigned int i=0; i<EtaK.size(); i++)
{
nu = EtaK[i].nu;
glVertex2f(nu, EtaK[i].A);
}
glEnd();
|
39a7d6e9
dmayerich
Added dialog supp...
|
142
|
}
|
39a7d6e9
dmayerich
Added dialog supp...
|
143
|
|
8ffb8373
dmayerich
Improved material...
|
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
|
//************* Draw n **************************
//change the viewport properties and draw n
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(nMag < 0.1) nMag = 0.1;
gluOrtho2D(nuMin, nuMax, baseIR - nMag, baseIR + nMag);
if(dispMatN)
{
glColor3f(0.0, 1.0, 0.0);
glBegin(GL_LINE_STRIP);
for(int i=0; i<nSamples; i++)
{
nu = MaterialList[currentMaterial].nu[i];
glVertex2f(nu, MaterialList[currentMaterial].eta[i].real());
}
glEnd();
}
if(dispSimN)
{
glColor3f(0.0, 1.0, 1.0);
glBegin(GL_LINE_STRIP);
for(unsigned int i=0; i<EtaN.size(); i++)
{
nu = EtaN[i].nu;
glVertex2f(nu, EtaN[i].A);
}
glEnd();
}
|
39a7d6e9
dmayerich
Added dialog supp...
|
172
|
|
8ffb8373
dmayerich
Improved material...
|
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
|
glCallList(object);
glFlush();
//*********************** Display axes values ****************************
ostringstream buff;
glViewport(0, 0, w, h);
int nDivs = 11;
glColor3f(1.0, 1.0, 1.0);
for(int i = 0; i < nDivs; i++)
{
float divStep = (aMax - aMin)/(nDivs - 1);
float pixStep = (float)(h - 10)/(nDivs - 1);
buff<<aMin + i * divStep;
renderText(0, h - i * pixStep, buff.str().c_str());
buff.clear(); buff.str("");
}
}
void qtSpectrumDisplay::resizeGL(int width, int height)
{
|
8ffb8373
dmayerich
Improved material...
|
198
199
200
201
202
203
204
205
206
207
|
}
void qtSpectrumDisplay::mousePressEvent(QMouseEvent *event)
{
lastPos = event->pos();
if(event->buttons() & Qt::LeftButton)
{
|
8ffb8373
dmayerich
Improved material...
|
208
209
210
211
212
213
|
printWavenumber(event->x());
}
}
void qtSpectrumDisplay::mouseMoveEvent(QMouseEvent *event)
{
|
8ffb8373
dmayerich
Improved material...
|
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
|
lastPos = event->pos();
}
void qtSpectrumDisplay::quad(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2,
GLdouble x3, GLdouble y3, GLdouble x4, GLdouble y4)
{
qglColor(qtGreen);
glVertex3d(x1, y1, -0.05);
glVertex3d(x2, y2, -0.05);
glVertex3d(x3, y3, -0.05);
glVertex3d(x4, y4, -0.05);
glVertex3d(x4, y4, +0.05);
glVertex3d(x3, y3, +0.05);
glVertex3d(x2, y2, +0.05);
glVertex3d(x1, y1, +0.05);
}
void qtSpectrumDisplay::normalizeAngle(int *angle)
{
while (*angle < 0)
*angle += 360 * 16;
while (*angle > 360 * 16)
*angle -= 360 * 16;
|
39a7d6e9
dmayerich
Added dialog supp...
|
239
|
}
|