source: src/UIElements/Views/Qt4/Qt3D/GLWorldView.hpp@ 15c75f8

SegFault_gcc4.6
Last change on this file since 15c75f8 was 7f1b51, checked in by Frederik Heber <heber@…>, 11 years ago

Merge branch 'GUI_Fixes' into stable

  • Property mode set to 100644
File size: 3.0 KB
RevLine 
[d238e7]1/*
2 * GLWorldView.hpp
3 *
4 * Created on: Auf 11, 2010
5 * Author: heber
6 */
7
8#ifndef GLWORLDVIEW_HPP_
9#define GLWORLDVIEW_HPP_
10
11// include config.h
12#ifdef HAVE_CONFIG_H
13#include <config.h>
14#endif
15
[4269ca]16#include <Qt3D/qglview.h>
[d238e7]17
[02ce36]18#include "CodePatterns/Observer/Observer.hpp"
[7188b1]19
20#include "World.hpp"
21
[3e93332]22class molecule;
[907636]23class QKeyEvent;
24class GLWorldScene;
[d238e7]25class QGLPainter;
[0e5d14]26class QToolBar;
[585f78]27class QTimer;
[d238e7]28
29/** This class is the view on the 3D representation of the World, i.e. the whole
30 * of all molecules (consisting of atoms).
31 *
32 */
[7188b1]33class GLWorldView : public QGLView, public Observer
[d238e7]34{
[06ebf5]35 Q_OBJECT
[d238e7]36public:
[06ebf5]37 GLWorldView(QWidget *parent=0);
38 virtual ~GLWorldView();
[d238e7]39
[0e5d14]40 void addToolBarActions(QToolBar *toolbar);
[26ed25]41 void createDomainBox();
42 void createDreiBein();
[0e5d14]43
[7188b1]44 // Observer functions
45 void update(Observable *publisher);
46 void subjectKilled(Observable *publisher);
47 void recieveNotification(Observable *publisher, Notification_ptr notification);
48
[d238e7]49public slots:
[65487f]50 void changeSignalled();
[585f78]51 void checkChanges();
52 void sceneChangeSignalled();
[407638e]53 void sceneHoverSignalled(const atom *_atom);
[592d42]54 void changeDreiBein();
55 void changeDomain();
[d238e7]56
[7188b1]57signals:
58 void changed();
[ce4126]59 void TimeChanged();
[beadd0]60 void atomInserted(const atomicNumber_t _id);
[c48ac12]61 void atomRemoved(const atomicNumber_t _id);
[53059e]62 void moleculeInserted(const molecule *_molecule);
[c67518]63 void moleculeRemoved(const molecule *_molecule);
[3927ef]64 void worldSelectionChanged();
[407638e]65 void hoverChanged(const atom *_atom);
[4d6662]66 void ShapeAdded();
67 void ShapeRemoved();
[7188b1]68
[d238e7]69protected:
[06ebf5]70 void initializeGL(QGLPainter *painter);
71 void paintGL(QGLPainter *painter);
[e8c636]72 void drawDomainBox(QGLPainter *painter) const;
73 void drawDreiBein(QGLPainter *painter);
[8880c9]74
75 // input functions
76 void mousePressEvent(QMouseEvent *event);
77 void mouseMoveEvent(QMouseEvent *event);
78 void keyPressEvent(QKeyEvent *event);
79 void wheelEvent(QWheelEvent *event);
[d238e7]80
[e13b34]81 // camera functions
82 enum CameraControlModeType{
83 Rotate,
84 Translate
85 };
86
87 void setCameraControlMode(CameraControlModeType mode);
88 CameraControlModeType getCameraControlMode(bool inverted = false);
89public slots:
90 void fitCameraToDomain();
91 void setCameraControlModeRotation();
92 void setCameraControlModeTranslation();
[8e7dd9]93 void setCameraStereoModeDisable();
94 void setCameraStereoModeHardware();
95 void setCameraStereoModeLeftRight();
96 void setCameraStereoModeRightLeft();
97 void setCameraStereoModeTopBottom();
98 void setCameraStereoModeBottomTop();
99 void setCameraStereoModeAnaglyph();
[e13b34]100
101protected:
102 CameraControlModeType cameraControlMode;
103
[592d42]104private:
105 void setdreiBeinStatus(const bool status);
106 void setDomainStatus(const bool status);
107
[d238e7]108private:
[284551]109
[06ebf5]110 GLWorldScene *worldscene;
[65487f]111
112 bool changesPresent;
[3927ef]113 bool processingSelectionChanged; // workaround to prevent a loop in (atom_iterator <-> observer)
[8880c9]114
115 QPointF lastMousePos;
[e8c636]116
[26ed25]117 QGLSceneNode *meshDomainBox;
118 QGLSceneNode *meshDreiBein;
119
[e8c636]120 QGLMaterial *domainBoxMaterial;
121 QGLMaterial *dreiBeinMaterial[3];
[585f78]122
123 QTimer *redrawTimer;
124 bool needsRedraw;
[8e7dd9]125
126 double defaultEyeSeparation;
[d238e7]127};
128
129#endif /* GLWORLDVIEW_HPP_ */
Note: See TracBrowser for help on using the repository browser.