From 464055ff571fe8cee94ca9e1a7419211c5e94482 Mon Sep 17 00:00:00 2001 From: "Charles J. Cliffe" Date: Tue, 28 Jun 2016 19:36:37 -0400 Subject: [PATCH] OSX bundled font fix-up --- CMakeLists.txt | 21 +++++++++++++-------- src/CubicSDR.cpp | 22 +++++++++++----------- src/util/GLFont.cpp | 19 ++++++++++++++++++- 3 files changed, 42 insertions(+), 20 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d682745..f7c3123 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -491,7 +491,7 @@ IF (USE_HAMLIB) ENDIF() -SET (CUBICSDR_RESOURCES +SET (CUBICSDR_FONTS ${PROJECT_SOURCE_DIR}/font/vera_sans_mono12.fnt ${PROJECT_SOURCE_DIR}/font/vera_sans_mono16.fnt ${PROJECT_SOURCE_DIR}/font/vera_sans_mono18.fnt @@ -648,17 +648,22 @@ IF (APPLE AND BUNDLE_APP) MACOSX_BUNDLE ${cubicsdr_sources} ${cubicsdr_headers} - ${CUBICSDR_RESOURCES} + ${CUBICSDR_FONTS} ${PROJECT_SOURCE_DIR}/icon/CubicSDR.icns ) SET_SOURCE_FILES_PROPERTIES( - ${CUBICSDR_RESOURCES} ${PROJECT_SOURCE_DIR}/icon/CubicSDR.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources ) + SET_SOURCE_FILES_PROPERTIES( + ${CUBICSDR_FONTS} + PROPERTIES + MACOSX_PACKAGE_LOCATION Resources/fonts + ) + IF(ENABLE_FFTW3) target_link_libraries(CubicSDR ${FFTW_LIB}) ENDIF() @@ -777,7 +782,7 @@ IF(APPLE AND NOT BUNDLE_APP) INSTALL(TARGETS CubicSDR DESTINATION bin) install(FILES - ${CUBICSDR_RESOURCES} + ${CUBICSDR_FONTS} ${PROJECT_SOURCE_DIR}/src/CubicSDR.png DESTINATION share/cubicsdr) @@ -817,7 +822,7 @@ IF (WIN32 AND NOT BUILD_INSTALLER) ENDIF() INSTALL(FILES - ${CUBICSDR_RESOURCES} + ${CUBICSDR_FONTS} ${PROJECT_SOURCE_DIR}/src/CubicSDR.png DESTINATION share/cubicsdr) ENDIF() @@ -849,7 +854,7 @@ IF (WIN32 AND BUILD_INSTALLER) install(TARGETS CubicSDR RUNTIME DESTINATION .) install(FILES - ${CUBICSDR_RESOURCES} + ${CUBICSDR_FONTS} ${PROJECT_SOURCE_DIR}/icon/CubicSDR.ico ${LIQUID_DLL} DESTINATION .) @@ -939,7 +944,7 @@ IF (UNIX AND NOT APPLE AND BUILD_DEB) INSTALL(TARGETS CubicSDR DESTINATION bin) install(FILES - ${CUBICSDR_RESOURCES} + ${CUBICSDR_FONTS} ${PROJECT_SOURCE_DIR}/src/CubicSDR.png DESTINATION share/cubicsdr) @@ -964,7 +969,7 @@ IF(UNIX AND NOT APPLE AND NOT BUILD_DEB) INSTALL(TARGETS CubicSDR DESTINATION bin) install(FILES - ${CUBICSDR_RESOURCES} + ${CUBICSDR_FONTS} ${PROJECT_SOURCE_DIR}/src/CubicSDR.png DESTINATION share/cubicsdr) INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/CubicSDR.desktop" diff --git a/src/CubicSDR.cpp b/src/CubicSDR.cpp index 6d14321..32d9e93 100644 --- a/src/CubicSDR.cpp +++ b/src/CubicSDR.cpp @@ -149,17 +149,17 @@ bool CubicSDR::OnInit() { //better (by default, was "C" locale). std::setlocale(LC_ALL, ""); -#ifdef _OSX_APP_ - CFBundleRef mainBundle = CFBundleGetMainBundle(); - CFURLRef resourcesURL = CFBundleCopyResourcesDirectoryURL(mainBundle); - char path[PATH_MAX]; - if (!CFURLGetFileSystemRepresentation(resourcesURL, TRUE, (UInt8 *)path, PATH_MAX)) - { - // error! - } - CFRelease(resourcesURL); - chdir(path); -#endif +//#ifdef _OSX_APP_ +// CFBundleRef mainBundle = CFBundleGetMainBundle(); +// CFURLRef resourcesURL = CFBundleCopyResourcesDirectoryURL(mainBundle); +// char path[PATH_MAX]; +// if (!CFURLGetFileSystemRepresentation(resourcesURL, TRUE, (UInt8 *)path, PATH_MAX)) +// { +// // error! +// } +// CFRelease(resourcesURL); +// chdir(path); +//#endif if (!wxApp::OnInit()) { return false; diff --git a/src/util/GLFont.cpp b/src/util/GLFont.cpp index ae11be9..878fc72 100644 --- a/src/util/GLFont.cpp +++ b/src/util/GLFont.cpp @@ -5,6 +5,10 @@ #include #include "cubic_math.h" +#ifdef _OSX_APP_ +#include "CoreFoundation/CoreFoundation.h" +#endif + static std::wstring getExePath(void) { //get the dir path of the executable @@ -201,8 +205,21 @@ void GLFont::loadFontOnce() { return; } +#if _OSX_APP_ + CFBundleRef mainBundle = CFBundleGetMainBundle(); + CFURLRef resourcesURL = CFBundleCopyResourcesDirectoryURL(mainBundle); + char path[PATH_MAX]; + if (!CFURLGetFileSystemRepresentation(resourcesURL, TRUE, (UInt8 *)path, PATH_MAX)) + { + // error! + } + CFRelease(resourcesURL); + wxString resourceFolder = std::string(path) + "/"; + +#else wxString resourceFolder = RES_FOLDER; - +#endif + //full font file path wxFileName fontDefFileName = wxFileName(resourceFolder + L"/" + fontDefFileSource);