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 #include "VTransferFunction2D.h" 00017 00021 class QTFCanvas : public QObject, public QGLWidget 00022 { 00023 Q_OBJECT 00024 public: 00025 00030 QTFCanvas(QWidget* parent = 0); 00031 00035 virtual ~QTFCanvas(); 00036 00042 void setHistogram(std::vector<int> * histogram, unsigned char *histogram2d); 00043 00048 VTransferFunction * getTransferFunctionPtr(); 00049 00054 VTransferFunction2D * getTransferFunction2DPtr(); 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 setModePtr(QComboBox *qmode); 00089 00094 void setHScroll(QScrollBar *_hbar) 00095 { 00096 hbar = _hbar; 00097 } 00098 00103 void setVScroll(QScrollBar *_vbar) 00104 { 00105 vbar = _vbar; 00106 } 00107 00111 void defaultSize() 00112 { 00113 tfbig = false; 00114 } 00115 00119 void checkForLongClick(); 00120 00125 void modeChanged(int index); 00126 00131 virtual void paintEvent( QPaintEvent *e ); 00132 00137 virtual void mousePressEvent ( QMouseEvent * e ); 00138 00143 virtual void mouseReleaseEvent ( QMouseEvent * e ); 00144 00149 virtual void mouseMoveEvent ( QMouseEvent * e ); 00150 00155 virtual void mouseClickEvent ( VMouseEvent gme ); 00156 00161 virtual void mouseDoubleClickEvent ( QMouseEvent * e ); 00162 00167 virtual void keyPressEvent ( QKeyEvent * e ); 00168 00173 virtual void keyReleaseEvent ( QKeyEvent * e ); 00174 00180 const VMouseEvent getMouseEvent (QMouseEvent *e); 00181 00187 const VKeyboardEvent getKeyboardEvent (QKeyEvent *e); 00188 00192 virtual void redraw(); 00193 00198 void saveTf(std::string filename); 00199 00204 void loadTf(std::string filename); 00205 00206 private: 00207 00208 //void initIcon(); 00209 00210 VTransferFunction m_TransferFunction; 00211 VTransferFunction2D m_TransferFunction2d; 00213 float m_maxdensity; 00214 QComboBox *m_tfmode_cb_Ptr; 00215 QScrollBar *hbar; 00216 QScrollBar *vbar; 00218 int m_tfmode; 00219 bool tfbig; 00220 //unsigned int icon_texturehandle; 00221 00222 }; 00223 #endif