瀏覽代碼

Merge commit 'ffd466ed83d0f17b237dacd8726b2e5b72a95391 [formerly ba8e392b3d5356a5567a1aa8beb351c1fdab8caf]'

Former-commit-id: cba6c2a4179f05e3cfbdd7adbe76045116c17617
Daniele Panozzo 10 年之前
父節點
當前提交
572c01c3ed

+ 2 - 4
include/igl/slice.cpp

@@ -8,10 +8,8 @@
 #include "slice.h"
 #include "colon.h"
 
-#include <unsupported/Eigen/SparseExtra>
-#include <Eigen/Sparse>
 #include <vector>
-#include <complex>
+#include <unsupported/Eigen/SparseExtra>
 
 template <typename T>
 IGL_INLINE void igl::slice(
@@ -82,7 +80,7 @@ IGL_INLINE void igl::slice(
   // handled here (although it's not clear if there is a performance gain when
   // the #removals >> #remains). If this is sufficiently faster than the
   // correct code above, one could test whether all entries in R and C are
-  // unique and apply the permutation version if appropriate.
+  // unique and apply the permutation version if appropriate. 
   //
 
   int xm = X.rows();

+ 8 - 2
include/igl/viewer/TextRenderer.cpp

@@ -8,13 +8,18 @@
 #include "TextRenderer.h"
 #include "TextRenderer_fonts.h"
 #include <igl/project.h>
+
+#include <nanogui/opengl.h>
 #include <nanovg.h>
+
+#include <Eigen/Dense>
+
 #define NANOVG_GL3
 #include <nanovg_gl.h>
 
 using namespace std;
 
-  IGL_INLINE igl::viewer::TextRenderer::TextRenderer() { }
+  IGL_INLINE igl::viewer::TextRenderer::TextRenderer(): ctx(nullptr) {}
 
   IGL_INLINE int igl::viewer::TextRenderer::Init()
   {
@@ -32,7 +37,8 @@ using namespace std;
 
   IGL_INLINE int igl::viewer::TextRenderer::Shut()
   {
-    nvgDeleteGL3(ctx);
+    if(ctx)
+      nvgDeleteGL3(ctx);
     return 0;
   }
 

+ 21 - 21
include/igl/viewer/TextRenderer.h

@@ -8,41 +8,41 @@
 #ifndef IGL_VIEWER_TEXT_RENDERER_H
 #define IGL_VIEWER_TEXT_RENDERER_H
 
-/* This class extends the font rendering code in AntTweakBar
-   so that it can be used to render text at arbitrary 3D positions */
+#include <Eigen/Dense>
 
 #include <igl/igl_inline.h>
 #include <map>
-#include <nanogui/opengl.h>
+
+struct NVGcontext;
 
 namespace igl
 {
 namespace viewer
 {
 
-class TextRenderer
-{
-public:
-  IGL_INLINE TextRenderer();
+  class TextRenderer
+  {
+  public:
+    IGL_INLINE TextRenderer();
 
-  IGL_INLINE virtual int Init();
-  IGL_INLINE virtual int Shut();
+    IGL_INLINE virtual int Init();
+    IGL_INLINE virtual int Shut();
 
-  IGL_INLINE void BeginDraw(const Eigen::Matrix4f &view, const Eigen::Matrix4f &proj,
-    const Eigen::Vector4f &_viewport, float _object_scale);
+    IGL_INLINE void BeginDraw(const Eigen::Matrix4f &view,const Eigen::Matrix4f &proj,
+      const Eigen::Vector4f &_viewport,float _object_scale);
 
-  IGL_INLINE void EndDraw();
+    IGL_INLINE void EndDraw();
 
-  IGL_INLINE void DrawText(Eigen::Vector3d pos, Eigen::Vector3d normal, const std::string &text);
+    IGL_INLINE void DrawText(Eigen::Vector3d pos,Eigen::Vector3d normal,const std::string &text);
 
-protected:
-  std::map<std::string, void *> m_textObjects;
-  Eigen::Matrix4f view_matrix, proj_matrix;
-  Eigen::Vector4f viewport;
-  float object_scale;
-  float mPixelRatio;
-  NVGcontext *ctx;
-};
+  protected:
+    std::map<std::string,void *> m_textObjects;
+    Eigen::Matrix4f view_matrix,proj_matrix;
+    Eigen::Vector4f viewport;
+    float object_scale;
+    float mPixelRatio;
+    NVGcontext *ctx;
+  };
 
 }
 }

+ 18 - 7
include/igl/viewer/TextRenderer_fonts.h

@@ -11,17 +11,28 @@
 
 #include <stdint.h>
 
-extern uint8_t igl_entypo_ttf[];
-extern uint32_t igl_entypo_ttf_size;
+#ifndef IGL_STATIC_LIBRARY
+namespace
+{
+#endif
+  extern uint8_t igl_entypo_ttf[];
+  extern uint32_t igl_entypo_ttf_size;
+
+  extern uint8_t igl_roboto_bold_ttf[];
+  extern uint32_t igl_roboto_bold_ttf_size;
 
-extern uint8_t igl_roboto_bold_ttf[];
-extern uint32_t igl_roboto_bold_ttf_size;
+  extern uint8_t igl_roboto_regular_ttf[];
+  extern uint32_t igl_roboto_regular_ttf_size;
 
-extern uint8_t igl_roboto_regular_ttf[];
-extern uint32_t igl_roboto_regular_ttf_size;
+#ifndef IGL_STATIC_LIBRARY
+}
+#endif
 
 #ifndef IGL_STATIC_LIBRARY
-#  include "TextRenderer_fonts.cpp"
+namespace
+{
+  #include "TextRenderer_fonts.cpp"
+}
 #endif
 
 #endif

+ 0 - 2
include/igl/viewer/Viewer.cpp

@@ -63,8 +63,6 @@
 #include <igl/snap_to_canonical_view_quat.h>
 #include <igl/unproject.h>
 
-#include <igl/viewer/TextRenderer.h>
-
 #ifdef ENABLE_SERIALIZATION
 #include <igl/serialize.h>
 #endif

+ 1 - 3
include/igl/viewer/Viewer.h

@@ -32,9 +32,7 @@
 #define IGL_MOD_ALT             0x0004
 #define IGL_MOD_SUPER           0x0008
 
-namespace nanogui {
-  class FormScreen;
-}
+namespace nanogui { class FormScreen; }
 
 namespace igl
 {

+ 4 - 6
include/igl/viewer/ViewerCore.cpp

@@ -19,10 +19,9 @@
 #ifdef ENABLE_SERIALIZATION
 #include <igl/serialize.h>
 namespace igl {
-namespace viewer {
   namespace serialization {
 
-    IGL_INLINE void serialization(bool s,ViewerCore& obj,std::vector<char>& buffer)
+    IGL_INLINE void serialization(bool s,igl::viewer::ViewerCore& obj,std::vector<char>& buffer)
     {
       SERIALIZE_MEMBER(shininess);
 
@@ -72,18 +71,17 @@ namespace viewer {
       SERIALIZE_MEMBER(proj);
     }
 
-    IGL_INLINE void serialize(const ViewerCore& obj,std::vector<char>& buffer)
+    IGL_INLINE void serialize(const igl::viewer::ViewerCore& obj,std::vector<char>& buffer)
     {
-      serialization(true,const_cast<ViewerCore&>(obj),buffer);
+      serialization(true,const_cast<igl::viewer::ViewerCore&>(obj),buffer);
     }
 
-    IGL_INLINE void deserialize(ViewerCore& obj,const std::vector<char>& buffer)
+    IGL_INLINE void deserialize(igl::viewer::ViewerCore& obj,const std::vector<char>& buffer)
     {
       serialization(false,obj,const_cast<std::vector<char>&>(buffer));
     }
   }
 }
-}
 #endif
 
 IGL_INLINE void igl::viewer::ViewerCore::align_camera_center(

+ 5 - 7
include/igl/viewer/ViewerData.cpp

@@ -16,10 +16,9 @@
 #ifdef ENABLE_SERIALIZATION
 #include <igl/serialize.h>
 namespace igl {
-namespace viewer {
   namespace serialization {
 
-    IGL_INLINE void serialization(bool s,ViewerData& obj,std::vector<char>& buffer)
+    IGL_INLINE void serialization(bool s,igl::viewer::ViewerData& obj,std::vector<char>& buffer)
     {
       SERIALIZE_MEMBER(V);
       SERIALIZE_MEMBER(F);
@@ -50,19 +49,18 @@ namespace viewer {
       SERIALIZE_MEMBER(face_based);
     }
 
-    IGL_INLINE void serialize(const ViewerData& obj,std::vector<char>& buffer)
+    IGL_INLINE void serialize(const igl::viewer::ViewerData& obj,std::vector<char>& buffer)
     {
-      serialization(true,const_cast<ViewerData&>(obj),buffer);
+      serialization(true,const_cast<igl::viewer::ViewerData&>(obj),buffer);
     }
 
-    IGL_INLINE void deserialize(ViewerData& obj,const std::vector<char>& buffer)
+    IGL_INLINE void deserialize(igl::viewer::ViewerData& obj,const std::vector<char>& buffer)
     {
       serialization(false,obj,const_cast<std::vector<char>&>(buffer));
-      obj.dirty = ViewerData::DIRTY_ALL;
+      obj.dirty = igl::viewer::ViewerData::DIRTY_ALL;
     }
   }
 }
-}
 #endif
 
 IGL_INLINE igl::viewer::ViewerData::ViewerData()