Ver código fonte

tutorial after ViewerCore/ViewerData refactor

Former-commit-id: 48b695cf1854eb47a6c9b929a946d77c02ce19bf
Alec Jacobson 7 anos atrás
pai
commit
f5e35b9099
35 arquivos alterados com 125 adições e 74 exclusões
  1. 37 13
      include/igl/opengl/glfw/Viewer.cpp
  2. 28 2
      include/igl/opengl/glfw/Viewer.h
  3. 1 1
      tutorial/201_Normals/main.cpp
  4. 1 1
      tutorial/203_CurvatureDirections/main.cpp
  5. 1 1
      tutorial/204_Gradient/main.cpp
  6. 1 1
      tutorial/303_LaplaceEquation/main.cpp
  7. 1 1
      tutorial/304_LinearEqualityConstraints/main.cpp
  8. 1 1
      tutorial/305_QuadraticProgramming/main.cpp
  9. 1 1
      tutorial/306_EigenDecomposition/main.cpp
  10. 1 1
      tutorial/401_BiharmonicDeformation/main.cpp
  11. 1 1
      tutorial/402_PolyharmonicDeformation/main.cpp
  12. 3 3
      tutorial/403_BoundedBiharmonicWeights/main.cpp
  13. 3 3
      tutorial/404_DualQuaternionSkinning/main.cpp
  14. 1 1
      tutorial/406_FastAutomaticSkinningTransformations/main.cpp
  15. 1 1
      tutorial/407_BiharmonicCoordinates/main.cpp
  16. 2 2
      tutorial/501_HarmonicParam/main.cpp
  17. 2 2
      tutorial/502_LSCMParam/main.cpp
  18. 2 2
      tutorial/503_ARAPParam/main.cpp
  19. 1 1
      tutorial/504_NRosyDesign/main.cpp
  20. 5 5
      tutorial/505_MIQ/main.cpp
  21. 4 4
      tutorial/506_FrameField/main.cpp
  22. 2 2
      tutorial/507_PolyVectorField/main.cpp
  23. 3 3
      tutorial/508_ConjugateField/main.cpp
  24. 2 2
      tutorial/509_Planarization/main.cpp
  25. 4 4
      tutorial/510_Integrable/main.cpp
  26. 1 1
      tutorial/511_PolyVectorFieldGeneral/main.cpp
  27. 1 1
      tutorial/606_AmbientOcclusion/main.cpp
  28. 3 2
      tutorial/607_ScreenCapture/main.cpp
  29. 1 1
      tutorial/608_LIM/main.cpp
  30. 1 1
      tutorial/609_Boolean/main.cpp
  31. 1 1
      tutorial/704_SignedDistance/main.cpp
  32. 1 1
      tutorial/708_Picking/main.cpp
  33. 1 1
      tutorial/709_VectorFieldVisualizer/main.cpp
  34. 5 5
      tutorial/710_SLIM/main.cpp
  35. 1 1
      tutorial/712_DataSmoothing/main.cpp

+ 37 - 13
include/igl/opengl/glfw/Viewer.cpp

@@ -326,7 +326,7 @@ namespace glfw
 
 
   IGL_INLINE void Viewer::launch_shut()
   IGL_INLINE void Viewer::launch_shut()
   {
   {
-    for(auto & opengl : opengl_list)
+    for(auto & opengl : opengl_state_list)
     {
     {
       opengl.free();
       opengl.free();
     }
     }
@@ -444,7 +444,7 @@ namespace glfw
 
 
   IGL_INLINE Viewer::Viewer():
   IGL_INLINE Viewer::Viewer():
     data_list(1),
     data_list(1),
-    opengl_list(1),
+    opengl_state_list(1),
     selected_data_index(0)
     selected_data_index(0)
   {
   {
     window = nullptr;
     window = nullptr;
@@ -526,9 +526,7 @@ namespace glfw
     // Create new data slot and set to selected
     // Create new data slot and set to selected
     if(!(selected_data().F.rows() == 0  && selected_data().V.rows() == 0))
     if(!(selected_data().F.rows() == 0  && selected_data().V.rows() == 0))
     {
     {
-      data_list.emplace_back();
-      opengl_list.emplace_back();
-      selected_data_index = data_list.size()-1;
+      append_mesh();
     }
     }
     selected_data().clear();
     selected_data().clear();
 
 
@@ -1003,11 +1001,11 @@ namespace glfw
         return;
         return;
       }
       }
     }
     }
-    assert(data_list.size() == opengl_list.size());
+    assert(data_list.size() == opengl_state_list.size());
     for(int i = 0;i<data_list.size();i++)
     for(int i = 0;i<data_list.size();i++)
     {
     {
-      opengl_list[i].init();
-      core.draw(data_list[i],opengl_list[i]);
+      opengl_state_list[i].init();
+      core.draw(data_list[i],opengl_state_list[i]);
     }
     }
     if (callback_post_draw)
     if (callback_post_draw)
     {
     {
@@ -1082,15 +1080,41 @@ namespace glfw
     return data_list[selected_data_index];
     return data_list[selected_data_index];
   }
   }
 
 
+  IGL_INLINE void Viewer::append_mesh()
+  {
+    assert(data_list.size() == opengl_state_list.size());
+    assert(data_list.size() >= 1);
+
+    data_list.emplace_back();
+    opengl_state_list.emplace_back();
+    selected_data_index = data_list.size()-1;
+  }
+  IGL_INLINE bool Viewer::erase_mesh(const size_t index)
+  {
+    assert(data_list.size() == opengl_state_list.size());
+    assert(data_list.size() >= 1);
+    if(data_list.size() == 1)
+    {
+      // Cannot remove last mesh
+      return false;
+    }
+    data_list.erase(data_list.begin()                 + index);
+    opengl_state_list.erase(opengl_state_list.begin() + index);
+    if(selected_data_index >= index)
+    {
+      selected_data_index--;
+    }
+    return true;
+  }
 
 
-  IGL_INLINE State& Viewer::selected_opengl()
+  IGL_INLINE State& Viewer::selected_opengl_state()
   {
   {
-    assert(!opengl_list.empty() && "opengl_list should never be empty");
-    assert(opengl_list.size() == data_list.size());
+    assert(!opengl_state_list.empty() && "opengl_state_list should never be empty");
+    assert(opengl_state_list.size() == data_list.size());
     assert(
     assert(
-      (selected_data_index >= 0 && selected_data_index < opengl_list.size()) && 
+      (selected_data_index >= 0 && selected_data_index < opengl_state_list.size()) && 
       "selected_data_index should be in bounds");
       "selected_data_index should be in bounds");
-    return opengl_list[selected_data_index];
+    return opengl_state_list[selected_data_index];
   }
   }
 } // end namespace
 } // end namespace
 } // end namespace
 } // end namespace

+ 28 - 2
include/igl/opengl/glfw/Viewer.h

@@ -85,14 +85,40 @@ namespace glfw
     IGL_INLINE void open_dialog_save_mesh();
     IGL_INLINE void open_dialog_save_mesh();
     IGL_INLINE ViewerData& selected_data();
     IGL_INLINE ViewerData& selected_data();
     //IGL_INLINE const ViewerData& const_selected_data() const;
     //IGL_INLINE const ViewerData& const_selected_data() const;
-    IGL_INLINE State& selected_opengl();
+    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.
+    //
+    // Returns number of meshes (always >= 1)
+    // 
+    // Side Effects:
+    //   selected_data_index is set this newly created, last entry (i.e.,
+    //   #meshes-1)
+    IGL_INLINE void append_mesh();
+    // Erase a mesh (i.e., its corresponding data and state entires in data_list
+    // and opengl_state_list)
+    //
+    // Inputs:
+    //   index  index of mesh to erase
+    // Returns whether erasure was successful <=> cannot erase last mesh
+    // 
+    // Side Effects:
+    //   If selected_data_index is greater than or equal to index then it is
+    //   decremented
+    // Example:
+    //   // 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();
+    //
+    IGL_INLINE bool erase_mesh(const size_t index);
   private:
   private:
     // Alec: I call this data_list instead of just data to avoid confusion with
     // Alec: I call this data_list instead of just data to avoid confusion with
     // old "data" variable.
     // old "data" variable.
     // Stores all the data that should be visualized
     // Stores all the data that should be visualized
     std::vector<ViewerData> data_list;
     std::vector<ViewerData> data_list;
     // Stores the vbos indices and opengl related settings
     // Stores the vbos indices and opengl related settings
-    std::vector<State> opengl_list;
+    std::vector<State> opengl_state_list;
   public:
   public:
     size_t selected_data_index;
     size_t selected_data_index;
     GLFWwindow* window;
     GLFWwindow* window;

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

@@ -50,7 +50,7 @@ int main(int argc, char *argv[])
   // Plot the mesh
   // Plot the mesh
   igl::opengl::glfw::Viewer viewer;
   igl::opengl::glfw::Viewer viewer;
   viewer.callback_key_down = &key_down;
   viewer.callback_key_down = &key_down;
-  viewer.core.show_lines = false;
+  viewer.selected_data().show_lines = false;
   viewer.selected_data().set_mesh(V, F);
   viewer.selected_data().set_mesh(V, F);
   viewer.selected_data().set_normals(N_faces);
   viewer.selected_data().set_normals(N_faces);
   std::cout<<
   std::cout<<

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

@@ -63,7 +63,7 @@ int main(int argc, char *argv[])
   viewer.selected_data().add_edges(V + PD2*avg, V - PD2*avg, red);
   viewer.selected_data().add_edges(V + PD2*avg, V - PD2*avg, red);
 
 
   // Hide wireframe
   // Hide wireframe
-  viewer.core.show_lines = false;
+  viewer.selected_data().show_lines = false;
 
 
   viewer.launch();
   viewer.launch();
 }
 }

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

@@ -51,7 +51,7 @@ int main(int argc, char *argv[])
   viewer.selected_data().add_edges(BC,BC+max_size*GU, black);
   viewer.selected_data().add_edges(BC,BC+max_size*GU, black);
 
 
   // Hide wireframe
   // Hide wireframe
-  viewer.core.show_lines = false;
+  viewer.selected_data().show_lines = false;
 
 
   viewer.launch();
   viewer.launch();
 }
 }

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

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

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

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

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

@@ -58,7 +58,7 @@ int main(int argc, char *argv[])
   // Plot the mesh
   // Plot the mesh
   igl::opengl::glfw::Viewer viewer;
   igl::opengl::glfw::Viewer viewer;
   viewer.selected_data().set_mesh(V, F);
   viewer.selected_data().set_mesh(V, F);
-  viewer.core.show_lines = false;
+  viewer.selected_data().show_lines = false;
   viewer.callback_key_down = &key_down;
   viewer.callback_key_down = &key_down;
 
 
   // One fixed point
   // One fixed point

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

@@ -66,6 +66,6 @@ int main(int argc, char * argv[])
     }
     }
   };
   };
   viewer.callback_key_down(viewer,' ',0);
   viewer.callback_key_down(viewer,' ',0);
-  viewer.core.show_lines = false;
+  viewer.selected_data().show_lines = false;
   viewer.launch();
   viewer.launch();
 }
 }

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

@@ -111,7 +111,7 @@ int main(int argc, char *argv[])
   // Plot the mesh with pseudocolors
   // Plot the mesh with pseudocolors
   igl::opengl::glfw::Viewer viewer;
   igl::opengl::glfw::Viewer viewer;
   viewer.selected_data().set_mesh(U, F);
   viewer.selected_data().set_mesh(U, F);
-  viewer.core.show_lines = false;
+  viewer.selected_data().show_lines = false;
   viewer.selected_data().set_colors(C);
   viewer.selected_data().set_colors(C);
   viewer.core.trackball_angle = Eigen::Quaternionf(sqrt(2.0),0,sqrt(2.0),0);
   viewer.core.trackball_angle = Eigen::Quaternionf(sqrt(2.0),0,sqrt(2.0),0);
   viewer.core.trackball_angle.normalize();
   viewer.core.trackball_angle.normalize();

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

@@ -95,7 +95,7 @@ int main(int argc, char *argv[])
   // Plot the mesh with pseudocolors
   // Plot the mesh with pseudocolors
   igl::opengl::glfw::Viewer viewer;
   igl::opengl::glfw::Viewer viewer;
   viewer.selected_data().set_mesh(U, F);
   viewer.selected_data().set_mesh(U, F);
-  viewer.core.show_lines = false;
+  viewer.selected_data().show_lines = false;
   viewer.selected_data().set_colors(C);
   viewer.selected_data().set_colors(C);
   viewer.core.trackball_angle = Eigen::Quaternionf(0.81,-0.58,-0.03,-0.03);
   viewer.core.trackball_angle = Eigen::Quaternionf(0.81,-0.58,-0.03,-0.03);
   viewer.core.trackball_angle.normalize();
   viewer.core.trackball_angle.normalize();

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

@@ -164,9 +164,9 @@ int main(int argc, char *argv[])
   viewer.selected_data().set_mesh(U, F);
   viewer.selected_data().set_mesh(U, F);
   set_color(viewer);
   set_color(viewer);
   viewer.selected_data().set_edges(C,BE,sea_green);
   viewer.selected_data().set_edges(C,BE,sea_green);
-  viewer.core.show_lines = false;
-  viewer.core.show_overlay_depth = false;
-  viewer.core.line_width = 1;
+  viewer.selected_data().show_lines = false;
+  viewer.selected_data().show_overlay_depth = false;
+  viewer.selected_data().line_width = 1;
   viewer.callback_pre_draw = &pre_draw;
   viewer.callback_pre_draw = &pre_draw;
   viewer.callback_key_down = &key_down;
   viewer.callback_key_down = &key_down;
   viewer.core.is_animating = false;
   viewer.core.is_animating = false;

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

@@ -133,9 +133,9 @@ int main(int argc, char *argv[])
   igl::opengl::glfw::Viewer viewer;
   igl::opengl::glfw::Viewer viewer;
   viewer.selected_data().set_mesh(U, F);
   viewer.selected_data().set_mesh(U, F);
   viewer.selected_data().set_edges(C,BE,sea_green);
   viewer.selected_data().set_edges(C,BE,sea_green);
-  viewer.core.show_lines = false;
-  viewer.core.show_overlay_depth = false;
-  viewer.core.line_width = 1;
+  viewer.selected_data().show_lines = false;
+  viewer.selected_data().show_overlay_depth = false;
+  viewer.selected_data().line_width = 1;
   viewer.core.trackball_angle.normalize();
   viewer.core.trackball_angle.normalize();
   viewer.callback_pre_draw = &pre_draw;
   viewer.callback_pre_draw = &pre_draw;
   viewer.callback_key_down = &key_down;
   viewer.callback_key_down = &key_down;

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

@@ -207,7 +207,7 @@ int main(int argc, char *argv[])
   igl::opengl::glfw::Viewer viewer;
   igl::opengl::glfw::Viewer viewer;
   viewer.selected_data().set_mesh(U, F);
   viewer.selected_data().set_mesh(U, F);
   viewer.selected_data().add_points(igl::slice(V,b,1),sea_green);
   viewer.selected_data().add_points(igl::slice(V,b,1),sea_green);
-  viewer.core.show_lines = false;
+  viewer.selected_data().show_lines = false;
   viewer.callback_pre_draw = &pre_draw;
   viewer.callback_pre_draw = &pre_draw;
   viewer.callback_key_down = &key_down;
   viewer.callback_key_down = &key_down;
   viewer.core.is_animating = false;
   viewer.core.is_animating = false;

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

@@ -156,7 +156,7 @@ int main(int argc, char * argv[])
     }
     }
     return false;
     return false;
   };
   };
-  viewer.core.show_lines = false;
+  viewer.selected_data().show_lines = false;
   viewer.core.is_animating = true;
   viewer.core.is_animating = true;
   viewer.core.animation_max_fps = 30.;
   viewer.core.animation_max_fps = 30.;
   viewer.selected_data().set_face_based(true);
   viewer.selected_data().set_face_based(true);

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

@@ -56,10 +56,10 @@ int main(int argc, char *argv[])
   viewer.callback_key_down = &key_down;
   viewer.callback_key_down = &key_down;
 
 
   // Disable wireframe
   // Disable wireframe
-  viewer.core.show_lines = false;
+  viewer.selected_data().show_lines = false;
 
 
   // Draw checkerboard texture
   // Draw checkerboard texture
-  viewer.core.show_texture = true;
+  viewer.selected_data().show_texture = true;
 
 
   // Launch the viewer
   // Launch the viewer
   viewer.launch();
   viewer.launch();

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

@@ -60,10 +60,10 @@ int main(int argc, char *argv[])
   viewer.callback_key_down = &key_down;
   viewer.callback_key_down = &key_down;
 
 
   // Disable wireframe
   // Disable wireframe
-  viewer.core.show_lines = false;
+  viewer.selected_data().show_lines = false;
 
 
   // Draw checkerboard texture
   // Draw checkerboard texture
-  viewer.core.show_texture = true;
+  viewer.selected_data().show_texture = true;
 
 
   // Launch the viewer
   // Launch the viewer
   viewer.launch();
   viewer.launch();

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

@@ -82,10 +82,10 @@ int main(int argc, char *argv[])
   viewer.callback_key_down = &key_down;
   viewer.callback_key_down = &key_down;
 
 
   // Disable wireframe
   // Disable wireframe
-  viewer.core.show_lines = false;
+  viewer.selected_data().show_lines = false;
 
 
   // Draw checkerboard texture
   // Draw checkerboard texture
-  viewer.core.show_texture = true;
+  viewer.selected_data().show_texture = true;
 
 
   // Launch the viewer
   // Launch the viewer
   viewer.launch();
   viewer.launch();

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

@@ -141,7 +141,7 @@ int main(int argc, char *argv[])
   viewer.callback_key_down = &key_down;
   viewer.callback_key_down = &key_down;
 
 
   // Disable wireframe
   // Disable wireframe
-  viewer.core.show_lines = false;
+  viewer.selected_data().show_lines = false;
 
 
   // Launch the viewer
   // Launch the viewer
   viewer.launch();
   viewer.launch();

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

@@ -91,8 +91,8 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
     return false;
     return false;
 
 
   viewer.selected_data().clear();
   viewer.selected_data().clear();
-  viewer.core.show_lines = false;
-  viewer.core.show_texture = false;
+  viewer.selected_data().show_lines = false;
+  viewer.selected_data().show_texture = false;
 
 
   if (key == '1')
   if (key == '1')
   {
   {
@@ -197,7 +197,7 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
     // Global parametrization UV
     // Global parametrization UV
     viewer.selected_data().set_mesh(UV, FUV);
     viewer.selected_data().set_mesh(UV, FUV);
     viewer.selected_data().set_uv(UV);
     viewer.selected_data().set_uv(UV);
-    viewer.core.show_lines = true;
+    viewer.selected_data().show_lines = true;
   }
   }
 
 
   if (key == '7')
   if (key == '7')
@@ -205,7 +205,7 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
     // Global parametrization in 3D
     // Global parametrization in 3D
     viewer.selected_data().set_mesh(V, F);
     viewer.selected_data().set_mesh(V, F);
     viewer.selected_data().set_uv(UV,FUV);
     viewer.selected_data().set_uv(UV,FUV);
-    viewer.core.show_texture = true;
+    viewer.selected_data().show_texture = true;
   }
   }
 
 
   if (key == '8')
   if (key == '8')
@@ -213,7 +213,7 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
     // Global parametrization in 3D with seams
     // Global parametrization in 3D with seams
     viewer.selected_data().set_mesh(V, F);
     viewer.selected_data().set_mesh(V, F);
     viewer.selected_data().set_uv(UV_seams,FUV_seams);
     viewer.selected_data().set_uv(UV_seams,FUV_seams);
-    viewer.core.show_texture = true;
+    viewer.selected_data().show_texture = true;
   }
   }
 
 
   viewer.selected_data().set_colors(Eigen::RowVector3d(1,1,1));
   viewer.selected_data().set_colors(Eigen::RowVector3d(1,1,1));

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

@@ -77,8 +77,8 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
     return false;
     return false;
 
 
   viewer.selected_data().clear();
   viewer.selected_data().clear();
-  viewer.core.show_lines = false;
-  viewer.core.show_texture = false;
+  viewer.selected_data().show_lines = false;
+  viewer.selected_data().show_texture = false;
 
 
   if (key == '1')
   if (key == '1')
   {
   {
@@ -153,7 +153,7 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
     viewer.selected_data().set_mesh(V_deformed, F);
     viewer.selected_data().set_mesh(V_deformed, F);
     viewer.selected_data().set_uv(V_uv,F_uv);
     viewer.selected_data().set_uv(V_uv,F_uv);
     viewer.selected_data().set_colors(RowVector3d(1,1,1));
     viewer.selected_data().set_colors(RowVector3d(1,1,1));
-    viewer.core.show_texture = true;
+    viewer.selected_data().show_texture = true;
   }
   }
 
 
   if (key == '6')
   if (key == '6')
@@ -162,7 +162,7 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
     viewer.selected_data().set_mesh(V, F);
     viewer.selected_data().set_mesh(V, F);
     viewer.selected_data().set_uv(V_uv,F_uv);
     viewer.selected_data().set_uv(V_uv,F_uv);
     viewer.selected_data().set_colors(RowVector3d(1,1,1));
     viewer.selected_data().set_colors(RowVector3d(1,1,1));
-    viewer.core.show_texture = true;
+    viewer.selected_data().show_texture = true;
   }
   }
 
 
   // Replace the standard texture with an integer shift invariant texture
   // Replace the standard texture with an integer shift invariant texture

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

@@ -147,8 +147,8 @@ int main(int argc, char *argv[])
   igl::opengl::glfw::Viewer viewer;
   igl::opengl::glfw::Viewer viewer;
   viewer.selected_data().set_mesh(V, F);
   viewer.selected_data().set_mesh(V, F);
   viewer.callback_key_down = &key_down;
   viewer.callback_key_down = &key_down;
-  viewer.core.show_lines = false;
-  viewer.core.line_width = 10000;// this does not work, why?
+  viewer.selected_data().show_lines = false;
+  viewer.selected_data().line_width = 10000;// this does not work, why?
   key_down(viewer,'2',0);
   key_down(viewer,'2',0);
 
 
 
 

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

@@ -174,9 +174,9 @@ int main(int argc, char *argv[])
   csdata.evaluateConjugacy(pvU, pvV, conjugacy_c);
   csdata.evaluateConjugacy(pvU, pvV, conjugacy_c);
   // Launch the viewer
   // Launch the viewer
   igl::opengl::glfw::Viewer viewer;
   igl::opengl::glfw::Viewer viewer;
-  viewer.core.invert_normals = true;
-  viewer.core.show_lines = false;
-  viewer.core.show_texture = false;
+  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.selected_data().set_mesh(V, F);
   viewer.callback_key_down = &key_down;
   viewer.callback_key_down = &key_down;
   key_down(viewer,'1',0);
   key_down(viewer,'1',0);

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

@@ -109,8 +109,8 @@ int main(int argc, char *argv[])
   // Launch the viewer
   // Launch the viewer
   igl::opengl::glfw::Viewer viewer;
   igl::opengl::glfw::Viewer viewer;
   key_down(viewer,'2',0);
   key_down(viewer,'2',0);
-  viewer.core.invert_normals = true;
-  viewer.core.show_lines = false;
+  viewer.selected_data().invert_normals = true;
+  viewer.selected_data().show_lines = false;
   viewer.callback_key_down = &key_down;
   viewer.callback_key_down = &key_down;
   viewer.launch();
   viewer.launch();
 }
 }

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

@@ -319,7 +319,7 @@ void update_display(igl::opengl::glfw::Viewer& viewer)
   viewer.selected_data().clear();
   viewer.selected_data().clear();
   viewer.selected_data().lines.resize(0,9);
   viewer.selected_data().lines.resize(0,9);
   viewer.selected_data().points.resize(0,6);
   viewer.selected_data().points.resize(0,6);
-  viewer.core.show_texture = false;
+  viewer.selected_data().show_texture = false;
 
 
   if (display_mode == 1)
   if (display_mode == 1)
   {
   {
@@ -442,7 +442,7 @@ void update_display(igl::opengl::glfw::Viewer& viewer)
     viewer.selected_data().set_colors(C);
     viewer.selected_data().set_colors(C);
     viewer.selected_data().set_uv(uv_scale*scalars_ori, Fcut_ori);
     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().set_texture(texture_R, texture_B, texture_G);
-    viewer.core.show_texture = true;
+    viewer.selected_data().show_texture = true;
 
 
     // Draw Cuts
     // Draw Cuts
     drawCuts(viewer,cuts_ori);
     drawCuts(viewer,cuts_ori);
@@ -461,7 +461,7 @@ void update_display(igl::opengl::glfw::Viewer& viewer)
     viewer.selected_data().set_colors(C);
     viewer.selected_data().set_colors(C);
     viewer.selected_data().set_uv(uv_scale*scalars, Fcut);
     viewer.selected_data().set_uv(uv_scale*scalars, Fcut);
     viewer.selected_data().set_texture(texture_R, texture_B, texture_G);
     viewer.selected_data().set_texture(texture_R, texture_B, texture_G);
-    viewer.core.show_texture = true;
+    viewer.selected_data().show_texture = true;
 
 
     // Draw Cuts
     // Draw Cuts
     drawCuts(viewer,cuts);
     drawCuts(viewer,cuts);
@@ -709,7 +709,7 @@ int main(int argc, char *argv[])
 
 
   igl::opengl::glfw::Viewer viewer;
   igl::opengl::glfw::Viewer viewer;
   viewer.callback_key_down = &key_down;
   viewer.callback_key_down = &key_down;
-  viewer.core.show_lines = false;
+  viewer.selected_data().show_lines = false;
   key_down(viewer,'2',0);
   key_down(viewer,'2',0);
 
 
   // Replace the standard texture with an integer shift invariant texture
   // Replace the standard texture with an integer shift invariant texture

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

@@ -175,7 +175,7 @@ int main(int argc, char *argv[])
   igl::opengl::glfw::Viewer viewer;
   igl::opengl::glfw::Viewer viewer;
   viewer.selected_data().set_mesh(V, F);
   viewer.selected_data().set_mesh(V, F);
   viewer.callback_key_down = &key_down;
   viewer.callback_key_down = &key_down;
-  viewer.core.show_lines = false;
+  viewer.selected_data().show_lines = false;
   key_down(viewer,'3',0);
   key_down(viewer,'3',0);
   std::cerr << " *** Press keys 1-9 to select number of vectors per point. ***" << std::endl;
   std::cerr << " *** Press keys 1-9 to select number of vectors per point. ***" << std::endl;
   
   

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

@@ -73,7 +73,7 @@ int main(int argc, char *argv[])
   viewer.selected_data().set_mesh(V, F);
   viewer.selected_data().set_mesh(V, F);
   viewer.callback_key_down = &key_down;
   viewer.callback_key_down = &key_down;
   key_down(viewer,'2',0);
   key_down(viewer,'2',0);
-  viewer.core.show_lines = false;
+  viewer.selected_data().show_lines = false;
   viewer.core.lighting_factor = 0.0f;
   viewer.core.lighting_factor = 0.0f;
   viewer.launch();
   viewer.launch();
 }
 }

+ 3 - 2
tutorial/607_ScreenCapture/main.cpp

@@ -17,7 +17,8 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
     Eigen::Matrix<unsigned char,Eigen::Dynamic,Eigen::Dynamic> A(1280,800);
     Eigen::Matrix<unsigned char,Eigen::Dynamic,Eigen::Dynamic> A(1280,800);
 
 
     // Draw the scene in the buffers
     // Draw the scene in the buffers
-    viewer.core.draw_buffer(viewer.selected_data(),viewer.selected_opengl(),false,R,G,B,A);
+    viewer.core.draw_buffer(
+      viewer.selected_data(),viewer.selected_opengl_state(),false,R,G,B,A);
 
 
     // Save it to a PNG
     // Save it to a PNG
     igl::png::writePNG(R,G,B,A,"out.png");
     igl::png::writePNG(R,G,B,A,"out.png");
@@ -53,7 +54,7 @@ bool key_down(igl::opengl::glfw::Viewer& viewer, unsigned char key, int modifier
     viewer.selected_data().set_mesh(V,F);
     viewer.selected_data().set_mesh(V,F);
     viewer.selected_data().set_uv(UV);
     viewer.selected_data().set_uv(UV);
     viewer.core.align_camera_center(V);
     viewer.core.align_camera_center(V);
-    viewer.core.show_texture = true;
+    viewer.selected_data().show_texture = true;
 
 
     // Use the image as a texture
     // Use the image as a texture
     viewer.selected_data().set_texture(R,G,B);
     viewer.selected_data().set_texture(R,G,B);

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

@@ -109,7 +109,7 @@ int main(int argc, char *argv[])
   igl::opengl::glfw::Viewer viewer;
   igl::opengl::glfw::Viewer viewer;
   viewer.callback_key_down = &key_down;
   viewer.callback_key_down = &key_down;
   viewer.selected_data().set_mesh(V1, F);
   viewer.selected_data().set_mesh(V1, F);
-  viewer.core.show_lines = true;
+  viewer.selected_data().show_lines = true;
   viewer.core.lighting_factor = 0.0f;
   viewer.core.lighting_factor = 0.0f;
   viewer.launch();
   viewer.launch();
 }
 }

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

@@ -83,7 +83,7 @@ int main(int argc, char *argv[])
   // Initialize
   // Initialize
   update(viewer);
   update(viewer);
 
 
-  viewer.core.show_lines = true;
+  viewer.selected_data().show_lines = true;
   viewer.callback_key_down = &key_down;
   viewer.callback_key_down = &key_down;
   viewer.core.camera_dnear = 3.9;
   viewer.core.camera_dnear = 3.9;
   cout<<
   cout<<

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

@@ -154,6 +154,6 @@ int main(int argc, char *argv[])
   igl::opengl::glfw::Viewer viewer;
   igl::opengl::glfw::Viewer viewer;
   update_visualization(viewer);
   update_visualization(viewer);
   viewer.callback_key_down = &key_down;
   viewer.callback_key_down = &key_down;
-  viewer.core.show_lines = false;
+  viewer.selected_data().show_lines = false;
   viewer.launch();
   viewer.launch();
 }
 }

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

@@ -41,6 +41,6 @@ int main(int argc, char *argv[])
   // Show mesh
   // Show mesh
   viewer.selected_data().set_mesh(V, F);
   viewer.selected_data().set_mesh(V, F);
   viewer.selected_data().set_colors(C);
   viewer.selected_data().set_colors(C);
-  viewer.core.show_lines = false;
+  viewer.selected_data().show_lines = false;
   viewer.launch();
   viewer.launch();
 }
 }

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

@@ -133,7 +133,7 @@ int main(int argc, char *argv[])
     viewer.callback_pre_draw = &pre_draw;
     viewer.callback_pre_draw = &pre_draw;
     viewer.callback_key_down = &key_down;
     viewer.callback_key_down = &key_down;
 
 
-    viewer.core.show_lines = false;
+    viewer.selected_data().show_lines = false;
 
 
     viewer.core.is_animating = false;
     viewer.core.is_animating = false;
     viewer.core.animation_max_fps = 30.;
     viewer.core.animation_max_fps = 30.;

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

@@ -104,7 +104,7 @@ void param_2d_demo_iter(igl::opengl::glfw::Viewer& viewer) {
     viewer.core.align_camera_center(V,F);
     viewer.core.align_camera_center(V,F);
     viewer.selected_data().set_uv(sData.V_o*uv_scale_param);
     viewer.selected_data().set_uv(sData.V_o*uv_scale_param);
     viewer.selected_data().compute_normals();
     viewer.selected_data().compute_normals();
-    viewer.core.show_texture = true;
+    viewer.selected_data().show_texture = true;
 
 
     first_iter = false;
     first_iter = false;
   } else {
   } else {
@@ -131,7 +131,7 @@ void soft_const_demo_iter(igl::opengl::glfw::Viewer& viewer) {
     viewer.selected_data().set_mesh(V, F);
     viewer.selected_data().set_mesh(V, F);
     viewer.core.align_camera_center(V,F);
     viewer.core.align_camera_center(V,F);
     viewer.selected_data().compute_normals();
     viewer.selected_data().compute_normals();
-    viewer.core.show_lines = true;
+    viewer.selected_data().show_lines = true;
 
 
     first_iter = false;
     first_iter = false;
 
 
@@ -198,7 +198,7 @@ void display_3d_mesh(igl::opengl::glfw::Viewer& viewer) {
   viewer.selected_data().set_mesh(V_temp,F_temp);
   viewer.selected_data().set_mesh(V_temp,F_temp);
   viewer.core.align_camera_center(V_temp,F_temp);
   viewer.core.align_camera_center(V_temp,F_temp);
   viewer.selected_data().set_face_based(true);
   viewer.selected_data().set_face_based(true);
-  viewer.core.show_lines = true;
+  viewer.selected_data().show_lines = true;
 }
 }
 
 
 int main(int argc, char *argv[]) {
 int main(int argc, char *argv[]) {
@@ -236,10 +236,10 @@ int main(int argc, char *argv[]) {
   viewer.callback_key_down = &key_down;
   viewer.callback_key_down = &key_down;
 
 
   // Disable wireframe
   // Disable wireframe
-  viewer.core.show_lines = false;
+  viewer.selected_data().show_lines = false;
 
 
   // Draw checkerboard texture
   // Draw checkerboard texture
-  viewer.core.show_texture = false;
+  viewer.selected_data().show_texture = false;
 
 
   // First iteration
   // First iteration
   key_down(viewer, ' ', 0);
   key_down(viewer, ' ', 0);

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

@@ -66,7 +66,7 @@ int main(int argc, char * argv[])
     //Viewer that shows all functions: zexact, znoisy, zl, zh
     //Viewer that shows all functions: zexact, znoisy, zl, zh
     igl::opengl::glfw::Viewer viewer;
     igl::opengl::glfw::Viewer viewer;
     viewer.selected_data().set_mesh(V,F);
     viewer.selected_data().set_mesh(V,F);
-    viewer.core.show_lines = false;
+    viewer.selected_data().show_lines = false;
     viewer.callback_key_down =
     viewer.callback_key_down =
       [&](igl::opengl::glfw::Viewer & viewer, unsigned char key, int mod)->bool
       [&](igl::opengl::glfw::Viewer & viewer, unsigned char key, int mod)->bool
       {
       {