/* * GLMoleculeObject_molecule.hpp * * Created on: Mar 30, 2012 * Author: ankele */ #ifndef GLMOLECULEOBJECT_MOLECULE_HPP_ #define GLMOLECULEOBJECT_MOLECULE_HPP_ // include config.h #ifdef HAVE_CONFIG_H #include #endif #include "GLMoleculeObject.hpp" #include #include "UIElements/Qt4/InstanceBoard/QtObservedMolecule.hpp" #include #include #include "GLMoleculeObject_bond.hpp" #include "types.hpp" class atom; class bond; class molecule; class GLMoleculeObject_atom; class GLWorldScene; class QtObservedInstanceBoard; class GLMoleculeObject_molecule : public GLMoleculeObject { Q_OBJECT public: GLMoleculeObject_molecule( QObject *parent, QtObservedMolecule::ptr &_ObservedMolecule); GLMoleculeObject_molecule( QGLSceneNode *mesh[], QObject *parent, QtObservedMolecule::ptr &_ObservedMolecule); virtual ~GLMoleculeObject_molecule(); void initialize(QGLView *view, QGLPainter *painter); void draw(QGLPainter *painter, const QVector4D &cameraPlane); typedef std::pair< atomId_t, atomId_t> BondIds; friend std::ostream &operator<<(std::ostream &ost, const BondIds &t); signals: void changed(); void changeOccured(); private slots: //!> grant GLWorldScene access to private slots friend class GLWorldScene; void setVisible(bool value); void setTesselationOutOfDate(); void resetBoundingBox(); void resetIndex(); void resetSelected(); private: void init(); void resetTesselationHull(); private: QGeometryData updateTesselationHull() const; //!> contains current version of the tesselation hull on request QGeometryData TesselationHull; //!> simple flag that tells whether we need to recalc the hull or not bool TesselationUptodate; atomId_t hoverAtomId; QtObservedMolecule::ptr ObservedMolecule; }; std::ostream &operator<<(std::ostream &ost, const GLMoleculeObject_molecule::BondIds &t); #endif /* GLMOLECULEOBJECT_MOLECULE_HPP_ */