From 047e80756ade44d16173eb5e6ea13af1954ce14c Mon Sep 17 00:00:00 2001 From: Debian Science Maintainers Date: Fri, 6 May 2011 14:52:41 +0100 Subject: [PATCH] fix-ftgl-includes Fix detection of FTGL in configure.in Also modify installed headers to search for FTGL headers in the right directory. This is not needed to build opencascade, but may help people including those headers. And last, fix usage of FTGL, FTFace is an internal structure of FTGL and is no more exported. Submitted upstream: http://www.opencascade.org/org/forum/thread_20128/ Gbp-Pq: Topic submitted Gbp-Pq: Name fix-ftgl-includes.patch --- ros/configure.in | 6 +++--- ros/inc/OpenGl_FontMgr.hxx | 2 +- ros/inc/OpenGl_TextRender.hxx | 2 +- ros/src/OpenGl/OpenGl_FontMgr.cxx | 31 +++++++++++++++++-------------- 4 files changed, 22 insertions(+), 19 deletions(-) diff --git a/ros/configure.in b/ros/configure.in index cafb4072f..dcbcc8317 100644 --- a/ros/configure.in +++ b/ros/configure.in @@ -422,7 +422,7 @@ else HAVE_FTGL=yes HAVE_FTGL_INC=yes CPPFLAGS="-I$ftgl/include $CPPFLAGS"; - AC_CHECK_HEADER( [FTGL/FTGL.h], [], [HAVE_FTGL_INC=no] ) + AC_CHECK_HEADER( [FTGL/ftgl.h], [], [HAVE_FTGL_INC=no] ) if test "x$HAVE_FTGL_INC" = "xyes"; then CSF_FTGL_INCLUDES="-I$ftgl/include/FTGL" HAVE_FTGL_LIB=yes @@ -431,9 +431,9 @@ else LIBS_sv=$LIBS LIBS="-lftgl $CSF_OpenGlLibs_LIB $LIBS" #we have problem with unresolved symbols on 64 stations - CSF_FTGL_LIB="-L$ftgl/lib -lftgl" + CSF_FTGL_LIB="-L$ftgl/lib -lftgl -lfreetype" AC_TRY_LINK([ -#include +#include #include ], [ FTGLTextureFont font("");], [ diff --git a/ros/inc/OpenGl_FontMgr.hxx b/ros/inc/OpenGl_FontMgr.hxx index d32b10947..0374e650d 100644 --- a/ros/inc/OpenGl_FontMgr.hxx +++ b/ros/inc/OpenGl_FontMgr.hxx @@ -7,7 +7,7 @@ # include #endif -#include +#include #include #include diff --git a/ros/inc/OpenGl_TextRender.hxx b/ros/inc/OpenGl_TextRender.hxx index 8edfb6a84..f6ff34726 100644 --- a/ros/inc/OpenGl_TextRender.hxx +++ b/ros/inc/OpenGl_TextRender.hxx @@ -5,7 +5,7 @@ #include #include #include -#include +#include #define NUM_FONT_SIZES 40 #define NUM_CHAR_FONT 1024 diff --git a/ros/src/OpenGl/OpenGl_FontMgr.cxx b/ros/src/OpenGl/OpenGl_FontMgr.cxx index a422e90fc..c630d86a4 100644 --- a/ros/src/OpenGl/OpenGl_FontMgr.cxx +++ b/ros/src/OpenGl/OpenGl_FontMgr.cxx @@ -1,8 +1,6 @@ #include -#include -#include -#include +#include #include #undef TRACE @@ -60,7 +58,10 @@ OpenGl_FontMgr* OpenGl_FontMgr::instance() void OpenGl_FontMgr::_initializeFontDB() { Handle(OSD_FontMgr) fntMgr = OSD_FontMgr::GetInstance(); - if ( !fntMgr.IsNull() ) { + FT_Library library; + // FIXME: FT_Done_FreeType( library ) should be called on exit + int error = FT_Init_FreeType( &library ); + if ( !fntMgr.IsNull() && !error) { OSD_NListOfSystemFont fontList = fntMgr->GetAvalableFonts(); if ( fontList.Size() != 0 ) { @@ -71,10 +72,11 @@ void OpenGl_FontMgr::_initializeFontDB() if ( it.Value()->FontAspect() == OSD_FA_Regular ) { //this workaround for fonts with names dependent on system locale. //for example: "Times New Roman Fett Kursive" or "Times New Roman Gras Italiqui" - FTFace face(it.Value()->FontPath()->ToCString()); - - if ( face.Error() == FT_Err_Ok ) { - if ( (*face.Face())->style_flags == 0 ) { + FT_Face ftFace; + error = FT_New_Face(library, + it.Value()->FontPath()->ToCString(), 0, &ftFace); + if ( !error ) { + if ( ftFace->style_flags == 0 ) { info->SysFont = it.Value(); } else { @@ -82,24 +84,25 @@ void OpenGl_FontMgr::_initializeFontDB() #ifdef TRACE cout << "TKOpenGl::initializeFontDB() detected new font!\n" << "\tFont Previous Name: " << it.Value()->FontName()->ToCString() << endl - << "\tFont New Name: " << (*face.Face())->family_name << endl - << "\tFont Aspect: " << (*face.Face())->style_flags << endl; + << "\tFont New Name: " << ftFace->family_name << endl + << "\tFont Aspect: " << ftFace->style_flags << endl; #endif OSD_FontAspect aspect = OSD_FA_Regular; - if ( (*face.Face())->style_flags == (FT_STYLE_FLAG_ITALIC | FT_STYLE_FLAG_BOLD) ) + if ( ftFace->style_flags == (FT_STYLE_FLAG_ITALIC | FT_STYLE_FLAG_BOLD) ) aspect = OSD_FA_BoldItalic; - else if ( (*face.Face())->style_flags == FT_STYLE_FLAG_ITALIC ) + else if ( ftFace->style_flags == FT_STYLE_FLAG_ITALIC ) aspect = OSD_FA_Italic; - else if ( (*face.Face())->style_flags == FT_STYLE_FLAG_BOLD ) + else if ( ftFace->style_flags == FT_STYLE_FLAG_BOLD ) aspect = OSD_FA_Bold; #ifdef TRACE cout << "\tOSD_FontAspect: " << aspect << endl; #endif Handle(TCollection_HAsciiString) aFontName = - new TCollection_HAsciiString( (*face.Face())->family_name ); + new TCollection_HAsciiString( ftFace->family_name ); info->SysFont = new OSD_SystemFont( aFontName, aspect, it.Value()->FontPath() ); } + FT_Done_Face(ftFace); } else continue; -- 2.30.2