Эх сурвалжийг харах

- added tutorial for serializer

Former-commit-id: 2c613cef7e4e7d9b108b39c027afd7de4c6d3a7b
Daniele Panozzo 11 жил өмнө
parent
commit
fa9459a081

+ 11 - 0
tutorial/601_Serialization/CMakeLists.txt

@@ -0,0 +1,11 @@
+cmake_minimum_required(VERSION 2.6)
+project(601_Serialization)
+
+include("../CMakeLists.shared")
+
+set(SOURCES
+${PROJECT_SOURCE_DIR}/main.cpp
+)
+
+add_executable(101_FileIO ${SOURCES} ${SHARED_SOURCES} ${TINYXML2_SOURCES})
+target_link_libraries(101_FileIO ${SHARED_LIBRARIES})

+ 58 - 0
tutorial/601_Serialization/main.cpp

@@ -0,0 +1,58 @@
+#include <igl/readOFF.h>
+#include <iostream>
+
+#include <igl/xml/XMLSerializer.h>
+#include <igl/xml/XMLSerialization.h>
+
+Eigen::MatrixXd V;
+Eigen::MatrixXi F;
+
+class State : public ::igl::XMLSerialization
+{
+public:
+  State() : XMLSerialization("dummy") {}
+
+  Eigen::MatrixXd V;
+  Eigen::MatrixXi F;
+  std::vector<int> ids;
+
+  // You have to define this function to
+  // register the fields you want to serialize
+  void InitSerialization()
+  {
+    xmlSerializer->Add(V  , "V");
+    xmlSerializer->Add(F  , "F");
+    xmlSerializer->Add(ids, "ids");
+  }
+
+};
+
+int main(int argc, char *argv[])
+{
+  State state;
+
+  // Load a mesh in OFF format
+  igl::readOFF("../shared/cube.off", state.V, state.F);
+
+  // Save some integers in a vector
+  state.ids.push_back(6);
+  state.ids.push_back(7);
+
+  // Serialize to XML the state of the application
+  ::igl::XMLSerializer serializer_save("601_Serialization");
+  serializer_save.Add(state,"State");
+  serializer_save.Save("temp.xml",true);
+
+  // Load the state from the same XML file
+  State loaded_state;
+  ::igl::XMLSerializer serializer_load("601_Serialization");
+  serializer_load.Add(loaded_state,"State");
+  serializer_load.Load("temp.xml");
+
+  // Plot the state
+  std::cout << "Vertices: " << std::endl << loaded_state.V << std::endl;
+  std::cout << "Faces:    " << std::endl << loaded_state.F << std::endl;
+  std::cout << "ids:      " << std::endl
+            << loaded_state.ids[0] << " " << loaded_state.ids[1] << std::endl;
+
+}