Browse Source

selected_data -> data to make the transition of old code easier. Old code can be simply converted by adding () after data

Former-commit-id: 02c8268a61575e6476b29a2bfd8c04f10fc4082c
Daniele Panozzo 7 years ago
parent
commit
7af7f2cd2e
58 changed files with 419 additions and 419 deletions
  1. 43 43
      include/igl/opengl/glfw/Viewer.cpp
  2. 3 3
      include/igl/opengl/glfw/Viewer.h
  3. 1 1
      tutorial/102_DrawMesh/main.cpp
  4. 5 5
      tutorial/103_Events/main.cpp
  5. 2 2
      tutorial/104_Colors/main.cpp
  6. 5 5
      tutorial/105_Overlays/main.cpp
  7. 1 1
      tutorial/106_ViewerMenu/main.cpp
  8. 5 5
      tutorial/107_MultipleMeshes/main.cpp
  9. 6 6
      tutorial/201_Normals/main.cpp
  10. 2 2
      tutorial/202_GaussianCurvature/main.cpp
  11. 5 5
      tutorial/203_CurvatureDirections/main.cpp
  12. 4 4
      tutorial/204_Gradient/main.cpp
  13. 4 4
      tutorial/205_Laplacian/main.cpp
  14. 2 2
      tutorial/301_Slice/main.cpp
  15. 2 2
      tutorial/302_Sort/main.cpp
  16. 3 3
      tutorial/303_LaplaceEquation/main.cpp
  17. 4 4
      tutorial/304_LinearEqualityConstraints/main.cpp
  18. 3 3
      tutorial/305_QuadraticProgramming/main.cpp
  19. 4 4
      tutorial/306_EigenDecomposition/main.cpp
  20. 5 5
      tutorial/401_BiharmonicDeformation/main.cpp
  21. 5 5
      tutorial/402_PolyharmonicDeformation/main.cpp
  22. 9 9
      tutorial/403_BoundedBiharmonicWeights/main.cpp
  23. 8 8
      tutorial/404_DualQuaternionSkinning/main.cpp
  24. 4 4
      tutorial/405_AsRigidAsPossible/main.cpp
  25. 6 6
      tutorial/406_FastAutomaticSkinningTransformations/main.cpp
  26. 6 6
      tutorial/407_BiharmonicCoordinates/main.cpp
  27. 7 7
      tutorial/501_HarmonicParam/main.cpp
  28. 7 7
      tutorial/502_LSCMParam/main.cpp
  29. 7 7
      tutorial/503_ARAPParam/main.cpp
  30. 8 8
      tutorial/504_NRosyDesign/main.cpp
  31. 34 34
      tutorial/505_MIQ/main.cpp
  32. 29 29
      tutorial/506_FrameField/main.cpp
  33. 6 6
      tutorial/507_PolyVectorField/main.cpp
  34. 16 16
      tutorial/508_ConjugateField/main.cpp
  35. 14 14
      tutorial/509_Planarization/main.cpp
  36. 38 38
      tutorial/510_Integrable/main.cpp
  37. 6 6
      tutorial/511_PolyVectorFieldGeneral/main.cpp
  38. 2 2
      tutorial/602_Matlab/main.cpp
  39. 1 1
      tutorial/604_Triangle/main.cpp
  40. 3 3
      tutorial/605_Tetgen/main.cpp
  41. 4 4
      tutorial/606_AmbientOcclusion/main.cpp
  42. 7 7
      tutorial/607_ScreenCapture/main.cpp
  43. 3 3
      tutorial/608_LIM/main.cpp
  44. 4 4
      tutorial/609_Boolean/main.cpp
  45. 4 4
      tutorial/610_CSGTree/main.cpp
  46. 4 4
      tutorial/702_WindingNumber/main.cpp
  47. 6 6
      tutorial/703_Decimation/main.cpp
  48. 4 4
      tutorial/704_SignedDistance/main.cpp
  49. 8 8
      tutorial/705_MarchingCubes/main.cpp
  50. 6 6
      tutorial/706_FacetOrientation/main.cpp
  51. 9 9
      tutorial/707_SweptVolume/main.cpp
  52. 4 4
      tutorial/708_Picking/main.cpp
  53. 6 6
      tutorial/709_VectorFieldVisualizer/main.cpp
  54. 14 14
      tutorial/710_SLIM/main.cpp
  55. 5 5
      tutorial/711_Subdivision/main.cpp
  56. 4 4
      tutorial/712_DataSmoothing/main.cpp
  57. 1 1
      tutorial/tutorial.html.REMOVED.git-id
  58. 1 1
      tutorial/tutorial.md.REMOVED.git-id

+ 43 - 43
include/igl/opengl/glfw/Viewer.cpp

@@ -286,7 +286,7 @@ namespace glfw
     highdpi = width/width_window;
     glfw_window_size(window,width_window,height_window);
     //opengl.init();
-    core.align_camera_center(selected_data().V,selected_data().F);
+    core.align_camera_center(data().V,data().F);
     // Initialize IGL viewer
     init();
     return EXIT_SUCCESS;
@@ -369,7 +369,7 @@ namespace glfw
 
     ngui->addGroup("Viewing Options");
     ngui->addButton("Center object",[&](){this->core.align_camera_center(
-      this->selected_data().V,this->selected_data().F);});
+      this->data().V,this->data().F);});
     ngui->addButton("Snap canonical view",[&]()
     {
       this->snap_to_canonical_quaternion();
@@ -381,36 +381,36 @@ namespace glfw
 
     ngui->addVariable<bool>("Face-based", [&](bool checked)
     {
-      this->selected_data().set_face_based(checked);
+      this->data().set_face_based(checked);
     },[&]()
     {
-      return this->selected_data().face_based;
+      return this->data().face_based;
     });
 
-    ngui->addVariable("Show texture",this->selected_data().show_texture);
+    ngui->addVariable("Show texture",this->data().show_texture);
 
     ngui->addVariable<bool>("Invert normals",[&](bool checked)
     {
-      this->selected_data().dirty |= ViewerData::DIRTY_NORMAL;
-      this->selected_data().invert_normals = checked;
+      this->data().dirty |= ViewerData::DIRTY_NORMAL;
+      this->data().invert_normals = checked;
     },[&]()
     {
-      return this->selected_data().invert_normals;
+      return this->data().invert_normals;
     });
 
-    // Alec: This will probably just attach to the selected_data() at the time
+    // Alec: This will probably just attach to the data() at the time
     // that addVariable is called. We probably need to use a callback here.
-    ngui->addVariable("Show overlay", selected_data().show_overlay);
-    ngui->addVariable("Show overlay depth", selected_data().show_overlay_depth);
-    ngui->addVariable("Line color", (nanogui::Color &) selected_data().line_color);
+    ngui->addVariable("Show overlay", data().show_overlay);
+    ngui->addVariable("Show overlay depth", data().show_overlay_depth);
+    ngui->addVariable("Line color", (nanogui::Color &) data().line_color);
     ngui->addVariable("Background", (nanogui::Color &) core.background_color);
-    ngui->addVariable("Shininess", selected_data().shininess);
+    ngui->addVariable("Shininess", data().shininess);
 
     ngui->addGroup("Overlays");
-    ngui->addVariable("Wireframe", selected_data().show_lines);
-    ngui->addVariable("Fill", selected_data().show_faces);
-    ngui->addVariable("Show vertex labels", selected_data().show_vertid);
-    ngui->addVariable("Show faces labels", selected_data().show_faceid);
+    ngui->addVariable("Wireframe", data().show_lines);
+    ngui->addVariable("Fill", data().show_faces);
+    ngui->addVariable("Show vertex labels", data().show_vertid);
+    ngui->addVariable("Show faces labels", data().show_faceid);
 
     screen->setVisible(true);
     screen->performLayout();
@@ -460,7 +460,7 @@ namespace glfw
     scroll_position = 0.0f;
 
     // Per face
-    selected_data().set_face_based(false);
+    data().set_face_based(false);
 
     // C-style callbacks
     callback_init         = nullptr;
@@ -524,11 +524,11 @@ namespace glfw
     }
 
     // Create new data slot and set to selected
-    if(!(selected_data().F.rows() == 0  && selected_data().V.rows() == 0))
+    if(!(data().F.rows() == 0  && data().V.rows() == 0))
     {
       append_mesh();
     }
-    selected_data().clear();
+    data().clear();
 
     size_t last_dot = mesh_file_name_string.rfind('.');
     if (last_dot == std::string::npos)
@@ -546,7 +546,7 @@ namespace glfw
       Eigen::MatrixXi F;
       if (!igl::readOFF(mesh_file_name_string, V, F))
         return false;
-      selected_data().set_mesh(V,F);
+      data().set_mesh(V,F);
     }
     else if (extension == "obj" || extension =="OBJ")
     {
@@ -566,8 +566,8 @@ namespace glfw
         return false;
       }
 
-      selected_data().set_mesh(V,F);
-      selected_data().set_uv(UV_V,UV_F);
+      data().set_mesh(V,F);
+      data().set_uv(UV_V,UV_F);
 
     }
     else
@@ -577,16 +577,16 @@ namespace glfw
       return false;
     }
 
-    selected_data().compute_normals();
-    selected_data().uniform_colors(Eigen::Vector3d(51.0/255.0,43.0/255.0,33.3/255.0),
+    data().compute_normals();
+    data().uniform_colors(Eigen::Vector3d(51.0/255.0,43.0/255.0,33.3/255.0),
                    Eigen::Vector3d(255.0/255.0,228.0/255.0,58.0/255.0),
                    Eigen::Vector3d(255.0/255.0,235.0/255.0,80.0/255.0));
-    if (selected_data().V_uv.rows() == 0)
+    if (data().V_uv.rows() == 0)
     {
-      selected_data().grid_texture();
+      data().grid_texture();
     }
 
-    core.align_camera_center(selected_data().V,selected_data().F);
+    core.align_camera_center(data().V,data().F);
 
     for (unsigned int i = 0; i<plugins.size(); ++i)
       if (plugins[i]->post_load())
@@ -615,7 +615,7 @@ namespace glfw
     if (extension == "off" || extension =="OFF")
     {
       return igl::writeOFF(
-        mesh_file_name_string,selected_data().V,selected_data().F);
+        mesh_file_name_string,data().V,data().F);
     }
     else if (extension == "obj" || extension =="OBJ")
     {
@@ -626,8 +626,8 @@ namespace glfw
       Eigen::MatrixXi UV_F;
 
       return igl::writeOBJ(mesh_file_name_string, 
-          selected_data().V,
-          selected_data().F, 
+          data().V,
+          data().F, 
           corner_normals, fNormIndices, UV_V, UV_F);
     }
     else
@@ -664,20 +664,20 @@ namespace glfw
       case 'F':
       case 'f':
       {
-        selected_data().set_face_based(!selected_data().face_based);
+        data().set_face_based(!data().face_based);
         return true;
       }
       case 'I':
       case 'i':
       {
-        selected_data().dirty |= ViewerData::DIRTY_NORMAL;
-        selected_data().invert_normals = !selected_data().invert_normals;
+        data().dirty |= ViewerData::DIRTY_NORMAL;
+        data().invert_normals = !data().invert_normals;
         return true;
       }
       case 'L':
       case 'l':
       {
-        selected_data().show_lines = !selected_data().show_lines;
+        data().show_lines = !data().show_lines;
         return true;
       }
       case 'O':
@@ -689,7 +689,7 @@ namespace glfw
       case 'T':
       case 't':
       {
-        selected_data().show_faces = !selected_data().show_faces;
+        data().show_faces = !data().show_faces;
         return true;
       }
       case 'Z':
@@ -716,10 +716,10 @@ namespace glfw
       }
 #ifdef IGL_VIEWER_WITH_NANOGUI
       case ';':
-        selected_data().show_vertid = !selected_data().show_vertid;
+        data().show_vertid = !data().show_vertid;
         return true;
       case ':':
-        selected_data().show_faceid = !selected_data().show_faceid;
+        data().show_faceid = !data().show_faceid;
         return true;
 #endif
       default: break;//do nothing
@@ -772,12 +772,12 @@ namespace glfw
 
     // Initialization code for the trackball
     Eigen::RowVector3d center;
-    if (selected_data().V.rows() == 0)
+    if (data().V.rows() == 0)
     {
       center << 0,0,0;
     }else
     {
-      center = selected_data().V.colwise().sum()/selected_data().V.rows();
+      center = data().V.colwise().sum()/data().V.rows();
     }
 
     Eigen::Vector3f coord =
@@ -951,7 +951,7 @@ namespace glfw
 #ifdef ENABLE_SERIALIZATION
     igl::deserialize(core,"Core",fname.c_str());
 #ifndef ENABLE_SERIALIZATION_CORE_ONLY
-    igl::deserialize(selected_data(),"Data",fname.c_str());
+    igl::deserialize(data(),"Data",fname.c_str());
     for(unsigned int i = 0; i <plugins.size(); ++i)
     {
       igl::deserialize(*plugins[i],plugins[i]->plugin_name,fname.c_str());
@@ -972,7 +972,7 @@ namespace glfw
     igl::serialize(core,"Core",fname.c_str(),true);
 
 #ifndef ENABLE_SERIALIZATION_CORE_ONLY
-    igl::serialize(selected_data(),"Data",fname.c_str());
+    igl::serialize(data(),"Data",fname.c_str());
     for(unsigned int i = 0; i <plugins.size(); ++i)
       igl::serialize(*plugins[i],plugins[i]->plugin_name,fname.c_str());
 #endif
@@ -1085,7 +1085,7 @@ namespace glfw
     this->save_mesh_to_file(fname.c_str());
   }
 
-  IGL_INLINE ViewerData& Viewer::selected_data()
+  IGL_INLINE ViewerData& Viewer::data()
   {
     assert(!data_list.empty() && "data_list should never be empty");
     assert(

+ 3 - 3
include/igl/opengl/glfw/Viewer.h

@@ -83,8 +83,8 @@ namespace glfw
     IGL_INLINE void snap_to_canonical_quaternion();
     IGL_INLINE void open_dialog_load_mesh();
     IGL_INLINE void open_dialog_save_mesh();
-    IGL_INLINE ViewerData& selected_data();
-    //IGL_INLINE const ViewerData& const_selected_data() const;
+    IGL_INLINE ViewerData& data();
+    //IGL_INLINE const ViewerData& const_data() const;
     IGL_INLINE State& selected_opengl_state();
     // Append a new "slot" for a mesh (i.e., create empty entires at the end of
     // the data_list and opengl_state_list.
@@ -109,7 +109,7 @@ namespace glfw
     //   // Erase all mesh slots except first and clear remaining mesh
     //   viewer.selected_data_index = viewer.data_list.size()-1;
     //   while(viewer.erase_mesh(viewer.selected_data_index)){};
-    //   viewer.selected_data().clear();
+    //   viewer.data().clear();
     //
     IGL_INLINE bool erase_mesh(const size_t index);
   private:

+ 1 - 1
tutorial/102_DrawMesh/main.cpp

@@ -12,6 +12,6 @@ int main(int argc, char *argv[])
 
   // Plot the mesh
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(V, F);
+  viewer.data().set_mesh(V, F);
   viewer.launch();
 }

+ 5 - 5
tutorial/103_Events/main.cpp

@@ -13,17 +13,17 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
   if (key == '1')
   {
     // Clear should be called before drawing the mesh
-    viewer.selected_data().clear();
+    viewer.data().clear();
     // Draw_mesh creates or updates the vertices and faces of the displayed mesh.
     // If a mesh is already displayed, draw_mesh returns an error if the given V and
     // F have size different than the current ones
-    viewer.selected_data().set_mesh(V1, F1);
+    viewer.data().set_mesh(V1, F1);
     viewer.core.align_camera_center(V1,F1);
   }
   else if (key == '2')
   {
-    viewer.selected_data().clear();
-    viewer.selected_data().set_mesh(V2, F2);
+    viewer.data().clear();
+    viewer.data().set_mesh(V2, F2);
     viewer.core.align_camera_center(V2,F2);
   }
 
@@ -45,6 +45,6 @@ int main(int argc, char *argv[])
   // Register a keyboard callback that allows to switch between
   // the two loaded meshes
   viewer.callback_key_down = &key_down;
-  viewer.selected_data().set_mesh(V1, F1);
+  viewer.data().set_mesh(V1, F1);
   viewer.launch();
 }

+ 2 - 2
tutorial/104_Colors/main.cpp

@@ -14,7 +14,7 @@ int main(int argc, char *argv[])
 
   // Plot the mesh
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(V, F);
+  viewer.data().set_mesh(V, F);
 
   // Use the z coordinate as a scalar field over the surface
   Eigen::VectorXd Z = V.col(2);
@@ -23,7 +23,7 @@ int main(int argc, char *argv[])
   igl::jet(Z,true,C);
 
   // Add per-vertex colors
-  viewer.selected_data().set_colors(C);
+  viewer.data().set_colors(C);
 
   // Launch the viewer
   viewer.launch();

+ 5 - 5
tutorial/105_Overlays/main.cpp

@@ -45,14 +45,14 @@ int main(int argc, char *argv[])
 
   // Plot the mesh
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(V, F);
+  viewer.data().set_mesh(V, F);
 
   // Plot the corners of the bounding box as points
-  viewer.selected_data().add_points(V_box,Eigen::RowVector3d(1,0,0));
+  viewer.data().add_points(V_box,Eigen::RowVector3d(1,0,0));
 
   // Plot the edges of the bounding box
   for (unsigned i=0;i<E_box.rows(); ++i)
-    viewer.selected_data().add_edges
+    viewer.data().add_edges
     (
       V_box.row(E_box(i,0)),
       V_box.row(E_box(i,1)),
@@ -62,10 +62,10 @@ int main(int argc, char *argv[])
   // Plot labels with the coordinates of bounding box vertices
   std::stringstream l1;
   l1 << m(0) << ", " << m(1) << ", " << m(2);
-  viewer.selected_data().add_label(m,l1.str());
+  viewer.data().add_label(m,l1.str());
   std::stringstream l2;
   l2 << M(0) << ", " << M(1) << ", " << M(2);
-  viewer.selected_data().add_label(M,l2.str());
+  viewer.data().add_label(M,l2.str());
 
   // Launch the viewer
   viewer.launch();

+ 1 - 1
tutorial/106_ViewerMenu/main.cpp

@@ -65,7 +65,7 @@ int main(int argc, char *argv[])
   };
 
   // Plot the mesh
-  viewer.selected_data().set_mesh(V, F);
+  viewer.data().set_mesh(V, F);
   viewer.launch();
 }
 #endif

+ 5 - 5
tutorial/107_MultipleMeshes/main.cpp

@@ -15,19 +15,19 @@ int main(int argc, char * argv[])
 
   // Set colors of each mesh by selecting its index first
   viewer.selected_data_index = 0;
-  viewer.selected_data().set_colors(Eigen::RowVector3d(0.8,0.47,0.22));
+  viewer.data().set_colors(Eigen::RowVector3d(0.8,0.47,0.22));
   viewer.selected_data_index = 1;
-  viewer.selected_data().set_colors(Eigen::RowVector3d(0.6,0.01,0.11));
+  viewer.data().set_colors(Eigen::RowVector3d(0.6,0.01,0.11));
   viewer.selected_data_index = 2;
-  viewer.selected_data().set_colors(Eigen::RowVector3d(0.37,0.06,0.25));
+  viewer.data().set_colors(Eigen::RowVector3d(0.37,0.06,0.25));
   viewer.selected_data_index = 3;
-  viewer.selected_data().set_colors(Eigen::RowVector3d(1,1,1));
+  viewer.data().set_colors(Eigen::RowVector3d(1,1,1));
 
   viewer.callback_key_down = 
     [&](igl::opengl::glfw::Viewer &, unsigned int key, int mod)
   {
     // Delete
-    if(key == 3)
+    if(key == '3')
     {
       viewer.erase_mesh(viewer.selected_data_index);
       return true;

+ 6 - 6
tutorial/201_Normals/main.cpp

@@ -20,13 +20,13 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
   switch(key)
   {
     case '1':
-      viewer.selected_data().set_normals(N_faces);
+      viewer.data().set_normals(N_faces);
       return true;
     case '2':
-      viewer.selected_data().set_normals(N_vertices);
+      viewer.data().set_normals(N_vertices);
       return true;
     case '3':
-      viewer.selected_data().set_normals(N_corners);
+      viewer.data().set_normals(N_corners);
       return true;
     default: break;
   }
@@ -50,9 +50,9 @@ int main(int argc, char *argv[])
   // Plot the mesh
   igl::opengl::glfw::Viewer viewer;
   viewer.callback_key_down = &key_down;
-  viewer.selected_data().show_lines = false;
-  viewer.selected_data().set_mesh(V, F);
-  viewer.selected_data().set_normals(N_faces);
+  viewer.data().show_lines = false;
+  viewer.data().set_mesh(V, F);
+  viewer.data().set_normals(N_faces);
   std::cout<<
     "Press '1' for per-face normals."<<std::endl<<
     "Press '2' for per-vertex normals."<<std::endl<<

+ 2 - 2
tutorial/202_GaussianCurvature/main.cpp

@@ -30,7 +30,7 @@ int main(int argc, char *argv[])
 
   // Plot the mesh with pseudocolors
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(V, F);
-  viewer.selected_data().set_colors(C);
+  viewer.data().set_mesh(V, F);
+  viewer.data().set_colors(C);
   viewer.launch();
 }

+ 5 - 5
tutorial/203_CurvatureDirections/main.cpp

@@ -44,26 +44,26 @@ int main(int argc, char *argv[])
   H = 0.5*(PV1+PV2);
 
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(V, F);
+  viewer.data().set_mesh(V, F);
 
 
   // Compute pseudocolor
   MatrixXd C;
   igl::parula(H,true,C);
-  viewer.selected_data().set_colors(C);
+  viewer.data().set_colors(C);
 
   // Average edge length for sizing
   const double avg = igl::avg_edge_length(V,F);
 
   // Draw a blue segment parallel to the minimal curvature direction
   const RowVector3d red(0.8,0.2,0.2),blue(0.2,0.2,0.8);
-  viewer.selected_data().add_edges(V + PD1*avg, V - PD1*avg, blue);
+  viewer.data().add_edges(V + PD1*avg, V - PD1*avg, blue);
 
   // Draw a red segment parallel to the maximal curvature direction
-  viewer.selected_data().add_edges(V + PD2*avg, V - PD2*avg, red);
+  viewer.data().add_edges(V + PD2*avg, V - PD2*avg, red);
 
   // Hide wireframe
-  viewer.selected_data().show_lines = false;
+  viewer.data().show_lines = false;
 
   viewer.launch();
 }

+ 4 - 4
tutorial/204_Gradient/main.cpp

@@ -33,14 +33,14 @@ int main(int argc, char *argv[])
   const VectorXd GU_mag = GU.rowwise().norm();
 
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(V, F);
+  viewer.data().set_mesh(V, F);
 
   // Compute pseudocolor for original function
   MatrixXd C;
   igl::jet(U,true,C);
   // // Or for gradient magnitude
   //igl::jet(GU_mag,true,C);
-  viewer.selected_data().set_colors(C);
+  viewer.data().set_colors(C);
 
   // Average edge length divided by average gradient (for scaling)
   const double max_size = igl::avg_edge_length(V,F) / GU_mag.mean();
@@ -48,10 +48,10 @@ int main(int argc, char *argv[])
   MatrixXd BC;
   igl::barycenter(V,F,BC);
   const RowVector3d black(0,0,0);
-  viewer.selected_data().add_edges(BC,BC+max_size*GU, black);
+  viewer.data().add_edges(BC,BC+max_size*GU, black);
 
   // Hide wireframe
-  viewer.selected_data().show_lines = false;
+  viewer.data().show_lines = false;
 
   viewer.launch();
 }

+ 4 - 4
tutorial/205_Laplacian/main.cpp

@@ -81,8 +81,8 @@ int main(int argc, char *argv[])
         return false;
     }
     // Send new positions, update normals, recenter
-    viewer.selected_data().set_vertices(U);
-    viewer.selected_data().compute_normals();
+    viewer.data().set_vertices(U);
+    viewer.data().compute_normals();
     viewer.core.align_camera_center(U,F);
     return true;
   };
@@ -95,8 +95,8 @@ int main(int argc, char *argv[])
 
   // Initialize smoothing with base mesh
   U = V;
-  viewer.selected_data().set_mesh(U, F);
-  viewer.selected_data().set_colors(C);
+  viewer.data().set_mesh(U, F);
+  viewer.data().set_colors(C);
   viewer.callback_key_down = key_down;
 
   cout<<"Press [space] to smooth."<<endl;;

+ 2 - 2
tutorial/301_Slice/main.cpp

@@ -35,7 +35,7 @@ int main(int argc, char *argv[])
 
   // Plot the mesh with pseudocolors
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(V, F);
-  viewer.selected_data().set_colors(C);
+  viewer.data().set_mesh(V, F);
+  viewer.data().set_colors(C);
   viewer.launch();
 }

+ 2 - 2
tutorial/302_Sort/main.cpp

@@ -33,7 +33,7 @@ int main(int argc, char *argv[])
 
   // Plot the mesh with pseudocolors
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(V, F);
-  viewer.selected_data().set_colors(C);
+  viewer.data().set_mesh(V, F);
+  viewer.data().set_colors(C);
   viewer.launch();
 }

+ 3 - 3
tutorial/303_LaplaceEquation/main.cpp

@@ -66,8 +66,8 @@ int main(int argc, char *argv[])
 
   // Plot the mesh with pseudocolors
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(V, F);
-  viewer.selected_data().show_lines = false;
-  viewer.selected_data().set_colors(C);
+  viewer.data().set_mesh(V, F);
+  viewer.data().show_lines = false;
+  viewer.data().set_colors(C);
   viewer.launch();
 }

+ 4 - 4
tutorial/304_LinearEqualityConstraints/main.cpp

@@ -73,9 +73,9 @@ int main(int argc, char *argv[])
 
   // Plot the mesh with pseudocolors
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(V, F);
-  viewer.selected_data().show_lines = false;
-  viewer.selected_data().set_colors(data.C);
+  viewer.data().set_mesh(V, F);
+  viewer.data().show_lines = false;
+  viewer.data().set_colors(data.C);
 
   viewer.callback_key_down = 
     [](igl::opengl::glfw::Viewer& viewer,unsigned char key,int mod)->bool
@@ -84,7 +84,7 @@ int main(int argc, char *argv[])
       {
         Data & data = *static_cast<Data*>(viewer.callback_key_down_data);
         static bool toggle = true;
-        viewer.selected_data().set_colors(toggle?data.C_const:data.C);
+        viewer.data().set_colors(toggle?data.C_const:data.C);
         toggle = !toggle;
         return true;
       }else

+ 3 - 3
tutorial/305_QuadraticProgramming/main.cpp

@@ -23,7 +23,7 @@ void solve(igl::opengl::glfw::Viewer &viewer)
   // Pseudo-color based on solution
   Eigen::MatrixXd C;
   igl::jet(Z,0,1,C);
-  viewer.selected_data().set_colors(C);
+  viewer.data().set_colors(C);
 }
 
 bool key_down(igl::opengl::glfw::Viewer &viewer, unsigned char key, int mod)
@@ -57,8 +57,8 @@ int main(int argc, char *argv[])
 
   // Plot the mesh
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(V, F);
-  viewer.selected_data().show_lines = false;
+  viewer.data().set_mesh(V, F);
+  viewer.data().show_lines = false;
   viewer.callback_key_down = &key_down;
 
   // One fixed point

+ 4 - 4
tutorial/306_EigenDecomposition/main.cpp

@@ -58,14 +58,14 @@ int main(int argc, char * argv[])
         {
           V.col(2) = Z;
         }
-        viewer.selected_data().set_mesh(V,F);
-        viewer.selected_data().compute_normals();
-        viewer.selected_data().set_colors(C);
+        viewer.data().set_mesh(V,F);
+        viewer.data().compute_normals();
+        viewer.data().set_colors(C);
         return true;
       }
     }
   };
   viewer.callback_key_down(viewer,' ',0);
-  viewer.selected_data().show_lines = false;
+  viewer.data().show_lines = false;
   viewer.launch();
 }

+ 5 - 5
tutorial/401_BiharmonicDeformation/main.cpp

@@ -36,8 +36,8 @@ bool pre_draw(igl::opengl::glfw::Viewer & viewer)
   {
     igl::harmonic(V,F,b,U_bc_anim,2.,U);
   }
-  viewer.selected_data().set_vertices(U);
-  viewer.selected_data().compute_normals();
+  viewer.data().set_vertices(U);
+  viewer.data().compute_normals();
   return false;
 }
 
@@ -110,9 +110,9 @@ int main(int argc, char *argv[])
 
   // Plot the mesh with pseudocolors
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(U, F);
-  viewer.selected_data().show_lines = false;
-  viewer.selected_data().set_colors(C);
+  viewer.data().set_mesh(U, F);
+  viewer.data().show_lines = false;
+  viewer.data().set_colors(C);
   viewer.core.trackball_angle = Eigen::Quaternionf(sqrt(2.0),0,sqrt(2.0),0);
   viewer.core.trackball_angle.normalize();
   viewer.callback_pre_draw = &pre_draw;

+ 5 - 5
tutorial/402_PolyharmonicDeformation/main.cpp

@@ -25,8 +25,8 @@ bool pre_draw(igl::opengl::glfw::Viewer & viewer)
     resolve = false;
   }
   U.col(2) = z_max*Z;
-  viewer.selected_data().set_vertices(U);
-  viewer.selected_data().compute_normals();
+  viewer.data().set_vertices(U);
+  viewer.data().compute_normals();
   if(viewer.core.is_animating)
   {
     z_max += z_dir;
@@ -94,9 +94,9 @@ int main(int argc, char *argv[])
 
   // Plot the mesh with pseudocolors
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(U, F);
-  viewer.selected_data().show_lines = false;
-  viewer.selected_data().set_colors(C);
+  viewer.data().set_mesh(U, F);
+  viewer.data().show_lines = false;
+  viewer.data().set_colors(C);
   viewer.core.trackball_angle = Eigen::Quaternionf(0.81,-0.58,-0.03,-0.03);
   viewer.core.trackball_angle.normalize();
   viewer.callback_pre_draw = &pre_draw;

+ 9 - 9
tutorial/403_BoundedBiharmonicWeights/main.cpp

@@ -76,9 +76,9 @@ bool pre_draw(igl::opengl::glfw::Viewer & viewer)
     MatrixXi BET;
     igl::deform_skeleton(C,BE,T,CT,BET);
 
-    viewer.selected_data().set_vertices(U);
-    viewer.selected_data().set_edges(CT,BET,sea_green);
-    viewer.selected_data().compute_normals();
+    viewer.data().set_vertices(U);
+    viewer.data().set_edges(CT,BET,sea_green);
+    viewer.data().compute_normals();
     anim_t += anim_t_dir;
     anim_t_dir *= (anim_t>=1.0 || anim_t<=0.0?-1.0:1.0);
   }
@@ -89,7 +89,7 @@ void set_color(igl::opengl::glfw::Viewer &viewer)
 {
   Eigen::MatrixXd C;
   igl::jet(W.col(selected).eval(),true,C);
-  viewer.selected_data().set_colors(C);
+  viewer.data().set_colors(C);
 }
 
 bool key_down(igl::opengl::glfw::Viewer &viewer, unsigned char key, int mods)
@@ -161,12 +161,12 @@ int main(int argc, char *argv[])
 
   // Plot the mesh with pseudocolors
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(U, F);
+  viewer.data().set_mesh(U, F);
   set_color(viewer);
-  viewer.selected_data().set_edges(C,BE,sea_green);
-  viewer.selected_data().show_lines = false;
-  viewer.selected_data().show_overlay_depth = false;
-  viewer.selected_data().line_width = 1;
+  viewer.data().set_edges(C,BE,sea_green);
+  viewer.data().show_lines = false;
+  viewer.data().show_overlay_depth = false;
+  viewer.data().line_width = 1;
   viewer.callback_pre_draw = &pre_draw;
   viewer.callback_key_down = &key_down;
   viewer.core.is_animating = false;

+ 8 - 8
tutorial/404_DualQuaternionSkinning/main.cpp

@@ -77,9 +77,9 @@ bool pre_draw(igl::opengl::glfw::Viewer & viewer)
     MatrixXi BET;
     igl::deform_skeleton(C,BE,T,CT,BET);
     
-    viewer.selected_data().set_vertices(U);
-    viewer.selected_data().set_edges(CT,BET,sea_green);
-    viewer.selected_data().compute_normals();
+    viewer.data().set_vertices(U);
+    viewer.data().set_edges(CT,BET,sea_green);
+    viewer.data().compute_normals();
     if(viewer.core.is_animating)
     {
       anim_t += anim_t_dir;
@@ -131,11 +131,11 @@ int main(int argc, char *argv[])
 
   // Plot the mesh with pseudocolors
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(U, F);
-  viewer.selected_data().set_edges(C,BE,sea_green);
-  viewer.selected_data().show_lines = false;
-  viewer.selected_data().show_overlay_depth = false;
-  viewer.selected_data().line_width = 1;
+  viewer.data().set_mesh(U, F);
+  viewer.data().set_edges(C,BE,sea_green);
+  viewer.data().show_lines = false;
+  viewer.data().show_overlay_depth = false;
+  viewer.data().line_width = 1;
   viewer.core.trackball_angle.normalize();
   viewer.callback_pre_draw = &pre_draw;
   viewer.callback_key_down = &key_down;

+ 4 - 4
tutorial/405_AsRigidAsPossible/main.cpp

@@ -68,8 +68,8 @@ bool pre_draw(igl::opengl::glfw::Viewer & viewer)
       }
     }
     igl::arap_solve(bc,arap_data,U);
-    viewer.selected_data().set_vertices(U);
-    viewer.selected_data().compute_normals();
+    viewer.data().set_vertices(U);
+    viewer.data().compute_normals();
   if(viewer.core.is_animating)
   {
     anim_t += anim_t_dir;
@@ -123,8 +123,8 @@ int main(int argc, char *argv[])
 
   // Plot the mesh with pseudocolors
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(U, F);
-  viewer.selected_data().set_colors(C);
+  viewer.data().set_mesh(U, F);
+  viewer.data().set_colors(C);
   viewer.callback_pre_draw = &pre_draw;
   viewer.callback_key_down = &key_down;
   viewer.core.is_animating = false;

+ 6 - 6
tutorial/406_FastAutomaticSkinningTransformations/main.cpp

@@ -101,9 +101,9 @@ bool pre_draw(igl::opengl::glfw::Viewer & viewer)
         break;
       }
     }
-    viewer.selected_data().set_vertices(U);
-    viewer.selected_data().set_points(bc,sea_green);
-    viewer.selected_data().compute_normals();
+    viewer.data().set_vertices(U);
+    viewer.data().set_points(bc,sea_green);
+    viewer.data().compute_normals();
     if(viewer.core.is_animating)
     {
       anim_t += anim_t_dir;
@@ -207,9 +207,9 @@ int main(int argc, char *argv[])
 
   // Plot the mesh with pseudocolors
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(U, F);
-  viewer.selected_data().add_points(igl::slice(V,b,1),sea_green);
-  viewer.selected_data().show_lines = false;
+  viewer.data().set_mesh(U, F);
+  viewer.data().add_points(igl::slice(V,b,1),sea_green);
+  viewer.data().show_lines = false;
   viewer.callback_pre_draw = &pre_draw;
   viewer.callback_key_down = &key_down;
   viewer.core.is_animating = false;

+ 6 - 6
tutorial/407_BiharmonicCoordinates/main.cpp

@@ -106,12 +106,12 @@ int main(int argc, char * argv[])
   igl::cat(1,low.U,high.U,scene.U);
   igl::cat(1,low.F,MatrixXi(high.F.array()+low.V.rows()),scene.F);
   // Color each mesh
-  viewer.selected_data().set_mesh(scene.U,scene.F);
+  viewer.data().set_mesh(scene.U,scene.F);
   MatrixXd C(scene.F.rows(),3);
   C<<
     RowVector3d(0.8,0.5,0.2).replicate(low.F.rows(),1),
     RowVector3d(0.3,0.4,1.0).replicate(high.F.rows(),1);
-  viewer.selected_data().set_colors(C);
+  viewer.data().set_colors(C);
 
   viewer.callback_key_pressed = 
     [&](igl::opengl::glfw::Viewer & viewer,unsigned int key,int mods)->bool
@@ -151,15 +151,15 @@ int main(int argc, char * argv[])
       high.U = W * (low.U.rowwise() + RowVector3d(1,0,0));
       scene.U.block(low.U.rows(),0,high.U.rows(),high.U.cols()) = high.U;
 
-      viewer.selected_data().set_vertices(scene.U);
-      viewer.selected_data().compute_normals();
+      viewer.data().set_vertices(scene.U);
+      viewer.data().compute_normals();
     }
     return false;
   };
-  viewer.selected_data().show_lines = false;
+  viewer.data().show_lines = false;
   viewer.core.is_animating = true;
   viewer.core.animation_max_fps = 30.;
-  viewer.selected_data().set_face_based(true);
+  viewer.data().set_face_based(true);
   cout<<R"(
 [space] to toggle animation
 'r'     to reset positions 

+ 7 - 7
tutorial/501_HarmonicParam/main.cpp

@@ -15,17 +15,17 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
   if (key == '1')
   {
     // Plot the 3D mesh
-    viewer.selected_data().set_mesh(V,F);
+    viewer.data().set_mesh(V,F);
     viewer.core.align_camera_center(V,F);
   }
   else if (key == '2')
   {
     // Plot the mesh in 2D using the UV coordinates as vertex coordinates
-    viewer.selected_data().set_mesh(V_uv,F);
+    viewer.data().set_mesh(V_uv,F);
     viewer.core.align_camera_center(V_uv,F);
   }
 
-  viewer.selected_data().compute_normals();
+  viewer.data().compute_normals();
 
   return false;
 }
@@ -51,15 +51,15 @@ int main(int argc, char *argv[])
 
   // Plot the mesh
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(V, F);
-  viewer.selected_data().set_uv(V_uv);
+  viewer.data().set_mesh(V, F);
+  viewer.data().set_uv(V_uv);
   viewer.callback_key_down = &key_down;
 
   // Disable wireframe
-  viewer.selected_data().show_lines = false;
+  viewer.data().show_lines = false;
 
   // Draw checkerboard texture
-  viewer.selected_data().show_texture = true;
+  viewer.data().show_texture = true;
 
   // Launch the viewer
   viewer.launch();

+ 7 - 7
tutorial/502_LSCMParam/main.cpp

@@ -16,17 +16,17 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
   if (key == '1')
   {
     // Plot the 3D mesh
-    viewer.selected_data().set_mesh(V,F);
+    viewer.data().set_mesh(V,F);
     viewer.core.align_camera_center(V,F);
   }
   else if (key == '2')
   {
     // Plot the mesh in 2D using the UV coordinates as vertex coordinates
-    viewer.selected_data().set_mesh(V_uv,F);
+    viewer.data().set_mesh(V_uv,F);
     viewer.core.align_camera_center(V_uv,F);
   }
 
-  viewer.selected_data().compute_normals();
+  viewer.data().compute_normals();
 
   return false;
 }
@@ -55,15 +55,15 @@ int main(int argc, char *argv[])
 
   // Plot the mesh
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(V, F);
-  viewer.selected_data().set_uv(V_uv);
+  viewer.data().set_mesh(V, F);
+  viewer.data().set_uv(V_uv);
   viewer.callback_key_down = &key_down;
 
   // Disable wireframe
-  viewer.selected_data().show_lines = false;
+  viewer.data().show_lines = false;
 
   // Draw checkerboard texture
-  viewer.selected_data().show_texture = true;
+  viewer.data().show_texture = true;
 
   // Launch the viewer
   viewer.launch();

+ 7 - 7
tutorial/503_ARAPParam/main.cpp

@@ -26,16 +26,16 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
 
   if (show_uv)
   {
-    viewer.selected_data().set_mesh(V_uv,F);
+    viewer.data().set_mesh(V_uv,F);
     viewer.core.align_camera_center(V_uv,F);
   }
   else
   {
-    viewer.selected_data().set_mesh(V,F);
+    viewer.data().set_mesh(V,F);
     viewer.core.align_camera_center(V,F);
   }
 
-  viewer.selected_data().compute_normals();
+  viewer.data().compute_normals();
 
   return false;
 }
@@ -77,15 +77,15 @@ int main(int argc, char *argv[])
 
   // Plot the mesh
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(V, F);
-  viewer.selected_data().set_uv(V_uv);
+  viewer.data().set_mesh(V, F);
+  viewer.data().set_uv(V_uv);
   viewer.callback_key_down = &key_down;
 
   // Disable wireframe
-  viewer.selected_data().show_lines = false;
+  viewer.data().show_lines = false;
 
   // Draw checkerboard texture
-  viewer.selected_data().show_texture = true;
+  viewer.data().show_texture = true;
 
   // Launch the viewer
   viewer.launch();

+ 8 - 8
tutorial/504_NRosyDesign/main.cpp

@@ -66,8 +66,8 @@ void plot_mesh_nrosy(
   using namespace Eigen;
   using namespace std;
   // Clear the mesh
-  viewer.selected_data().clear();
-  viewer.selected_data().set_mesh(V,F);
+  viewer.data().clear();
+  viewer.data().set_mesh(V,F);
 
   // Expand the representative vectors in the full vector set and plot them as lines
   double avg = igl::avg_edge_length(V, F);
@@ -82,22 +82,22 @@ void plot_mesh_nrosy(
     for(unsigned j=0; j<N; ++j)
       Be.row(i*N+j) = B.row(i);
 
-  viewer.selected_data().add_edges(Be,Be+Y*(avg/2),RowVector3d(0,0,1));
+  viewer.data().add_edges(Be,Be+Y*(avg/2),RowVector3d(0,0,1));
 
   // Plot the singularities as colored dots (red for negative, blue for positive)
   for (unsigned i=0; i<S.size();++i)
   {
     if (S(i) < -0.001)
-      viewer.selected_data().add_points(V.row(i),RowVector3d(1,0,0));
+      viewer.data().add_points(V.row(i),RowVector3d(1,0,0));
     else if (S(i) > 0.001)
-      viewer.selected_data().add_points(V.row(i),RowVector3d(0,1,0));
+      viewer.data().add_points(V.row(i),RowVector3d(0,1,0));
   }
 
   // Highlight in red the constrained faces
   MatrixXd C = MatrixXd::Constant(F.rows(),3,1);
   for (unsigned i=0; i<b.size();++i)
     C.row(b(i)) << 1, 0, 0;
-  viewer.selected_data().set_colors(C);
+  viewer.data().set_colors(C);
 }
 
   // It allows to change the degree of the field when a number is pressed
@@ -137,11 +137,11 @@ int main(int argc, char *argv[])
   key_down(viewer, '4', 0);
 
   // Plot the mesh
-  viewer.selected_data().set_mesh(V, F);
+  viewer.data().set_mesh(V, F);
   viewer.callback_key_down = &key_down;
 
   // Disable wireframe
-  viewer.selected_data().show_lines = false;
+  viewer.data().show_lines = false;
 
   // Launch the viewer
   viewer.launch();

+ 34 - 34
tutorial/505_MIQ/main.cpp

@@ -90,38 +90,38 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
   if (key <'1' || key >'8')
     return false;
 
-  viewer.selected_data().clear();
-  viewer.selected_data().show_lines = false;
-  viewer.selected_data().show_texture = false;
+  viewer.data().clear();
+  viewer.data().show_lines = false;
+  viewer.data().show_texture = false;
 
   if (key == '1')
   {
     // Cross field
-    viewer.selected_data().set_mesh(V, F);
-    viewer.selected_data().add_edges(extend_arrows ? B - global_scale*X1 : B, B + global_scale*X1 ,Eigen::RowVector3d(1,0,0));
-    viewer.selected_data().add_edges(extend_arrows ? B - global_scale*X2 : B, B + global_scale*X2 ,Eigen::RowVector3d(0,0,1));
+    viewer.data().set_mesh(V, F);
+    viewer.data().add_edges(extend_arrows ? B - global_scale*X1 : B, B + global_scale*X1 ,Eigen::RowVector3d(1,0,0));
+    viewer.data().add_edges(extend_arrows ? B - global_scale*X2 : B, B + global_scale*X2 ,Eigen::RowVector3d(0,0,1));
   }
 
   if (key == '2')
   {
     // Bisector field
-    viewer.selected_data().set_mesh(V, F);
-    viewer.selected_data().add_edges(extend_arrows ? B - global_scale*BIS1 : B, B + global_scale*BIS1 ,Eigen::RowVector3d(1,0,0));
-    viewer.selected_data().add_edges(extend_arrows ? B - global_scale*BIS2 : B, B + global_scale*BIS2 ,Eigen::RowVector3d(0,0,1));
+    viewer.data().set_mesh(V, F);
+    viewer.data().add_edges(extend_arrows ? B - global_scale*BIS1 : B, B + global_scale*BIS1 ,Eigen::RowVector3d(1,0,0));
+    viewer.data().add_edges(extend_arrows ? B - global_scale*BIS2 : B, B + global_scale*BIS2 ,Eigen::RowVector3d(0,0,1));
   }
 
   if (key == '3')
   {
     // Bisector field combed
-    viewer.selected_data().set_mesh(V, F);
-    viewer.selected_data().add_edges(extend_arrows ? B - global_scale*BIS1_combed : B, B + global_scale*BIS1_combed ,Eigen::RowVector3d(1,0,0));
-    viewer.selected_data().add_edges(extend_arrows ? B - global_scale*BIS2_combed : B, B + global_scale*BIS2_combed ,Eigen::RowVector3d(0,0,1));
+    viewer.data().set_mesh(V, F);
+    viewer.data().add_edges(extend_arrows ? B - global_scale*BIS1_combed : B, B + global_scale*BIS1_combed ,Eigen::RowVector3d(1,0,0));
+    viewer.data().add_edges(extend_arrows ? B - global_scale*BIS2_combed : B, B + global_scale*BIS2_combed ,Eigen::RowVector3d(0,0,1));
   }
 
   if (key == '4')
   {
     // Singularities and cuts
-    viewer.selected_data().set_mesh(V, F);
+    viewer.data().set_mesh(V, F);
 
     // Plot cuts
     int l_count = Seams.sum();
@@ -141,15 +141,15 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
       }
     }
 
-    viewer.selected_data().add_edges(P1, P2, Eigen::RowVector3d(1, 0, 0));
+    viewer.data().add_edges(P1, P2, Eigen::RowVector3d(1, 0, 0));
 
     // Plot the singularities as colored dots (red for negative, blue for positive)
     for (unsigned i=0; i<singularityIndex.size();++i)
     {
       if (singularityIndex(i) < 2 && singularityIndex(i) > 0)
-        viewer.selected_data().add_points(V.row(i),Eigen::RowVector3d(1,0,0));
+        viewer.data().add_points(V.row(i),Eigen::RowVector3d(1,0,0));
       else if (singularityIndex(i) > 2)
-        viewer.selected_data().add_points(V.row(i),Eigen::RowVector3d(0,1,0));
+        viewer.data().add_points(V.row(i),Eigen::RowVector3d(0,1,0));
     }
 
   }
@@ -158,9 +158,9 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
   {
     // Singularities and cuts, original field
     // Singularities and cuts
-    viewer.selected_data().set_mesh(V, F);
-    viewer.selected_data().add_edges(extend_arrows ? B - global_scale*X1_combed : B, B + global_scale*X1_combed ,Eigen::RowVector3d(1,0,0));
-    viewer.selected_data().add_edges(extend_arrows ? B - global_scale*X2_combed : B, B + global_scale*X2_combed ,Eigen::RowVector3d(0,0,1));
+    viewer.data().set_mesh(V, F);
+    viewer.data().add_edges(extend_arrows ? B - global_scale*X1_combed : B, B + global_scale*X1_combed ,Eigen::RowVector3d(1,0,0));
+    viewer.data().add_edges(extend_arrows ? B - global_scale*X2_combed : B, B + global_scale*X2_combed ,Eigen::RowVector3d(0,0,1));
 
     // Plot cuts
     int l_count = Seams.sum();
@@ -180,50 +180,50 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
       }
     }
 
-    viewer.selected_data().add_edges(P1, P2, Eigen::RowVector3d(1, 0, 0));
+    viewer.data().add_edges(P1, P2, Eigen::RowVector3d(1, 0, 0));
 
     // Plot the singularities as colored dots (red for negative, blue for positive)
     for (unsigned i=0; i<singularityIndex.size();++i)
     {
       if (singularityIndex(i) < 2 && singularityIndex(i) > 0)
-        viewer.selected_data().add_points(V.row(i),Eigen::RowVector3d(1,0,0));
+        viewer.data().add_points(V.row(i),Eigen::RowVector3d(1,0,0));
       else if (singularityIndex(i) > 2)
-        viewer.selected_data().add_points(V.row(i),Eigen::RowVector3d(0,1,0));
+        viewer.data().add_points(V.row(i),Eigen::RowVector3d(0,1,0));
     }
   }
 
   if (key == '6')
   {
     // Global parametrization UV
-    viewer.selected_data().set_mesh(UV, FUV);
-    viewer.selected_data().set_uv(UV);
-    viewer.selected_data().show_lines = true;
+    viewer.data().set_mesh(UV, FUV);
+    viewer.data().set_uv(UV);
+    viewer.data().show_lines = true;
   }
 
   if (key == '7')
   {
     // Global parametrization in 3D
-    viewer.selected_data().set_mesh(V, F);
-    viewer.selected_data().set_uv(UV,FUV);
-    viewer.selected_data().show_texture = true;
+    viewer.data().set_mesh(V, F);
+    viewer.data().set_uv(UV,FUV);
+    viewer.data().show_texture = true;
   }
 
   if (key == '8')
   {
     // Global parametrization in 3D with seams
-    viewer.selected_data().set_mesh(V, F);
-    viewer.selected_data().set_uv(UV_seams,FUV_seams);
-    viewer.selected_data().show_texture = true;
+    viewer.data().set_mesh(V, F);
+    viewer.data().set_uv(UV_seams,FUV_seams);
+    viewer.data().show_texture = true;
   }
 
-  viewer.selected_data().set_colors(Eigen::RowVector3d(1,1,1));
+  viewer.data().set_colors(Eigen::RowVector3d(1,1,1));
 
   // Replace the standard texture with an integer shift invariant texture
   Eigen::Matrix<unsigned char,Eigen::Dynamic,Eigen::Dynamic> texture_R, texture_G, texture_B;
   line_texture(texture_R, texture_G, texture_B);
-  viewer.selected_data().set_texture(texture_R, texture_B, texture_G);
+  viewer.data().set_texture(texture_R, texture_B, texture_G);
 
-  viewer.core.align_camera_center(viewer.selected_data().V,viewer.selected_data().F);
+  viewer.core.align_camera_center(viewer.data().V,viewer.data().F);
 
   return false;
 }

+ 29 - 29
tutorial/506_FrameField/main.cpp

@@ -76,14 +76,14 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
   if (key <'1' || key >'6')
     return false;
 
-  viewer.selected_data().clear();
-  viewer.selected_data().show_lines = false;
-  viewer.selected_data().show_texture = false;
+  viewer.data().clear();
+  viewer.data().show_lines = false;
+  viewer.data().show_texture = false;
 
   if (key == '1')
   {
     // Frame field constraints
-    viewer.selected_data().set_mesh(V, F);
+    viewer.data().set_mesh(V, F);
 
     MatrixXd F1_t = MatrixXd::Zero(FF1.rows(),FF1.cols());
     MatrixXd F2_t = MatrixXd::Zero(FF2.rows(),FF2.cols());
@@ -96,7 +96,7 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
       F2_t.row(b(i)) = bc2.row(i);
     }
 
-    viewer.selected_data().set_colors(C);
+    viewer.data().set_colors(C);
 
     MatrixXd C1,C2;
     VectorXd K1 = F1_t.rowwise().norm();
@@ -104,72 +104,72 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
     igl::jet(K1,true,C1);
     igl::jet(K2,true,C2);
 
-    viewer.selected_data().add_edges(B - global_scale*F1_t, B + global_scale*F1_t ,C1);
-    viewer.selected_data().add_edges(B - global_scale*F2_t, B + global_scale*F2_t ,C2);
+    viewer.data().add_edges(B - global_scale*F1_t, B + global_scale*F1_t ,C1);
+    viewer.data().add_edges(B - global_scale*F2_t, B + global_scale*F2_t ,C2);
   }
 
   if (key == '2')
   {
     // Frame field
-    viewer.selected_data().set_mesh(V, F);
+    viewer.data().set_mesh(V, F);
     MatrixXd C1,C2;
     VectorXd K1 = FF1.rowwise().norm();
     VectorXd K2 = FF2.rowwise().norm();
     igl::jet(K1,true,C1);
     igl::jet(K2,true,C2);
 
-    viewer.selected_data().add_edges(B - global_scale*FF1, B + global_scale*FF1 ,C1);
-    viewer.selected_data().add_edges(B - global_scale*FF2, B + global_scale*FF2 ,C2);
+    viewer.data().add_edges(B - global_scale*FF1, B + global_scale*FF1 ,C1);
+    viewer.data().add_edges(B - global_scale*FF2, B + global_scale*FF2 ,C2);
 
     // Highlight in red the constrained faces
     MatrixXd C = MatrixXd::Constant(F.rows(),3,1);
     for (unsigned i=0; i<b.size();++i)
       C.row(b(i)) << 1, 0, 0;
-    viewer.selected_data().set_colors(C);
+    viewer.data().set_colors(C);
 
   }
 
   if (key == '3')
   {
     // Deformed with frame field
-    viewer.selected_data().set_mesh(V_deformed, F);
-    viewer.selected_data().add_edges(B_deformed - global_scale*FF1_deformed, B_deformed + global_scale*FF1_deformed ,Eigen::RowVector3d(1,0,0));
-    viewer.selected_data().add_edges(B_deformed - global_scale*FF2_deformed, B_deformed + global_scale*FF2_deformed ,Eigen::RowVector3d(0,0,1));
-    viewer.selected_data().set_colors(RowVector3d(1,1,1));
+    viewer.data().set_mesh(V_deformed, F);
+    viewer.data().add_edges(B_deformed - global_scale*FF1_deformed, B_deformed + global_scale*FF1_deformed ,Eigen::RowVector3d(1,0,0));
+    viewer.data().add_edges(B_deformed - global_scale*FF2_deformed, B_deformed + global_scale*FF2_deformed ,Eigen::RowVector3d(0,0,1));
+    viewer.data().set_colors(RowVector3d(1,1,1));
   }
 
   if (key == '4')
   {
     // Deformed with cross field
-    viewer.selected_data().set_mesh(V_deformed, F);
-    viewer.selected_data().add_edges(B_deformed - global_scale*X1_deformed, B_deformed + global_scale*X1_deformed ,Eigen::RowVector3d(0,0,1));
-    viewer.selected_data().add_edges(B_deformed - global_scale*X2_deformed, B_deformed + global_scale*X2_deformed ,Eigen::RowVector3d(0,0,1));
-    viewer.selected_data().set_colors(RowVector3d(1,1,1));
+    viewer.data().set_mesh(V_deformed, F);
+    viewer.data().add_edges(B_deformed - global_scale*X1_deformed, B_deformed + global_scale*X1_deformed ,Eigen::RowVector3d(0,0,1));
+    viewer.data().add_edges(B_deformed - global_scale*X2_deformed, B_deformed + global_scale*X2_deformed ,Eigen::RowVector3d(0,0,1));
+    viewer.data().set_colors(RowVector3d(1,1,1));
   }
 
   if (key == '5')
   {
     // Deformed with quad texture
-    viewer.selected_data().set_mesh(V_deformed, F);
-    viewer.selected_data().set_uv(V_uv,F_uv);
-    viewer.selected_data().set_colors(RowVector3d(1,1,1));
-    viewer.selected_data().show_texture = true;
+    viewer.data().set_mesh(V_deformed, F);
+    viewer.data().set_uv(V_uv,F_uv);
+    viewer.data().set_colors(RowVector3d(1,1,1));
+    viewer.data().show_texture = true;
   }
 
   if (key == '6')
   {
     // Deformed with quad texture
-    viewer.selected_data().set_mesh(V, F);
-    viewer.selected_data().set_uv(V_uv,F_uv);
-    viewer.selected_data().set_colors(RowVector3d(1,1,1));
-    viewer.selected_data().show_texture = true;
+    viewer.data().set_mesh(V, F);
+    viewer.data().set_uv(V_uv,F_uv);
+    viewer.data().set_colors(RowVector3d(1,1,1));
+    viewer.data().show_texture = true;
   }
 
   // Replace the standard texture with an integer shift invariant texture
   Eigen::Matrix<unsigned char,Eigen::Dynamic,Eigen::Dynamic> texture_R, texture_G, texture_B;
   line_texture(texture_R, texture_G, texture_B);
-  viewer.selected_data().set_texture(texture_R, texture_B, texture_G);
-  viewer.core.align_camera_center(viewer.selected_data().V,viewer.selected_data().F);
+  viewer.data().set_texture(texture_R, texture_B, texture_G);
+  viewer.core.align_camera_center(viewer.data().V,viewer.data().F);
 
   return false;
 }

+ 6 - 6
tutorial/507_PolyVectorField/main.cpp

@@ -78,7 +78,7 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
   if (key <'1' || key >'8')
     return false;
 
-  viewer.selected_data().lines.resize(0,9);
+  viewer.data().lines.resize(0,9);
 
   int num = key  - '0';
 
@@ -103,7 +103,7 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
   MatrixXd C = MatrixXd::Constant(F.rows(),3,1);
   for (unsigned i=0; i<b.size();++i)
     C.row(b(i)) << 1, 0, 0;
-  viewer.selected_data().set_colors(C);
+  viewer.data().set_colors(C);
 
   for (int n=0; n<num; ++n)
   {
@@ -118,7 +118,7 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
     VectorXd c = VF.rowwise().norm();
     MatrixXd C2;
     igl::jet(c,1,1+rand_factor,C2);
-    viewer.selected_data().add_edges(B - global_scale*VF, B + global_scale*VF , C2);
+    viewer.data().add_edges(B - global_scale*VF, B + global_scale*VF , C2);
   }
 
   return false;
@@ -145,10 +145,10 @@ int main(int argc, char *argv[])
   srand(0);
 
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(V, F);
+  viewer.data().set_mesh(V, F);
   viewer.callback_key_down = &key_down;
-  viewer.selected_data().show_lines = false;
-  viewer.selected_data().line_width = 10000;// this does not work, why?
+  viewer.data().show_lines = false;
+  viewer.data().line_width = 10000;// this does not work, why?
   key_down(viewer,'2',0);
 
 

+ 16 - 16
tutorial/508_ConjugateField/main.cpp

@@ -42,7 +42,7 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
   if (key <'1' || key >'5')
     return false;
 
-  viewer.selected_data().lines.resize(0,9);
+  viewer.data().lines.resize(0,9);
   // Highlight in red the constrained faces
   MatrixXd C = MatrixXd::Constant(F.rows(),3,1);
   for (unsigned i=0; i<b.size();++i)
@@ -73,44 +73,44 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
       F2_t.row(b(i)) = bc.block(i,3,1,3);
     }
 
-    viewer.selected_data().add_edges(B - global_scale*F1_t, B + global_scale*F1_t , Eigen::RowVector3d(0,0,1));
-    viewer.selected_data().add_edges(B - global_scale*F2_t, B + global_scale*F2_t , Eigen::RowVector3d(0,0,1));
-    viewer.selected_data().set_colors(C);
+    viewer.data().add_edges(B - global_scale*F1_t, B + global_scale*F1_t , Eigen::RowVector3d(0,0,1));
+    viewer.data().add_edges(B - global_scale*F2_t, B + global_scale*F2_t , Eigen::RowVector3d(0,0,1));
+    viewer.data().set_colors(C);
   }
 
   if (key == '2')
   {
     // Interpolated result
-    viewer.selected_data().add_edges(B - global_scale*smooth_pvf.block(0,0,F.rows(),3),
+    viewer.data().add_edges(B - global_scale*smooth_pvf.block(0,0,F.rows(),3),
                       B + global_scale*smooth_pvf.block(0,0,F.rows(),3),
                       Eigen::RowVector3d(0,0,1));
-    viewer.selected_data().add_edges(B - global_scale*smooth_pvf.block(0,3,F.rows(),3),
+    viewer.data().add_edges(B - global_scale*smooth_pvf.block(0,3,F.rows(),3),
                       B + global_scale*smooth_pvf.block(0,3,F.rows(),3),
                       Eigen::RowVector3d(0,0,1));
-    viewer.selected_data().set_colors(C);
+    viewer.data().set_colors(C);
   }
 
   if (key == '3')
   {
     // Interpolated result
-    viewer.selected_data().set_colors(CS);
+    viewer.data().set_colors(CS);
   }
 
   if (key == '4')
   {
     // Conjugate field
-    viewer.selected_data().add_edges(B - global_scale*conjugate_pvf.block(0,0,F.rows(),3),
+    viewer.data().add_edges(B - global_scale*conjugate_pvf.block(0,0,F.rows(),3),
                       B + global_scale*conjugate_pvf.block(0,0,F.rows(),3),
                       Eigen::RowVector3d(0,0,1));
-    viewer.selected_data().add_edges(B - global_scale*conjugate_pvf.block(0,3,F.rows(),3),
+    viewer.data().add_edges(B - global_scale*conjugate_pvf.block(0,3,F.rows(),3),
                       B + global_scale*conjugate_pvf.block(0,3,F.rows(),3),
                       Eigen::RowVector3d(0,0,1));
-    viewer.selected_data().set_colors(C);
+    viewer.data().set_colors(C);
   }
   if (key == '5')
   {
     // Conjugate field
-    viewer.selected_data().set_colors(CC);
+    viewer.data().set_colors(CC);
   }
 
   return false;
@@ -174,10 +174,10 @@ int main(int argc, char *argv[])
   csdata.evaluateConjugacy(pvU, pvV, conjugacy_c);
   // Launch the viewer
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().invert_normals = true;
-  viewer.selected_data().show_lines = false;
-  viewer.selected_data().show_texture = false;
-  viewer.selected_data().set_mesh(V, F);
+  viewer.data().invert_normals = true;
+  viewer.data().show_lines = false;
+  viewer.data().show_texture = false;
+  viewer.data().set_mesh(V, F);
   viewer.callback_key_down = &key_down;
   key_down(viewer,'1',0);
   viewer.launch();

+ 14 - 14
tutorial/509_Planarization/main.cpp

@@ -37,7 +37,7 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
   if (key == '1')
   {
     // Draw the triangulated quad mesh
-    viewer.selected_data().set_mesh(VQC, FQCtri);
+    viewer.data().set_mesh(VQC, FQCtri);
 
     // Assign a color to each quad that corresponds to its planarity
     VectorXd planarity;
@@ -46,20 +46,20 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
     igl::jet(planarity, 0, 0.01, Ct);
     MatrixXd C(FQCtri.rows(),3);
     C << Ct, Ct;
-    viewer.selected_data().set_colors(C);
+    viewer.data().set_colors(C);
 
     // Plot a line for each edge of the quad mesh
-    viewer.selected_data().add_edges(PQC0, PQC1, Eigen::RowVector3d(0,0,0));
-    viewer.selected_data().add_edges(PQC1, PQC2, Eigen::RowVector3d(0,0,0));
-    viewer.selected_data().add_edges(PQC2, PQC3, Eigen::RowVector3d(0,0,0));
-    viewer.selected_data().add_edges(PQC3, PQC0, Eigen::RowVector3d(0,0,0));
+    viewer.data().add_edges(PQC0, PQC1, Eigen::RowVector3d(0,0,0));
+    viewer.data().add_edges(PQC1, PQC2, Eigen::RowVector3d(0,0,0));
+    viewer.data().add_edges(PQC2, PQC3, Eigen::RowVector3d(0,0,0));
+    viewer.data().add_edges(PQC3, PQC0, Eigen::RowVector3d(0,0,0));
   }
 
   // Plot the planarized quad mesh
   if (key == '2')
   {
     // Draw the triangulated quad mesh
-    viewer.selected_data().set_mesh(VQCplan, FQCtri);
+    viewer.data().set_mesh(VQCplan, FQCtri);
 
     // Assign a color to each quad that corresponds to its planarity
     VectorXd planarity;
@@ -68,13 +68,13 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
     igl::jet(planarity, 0, 0.01, Ct);
     MatrixXd C(FQCtri.rows(),3);
     C << Ct, Ct;
-    viewer.selected_data().set_colors(C);
+    viewer.data().set_colors(C);
 
     // Plot a line for each edge of the quad mesh
-    viewer.selected_data().add_edges(PQC0plan, PQC1plan, Eigen::RowVector3d(0,0,0));
-    viewer.selected_data().add_edges(PQC1plan, PQC2plan, Eigen::RowVector3d(0,0,0));
-    viewer.selected_data().add_edges(PQC2plan, PQC3plan, Eigen::RowVector3d(0,0,0));
-    viewer.selected_data().add_edges(PQC3plan, PQC0plan, Eigen::RowVector3d(0,0,0));
+    viewer.data().add_edges(PQC0plan, PQC1plan, Eigen::RowVector3d(0,0,0));
+    viewer.data().add_edges(PQC1plan, PQC2plan, Eigen::RowVector3d(0,0,0));
+    viewer.data().add_edges(PQC2plan, PQC3plan, Eigen::RowVector3d(0,0,0));
+    viewer.data().add_edges(PQC3plan, PQC0plan, Eigen::RowVector3d(0,0,0));
   }
 
   return false;
@@ -109,8 +109,8 @@ int main(int argc, char *argv[])
   // Launch the viewer
   igl::opengl::glfw::Viewer viewer;
   key_down(viewer,'2',0);
-  viewer.selected_data().invert_normals = true;
-  viewer.selected_data().show_lines = false;
+  viewer.data().invert_normals = true;
+  viewer.data().show_lines = false;
   viewer.callback_key_down = &key_down;
   viewer.launch();
 }

+ 38 - 38
tutorial/510_Integrable/main.cpp

@@ -237,7 +237,7 @@ void drawCuts(igl::opengl::glfw::Viewer& viewer,
         end.row(ind) = V.row(F(i,(j+1)%3));
         ind++;
       }
-  viewer.selected_data().add_edges(start, end , Eigen::RowVector3d(1.,0,1.));
+  viewer.data().add_edges(start, end , Eigen::RowVector3d(1.,0,1.));
 }
 
 void drawField(igl::opengl::glfw::Viewer &viewer,
@@ -248,7 +248,7 @@ void drawField(igl::opengl::glfw::Viewer &viewer,
   {
     Eigen::MatrixXd VF = field.block(0,n*3,F.rows(),3);
     Eigen::VectorXd c = VF.rowwise().norm();
-    viewer.selected_data().add_edges(B - global_scale*VF, B + global_scale*VF , color);
+    viewer.data().add_edges(B - global_scale*VF, B + global_scale*VF , color);
   }
 }
 
@@ -264,7 +264,7 @@ void drawConstraints(igl::opengl::glfw::Viewer &viewer)
       if (blevel[i] ==1 && n>0)
         color.row(i)<<0.7,0.7,0.7;
     // Eigen::RowVector3d color; color<<0.5,0.5,0.5;
-    viewer.selected_data().add_edges(Bc - global_scale*bc.block(0,n*3,bc.rows(),3), Bc + global_scale*bc.block(0,n*3,bc.rows(),3) , color);
+    viewer.data().add_edges(Bc - global_scale*bc.block(0,n*3,bc.rows(),3), Bc + global_scale*bc.block(0,n*3,bc.rows(),3) , color);
   }
 
 }
@@ -316,22 +316,22 @@ void update_display(igl::opengl::glfw::Viewer& viewer)
   using namespace std;
   using namespace Eigen;
 
-  viewer.selected_data().clear();
-  viewer.selected_data().lines.resize(0,9);
-  viewer.selected_data().points.resize(0,6);
-  viewer.selected_data().show_texture = false;
+  viewer.data().clear();
+  viewer.data().lines.resize(0,9);
+  viewer.data().points.resize(0,6);
+  viewer.data().show_texture = false;
 
   if (display_mode == 1)
   {
     cerr<< "Displaying original field, its singularities and its cuts"  <<endl;
 
-    viewer.selected_data().set_mesh(V, F);
+    viewer.data().set_mesh(V, F);
 
     // Highlight in red the constrained faces
     MatrixXd C = MatrixXd::Constant(F.rows(),3,1);
     for (unsigned i=0; i<b.size();++i)
       C.row(b(i)) << 1, 0, 0;
-    viewer.selected_data().set_colors(C);
+    viewer.data().set_colors(C);
 
     //Draw constraints
     drawConstraints(viewer);
@@ -345,7 +345,7 @@ void update_display(igl::opengl::glfw::Viewer& viewer)
 
     //Draw Singularities
     Eigen::MatrixXd singular_points = igl::slice(V, singularities_ori, 1);
-    viewer.selected_data().add_points(singular_points,Eigen::RowVector3d(239./255.,205./255.,57./255.));
+    viewer.data().add_points(singular_points,Eigen::RowVector3d(239./255.,205./255.,57./255.));
 
   }
 
@@ -353,13 +353,13 @@ void update_display(igl::opengl::glfw::Viewer& viewer)
   {
     cerr<< "Displaying current field, its singularities and its cuts"  <<endl;
 
-    viewer.selected_data().set_mesh(V, F);
+    viewer.data().set_mesh(V, F);
 
     // Highlight in red the constrained faces
     MatrixXd C = MatrixXd::Constant(F.rows(),3,1);
     for (unsigned i=0; i<b.size();++i)
       C.row(b(i)) << 1, 0, 0;
-    viewer.selected_data().set_colors(C);
+    viewer.data().set_colors(C);
 
     //Draw constraints
     drawConstraints(viewer);
@@ -373,17 +373,17 @@ void update_display(igl::opengl::glfw::Viewer& viewer)
 
     //Draw Singularities
     Eigen::MatrixXd singular_points = igl::slice(V, singularities, 1);
-    viewer.selected_data().add_points(singular_points,Eigen::RowVector3d(239./255.,205./255.,57./255.));
+    viewer.data().add_points(singular_points,Eigen::RowVector3d(239./255.,205./255.,57./255.));
   }
 
   if (display_mode == 3)
   {
     cerr<< "Displaying original field and its curl"  <<endl;
 
-    viewer.selected_data().set_mesh(Vbs, Fbs);
+    viewer.data().set_mesh(Vbs, Fbs);
     Eigen::MatrixXd C;
     colorEdgeMeshFaces(curl_ori, 0, 0.2, C);
-    viewer.selected_data().set_colors(C);
+    viewer.data().set_colors(C);
 
     // Draw Field
     Eigen::RowVector3d color; color<<1,1,1;
@@ -395,10 +395,10 @@ void update_display(igl::opengl::glfw::Viewer& viewer)
   {
     cerr<< "Displaying current field and its curl"  <<endl;
 
-    viewer.selected_data().set_mesh(Vbs, Fbs);
+    viewer.data().set_mesh(Vbs, Fbs);
     Eigen::MatrixXd C;
     colorEdgeMeshFaces(curl, 0, 0.2, C);
-    viewer.selected_data().set_colors(C);
+    viewer.data().set_colors(C);
 
     // Draw Field
     Eigen::RowVector3d color; color<<1,1,1;
@@ -409,10 +409,10 @@ void update_display(igl::opengl::glfw::Viewer& viewer)
   {
     cerr<< "Displaying original poisson-integrated field and original poisson error"  <<endl;
 
-    viewer.selected_data().set_mesh(V, F);
+    viewer.data().set_mesh(V, F);
     Eigen::MatrixXd C;
     igl::jet(poisson_error_ori, 0, 0.5, C);
-    viewer.selected_data().set_colors(C);
+    viewer.data().set_colors(C);
 
     // Draw Field
     Eigen::RowVector3d color; color<<1,1,1;
@@ -423,10 +423,10 @@ void update_display(igl::opengl::glfw::Viewer& viewer)
   {
     cerr<< "Displaying current poisson-integrated field and current poisson error"  <<endl;
 
-    viewer.selected_data().set_mesh(V, F);
+    viewer.data().set_mesh(V, F);
     Eigen::MatrixXd C;
     igl::jet(poisson_error, 0, 0.5, C);
-    viewer.selected_data().set_colors(C);
+    viewer.data().set_colors(C);
 
     // Draw Field
     Eigen::RowVector3d color; color<<1,1,1;
@@ -437,38 +437,38 @@ void update_display(igl::opengl::glfw::Viewer& viewer)
   {
     cerr<< "Displaying original texture with cuts and singularities"  <<endl;
 
-    viewer.selected_data().set_mesh(V, F);
+    viewer.data().set_mesh(V, F);
     MatrixXd C = MatrixXd::Constant(F.rows(),3,1);
-    viewer.selected_data().set_colors(C);
-    viewer.selected_data().set_uv(uv_scale*scalars_ori, Fcut_ori);
-    viewer.selected_data().set_texture(texture_R, texture_B, texture_G);
-    viewer.selected_data().show_texture = true;
+    viewer.data().set_colors(C);
+    viewer.data().set_uv(uv_scale*scalars_ori, Fcut_ori);
+    viewer.data().set_texture(texture_R, texture_B, texture_G);
+    viewer.data().show_texture = true;
 
     // Draw Cuts
     drawCuts(viewer,cuts_ori);
 
     //Draw Singularities
     Eigen::MatrixXd singular_points = igl::slice(V, singularities_ori, 1);
-    viewer.selected_data().add_points(singular_points,Eigen::RowVector3d(239./255.,205./255.,57./255.));
+    viewer.data().add_points(singular_points,Eigen::RowVector3d(239./255.,205./255.,57./255.));
 
   }
   if (display_mode == 8)
   {
     cerr<< "Displaying current texture with cuts and singularities"  <<endl;
 
-    viewer.selected_data().set_mesh(V, F);
+    viewer.data().set_mesh(V, F);
     MatrixXd C = MatrixXd::Constant(F.rows(),3,1);
-    viewer.selected_data().set_colors(C);
-    viewer.selected_data().set_uv(uv_scale*scalars, Fcut);
-    viewer.selected_data().set_texture(texture_R, texture_B, texture_G);
-    viewer.selected_data().show_texture = true;
+    viewer.data().set_colors(C);
+    viewer.data().set_uv(uv_scale*scalars, Fcut);
+    viewer.data().set_texture(texture_R, texture_B, texture_G);
+    viewer.data().show_texture = true;
 
     // Draw Cuts
     drawCuts(viewer,cuts);
 
     //Draw Singularities
     Eigen::MatrixXd singular_points = igl::slice(V, singularities, 1);
-    viewer.selected_data().add_points(singular_points,Eigen::RowVector3d(239./255.,205./255.,57./255.));
+    viewer.data().add_points(singular_points,Eigen::RowVector3d(239./255.,205./255.,57./255.));
 
   }
 
@@ -476,13 +476,13 @@ void update_display(igl::opengl::glfw::Viewer& viewer)
   {
     cerr<< "Displaying original field overlaid onto the current integrated field"  <<endl;
 
-    viewer.selected_data().set_mesh(V, F);
+    viewer.data().set_mesh(V, F);
 
     // Highlight in red the constrained faces
     MatrixXd C = MatrixXd::Constant(F.rows(),3,1);
     for (unsigned i=0; i<b.size();++i)
       C.row(b(i)) << 1, 0, 0;
-    viewer.selected_data().set_colors(C);
+    viewer.data().set_colors(C);
 
     // Draw Field
     Eigen::RowVector3d color; color<<0,0,1;
@@ -498,13 +498,13 @@ void update_display(igl::opengl::glfw::Viewer& viewer)
   {
     cerr<< "Displaying current field overlaid onto the current integrated field"  <<endl;
 
-    viewer.selected_data().set_mesh(V, F);
+    viewer.data().set_mesh(V, F);
 
     // Highlight in red the constrained faces
     MatrixXd C = MatrixXd::Constant(F.rows(),3,1);
     for (unsigned i=0; i<b.size();++i)
       C.row(b(i)) << 1, 0, 0;
-    viewer.selected_data().set_colors(C);
+    viewer.data().set_colors(C);
 
     // Draw Field
     Eigen::RowVector3d color; color<<0,0,1;
@@ -709,7 +709,7 @@ int main(int argc, char *argv[])
 
   igl::opengl::glfw::Viewer viewer;
   viewer.callback_key_down = &key_down;
-  viewer.selected_data().show_lines = false;
+  viewer.data().show_lines = false;
   key_down(viewer,'2',0);
 
   // Replace the standard texture with an integer shift invariant texture

+ 6 - 6
tutorial/511_PolyVectorFieldGeneral/main.cpp

@@ -79,7 +79,7 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
   if (key <'1' || key >'9')
     return false;
 
-  viewer.selected_data().lines.resize(0,9);
+  viewer.data().lines.resize(0,9);
 
   int num = key  - '0';
 
@@ -129,7 +129,7 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
   MatrixXd C = MatrixXd::Constant(F.rows(),3,1);
   for (unsigned i=0; i<b.size();++i)
     C.row(b(i)) << 1, 0, 0;
-  viewer.selected_data().set_colors(C);
+  viewer.data().set_colors(C);
 
   for (int n=0; n<num; ++n)
   {
@@ -144,8 +144,8 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
     VectorXd c = VF.rowwise().norm();
     MatrixXd C2;
     igl::jet(c,1,1+rand_factor,C2);
-    // viewer.selected_data().add_edges(B - global_scale*VF, B + global_scale*VF , C2);
-    viewer.selected_data().add_edges(B, B + global_scale*VF , C2);
+    // viewer.data().add_edges(B - global_scale*VF, B + global_scale*VF , C2);
+    viewer.data().add_edges(B, B + global_scale*VF , C2);
   }
 
 
@@ -173,9 +173,9 @@ int main(int argc, char *argv[])
   srand(0);
 
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(V, F);
+  viewer.data().set_mesh(V, F);
   viewer.callback_key_down = &key_down;
-  viewer.selected_data().show_lines = false;
+  viewer.data().show_lines = false;
   key_down(viewer,'3',0);
   std::cerr << " *** Press keys 1-9 to select number of vectors per point. ***" << std::endl;
   

+ 2 - 2
tutorial/602_Matlab/main.cpp

@@ -32,7 +32,7 @@ void plotEV(igl::opengl::glfw::Viewer& viewer, int id)
     C.row(i) << r,g,b;
   }
 
-  viewer.selected_data().set_colors(C);
+  viewer.data().set_colors(C);
 }
 
 // This function is called every time a keyboard button is pressed
@@ -74,7 +74,7 @@ int main(int argc, char *argv[])
   // Plot the mesh
   igl::opengl::glfw::Viewer viewer;
   viewer.callback_key_down = &key_down;
-  viewer.selected_data().set_mesh(V, F);
+  viewer.data().set_mesh(V, F);
 
   // Plot the first non-trivial eigenvector
   plotEV(viewer,1);

+ 1 - 1
tutorial/604_Triangle/main.cpp

@@ -32,6 +32,6 @@ int main(int argc, char *argv[])
 
   // Plot the generated mesh
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(V2,F2);
+  viewer.data().set_mesh(V2,F2);
   viewer.launch();
 }

+ 3 - 3
tutorial/605_Tetgen/main.cpp

@@ -49,9 +49,9 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
       F_temp.row(i*4+3) << (i*4)+1, (i*4)+2, (i*4)+3;
     }
 
-    viewer.selected_data().clear();
-    viewer.selected_data().set_mesh(V_temp,F_temp);
-    viewer.selected_data().set_face_based(true);
+    viewer.data().clear();
+    viewer.data().set_mesh(V_temp,F_temp);
+    viewer.data().set_face_based(true);
   }
 
 

+ 4 - 4
tutorial/606_AmbientOcclusion/main.cpp

@@ -23,7 +23,7 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
   {
     case '1':
       // Show the mesh without the ambient occlusion factor
-      viewer.selected_data().set_colors(color);
+      viewer.data().set_colors(color);
       break;
     case '2':
     {
@@ -31,7 +31,7 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
       MatrixXd C = color.replicate(V.rows(),1);
       for (unsigned i=0; i<C.rows();++i)
         C.row(i) *= AO(i);//std::min<double>(AO(i)+0.2,1);
-      viewer.selected_data().set_colors(C);
+      viewer.data().set_colors(C);
       break;
     }
     case '.':
@@ -70,10 +70,10 @@ int main(int argc, char *argv[])
 
   // Show mesh
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(V, F);
+  viewer.data().set_mesh(V, F);
   viewer.callback_key_down = &key_down;
   key_down(viewer,'2',0);
-  viewer.selected_data().show_lines = false;
+  viewer.data().show_lines = false;
   viewer.core.lighting_factor = 0.0f;
   viewer.launch();
 }

+ 7 - 7
tutorial/607_ScreenCapture/main.cpp

@@ -18,7 +18,7 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
 
     // Draw the scene in the buffers
     viewer.core.draw_buffer(
-      viewer.selected_data(),viewer.selected_opengl_state(),false,R,G,B,A);
+      viewer.data(),viewer.selected_opengl_state(),false,R,G,B,A);
 
     // Save it to a PNG
     igl::png::writePNG(R,G,B,A,"out.png");
@@ -50,14 +50,14 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
       1,1,
       0,1;
 
-    viewer.selected_data().clear();
-    viewer.selected_data().set_mesh(V,F);
-    viewer.selected_data().set_uv(UV);
+    viewer.data().clear();
+    viewer.data().set_mesh(V,F);
+    viewer.data().set_uv(UV);
     viewer.core.align_camera_center(V);
-    viewer.selected_data().show_texture = true;
+    viewer.data().show_texture = true;
 
     // Use the image as a texture
-    viewer.selected_data().set_texture(R,G,B);
+    viewer.data().set_texture(R,G,B);
 
   }
 
@@ -78,6 +78,6 @@ int main(int argc, char *argv[])
   // Plot the mesh and register the callback
   igl::opengl::glfw::Viewer viewer;
   viewer.callback_key_down = &key_down;
-  viewer.selected_data().set_mesh(V, F);
+  viewer.data().set_mesh(V, F);
   viewer.launch();
 }

+ 3 - 3
tutorial/608_LIM/main.cpp

@@ -50,7 +50,7 @@ bool key_down(igl::opengl::glfw::Viewer& viewer,unsigned char key,int modifier)
     }
 
     // set mesh
-    viewer.selected_data().set_vertices(V1);
+    viewer.data().set_vertices(V1);
 
     return true;
   }
@@ -108,8 +108,8 @@ int main(int argc, char *argv[])
   // Show mesh
   igl::opengl::glfw::Viewer viewer;
   viewer.callback_key_down = &key_down;
-  viewer.selected_data().set_mesh(V1, F);
-  viewer.selected_data().show_lines = true;
+  viewer.data().set_mesh(V1, F);
+  viewer.data().show_lines = true;
   viewer.core.lighting_factor = 0.0f;
   viewer.launch();
 }

+ 4 - 4
tutorial/609_Boolean/main.cpp

@@ -37,9 +37,9 @@ void update(igl::opengl::glfw::Viewer &viewer)
       C.row(f) = Eigen::RowVector3d(0,1,0);
     }
   }
-  viewer.selected_data().clear();
-  viewer.selected_data().set_mesh(VC,FC);
-  viewer.selected_data().set_colors(C);
+  viewer.data().clear();
+  viewer.data().set_mesh(VC,FC);
+  viewer.data().set_colors(C);
   std::cout<<"A "<<MESH_BOOLEAN_TYPE_NAMES[boolean_type]<<" B."<<std::endl;
 }
 
@@ -83,7 +83,7 @@ int main(int argc, char *argv[])
   // Initialize
   update(viewer);
 
-  viewer.selected_data().show_lines = true;
+  viewer.data().show_lines = true;
   viewer.callback_key_down = &key_down;
   viewer.core.camera_dnear = 3.9;
   cout<<

+ 4 - 4
tutorial/610_CSGTree/main.cpp

@@ -30,13 +30,13 @@ int main(int argc, char * argv[])
   int view_id = num_views-1;
   const auto & update = [&]()
   {
-    viewer.selected_data().clear();
+    viewer.data().clear();
     // CSGTree templated on type of F
     VectorXd I;
     const auto & set_mesh = 
       [&](const MatrixXd & V, const MatrixXi & F, const int i)
     {
-      viewer.selected_data().set_mesh(V,F);
+      viewer.data().set_mesh(V,F);
       I = VectorXd::Constant(F.rows(),1,i);
     };
     switch(view_id)
@@ -85,7 +85,7 @@ int main(int argc, char * argv[])
           default:
             assert(false && "unknown view id");
         }
-        viewer.selected_data().set_mesh(M.cast_V<MatrixXd>(),M.F());
+        viewer.data().set_mesh(M.cast_V<MatrixXd>(),M.F());
         I.resize(M.F().rows(),1);
         // Compute colors based on original facets
         for(int f = 0;f<M.F().rows();f++)
@@ -103,7 +103,7 @@ int main(int argc, char * argv[])
 
     MatrixXd C;
     jet(I,1,5,C);
-    viewer.selected_data().set_colors(C);
+    viewer.data().set_colors(C);
   };
   update();
 

+ 4 - 4
tutorial/702_WindingNumber/main.cpp

@@ -72,10 +72,10 @@ void update_visualization(igl::opengl::glfw::Viewer & viewer)
     default:
       break;
   }
-  viewer.selected_data().clear();
-  viewer.selected_data().set_mesh(V_vis,F_vis);
-  viewer.selected_data().set_colors(C_vis);
-  viewer.selected_data().set_face_based(true);
+  viewer.data().clear();
+  viewer.data().set_mesh(V_vis,F_vis);
+  viewer.data().set_colors(C_vis);
+  viewer.data().set_face_based(true);
 }
 
 bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int mod)

+ 6 - 6
tutorial/703_Decimation/main.cpp

@@ -60,9 +60,9 @@ int main(int argc, char * argv[])
       Qit[e] = Q.insert(std::pair<double,int>(cost,e)).first;
     }
     num_collapsed = 0;
-    viewer.selected_data().clear();
-    viewer.selected_data().set_mesh(V,F);
-    viewer.selected_data().set_face_based(true);
+    viewer.data().clear();
+    viewer.data().set_mesh(V,F);
+    viewer.data().set_face_based(true);
   };
 
   const auto &pre_draw = [&](igl::opengl::glfw::Viewer & viewer)->bool
@@ -86,9 +86,9 @@ int main(int argc, char * argv[])
 
       if(something_collapsed)
       {
-        viewer.selected_data().clear();
-        viewer.selected_data().set_mesh(V,F);
-        viewer.selected_data().set_face_based(true);
+        viewer.data().clear();
+        viewer.data().set_mesh(V,F);
+        viewer.data().set_face_based(true);
       }
     }
     return false;

+ 4 - 4
tutorial/704_SignedDistance/main.cpp

@@ -101,9 +101,9 @@ void update_visualization(igl::opengl::glfw::Viewer & viewer)
   {
     append_mesh(V,F,RowVector3d(0.8,0.8,0.8));
   }
-  viewer.selected_data().clear();
-  viewer.selected_data().set_mesh(V_vis,F_vis);
-  viewer.selected_data().set_colors(C_vis);
+  viewer.data().clear();
+  viewer.data().set_mesh(V_vis,F_vis);
+  viewer.data().set_colors(C_vis);
   viewer.core.lighting_factor = overlay;
 }
 
@@ -164,6 +164,6 @@ int main(int argc, char *argv[])
   igl::opengl::glfw::Viewer viewer;
   update_visualization(viewer);
   viewer.callback_key_down = &key_down;
-  viewer.selected_data().show_lines = false;
+  viewer.data().show_lines = false;
   viewer.launch();
 }

+ 8 - 8
tutorial/705_MarchingCubes/main.cpp

@@ -64,7 +64,7 @@ int main(int argc, char * argv[])
 '3'  Show marching cubes contour of indicator function.
 )";
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(SV,SF);
+  viewer.data().set_mesh(SV,SF);
   viewer.callback_key_down =
     [&](igl::opengl::glfw::Viewer & viewer, unsigned char key, int mod)->bool
     {
@@ -73,19 +73,19 @@ int main(int argc, char * argv[])
         default:
           return false;
         case '1':
-          viewer.selected_data().clear();
-          viewer.selected_data().set_mesh(V,F);
+          viewer.data().clear();
+          viewer.data().set_mesh(V,F);
           break;
         case '2':
-          viewer.selected_data().clear();
-          viewer.selected_data().set_mesh(SV,SF);
+          viewer.data().clear();
+          viewer.data().set_mesh(SV,SF);
           break;
         case '3':
-          viewer.selected_data().clear();
-          viewer.selected_data().set_mesh(BV,BF);
+          viewer.data().clear();
+          viewer.data().set_mesh(BV,BF);
           break;
       }
-      viewer.selected_data().set_face_based(true);
+      viewer.data().set_face_based(true);
       return true;
     };
   viewer.launch();

+ 6 - 6
tutorial/706_FacetOrientation/main.cpp

@@ -44,7 +44,7 @@ S,s      Scramble colors
       HSV.rightCols(2).setConstant(1.0);
       igl::hsv_to_rgb(HSV,RGBcolors[pass]);
     }
-    viewer.selected_data().set_colors(RGBcolors[facetwise]);
+    viewer.data().set_colors(RGBcolors[facetwise]);
   };
 
   viewer.callback_key_pressed = 
@@ -73,9 +73,9 @@ S,s      Scramble colors
       break;
     }
     }
-    viewer.selected_data().clear();
-    viewer.selected_data().set_mesh(V,is_showing_reoriented?FF[facetwise]:F);
-    viewer.selected_data().set_colors(RGBcolors[facetwise]);
+    viewer.data().clear();
+    viewer.data().set_mesh(V,is_showing_reoriented?FF[facetwise]:F);
+    viewer.data().set_colors(RGBcolors[facetwise]);
     return true;
   };
 
@@ -100,8 +100,8 @@ S,s      Scramble colors
     }
   }
 
-  viewer.selected_data().set_mesh(V,is_showing_reoriented?FF[facetwise]:F);
-  viewer.selected_data().set_face_based(true);
+  viewer.data().set_mesh(V,is_showing_reoriented?FF[facetwise]:F);
+  viewer.data().set_face_based(true);
   scramble_colors();
   viewer.launch();
 }

+ 9 - 9
tutorial/707_SweptVolume/main.cpp

@@ -31,8 +31,8 @@ int main(int argc, char * argv[])
 [space]  Toggle between transforming original mesh and swept volume
 )";
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(V,F);
-  viewer.selected_data().set_face_based(true);
+  viewer.data().set_mesh(V,F);
+  viewer.data().set_face_based(true);
   viewer.core.is_animating = !show_swept_volume;
   const int grid_size = 50;
   const int time_steps = 200;
@@ -51,8 +51,8 @@ int main(int argc, char * argv[])
         VT = V*T.matrix().block(0,0,3,3).transpose();
         Eigen::RowVector3d trans = T.matrix().block(0,3,3,1).transpose();
         VT = ( VT.rowwise() + trans).eval();
-        viewer.selected_data().set_vertices(VT);
-        viewer.selected_data().compute_normals();
+        viewer.data().set_vertices(VT);
+        viewer.data().compute_normals();
       }
       return false;
     };
@@ -65,21 +65,21 @@ int main(int argc, char * argv[])
           return false;
         case ' ':
           show_swept_volume = !show_swept_volume;
-          viewer.selected_data().clear();
+          viewer.data().clear();
           if(show_swept_volume)
           {
-            viewer.selected_data().set_mesh(SV,SF);
+            viewer.data().set_mesh(SV,SF);
             Eigen::Vector3d ambient = Eigen::Vector3d(SILVER_AMBIENT[0], SILVER_AMBIENT[1], SILVER_AMBIENT[2]);
             Eigen::Vector3d diffuse = Eigen::Vector3d(SILVER_DIFFUSE[0], SILVER_DIFFUSE[1], SILVER_DIFFUSE[2]);
             Eigen::Vector3d specular = Eigen::Vector3d(SILVER_SPECULAR[0], SILVER_SPECULAR[1], SILVER_SPECULAR[2]);
-            viewer.selected_data().uniform_colors(ambient,diffuse,specular);
+            viewer.data().uniform_colors(ambient,diffuse,specular);
           }
           else
           {
-            viewer.selected_data().set_mesh(V,F);
+            viewer.data().set_mesh(V,F);
           }
           viewer.core.is_animating = !show_swept_volume;
-          viewer.selected_data().set_face_based(true);
+          viewer.data().set_face_based(true);
           break;
       }
       return true;

+ 4 - 4
tutorial/708_Picking/main.cpp

@@ -29,7 +29,7 @@ int main(int argc, char *argv[])
     {
       // paint hit red
       C.row(fid)<<1,0,0;
-      viewer.selected_data().set_colors(C);
+      viewer.data().set_colors(C);
       return true;
     }
     return false;
@@ -39,8 +39,8 @@ int main(int argc, char *argv[])
 
 )";
   // Show mesh
-  viewer.selected_data().set_mesh(V, F);
-  viewer.selected_data().set_colors(C);
-  viewer.selected_data().show_lines = false;
+  viewer.data().set_mesh(V, F);
+  viewer.data().set_colors(C);
+  viewer.data().show_lines = false;
   viewer.launch();
 }

+ 6 - 6
tutorial/709_VectorFieldVisualizer/main.cpp

@@ -81,7 +81,7 @@ bool pre_draw(igl::opengl::glfw::Viewer &viewer)
     value = value / 0.5;
     igl::parula(value, color[0], color[1], color[2]);
 
-    viewer.selected_data().add_edges(sl_state.start_point, sl_state.end_point, color);
+    viewer.data().add_edges(sl_state.start_point, sl_state.end_point, color);
 
     anim_t += anim_t_dir;
 
@@ -129,19 +129,19 @@ int main(int argc, char *argv[])
 
     // Viewer Settings
     igl::opengl::glfw::Viewer viewer;
-    viewer.selected_data().set_mesh(V, F);
+    viewer.data().set_mesh(V, F);
     viewer.callback_pre_draw = &pre_draw;
     viewer.callback_key_down = &key_down;
 
-    viewer.selected_data().show_lines = false;
+    viewer.data().show_lines = false;
 
     viewer.core.is_animating = false;
     viewer.core.animation_max_fps = 30.;
 
     // Paint mesh grayish
     Eigen::MatrixXd C;
-    C.setConstant(viewer.selected_data().V.rows(), 3, .9);
-    viewer.selected_data().set_colors(C);
+    C.setConstant(viewer.data().V.rows(), 3, .9);
+    viewer.data().set_colors(C);
 
 
     // Draw vector field on sample points
@@ -151,7 +151,7 @@ int main(int argc, char *argv[])
     Eigen::MatrixXd v = sl_state0.end_point - sl_state0.start_point;
     v.rowwise().normalize();
 
-    viewer.selected_data().add_edges(sl_state0.start_point,
+    viewer.data().add_edges(sl_state0.start_point,
                           sl_state0.start_point + 0.059 * v,
                           Eigen::RowVector3d::Constant(1.0f));
 

+ 14 - 14
tutorial/710_SLIM/main.cpp

@@ -100,16 +100,16 @@ void param_2d_demo_iter(igl::opengl::glfw::Viewer& viewer) {
     slim_precompute(V,F,uv_init,sData, igl::SLIMData::SYMMETRIC_DIRICHLET, b,bc,0);
 
     uv_scale_param = 15 * (1./sqrt(sData.mesh_area));
-    viewer.selected_data().set_mesh(V, F);
+    viewer.data().set_mesh(V, F);
     viewer.core.align_camera_center(V,F);
-    viewer.selected_data().set_uv(sData.V_o*uv_scale_param);
-    viewer.selected_data().compute_normals();
-    viewer.selected_data().show_texture = true;
+    viewer.data().set_uv(sData.V_o*uv_scale_param);
+    viewer.data().compute_normals();
+    viewer.data().show_texture = true;
 
     first_iter = false;
   } else {
     slim_solve(sData,1); // 1 iter
-    viewer.selected_data().set_uv(sData.V_o*uv_scale_param);
+    viewer.data().set_uv(sData.V_o*uv_scale_param);
     cout << "time = " << timer.getElapsedTime() << endl;
   }
 }
@@ -128,16 +128,16 @@ void soft_const_demo_iter(igl::opengl::glfw::Viewer& viewer) {
     double soft_const_p = 1e5;
     slim_precompute(V,F,V_0,sData,igl::SLIMData::SYMMETRIC_DIRICHLET,b,bc,soft_const_p);
 
-    viewer.selected_data().set_mesh(V, F);
+    viewer.data().set_mesh(V, F);
     viewer.core.align_camera_center(V,F);
-    viewer.selected_data().compute_normals();
-    viewer.selected_data().show_lines = true;
+    viewer.data().compute_normals();
+    viewer.data().show_lines = true;
 
     first_iter = false;
 
   } else {
     slim_solve(sData,1); // 1 iter
-    viewer.selected_data().set_mesh(sData.V_o, F);
+    viewer.data().set_mesh(sData.V_o, F);
   }
 }
 
@@ -195,10 +195,10 @@ void display_3d_mesh(igl::opengl::glfw::Viewer& viewer) {
     F_temp.row(i*4+2) << (i*4)+3, (i*4)+2, (i*4)+0;
     F_temp.row(i*4+3) << (i*4)+1, (i*4)+2, (i*4)+3;
   }
-  viewer.selected_data().set_mesh(V_temp,F_temp);
+  viewer.data().set_mesh(V_temp,F_temp);
   viewer.core.align_camera_center(V_temp,F_temp);
-  viewer.selected_data().set_face_based(true);
-  viewer.selected_data().show_lines = true;
+  viewer.data().set_face_based(true);
+  viewer.data().show_lines = true;
 }
 
 int main(int argc, char *argv[]) {
@@ -236,10 +236,10 @@ int main(int argc, char *argv[]) {
   viewer.callback_key_down = &key_down;
 
   // Disable wireframe
-  viewer.selected_data().show_lines = false;
+  viewer.data().show_lines = false;
 
   // Draw checkerboard texture
-  viewer.selected_data().show_texture = false;
+  viewer.data().show_texture = false;
 
   // First iteration
   key_down(viewer, ' ', 0);

+ 5 - 5
tutorial/711_Subdivision/main.cpp

@@ -26,8 +26,8 @@ int main(int argc, char * argv[])
 4  Apply False barycentric subdivision
 )";
   igl::opengl::glfw::Viewer viewer;
-  viewer.selected_data().set_mesh(V,F);
-  viewer.selected_data().set_face_based(true);
+  viewer.data().set_mesh(V,F);
+  viewer.data().set_face_based(true);
 
   viewer.callback_key_down =
     [&](igl::opengl::glfw::Viewer & viewer, unsigned char key, int mod)->bool
@@ -59,9 +59,9 @@ int main(int argc, char * argv[])
           break;
         }
       }
-      viewer.selected_data().clear();
-      viewer.selected_data().set_mesh(V,F);
-      viewer.selected_data().set_face_based(true);
+      viewer.data().clear();
+      viewer.data().set_mesh(V,F);
+      viewer.data().set_face_based(true);
       return true;
     };
   viewer.launch();

+ 4 - 4
tutorial/712_DataSmoothing/main.cpp

@@ -65,8 +65,8 @@ int main(int argc, char * argv[])
 
     //Viewer that shows all functions: zexact, znoisy, zl, zh
     igl::opengl::glfw::Viewer viewer;
-    viewer.selected_data().set_mesh(V,F);
-    viewer.selected_data().show_lines = false;
+    viewer.data().set_mesh(V,F);
+    viewer.data().show_lines = false;
     viewer.callback_key_down =
       [&](igl::opengl::glfw::Viewer & viewer, unsigned char key, int mod)->bool
       {
@@ -92,10 +92,10 @@ int main(int argc, char * argv[])
         Eigen::MatrixXi isoE;
         if(key!='2')
             igl::isolines(V, F, *z, 30, isoV, isoE);
-        viewer.selected_data().set_edges(isoV,isoE,Eigen::RowVector3d(0,0,0));
+        viewer.data().set_edges(isoV,isoE,Eigen::RowVector3d(0,0,0));
         Eigen::MatrixXd colors;
         igl::jet(*z, true, colors);
-        viewer.selected_data().set_colors(colors);
+        viewer.data().set_colors(colors);
         return true;
     };
     std::cout << R"(Usage:

+ 1 - 1
tutorial/tutorial.html.REMOVED.git-id

@@ -1 +1 @@
-c26ca8ea10bc25883e467ea7d6167c558a81ec61
+1dcb725e3bc41af89154fbadfd4b1d57e254c3a2

+ 1 - 1
tutorial/tutorial.md.REMOVED.git-id

@@ -1 +1 @@
-d9d6fe9a1512af6dd8ce6ed08c3d13ac32808fca
+96b0c1c12294ce44a5b90bad2868b33da79766a2