00001 /**************************************************************************** 00002 ** 00003 ** Copyright (C) 2005-2008 Trolltech ASA. All rights reserved. 00004 ** 00005 ** This file is part of the example classes of the Qt Toolkit. 00006 ** 00007 ** This file may be used under the terms of the GNU General Public 00008 ** License versions 2.0 or 3.0 as published by the Free Software 00009 ** Foundation and appearing in the files LICENSE.GPL2 and LICENSE.GPL3 00010 ** included in the packaging of this file. Alternatively you may (at 00011 ** your option) use any later version of the GNU General Public 00012 ** License if such license has been publicly approved by Trolltech ASA 00013 ** (or its successors, if any) and the KDE Free Qt Foundation. In 00014 ** addition, as a special exception, Trolltech gives you certain 00015 ** additional rights. These rights are described in the Trolltech GPL 00016 ** Exception version 1.1, which can be found at 00017 ** http://www.trolltech.com/products/qt/gplexception/ and in the file 00018 ** GPL_EXCEPTION.txt in this package. 00019 ** 00020 ** Please review the following information to ensure GNU General 00021 ** Public Licensing requirements will be met: 00022 ** http://trolltech.com/products/qt/licenses/licensing/opensource/. If 00023 ** you are unsure which license is appropriate for your use, please 00024 ** review the following information: 00025 ** http://trolltech.com/products/qt/licenses/licensing/licensingoverview 00026 ** or contact the sales department at sales@trolltech.com. 00027 ** 00028 ** In addition, as a special exception, Trolltech, as the sole 00029 ** copyright holder for Qt Designer, grants users of the Qt/Eclipse 00030 ** Integration plug-in the right for the Qt/Eclipse Integration to 00031 ** link to functionality provided by Qt Designer and its related 00032 ** libraries. 00033 ** 00034 ** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, 00035 ** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR 00036 ** A PARTICULAR PURPOSE. Trolltech reserves all rights not expressly 00037 ** granted herein. 00038 ** 00039 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 00040 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 00041 ** 00042 ****************************************************************************/ 00043 00044 #ifndef PCGLWIDGET_H 00045 #define PCGLWIDGET_H 00046 00047 #include "VolumeBuffer.h" 00048 00049 #include <QGLWidget> 00050 00051 00052 //list of parallel lines, where 00053 //each line is defined by list of vertices and its color 00054 typedef QPair<QList<QPointF>,QColor> ParralelCoordinatesLine; 00055 typedef QList<ParralelCoordinatesLine> ParallelCoordinatesLinesList; 00056 00057 class pcWidget : public QGLWidget 00058 { 00059 Q_OBJECT 00060 00061 public: 00062 pcWidget(QWidget *parent = 0); 00063 ~pcWidget(); 00064 00065 QSize minimumSizeHint() const; 00066 QSize sizeHint() const; 00067 00068 void readPCLines(); 00069 00070 public slots: 00071 void set_pc_data(VolumeBuffer *vb1); 00072 void setSlice(int slice); 00073 void sedSelectionQuad(QPair<QPointF,QPointF> &sel_quad); 00074 void setTFtexture(QImage &tfimg); 00075 void setTFtexture1(QImage &tfimg); 00076 void setTFtexture2(QImage &tfimg); 00077 void setTFtexture3(QImage &tfimg); 00078 00079 protected: 00080 void initializeGL(); 00081 void paintGL(); 00082 void resizeGL(int width, int height); 00083 void mousePressEvent(QMouseEvent *event); 00084 void mouseMoveEvent(QMouseEvent *event); 00085 00086 private: 00087 GLuint m_slice_id; 00088 QPoint lastPos; 00089 QColor trolltechGreen; 00090 QColor trolltechPurple; 00091 int m_data_available; 00092 00093 ParallelCoordinatesLinesList pc_lines_list; 00094 VolumeBuffer *m_vb; 00095 00096 QPair<QPointF,QPointF> m_selection_quad; 00097 00098 int m_current_slice; 00099 00100 QImage m_tfimg; 00101 }; 00102 00103 #endif