1
0
Fork 0

fgpanel: use same default fgdata path as fgfs

Use location configured at compile-time (Linux) or use run-time check (Mac)
(copied from fgfs/options.cxx).
This commit is contained in:
ThorstenB 2012-01-25 17:37:14 +01:00
parent 477e621633
commit b70055a9a2

View file

@ -25,6 +25,10 @@
#include <direct.h>
#endif
#ifdef __APPLE__
# include <CoreFoundation/CoreFoundation.h>
#endif
#include "FGGLApplication.hxx"
#include "FGPanelApplication.hxx"
#if defined (SG_MAC)
@ -64,6 +68,48 @@ inline static string ParseArgs( int argc, char ** argv, const char * token )
return ParseArgs( argc, argv, s );
}
// define default location of fgdata (use the same as for fgfs)
#if defined(__CYGWIN__)
inline static string platformDefaultRoot()
{
return "../data";
}
#elif defined(_WIN32)
inline static string platformDefaultRoot()
{
return "..\\data";
}
#elif defined(__APPLE__)
inline static string platformDefaultRoot()
{
/*
The following code looks for the base package inside the application
bundle, in the standard Contents/Resources location.
*/
CFURLRef resourcesUrl = CFBundleCopyResourcesDirectoryURL(CFBundleGetMainBundle());
// look for a 'data' subdir
CFURLRef dataDir = CFURLCreateCopyAppendingPathComponent(NULL, resourcesUrl, CFSTR("data"), true);
// now convert down to a path, and the a c-string
CFStringRef path = CFURLCopyFileSystemPath(dataDir, kCFURLPOSIXPathStyle);
string root = CFStringGetCStringPtr(path, CFStringGetSystemEncoding());
CFRelease(resourcesUrl);
CFRelease(dataDir);
CFRelease(path);
return root;
}
#else
inline static string platformDefaultRoot()
{
return PKGLIBDIR;
}
#endif
#include "FGPNGTextureLoader.hxx"
#include "FGRGBTextureLoader.hxx"
static FGPNGTextureLoader pngTextureLoader;
@ -76,6 +122,8 @@ FGPanelApplication::FGPanelApplication( int argc, char ** argv ) :
FGCroppedTexture::registerTextureLoader( "png", &pngTextureLoader );
FGCroppedTexture::registerTextureLoader( "rgb", &rgbTextureLoader );
ApplicationProperties::root = platformDefaultRoot();
string panelFilename;
string fgRoot;