OpenMesh
SubdivideWidget.hh
1 /*===========================================================================*\
2  * *
3  * OpenMesh *
4  * Copyright (C) 2001-2014 by Computer Graphics Group, RWTH Aachen *
5  * www.openmesh.org *
6  * *
7  *---------------------------------------------------------------------------*
8  * This file is part of OpenMesh. *
9  * *
10  * OpenMesh is free software: you can redistribute it and/or modify *
11  * it under the terms of the GNU Lesser General Public License as *
12  * published by the Free Software Foundation, either version 3 of *
13  * the License, or (at your option) any later version with the *
14  * following exceptions: *
15  * *
16  * If other files instantiate templates or use macros *
17  * or inline functions from this file, or you compile this file and *
18  * link it with other files to produce an executable, this file does *
19  * not by itself cause the resulting executable to be covered by the *
20  * GNU Lesser General Public License. This exception does not however *
21  * invalidate any other reasons why the executable file might be *
22  * covered by the GNU Lesser General Public License. *
23  * *
24  * OpenMesh is distributed in the hope that it will be useful, *
25  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
26  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
27  * GNU Lesser General Public License for more details. *
28  * *
29  * You should have received a copy of the GNU LesserGeneral Public *
30  * License along with OpenMesh. If not, *
31  * see <http://www.gnu.org/licenses/>. *
32  * *
33 \*===========================================================================*/
34 
35 /*===========================================================================*\
36  * *
37  * $Revision: 990 $ *
38  * $Date: 2014-02-05 10:01:07 +0100 (Mi, 05 Feb 2014) $ *
39  * *
40 \*===========================================================================*/
41 
42 //=============================================================================
43 //
44 // CLASS SubdivideWidget
45 //
46 //=============================================================================
47 
48 #ifndef SUBDIVIDEWIDGET_HH
49 #define SUBDIVIDEWIDGET_HH
50 
51 
52 //== INCLUDES =================================================================
53 
54 #include <QTimer>
55 #include <QMainWindow>
56 #include <QStatusBar>
57 #include <OpenMesh/Apps/Subdivider/MeshViewerWidget.hh>
59 
60 
61 
62 
63 //== CLASS DEFINITION =========================================================
64 
65 class SubdivideWidget : public QWidget
66 {
67  Q_OBJECT
68 
69 public:
70 
72 
73  enum SOPType {
74  SOP_UniformCompositeLoop,
75  SOP_UniformCompositeSqrt3,
76  SOP_UniformLoop,
77  SOP_UniformSqrt3,
78  SOP_UniformInterpolatingSqrt3,
79  SOP_ModifiedButterfly,
80  SOP_CatmullClark,
81  SOP_Undefined
82  };
83 
84  typedef std::map< SOPType, Subdivider* > SubdividerPool;
85 
86 public:
87 
89  SubdivideWidget(QWidget* _parent=0, const char* _name=0);
90 
93 
94 
96  bool open_mesh(const char* _filename);
97 
98  void keyPressEvent( QKeyEvent *k );
99 
101  QStatusBar *status_bar;
102  void update();
103 
104 
105 private slots:
106 
107  void animate_slot(void);
108  void slot_select_sop(int i);
109  void subdiv_slot();
110  void reset_slot();
111  void save_slot();
112  void load_slot();
113 
114 private:
115 
116  // widgets
117  MeshViewerWidget* viewer_widget_;
118 
119  QTimer *timer_;
120 
121  int animate_step_;
122  int max_animate_steps_;
123  int msecs_;
124 
125  // Selected and current subdivision operator
126  SOPType sel_topo_type; // selected operator
127  SOPType cur_topo_type; // active operator
128 
129  //
130  SubdividerPool subdivider_;
131 
132 };
133 
134 
135 //=============================================================================
136 #endif // SUBDIVIDEWIDGET_HH defined
137 //=============================================================================
138 
SubdivideWidget(QWidget *_parent=0, const char *_name=0)
constructor
Definition: SubdivideWidget.cc:86
Definition: MeshViewerWidget.hh:73
~SubdivideWidget()
destructor
Definition: SubdivideWidget.hh:92
Abstract base class for uniform subdivision algorithms.
Definition: SubdividerT.hh:87
QStatusBar * status_bar
Updates Status Bar Information.
Definition: SubdivideWidget.hh:101
bool open_mesh(const char *_filename)
open mesh from _filename
Definition: SubdivideWidget.cc:343
Definition: SubdivideWidget.hh:65

acg pic Project OpenMesh, ©  Computer Graphics Group, RWTH Aachen. Documentation generated using doxygen .