Browse Source

Integrated the Any* plugins to the buildsystem and docs.

pull/233/head
Vladimír Vondruš 8 years ago
parent
commit
8a2815ade5
  1. 4
      CMakeLists.txt
  2. 8
      doc/building.dox
  3. 6
      doc/changelog.dox
  4. 7
      doc/cmake.dox
  5. 12
      doc/namespaces.dox
  6. 17
      modules/FindMagnum.cmake
  7. 9
      src/MagnumPlugins/AnyAudioImporter/AnyImporter.h
  8. 11
      src/MagnumPlugins/AnyAudioImporter/CMakeLists.txt
  9. 7
      src/MagnumPlugins/AnyAudioImporter/Test/CMakeLists.txt
  10. 14
      src/MagnumPlugins/AnyAudioImporter/Test/Test.cpp
  11. 1
      src/MagnumPlugins/AnyAudioImporter/Test/configure.h.cmake
  12. 9
      src/MagnumPlugins/AnyImageConverter/AnyImageConverter.h
  13. 8
      src/MagnumPlugins/AnyImageConverter/CMakeLists.txt
  14. 17
      src/MagnumPlugins/AnyImageConverter/Test/Test.cpp
  15. 9
      src/MagnumPlugins/AnyImageImporter/AnyImageImporter.h
  16. 8
      src/MagnumPlugins/AnyImageImporter/CMakeLists.txt
  17. 12
      src/MagnumPlugins/AnyImageImporter/Test/CMakeLists.txt
  18. 33
      src/MagnumPlugins/AnyImageImporter/Test/Test.cpp
  19. 2
      src/MagnumPlugins/AnyImageImporter/Test/configure.h.cmake
  20. 9
      src/MagnumPlugins/AnySceneImporter/AnySceneImporter.h
  21. 8
      src/MagnumPlugins/AnySceneImporter/CMakeLists.txt
  22. 9
      src/MagnumPlugins/AnySceneImporter/Test/CMakeLists.txt
  23. 20
      src/MagnumPlugins/AnySceneImporter/Test/Test.cpp
  24. 1
      src/MagnumPlugins/AnySceneImporter/Test/configure.h.cmake
  25. 10
      src/MagnumPlugins/AnySceneImporter/Test/mesh.obj
  26. 16
      src/MagnumPlugins/CMakeLists.txt

4
CMakeLists.txt

@ -89,6 +89,10 @@ endif()
option(WITH_IMAGECONVERTER "Build magnum-imageconverter utility" OFF) option(WITH_IMAGECONVERTER "Build magnum-imageconverter utility" OFF)
# Plugins # Plugins
option(WITH_ANYIMAGEIMPORTER "Build AnyImageImporter plugin" OFF)
option(WITH_ANYAUDIOIMPORTER "Build AnyAudioImporter plugin" OFF)
option(WITH_ANYIMAGECONVERTER "Build AnyImageConverter plugin" OFF)
option(WITH_ANYSCENEIMPORTER "Build AnySceneImporter plugin" OFF)
option(WITH_WAVAUDIOIMPORTER "Build WavAudioImporter plugin" OFF) option(WITH_WAVAUDIOIMPORTER "Build WavAudioImporter plugin" OFF)
option(WITH_MAGNUMFONT "Build MagnumFont plugin" OFF) option(WITH_MAGNUMFONT "Build MagnumFont plugin" OFF)
cmake_dependent_option(WITH_MAGNUMFONTCONVERTER "Build MagnumFontConverter plugin" OFF "NOT TARGET_GLES" OFF) cmake_dependent_option(WITH_MAGNUMFONTCONVERTER "Build MagnumFontConverter plugin" OFF "NOT TARGET_GLES" OFF)

8
doc/building.dox

@ -481,6 +481,14 @@ file formats. Additional plugins are provided in a separate plugin repository,
see @ref building-plugins for more information. None of the plugins is built by see @ref building-plugins for more information. None of the plugins is built by
default. default.
- `WITH_ANYAUDIOIMPORTER` --- Build the @ref Audio::AnyImporter "AnyAudioImporter"
plugin. Available only if `WITH_AUDIO` is enabled.
- `WITH_ANYIMAGECONVERTER` --- Build the
@ref Trade::AnyImageConverter "AnyImageConverter" plugin.
- `WITH_ANYIMAGEIMPORTER` --- Build the @ref Trade::AnyImageImporter "AnyImageImporter"
plugin.
- `WITH_ANYSCENEIMPORTER` --- Build the @ref Trade::AnySceneImporter "AnySceneImporter"
plugin.
- `WITH_MAGNUMFONT` --- Build the @ref Text::MagnumFont "MagnumFont" plugin. - `WITH_MAGNUMFONT` --- Build the @ref Text::MagnumFont "MagnumFont" plugin.
Available only if `WITH_TEXT` is enabled. Enables also building of the Available only if `WITH_TEXT` is enabled. Enables also building of the
@ref Trade::TgaImporter "TgaImporter" plugin. @ref Trade::TgaImporter "TgaImporter" plugin.

6
doc/changelog.dox

@ -93,6 +93,12 @@ See also:
targets, no need to call @ref CORRADE_PLUGIN_IMPORT() implicitly anymore. targets, no need to call @ref CORRADE_PLUGIN_IMPORT() implicitly anymore.
For this to work, you just need to update local copies of all Find modules. For this to work, you just need to update local copies of all Find modules.
See @ref plugins-static for more information. See @ref plugins-static for more information.
- The @ref Audio::AnyImporter "AnyAudioImporter", @ref Trade::AnyImageConverter "AnyImageConverter",
@ref Trade::AnyImageImporter "AnyImageImporter" and @ref Trade::AnySceneImporter "AnySceneImporter"
plugins were moved from the plugins repository to the core Magnum
repository. If you are using them statically via CMake, you need to update
your copies of `FindMagnum.cmake` and `FindMagnumPlugins.cmake` modules.
See @ref building and @ref cmake for more information.
@subsection changelog-latest-bugfixes Bug fixes @subsection changelog-latest-bugfixes Bug fixes

7
doc/cmake.dox

@ -141,6 +141,13 @@ loads them dynamically. However, if they are built as static (see
executable and then explicitly imported. Also if you are going to use them as executable and then explicitly imported. Also if you are going to use them as
dependencies, you need to find the dependency and then link to it. dependencies, you need to find the dependency and then link to it.
- `AnyAudioImporter` --- @ref Audio::AnyImporter "AnyAudioImporter" plugin
- `AnyImageConverter` --- @ref Trade::AnyImageConverter "AnyImageConverter"
plugin
- `AnyImageImporter` --- @ref Trade::AnyImageImporter "AnyImageImporter"
plugin
- `AnySceneImporter` --- @ref Trade::AnySceneImporter "AnySceneImporter"
plugin
- `MagnumFont` --- @ref Text::MagnumFont "MagnumFont" plugin - `MagnumFont` --- @ref Text::MagnumFont "MagnumFont" plugin
- `MagnumFontConverter` --- @ref Text::MagnumFontConverter "MagnumFontConverter" - `MagnumFontConverter` --- @ref Text::MagnumFontConverter "MagnumFontConverter"
plugin plugin

12
doc/namespaces.dox

@ -427,6 +427,18 @@ information.
* @brief Magnum plugins (part of @ref building "Magnum library") * @brief Magnum plugins (part of @ref building "Magnum library")
*/ */
/** @dir MagnumPlugins/AnyAudioImporter
* @brief Plugin @ref Magnum::Audio::AnyImporter
*/
/** @dir MagnumPlugins/AnyImageConverter
* @brief Plugin @ref Magnum::Trade::AnyImageConverter
*/
/** @dir MagnumPlugins/AnyImageImporter
* @brief Plugin @ref Magnum::Trade::AnyImageImporter
*/
/** @dir MagnumPlugins/AnySceneImporter
* @brief Plugin @ref Magnum::Trade::AnySceneImporter
*/
/** @dir MagnumPlugins/MagnumFont /** @dir MagnumPlugins/MagnumFont
* @brief Plugin @ref Magnum::Text::MagnumFont * @brief Plugin @ref Magnum::Text::MagnumFont
*/ */

17
modules/FindMagnum.cmake

@ -44,6 +44,10 @@
# OpenGL ES libraries). Additional dependencies are specified by the # OpenGL ES libraries). Additional dependencies are specified by the
# components. The optional components are: # components. The optional components are:
# #
# AnyAudioImporter - Any audio importer
# AnyImageConverter - Any image converter
# AnyImageImporter - Any image importer
# AnySceneImporter - Any scene importer
# Audio - Audio library # Audio - Audio library
# DebugTools - DebugTools library # DebugTools - DebugTools library
# MeshTools - MeshTools library # MeshTools - MeshTools library
@ -391,7 +395,7 @@ endif()
# Component distinction (listing them explicitly to avoid mistakes with finding # Component distinction (listing them explicitly to avoid mistakes with finding
# components from other repositories) # components from other repositories)
set(_MAGNUM_LIBRARY_COMPONENTS "^(Audio|DebugTools|MeshTools|Primitives|SceneGraph|Shaders|Shapes|Text|TextureTools|AndroidApplication|GlfwApplication|GlutApplication|GlxApplication|Sdl2Application|XEglApplication|WindowlessCglApplication|WindowlessEglApplication|WindowlessGlxApplication|WindowlessIosApplication|WindowlessWglApplication|WindowlessWindowsEglApplication|CglContext|EglContext|GlxContext|WglContext|OpenGLTester)$") set(_MAGNUM_LIBRARY_COMPONENTS "^(Audio|DebugTools|MeshTools|Primitives|SceneGraph|Shaders|Shapes|Text|TextureTools|AndroidApplication|GlfwApplication|GlutApplication|GlxApplication|Sdl2Application|XEglApplication|WindowlessCglApplication|WindowlessEglApplication|WindowlessGlxApplication|WindowlessIosApplication|WindowlessWglApplication|WindowlessWindowsEglApplication|CglContext|EglContext|GlxContext|WglContext|OpenGLTester)$")
set(_MAGNUM_PLUGIN_COMPONENTS "^(MagnumFont|MagnumFontConverter|ObjImporter|TgaImageConverter|TgaImporter|WavAudioImporter)$") set(_MAGNUM_PLUGIN_COMPONENTS "^(AnyAudioImporter|AnyImageConverter|AnyImageImporter|AnySceneImporter|MagnumFont|MagnumFontConverter|ObjImporter|TgaImageConverter|TgaImporter|WavAudioImporter)$")
set(_MAGNUM_EXECUTABLE_COMPONENTS "^(distancefieldconverter|fontconverter|imageconverter|info|al-info)$") set(_MAGNUM_EXECUTABLE_COMPONENTS "^(distancefieldconverter|fontconverter|imageconverter|info|al-info)$")
# Find all components # Find all components
@ -634,6 +638,17 @@ foreach(_component ${Magnum_FIND_COMPONENTS})
set(_MAGNUM_${_COMPONENT}_INCLUDE_PATH_NAMES Atlas.h) set(_MAGNUM_${_COMPONENT}_INCLUDE_PATH_NAMES Atlas.h)
endif() endif()
# No special setup for AnyAudioImporter plugin
# No special setup for AnyImageConverter plugin
# No special setup for AnyImageImporter plugin
# No special setup for AnySceneImporter plugin
# No special setup for MagnumFont plugin
# No special setup for MagnumFontConverter plugin
# No special setup for ObjImporter plugin
# No special setup for TgaImageConverter plugin
# No special setup for TgaImporter plugin
# No special setup for WavAudioImporter plugin
# Find library/plugin includes # Find library/plugin includes
if(_component MATCHES ${_MAGNUM_LIBRARY_COMPONENTS} OR _component MATCHES ${_MAGNUM_PLUGIN_COMPONENTS}) if(_component MATCHES ${_MAGNUM_LIBRARY_COMPONENTS} OR _component MATCHES ${_MAGNUM_PLUGIN_COMPONENTS})
find_path(_MAGNUM_${_COMPONENT}_INCLUDE_DIR find_path(_MAGNUM_${_COMPONENT}_INCLUDE_DIR

9
src/MagnumPlugins/AnyAudioImporter/AnyImporter.h

@ -59,13 +59,12 @@ Detects file type based on file extension, loads corresponding plugin and then
tries to open the file with it. tries to open the file with it.
This plugin depends on the @ref Audio library and is built if This plugin depends on the @ref Audio library and is built if
`WITH_ANYAUDIOIMPORTER` is enabled when building Magnum Plugins. To use as a `WITH_ANYAUDIOIMPORTER` is enabled when building Magnum. To use as a dynamic
dynamic plugin, you need to load the @cpp "AnyAudioImporter" @ce plugin from plugin, you need to load the @cpp "AnyAudioImporter" @ce plugin from
`MAGNUM_PLUGINS_IMPORTER_DIR`. To use as a static plugin or as a dependency of `MAGNUM_PLUGINS_IMPORTER_DIR`. To use as a static plugin or as a dependency of
another plugin with CMake, you need to request the `AnyAudioImporter` component another plugin with CMake, you need to request the `AnyAudioImporter` component
of the `MagnumPlugins` package and link to the of the `Magnum` package and link to the `Magnum::AnyAudioImporter` target. See
`MagnumPlugins::AnyAudioImporter` target. See @ref building-plugins, @ref building, @ref cmake and @ref plugins for more information.
@ref cmake-plugins and @ref plugins for more information.
Supported formats: Supported formats:

11
src/MagnumPlugins/AnyAudioImporter/CMakeLists.txt

@ -23,8 +23,6 @@
# DEALINGS IN THE SOFTWARE. # DEALINGS IN THE SOFTWARE.
# #
find_package(Magnum REQUIRED Audio)
if(BUILD_STATIC) if(BUILD_STATIC)
set(MAGNUM_ANYAUDIOIMPORTER_BUILD_STATIC 1) set(MAGNUM_ANYAUDIOIMPORTER_BUILD_STATIC 1)
endif() endif()
@ -43,9 +41,8 @@ add_library(AnyAudioImporterObjects OBJECT
${AnyAudioImporter_SRCS} ${AnyAudioImporter_SRCS}
${AnyAudioImporter_HEADERS}) ${AnyAudioImporter_HEADERS})
target_include_directories(AnyAudioImporterObjects PUBLIC target_include_directories(AnyAudioImporterObjects PUBLIC
$<TARGET_PROPERTY:Magnum::Audio,INTERFACE_INCLUDE_DIRECTORIES> $<TARGET_PROPERTY:Magnum,INTERFACE_INCLUDE_DIRECTORIES>
${PROJECT_SOURCE_DIR}/src $<TARGET_PROPERTY:MagnumAudio,INTERFACE_INCLUDE_DIRECTORIES>)
${PROJECT_BINARY_DIR}/src)
target_compile_definitions(AnyAudioImporterObjects PRIVATE "AnyAudioImporterObjects_EXPORTS") target_compile_definitions(AnyAudioImporterObjects PRIVATE "AnyAudioImporterObjects_EXPORTS")
if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) if(NOT BUILD_STATIC OR BUILD_STATIC_PIC)
set_target_properties(AnyAudioImporterObjects PROPERTIES POSITION_INDEPENDENT_CODE ON) set_target_properties(AnyAudioImporterObjects PROPERTIES POSITION_INDEPENDENT_CODE ON)
@ -65,7 +62,7 @@ endif()
target_include_directories(AnyAudioImporter PUBLIC target_include_directories(AnyAudioImporter PUBLIC
${PROJECT_SOURCE_DIR}/src ${PROJECT_SOURCE_DIR}/src
${PROJECT_BINARY_DIR}/src) ${PROJECT_BINARY_DIR}/src)
target_link_libraries(AnyAudioImporter Magnum::Magnum Magnum::Audio) target_link_libraries(AnyAudioImporter PUBLIC Magnum MagnumAudio)
install(FILES ${AnyAudioImporter_HEADERS} DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyAudioImporter) install(FILES ${AnyAudioImporter_HEADERS} DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyAudioImporter)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/configure.h DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyAudioImporter) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/configure.h DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyAudioImporter)
@ -86,7 +83,7 @@ if(BUILD_TESTS)
${PROJECT_SOURCE_DIR}/src ${PROJECT_SOURCE_DIR}/src
${PROJECT_BINARY_DIR}/src) ${PROJECT_BINARY_DIR}/src)
set_target_properties(MagnumAnyAudioImporterTestLib PROPERTIES FOLDER "MagnumPlugins/AnyAudioImporter") set_target_properties(MagnumAnyAudioImporterTestLib PROPERTIES FOLDER "MagnumPlugins/AnyAudioImporter")
target_link_libraries(MagnumAnyAudioImporterTestLib Magnum::Magnum Magnum::Audio) target_link_libraries(MagnumAnyAudioImporterTestLib PUBLIC Magnum MagnumAudio)
add_subdirectory(Test) add_subdirectory(Test)
endif() endif()

7
src/MagnumPlugins/AnyAudioImporter/Test/CMakeLists.txt

@ -25,10 +25,8 @@
if(CORRADE_TARGET_EMSCRIPTEN OR CORRADE_TARGET_ANDROID) if(CORRADE_TARGET_EMSCRIPTEN OR CORRADE_TARGET_ANDROID)
set(WAV_FILE stereo8.wav) set(WAV_FILE stereo8.wav)
set(OGG_FILE mono16.ogg)
else() else()
set(WAV_FILE ${PROJECT_SOURCE_DIR}/src/MagnumPlugins/DrWavAudioImporter/Test/stereo8.wav) set(WAV_FILE ${PROJECT_SOURCE_DIR}/src/MagnumPlugins/WavAudioImporter/Test/stereo8.wav)
set(OGG_FILE ${PROJECT_SOURCE_DIR}/src/MagnumPlugins/StbVorbisAudioImporter/Test/mono16.ogg)
endif() endif()
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/configure.h.cmake configure_file(${CMAKE_CURRENT_SOURCE_DIR}/configure.h.cmake
@ -37,8 +35,7 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/configure.h.cmake
corrade_add_test(AnyAudioImporterTest Test.cpp corrade_add_test(AnyAudioImporterTest Test.cpp
LIBRARIES MagnumAnyAudioImporterTestLib LIBRARIES MagnumAnyAudioImporterTestLib
FILES FILES
../../DrWavAudioImporter/Test/stereo8.wav ../../WavAudioImporter/Test/stereo8.wav)
../../StbVorbisAudioImporter/Test/mono16.ogg)
target_include_directories(AnyAudioImporterTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) target_include_directories(AnyAudioImporterTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
# On Win32 we need to avoid dllimporting AnyAudioImporter symbols, because it # On Win32 we need to avoid dllimporting AnyAudioImporter symbols, because it
# would search for the symbols in some DLL even when they were linked # would search for the symbols in some DLL even when they were linked

14
src/MagnumPlugins/AnyAudioImporter/Test/Test.cpp

@ -37,7 +37,6 @@ struct AnyImporterTest: TestSuite::Tester {
explicit AnyImporterTest(); explicit AnyImporterTest();
void wav(); void wav();
void ogg();
void unknown(); void unknown();
@ -47,7 +46,6 @@ private:
AnyImporterTest::AnyImporterTest(): _manager{MAGNUM_PLUGINS_AUDIOIMPORTER_DIR} { AnyImporterTest::AnyImporterTest(): _manager{MAGNUM_PLUGINS_AUDIOIMPORTER_DIR} {
addTests({&AnyImporterTest::wav, addTests({&AnyImporterTest::wav,
&AnyImporterTest::ogg,
&AnyImporterTest::unknown}); &AnyImporterTest::unknown});
} }
@ -64,18 +62,6 @@ void AnyImporterTest::wav() {
CORRADE_COMPARE(importer.frequency(), 96000); CORRADE_COMPARE(importer.frequency(), 96000);
} }
void AnyImporterTest::ogg() {
if(_manager.loadState("VorbisAudioImporter") == PluginManager::LoadState::NotFound)
CORRADE_SKIP("VorbisAudioImporter plugin not found, cannot test");
AnyImporter importer{_manager};
CORRADE_VERIFY(importer.openFile(OGG_FILE));
/* Check only parameters, as it is good enough proof that it is working */
CORRADE_COMPARE(importer.format(), Buffer::Format::Mono16);
CORRADE_COMPARE(importer.frequency(), 96000);
}
void AnyImporterTest::unknown() { void AnyImporterTest::unknown() {
std::ostringstream output; std::ostringstream output;
Error redirectError{&output}; Error redirectError{&output};

1
src/MagnumPlugins/AnyAudioImporter/Test/configure.h.cmake

@ -30,4 +30,3 @@
#endif #endif
#define WAV_FILE "${WAV_FILE}" #define WAV_FILE "${WAV_FILE}"
#define OGG_FILE "${OGG_FILE}"

9
src/MagnumPlugins/AnyImageConverter/AnyImageConverter.h

@ -58,13 +58,12 @@ Detects file type based on file extension, loads corresponding plugin and then
tries to convert the file with it. tries to convert the file with it.
This plugin depends on the @ref Trade library and is built if This plugin depends on the @ref Trade library and is built if
`WITH_ANYIMAGECONVERTER` is enabled when building Magnum Plugins. To use as a `WITH_ANYIMAGECONVERTER` is enabled when building Magnum. To use as a dynamic
dynamic plugin, you need to load the @cpp "AnyImageConverter" @ce plugin from plugin, you need to load the @cpp "AnyImageConverter" @ce plugin from
`MAGNUM_PLUGINS_IMPORTER_DIR`. To use as a static plugin or as a dependency of `MAGNUM_PLUGINS_IMPORTER_DIR`. To use as a static plugin or as a dependency of
another plugin with CMake, you need to request the `AnyImageConverter` another plugin with CMake, you need to request the `AnyImageConverter`
component of the `MagnumPlugins` package and link to the component of the `Magnum` package and link to the `Magnum::AnyImageConverter`
`MagnumPlugins::AnyImageConverter` target. See @ref building-plugins, target. See @ref building, @ref cmake and @ref plugins for more information.
@ref cmake-plugins and @ref plugins for more information.
Supported formats for uncompressed data: Supported formats for uncompressed data:

8
src/MagnumPlugins/AnyImageConverter/CMakeLists.txt

@ -41,9 +41,7 @@ add_library(AnyImageConverterObjects OBJECT
${AnyImageConverter_SRCS} ${AnyImageConverter_SRCS}
${AnyImageConverter_HEADERS}) ${AnyImageConverter_HEADERS})
target_include_directories(AnyImageConverterObjects PUBLIC target_include_directories(AnyImageConverterObjects PUBLIC
$<TARGET_PROPERTY:Magnum::Magnum,INTERFACE_INCLUDE_DIRECTORIES> $<TARGET_PROPERTY:Magnum,INTERFACE_INCLUDE_DIRECTORIES>)
${PROJECT_SOURCE_DIR}/src
${PROJECT_BINARY_DIR}/src)
target_compile_definitions(AnyImageConverterObjects PRIVATE "AnyImageConverterObjects_EXPORTS") target_compile_definitions(AnyImageConverterObjects PRIVATE "AnyImageConverterObjects_EXPORTS")
if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) if(NOT BUILD_STATIC OR BUILD_STATIC_PIC)
set_target_properties(AnyImageConverterObjects PROPERTIES POSITION_INDEPENDENT_CODE ON) set_target_properties(AnyImageConverterObjects PROPERTIES POSITION_INDEPENDENT_CODE ON)
@ -63,7 +61,7 @@ endif()
target_include_directories(AnyImageConverter PUBLIC target_include_directories(AnyImageConverter PUBLIC
${PROJECT_SOURCE_DIR}/src ${PROJECT_SOURCE_DIR}/src
${PROJECT_BINARY_DIR}/src) ${PROJECT_BINARY_DIR}/src)
target_link_libraries(AnyImageConverter Magnum::Magnum) target_link_libraries(AnyImageConverter PUBLIC Magnum)
install(FILES ${AnyImageConverter_HEADERS} DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyImageConverter) install(FILES ${AnyImageConverter_HEADERS} DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyImageConverter)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/configure.h DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyImageConverter) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/configure.h DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyImageConverter)
@ -84,7 +82,7 @@ if(BUILD_TESTS)
${PROJECT_SOURCE_DIR}/src ${PROJECT_SOURCE_DIR}/src
${PROJECT_BINARY_DIR}/src) ${PROJECT_BINARY_DIR}/src)
set_target_properties(MagnumAnyImageConverterTestLib PROPERTIES FOLDER "MagnumPlugins/AnyImageConverter") set_target_properties(MagnumAnyImageConverterTestLib PROPERTIES FOLDER "MagnumPlugins/AnyImageConverter")
target_link_libraries(MagnumAnyImageConverterTestLib Magnum::Magnum) target_link_libraries(MagnumAnyImageConverterTestLib PUBLIC Magnum)
add_subdirectory(Test) add_subdirectory(Test)
endif() endif()

17
src/MagnumPlugins/AnyImageConverter/Test/Test.cpp

@ -27,8 +27,9 @@
#include <Corrade/TestSuite/Tester.h> #include <Corrade/TestSuite/Tester.h>
#include <Corrade/Utility/Directory.h> #include <Corrade/Utility/Directory.h>
#include <Corrade/PluginManager/Manager.h> #include <Corrade/PluginManager/Manager.h>
#include <Magnum/PixelFormat.h>
#include <Magnum/Trade/ImageData.h> #include "Magnum/PixelFormat.h"
#include "Magnum/Trade/ImageData.h"
#include "MagnumPlugins/AnyImageConverter/AnyImageConverter.h" #include "MagnumPlugins/AnyImageConverter/AnyImageConverter.h"
@ -39,7 +40,7 @@ namespace Magnum { namespace Trade { namespace Test {
struct AnyImageConverterTest: TestSuite::Tester { struct AnyImageConverterTest: TestSuite::Tester {
explicit AnyImageConverterTest(); explicit AnyImageConverterTest();
void png(); void tga();
void unknown(); void unknown();
@ -48,7 +49,7 @@ struct AnyImageConverterTest: TestSuite::Tester {
}; };
AnyImageConverterTest::AnyImageConverterTest(): _manager{MAGNUM_PLUGINS_IMAGECONVERTER_DIR} { AnyImageConverterTest::AnyImageConverterTest(): _manager{MAGNUM_PLUGINS_IMAGECONVERTER_DIR} {
addTests({&AnyImageConverterTest::png, addTests({&AnyImageConverterTest::tga,
&AnyImageConverterTest::unknown}); &AnyImageConverterTest::unknown});
} }
@ -63,11 +64,11 @@ namespace {
const ImageView2D Image{PixelFormat::RGB, PixelType::UnsignedByte, {2, 3}, Data}; const ImageView2D Image{PixelFormat::RGB, PixelType::UnsignedByte, {2, 3}, Data};
} }
void AnyImageConverterTest::png() { void AnyImageConverterTest::tga() {
if(_manager.loadState("PngImageConverter") == PluginManager::LoadState::NotFound) if(_manager.loadState("TgaImageConverter") == PluginManager::LoadState::NotFound)
CORRADE_SKIP("PngImageConverter plugin not found, cannot test"); CORRADE_SKIP("TgaImageConverter plugin not found, cannot test");
const std::string filename = Utility::Directory::join(ANYIMAGECONVERTER_TEST_DIR, "output.png"); const std::string filename = Utility::Directory::join(ANYIMAGECONVERTER_TEST_DIR, "output.tga");
if(Utility::Directory::fileExists(filename)) if(Utility::Directory::fileExists(filename))
CORRADE_VERIFY(Utility::Directory::rm(filename)); CORRADE_VERIFY(Utility::Directory::rm(filename));

9
src/MagnumPlugins/AnyImageImporter/AnyImageImporter.h

@ -58,13 +58,12 @@ Detects file type based on file extension, loads corresponding plugin and then
tries to open the file with it. tries to open the file with it.
This plugin depends on the @ref Trade library and is built if This plugin depends on the @ref Trade library and is built if
`WITH_ANYIMAGEIMPORTER` is enabled when building Magnum Plugins. To use as a `WITH_ANYIMAGEIMPORTER` is enabled when building Magnum. To use as a dynamic
dynamic plugin, you need to load the @cpp "AnyImageImporter" @ce plugin from plugin, you need to load the @cpp "AnyImageImporter" @ce plugin from
`MAGNUM_PLUGINS_IMPORTER_DIR`. To use as a static plugin or as a dependency of `MAGNUM_PLUGINS_IMPORTER_DIR`. To use as a static plugin or as a dependency of
another plugin with CMake, you need to request the `AnyImageImporter` component another plugin with CMake, you need to request the `AnyImageImporter` component
of the `MagnumPlugins` package and link to the of the `Magnum` package and link to the `Magnum::AnyImageImporter` target. See
`MagnumPlugins::AnyImageImporter` target. See @ref building-plugins, @ref building, @ref cmake and @ref plugins for more information.
@ref cmake-plugins and @ref plugins for more information.
Supported formats: Supported formats:

8
src/MagnumPlugins/AnyImageImporter/CMakeLists.txt

@ -41,9 +41,7 @@ add_library(AnyImageImporterObjects OBJECT
${AnyImageImporter_SRCS} ${AnyImageImporter_SRCS}
${AnyImageImporter_HEADERS}) ${AnyImageImporter_HEADERS})
target_include_directories(AnyImageImporterObjects PUBLIC target_include_directories(AnyImageImporterObjects PUBLIC
$<TARGET_PROPERTY:Magnum::Magnum,INTERFACE_INCLUDE_DIRECTORIES> $<TARGET_PROPERTY:Magnum,INTERFACE_INCLUDE_DIRECTORIES>)
${PROJECT_SOURCE_DIR}/src
${PROJECT_BINARY_DIR}/src)
target_compile_definitions(AnyImageImporterObjects PRIVATE "AnyImageImporterObjects_EXPORTS") target_compile_definitions(AnyImageImporterObjects PRIVATE "AnyImageImporterObjects_EXPORTS")
if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) if(NOT BUILD_STATIC OR BUILD_STATIC_PIC)
set_target_properties(AnyImageImporterObjects PROPERTIES POSITION_INDEPENDENT_CODE ON) set_target_properties(AnyImageImporterObjects PROPERTIES POSITION_INDEPENDENT_CODE ON)
@ -63,7 +61,7 @@ endif()
target_include_directories(AnyImageImporter PUBLIC target_include_directories(AnyImageImporter PUBLIC
${PROJECT_SOURCE_DIR}/src ${PROJECT_SOURCE_DIR}/src
${PROJECT_BINARY_DIR}/src) ${PROJECT_BINARY_DIR}/src)
target_link_libraries(AnyImageImporter Magnum::Magnum) target_link_libraries(AnyImageImporter PUBLIC Magnum)
install(FILES ${AnyImageImporter_HEADERS} DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyImageImporter) install(FILES ${AnyImageImporter_HEADERS} DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyImageImporter)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/configure.h DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyImageImporter) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/configure.h DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnyImageImporter)
@ -84,7 +82,7 @@ if(BUILD_TESTS)
${PROJECT_SOURCE_DIR}/src ${PROJECT_SOURCE_DIR}/src
${PROJECT_BINARY_DIR}/src) ${PROJECT_BINARY_DIR}/src)
set_target_properties(MagnumAnyImageImporterTestLib PROPERTIES FOLDER "MagnumPlugins/AnyImageImporter") set_target_properties(MagnumAnyImageImporterTestLib PROPERTIES FOLDER "MagnumPlugins/AnyImageImporter")
target_link_libraries(MagnumAnyImageImporterTestLib Magnum::Magnum) target_link_libraries(MagnumAnyImageImporterTestLib PUBLIC Magnum)
add_subdirectory(Test) add_subdirectory(Test)
endif() endif()

12
src/MagnumPlugins/AnyImageImporter/Test/CMakeLists.txt

@ -24,13 +24,9 @@
# #
if(CORRADE_TARGET_EMSCRIPTEN OR CORRADE_TARGET_ANDROID) if(CORRADE_TARGET_EMSCRIPTEN OR CORRADE_TARGET_ANDROID)
set(TGA_FILE image.tga) set(TGA_FILE file.tga)
set(JPEG_FILE rgb.jpg)
set(PNG_FILE rgb.png)
else() else()
set(TGA_FILE ${PROJECT_SOURCE_DIR}/src/MagnumPlugins/ColladaImporter/Test/ColladaImporterTestFiles/image.tga) set(TGA_FILE ${PROJECT_SOURCE_DIR}/src/MagnumPlugins/TgaImporter/Test/file.tga)
set(JPEG_FILE ${PROJECT_SOURCE_DIR}/src/MagnumPlugins/JpegImporter/Test/rgb.jpg)
set(PNG_FILE ${PROJECT_SOURCE_DIR}/src/MagnumPlugins/PngImporter/Test/rgb.png)
endif() endif()
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/configure.h.cmake configure_file(${CMAKE_CURRENT_SOURCE_DIR}/configure.h.cmake
@ -39,9 +35,7 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/configure.h.cmake
corrade_add_test(AnyImageImporterTest Test.cpp corrade_add_test(AnyImageImporterTest Test.cpp
LIBRARIES MagnumAnyImageImporterTestLib LIBRARIES MagnumAnyImageImporterTestLib
FILES FILES
../../ColladaImporter/Test/ColladaImporterTestFiles/image.tga ../../TgaImporter/Test/file.tga)
../../JpegImporter/Test/rgb.jpg
../../PngImporter/Test/rgb.png)
target_include_directories(AnyImageImporterTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) target_include_directories(AnyImageImporterTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
# On Win32 we need to avoid dllimporting AnyImageImporter symbols, because it # On Win32 we need to avoid dllimporting AnyImageImporter symbols, because it
# would search for the symbols in some DLL even when they were linked # would search for the symbols in some DLL even when they were linked

33
src/MagnumPlugins/AnyImageImporter/Test/Test.cpp

@ -26,7 +26,8 @@
#include <sstream> #include <sstream>
#include <Corrade/PluginManager/Manager.h> #include <Corrade/PluginManager/Manager.h>
#include <Corrade/TestSuite/Tester.h> #include <Corrade/TestSuite/Tester.h>
#include <Magnum/Trade/ImageData.h>
#include "Magnum/Trade/ImageData.h"
#include "MagnumPlugins/AnyImageImporter/AnyImageImporter.h" #include "MagnumPlugins/AnyImageImporter/AnyImageImporter.h"
@ -38,8 +39,6 @@ struct AnyImageImporterTest: TestSuite::Tester {
explicit AnyImageImporterTest(); explicit AnyImageImporterTest();
void tga(); void tga();
void jpeg();
void png();
void unknown(); void unknown();
@ -49,8 +48,6 @@ struct AnyImageImporterTest: TestSuite::Tester {
AnyImageImporterTest::AnyImageImporterTest(): _manager{MAGNUM_PLUGINS_IMPORTER_DIR} { AnyImageImporterTest::AnyImageImporterTest(): _manager{MAGNUM_PLUGINS_IMPORTER_DIR} {
addTests({&AnyImageImporterTest::tga, addTests({&AnyImageImporterTest::tga,
&AnyImageImporterTest::jpeg,
&AnyImageImporterTest::png,
&AnyImageImporterTest::unknown}); &AnyImageImporterTest::unknown});
} }
@ -68,32 +65,6 @@ void AnyImageImporterTest::tga() {
CORRADE_COMPARE(image->size(), Vector2i(2, 3)); CORRADE_COMPARE(image->size(), Vector2i(2, 3));
} }
void AnyImageImporterTest::jpeg() {
if(_manager.loadState("JpegImporter") == PluginManager::LoadState::NotFound)
CORRADE_SKIP("JpegImporter plugin not found, cannot test");
AnyImageImporter importer{_manager};
CORRADE_VERIFY(importer.openFile(JPEG_FILE));
/* Check only size, as it is good enough proof that it is working */
Containers::Optional<ImageData2D> image = importer.image2D(0);
CORRADE_VERIFY(image);
CORRADE_COMPARE(image->size(), Vector2i(3, 2));
}
void AnyImageImporterTest::png() {
if(_manager.loadState("PngImporter") == PluginManager::LoadState::NotFound)
CORRADE_SKIP("PngImporter plugin not found, cannot test");
AnyImageImporter importer{_manager};
CORRADE_VERIFY(importer.openFile(PNG_FILE));
/* Check only size, as it is good enough proof that it is working */
Containers::Optional<ImageData2D> image = importer.image2D(0);
CORRADE_VERIFY(image);
CORRADE_COMPARE(image->size(), Vector2i(3, 2));
}
void AnyImageImporterTest::unknown() { void AnyImageImporterTest::unknown() {
std::ostringstream output; std::ostringstream output;
Error redirectError{&output}; Error redirectError{&output};

2
src/MagnumPlugins/AnyImageImporter/Test/configure.h.cmake

@ -30,5 +30,3 @@
#endif #endif
#define TGA_FILE "${TGA_FILE}" #define TGA_FILE "${TGA_FILE}"
#define JPEG_FILE "${JPEG_FILE}"
#define PNG_FILE "${PNG_FILE}"

9
src/MagnumPlugins/AnySceneImporter/AnySceneImporter.h

@ -58,13 +58,12 @@ Detects file type based on file extension, loads corresponding plugin and then
tries to open the file with it. tries to open the file with it.
This plugin depends on the @ref Trade library and is built if This plugin depends on the @ref Trade library and is built if
`WITH_ANYSCENEIMPORTER` is enabled when building Magnum Plugins. To use as a `WITH_ANYSCENEIMPORTER` is enabled when building Magnum. To use as a dynamic
dynamic plugin, you need to load the @cpp "AnySceneImporter" @ce plugin from plugin, you need to load the @cpp "AnySceneImporter" @ce plugin from
`MAGNUM_PLUGINS_IMPORTER_DIR`. To use as a static plugin or as a dependency of `MAGNUM_PLUGINS_IMPORTER_DIR`. To use as a static plugin or as a dependency of
another plugin with CMake, you need to request the `AnySceneImporter` component another plugin with CMake, you need to request the `AnySceneImporter` component
of the `MagnumPlugins` package in CMake and link to the of the `Magnum` package in CMake and link to the `Magnum::AnySceneImporter`
`MagnumPlugins::AnySceneImporter` target. See @ref building-plugins, target. See @ref building, @ref cmake and @ref plugins for more information.
@ref cmake-plugins and @ref plugins for more information.
Supported formats: Supported formats:

8
src/MagnumPlugins/AnySceneImporter/CMakeLists.txt

@ -41,9 +41,7 @@ add_library(AnySceneImporterObjects OBJECT
${AnySceneImporter_SRCS} ${AnySceneImporter_SRCS}
${AnySceneImporter_HEADERS}) ${AnySceneImporter_HEADERS})
target_include_directories(AnySceneImporterObjects PUBLIC target_include_directories(AnySceneImporterObjects PUBLIC
$<TARGET_PROPERTY:Magnum::Magnum,INTERFACE_INCLUDE_DIRECTORIES> $<TARGET_PROPERTY:Magnum,INTERFACE_INCLUDE_DIRECTORIES>)
${PROJECT_SOURCE_DIR}/src
${PROJECT_BINARY_DIR}/src)
target_compile_definitions(AnySceneImporterObjects PRIVATE "AnySceneImporterObjects_EXPORTS") target_compile_definitions(AnySceneImporterObjects PRIVATE "AnySceneImporterObjects_EXPORTS")
if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) if(NOT BUILD_STATIC OR BUILD_STATIC_PIC)
set_target_properties(AnySceneImporterObjects PROPERTIES POSITION_INDEPENDENT_CODE ON) set_target_properties(AnySceneImporterObjects PROPERTIES POSITION_INDEPENDENT_CODE ON)
@ -63,7 +61,7 @@ endif()
target_include_directories(AnySceneImporter PUBLIC target_include_directories(AnySceneImporter PUBLIC
${PROJECT_SOURCE_DIR}/src ${PROJECT_SOURCE_DIR}/src
${PROJECT_BINARY_DIR}/src) ${PROJECT_BINARY_DIR}/src)
target_link_libraries(AnySceneImporter Magnum::Magnum) target_link_libraries(AnySceneImporter PUBLIC Magnum)
install(FILES ${AnySceneImporter_HEADERS} DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnySceneImporter) install(FILES ${AnySceneImporter_HEADERS} DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnySceneImporter)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/configure.h DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnySceneImporter) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/configure.h DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnySceneImporter)
@ -84,7 +82,7 @@ if(BUILD_TESTS)
${PROJECT_SOURCE_DIR}/src ${PROJECT_SOURCE_DIR}/src
${PROJECT_BINARY_DIR}/src) ${PROJECT_BINARY_DIR}/src)
set_target_properties(MagnumAnySceneImporterTestLib PROPERTIES FOLDER "MagnumPlugins/AnySceneImporter") set_target_properties(MagnumAnySceneImporterTestLib PROPERTIES FOLDER "MagnumPlugins/AnySceneImporter")
target_link_libraries(MagnumAnySceneImporterTestLib Magnum::Magnum) target_link_libraries(MagnumAnySceneImporterTestLib PUBLIC Magnum)
add_subdirectory(Test) add_subdirectory(Test)
endif() endif()

9
src/MagnumPlugins/AnySceneImporter/Test/CMakeLists.txt

@ -24,11 +24,9 @@
# #
if(CORRADE_TARGET_EMSCRIPTEN OR CORRADE_TARGET_ANDROID) if(CORRADE_TARGET_EMSCRIPTEN OR CORRADE_TARGET_ANDROID)
set(OBJ_FILE mesh.obj) set(OBJ_FILE pointMesh.obj)
set(PLY_FILE common.ply)
else() else()
set(OBJ_FILE ${CMAKE_CURRENT_SOURCE_DIR}/mesh.obj) set(OBJ_FILE ${PROJECT_SOURCE_DIR}/src/MagnumPlugins/ObjImporter/Test/pointMesh.obj)
set(PLY_FILE ${PROJECT_SOURCE_DIR}/src/MagnumPlugins/StanfordImporter/Test/common.ply)
endif() endif()
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/configure.h.cmake configure_file(${CMAKE_CURRENT_SOURCE_DIR}/configure.h.cmake
@ -37,8 +35,7 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/configure.h.cmake
corrade_add_test(AnySceneImporterTest Test.cpp corrade_add_test(AnySceneImporterTest Test.cpp
LIBRARIES MagnumAnySceneImporterTestLib LIBRARIES MagnumAnySceneImporterTestLib
FILES FILES
mesh.obj ../../ObjImporter/Test/pointMesh.obj)
../../StanfordImporter/Test/common.ply)
target_include_directories(AnySceneImporterTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) target_include_directories(AnySceneImporterTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
# On Win32 we need to avoid dllimporting AnySceneImporter symbols, because it # On Win32 we need to avoid dllimporting AnySceneImporter symbols, because it
# would search for the symbols in some DLL even when they were linked # would search for the symbols in some DLL even when they were linked

20
src/MagnumPlugins/AnySceneImporter/Test/Test.cpp

@ -26,8 +26,9 @@
#include <sstream> #include <sstream>
#include <Corrade/PluginManager/Manager.h> #include <Corrade/PluginManager/Manager.h>
#include <Corrade/TestSuite/Tester.h> #include <Corrade/TestSuite/Tester.h>
#include <Magnum/Math/Vector3.h>
#include <Magnum/Trade/MeshData3D.h> #include "Magnum/Math/Vector3.h"
#include "Magnum/Trade/MeshData3D.h"
#include "MagnumPlugins/AnySceneImporter/AnySceneImporter.h" #include "MagnumPlugins/AnySceneImporter/AnySceneImporter.h"
@ -39,7 +40,6 @@ struct AnySceneImporterTest: TestSuite::Tester {
explicit AnySceneImporterTest(); explicit AnySceneImporterTest();
void obj(); void obj();
void ply();
void unknown(); void unknown();
@ -49,7 +49,6 @@ struct AnySceneImporterTest: TestSuite::Tester {
AnySceneImporterTest::AnySceneImporterTest(): _manager{MAGNUM_PLUGINS_IMPORTER_DIR} { AnySceneImporterTest::AnySceneImporterTest(): _manager{MAGNUM_PLUGINS_IMPORTER_DIR} {
addTests({&AnySceneImporterTest::obj, addTests({&AnySceneImporterTest::obj,
&AnySceneImporterTest::ply,
&AnySceneImporterTest::unknown}); &AnySceneImporterTest::unknown});
} }
@ -67,19 +66,6 @@ void AnySceneImporterTest::obj() {
CORRADE_COMPARE(mesh->positions(0).size(), 3); CORRADE_COMPARE(mesh->positions(0).size(), 3);
} }
void AnySceneImporterTest::ply() {
if(_manager.loadState("StanfordImporter") == PluginManager::LoadState::NotFound)
CORRADE_SKIP("StanfordImporter plugin not found, cannot test");
AnySceneImporter importer{_manager};
CORRADE_VERIFY(importer.openFile(PLY_FILE));
/* Check only size, as it is good enough proof that it is working */
Containers::Optional<MeshData3D> mesh = importer.mesh3D(0);
CORRADE_VERIFY(mesh);
CORRADE_COMPARE(mesh->positions(0).size(), 5);
}
void AnySceneImporterTest::unknown() { void AnySceneImporterTest::unknown() {
std::ostringstream output; std::ostringstream output;
Error redirectError{&output}; Error redirectError{&output};

1
src/MagnumPlugins/AnySceneImporter/Test/configure.h.cmake

@ -30,4 +30,3 @@
#endif #endif
#define OBJ_FILE "${OBJ_FILE}" #define OBJ_FILE "${OBJ_FILE}"
#define PLY_FILE "${PLY_FILE}"

10
src/MagnumPlugins/AnySceneImporter/Test/mesh.obj

@ -1,10 +0,0 @@
# Positions
v 0.5 2 3
v 0 1.5 1
v 2 3 5.0
# Points
p 1
p 3
p 2
p 1

16
src/MagnumPlugins/CMakeLists.txt

@ -34,6 +34,22 @@ macro(add_plugin plugin_name debug_install_dirs release_install_dirs metadata_fi
endif() endif()
endmacro() endmacro()
if(WITH_AUDIO AND WITH_ANYAUDIOIMPORTER)
add_subdirectory(AnyAudioImporter)
endif()
if(WITH_ANYIMAGEIMPORTER)
add_subdirectory(AnyImageImporter)
endif()
if(WITH_ANYIMAGECONVERTER)
add_subdirectory(AnyImageConverter)
endif()
if(WITH_ANYSCENEIMPORTER)
add_subdirectory(AnySceneImporter)
endif()
if(WITH_TEXT AND WITH_MAGNUMFONT) if(WITH_TEXT AND WITH_MAGNUMFONT)
add_subdirectory(MagnumFont) add_subdirectory(MagnumFont)
endif() endif()

Loading…
Cancel
Save