OpenMesh
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
BaseExporter.hh
1
/*===========================================================================*\
2
* *
3
* OpenMesh *
4
* Copyright (C) 2001-2012 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: 736 $ *
38
* $Date: 2012-10-08 09:30:49 +0200 (Mo, 08 Okt 2012) $ *
39
* *
40
\*===========================================================================*/
41
42
43
//=============================================================================
44
//
45
// Implements the baseclass for MeshWriter exporter modules
46
//
47
//=============================================================================
48
49
50
#ifndef __BASEEXPORTER_HH__
51
#define __BASEEXPORTER_HH__
52
53
54
//=== INCLUDES ================================================================
55
56
57
// STL
58
#include <vector>
59
60
// OpenMesh
61
#include <OpenMesh/Core/System/config.h>
62
#include <OpenMesh/Core/Geometry/VectorT.hh>
63
#include <OpenMesh/Core/Mesh/BaseKernel.hh>
64
65
66
//=== NAMESPACES ==============================================================
67
68
69
namespace
OpenMesh {
70
namespace
IO {
71
72
73
//=== EXPORTER ================================================================
74
75
82
class
OPENMESHDLLEXPORT
BaseExporter
83
{
84
public
:
85
86
virtual
~
BaseExporter
() { }
87
88
89
// get vertex data
90
virtual
Vec3f point(
VertexHandle
_vh)
const
= 0;
91
virtual
Vec3f normal(
VertexHandle
_vh)
const
= 0;
92
virtual
Vec3uc color(
VertexHandle
_vh)
const
= 0;
93
virtual
Vec4uc colorA(
VertexHandle
_vh)
const
= 0;
94
virtual
Vec2f texcoord(
VertexHandle
_vh)
const
= 0;
95
96
97
// get face data
98
virtual
unsigned
int
99
get_vhandles(
FaceHandle
_fh,
100
std::vector<VertexHandle>& _vhandles)
const
=0;
101
virtual
Vec3f normal(
FaceHandle
_fh)
const
= 0;
102
virtual
Vec3uc color (
FaceHandle
_fh)
const
= 0;
103
virtual
Vec4uc colorA(
FaceHandle
_fh)
const
= 0;
104
105
// get edge data
106
virtual
Vec3uc color(
EdgeHandle
_eh)
const
= 0;
107
virtual
Vec4uc colorA(
EdgeHandle
_eh)
const
= 0;
108
109
// get reference to base kernel
110
virtual
const
BaseKernel
* kernel() {
return
0; }
111
112
113
// query number of faces, vertices, normals, texcoords
114
virtual
size_t
n_vertices()
const
= 0;
115
virtual
size_t
n_faces()
const
= 0;
116
virtual
size_t
n_edges()
const
= 0;
117
118
119
// property information
120
virtual
bool
is_triangle_mesh()
const
{
return
false
; }
121
virtual
bool
has_vertex_normals()
const
{
return
false
; }
122
virtual
bool
has_vertex_colors()
const
{
return
false
; }
123
virtual
bool
has_vertex_texcoords()
const
{
return
false
; }
124
virtual
bool
has_edge_colors()
const
{
return
false
; }
125
virtual
bool
has_face_normals()
const
{
return
false
; }
126
virtual
bool
has_face_colors()
const
{
return
false
; }
127
};
128
129
130
//=============================================================================
131
}
// namespace IO
132
}
// namespace OpenMesh
133
//=============================================================================
134
#endif
135
//=============================================================================
Project
OpenMesh
, © Computer Graphics Group, RWTH Aachen. Documentation generated using
doxygen
.