00001 #include "VolumeBuffer.h"
00002 #include <QtGui>
00003 #include <QtOpenGL>
00004
00005 #include <math.h>
00006
00007 #include "slicewidget.h"
00008 #include <GL/gl.h>
00009 #include <GL/glu.h>
00010 #include <GL/glut.h>
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044 sliceWidget::sliceWidget(QWidget *parent)
00045 : QGLWidget(parent)
00046 {
00047 setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
00048 }
00049
00050 sliceWidget::~sliceWidget()
00051 {
00052 makeCurrent();
00053 }
00054
00055 QSize sliceWidget::minimumSizeHint() const
00056 {
00057 return QSize(50, 50);
00058 }
00059
00060 QSize sliceWidget::sizeHint() const
00061 {
00062 return QSize(256, 256);
00063 }
00064
00065 void sliceWidget::initializeGL()
00066 {
00067
00068 glewInit();
00069 qglClearColor(trolltechPurple.dark());
00070 glShadeModel (GL_FLAT);
00071 glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
00072 glEnable(GL_TEXTURE_2D);
00073 }
00074
00075 void sliceWidget::paintGL()
00076 {
00077 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
00078
00079 glLoadIdentity();
00080 glTranslated(0.0, 0.0, -2.0);
00081
00082 glEnable(GL_TEXTURE_2D);
00083 glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
00084
00085 glGenTextures(1, &m_slice_id);
00086
00087
00088 glBindTexture(GL_TEXTURE_2D,m_slice_id);
00089
00090
00091 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
00092 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
00093
00094 GLint mode = GL_CLAMP;
00095 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, mode);
00096 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, mode);
00097
00098
00099
00100
00101
00102 glBegin(GL_QUADS);
00103
00104 glTexCoord3f(0.0f, 0.0f, 0.0f); glVertex3f (-1.0f, -1.0f, 0.0f);
00105 glTexCoord3f(0.0f, 1.0f, 0.0f); glVertex3f (1.0f, -1.0f, 0.0f);
00106 glTexCoord3f(1.0f, 1.0f, 0.0f); glVertex3f (1.0f, 1.0f, 0.0f);
00107 glTexCoord3f(1.0f, 0.0f, 0.0f); glVertex3f (-1.0f, 1.0f, 0.0f);
00108
00109 glEnd();
00110
00111 glFlush();
00112 glDisable(GL_TEXTURE_2D);
00113
00114 }
00115
00116 void sliceWidget::resizeGL(int width, int height)
00117 {
00118 int side = qMin(width, height);
00119
00120
00121 glViewport (0, 0, (GLsizei) width, (GLsizei) height);
00122 glMatrixMode (GL_PROJECTION);
00123 glLoadIdentity ();
00124 glFrustum (-1.0, 1.0, -1.0, 1.0, 1.5, 20.0);
00125 glMatrixMode (GL_MODELVIEW);
00126 }
00127
00128 void sliceWidget::mousePressEvent(QMouseEvent *event)
00129 {
00130 }
00131
00132 void sliceWidget::mouseMoveEvent(QMouseEvent *event)
00133 {
00134 }
00135
00136