- FaceXMLImporter(Face& face) : m_face(face)
- {
- m_xml_state.push_back(xml_state_t::eDefault);
- }
- ~FaceXMLImporter()
- {
- m_face.planeChanged();
- }
-
- void pushElement(const XMLElement& element)
- {
- ASSERT_MESSAGE(m_xml_state.back().state() == xml_state_t::eDefault, "parse error");
-
- if(strcmp(element.name(), "planepts") == 0)
- {
- m_xml_state.push_back(xml_state_t::ePlanePts);
- }
- else if(strcmp(element.name(), "texdef") == 0)
- {
- m_xml_state.push_back(xml_state_t::eTexdef);
- }
- else if(strcmp(element.name(), "bpmatrix") == 0)
- {
- m_xml_state.push_back(xml_state_t::eBPMatrix);
- }
- else if(strcmp(element.name(), "flags") == 0)
- {
- m_xml_state.push_back(xml_state_t::eFlags);
- }
- else if(strcmp(element.name(), "shader") == 0)
- {
- m_xml_state.push_back(xml_state_t::eShader);
- }
- }
- void popElement(const char* name)
- {
- ASSERT_MESSAGE(m_xml_state.back().state() != xml_state_t::eDefault, "parse error");
-
- switch(m_xml_state.back().state())
- {
- case xml_state_t::ePlanePts:
- {
- FacePlane_importXML(m_face.getPlane(), m_xml_state.back().content());
- }
- break;
- case xml_state_t::eTexdef:
- {
- FaceTexdef_importXML(m_face.getTexdef(), m_xml_state.back().content());
- }
- break;
- case xml_state_t::eBPMatrix:
- {
- FaceTexdef_BP_importXML(m_face.getTexdef(), m_xml_state.back().content());
- }
- break;
- case xml_state_t::eFlags:
- {
- StringTokeniser content(m_xml_state.back().content());
-
- m_face.getShader().m_flags.m_contentFlags = atoi(content.getToken());
- m_face.getShader().m_flags.m_surfaceFlags = atoi(content.getToken());
- m_face.getShader().m_flags.m_value = atoi(content.getToken());
- }
- break;
- case xml_state_t::eShader:
- {
- m_face.getShader().setShader(m_xml_state.back().content());
- }
- break;
- default:
- break;
- }
-
- m_xml_state.pop_back();
- }
- std::size_t write(const char* data, std::size_t length)
- {
- ASSERT_MESSAGE(!m_xml_state.empty(), "parse error");
- return m_xml_state.back().write(data, length);
- }
+FaceXMLImporter( Face& face ) : m_face( face ){
+ m_xml_state.push_back( xml_state_t::eDefault );
+}
+~FaceXMLImporter(){
+ m_face.planeChanged();
+}
+
+void pushElement( const XMLElement& element ){
+ ASSERT_MESSAGE( m_xml_state.back().state() == xml_state_t::eDefault, "parse error" );
+
+ if ( strcmp( element.name(), "planepts" ) == 0 ) {
+ m_xml_state.push_back( xml_state_t::ePlanePts );
+ }
+ else if ( strcmp( element.name(), "texdef" ) == 0 ) {
+ m_xml_state.push_back( xml_state_t::eTexdef );
+ }
+ else if ( strcmp( element.name(), "bpmatrix" ) == 0 ) {
+ m_xml_state.push_back( xml_state_t::eBPMatrix );
+ }
+ else if ( strcmp( element.name(), "flags" ) == 0 ) {
+ m_xml_state.push_back( xml_state_t::eFlags );
+ }
+ else if ( strcmp( element.name(), "shader" ) == 0 ) {
+ m_xml_state.push_back( xml_state_t::eShader );
+ }
+}
+void popElement( const char* name ){
+ ASSERT_MESSAGE( m_xml_state.back().state() != xml_state_t::eDefault, "parse error" );
+
+ switch ( m_xml_state.back().state() )
+ {
+ case xml_state_t::ePlanePts:
+ {
+ FacePlane_importXML( m_face.getPlane(), m_xml_state.back().content() );
+ }
+ break;
+ case xml_state_t::eTexdef:
+ {
+ FaceTexdef_importXML( m_face.getTexdef(), m_xml_state.back().content() );
+ }
+ break;
+ case xml_state_t::eBPMatrix:
+ {
+ FaceTexdef_BP_importXML( m_face.getTexdef(), m_xml_state.back().content() );
+ }
+ break;
+ case xml_state_t::eFlags:
+ {
+ StringTokeniser content( m_xml_state.back().content() );
+
+ m_face.getShader().m_flags.m_contentFlags = atoi( content.getToken() );
+ m_face.getShader().m_flags.m_surfaceFlags = atoi( content.getToken() );
+ m_face.getShader().m_flags.m_value = atoi( content.getToken() );
+ }
+ break;
+ case xml_state_t::eShader:
+ {
+ m_face.getShader().setShader( m_xml_state.back().content() );
+ }
+ break;
+ default:
+ break;
+ }
+
+ m_xml_state.pop_back();
+}
+std::size_t write( const char* data, std::size_t length ){
+ ASSERT_MESSAGE( !m_xml_state.empty(), "parse error" );
+ return m_xml_state.back().write( data, length );
+}