00001
00002
00003
00004
00005 #ifndef BALL_VIEW_DIALOGS_MODIFYSURFACEDIALOG_H
00006 #define BALL_VIEW_DIALOGS_MODIFYSURFACEDIALOG_H
00007
00008 #ifndef BALL_COMMON_GLOBAL_H
00009 # include <BALL/COMMON/global.h>
00010 #endif
00011
00012 #ifndef BALL_VIEW_DATATYPE_COLORRGBA_H
00013 # include <BALL/VIEW/DATATYPE/colorRGBA.h>
00014 #endif
00015
00016 #ifndef BALL_VIEW_PRIMITIVES_MESH_H
00017 # include <BALL/VIEW/PRIMITIVES/mesh.h>
00018 #endif
00019
00020 #ifndef BALL_VIEW_KERNEL_REPRESENTATION_H
00021 # include <BALL/VIEW/KERNEL/representation.h>
00022 #endif
00023
00024 #ifndef BALL_VIEW_KERNEL_MODULARWIDGET_H
00025 # include <BALL/VIEW/KERNEL/modularWidget.h>
00026 #endif
00027
00028 #ifndef BALL_DATATYPE_REGULARDATA3D
00029 # include <BALL/DATATYPE/regularData3D.h>
00030 #endif
00031
00032 #ifndef BALL_DATATYPE_HASHGRID_H
00033 # include <BALL/DATATYPE/hashGrid.h>
00034 #endif
00035
00036 #ifndef BALL_VIEW_DIALOG_MATERIALSETTINGS_H
00037 # include <BALL/VIEW/DIALOGS/materialSettings.h>
00038 #endif
00039
00040 #include <BALL/VIEW/UIC/ui_modifyRepresentationDialog.h>
00041
00042 namespace BALL
00043 {
00044 namespace VIEW
00045 {
00051 class BALL_VIEW_EXPORT ModifyRepresentationDialog
00052 : public QDialog,
00053 public Ui_ModifyRepresentationDialogData,
00054 public ModularWidget
00055 {
00056 Q_OBJECT
00057
00058 public:
00059
00060 BALL_EMBEDDABLE(ModifyRepresentationDialog, ModularWidget)
00061
00062
00063 ModifyRepresentationDialog(QWidget* parent = 0, const char* name = "ModifyRepresentationDialog",
00064 bool modal = FALSE, Qt::WFlags fl = 0);
00065
00067 ~ModifyRepresentationDialog();
00068
00070 virtual void onNotify(Message *message);
00071
00073 void setRepresentation(Representation* rep);
00074
00076 void setGrid(RegularData3D* grid);
00077
00079 void setMinValue(float value);
00080
00082 void setMaxValue(float value);
00083
00085 void setMidValue(float value);
00086
00088 void setSplitRadius(float distance);
00089
00091 void setMode(Position pos);
00092
00093 public slots:
00094
00095 void accept();
00096 void tabChanged();
00097 void autoScale();
00098 void choosePressed();
00099 void gridSelected();
00100 void show();
00101 void applySplit();
00102
00103 protected slots:
00104
00105 void customColorTransparencyChanged();
00106 void changeDrawingModeTransparencyChanged();
00107 void splitMethodChanged();
00108
00109 protected:
00110
00111 ModifyRepresentationDialog(const ModifyRepresentationDialog& dialog);
00112
00113 typedef HashGrid3<const Atom*> AtomGrid;
00114 typedef HashGridBox3<const Atom*> AtomBox;
00115 void colorByCustomColor_();
00116 bool colorByGrid_();
00117 bool insertGrid_(RegularData3D& grid, const String& name);
00118 void removeGrid_(RegularData3D& grid);
00119 void invalidateGrid_();
00120 void invalidateMesh_();
00121 void changeDrawingMode_();
00122 void checkApplyButton_();
00123
00124 void calculateIncludedVertices_(vector<bool>& include_vertex, const Mesh& org_mesh, HashSet<const Composite*>& roots);
00125 inline bool checkInclude_(const AtomGrid& atom_grid, const Vector3& point) const;
00126
00127 RegularData3D* grid_;
00128 float square_distance_;
00129
00130 ColorRGBA selected_color, min_min_color, min_color, mid_color, max_color, max_max_color;
00131
00132 Representation* rep_;
00133 std::list<RegularData3D*> grid_list_;
00134 vector<Vector3> vertices_;
00135 MaterialSettings* material_settings_;
00136 };
00137
00138 }
00139 }
00140
00141 #endif