/*! Read the main class. This method corresponds to the parsing of the main document (which contains the whole data in the class). At this point, the document exists and is open. \param doc : Pointer to the document to parse. \param node : Pointer to the root node of the document. */ void vpExampleDataParser::readMainClass (xmlDocPtr doc, xmlNodePtr node) { for(xmlNodePtr dataNode = node->xmlChildrenNode; dataNode != NULL; dataNode = dataNode->next) { if(dataNode->type == XML_ELEMENT_NODE){ std::map<std::string, int>::iterator iter_data= this->nodeMap.find((char*)dataNode->name); if(iter_data != nodeMap.end()){ switch (iter_data->second){ case range: this->m_range = xmlReadDoubleChild(doc, dataNode); break; case step: this->m_step = xmlReadIntChild(doc, dataNode); break; case size_filter: this->m_size_filter = xmlReadIntChild(doc, dataNode); break; case name:{ this->m_name = xmlReadStringChild(doc, dataNode); }break; default: vpTRACE("unknown tag in readConfigNode : %d, %s", iter_data->second, (iter_data->first).c_str()); break; } } } } }
void vpMbXmlParser::read_lod (xmlDocPtr doc, xmlNodePtr node) { bool use_lod_node = false; bool min_line_length_threshold_node = false; bool min_polygon_area_threshold_node = false; for(xmlNodePtr dataNode = node->xmlChildrenNode; dataNode != NULL; dataNode = dataNode->next) { if(dataNode->type == XML_ELEMENT_NODE){ std::map<std::string, int>::iterator iter_data= this->nodeMap.find((char*)dataNode->name); if(iter_data != nodeMap.end()){ switch (iter_data->second){ case use_lod: useLod = (xmlReadIntChild(doc, dataNode) != 0); use_lod_node = true; break; case min_line_length_threshold: minLineLengthThreshold = xmlReadDoubleChild(doc, dataNode); min_line_length_threshold_node = true; break; case min_polygon_area_threshold: minPolygonAreaThreshold = xmlReadDoubleChild(doc, dataNode); min_polygon_area_threshold_node = true; break; default:{ // vpTRACE("unknown tag in read_contrast : %d, %s", iter_data->second, (iter_data->first).c_str()); }break; } } } } if(!use_lod_node) std::cout << "lod : use lod : " << useLod << " (default)" <<std::endl; else std::cout << "lod : use lod : " << useLod << std::endl; if(!min_line_length_threshold_node) std::cout <<"lod : min line length threshold : " << minLineLengthThreshold <<" (default)" <<std::endl; else std::cout <<"lod : min line length threshold : " << minLineLengthThreshold <<std::endl; if(!min_polygon_area_threshold_node) std::cout <<"lod : min polygon area threshold : " << minPolygonAreaThreshold <<" (default)" <<std::endl; else std::cout <<"lod : min polygon area threshold : " << minPolygonAreaThreshold <<std::endl; }
/*! Read face information. \throw vpException::fatalError if there was an unexpected number of data. \param doc : Pointer to the document. \param node : Pointer to the node of the camera information. */ void vpMbXmlParser::read_face(xmlDocPtr doc, xmlNodePtr node) { bool angle_appear_node = false; bool angle_disappear_node = false; bool near_clipping_node = false; bool far_clipping_node = false; bool fov_clipping_node = false; for(xmlNodePtr dataNode = node->xmlChildrenNode; dataNode != NULL; dataNode = dataNode->next) { if(dataNode->type == XML_ELEMENT_NODE){ std::map<std::string, int>::iterator iter_data= this->nodeMap.find((char*)dataNode->name); if(iter_data != nodeMap.end()){ switch (iter_data->second){ case angle_appear:{ angleAppear = xmlReadDoubleChild(doc, dataNode); angle_appear_node = true; }break; case angle_disappear:{ angleDisappear = xmlReadDoubleChild(doc, dataNode); angle_disappear_node = true; }break; case near_clipping:{ nearClipping = xmlReadDoubleChild(doc, dataNode); near_clipping_node = true; hasNearClipping = true; }break; case far_clipping:{ farClipping = xmlReadDoubleChild(doc, dataNode); far_clipping_node = true; hasFarClipping = true; }break; case fov_clipping:{ if (xmlReadIntChild(doc, dataNode)) fovClipping = true; else fovClipping = false; fov_clipping_node = true; }break; default:{ // vpTRACE("unknown tag in read_camera : %d, %s", iter_data->second, (iter_data->first).c_str()); }break; } } } } if(!angle_appear_node) std::cout << "face : Angle Appear : "<< angleAppear << " (default)" <<std::endl; else std::cout << "face : Angle Appear : "<< angleAppear <<std::endl; if(!angle_disappear_node) std::cout << "face : Angle Disappear : "<< angleDisappear << " (default)" <<std::endl; else std::cout << "face : Angle Disappear : "<< angleDisappear <<std::endl; if(near_clipping_node) std::cout << "face : Near Clipping : "<< nearClipping <<std::endl; if(far_clipping_node) std::cout << "face : Far Clipping : "<< farClipping <<std::endl; if(fov_clipping_node) { if(fovClipping) std::cout << "face : Fov Clipping : True" <<std::endl; else std::cout << "face : Fov Clipping : False" <<std::endl; } }