OpenMesh
OpenMesh::IO Namespace Reference

This namespace contains functions for reading and writing polygonal meshes and a list of supported file formats. More...

Classes

class  _IOManager_
 This is the real IOManager class that is later encapsulated by SingletonT to enforce its uniqueness. More...
 
class  _OBJReader_
 Implementation of the OBJ format reader. More...
 
class  _OBJWriter_
 This class defines the OBJ writer. More...
 
class  _OFFReader_
 Implementation of the OFF format reader. More...
 
class  _OFFWriter_
 Implementation of the OFF format writer. More...
 
class  _OMReader_
 Implementation of the OM format reader. More...
 
class  _OMWriter_
 Implementation of the OM format writer. More...
 
class  _PLYReader_
 Implementation of the PLY format reader. More...
 
class  _PLYWriter_
 Implementation of the PLY format writer. More...
 
class  _STLReader_
 Implementation of the STL format reader. More...
 
class  _STLWriter_
 Implementation of the STL format writer. More...
 
class  _VTKWriter_
 
class  BaseExporter
 Base class for exporter modules. More...
 
class  BaseImporter
 Base class for importer modules. More...
 
class  BaseReader
 Base class for reader modules. More...
 
class  BaseWriter
 Base class for all writer modules. More...
 
struct  binary
 The struct defines how to store and restore the type T. More...
 
struct  binary< MyData >
 
struct  binary< MyMap >
 
class  ExporterT
 This class template provides an exporter module for OpenMesh meshes. More...
 
struct  Handle2Prop
 
struct  Handle2Prop< T, FaceHandle >
 
struct  Handle2Prop< T, VertexHandle >
 
class  ImporterT
 This class template provides an importer module for OpenMesh meshes. More...
 
class  Options
 Set options for reader/writer modules. More...
 

Functions

_IOManager_IOManager ()
 
template<typename T >
size_t store (std::ostream &_os, const T &_val, OMFormat::Chunk::Integer_Size _b, bool _swap, t_signed)
 
template<typename T >
size_t store (std::ostream &_os, const T &_val, OMFormat::Chunk::Integer_Size _b, bool _swap, t_unsigned)
 
template<typename T >
size_t restore (std::istream &_is, T &_val, OMFormat::Chunk::Integer_Size _b, bool _swap, t_signed)
 
template<typename T >
size_t restore (std::istream &_is, T &_val, OMFormat::Chunk::Integer_Size _b, bool _swap, t_unsigned)
 
_OBJReader_OBJReader ()
 
void trimString (std::string &_string)
 
void remove_duplicated_vertices (BaseImporter::VHandles &_indices)
 
_OFFReader_OFFReader ()
 
_OMReader_OMReader ()
 
_PLYReader_PLYReader ()
 
std::string get_property_name (std::string _string1, std::string _string2)
 
_PLYReader_::ValueType get_property_type (std::string _string1, std::string _string2)
 
_STLReader_STLReader ()
 
void trimStdString (std::string &_string)
 
_OBJWriter_OBJWriter ()
 
_OFFWriter_OFFWriter ()
 
_OMWriter_OMWriter ()
 
_PLYWriter_PLYWriter ()
 
template<typename T >
const PropertyT< T > * castProperty (const BaseProperty *_prop)
 
_STLWriter_STLWriter ()
 
_VTKWriter_VTKWriter ()
 
Mesh Reading / Writing

Option for reader and writer modules.

template<class Mesh >
bool read_mesh (Mesh &_mesh, const std::string &_filename)
 Read a mesh from file _filename. More...
 
template<class Mesh >
bool read_mesh (Mesh &_mesh, const std::string &_filename, Options &_opt, bool _clear=true)
 Read a mesh from file _filename. More...
 
template<class Mesh >
bool read_mesh (Mesh &_mesh, std::istream &_is, const std::string &_ext, Options &_opt, bool _clear=true)
 Read a mesh from file open std::istream. More...
 
template<class Mesh >
bool write_mesh (const Mesh &_mesh, const std::string &_filename, Options _opt=Options::Default, std::streamsize _precision=6)
 Write a mesh to the file _filename. More...
 
template<class Mesh >
bool write_mesh (const Mesh &_mesh, std::ostream &_os, const std::string &_ext, Options _opt=Options::Default, std::streamsize _precision=6)
 Write a mesh to an open std::ostream. More...
 
template<class Mesh >
size_t binary_size (const Mesh &_mesh, const std::string &_ext, Options _opt=Options::Default)
 Get binary size of data. More...
 

Variables

_OBJReader_ __OBJReaderInstance
 
_OFFReader_ __OFFReaderInstance
 Declare the single entity of the OFF reader.
 
_OMReader_ __OMReaderInstance
 Declare the single entity of the OM reader.
 
_PLYReader_ __PLYReaderInstance
 Declare the single entity of the PLY reader.
 
_STLReader_ __STLReaderInstance
 Declare the single entity of the STL reader.
 
_OBJWriter_ __OBJWriterinstance
 Declare the single entity of the OBJ writer.
 
_OFFWriter_ __OFFWriterInstance
 Declare the single entity of the OFF writer.
 
_OMWriter_ __OMWriterInstance
 Declare the single entity of the OM writer.
 
_PLYWriter_ __PLYWriterInstance
 Declare the single entity of the PLY writer.
 
_STLWriter_ __STLWriterInstance
 
_VTKWriter_ __VTKWriterinstance
 Declare the single entity of the OBJ writer.
 

Handling binary input/output.

These functions take care of swapping bytes to get the right Endian.

typedef unsigned char uchar
 Binary read a short from _is and perform byte swapping if _swap is true.
 
typedef unsigned short ushort
 Binary read a short from _is and perform byte swapping if _swap is true.
 
typedef unsigned long ulong
 Binary read a short from _is and perform byte swapping if _swap is true.
 
typedef signed char int8_t
 Binary read a short from _is and perform byte swapping if _swap is true.
 
typedef unsigned char uint8_t
 Binary read a short from _is and perform byte swapping if _swap is true.
 
typedef short int16_t
 Binary read a short from _is and perform byte swapping if _swap is true.
 
typedef unsigned short uint16_t
 Binary read a short from _is and perform byte swapping if _swap is true.
 
typedef int int32_t
 Binary read a short from _is and perform byte swapping if _swap is true.
 
typedef unsigned int uint32_t
 Binary read a short from _is and perform byte swapping if _swap is true.
 
typedef long long int64_t
 Binary read a short from _is and perform byte swapping if _swap is true.
 
typedef unsigned long long uint64_t
 Binary read a short from _is and perform byte swapping if _swap is true.
 
typedef float float32_t
 Binary read a short from _is and perform byte swapping if _swap is true.
 
typedef double float64_t
 Binary read a short from _is and perform byte swapping if _swap is true.
 
typedef uint8_t rgb_t[3]
 Binary read a short from _is and perform byte swapping if _swap is true.
 
typedef uint8_t rgba_t[4]
 Binary read a short from _is and perform byte swapping if _swap is true.
 
short int read_short (FILE *_in, bool _swap=false)
 Binary read a short from _is and perform byte swapping if _swap is true.
 
int read_int (FILE *_in, bool _swap=false)
 Binary read an int from _is and perform byte swapping if _swap is true.
 
float read_float (FILE *_in, bool _swap=false)
 Binary read a float from _is and perform byte swapping if _swap is true.
 
double read_double (FILE *_in, bool _swap=false)
 Binary read a double from _is and perform byte swapping if _swap is true.
 
short int read_short (std::istream &_in, bool _swap=false)
 Binary read a short from _is and perform byte swapping if _swap is true.
 
int read_int (std::istream &_in, bool _swap=false)
 Binary read an int from _is and perform byte swapping if _swap is true.
 
float read_float (std::istream &_in, bool _swap=false)
 Binary read a float from _is and perform byte swapping if _swap is true.
 
double read_double (std::istream &_in, bool _swap=false)
 Binary read a double from _is and perform byte swapping if _swap is true.
 
void write_short (short int _i, FILE *_out, bool _swap=false)
 Binary write a short to _os and perform byte swapping if _swap is true.
 
void write_int (int _i, FILE *_out, bool _swap=false)
 Binary write an int to _os and perform byte swapping if _swap is true.
 
void write_float (float _f, FILE *_out, bool _swap=false)
 Binary write a float to _os and perform byte swapping if _swap is true.
 
void write_double (double _d, FILE *_out, bool _swap=false)
 Binary write a double to _os and perform byte swapping if _swap is true.
 
void write_short (short int _i, std::ostream &_out, bool _swap=false)
 Binary write a short to _os and perform byte swapping if _swap is true.
 
void write_int (int _i, std::ostream &_out, bool _swap=false)
 Binary write an int to _os and perform byte swapping if _swap is true.
 
void write_float (float _f, std::ostream &_out, bool _swap=false)
 Binary write a float to _os and perform byte swapping if _swap is true.
 
void write_double (double _d, std::ostream &_out, bool _swap=false)
 Binary write a double to _os and perform byte swapping if _swap is true.
 
template<size_t N>
void _reverse_byte_order_N (uint8_t *_val)
 this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error
 
template<>
void _reverse_byte_order_N< 1 > (uint8_t *)
 this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error
 
template<>
void _reverse_byte_order_N< 2 > (uint8_t *_val)
 this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error
 
template<>
void _reverse_byte_order_N< 4 > (uint8_t *_val)
 this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error
 
template<>
void _reverse_byte_order_N< 8 > (uint8_t *_val)
 this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error
 
template<>
void _reverse_byte_order_N< 12 > (uint8_t *_val)
 this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error
 
template<>
void _reverse_byte_order_N< 16 > (uint8_t *_val)
 this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error
 
template<typename T >
T * reverse_byte_order (T *t)
 this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error
 
void compile_time_error__no_fundamental_type ()
 this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error
 
template<typename T >
T & reverse_byte_order (T &_t)
 this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error
 
template<>
bool & reverse_byte_order (bool &_t)
 this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error
 
template<>
char & reverse_byte_order (char &_t)
 this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error
 
template<>
ucharreverse_byte_order (uchar &_t)
 this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error
 
template<>
int16_treverse_byte_order (int16_t &_t)
 this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error
 
template<>
uint16_treverse_byte_order (uint16_t &_t)
 this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error
 
template<>
unsigned long & reverse_byte_order (unsigned long &_t)
 this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error
 
template<>
int32_treverse_byte_order (int32_t &_t)
 this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error
 
template<>
uint32_treverse_byte_order (uint32_t &_t)
 this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error
 
template<>
int64_treverse_byte_order (int64_t &_t)
 this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error
 
template<>
uint64_treverse_byte_order (uint64_t &_t)
 this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error
 
template<>
float & reverse_byte_order (float &_t)
 this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error
 
template<>
double & reverse_byte_order (double &_t)
 this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error
 
template<>
long double & reverse_byte_order (long double &_t)
 this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error
 
template<typename T >
reverse_byte_order (const T &a)
 this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error
 
template<typename T >
bool is_streamable (void)
 Binary read a short from _is and perform byte swapping if _swap is true.
 
template<typename T >
bool is_streamable (const T &)
 Binary read a short from _is and perform byte swapping if _swap is true.
 
template<typename T >
size_t size_of (const T &_v)
 Binary read a short from _is and perform byte swapping if _swap is true.
 
template<typename T >
size_t size_of (void)
 Binary read a short from _is and perform byte swapping if _swap is true.
 
template<typename T >
size_t store (std::ostream &_os, const T &_v, bool _swap=false)
 Binary read a short from _is and perform byte swapping if _swap is true.
 
template<typename T >
size_t restore (std::istream &_is, T &_v, bool _swap=false)
 Binary read a short from _is and perform byte swapping if _swap is true.
 

Detailed Description

This namespace contains functions for reading and writing polygonal meshes and a list of supported file formats.

Function Documentation

template<class Mesh >
size_t OpenMesh::IO::binary_size ( const Mesh &  _mesh,
const std::string &  _ext,
Options  _opt = Options::Default 
)

Get binary size of data.

This function calls the corresponding writer which calculates the size of the data that would be written to a binary file

The file format is determined by parameter _ext. _ext has to include ".[format]" in order to work properly (e.g. ".OFF")

Parameters
_meshMesh to write
_extextension of the file (used to determine the writing module)
_optWriter options (e.g. writing of normals ... depends on the writer capabilities)
Returns
Binary size in bytes used when writing the data
template<class Mesh >
bool OpenMesh::IO::read_mesh ( Mesh &  _mesh,
const std::string &  _filename 
)

Read a mesh from file _filename.

The file format is determined by the file extension.

Note
If you link statically against OpenMesh, you have to add the define OM_STATIC_BUILD to your application. This will ensure that readers and writers get initialized correctly.
Parameters
_meshThe target mesh that will be filled with the read data
_filenamefill to load
Returns
Successful?
template<class Mesh >
bool OpenMesh::IO::read_mesh ( Mesh &  _mesh,
const std::string &  _filename,
Options _opt,
bool  _clear = true 
)

Read a mesh from file _filename.

The file format is determined by the file extension.

Note
If you link statically against OpenMesh, you have to add the define OM_STATIC_BUILD to your application. This will ensure that readers and writers get initialized correctly.
Parameters
_meshThe target mesh that will be filled with the read data
_filenamefill to load
_optReader options (e.g. skip loading of normals ... depends on the reader capabilities). Note that simply passing an Options::Flag enum is not sufficient.
_clearClear the target data before filling it (allows to load multiple files into one Mesh). If you only want to read a mesh without clearing set _clear to false. Providing a default Options object is sufficient in this case.
Returns
Successful?
template<class Mesh >
bool OpenMesh::IO::read_mesh ( Mesh &  _mesh,
std::istream &  _is,
const std::string &  _ext,
Options _opt,
bool  _clear = true 
)

Read a mesh from file open std::istream.

The file format is determined by parameter _ext. _ext has to include ".[format]" in order to work properly (e.g. ".OFF")

Note
If you link statically against OpenMesh, you have to add the define OM_STATIC_BUILD to your application. This will ensure that readers and writers get initialized correctly.
Parameters
_meshThe target mesh that will be filled with the read data
_isstream to load the data from
_extThe file format that is written to the stream
_optReader options (e.g. skip loading of normals ... depends on the reader capabilities)
_clearClear the target data before filling it (allows to load multiple files into one Mesh)
Returns
Successful?
template<class Mesh >
bool OpenMesh::IO::write_mesh ( const Mesh &  _mesh,
const std::string &  _filename,
Options  _opt = Options::Default,
std::streamsize  _precision = 6 
)

Write a mesh to the file _filename.

The file format is determined by _filename's extension.

Note
If you link statically against OpenMesh, you have to add the define OM_STATIC_BUILD to your application. This will ensure that readers and writers get initialized correctly.
Parameters
_meshThe mesh that will be written to file
_filenameoutput filename
_optWriter options (e.g. writing of normals ... depends on the writer capabilities)
_precisionspecifies stream precision for ascii files
Returns
Successful?
template<class Mesh >
bool OpenMesh::IO::write_mesh ( const Mesh &  _mesh,
std::ostream &  _os,
const std::string &  _ext,
Options  _opt = Options::Default,
std::streamsize  _precision = 6 
)

Write a mesh to an open std::ostream.

The file format is determined by parameter _ext. _ext has to include ".[format]" in order to work properly (e.g. ".OFF")

Note
If you link statically against OpenMesh, you have to add the define OM_STATIC_BUILD to your application. This will ensure that readers and writers get initialized correctly.
Parameters
_meshThe mesh that will be written to file
_osoutput stream to write into
_extextension defining the type of output
_optWriter options (e.g. writing of normals ... depends on the writer capabilities)
_precisionspecifies stream precision for ascii files
Returns
Successful?

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