diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/sdlfont.cpp | 11 | ||||
-rw-r--r-- | src/gui/sdlfont.h | 4 | ||||
-rw-r--r-- | src/utils/paths.cpp | 12 | ||||
-rw-r--r-- | src/utils/paths.h | 2 |
4 files changed, 23 insertions, 6 deletions
diff --git a/src/gui/sdlfont.cpp b/src/gui/sdlfont.cpp index 0e69db026..7e0114cb8 100644 --- a/src/gui/sdlfont.cpp +++ b/src/gui/sdlfont.cpp @@ -27,6 +27,7 @@ #include "graphics.h" #include "logger.h" #include "main.h" +#include "utils/paths.h" #include "resources/image.h" #include "resources/resourcemanager.h" @@ -98,7 +99,7 @@ typedef std::list<SDLTextChunk>::iterator CacheIterator; static int fontCounter; -SDLFont::SDLFont(const std::string &filename, int size, int style) : +SDLFont::SDLFont(std::string filename, int size, int style) : mCreateCounter(0), mDeleteCounter(0) { @@ -117,13 +118,16 @@ SDLFont::SDLFont(const std::string &filename, int size, int style) : } ++fontCounter; + + fixDirSeparators(filename); mFont = TTF_OpenFont(resman->getPath(filename).c_str(), size); if (!mFont) { logger->log("Error finding font " + filename); + std::string backFile = "fonts/dejavusans.ttf"; mFont = TTF_OpenFont(resman->getPath( - "fonts/dejavusans.ttf").c_str(), size); + fixDirSeparators(backFile)).c_str(), size); if (!mFont) { throw GCN_EXCEPTION("SDLSDLFont::SDLSDLFont: " + @@ -148,7 +152,7 @@ SDLFont::~SDLFont() } } -void SDLFont::loadFont(const std::string &filename, int size, int style) +void SDLFont::loadFont(std::string filename, int size, int style) { ResourceManager *resman = ResourceManager::getInstance(); @@ -159,6 +163,7 @@ void SDLFont::loadFont(const std::string &filename, int size, int style) return; } + fixDirSeparators(filename); TTF_Font *font = TTF_OpenFont(resman->getPath(filename).c_str(), size); if (!font) diff --git a/src/gui/sdlfont.h b/src/gui/sdlfont.h index 6fcad34d4..77e3761e7 100644 --- a/src/gui/sdlfont.h +++ b/src/gui/sdlfont.h @@ -53,14 +53,14 @@ class SDLFont : public gcn::Font * @param filename Font filename. * @param size Font size. */ - SDLFont(const std::string &filename, int size, int style = 0); + SDLFont(std::string filename, int size, int style = 0); /** * Destructor. */ ~SDLFont(); - void loadFont(const std::string &filename, int size, int style = 0); + void loadFont(std::string filename, int size, int style = 0); void createSDLTextChunk(SDLTextChunk *chunk); diff --git a/src/utils/paths.cpp b/src/utils/paths.cpp index faa1882e6..04f553ca9 100644 --- a/src/utils/paths.cpp +++ b/src/utils/paths.cpp @@ -20,10 +20,12 @@ #include "utils/paths.h" +#include "utils/stringutils.h" + #include <string.h> #include <cstdarg> #include <cstdio> - +#include <physfs.h> #include <stdlib.h> #ifdef WIN32 @@ -65,3 +67,11 @@ bool checkPath(std::string path) && path.find("/..") == std::string::npos && path.find("\\..") == std::string::npos; } + +std::string &fixDirSeparators(std::string &str) +{ + if (*PHYSFS_getDirSeparator() == '/') + return str; + + return replaceAll(str, "/", "\\"); +} diff --git a/src/utils/paths.h b/src/utils/paths.h index f92fcdcb5..b89671adc 100644 --- a/src/utils/paths.h +++ b/src/utils/paths.h @@ -29,4 +29,6 @@ bool isRealPath(const std::string &str); bool checkPath(std::string path); +std::string &fixDirSeparators(std::string &str); + #endif // UTILS_PATHS_H |