main.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #include <igl/readOFF.h>
  2. #include <iostream>
  3. #include <igl/xml/XMLSerializer.h>
  4. #include <igl/xml/XMLSerialization.h>
  5. Eigen::MatrixXd V;
  6. Eigen::MatrixXi F;
  7. class State : public ::igl::XMLSerialization
  8. {
  9. public:
  10. State() : XMLSerialization("dummy") {}
  11. Eigen::MatrixXd V;
  12. Eigen::MatrixXi F;
  13. std::vector<int> ids;
  14. // You have to define this function to
  15. // register the fields you want to serialize
  16. void InitSerialization()
  17. {
  18. xmlSerializer->Add(V , "V");
  19. xmlSerializer->Add(F , "F");
  20. xmlSerializer->Add(ids, "ids");
  21. }
  22. };
  23. int main(int argc, char *argv[])
  24. {
  25. State state;
  26. // Load a mesh in OFF format
  27. igl::readOFF("../shared/cube.off", state.V, state.F);
  28. // Save some integers in a vector
  29. state.ids.push_back(6);
  30. state.ids.push_back(7);
  31. // Serialize to XML the state of the application
  32. ::igl::XMLSerializer serializer_save("601_Serialization");
  33. serializer_save.Add(state,"State");
  34. serializer_save.Save("temp.xml",true);
  35. // Load the state from the same XML file
  36. State loaded_state;
  37. ::igl::XMLSerializer serializer_load("601_Serialization");
  38. serializer_load.Add(loaded_state,"State");
  39. serializer_load.Load("temp.xml");
  40. // Plot the state
  41. std::cout << "Vertices: " << std::endl << loaded_state.V << std::endl;
  42. std::cout << "Faces: " << std::endl << loaded_state.F << std::endl;
  43. std::cout << "ids: " << std::endl
  44. << loaded_state.ids[0] << " " << loaded_state.ids[1] << std::endl;
  45. }