UltraScan III
us_plot3d_xyz.h
Go to the documentation of this file.
1 #ifndef US_PLOT3D_XYZ_H
3 #define US_PLOT3D_XYZ_H
4 
5 #include <QtGui>
6 
7 #include "us_extern.h"
8 #include "us_dataIO.h"
9 #include "us_plot.h"
10 #include "us_widgets_dialog.h"
11 #include "us_help.h"
12 #include "qwt3d_types.h"
13 #include "qwt3d_surfaceplot.h"
14 #include "qwt3d_function.h"
15 #include "qwt3d_plot.h"
16 
17 #ifndef DbgLv
18 #define DbgLv(a) if(dbg_level>=a)qDebug()
19 #endif
20 
21 using namespace Qwt3D;
22 
24 
25 class US_GUI_EXTERN US_Plot3Dxyz : public QMainWindow
26 {
27  Q_OBJECT
28 
29  public:
33  US_Plot3Dxyz( QWidget*, QVector< QVector3D >* );
34 
41  void setTitles ( QString, QString, QString, QString, QString );
42 
45  void setPlotTitle ( QString );
46 
55  void setParameters( int, int, double = 1.0, double = 1.0, double = 1.0,
56  double = 0.0, double = 0.0 );
57 
60  void reloadData ( QVector< QVector3D >* );
61 
63  void calculateData( void );
64 
67  void replot ( bool = false );
68 
71  QGLWidget* dataWidgetP( void );
72 
77  bool save_plot( const QString, const QString );
78 
79  signals:
81  void has_closed( void );
82 
83  private:
84  QWidget* centralWidget;
85  QGridLayout* mainLayout;
86  QVBoxLayout* rightLayout;
87  QHBoxLayout* bottomLayout;
88  QGridLayout* rsliderLayout;
89  QGridLayout* bsliderLayout;
90 
91  QSlider* poffsSlider;
92  QSlider* resolSlider;
93  QSlider* normqSlider;
94  QSlider* normlSlider;
95 
96  QAction* openAct;
97  QAction* openffAct;
98  QAction* saveAct;
99  QAction* movieAct;
100  QAction* exitAct;
101  QAction* frameAct;
102  QAction* boxAct;
103  QAction* noneAct;
104  QAction* gridfrAct;
105  QAction* gridbAct;
106  QAction* gridrAct;
107  QAction* gridlAct;
108  QAction* gridcAct;
109  QAction* gridfAct;
110  QAction* scattdAct;
111  QAction* wirefrAct;
112  QAction* hiddlnAct;
113  QAction* polygnAct;
114  QAction* fdmeshAct;
115  QAction* nodataAct;
116  QAction* fldataAct;
117  QAction* flisolAct;
118  QAction* flemptAct;
119  QAction* normsAct;
120  QAction* coaxesAct;
121  QAction* cobackAct;
122  QAction* comeshAct;
123  QAction* conumbAct;
124  QAction* colablAct;
125  QAction* cocaptAct;
126  QAction* codataAct;
127  QAction* corsetAct;
128  QAction* fnnumbAct;
129  QAction* fnaxesAct;
130  QAction* fncaptAct;
131  QAction* fnrsetAct;
132  QAction* iconAct;
133  QAction* qwtpltAct;
134 
135  QActionGroup* frameGroup;
136  QActionGroup* gridGroup;
137  QActionGroup* dataGroup;
138  QActionGroup* floorGroup;
139 
140  QMenu* fileMenu;
141  QMenu* colorMenu;
142  QMenu* fontMenu;
143 
144  QToolBar* fileToolBar;
145 
146  QComboBox* cb_ifmt;
147 
148  QPushButton* pb_std;
149  QPushButton* pb_light;
150 
151  QCheckBox* ck_light;
152  QCheckBox* ck_ortho;
153  QCheckBox* ck_legend;
154  QCheckBox* ck_autosc;
155  QCheckBox* ck_mouse;
156  QCheckBox* ck_shade;
157 
158  QFont titleFont;
159 
160  bool have_ed;
161  bool skip_plot;
162  bool reverse_y;
164 
165  int nrows_i;
166  int ncols_i;
167  int nrows;
168  int ncols;
169  int powrx;
170  int powry;
173 
174  double xmin;
175  double xmax;
176  double ymin;
177  double ymax;
178  double zmin;
179  double zmax;
180  double zfloor;
181  double zscale;
182  double xscale;
183  double yscale;
184  double gridres;
185  double x_norm;
186  double y_norm;
187  double z_norm;
188  double x_scale;
189  double y_scale;
190  double z_scale;
191  double alpha;
192  double beta;
193 
194  QString xatitle;
195  QString yatitle;
196  QString zatitle;
197 
198  QFrame* frame;
199 
200  QTimer* timer;
201 
202  QVector< QVector< double > > zdata;
203  QVector< QVector< Triple > > tdata;
204 
205  Qwt3D::SurfacePlot* dataWidget;
206 
207  protected:
208  QVector< QVector3D >* xyzdat;
209 
210  private slots:
211 
212  void calculateContour( void );
213  void calculatePoints ( void );
214  void std_button( void );
215  void light_button( void );
216  void ifmt_chosen( int );
217  void light_check( int );
218  void ortho_check( int );
219  void legnd_check( int );
220  void autsc_check( int );
221  void mouse_check( int );
222  void shade_check( int );
223  void poffs_slide( int );
224  void resol_slide( int );
225  void norml_slide( int );
226  void normq_slide( int );
227  void movie_toggle( bool );
228  void frame_axes_on( bool );
229  void box_axes_on( bool );
230  void no_axes_on( bool );
231  void grid_front_on( bool );
232  void grid_back_on( bool );
233  void grid_left_on( bool );
234  void grid_right_on( bool );
235  void grid_ceil_on( bool );
236  void grid_floor_on( bool );
237  void set_grid_onoff( Qwt3D::SIDE, bool );
238  void data_points_on( bool );
239  void data_wirefr_on( bool );
240  void data_hidden_on( bool );
241  void data_polygn_on( bool );
242  void data_fimesh_on( bool );
243  void data_none_on( bool );
244  void floor_data_on( bool );
245  void floor_isol_on( bool );
246  void floor_empty_on( bool );
247  void normals_on( bool );
248  void rotate( void );
249  void open_file( void );
250  void close_all( void );
251  void pick_axes_co( void );
252  void pick_back_co( void );
253  void pick_mesh_co( void );
254  void pick_numb_co( void );
255  void pick_labl_co( void );
256  void pick_capt_co( void );
257  void pick_data_co( void );
258  void reset_colors( void );
259  void pick_numb_fn( void );
260  void pick_axes_fn( void );
261  void pick_capt_fn( void );
262  void reset_fonts( void );
263  void dump_contents( void );
264  void clean_title ( QString& );
265  void clear_2dvect ( QVector< QVector< double > >& );
266  void clear_2dvect ( QVector< QVector< Triple > >& );
267  void alloc_2dvect ( QVector< QVector< double > >&, int, int );
268  void alloc_2dvect ( QVector< QVector< Triple > >&, int, int );
269  QString xyAxisTitle( int, double );
270  QString zAxisTitle( int );
271  void setStandardView( void );
272  void createActions( void );
273  void createMenus( void );
274  void createToolBar( void );
275 
276 };
277 
278 using namespace Qwt3D;
279 
280 class ReversedScale : public LinearScale
281 {
282  public:
283  Scale* clone() const { return new ReversedScale; }
284 
285  QString ticLabel( unsigned int idx ) const
286  {
287  unsigned int s = majors_p.size();
288  if ( idx < s )
289  {
290  return QString::number( majors_p[ s - idx - 1 ] );
291  }
292 
293  return QString( "" );
294  }
295 };
296 #endif
297