source: src/UIElements/Views/Qt4/Qt3D/GLWorldView.hpp

Candidate_v1.7.1 stable v1.7.1
Last change on this file was c742bb1, checked in by Frederik Heber <frederik.heber@…>, 4 months ago

Removes some Observer::signOn's from GLWorldView.

  • Property mode set to 100644
File size: 3.4 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
[3f5b0a]22#include <boost/thread/recursive_mutex.hpp>
23
[3e93332]24class molecule;
[907636]25class QKeyEvent;
26class GLWorldScene;
[d238e7]27class QGLPainter;
[0e5d14]28class QToolBar;
[585f78]29class QTimer;
[d238e7]30
[2f7988]31class QtObservedInstanceBoard;
[15c8a9]32
[f91ef6]33#include "UIElements/Qt4/InstanceBoard/ObservedValue_types.hpp"
[a2c7c3]34#include "UIElements/Views/Qt4/Qt3D/GLWorldScene.hpp"
[f91ef6]35
[d238e7]36/** This class is the view on the 3D representation of the World, i.e. the whole
37 * of all molecules (consisting of atoms).
38 *
39 */
[7188b1]40class GLWorldView : public QGLView, public Observer
[d238e7]41{
[06ebf5]42 Q_OBJECT
[d238e7]43public:
[15c8a9]44 GLWorldView(
[2f7988]45 QtObservedInstanceBoard * _board,
[15c8a9]46 QWidget *parent=0);
[06ebf5]47 virtual ~GLWorldView();
[d238e7]48
[0e5d14]49 void addToolBarActions(QToolBar *toolbar);
[26ed25]50 void createDomainBox();
51 void createDreiBein();
[0e5d14]52
[7188b1]53 // Observer functions
54 void update(Observable *publisher);
55 void subjectKilled(Observable *publisher);
56 void recieveNotification(Observable *publisher, Notification_ptr notification);
[a2c7c3]57
58 GLWorldScene::SelectionModeType getSelectionMode() const;
[7188b1]59
[d238e7]60public slots:
[585f78]61 void sceneChangeSignalled();
[98ad30]62 void triggerUpdateGL(const bool _needsRedraw = true);
[704d59]63 void sceneHoverSignalled(const atomId_t _id);
64 void sceneHoverSignalled(const moleculeId_t _id, int);
[592d42]65 void changeDreiBein();
66 void changeDomain();
[d238e7]67
[7188b1]68signals:
[98ad30]69 void updated(const bool _needsRedraw);
[57608e]70 void sceneUpdated();
[3927ef]71 void worldSelectionChanged();
[704d59]72 void hoverChanged(const atomId_t _id);
73 void hoverChanged(const moleculeId_t _id, int);
[07136a]74 void ShapeAdded(const std::string &);
75 void ShapeRemoved(const std::string &);
[f91ef6]76 void moleculesVisibilityChanged(ObservedValue_Index_t,bool);
[9cdab3]77 void customContextMenuRequested(const QPoint&);
[7188b1]78
[d238e7]79protected:
[06ebf5]80 void initializeGL(QGLPainter *painter);
81 void paintGL(QGLPainter *painter);
[e8c636]82 void drawDomainBox(QGLPainter *painter) const;
83 void drawDreiBein(QGLPainter *painter);
[98ad30]84 void updateGL();
[8880c9]85
86 // input functions
87 void mousePressEvent(QMouseEvent *event);
88 void mouseMoveEvent(QMouseEvent *event);
89 void keyPressEvent(QKeyEvent *event);
90 void wheelEvent(QWheelEvent *event);
[d238e7]91
[e13b34]92 // camera functions
93 enum CameraControlModeType{
94 Rotate,
95 Translate
96 };
97
98 void setCameraControlMode(CameraControlModeType mode);
99 CameraControlModeType getCameraControlMode(bool inverted = false);
100public slots:
101 void fitCameraToDomain();
102 void setCameraControlModeRotation();
103 void setCameraControlModeTranslation();
[8e7dd9]104 void setCameraStereoModeDisable();
105 void setCameraStereoModeHardware();
106 void setCameraStereoModeLeftRight();
107 void setCameraStereoModeRightLeft();
108 void setCameraStereoModeTopBottom();
109 void setCameraStereoModeBottomTop();
110 void setCameraStereoModeAnaglyph();
[e13b34]111
112protected:
113 CameraControlModeType cameraControlMode;
114
[592d42]115private:
116 void setdreiBeinStatus(const bool status);
117 void setDomainStatus(const bool status);
118
[d238e7]119private:
[284551]120
[06ebf5]121 GLWorldScene *worldscene;
[65487f]122
123 bool changesPresent;
[3927ef]124 bool processingSelectionChanged; // workaround to prevent a loop in (atom_iterator <-> observer)
[8880c9]125
126 QPointF lastMousePos;
[e8c636]127
[26ed25]128 QGLSceneNode *meshDomainBox;
129 QGLSceneNode *meshDreiBein;
130
[e8c636]131 QGLMaterial *domainBoxMaterial;
132 QGLMaterial *dreiBeinMaterial[3];
[585f78]133
134 QTimer *redrawTimer;
135 bool needsRedraw;
[8e7dd9]136
137 double defaultEyeSeparation;
[3f5b0a]138
139 boost::recursive_mutex changed_mutex;
140
[d238e7]141};
142
143#endif /* GLWORLDVIEW_HPP_ */
Note: See TracBrowser for help on using the repository browser.