| [907636] | 1 | /* | 
|---|
|  | 2 | * GLWorldScene.hpp | 
|---|
|  | 3 | * | 
|---|
|  | 4 | *  This is based on the Qt3D example "teaservice", specifically parts of teaservice.cpp. | 
|---|
|  | 5 | * | 
|---|
|  | 6 | *  Created on: Aug 17, 2011 | 
|---|
|  | 7 | *      Author: heber | 
|---|
|  | 8 | */ | 
|---|
|  | 9 |  | 
|---|
|  | 10 | #ifndef GLWORLDSCENE_HPP_ | 
|---|
|  | 11 | #define GLWORLDSCENE_HPP_ | 
|---|
|  | 12 |  | 
|---|
|  | 13 | // include config.h | 
|---|
|  | 14 | #ifdef HAVE_CONFIG_H | 
|---|
|  | 15 | #include <config.h> | 
|---|
|  | 16 | #endif | 
|---|
|  | 17 |  | 
|---|
|  | 18 | #include <Qt/qobject.h> | 
|---|
|  | 19 |  | 
|---|
| [2ad1ec] | 20 | #include <iosfwd> | 
|---|
|  | 21 |  | 
|---|
|  | 22 | #include "GLMoleculeObject_bond.hpp" | 
|---|
| [c67518] | 23 | #include "GLMoleculeObject_molecule.hpp" | 
|---|
| [3e93332] | 24 | #include "types.hpp" | 
|---|
| [2ad1ec] | 25 |  | 
|---|
| [7188b1] | 26 | class atom; | 
|---|
| [c67518] | 27 | class molecule; | 
|---|
| [7188b1] | 28 |  | 
|---|
| [907636] | 29 | class QGLPainter; | 
|---|
|  | 30 | class QGLSceneNode; | 
|---|
|  | 31 | class QGLView; | 
|---|
|  | 32 |  | 
|---|
|  | 33 | class GLMoleculeObject; | 
|---|
|  | 34 | class GLMoleculeObject_atom; | 
|---|
| [c67518] | 35 | class GLMoleculeObject_molecule; | 
|---|
| [907636] | 36 |  | 
|---|
|  | 37 | /** This class contains a list of all molecules in the world. | 
|---|
|  | 38 | * | 
|---|
|  | 39 | */ | 
|---|
|  | 40 | class GLWorldScene : public QObject | 
|---|
|  | 41 | { | 
|---|
|  | 42 | Q_OBJECT | 
|---|
|  | 43 | public: | 
|---|
|  | 44 | GLWorldScene(QObject *parent=0); | 
|---|
|  | 45 | virtual ~GLWorldScene(); | 
|---|
|  | 46 |  | 
|---|
|  | 47 | //#if !defined(QT_OPENGL_ES_1) | 
|---|
|  | 48 | //  PerPixelEffect *lighting; | 
|---|
|  | 49 | //#endif | 
|---|
|  | 50 |  | 
|---|
|  | 51 | void changeMaterials(bool perPixel); | 
|---|
|  | 52 | QGLSceneNode* getAtom(size_t); | 
|---|
| [c67518] | 53 | QGLSceneNode* getMolecule(size_t); | 
|---|
| [907636] | 54 | QGLSceneNode* getBond(size_t, size_t); | 
|---|
|  | 55 |  | 
|---|
|  | 56 | void initialize(QGLView *view, QGLPainter *painter) const; | 
|---|
|  | 57 | void draw(QGLPainter *painter) const; | 
|---|
| [45ea59] | 58 | void drawDomainBox(QGLPainter *painter) const; | 
|---|
| [907636] | 59 |  | 
|---|
|  | 60 | signals: | 
|---|
|  | 61 | void changed(); | 
|---|
| [65487f] | 62 | void changeOccured(); | 
|---|
| [7188b1] | 63 | void pressed(); | 
|---|
|  | 64 | void released(); | 
|---|
|  | 65 | void clicked(); | 
|---|
|  | 66 | void clicked(atomId_t); | 
|---|
|  | 67 | void doubleClicked(); | 
|---|
|  | 68 | void hoverChanged(); | 
|---|
| [907636] | 69 |  | 
|---|
|  | 70 | private slots: | 
|---|
| [7188b1] | 71 | void atomClicked(atomId_t no); | 
|---|
|  | 72 | void atomInserted(const atom *_atom); | 
|---|
|  | 73 | void atomRemoved(const atom *_atom); | 
|---|
| [c67518] | 74 | void moleculeRemoved(const molecule *_molecule); | 
|---|
| [3927ef] | 75 | void worldSelectionChanged(); | 
|---|
| [2ad1ec] | 76 | void bondInserted(const bond *_bond, const GLMoleculeObject_bond::SideOfBond side); | 
|---|
|  | 77 | void bondRemoved(const atomId_t leftnr, const atomId_t rightnr); | 
|---|
| [907636] | 78 |  | 
|---|
|  | 79 | private: | 
|---|
|  | 80 | void init(); | 
|---|
|  | 81 |  | 
|---|
| [2ad1ec] | 82 | private: | 
|---|
| [37b2575] | 83 | typedef std::pair< atomId_t, atomId_t> BondIds; | 
|---|
| [2ad1ec] | 84 | friend std::ostream &operator<<(std::ostream &ost, const BondIds &t); | 
|---|
|  | 85 |  | 
|---|
| [37b2575] | 86 | typedef std::map< atomId_t, GLMoleculeObject_atom* > AtomNodeMap; | 
|---|
| [7188b1] | 87 | typedef std::map< BondIds , GLMoleculeObject_bond* > BondNodeMap; | 
|---|
| [c67518] | 88 | typedef std::map< moleculeId_t , GLMoleculeObject_molecule* > MoleculeNodeMap; | 
|---|
| [37b2575] | 89 | AtomNodeMap AtomsinSceneMap; | 
|---|
|  | 90 | BondNodeMap BondsinSceneMap; | 
|---|
| [c67518] | 91 | MoleculeNodeMap MoleculesinSceneMap; | 
|---|
| [45ea59] | 92 |  | 
|---|
|  | 93 | QGLMaterial *domainBoxMaterial; | 
|---|
| [907636] | 94 | }; | 
|---|
|  | 95 |  | 
|---|
| [2ad1ec] | 96 | std::ostream &operator<<(std::ostream &ost, const GLWorldScene::BondIds &t); | 
|---|
| [907636] | 97 |  | 
|---|
|  | 98 | #endif /* GLWORLDSCENE_HPP_ */ | 
|---|