OpenMesh
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
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: 817 $ *
38
* $Date: 2013-03-01 16:32:46 +0100 (Fr, 01. Mär 2013) $ *
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
Vec3ui colori(
VertexHandle
_vh)
const
= 0;
95
virtual
Vec4ui colorAi(
VertexHandle
_vh)
const
= 0;
96
virtual
Vec3f colorf(
VertexHandle
_vh)
const
= 0;
97
virtual
Vec4f colorAf(
VertexHandle
_vh)
const
= 0;
98
virtual
Vec2f texcoord(
VertexHandle
_vh)
const
= 0;
99
100
101
// get face data
102
virtual
unsigned
int
103
get_vhandles(
FaceHandle
_fh,
104
std::vector<VertexHandle>& _vhandles)
const
=0;
105
virtual
Vec3f normal(
FaceHandle
_fh)
const
= 0;
106
virtual
Vec3uc color (
FaceHandle
_fh)
const
= 0;
107
virtual
Vec4uc colorA(
FaceHandle
_fh)
const
= 0;
108
virtual
Vec3ui colori(
FaceHandle
_fh)
const
= 0;
109
virtual
Vec4ui colorAi(
FaceHandle
_fh)
const
= 0;
110
virtual
Vec3f colorf(
FaceHandle
_fh)
const
= 0;
111
virtual
Vec4f colorAf(
FaceHandle
_fh)
const
= 0;
112
113
// get edge data
114
virtual
Vec3uc color(
EdgeHandle
_eh)
const
= 0;
115
virtual
Vec4uc colorA(
EdgeHandle
_eh)
const
= 0;
116
virtual
Vec3ui colori(
EdgeHandle
_eh)
const
= 0;
117
virtual
Vec4ui colorAi(
EdgeHandle
_eh)
const
= 0;
118
virtual
Vec3f colorf(
EdgeHandle
_eh)
const
= 0;
119
virtual
Vec4f colorAf(
EdgeHandle
_eh)
const
= 0;
120
121
// get reference to base kernel
122
virtual
const
BaseKernel
* kernel() {
return
0; }
123
124
125
// query number of faces, vertices, normals, texcoords
126
virtual
size_t
n_vertices()
const
= 0;
127
virtual
size_t
n_faces()
const
= 0;
128
virtual
size_t
n_edges()
const
= 0;
129
130
131
// property information
132
virtual
bool
is_triangle_mesh()
const
{
return
false
; }
133
virtual
bool
has_vertex_normals()
const
{
return
false
; }
134
virtual
bool
has_vertex_colors()
const
{
return
false
; }
135
virtual
bool
has_vertex_texcoords()
const
{
return
false
; }
136
virtual
bool
has_edge_colors()
const
{
return
false
; }
137
virtual
bool
has_face_normals()
const
{
return
false
; }
138
virtual
bool
has_face_colors()
const
{
return
false
; }
139
};
140
141
142
//=============================================================================
143
}
// namespace IO
144
}
// namespace OpenMesh
145
//=============================================================================
146
#endif
147
//=============================================================================
Project
OpenMesh
, © Computer Graphics Group, RWTH Aachen. Documentation generated using
doxygen
.