HQWidget.h
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