Developer Documentation

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Namespace List
- Namespace Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Classes | Functions | Variables
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<>
uchar & | reverse_byte_order (uchar &_t)
template<typename T >
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

  _mesh | Mesh to write
  _ext | extension of the file (used to determine the writing module)
  _opt | Writer 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

  _mesh | The target mesh that will be filled with the read data
  _filename | fill 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

  _mesh | The target mesh that will be filled with the read data
  _filename | fill to load
  _opt | Reader options (e.g. skip loading of normals ... depends on the reader capabilities). Note that simply passing an Options::Flag enum is not sufficient.
  _clear | Clear 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

  _mesh | The target mesh that will be filled with the read data
  _is | stream to load the data from
  _ext | The file format that is written to the stream
  _opt | Reader options (e.g. skip loading of normals ... depends on the reader capabilities)
  _clear | Clear 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

  _mesh | The mesh that will be written to file
  _filename | output filename
  _opt | Writer options (e.g. writing of normals ... depends on the writer capabilities)
  _precision | specifies 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

  _mesh | The mesh that will be written to file
  _os | output stream to write into
  _ext | extension defining the type of output
  _opt | Writer options (e.g. writing of normals ... depends on the writer capabilities)
  _precision | specifies 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