goat3d
annotate goatview/src/goatview.h @ 103:45a9d493e98c
fixed the input latency issue by calling QWidget::update() instead of QGLWidget::updateGL()
update schedules an update instead of redrawing immediately.
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sat, 12 Sep 2015 17:40:02 +0300 |
parents | 32dccb16678f b43d33f3ba69 |
children |
rev | line source |
---|---|
nuclear@73 | 1 #ifndef GOATVIEW_H_ |
nuclear@73 | 2 #define GOATVIEW_H_ |
nuclear@73 | 3 |
nuclear@75 | 4 #include <QtCore/QtCore> |
nuclear@73 | 5 #include <QtWidgets/QtWidgets> |
nuclear@73 | 6 #include <QtOpenGL/QGLWidget> |
nuclear@74 | 7 #include "goat3d.h" |
nuclear@85 | 8 #include "scenemodel.h" |
nuclear@74 | 9 |
nuclear@88 | 10 void post_redisplay(); |
nuclear@88 | 11 |
nuclear@74 | 12 extern goat3d *scene; |
nuclear@73 | 13 |
nuclear@82 | 14 class GoatViewport; |
nuclear@76 | 15 |
nuclear@73 | 16 class GoatView : public QMainWindow { |
nuclear@83 | 17 private: |
nuclear@73 | 18 Q_OBJECT |
nuclear@83 | 19 |
nuclear@82 | 20 GoatViewport *glview; |
nuclear@85 | 21 QTreeView *treeview; |
nuclear@85 | 22 SceneModel *scene_model; |
nuclear@82 | 23 |
nuclear@90 | 24 // animation controls |
nuclear@97 | 25 QGroupBox *grp_anim_time, *grp_anim_ctl; |
nuclear@90 | 26 QSlider *slider_time; |
nuclear@97 | 27 QLabel *label_time_start, *label_time_end; |
nuclear@95 | 28 QSpinBox *spin_time; |
nuclear@90 | 29 QCheckBox *chk_loop; |
nuclear@90 | 30 QAction *act_play, *act_rewind; |
nuclear@90 | 31 |
nuclear@75 | 32 void closeEvent(QCloseEvent *ev); |
nuclear@73 | 33 bool make_menu(); |
nuclear@73 | 34 bool make_dock(); |
nuclear@73 | 35 bool make_center(); |
nuclear@73 | 36 |
nuclear@73 | 37 private slots: |
nuclear@73 | 38 void open_scene(); |
nuclear@98 | 39 void close_scene(); |
nuclear@73 | 40 void open_anim(); |
nuclear@73 | 41 |
nuclear@73 | 42 public: |
nuclear@73 | 43 GoatView(); |
nuclear@73 | 44 ~GoatView(); |
nuclear@82 | 45 |
nuclear@82 | 46 bool load_scene(const char *fname); |
nuclear@95 | 47 bool load_anim(const char *fname); |
nuclear@83 | 48 |
nuclear@83 | 49 void show_about(); |
nuclear@73 | 50 }; |
nuclear@73 | 51 |
nuclear@73 | 52 class GoatViewport : public QGLWidget { |
nuclear@82 | 53 private: |
nuclear@73 | 54 Q_OBJECT |
nuclear@82 | 55 |
nuclear@82 | 56 QWidget *main_win; |
nuclear@82 | 57 bool initialized; |
nuclear@82 | 58 |
nuclear@73 | 59 public: |
nuclear@82 | 60 GoatViewport(QWidget *main_win); |
nuclear@73 | 61 ~GoatViewport(); |
nuclear@73 | 62 |
nuclear@73 | 63 QSize sizeHint() const; |
nuclear@73 | 64 |
nuclear@73 | 65 void initializeGL(); |
nuclear@73 | 66 void resizeGL(int xsz, int ysz); |
nuclear@73 | 67 void paintGL(); |
nuclear@78 | 68 |
nuclear@83 | 69 void toggle_lighting(); |
nuclear@83 | 70 |
nuclear@78 | 71 void mousePressEvent(QMouseEvent *ev); |
nuclear@78 | 72 void mouseMoveEvent(QMouseEvent *ev); |
nuclear@73 | 73 }; |
nuclear@73 | 74 |
nuclear@73 | 75 #endif // GOATVIEW_H_ |