- bug fixes and patches from hasufell related to:

- fontconfig not working
- new cmake option to control inclusion of libvlc
- new commandline option to force where to look for fonts: --font-path=x
- removal of libluajit from cmake
This commit is contained in:
Mark Vejvoda 2012-11-14 19:20:08 +00:00
parent 53f1163ca4
commit d322f73284
7 changed files with 80 additions and 24 deletions

View File

@ -44,6 +44,7 @@ OPTION(BUILD_MEGAGLEST_MODEL_IMPORT_EXPORT_TOOLS "Build model import/export tool
OPTION(BUILD_MEGAGLEST_MODEL_VIEWER "Build model viewer" ON)
OPTION(BUILD_MEGAGLEST_MAP_EDITOR "Build map editor" ON)
OPTION(BUILD_MEGAGLEST "Build MegaGlest" ON)
OPTION(WITH_VLC "Use libVLC to play videos" ON)
FIND_PROGRAM(HELP2MAN "help2man")

View File

@ -1151,6 +1151,29 @@ int setupGameItemPaths(int argc, char** argv, Config *config) {
}
Text::DEFAULT_FONT_PATH = pathCache[GameConstants::path_data_CacheLookupKey];
if(hasCommandArgument(argc, argv,GAME_ARGS[GAME_ARG_FONT_PATH]) == true) {
int foundParamIndIndex = -1;
hasCommandArgument(argc, argv,string(GAME_ARGS[GAME_ARG_FONT_PATH]) + string("="),&foundParamIndIndex);
if(foundParamIndIndex < 0) {
hasCommandArgument(argc, argv,string(GAME_ARGS[GAME_ARG_FONT_PATH]),&foundParamIndIndex);
}
string customPath = argv[foundParamIndIndex];
vector<string> paramPartTokens;
Tokenize(customPath,paramPartTokens,"=");
if(paramPartTokens.size() >= 2 && paramPartTokens[1].length() > 0) {
string customPathValue = paramPartTokens[1];
Properties::applyTagsToValue(customPathValue);
Text::DEFAULT_FONT_PATH_ABSOLUTE = customPathValue;
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("Using custom fonts path [%s]\n",customPathValue.c_str());
}
else {
printf("\nInvalid path specified on commandline [%s] value [%s]\n\n",argv[foundParamIndIndex],(paramPartTokens.size() >= 2 ? paramPartTokens[1].c_str() : NULL));
printParameterHelp(argv[0],false);
return 1;
}
}
return 0;
}

View File

@ -110,23 +110,23 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER OR BUILD_MEGAGLEST_MAP_EDITOR OR BUILD_MEGAGLEST
# ENDIF()
FIND_PACKAGE(LUAJIT)
IF(LUAJIT_FOUND)
MESSAGE(STATUS "**NOTE: LUAJIT found, this should improve Lua performance.")
INCLUDE_DIRECTORIES(${LUAJIT_INCLUDE_DIR})
IF(UNIX)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${LUAJIT_LIBRARIES} "libdl.so")
ENDIF()
ELSE()
MESSAGE(STATUS "**WARNING: LUAJIT NOT found, so Lua performance may suffer.")
FIND_PACKAGE(LUA REQUIRED)
INCLUDE_DIRECTORIES(${LUA_INCLUDE_DIR})
IF(UNIX)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${LUA_LIBRARIES} "libdl.so")
ENDIF()
# FIND_PACKAGE(LUAJIT)
# IF(LUAJIT_FOUND)
# MESSAGE(STATUS "**NOTE: LUAJIT found, this should improve Lua performance.")
#
# INCLUDE_DIRECTORIES(${LUAJIT_INCLUDE_DIR})
# IF(UNIX)
# SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${LUAJIT_LIBRARIES} "libdl.so")
# ENDIF()
# ELSE()
# MESSAGE(STATUS "**WARNING: LUAJIT NOT found, so Lua performance may suffer.")
#
FIND_PACKAGE(LUA REQUIRED)
INCLUDE_DIRECTORIES(${LUA_INCLUDE_DIR})
IF(UNIX)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${LUA_LIBRARIES} "libdl.so")
ENDIF()
# ENDIF()
OPTION(WANT_STATIC_LIBS "builds as many static libs as possible" OFF)
@ -223,7 +223,7 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER OR BUILD_MEGAGLEST_MAP_EDITOR OR BUILD_MEGAGLEST
SET(LIBVLC_MIN_VERSION "1.1.0")
FIND_PACKAGE(LIBVLC)
IF(LIBVLC_FOUND AND NOT LIBVLC_VERSION STRLESS "${LIBVLC_MIN_VERSION}")
IF(LIBVLC_FOUND AND WITH_VLC AND NOT LIBVLC_VERSION STRLESS "${LIBVLC_MIN_VERSION}")
MESSAGE(STATUS "**NOTE: LIBVLC found so videos are supported.")
INCLUDE_DIRECTORIES(${LIBVLC_INCLUDE_DIR})
IF(UNIX)
@ -239,6 +239,12 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER OR BUILD_MEGAGLEST_MAP_EDITOR OR BUILD_MEGAGLEST
ELSE()
MESSAGE(STATUS "**WARNING: LIBVLC NOT found so videos are NOT supported.")
IF(WITH_VLC)
MESSAGE(STATUS "**WARNING: LIBVLC NOT found so videos are NOT supported.")
ELSE()
MESSAGE(STATUS "LIBVLC disabled so videos are NOT supported.")
ENDIF()
ENDIF()
#########################################################################################

View File

@ -32,6 +32,7 @@ protected:
public:
static std::string DEFAULT_FONT_PATH;
static std::string DEFAULT_FONT_PATH_ABSOLUTE;
Text(FontTextHandlerType type);
virtual ~Text();

View File

@ -59,6 +59,7 @@ const char *GAME_ARGS[] = {
"--data-path",
"--ini-path",
"--log-path",
"--font-path",
"--show-ini-settings",
"--convert-models",
"--use-language",
@ -131,6 +132,7 @@ enum GAME_ARG_TYPE {
GAME_ARG_DATA_PATH,
GAME_ARG_INI_PATH,
GAME_ARG_LOG_PATH,
GAME_ARG_FONT_PATH,
GAME_ARG_SHOW_INI_SETTINGS,
GAME_ARG_CONVERT_MODELS,
GAME_ARG_USE_LANGUAGE,
@ -347,6 +349,10 @@ void printParameterHelp(const char *argv0, bool foundInvalidArgs) {
printf("\n%s=x\t\t\tSets the game logs path to x",GAME_ARGS[GAME_ARG_LOG_PATH]);
printf("\n \t\texample:");
printf("\n %s %s=~/game_logs/",extractFileFromDirectoryPath(argv0).c_str(),GAME_ARGS[GAME_ARG_LOG_PATH]);
printf("\n%s=x\t\t\tSets the game fonts path to x",GAME_ARGS[GAME_ARG_FONT_PATH]);
printf("\n \t\texample:");
printf("\n %s %s=~/myfonts/",extractFileFromDirectoryPath(argv0).c_str(),GAME_ARGS[GAME_ARG_FONT_PATH]);
printf("\n%s=x\t\tdisplay merged ini settings information.",GAME_ARGS[GAME_ARG_SHOW_INI_SETTINGS]);
printf("\n \t\tWhere x is an optional property name to");
printf("\n \t\t filter (default shows all).");

View File

@ -366,6 +366,9 @@ string findFontFamily(const char* font, const char *fontFamily) {
// -DWANT_FONTCONFIG=Off
FcFini();
}
else {
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("******************* FONT CONFIG will not be called font [%s] fontFamily [%s]!\n",(font != NULL ? font : "null"),(fontFamily != NULL ? fontFamily : "null"));
}
#else
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("******************* NO FONT CONFIG ENABLED!\n");
#endif
@ -382,17 +385,19 @@ const char* findFont(const char *firstFontToTry,const char *firstFontFamilyToTry
path = filename; \
if( font == NULL && path != NULL && strlen(path) > 0 && fileExists(path) == true ) { \
font = strdup(path); \
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("#1 candidate font file [%s]\n",(font != NULL ? font : "null")); \
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("#1 candidate font file exists [%s]\n",(font != NULL ? font : "null")); \
} \
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("#1 Searching for font file [%s] result [%s]\n",(path != NULL ? path : "null"),(font != NULL ? font : "null")); \
if( font != NULL && fontFamily != NULL && strlen(fontFamily) > 0) { \
if( font == NULL && fontFamily != NULL && strlen(fontFamily) > 0) { \
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("#2 Searching for font [%s] family [%s]\n",(font != NULL ? font : "null"),(fontFamily != NULL ? fontFamily : "null")); \
string fileFound = findFontFamily(font, fontFamily); \
if(fileFound != "") { \
path = fileFound.c_str(); \
if( font != NULL && path && strlen(path) > 0 && fileExists(path) == true ) { \
free((void*)font); \
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("#2 candidate font file found [%s]\n",fileFound.c_str()); \
if( path != NULL && strlen(path) > 0 && fileExists(path) == true ) { \
if(font) free((void*)font); \
font = strdup(path); \
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("#2 candidate font file [%s]\n",(font != NULL ? font : "null")); \
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("#2 candidate font file has been set[%s]\n",(font != NULL ? font : "null")); \
} \
} \
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("#2 Searching for font family [%s] result [%s]\n",(fontFamily != NULL ? fontFamily : "null"),(font != NULL ? font : "null")); \
@ -420,6 +425,10 @@ const char* findFont(const char *firstFontToTry,const char *firstFontFamilyToTry
if(getenv("MEGAGLEST_FONT") != NULL) {
tryFont = getenv("MEGAGLEST_FONT");
if(Text::DEFAULT_FONT_PATH_ABSOLUTE != "") {
tryFont = Text::DEFAULT_FONT_PATH_ABSOLUTE + "/" + extractFileFromDirectoryPath(tryFont);
}
#ifdef WIN32
replaceAll(tryFont, "/", "\\");
#endif
@ -433,16 +442,20 @@ const char* findFont(const char *firstFontToTry,const char *firstFontFamilyToTry
string data_path = Text::DEFAULT_FONT_PATH;
string defaultFont = data_path + "data/core/fonts/LinBiolinum_RB.ttf";//LinBiolinum_Re-0.6.4.ttf
if(Text::DEFAULT_FONT_PATH_ABSOLUTE != "") {
data_path = Text::DEFAULT_FONT_PATH;
defaultFont = data_path + "/LinBiolinum_RB.ttf";//LinBiolinum_Re-0.6.4.ttf
}
tryFont = defaultFont;
#ifdef WIN32
replaceAll(tryFont, "/", "\\");
#endif
CHECK_FONT_PATH(tryFont.c_str(),"Linux Biolinum O:style=Bold")
#ifdef FONT_PATH
#ifdef FONT_PATH
// Get distro-specified font path
CHECK_FONT_PATH(FONT_PATH)
#endif
#endif
CHECK_FONT_PATH("/usr/share/fonts/truetype/uralic/gothub__.ttf","Gothic Uralic:style=Regular")
@ -486,6 +499,11 @@ const char* findFont(const char *firstFontToTry,const char *firstFontFamilyToTry
CHECK_FONT_PATH("/usr/share/fonts/truetype/freefont/FreeSans.ttf","FreeSans")
CHECK_FONT_PATH("/usr/share/fonts/truetype/freefont/FreeMono.ttf","FreeMono")
// gentoo paths
CHECK_FONT_PATH("/usr/share/fonts/freefont-ttf/FreeSerif.ttf","FreeSerif")
CHECK_FONT_PATH("/usr/share/fonts/freefont-ttf/FreeSans.ttf","FreeSans")
CHECK_FONT_PATH("/usr/share/fonts/freefont-ttf/FreeMono.ttf","FreeMono")
#ifdef _WIN32
CHECK_FONT_PATH("c:\\windows\\fonts\\verdana.ttf",NULL)
CHECK_FONT_PATH("c:\\windows\\fonts\\tahoma.ttf",NULL)

View File

@ -13,6 +13,7 @@
using namespace std;
std::string Text::DEFAULT_FONT_PATH = "";
std::string Text::DEFAULT_FONT_PATH_ABSOLUTE = "";
//====================================================================
Text::Text(FontTextHandlerType type) {