Kinetic Visualization (Visualisierung 2 - S2012)
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
QKineticVisWidget.hxx
Go to the documentation of this file.
1 #ifndef _QT_KIN_VIS_WIDGET_H
2 #define _QT_KIN_VIS_WIDGET_H
3 
4 #include <QtGui\QApplication.h>
5 #include <QtGui\qpushbutton.h>
6 #include <QtGui\qboxlayout.h>
7 #include <QtGui\qtextedit.h>
8 #include <QtGui\qlabel.h>
9 #include <QtGui\qlineedit.h>
10 #include <QtGui\qdesktopwidget.h>
11 #include <QtGui\qwidget.h>
12 #include <QtGui\qmenubar.h>
13 #include <QtGui\qspinbox.h>
14 #include <QtGui\qcheckbox.h>
15 #include <QtGui\qtabwidget.h>
16 #include <QtGui\qfiledialog.h>
17 #include <QtGui\qradiobutton.h>
18 #include <QtGui\qmenu.h>
19 #include <QtGui\qgroupbox.h>
20 #include <QtGui\qcombobox.h>
21 
22 #include <vlGraphics/Applet.hpp>
23 #include <vlGraphics/Rendering.hpp>
24 #include <vlGraphics/Geometry.hpp>
25 #include <vlGraphics/GeometryPrimitives.hpp>
26 
27 #include <vlQt4/Qt4Widget.hpp>
28 
29 #include <string>
30 
32 #include "TransferFunctionWidget.h"
33 #include "GradientStopWidget.h"
34 
35 using namespace vl;
36 using namespace vlQt4;
37 
39 
43  Q_OBJECT
44 
45 public:
46  QKineticVisWidget(AppletParticleKinematic* applet, QWidget *parent = 0);
47 
48  virtual ~QKineticVisWidget();
49 
50  virtual void volumeImageChanged(vl::Image *volImg);
51 
52 public slots:
53  void openFileForVolumeUpload();
54  void openFileForConfig();
55  void saveFileForConfig();
56 
57  void particleConfigurationChanged(double val);
58  void particleConfigurationChanged(bool val);
59  void particleConfigurationChanged(int val);
60 
61  void gradientPointsChanged(const QGradientStops &stops);
62  void transferColorChanged();
63 
64 private:
66  void createMenu();
68  void createSpinButtons();
70  void createRenderTarget();
72  void createFileUpload();
74  void createTransferFunction();
75 
77  void writeConfig(const std::string &file);
79  void loadConfig(const std::string &file);
80 
81  void setTransferFunction(vl::ref<vl::Image> img);
82  vl::ref<vl::Image> getTransferFunction();
83 
84  void center(QWidget *widget, int w, int h);
85 
86  QMenu *fileMenu;
87  QMenuBar *menuBar;
88 
89  QTabWidget *controlGroupBox;
90 
91  Qt4Widget *vlWidget;
92 
93  // boxes for our thresholds
95  QDoubleSpinBox *curvatureBox;
96 
97  QRadioButton *enableFlocking;
98  QDoubleSpinBox *flockingBox;
99  QDoubleSpinBox *flockingSigmaBox;
100  QRadioButton *enableUserDirection;
101  QDoubleSpinBox *userDirection;
102  QDoubleSpinBox *userDirectionX;
103  QDoubleSpinBox *userDirectionY;
104  QDoubleSpinBox *userDirectionZ;
105 
106  QRadioButton *enableRepulsion;
107  QDoubleSpinBox *repulsionBox;
108  QDoubleSpinBox *repulsionSigmaBox;
109  QRadioButton *enableDying;
110  QDoubleSpinBox *crowdedThreshold;
111  QDoubleSpinBox *crowdedSigma;
112 
113  // boxes for preprocessing
115  QDoubleSpinBox *preprocessingSigmaBox;
116  QDoubleSpinBox *preprocessingDepthBox;
120 
121  // boxes for rendering
122  QSpinBox *sampleBox;
123  QDoubleSpinBox *particleSizeBox;
124  QDoubleSpinBox *shadingIntensityBox;
125  QDoubleSpinBox *gradientIntensityBox;
126  QDoubleSpinBox *opacityIntensityBox;
128  QCheckBox *enableParticles;
130  QComboBox *renderModeCombo;
131 
132  // boxes for file handling
133  QGroupBox *fileGroupBox;
134  QLineEdit *txtFileForUpload;
135  QPushButton *btnOpenFileForUpload;
136 
137  // boxes for transfer function
139 
142 
143  vl::ref<AppletParticleKinematic> applet;
144 
148 };
149 
150 #endif // _QT_KIN_VIS_WIDGET_H