Browse Source

added anonymous namespace for TextRenderer_fonts
fixed serialization bug in viewer


Former-commit-id: b6fcdcb3adaf413098fcbf54567ccc29d253e92b

schuellc 10 years ago
parent
commit
47619a0ca5

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

@@ -8,13 +8,16 @@
 #include "TextRenderer.h"
 #include "TextRenderer_fonts.h"
 #include <igl/project.h>
+
+#include <nanogui/opengl.h>
 #include <nanovg.h>
+
 #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 +35,8 @@ using namespace std;
 
   IGL_INLINE int igl::viewer::TextRenderer::Shut()
   {
-    nvgDeleteGL3(ctx);
+    if(ctx)
+      nvgDeleteGL3(ctx);
     return 0;
   }
 

+ 20 - 19
include/igl/viewer/TextRenderer.h

@@ -13,36 +13,37 @@
 
 #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;
+  };
 
 }
 }

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

@@ -11,17 +11,23 @@
 
 #include <stdint.h>
 
-extern uint8_t igl_entypo_ttf[];
-extern uint32_t igl_entypo_ttf_size;
+namespace
+{
+  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
-#  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()