OpenMesh
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ProgViewerWidget.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 #ifndef OPENMESHAPPS_PROGVIEWERWIDGET_HH
44 #define OPENMESHAPPS_PROGVIEWERWIDGET_HH
45 
46 
47 //== INCLUDES =================================================================
48 
49 #include <QTimer>
50 #include <OpenMesh/Apps/QtViewer/MeshViewerWidgetT.hh>
51 #include <OpenMesh/Core/Mesh/TriMesh_ArrayKernelT.hh>
53 #include <string>
54 
55 
56 
57 //== CLASS DEFINITION =========================================================
58 
59 
60 using namespace OpenMesh;
61 using namespace OpenMesh::Attributes;
62 
63 
64 struct MyTraits : public OpenMesh::DefaultTraits
65 {
72 };
73 
74 
77 
78 
79 //== CLASS DEFINITION =========================================================
80 
81 
82 
84 {
85  Q_OBJECT
86 
87 public:
88 
89  typedef MeshViewerWidget Base;
90  typedef ProgViewerWidget This;
91 
92 
93 public:
95  ProgViewerWidget(QWidget* _parent=0)
96  : MeshViewerWidget(_parent)
97  {
98  timer_ = new QTimer(this);
99 
100  connect( timer_, SIGNAL(timeout()), SLOT(animate()) );
101  }
102 
105  {
106  delete timer_;
107  }
108 
110  void open_prog_mesh(const char* _filename);
111 
112 protected slots:
113 
114 void animate( void );
115 
116 private:
117 
118  QTimer *timer_;
119 
120  struct PMInfo
121  {
122  MyMesh::Point p0;
123  MyMesh::VertexHandle v0, v1, vl, vr;
124  };
125  typedef std::vector<PMInfo> PMInfoContainer;
126  typedef PMInfoContainer::iterator PMInfoIter;
127 
129  void refine(unsigned int _n);
130 
132  void coarsen(unsigned int _n);
133 
134  virtual void keyPressEvent(QKeyEvent* _event);
135 
136  // mesh data
137  bool animateRefinement_;
138  PMInfoContainer pminfos_;
139  PMInfoIter pmiter_;
140  size_t n_base_vertices_, n_base_faces_, n_detail_vertices_;
141  size_t n_max_vertices_;
142 };
143 
144 
145 //=============================================================================
146 #endif // OPENMESHAPPS_PROGVIEWERWIDGET_HH defined
147 //=============================================================================
148 
~ProgViewerWidget()
destructor
Definition: ProgViewerWidget.hh:104
#define HalfedgeAttributes(_i)
Macro for defining the halfedge attributes. See Specifying your MyMesh.
Definition: Traits.hh:80
Definition: ProgViewerWidget.hh:83
Add status to mesh item (all items)
Definition: Attributes.hh:83
Base class for all traits.
Definition: Traits.hh:119
Definition: MeshViewerWidget.hh:73
Add storage for previous halfedge (halfedges). The bit is set by default in the DefaultTraits.
Definition: Attributes.hh:82
#define FaceAttributes(_i)
Macro for defining the face attributes. See Specifying your MyMesh.
Definition: Traits.hh:86
This file provides some macros containing attribute usage.
#define EdgeAttributes(_i)
Macro for defining the edge attributes. See Specifying your MyMesh.
Definition: Traits.hh:83
Definition: vdpmanalyzer.cc:140
ProgViewerWidget(QWidget *_parent=0)
default constructor
Definition: ProgViewerWidget.hh:95
Kernel::VertexHandle VertexHandle
Handle for referencing the corresponding item.
Definition: PolyMeshT.hh:132
Triangle mesh based on the ArrayKernel.
Definition: TriMesh_ArrayKernelT.hh:91
#define VertexAttributes(_i)
Macro for defining the vertex attributes. See Specifying your MyMesh.
Definition: Traits.hh:77
Polygonal mesh based on the ArrayKernel.
Definition: PolyMesh_ArrayKernelT.hh:91
Kernel::Point Point
Coordinate type.
Definition: PolyMeshT.hh:108
Add normals to mesh item (vertices/faces)
Definition: Attributes.hh:80

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