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

Candidate_v1.7.1 stable v1.7.1
Last change on this file was 37d1c3, checked in by Frederik Heber <frederik.heber@…>, 2 weeks ago

Molecules in tesselated view can now be clicked and selected.

  • Property mode set to 100644
File size: 2.0 KB
Line 
1/*
2 * GLMoleculeObject_molecule.hpp
3 *
4 * Created on: Mar 30, 2012
5 * Author: ankele
6 */
7
8#ifndef GLMOLECULEOBJECT_MOLECULE_HPP_
9#define GLMOLECULEOBJECT_MOLECULE_HPP_
10
11// include config.h
12#ifdef HAVE_CONFIG_H
13#include <config.h>
14#endif
15
16#include "GLMoleculeObject.hpp"
17
18#include <Qt3D/qgeometrydata.h>
19
20#include "UIElements/Qt4/InstanceBoard/QtObservedMolecule.hpp"
21
22#include <map>
23
24#include <boost/function.hpp>
25
26#include "GLMoleculeObject_bond.hpp"
27
28#include "types.hpp"
29
30class atom;
31class bond;
32class molecule;
33class GLMoleculeObject_atom;
34class GLWorldScene;
35class QtObservedInstanceBoard;
36
37class GLMoleculeObject_molecule : public GLMoleculeObject
38{
39 Q_OBJECT
40public:
41 GLMoleculeObject_molecule(
42 QObject *parent,
43 QtObservedMolecule::ptr &_ObservedMolecule);
44 GLMoleculeObject_molecule(
45 QGLSceneNode *mesh[],
46 QObject *parent,
47 QtObservedMolecule::ptr &_ObservedMolecule);
48 virtual ~GLMoleculeObject_molecule();
49
50 void initialize(QGLView *view, QGLPainter *painter);
51 void draw(QGLPainter *painter, const QVector4D &cameraPlane);
52
53 typedef std::pair< atomId_t, atomId_t> BondIds;
54 friend std::ostream &operator<<(std::ostream &ost, const BondIds &t);
55
56signals:
57 void clicked(moleculeId_t);
58 void changed();
59 void changeOccured();
60
61private slots:
62 //!> grant GLWorldScene access to private slots
63 friend class GLWorldScene;
64
65 void setVisible(bool value);
66
67 void setTesselationOutOfDate();
68 void resetBoundingBox();
69 void resetIndex();
70 void resetSelected();
71 void wasClicked();
72
73private:
74
75 void init();
76
77 void resetTesselationHull();
78
79private:
80
81 QGeometryData updateTesselationHull() const;
82
83 //!> contains current version of the tesselation hull on request
84 QGeometryData TesselationHull;
85
86 //!> simple flag that tells whether we need to recalc the hull or not
87 bool TesselationUptodate;
88
89 atomId_t hoverAtomId;
90
91 QtObservedMolecule::ptr ObservedMolecule;
92};
93
94std::ostream &operator<<(std::ostream &ost, const GLMoleculeObject_molecule::BondIds &t);
95
96
97#endif /* GLMOLECULEOBJECT_MOLECULE_HPP_ */
Note: See TracBrowser for help on using the repository browser.