ViSP  2.7.0
vpMbtXmlParser Class Reference

#include <vpMbtXmlParser.h>

+ Inheritance diagram for vpMbtXmlParser:

Public Member Functions

 vpMbtXmlParser ()
 
virtual ~vpMbtXmlParser ()
 
double getAngleAppear () const
 
double getAngleDisappear () const
 
void getCameraParameters (vpCameraParameters &_cam) const
 
void getMe (vpMe &_ecm) const
 
void parse (const char *filename)
 
void readMainClass (xmlDocPtr doc, xmlNodePtr node)
 
void read_ecm (xmlDocPtr doc, xmlNodePtr node)
 
void read_sample (xmlDocPtr doc, xmlNodePtr node)
 
void read_camera (xmlDocPtr doc, xmlNodePtr node)
 
void read_mask (xmlDocPtr doc, xmlNodePtr node)
 
void read_range (xmlDocPtr doc, xmlNodePtr node)
 
void read_contrast (xmlDocPtr doc, xmlNodePtr node)
 
void read_face (xmlDocPtr doc, xmlNodePtr node)
 
void setAngleAppear (const double &aappear)
 
void setAngleDisappear (const double &adisappear)
 
void setCameraParameters (const vpCameraParameters &_cam)
 
void setMovingEdge (const vpMe &_ecm)
 
void writeMainClass (xmlNodePtr node)
 
void parse (const std::string &filename)
 
void save (const std::string &filename, const bool append=false)
 
void setMap (const std::map< std::string, int > &_map)
 
void setMainTag (const std::string &tag)
 

Static Public Member Functions

static void cleanup ()
 

Protected Types

enum  dataToParse {
  conf, ecm, mask, size,
  nb_mask, range, tracking, contrast,
  edge_threshold, mu1, mu2, sample,
  step, nb_sample, face, angle_appear,
  angle_disappear, camera, height, width,
  u0, v0, px, py
}
 

Protected Member Functions

void init ()
 
std::string xmlReadStringChild (xmlDocPtr doc, xmlNodePtr node)
 
char * xmlReadCharChild (xmlDocPtr doc, xmlNodePtr node)
 
int xmlReadIntChild (xmlDocPtr doc, xmlNodePtr node)
 
unsigned int xmlReadUnsignedIntChild (xmlDocPtr doc, xmlNodePtr node)
 
double xmlReadDoubleChild (xmlDocPtr doc, xmlNodePtr node)
 
void xmlWriteStringChild (xmlNodePtr node, const char *label, const std::string &value)
 
void xmlWriteCharChild (xmlNodePtr node, const char *label, const char *value)
 
void xmlWriteIntChild (xmlNodePtr node, const char *label, const int value)
 
void xmlWriteUnsignedIntChild (xmlNodePtr node, const char *label, const unsigned int value)
 
void xmlWriteDoubleChild (xmlNodePtr node, const char *label, const double value)
 

Protected Attributes

vpMe m_ecm
 
vpCameraParameters cam
 
double angleAppear
 
double angleDisappear
 
std::map< std::string, int > nodeMap
 
std::string main_tag
 

Detailed Description

Parse an Xml file to extract configuration parameters of a mbtConfig object.

Data parser for the model based tracker.

Definition at line 72 of file vpMbtXmlParser.h.

Member Enumeration Documentation

Enumerator
conf 
ecm 
mask 
size 
nb_mask 
range 
tracking 
contrast 
edge_threshold 
mu1 
mu2 
sample 
step 
nb_sample 
face 
angle_appear 
angle_disappear 
camera 
height 
width 
u0 
v0 
px 
py 

Definition at line 84 of file vpMbtXmlParser.h.

Constructor & Destructor Documentation

vpMbtXmlParser::vpMbtXmlParser ( )

Default constructor.

Definition at line 60 of file vpMbtXmlParser.cpp.

References init().

vpMbtXmlParser::~vpMbtXmlParser ( )
virtual

Default destructor.

Definition at line 68 of file vpMbtXmlParser.cpp.

Member Function Documentation

static void vpXmlParser::cleanup ( )
inlinestaticinherited

As stated in http://xmlsoft.org/html/libxml-parser.html#xmlCleanupParser to clean up memory allocated by the xml2 library itself, the user should call xmlCleanupParser() only when the process has finished using the xml2 library. In case of doubt abstain from calling this function or do it just before calling exit() to avoid leak reports from valgrind ! That's why in ViSP the destructor doesn't call xmlCleanupParser(). Rather we provide the static function vpXmlParser::cleanup() that calls xmlCleanupParser() that could be called just before exit().

Examples:
calibrate2dGrid.cpp, mbtEdgeKltTracking.cpp, mbtEdgeTracking.cpp, mbtKltTracking.cpp, and testXmlParser.cpp.

Definition at line 220 of file vpXmlParser.h.

double vpMbtXmlParser::getAngleAppear ( ) const
inline

Get the angle to determine if a face appeared.

Returns
angleAppear

Definition at line 122 of file vpMbtXmlParser.h.

Referenced by vpMbEdgeTracker::loadConfigFile().

double vpMbtXmlParser::getAngleDisappear ( ) const
inline

Get the angle to determine if a face disappeared.

Returns
angleDisappear

Definition at line 129 of file vpMbtXmlParser.h.

Referenced by vpMbEdgeTracker::loadConfigFile().

void vpMbtXmlParser::getCameraParameters ( vpCameraParameters _cam) const
inline

Definition at line 131 of file vpMbtXmlParser.h.

Referenced by vpMbEdgeTracker::loadConfigFile().

void vpMbtXmlParser::getMe ( vpMe _ecm) const
inline

Definition at line 132 of file vpMbtXmlParser.h.

Referenced by vpMbEdgeTracker::loadConfigFile().

void vpMbtXmlParser::init ( void  )
protected

Initialise internal variables (including the map).

Definition at line 76 of file vpMbtXmlParser.cpp.

References angle_appear, angle_disappear, camera, conf, contrast, ecm, edge_threshold, face, height, mask, mu1, mu2, nb_mask, nb_sample, vpXmlParser::nodeMap, px, py, range, sample, vpXmlParser::setMainTag(), size, step, tracking, u0, v0, and width.

Referenced by vpMbtXmlParser().

void vpMbtXmlParser::parse ( const char *  filename)

Parse the file in parameters. This method is deprecated, use parse() instead.

Parameters
filename: File to parse.

Definition at line 114 of file vpMbtXmlParser.cpp.

References vpXmlParser::parse().

Referenced by vpMbEdgeTracker::loadConfigFile().

void vpXmlParser::parse ( const std::string &  filename)
inherited

parse the document. The data in the file are stored in the attributes of the child class. This method calls the readMainClass method which has to be implemented for every child class depending on the content to parse.

Parameters
filename: name of the file to parse

Definition at line 343 of file vpXmlParser.cpp.

References vpException::ioError, vpXmlParser::readMainClass(), and vpERROR_TRACE.

Referenced by parse(), and vpMbtKltXmlParser::parse().

void vpMbtXmlParser::read_camera ( xmlDocPtr  doc,
xmlNodePtr  node 
)

Read camera information.

Exceptions
vpException::fatalErrorif there was an unexpected number of data.
Parameters
doc: Pointer to the document.
node: Pointer to the node of the camera information.

Definition at line 301 of file vpMbtXmlParser.cpp.

References cam, vpCameraParameters::get_px(), vpCameraParameters::get_py(), vpCameraParameters::get_u0(), vpCameraParameters::get_v0(), height, vpCameraParameters::initPersProjWithoutDistortion(), vpXmlParser::nodeMap, px, py, u0, v0, width, vpXmlParser::xmlReadDoubleChild(), and vpXmlParser::xmlReadIntChild().

Referenced by readMainClass().

void vpMbtXmlParser::read_contrast ( xmlDocPtr  doc,
xmlNodePtr  node 
)

Read the contrast information from the xml file.

Exceptions
vpException::fatalErrorif there was an unexpected number of data.
Parameters
doc: Pointer to the document.
node: Pointer to the node of the contrast information.

Definition at line 534 of file vpMbtXmlParser.cpp.

References edge_threshold, vpMe::getMu1(), vpMe::getMu2(), vpMe::getThreshold(), m_ecm, mu1, mu2, vpXmlParser::nodeMap, vpMe::setMu1(), vpMe::setMu2(), vpMe::setThreshold(), and vpXmlParser::xmlReadDoubleChild().

Referenced by read_ecm().

void vpMbtXmlParser::read_ecm ( xmlDocPtr  doc,
xmlNodePtr  node 
)

Read ecm information.

Exceptions
vpException::fatalErrorif there was an unexpected number of data.
Parameters
doc: Pointer to the document.
node: Pointer to the node of the ecm information.

Definition at line 198 of file vpMbtXmlParser.cpp.

References contrast, mask, vpXmlParser::nodeMap, range, read_contrast(), read_mask(), and read_range().

Referenced by readMainClass().

void vpMbtXmlParser::read_face ( xmlDocPtr  doc,
xmlNodePtr  node 
)

Read face information.

Exceptions
vpException::fatalErrorif there was an unexpected number of data.
Parameters
doc: Pointer to the document.
node: Pointer to the node of the camera information.

Definition at line 393 of file vpMbtXmlParser.cpp.

References angle_appear, angle_disappear, angleAppear, angleDisappear, vpXmlParser::nodeMap, and vpXmlParser::xmlReadDoubleChild().

Referenced by readMainClass().

void vpMbtXmlParser::read_mask ( xmlDocPtr  doc,
xmlNodePtr  node 
)

Read mask information for the vpMeSite.

Exceptions
vpException::fatalErrorif there was an unexpected number of data.
Parameters
doc: Pointer to the document.
node: Pointer to the node of the mask information.

Definition at line 439 of file vpMbtXmlParser.cpp.

References vpMe::getMaskNumber(), vpMe::getMaskSize(), m_ecm, nb_mask, vpXmlParser::nodeMap, vpMe::setMaskNumber(), vpMe::setMaskSize(), size, and vpXmlParser::xmlReadUnsignedIntChild().

Referenced by read_ecm().

void vpMbtXmlParser::read_range ( xmlDocPtr  doc,
xmlNodePtr  node 
)

Read range information for the vpMeSite.

Exceptions
vpException::fatalErrorif there was an unexpected number of data.
Parameters
doc: Pointer to the document.
node: Pointer to the node of the range information.

Definition at line 492 of file vpMbtXmlParser.cpp.

References vpMe::getRange(), m_ecm, vpXmlParser::nodeMap, vpMe::setRange(), tracking, and vpXmlParser::xmlReadUnsignedIntChild().

Referenced by read_ecm().

void vpMbtXmlParser::read_sample ( xmlDocPtr  doc,
xmlNodePtr  node 
)

Read sample information.

Exceptions
vpException::fatalErrorif there was an unexpected number of data.
Parameters
doc: Pointer to the document.
node: Pointer to the node of the sample information.

Definition at line 248 of file vpMbtXmlParser.cpp.

References vpMe::getNbTotalSample(), vpMe::getSampleStep(), m_ecm, nb_sample, vpXmlParser::nodeMap, vpMe::setNbTotalSample(), vpMe::setSampleStep(), step, and vpXmlParser::xmlReadIntChild().

Referenced by readMainClass().

void vpMbtXmlParser::readMainClass ( xmlDocPtr  doc,
xmlNodePtr  node 
)
virtual

Read the parameters of the class from the file given by its document pointer and by its root node.

Parameters
doc: Document to parse.
node: Root node.

Implements vpXmlParser.

Definition at line 139 of file vpMbtXmlParser.cpp.

References camera, ecm, face, vpXmlParser::nodeMap, read_camera(), read_ecm(), read_face(), read_sample(), and sample.

void vpXmlParser::save ( const std::string &  filename,
const bool  append = false 
)
inherited

Save the content of the class in the file given in parameters. The data of the class are in the child class. This method calls the write_main_class method which has to be implemented for every class depending on the data to save.

Parameters
filename: the name of the file used to record the data
append: if true and if the file exists, the data will be added to the data already in the file

Definition at line 376 of file vpXmlParser.cpp.

References vpException::ioError, vpXmlParser::main_tag, vpERROR_TRACE, and vpXmlParser::writeMainClass().

void vpMbtXmlParser::setAngleAppear ( const double &  aappear)
inline

Set the angle to determine if a face appeared.

Parameters
aappear: New angleAppear

Definition at line 150 of file vpMbtXmlParser.h.

Referenced by vpMbEdgeTracker::loadConfigFile().

void vpMbtXmlParser::setAngleDisappear ( const double &  adisappear)
inline

Set the angle to determine if a face disappeared.

Parameters
adisappear: New angleDisappear

Definition at line 157 of file vpMbtXmlParser.h.

Referenced by vpMbEdgeTracker::loadConfigFile().

void vpMbtXmlParser::setCameraParameters ( const vpCameraParameters _cam)
inline

Definition at line 159 of file vpMbtXmlParser.h.

Referenced by vpMbEdgeTracker::loadConfigFile().

void vpXmlParser::setMainTag ( const std::string &  tag)
inlineinherited

set the name of the main tag

The main tag corresponds to the name of the root node

Parameters
tag: name of the root node of the document

Definition at line 280 of file vpXmlParser.h.

Referenced by init(), and vpMbtKltXmlParser::init().

void vpXmlParser::setMap ( const std::map< std::string, int > &  _map)
inlineinherited

Set the map describing the data to parse. This map stores the name of each node and an associated key used to simplify the parsing of the file.

If the following file want to be parsed:

<config>
<range>5</range>
<step>7</step>
<size_filter>3</size_filter>
</config>

The following map has to be declared:

std::map dataToParse;
dataToParse["config"] = 0;
dataToParse["range"] = 1;
dataToParse["step"] = 2;
dataToParse["size_filter"] = 3;

Or, you can use keyzord instead of number as key but it implies to declare in the child class an enumeration type of the name. For example:

typedef enum{
config,
range,
step,
size_filter} data_enum;
std::map dataToParse;
dataToParse["config"] = config;
dataToParse["range"] = range;
dataToParse["step"] = step;
dataToParse["size_filter"] = size_filter;
Parameters
_map: the map describing the data to parse

Definition at line 271 of file vpXmlParser.h.

void vpMbtXmlParser::setMovingEdge ( const vpMe _ecm)
inline

Definition at line 160 of file vpMbtXmlParser.h.

Referenced by vpMbEdgeTracker::loadConfigFile().

void vpMbtXmlParser::writeMainClass ( xmlNodePtr  node)
virtual

Write info to file.

Warning
Useless, so not yet implemented => Throw exception.

Implements vpXmlParser.

Definition at line 126 of file vpMbtXmlParser.cpp.

References vpException::notImplementedError.

char * vpXmlParser::xmlReadCharChild ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedinherited

Read an array of character.

Warning
The array of characters is allocated and must be explicitly freed to avoid memory leak.
Parameters
doc: The main xml document
node: a pointer to the node to read value
Returns
pointer to an allocated array of character.

Definition at line 110 of file vpXmlParser.cpp.

References vpException::fatalError.

double vpXmlParser::xmlReadDoubleChild ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedinherited

read a double

Warning
throw a vpException::ioError if the value cannot be parsed to an integer
Parameters
doc: The main xml document
node: a pointer to the node to read value
Returns
the double value in the node

Definition at line 224 of file vpXmlParser.cpp.

References vpException::fatalError, and vpException::ioError.

Referenced by read_camera(), vpMbtKltXmlParser::read_camera(), read_contrast(), read_face(), vpMbtKltXmlParser::read_face(), and vpMbtKltXmlParser::read_klt().

int vpXmlParser::xmlReadIntChild ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedinherited

read an int

Warning
throw a vpException::ioError if the value cannot be parsed to an integer
Parameters
doc: The main xml document
node: a pointer to the node to read value
Returns
the integer value in the node

Definition at line 155 of file vpXmlParser.cpp.

References vpException::fatalError, and vpException::ioError.

Referenced by read_camera(), vpMbtKltXmlParser::read_camera(), and read_sample().

std::string vpXmlParser::xmlReadStringChild ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedinherited

Read an array of character.

Parameters
doc: The main xml document
node: a pointer to the node to read value
Returns
std::string representing the value.

Definition at line 131 of file vpXmlParser.cpp.

References vpException::fatalError.

unsigned int vpXmlParser::xmlReadUnsignedIntChild ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedinherited

read an int

Warning
throw a vpException::ioError if the value cannot be parsed to an integer
Parameters
doc: The main xml document
node: a pointer to the node to read value
Returns
the unsigned integer value in the node

Definition at line 189 of file vpXmlParser.cpp.

References vpException::fatalError, and vpException::ioError.

Referenced by vpMbtKltXmlParser::read_klt(), read_mask(), and read_range().

void vpXmlParser::xmlWriteCharChild ( xmlNodePtr  node,
const char *  label,
const char *  value 
)
protectedinherited

write an array of character.

Parameters
node: a pointer to the node to read value
label: label (name of the data) of the node
value: pointer to the array of character to write

Definition at line 254 of file vpXmlParser.cpp.

void vpXmlParser::xmlWriteDoubleChild ( xmlNodePtr  node,
const char *  label,
const double  value 
)
protectedinherited

write a double.

Parameters
node: a pointer to the node to read value
label: label (name of the data) of the node
value: double to write

Definition at line 320 of file vpXmlParser.cpp.

void vpXmlParser::xmlWriteIntChild ( xmlNodePtr  node,
const char *  label,
const int  value 
)
protectedinherited

write an integer.

Parameters
node: a pointer to the node to read value
label: label (name of the data) of the node
value: integer to write

Definition at line 285 of file vpXmlParser.cpp.

void vpXmlParser::xmlWriteStringChild ( xmlNodePtr  node,
const char *  label,
const std::string &  value 
)
protectedinherited

write an array of character.

Parameters
node: a pointer to the node to read value
label: label (name of the data) of the node
value: std::string to write;

Definition at line 269 of file vpXmlParser.cpp.

void vpXmlParser::xmlWriteUnsignedIntChild ( xmlNodePtr  node,
const char *  label,
const unsigned int  value 
)
protectedinherited

write an unsigned integer.

Parameters
node: a pointer to the node to read value
label: label (name of the data) of the node
value: unsigned integer to write

Definition at line 302 of file vpXmlParser.cpp.

Member Data Documentation

double vpMbtXmlParser::angleAppear
protected

Angle to determine if a face appeared.

Definition at line 80 of file vpMbtXmlParser.h.

Referenced by read_face().

double vpMbtXmlParser::angleDisappear
protected

Angle to determine if a face disappeared.

Definition at line 82 of file vpMbtXmlParser.h.

Referenced by read_face().

vpCameraParameters vpMbtXmlParser::cam
protected

Camera parameters.

Definition at line 78 of file vpMbtXmlParser.h.

Referenced by read_camera().

vpMe vpMbtXmlParser::m_ecm
protected

Moving edges parameters.

Definition at line 76 of file vpMbtXmlParser.h.

Referenced by read_contrast(), read_mask(), read_range(), and read_sample().

std::string vpXmlParser::main_tag
protectedinherited

The name of the main tag for the file to parse

Definition at line 202 of file vpXmlParser.h.

Referenced by vpXmlParser::save(), and vpXmlParser::vpXmlParser().