00001 #ifndef QTFCANVAS_H_ 00002 #define QTFCANVAS_H_ 00003 00004 #include <Qt/qobject.h> 00005 00006 #include <QtGui/QWidget> 00007 #include <QtGui/QComboBox> 00008 #include <QtGui/QScrollBar> 00009 #include <QtOpenGL/QGLWidget> 00010 #include <QtGui/QKeyEvent> 00011 #include <QtGui/QMouseEvent> 00012 #include <QtGui/QColorDialog> 00013 00014 #include "VEvent.h" 00015 #include "VTransferFunction.h" 00016 00020 class QTFCanvas : public QObject, public QGLWidget 00021 { 00022 Q_OBJECT 00023 public: 00024 00029 QTFCanvas(QWidget* parent = 0); 00030 00034 virtual ~QTFCanvas(); 00035 00041 void setHistogram(std::vector<int> * histogram, unsigned char *histogram2d); 00042 00047 VTransferFunction * getTransferFunctionPtr(); 00048 00054 VTransferFunction * getTransferFunctionPtr(int index); 00055 00056 protected: 00057 00061 virtual void initializeGL(); 00062 00068 virtual void resizeGL( int w, int h ); 00069 00073 virtual void paintGL(); 00074 00075 00076 public: 00077 00082 void setObjectName(const QString &name); 00083 00088 void setActiveTF( int index); 00089 00090 00091 00096 void setHScroll(QScrollBar *_hbar) 00097 { 00098 hbar = _hbar; 00099 } 00100 00105 void setVScroll(QScrollBar *_vbar) 00106 { 00107 vbar = _vbar; 00108 } 00109 00113 void defaultSize() 00114 { 00115 tfbig = false; 00116 } 00117 00118 00119 00124 virtual void paintEvent( QPaintEvent *e ); 00125 00130 virtual void mousePressEvent ( QMouseEvent * e ); 00131 00136 virtual void mouseReleaseEvent ( QMouseEvent * e ); 00137 00142 virtual void mouseMoveEvent ( QMouseEvent * e ); 00143 00148 virtual void mouseClickEvent ( VMouseEvent gme ); 00149 00154 virtual void mouseDoubleClickEvent ( QMouseEvent * e ); 00155 00160 virtual void keyPressEvent ( QKeyEvent * e ); 00161 00166 virtual void keyReleaseEvent ( QKeyEvent * e ); 00167 00173 const VMouseEvent getMouseEvent (QMouseEvent *e); 00174 00180 const VKeyboardEvent getKeyboardEvent (QKeyEvent *e); 00181 00185 virtual void redraw(); 00186 00191 void saveTf(std::string filename); 00192 00197 void loadTf(std::string filename); 00198 00199 private: 00200 00201 //void initIcon(); 00202 00203 VTransferFunction *m_TransferFunction; 00204 std::vector< VTransferFunction > m_TFVector; 00206 float m_maxdensity; 00207 QScrollBar *hbar; 00208 QScrollBar *vbar; 00210 bool tfbig; 00211 //unsigned int icon_texturehandle; 00212 00213 }; 00214 #endif