From b2c0fcd7bb0630ce8fa8b1c4777954f88e663a2b Mon Sep 17 00:00:00 2001 From: ximion Date: Sat, 14 Apr 2012 14:26:11 +0000 Subject: [PATCH] Add possibility to use system fonts & fix font-loading bug in renderer git-svn-id: https://projectm.svn.sourceforge.net/svnroot/projectm/trunk@1396 6778bc44-b910-0410-a7a0-be141de4315d --- AUTHORS.txt | 10 +++++++--- CMakeLists.txt | 8 +------- src/libprojectM/CMakeLists.txt | 26 ++++++++++++++++---------- src/libprojectM/Renderer/Renderer.cpp | 13 ++++++++++++- src/libprojectM/config.inp.in | 9 ++++----- src/libprojectM/projectM.cpp | 8 ++++---- src/projectM-libvisual/CMakeLists.txt | 15 ++++----------- src/projectM-qt/CMakeLists.txt | 4 ++-- src/projectM-xmms/CMakeLists.txt | 2 +- 9 files changed, 51 insertions(+), 44 deletions(-) diff --git a/AUTHORS.txt b/AUTHORS.txt index e0ae79cd2..7544527c5 100755 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -1,4 +1,3 @@ - projectM -- Milkdrop-esque visualisation SDK Copyright (C)2003-2007 projectM Team @@ -25,12 +24,12 @@ Carmelo Piccione Evaluator Pulse Audio support (projectM-pulseaudio) Qt GUI (projectM-qt) - + Peter Sperl Beat Detection Rendering XMMS Support (projectM-xmms) - libvisual Support (projectM-libvisual) + libvisual Support (projectM-libvisual) Alligator Descartes Media Player Support (iTunes, Winamp, Windows Media Player) @@ -40,3 +39,8 @@ Alligator Descartes Roger Dannenburg Advice & Support + +Matthias Klumpp + CMake build system + Distro integration + Bug fixes diff --git a/CMakeLists.txt b/CMakeLists.txt index dcda29d10..634b82fcc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,11 +1,5 @@ PROJECT(projectM-complete) -cmake_minimum_required(VERSION 2.4.0) -cmake_policy(SET CMP0005 OLD) - -if(COMMAND cmake_policy) - cmake_policy(SET CMP0003 NEW) -endif(COMMAND cmake_policy) - +cmake_minimum_required(VERSION 2.8.0) include(src/cmake/CPack-projectM.cmake) diff --git a/src/libprojectM/CMakeLists.txt b/src/libprojectM/CMakeLists.txt index 03cdbc7ee..acc698ef3 100644 --- a/src/libprojectM/CMakeLists.txt +++ b/src/libprojectM/CMakeLists.txt @@ -33,16 +33,10 @@ set(PROJECTM_VERSION 2.0.1) set(PROJECTM_ABI_LEVEL 2) # -SET(LIB_SUFFIX "" - CACHE STRING "Define suffix of directory name (32/64)" - FORCE) - -ADD_DEFINITIONS(-DLIB_SUFFIX="\\\"${LIB_SUFFIX}\\\"") - ADD_DEFINITIONS(-DCMAKE_INSTALL_PREFIX="\\\"${CMAKE_INSTALL_PREFIX}\\\"") -SET(LIB_INSTALL_DIR "\${exec_prefix}/lib${LIB_SUFFIX}" - CACHE PATH "The subdirectory relative to the install prefix where libraries will be installed (default is /lib${LIB_SUFFIX})" +SET(LIB_INSTALL_DIR "\${exec_prefix}/lib" + CACHE PATH "The subdirectory relative to the install prefix where libraries will be installed (default is /lib)" FORCE) if (USE_NATIVE_GLEW) @@ -221,14 +215,26 @@ else(BUILD_PROJECTM_STATIC) ) endif(BUILD_PROJECTM_STATIC) +SET(projectM_FONT_MENU "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/VeraMono.ttf" CACHE FILEPATH "Path to the default menu TrueType font") +SET(projectM_FONT_TITLE "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/Vera.ttf" CACHE FILEPATH "Path to the default title TrueType font") +ADD_DEFINITIONS(-DprojectM_FONT_MENU="\\\"${projectM_FONT_MENU}\\\"") +ADD_DEFINITIONS(-DprojectM_FONT_TITLE="\\\"${projectM_FONT_TITLE}\\\"") CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/libprojectM.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/libprojectM.pc" @ONLY) CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/config.inp.in" "${CMAKE_CURRENT_BINARY_DIR}/config.inp" @ONLY) +IF(projectM_FONT_MENU MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/Vera.ttf" OR projectM_FONT_TITLE MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/Vera.ttf") + INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/fonts/VeraMono.ttf DESTINATION ${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts) +ENDIF(projectM_FONT_MENU MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/Vera.ttf" OR projectM_FONT_TITLE MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/Vera.ttf") + +IF(projectM_FONT_MENU MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/VeraMono.ttf" OR projectM_FONT_TITLE MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/VeraMono.ttf") + INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/fonts/VeraMono.ttf DESTINATION ${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts) +ENDIF(projectM_FONT_MENU MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/VeraMono.ttf" OR projectM_FONT_TITLE MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/VeraMono.ttf") + FILE(GLOB presets "presets/*.milk" "presets/*.prjm" "presets/*.tga") INSTALL(FILES ${presets} DESTINATION ${CMAKE_INSTALL_PREFIX}/share/projectM/presets) INSTALL(FILES ${Renderer_SOURCE_DIR}/projectM.cg ${Renderer_SOURCE_DIR}/blur.cg DESTINATION ${CMAKE_INSTALL_PREFIX}/share/projectM/shaders) -INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libprojectM.pc DESTINATION ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/pkgconfig) +INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libprojectM.pc DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig) INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/config.inp DESTINATION ${CMAKE_INSTALL_PREFIX}/share/projectM) INSTALL(FILES projectM.hpp event.h dlldefs.h fatal.h PCM.hpp Common.hpp DESTINATION include/libprojectM) -INSTALL(TARGETS projectM DESTINATION lib${LIB_SUFFIX}) +INSTALL(TARGETS projectM DESTINATION lib) diff --git a/src/libprojectM/Renderer/Renderer.cpp b/src/libprojectM/Renderer/Renderer.cpp index 795389418..1666837ae 100644 --- a/src/libprojectM/Renderer/Renderer.cpp +++ b/src/libprojectM/Renderer/Renderer.cpp @@ -6,6 +6,7 @@ #include "TextureManager.hpp" #include #include +#include #include #include "omptl/omptl" #include "omptl/omptl_algorithm" @@ -45,7 +46,17 @@ Renderer::Renderer(int width, int height, int gx, int gy, int texsize, BeatDetec this->beatDetect = beatDetect; #ifdef USE_FTGL - /**f Load the standard fonts */ + /** Load the standard fonts if they do exist */ + struct stat buffer; + + if (stat( title_fontURL.c_str(), &buffer )) { + std::cout << "Could not open font file: " << title_fontURL << std::endl; + exit(1); + } + if (stat( menu_fontURL.c_str(), &buffer )) { + std::cout << "Could not open font file: " << menu_fontURL << std::endl; + exit(1); + } title_font = new FTGLPixmapFont(title_fontURL.c_str()); other_font = new FTGLPixmapFont(menu_fontURL.c_str()); diff --git a/src/libprojectM/config.inp.in b/src/libprojectM/config.inp.in index b27b193d2..93d9c61d3 100644 --- a/src/libprojectM/config.inp.in +++ b/src/libprojectM/config.inp.in @@ -4,8 +4,8 @@ Texture Size = 1024 # Size of internal rendering texture Mesh X = 32 # Width of PerPixel Equation mesh Mesh Y = 24 # Height of PerPixel Equation mesh -FPS = 35 # Frames Per Second -Fullscreen = false +FPS = 35 # Frames Per Second +Fullscreen = false Window Width = 512 # startup window width Window Height = 512 # startup window height @@ -17,6 +17,5 @@ Hard Cut Sensitivity = 10 # Lower to make hard cuts more frequent Aspect Correction = true # Custom Shape Aspect Correction Preset Path = @CMAKE_INSTALL_PREFIX@/@RESOURCE_PREFIX@/presets # preset location -Title Font = @CMAKE_INSTALL_PREFIX@/@RESOURCE_PREFIX@/fonts/Vera.ttf -Menu Font = @CMAKE_INSTALL_PREFIX@/@RESOURCE_PREFIX@/fonts/VeraMono.ttf - +Title Font = @projectM_FONT_TITLE@ +Menu Font = @projectM_FONT_MENU@ diff --git a/src/libprojectM/projectM.cpp b/src/libprojectM/projectM.cpp index 5e230052f..26e84e07b 100755 --- a/src/libprojectM/projectM.cpp +++ b/src/libprojectM/projectM.cpp @@ -201,16 +201,16 @@ void projectM::readConfig (const std::string & configFile ) #ifdef LINUX _settings.titleFontURL = config.read - ( "Title Font", CMAKE_INSTALL_PREFIX "/share/projectM/fonts/Vera.ttf" ); + ( "Title Font", projectM_FONT_TITLE ); _settings.menuFontURL = config.read - ( "Menu Font", CMAKE_INSTALL_PREFIX "/share/projectM/fonts/VeraMono.ttf" ); + ( "Menu Font", projectM_FONT_MENU ); #endif #ifdef WIN32 _settings.titleFontURL = config.read - ( "Title Font", CMAKE_INSTALL_PREFIX "/share/projectM/fonts/Vera.ttf" ); + ( "Title Font", projectM_FONT_TITLE ); _settings.menuFontURL = config.read - ( "Menu Font", CMAKE_INSTALL_PREFIX "/share/projectM/fonts/VeraMono.ttf" ); + ( "Menu Font", projectM_FONT_MENU ); #endif diff --git a/src/projectM-libvisual/CMakeLists.txt b/src/projectM-libvisual/CMakeLists.txt index ed2f57651..28d8f904a 100644 --- a/src/projectM-libvisual/CMakeLists.txt +++ b/src/projectM-libvisual/CMakeLists.txt @@ -1,19 +1,13 @@ PROJECT(projectM_libvisual) cmake_minimum_required(VERSION 2.4.0) - if(COMMAND cmake_policy) - cmake_policy(SET CMP0003 NEW) - endif(COMMAND cmake_policy) - INCLUDE(cmake/CPack-projectM.cmake) - ADD_LIBRARY(projectM_libvisual SHARED actor_projectM.cpp lvtoprojectM.h ConfigFile.h ConfigFile.cpp) INCLUDE(FindPkgConfig.cmake) cmake_policy(SET CMP0005 OLD) - FIND_PACKAGE(OpenGL) FIND_PACKAGE(SDL) @@ -30,19 +24,18 @@ ADD_DEFINITIONS(-DLINUX) pkg_search_module(LIBVISUAL REQUIRED libvisual-0.4) if (LIBPROJECTM_FOUND) -MESSAGE (STATUS "[projectM-libvisual] projectM detected.") + MESSAGE (STATUS "[projectM-libvisual] projectM detected.") else(LIBPROJECTM_FOUND) -MESSAGE (FATAL_ERROR "projectM NOT detected. Please install the projectM module or build from the top level projectM source directory.") + MESSAGE (FATAL_ERROR "projectM NOT detected. Please install the projectM module or build from the top level projectM source directory.") endif(LIBPROJECTM_FOUND) if(LIBVISUAL_FOUND) -MESSAGE(STATUS "[projectM-libvisual] libvisual detected.") + MESSAGE(STATUS "[projectM-libvisual] libvisual detected.") else(LIBVISUAL_FOUND) -MESSAGE(FATAL_ERROR "libvisual 0.4 not found! Please visit http://libvisual.sf.net and download the module.") + MESSAGE(FATAL_ERROR "libvisual 0.4 not found! Please visit http://libvisual.sf.net and download the module.") endif(LIBVISUAL_FOUND) - if (${CMAKE_PROJECT_NAME} MATCHES "projectM-complete") set(PROJECTM_INCLUDE ${PROJECTM_ROOT_SOURCE_DIR}/libprojectM) set(PROJECTM_LINK ${PROJECTM_ROOT_BINARY_DIR}/libprojectM) diff --git a/src/projectM-qt/CMakeLists.txt b/src/projectM-qt/CMakeLists.txt index 963308272..750d1ed34 100644 --- a/src/projectM-qt/CMakeLists.txt +++ b/src/projectM-qt/CMakeLists.txt @@ -131,6 +131,6 @@ include_directories(${PROJECTM_INCLUDE} ${QT_INCLUDE_DIR} ${QT_QTGUI_INCLUDE_DIR target_link_libraries(projectM-qt projectM GLEW GL ${QT_QTGUI_LIBRARIES} ${QT_QTOPENGL_LIBRARIES} ${QT_QTXML_LIBRARIES} ${QT_LIBRARIES}) install(FILES qprojectm_mainwindow.hpp DESTINATION include/libprojectM-qt) -install(TARGETS projectM-qt DESTINATION lib${LIB_SUFFIX}) -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libprojectM-qt.pc" DESTINATION ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/pkgconfig) +install(TARGETS projectM-qt DESTINATION lib) +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libprojectM-qt.pc" DESTINATION lib/pkgconfig) install(FILES "images/icons/prjm16-transparent.svg" DESTINATION ${CMAKE_INSTALL_PREFIX}/share/pixmaps) diff --git a/src/projectM-xmms/CMakeLists.txt b/src/projectM-xmms/CMakeLists.txt index 453e3ca78..4688f4817 100644 --- a/src/projectM-xmms/CMakeLists.txt +++ b/src/projectM-xmms/CMakeLists.txt @@ -44,4 +44,4 @@ LINK_DIRECTORIES(${PROJECTM_LINK} ${LIBXMMS_LDFLAGS}) TARGET_LINK_LIBRARIES(xmms_projectM projectM xmms ${SDL_LIBRARY} ${GTK_LIBRARIES}) -INSTALL(TARGETS xmms_projectM DESTINATION ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/xmms/Visualization ) +INSTALL(TARGETS xmms_projectM DESTINATION lib/xmms/Visualization )