Developer Documentation
OpenMesh::IO Namespace Reference

Classes

class  _IOManager_
 
class  _OBJReader_
 
class  _OBJWriter_
 
class  _OFFReader_
 
class  _OFFWriter_
 
class  _OMReader_
 
class  _OMWriter_
 
class  _PLYReader_
 
class  _PLYWriter_
 
class  _STLReader_
 
class  _STLWriter_
 
class  _VTKWriter_
 
class  BaseExporter
 
class  BaseImporter
 
class  BaseReader
 
class  BaseWriter
 
struct  binary
 
struct  binary< BaseSkin::SkinWeights >
 
struct  binary< MyData >
 
struct  binary< MyMap >
 
class  ExporterT
 
struct  Handle2Prop
 
struct  Handle2Prop< T, FaceHandle >
 
struct  Handle2Prop< T, VertexHandle >
 
class  ImporterT
 
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)
 
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
 
typedef unsigned short ushort
 
typedef unsigned long ulong
 
typedef signed char int8_t
 
typedef unsigned char uint8_t
 
typedef short int16_t
 
typedef unsigned short uint16_t
 
typedef int int32_t
 
typedef unsigned int uint32_t
 
typedef long long int64_t
 
typedef unsigned long long uint64_t
 
typedef float float32_t
 
typedef double float64_t
 
typedef uint8_t rgb_t[3]
 
typedef uint8_t rgba_t[4]
 
short int read_short (FILE *_in, bool _swap=false)
 
int read_int (FILE *_in, bool _swap=false)
 
float read_float (FILE *_in, bool _swap=false)
 
double read_double (FILE *_in, bool _swap=false)
 
short int read_short (std::istream &_in, bool _swap=false)
 
int read_int (std::istream &_in, bool _swap=false)
 
float read_float (std::istream &_in, bool _swap=false)
 
double read_double (std::istream &_in, bool _swap=false)
 
void write_short (short int _i, FILE *_out, bool _swap=false)
 
void write_int (int _i, FILE *_out, bool _swap=false)
 
void write_float (float _f, FILE *_out, bool _swap=false)
 
void write_double (double _d, FILE *_out, bool _swap=false)
 
void write_short (short int _i, std::ostream &_out, bool _swap=false)
 
void write_int (int _i, std::ostream &_out, bool _swap=false)
 
void write_float (float _f, std::ostream &_out, bool _swap=false)
 
void write_double (double _d, std::ostream &_out, bool _swap=false)
 
template<size_t N>
void _reverse_byte_order_N (uint8_t *_val)
 
template<>
void _reverse_byte_order_N< 1 > (uint8_t *)
 
template<>
void _reverse_byte_order_N< 2 > (uint8_t *_val)
 
template<>
void _reverse_byte_order_N< 4 > (uint8_t *_val)
 
template<>
void _reverse_byte_order_N< 8 > (uint8_t *_val)
 
template<>
void _reverse_byte_order_N< 12 > (uint8_t *_val)
 
template<>
void _reverse_byte_order_N< 16 > (uint8_t *_val)
 
template<typename T >
T * reverse_byte_order (T *t)
 
void compile_time_error__no_fundamental_type ()
 
template<typename T >
T & reverse_byte_order (T &_t)
 
template<>
bool & reverse_byte_order (bool &_t)
 
template<>
char & reverse_byte_order (char &_t)
 
template<>
ucharreverse_byte_order (uchar &_t)
 
template<typename T >
reverse_byte_order (const T &a)
 
template<typename T >
bool is_streamable (void)
 
template<typename T >
bool is_streamable (const T &)
 
template<typename T >
size_t size_of (const T &_v)
 
template<typename T >
size_t size_of (void)
 
template<typename T >
size_t store (std::ostream &_os, const T &_v, bool _swap=false)
 
template<typename T >
size_t restore (std::istream &_is, T &_v, bool _swap=false)
 

Detailed Description

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

Typedef Documentation

typedef float OpenMesh::IO::float32_t

Binary read a short from _is and perform byte swapping if _swap is true

Definition at line 97 of file SR_types.hh.

typedef double OpenMesh::IO::float64_t

Binary read a short from _is and perform byte swapping if _swap is true

Definition at line 98 of file SR_types.hh.

typedef short OpenMesh::IO::int16_t

Binary read a short from _is and perform byte swapping if _swap is true

Definition at line 86 of file SR_types.hh.

typedef int OpenMesh::IO::int32_t

Binary read a short from _is and perform byte swapping if _swap is true

Definition at line 90 of file SR_types.hh.

typedef long long OpenMesh::IO::int64_t

Binary read a short from _is and perform byte swapping if _swap is true

Definition at line 94 of file SR_types.hh.

typedef signed char OpenMesh::IO::int8_t

Binary read a short from _is and perform byte swapping if _swap is true

Definition at line 85 of file SR_types.hh.

typedef uint8_t OpenMesh::IO::rgb_t[3]

Binary read a short from _is and perform byte swapping if _swap is true

Definition at line 100 of file SR_types.hh.

typedef uint8_t OpenMesh::IO::rgba_t[4]

Binary read a short from _is and perform byte swapping if _swap is true

Definition at line 101 of file SR_types.hh.

typedef unsigned char OpenMesh::IO::uchar

Binary read a short from _is and perform byte swapping if _swap is true

Definition at line 81 of file SR_types.hh.

typedef unsigned short OpenMesh::IO::uint16_t

Binary read a short from _is and perform byte swapping if _swap is true

Definition at line 86 of file SR_types.hh.

typedef unsigned int OpenMesh::IO::uint32_t

Binary read a short from _is and perform byte swapping if _swap is true

Definition at line 90 of file SR_types.hh.

typedef unsigned long long OpenMesh::IO::uint64_t

Binary read a short from _is and perform byte swapping if _swap is true

Definition at line 94 of file SR_types.hh.

typedef unsigned char OpenMesh::IO::uint8_t

Binary read a short from _is and perform byte swapping if _swap is true

Definition at line 85 of file SR_types.hh.

typedef unsigned long OpenMesh::IO::ulong

Binary read a short from _is and perform byte swapping if _swap is true

Definition at line 83 of file SR_types.hh.

typedef unsigned short OpenMesh::IO::ushort

Binary read a short from _is and perform byte swapping if _swap is true

Definition at line 82 of file SR_types.hh.

Function Documentation

template<size_t N>
void OpenMesh::IO::_reverse_byte_order_N ( uint8_t _val)
inline

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 OpenMesh::IO::_reverse_byte_order_N< 1 > ( uint8_t )
inline

this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error

Definition at line 100 of file SR_rbo.hh.

template<>
void OpenMesh::IO::_reverse_byte_order_N< 12 > ( uint8_t _val)
inline

this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error

Definition at line 129 of file SR_rbo.hh.

template<>
void OpenMesh::IO::_reverse_byte_order_N< 16 > ( uint8_t _val)
inline

this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error

Definition at line 141 of file SR_rbo.hh.

template<>
void OpenMesh::IO::_reverse_byte_order_N< 2 > ( uint8_t _val)
inline

this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error

Definition at line 104 of file SR_rbo.hh.

template<>
void OpenMesh::IO::_reverse_byte_order_N< 4 > ( uint8_t _val)
inline

this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error

Definition at line 111 of file SR_rbo.hh.

template<>
void OpenMesh::IO::_reverse_byte_order_N< 8 > ( uint8_t _val)
inline

this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error

Definition at line 119 of file SR_rbo.hh.

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

Definition at line 260 of file MeshIO.hh.

void OpenMesh::IO::compile_time_error__no_fundamental_type ( )
inline

this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error

Definition at line 161 of file SR_rbo.hh.

OPENMESHDLLEXPORT _IOManager_ & OpenMesh::IO::IOManager ( )

Declare the singleton getter function as friend to access the private constructor and destructor

Definition at line 77 of file IOManager.cc.

template<typename T >
bool OpenMesh::IO::is_streamable ( void  )
inline

Binary read a short from _is and perform byte swapping if _swap is true

Definition at line 86 of file StoreRestore.hh.

template<typename T >
bool OpenMesh::IO::is_streamable ( const T &  )
inline

Binary read a short from _is and perform byte swapping if _swap is true

Definition at line 90 of file StoreRestore.hh.

double OpenMesh::IO::read_double ( FILE *  _in,
bool  _swap = false 
)

Binary read a double from _is and perform byte swapping if _swap is true

double OpenMesh::IO::read_double ( std::istream &  _in,
bool  _swap = false 
)

Binary read a double from _is and perform byte swapping if _swap is true

float OpenMesh::IO::read_float ( FILE *  _in,
bool  _swap = false 
)

Binary read a float from _is and perform byte swapping if _swap is true

float OpenMesh::IO::read_float ( std::istream &  _in,
bool  _swap = false 
)

Binary read a float from _is and perform byte swapping if _swap is true

int OpenMesh::IO::read_int ( FILE *  _in,
bool  _swap = false 
)

Binary read an int from _is and perform byte swapping if _swap is true

int OpenMesh::IO::read_int ( std::istream &  _in,
bool  _swap = false 
)

Binary read an int from _is and perform byte swapping if _swap is true

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?

Definition at line 104 of file MeshIO.hh.

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?

Definition at line 134 of file MeshIO.hh.

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?

Definition at line 166 of file MeshIO.hh.

short int OpenMesh::IO::read_short ( FILE *  _in,
bool  _swap = false 
)

Binary read a short from _is and perform byte swapping if _swap is true

short int OpenMesh::IO::read_short ( std::istream &  _in,
bool  _swap = false 
)

Binary read a short from _is and perform byte swapping if _swap is true

template<typename T >
size_t OpenMesh::IO::restore ( std::istream &  _is,
T &  _v,
bool  _swap = false 
)
inline

Binary read a short from _is and perform byte swapping if _swap is true

Definition at line 106 of file StoreRestore.hh.

template<typename T >
T* OpenMesh::IO::reverse_byte_order ( T *  t)
inline

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& OpenMesh::IO::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

Definition at line 169 of file SR_rbo.hh.

template<>
bool& OpenMesh::IO::reverse_byte_order ( bool &  _t)
inline

this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error

Definition at line 176 of file SR_rbo.hh.

template<>
char& OpenMesh::IO::reverse_byte_order ( char &  _t)
inline

this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error

Definition at line 177 of file SR_rbo.hh.

template<>
uchar& OpenMesh::IO::reverse_byte_order ( uchar _t)
inline

this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error

Definition at line 181 of file SR_rbo.hh.

template<typename T >
T OpenMesh::IO::reverse_byte_order ( const T &  a)
inline

this does not compile for g++3.4 and higher, hence we comment the function body which will result in a linker error

Definition at line 240 of file SR_rbo.hh.

template<typename T >
size_t OpenMesh::IO::size_of ( const T &  _v)
inline

Binary read a short from _is and perform byte swapping if _swap is true

Definition at line 94 of file StoreRestore.hh.

template<typename T >
size_t OpenMesh::IO::size_of ( void  )
inline

Binary read a short from _is and perform byte swapping if _swap is true

Definition at line 98 of file StoreRestore.hh.

template<typename T >
size_t OpenMesh::IO::store ( std::ostream &  _os,
const T &  _v,
bool  _swap = false 
)
inline

Binary read a short from _is and perform byte swapping if _swap is true

Definition at line 102 of file StoreRestore.hh.

void OpenMesh::IO::write_double ( double  _d,
FILE *  _out,
bool  _swap = false 
)

Binary write a double to _os and perform byte swapping if _swap is true

void OpenMesh::IO::write_double ( double  _d,
std::ostream &  _out,
bool  _swap = false 
)

Binary write a double to _os and perform byte swapping if _swap is true

void OpenMesh::IO::write_float ( float  _f,
FILE *  _out,
bool  _swap = false 
)

Binary write a float to _os and perform byte swapping if _swap is true

void OpenMesh::IO::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 OpenMesh::IO::write_int ( int  _i,
FILE *  _out,
bool  _swap = false 
)

Binary write an int to _os and perform byte swapping if _swap is true

void OpenMesh::IO::write_int ( int  _i,
std::ostream &  _out,
bool  _swap = false 
)

Binary write an int to _os and perform byte swapping if _swap is true

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?

Definition at line 199 of file MeshIO.hh.

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?

Definition at line 231 of file MeshIO.hh.

void OpenMesh::IO::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 OpenMesh::IO::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