BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
model.h
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/ba3d/model/model.h
6 //! @brief Defines Model class
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2018
11 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************************************
14 
15 #ifndef BORNAGAIN_GUI_BA3D_MODEL_MODEL_H
16 #define BORNAGAIN_GUI_BA3D_MODEL_MODEL_H
17 
19 #include "GUI/ba3d/view/camera.h"
20 #include <QVector>
21 
22 namespace RealSpace {
23 //------------------------------------------------------------------------------
24 
25 class Canvas;
26 class Object;
27 
28 class Model : public QObject {
29  Q_OBJECT
30  friend class Canvas;
31  friend class Camera;
32  friend class Object;
33 
34 public:
35  Model();
36  virtual ~Model();
37 
38  void clearOpaque();
39  void clearBlend();
40 
42 
43  void add(Object*); // add an opaque object, the model takes ownership
44  void addBlend(Object*); // add a transparent object, the model takes ownership
45  void rem(Object*); // removes an object, the caller becomes responsible
46 
47  void releaseGeometries(); // may be called any time
48 
49  bool modelIsEmpty();
50 
51  virtual void cameraUpdated(Camera const&) {}
52 
53  Camera::Position defCamPos; // default camera params
54 
55 signals:
56  void updated(bool withEye);
57 
58 private:
59  QVector<Object*> objects, objectsBlend;
60 
61  void draw(Canvas&) const;
62  void drawBlend(Canvas&) const;
63 };
64 
65 } // namespace RealSpace
66 #endif // BORNAGAIN_GUI_BA3D_MODEL_MODEL_H
Defines Camera class.
void updated(bool withEye)
Camera::Position defCamPos
Definition: model.h:53
virtual void cameraUpdated(Camera const &)
Definition: model.h:51
bool modelIsEmpty()
Definition: model.cpp:157
void rem(Object *)
Definition: model.cpp:135
void add(Object *)
Definition: model.cpp:119
void draw(Canvas &) const
Definition: model.cpp:165
void addBlend(Object *)
Definition: model.cpp:127
void clearBlend()
Definition: model.cpp:43
void clearOpaque()
Definition: model.cpp:36
void releaseGeometries()
Definition: model.cpp:149
QVector< Object * > objectsBlend
Definition: model.h:59
virtual ~Model()
Definition: model.cpp:23
static Particles::Particle * newParticle(Particles::EShape k, float R)
Definition: model.cpp:50
void drawBlend(Canvas &) const
Definition: model.cpp:171
QVector< Object * > objects
Definition: model.h:59
Defines Particle class.