BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
RealSpaceModel Class Reference
Inheritance diagram for RealSpaceModel:
[legend]
Collaboration diagram for RealSpaceModel:
[legend]

Signals

void updated (bool withEye)
 

Public Member Functions

void add (Object *)
 
void addBlend (Object *)
 
virtual void cameraUpdated (Camera const &)
 
void clearBlend ()
 
void clearOpaque ()
 
bool modelIsEmpty ()
 
void releaseGeometries ()
 
void rem (Object *)
 

Static Public Member Functions

static Particles::Particle * newParticle (Particles::EShape k, float R)
 

Public Attributes

Camera::Position defCamPos
 

Private Member Functions

void draw (Canvas &) const
 
void drawBlend (Canvas &) const
 

Private Attributes

QVector< Object * > objects
 
QVector< Object * > objectsBlend
 

Detailed Description

Definition at line 20 of file RealSpaceModel.h.

Member Function Documentation

◆ add()

void RealSpace::Model::add ( Object o)
inherited

Definition at line 119 of file model.cpp.

120 {
121  ASSERT(o);
122  ASSERT(!o->model);
123  o->model = this;
124  objects.append(o);
125 }
#define ASSERT(condition)
Definition: Assert.h:31
QVector< Object * > objects
Definition: model.h:59

References ASSERT, RealSpace::Object::model, and RealSpace::Model::objects.

Referenced by RealSpaceBuilder::populateParticleFromParticle3DContainer().

◆ addBlend()

void RealSpace::Model::addBlend ( Object o)
inherited

Definition at line 127 of file model.cpp.

128 {
129  ASSERT(o);
130  ASSERT(!o->model);
131  o->model = this;
132  objectsBlend.append(o);
133 }
QVector< Object * > objectsBlend
Definition: model.h:59

References ASSERT, RealSpace::Object::model, and RealSpace::Model::objectsBlend.

Referenced by RealSpaceBuilder::populateLayer(), and RealSpaceBuilder::populateParticleFromParticle3DContainer().

◆ cameraUpdated()

virtual void RealSpace::Model::cameraUpdated ( Camera const &  )
inlinevirtualinherited

Definition at line 51 of file model.h.

51 {}

◆ clearBlend()

void RealSpace::Model::clearBlend ( )
inherited

Definition at line 43 of file model.cpp.

44 {
45  while (!objectsBlend.isEmpty())
46  delete objectsBlend.first();
47  emit updated(false);
48 }
void updated(bool withEye)

References RealSpace::Model::objectsBlend, and RealSpace::Model::updated().

◆ clearOpaque()

void RealSpace::Model::clearOpaque ( )
inherited

Definition at line 36 of file model.cpp.

37 {
38  while (!objects.isEmpty())
39  delete objects.first();
40  emit updated(false);
41 }

References RealSpace::Model::objects, and RealSpace::Model::updated().

◆ draw()

void RealSpace::Model::draw ( Canvas canvas) const
privateinherited

Definition at line 165 of file model.cpp.

166 {
167  for (auto o : objects)
168  o->draw(canvas);
169 }

References RealSpace::Model::objects.

Referenced by RealSpace::Canvas::paintGL().

◆ drawBlend()

void RealSpace::Model::drawBlend ( Canvas canvas) const
privateinherited

Definition at line 171 of file model.cpp.

172 {
173  for (auto o : objectsBlend)
174  o->draw(canvas);
175 }

References RealSpace::Model::objectsBlend.

Referenced by RealSpace::Canvas::paintGL().

◆ modelIsEmpty()

bool RealSpace::Model::modelIsEmpty ( )
inherited

Definition at line 157 of file model.cpp.

158 {
159  if (objects.isEmpty() && objectsBlend.isEmpty())
160  return true;
161  else
162  return false;
163 }

References RealSpace::Model::objects, and RealSpace::Model::objectsBlend.

Referenced by RealSpace::Canvas::paintGL().

◆ newParticle()

Particles::Particle * RealSpace::Model::newParticle ( Particles::EShape  k,
float  R 
)
staticinherited

Definition at line 50 of file model.cpp.

51 {
52  using namespace Particles;
53 
54  float D = 2 * R;
55 
56  switch (k) {
57  case EShape::None:
58  return nullptr;
59  case EShape::BarGauss:
60  return new BarGauss(D, D, 5 * D);
61  case EShape::BarLorentz:
62  return new BarLorentz(D, D, 5 * D);
63  case EShape::Box:
64  return new Box(D, D, D);
65  case EShape::FullSphere:
66  return new FullSphere(R);
67  case EShape::FullSpheroid:
68  return new FullSpheroid(R / 2, D);
69  case EShape::Cylinder:
70  return new Cylinder(R, D);
71  case EShape::TruncatedSphere:
72  return new TruncatedSphere(R, D / 3);
73  case EShape::TruncatedSpheroid:
74  return new TruncatedSpheroid(R, 2 * R, 1.5);
75  case EShape::Cone:
76  return new Cone(R, D, 1.3f);
77  case EShape::Icosahedron:
78  return new Icosahedron(R * IcosahedronL2R);
79  case EShape::Dodecahedron:
80  return new Dodecahedron(R * DodecahedronL2R);
81  case EShape::TruncatedCube:
82  return new TruncatedCube(D, D / 3);
83  case EShape::Prism6:
84  return new Prism6(R, D);
85  case EShape::Cone6:
86  return new Cone6(R, D, 1.3f);
87  case EShape::Pyramid:
88  return new Pyramid(D, D, 1.3f);
89  case EShape::Cuboctahedron:
90  return new Cuboctahedron(D, R * 3 / 2, 2.f / 3, 2);
91  case EShape::Prism3:
92  return new Prism3(R, D);
93  case EShape::Tetrahedron:
94  return new Tetrahedron(R, D, 1.3f);
95  case EShape::EllipsoidalCylinder:
96  return new EllipsoidalCylinder(R, R / 2, D);
97  case EShape::HemiEllipsoid:
98  return new HemiEllipsoid(R, R, D);
99  case EShape::Dot:
100  return new Dot();
101  case EShape::CosineRippleBox:
102  return new CosineRippleBox(D, D, D); // TODO ripples should be elongated
103  case EShape::CosineRippleGauss:
104  return new CosineRippleGauss(D, D, D); // TODO ripples should be elongated
105  case EShape::CosineRippleLorentz:
106  return new CosineRippleLorentz(D, D, D); // TODO ripples should be elongated
107  case EShape::SawtoothRippleBox:
108  return new SawtoothRippleBox(D, D, D); // TODO ripples should be elongated
109  case EShape::SawtoothRippleGauss:
110  return new SawtoothRippleGauss(D, D, D); // TODO ripples should be elongated
111  case EShape::SawtoothRippleLorentz:
112  return new SawtoothRippleLorentz(D, D, D); // TODO ripples should be elongated
113  case EShape::AnisoPyramid:
114  return new AnisoPyramid(R, D, D, 1.3f);
115  }
116  return nullptr;
117 }
Definition: Box.h:25
const float DodecahedronL2R
const float IcosahedronL2R

References RealSpace::DodecahedronL2R, and RealSpace::IcosahedronL2R.

◆ releaseGeometries()

void RealSpace::Model::releaseGeometries ( )
inherited

Definition at line 149 of file model.cpp.

150 {
151  for (auto o : objects)
152  o->releaseGeometry();
153  for (auto o : objectsBlend)
154  o->releaseGeometry();
155 }

References RealSpace::Model::objects, and RealSpace::Model::objectsBlend.

◆ rem()

void RealSpace::Model::rem ( Object o)
inherited

Definition at line 135 of file model.cpp.

136 {
137  int i;
138  if ((i = objects.indexOf(o)) >= 0)
139  objects.remove(i);
140  else if ((i = objectsBlend.indexOf(o)) >= 0)
141  objectsBlend.remove(i);
142  else
143  ASSERT(false); // object not found, should not happen, bad caller!
144 
145  o->releaseGeometry();
146  o->model = nullptr;
147 }

References ASSERT, RealSpace::Object::model, RealSpace::Model::objects, RealSpace::Model::objectsBlend, and RealSpace::Object::releaseGeometry().

Referenced by RealSpace::Object::~Object().

Here is the call graph for this function:

◆ updated

void RealSpace::Model::updated ( bool  withEye)
signalinherited

Member Data Documentation

◆ defCamPos

Camera::Position RealSpace::Model::defCamPos
inherited

Definition at line 53 of file model.h.

Referenced by RealSpaceBuilder::populate(), and RealSpace::Canvas::setCamera().

◆ objects

◆ objectsBlend


The documentation for this class was generated from the following file: