00001 #ifndef HQWIDGET_H 00002 #define HQWIDGET_H 00003 00004 00005 #if defined(IS_OSX) && defined(USE_MDI) 00006 #include <QGLWidget> 00007 #else 00008 #include <QWidget> 00009 #endif 00010 00011 #if defined(PARASOLID) 00012 #include "HSolidModel.h" 00013 #include "HSolidView.h" 00014 #else 00015 #include "HBaseModel.h" 00016 #include "HBaseView.h" 00017 #endif 00018 00019 00033 #if defined(IS_OSX) && defined(USE_MDI) 00034 class HQWidget: public QGLWidget 00035 #else 00036 class HQWidget: public QWidget 00037 #endif 00038 { 00039 Q_OBJECT 00040 public: 00041 HQWidget( QWidget* parent=0, QString const & name = "", Qt::WFlags f=0, int aa=0); 00042 ~HQWidget(); 00043 00045 HBaseView* GetHoopsView() { return (HBaseView*) m_pHView; } 00046 00048 HBaseModel* GetHoopsModel() { return (HBaseModel*) m_pHBaseModel; } 00049 00050 static bool GetKeyState(unsigned int key, int &flags); 00051 00052 static const char * ChooseDriver(); 00053 00054 protected: 00055 00057 void * GetColorMap(); 00058 00060 void * GetWindowId(); 00061 00062 #if defined(IS_OSX) && defined(USE_MDI) 00063 00064 void * GetQGLContext(); 00065 #endif 00066 00068 void * GetClipOverride(); 00069 00071 virtual void Init(); 00072 00074 virtual QPaintEngine* paintEngine() const; 00075 00080 virtual void OnLeftButtonDown(QMouseEvent * e = 0); 00081 00086 virtual void OnLeftButtonUp(QMouseEvent * e = 0); 00087 00092 virtual void OnLeftButtonDblClk(QMouseEvent * e = 0); 00093 00098 virtual void OnMidButtonDown(QMouseEvent * e = 0); 00099 00104 virtual void OnMidButtonUp(QMouseEvent * e = 0); 00105 00110 virtual void OnMidButtonDblClk(QMouseEvent * e = 0); 00111 00116 virtual void OnRightButtonDown(QMouseEvent * e = 0); 00117 00122 virtual void OnRightButtonUp(QMouseEvent * e = 0); 00123 00128 virtual void OnRightButtonDblClk(QMouseEvent * e = 0); 00129 00134 virtual void wheelEvent(QWheelEvent * e = 0); 00135 00139 virtual void paintEvent( QPaintEvent* e); 00140 00144 virtual void resizeEvent( QResizeEvent* e); 00145 00146 virtual void focusInEvent(QFocusEvent* e); 00147 00148 virtual void focusOutEvent(QFocusEvent* e); 00149 00150 00155 virtual void keyPressEvent ( QKeyEvent * e ); 00156 00161 virtual void keyReleaseEvent ( QKeyEvent * e ); 00162 00166 virtual void mousePressEvent( QMouseEvent * mev); 00167 00171 virtual void mouseDoubleClickEvent( QMouseEvent * mev); 00172 00176 virtual void mouseReleaseEvent( QMouseEvent * mev); 00177 00178 00183 virtual void mouseMoveEvent( QMouseEvent * mev); 00184 00186 void AdjustAxisWindow(); 00187 00191 bool eventFilter(QObject *obj, QEvent *ev); 00192 00193 #ifdef PARASOLID 00194 00196 HSolidView * m_pHView; 00197 00199 HSolidModel * m_pHBaseModel; 00200 #else 00201 00202 HBaseView * m_pHView; 00203 00205 HBaseModel * m_pHBaseModel; 00206 #endif 00207 00208 bool ignore_update; 00209 00210 private: 00211 00212 bool initDone; 00213 00214 void setupWindow(); 00215 void setupWindow(bool use_gl); 00216 00217 unsigned long MapFlags(unsigned long state); 00218 00219 void * my_colormap; 00220 void * my_windowid; 00221 void * my_clip_override; 00222 bool my_have_gl_visual; 00223 int my_aa; 00224 00225 #if IS_OSX 00226 int use_clip_override[8]; 00227 #if USE_MDI 00228 void * my_qgl_context; 00229 #endif 00230 #endif 00231 00232 }; 00233 00234 00235 #endif 00236