BALL  1.4.1
common.h
Go to the documentation of this file.
00001 // -*- Mode: C++; tab-width: 2; -*-
00002 // vi: set ts=2:
00003 //
00004 // $Id: common.h,v 1.40.16.4 2007/04/20 14:16:50 amoll Exp $
00005 //
00006 
00007 #ifndef BALL_VIEW_KERNEL_COMMON_H
00008 #define BALL_VIEW_KERNEL_COMMON_H
00009 
00010 #ifndef BALL_DATATYPE_STRING_H
00011  #include <BALL/DATATYPE/string.h>
00012 #endif
00013 
00014 #ifndef BALL_MATHS_VECTOR3
00015  #include <BALL/MATHS/vector3.h>
00016 #endif
00017 
00018 #ifndef BALL_CONCEPT_COMPOSITE_H
00019  #include <BALL/CONCEPT/composite.h>
00020 #endif
00021 
00022 #ifndef BALL_DATATYPE_REGULARDATA3D_H
00023  #include <BALL/DATATYPE/regularData3D.h>
00024 #endif
00025 
00026 #include <QtCore/QEvent>
00027 #include <QtGui/QColorDialog>
00028 #include <QtGui/QLabel>
00029 #include <QtGui/QDropEvent>
00030 
00031 namespace BALL
00032 {
00033   namespace VIEW
00034   {
00035 
00036     class GeometricObject;
00037     class MainControl;
00038     class ColorRGBA;
00039     class Camera;
00040 
00045 
00050     #define VIEW_DEFAULT_PORT 20000
00051 
00054     #define BALL_ASSIGN_NAME(OBJ)\
00055       OBJ->setObjectName(#OBJ);
00056   
00058 
00064 
00071     enum EventsIDs
00072     {
00074       MESSAGE_EVENT = 60000,
00075 
00077       LOG_EVENT,
00078 
00080       TRANSFORMATION_EVENT_6D,
00081       
00083       HEADTRACKING_EVENT,
00084 
00086       MOTIONTRACKING_EVENT,
00087 
00089       BUTTON_PRESS_EVENT,
00090 
00092       BUTTON_RELEASE_EVENT,
00093 
00095       NOTIFICATION_EVENT
00096     };
00097 
00099 
00104 
00106     enum DrawingMode
00107     {
00109       DRAWING_MODE_DOTS = 0,
00110 
00112       DRAWING_MODE_WIREFRAME,
00113 
00115       DRAWING_MODE_SOLID,
00116       
00118       DRAWING_MODE_TOON
00119     };
00120 
00122     #define BALL_VIEW_MAXIMAL_DRAWING_MODE 4
00123 
00125     enum DrawingPrecision
00126     {
00128       DRAWING_PRECISION_INVALID = -1,
00129 
00131       DRAWING_PRECISION_LOW = 0,
00132 
00134       DRAWING_PRECISION_MEDIUM,
00135 
00137       DRAWING_PRECISION_HIGH,
00138 
00140       DRAWING_PRECISION_ULTRA
00141     };
00142     
00144     #define BALL_VIEW_MAXIMAL_DRAWING_PRECISION 4
00145 
00147     #define BALL_VIEW_MAXIMAL_DISPLAY_LIST_OBJECT_SIZE  BALL_VIEW_MAXIMAL_DRAWING_PRECISION * BALL_VIEW_MAXIMAL_DRAWING_MODE
00148 
00150     BALL_VIEW_EXPORT extern float SurfaceDrawingPrecisions[4];
00151 
00162     enum ModelType
00163     {
00165       MODEL_LINES = 0,
00166 
00168       MODEL_STICK,
00169 
00171       MODEL_BALL_AND_STICK,
00172       
00174       MODEL_VDW,
00175 
00177       MODEL_SE_SURFACE,
00178 
00180       MODEL_SA_SURFACE,
00181 
00183       MODEL_BACKBONE,
00184 
00186       MODEL_CARTOON,
00187 
00189       MODEL_RIBBON,
00190 
00192       MODEL_HBONDS,
00193 
00195       MODEL_FORCES,
00196 
00197       // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
00198       // add new model types before this comment!!!!
00199       // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
00200       
00202       MODEL_LABEL = 100,
00203 
00205       MODEL_CONTOUR_SURFACE,
00206 
00208       MODEL_GRID_SLICE,
00209 
00211       MODEL_GRID_VOLUME,
00212 
00214       MODEL_FIELD_LINES,
00215 
00217       MODEL_INFORMATIONS,
00218 
00220       MODEL_COORDINATE_SYSTEM,
00221 
00223       MODEL_UNKNOWN = 200
00224     };
00225 
00226 
00230     enum ColoringMethod
00231     {
00233       COLORING_ELEMENT          = 0,
00234 
00236       COLORING_RESIDUE_INDEX,
00237 
00239       COLORING_RESIDUE_NAME,
00240 
00242       COLORING_SECONDARY_STRUCTURE,
00243 
00245       COLORING_ATOM_CHARGE,
00246 
00248       COLORING_DISTANCE,
00249 
00251       COLORING_TEMPERATURE_FACTOR,
00252 
00254       COLORING_OCCUPANCY,
00255 
00257       COLORING_FORCES,
00258 
00260       COLORING_RESIDUE_TYPE,
00261 
00263       COLORING_CHAIN,
00264       
00266       COLORING_MOLECULE,
00267 
00268       // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
00269       // add new coloring types before this comment!!!!
00270       // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
00271       
00273       COLORING_CUSTOM,
00274 
00276       COLORING_UNKNOWN = 200
00277     };
00278 
00283     BALL_VIEW_EXPORT extern Composite composite_to_be_ignored_for_colorprocessors_;
00284 
00286 
00288     BALL_VIEW_EXPORT String vector3ToString(const Vector3& v);
00289 
00291     BALL_VIEW_EXPORT bool stringToVector3(const String& data, Vector3& v);
00292 
00294     BALL_VIEW_EXPORT String createFloatString(float value, Size precision);
00295 
00303     BALL_VIEW_EXPORT MainControl* getMainControl();
00304 
00306     BALL_VIEW_EXPORT String createTemporaryFilename();
00307 
00309     BALL_VIEW_EXPORT Vector3 getNormal(const Vector3& v);
00310 
00312     class BALL_VIEW_EXPORT LogEvent
00313       : public QEvent
00314     {
00315       public:
00316 
00318         LogEvent();
00319 
00321         void setMessage(const String& msg) {message_ = msg;}
00322 
00324         String getMessage() {return message_;}
00325 
00327         bool isImportant() { return important_;}
00328 
00330         void setImportant(bool state) { important_ = state;}
00331 
00333         bool showOnlyInLogView() const { return only_log_;}
00334 
00336         void setShowOnlyInLogView(bool state) { only_log_ = state;}
00337 
00338       protected:
00339         String message_;
00340         bool   important_;
00341         bool   only_log_;
00342     };
00343 
00345     BALL_VIEW_EXPORT void logString(const String& data);
00346 
00348     #define BALLVIEW_DEBUG logString(String("A problem occured in ") + __FILE__ + " " + \
00349                            String(__LINE__) + ".  Please notify us per mail: ball@bioinf.uni-sb.de\n");
00350 
00351   
00352     BALL_VIEW_EXPORT void processDropEvent(QDropEvent* e);
00353 
00357     BALL_VIEW_EXPORT Camera focusCamera(Composite* composite);
00358 
00362     BALL_VIEW_EXPORT Camera focusCamera(const std::list<Vector3>& points);
00363 
00365     BALL_VIEW_EXPORT String ascii(const QString& str);
00366     
00368     BALL_VIEW_EXPORT ColorRGBA getColor(const QLabel* label);
00369     
00371     BALL_VIEW_EXPORT void setColor(const QLabel* label, const ColorRGBA& color);
00372 
00374     BALL_VIEW_EXPORT QColor chooseColor(QLabel* label);
00375 
00377     BALL_VIEW_EXPORT void setTextColor(QLabel* label, const ColorRGBA& color);
00378 
00382     BALL_VIEW_EXPORT void cubicInterpolation(const Vector3& a, const Vector3& b,
00383                                    const Vector3& tangent_a, const Vector3& tangent_b,
00384                                    std::vector<Vector3>& interpolated_values);
00385 
00388     extern float    icosaeder_vertices[12][3];
00389     extern Position icosaeder_indices[20][3];
00390 
00391     BALL_VIEW_EXPORT void subdivideTriangle(vector<Vector3>& results, Vector3& v1, Vector3& v2, Vector3& v3, Size precision);
00392 
00393     BALL_VIEW_EXPORT vector<Vector3> createSphere(Size precision);
00394 
00395     BALL_VIEW_EXPORT void calculateHistogramEqualization(const vector<float>& values, vector<float>& normalized_values, bool use_absolute_values = false);
00396 
00398     BALL_VIEW_EXPORT void calculateRandomPoints(const RegularData3D& grid, Size nr_points, vector<Vector3>& resulting_points);
00399 
00401 
00402   } // namespace VIEW
00403 } // namespace BALL
00404 
00405 #endif // BALL_VIEW_KERNEL_COMMON_H
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines