summaryrefslogtreecommitdiff
path: root/src/gui/ElementRenderer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/ElementRenderer.cc')
-rw-r--r--src/gui/ElementRenderer.cc15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/gui/ElementRenderer.cc b/src/gui/ElementRenderer.cc
index a31b71b..01b27a0 100644
--- a/src/gui/ElementRenderer.cc
+++ b/src/gui/ElementRenderer.cc
@@ -11,6 +11,7 @@
#include "CurvedElement.h"
#include "StraightElement.h"
#include "Dipole.h"
+#include "Quadrupole.h"
#include "util.h"
#include "Vector3D.h"
@@ -26,8 +27,7 @@ ElementRenderer::~ElementRenderer() {
}
-
-void ElementRenderer::visit(StraightElement* straight) {
+void ElementRenderer::drawStraight(StraightElement* straight) {
glPushMatrix();
glTranslated(straight->getEntryPosition().getX(), straight->getEntryPosition().getY(), straight->getEntryPosition().getZ());
Vector3D axis = Vector3D::k.cross(straight->getDiagonal());
@@ -42,12 +42,21 @@ void ElementRenderer::visit(StraightElement* straight) {
glPopMatrix();
}
-void ElementRenderer::visit(Quadrupole* quadrupole) {
+void ElementRenderer::visit(StraightElement* straight) {
+ glColor4d(0.4, 0.4, 0.4, 0.9);
+ drawStraight(straight);
+}
+
+void ElementRenderer::visit(Quadrupole* quadrupole) {
+ if (quadrupole->getFocusingCoefficient() > 1) glColor4d(0.4, 0, 0, 0.9);
+ else glColor4d(0, 0, 0.4, 0.9);
+ drawStraight(quadrupole);
}
void ElementRenderer::visit(Dipole* dipole) {
+ glColor4d(0.4, 0, 0.6, 0.9);
glPushMatrix();
glTranslated(dipole->getCurvatureCenter().getX(), dipole->getCurvatureCenter().getY(), dipole->getCurvatureCenter().getZ());
Vector3D d = dipole->getExitPosition() - dipole->getCurvatureCenter();