From 8a2815ade58c29d0edc83cd988157b3c3a7e6efe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Tue, 20 Mar 2018 13:15:46 +0100 Subject: [PATCH] Integrated the Any* plugins to the buildsystem and docs. --- CMakeLists.txt | 4 +++ doc/building.dox | 8 +++++ doc/changelog.dox | 6 ++++ doc/cmake.dox | 7 ++++ doc/namespaces.dox | 12 +++++++ modules/FindMagnum.cmake | 17 +++++++++- .../AnyAudioImporter/AnyImporter.h | 9 +++-- .../AnyAudioImporter/CMakeLists.txt | 11 +++---- .../AnyAudioImporter/Test/CMakeLists.txt | 7 ++-- .../AnyAudioImporter/Test/Test.cpp | 14 -------- .../AnyAudioImporter/Test/configure.h.cmake | 1 - .../AnyImageConverter/AnyImageConverter.h | 9 +++-- .../AnyImageConverter/CMakeLists.txt | 8 ++--- .../AnyImageConverter/Test/Test.cpp | 17 +++++----- .../AnyImageImporter/AnyImageImporter.h | 9 +++-- .../AnyImageImporter/CMakeLists.txt | 8 ++--- .../AnyImageImporter/Test/CMakeLists.txt | 12 ++----- .../AnyImageImporter/Test/Test.cpp | 33 ++----------------- .../AnyImageImporter/Test/configure.h.cmake | 2 -- .../AnySceneImporter/AnySceneImporter.h | 9 +++-- .../AnySceneImporter/CMakeLists.txt | 8 ++--- .../AnySceneImporter/Test/CMakeLists.txt | 9 ++--- .../AnySceneImporter/Test/Test.cpp | 20 ++--------- .../AnySceneImporter/Test/configure.h.cmake | 1 - .../AnySceneImporter/Test/mesh.obj | 10 ------ src/MagnumPlugins/CMakeLists.txt | 16 +++++++++ 26 files changed, 120 insertions(+), 147 deletions(-) delete mode 100644 src/MagnumPlugins/AnySceneImporter/Test/mesh.obj diff --git a/CMakeLists.txt b/CMakeLists.txt index 7a23e530f..513b8eb99 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -89,6 +89,10 @@ endif() option(WITH_IMAGECONVERTER "Build magnum-imageconverter utility" OFF) # 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_MAGNUMFONT "Build MagnumFont plugin" OFF) cmake_dependent_option(WITH_MAGNUMFONTCONVERTER "Build MagnumFontConverter plugin" OFF "NOT TARGET_GLES" OFF) diff --git a/doc/building.dox b/doc/building.dox index 7971b4ac2..b31e35b45 100644 --- a/doc/building.dox +++ b/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 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. Available only if `WITH_TEXT` is enabled. Enables also building of the @ref Trade::TgaImporter "TgaImporter" plugin. diff --git a/doc/changelog.dox b/doc/changelog.dox index 8c9860668..bc640bcbd 100644 --- a/doc/changelog.dox +++ b/doc/changelog.dox @@ -93,6 +93,12 @@ See also: 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. 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 diff --git a/doc/cmake.dox b/doc/cmake.dox index 41826c79d..11e70eea9 100644 --- a/doc/cmake.dox +++ b/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 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 - `MagnumFontConverter` --- @ref Text::MagnumFontConverter "MagnumFontConverter" plugin diff --git a/doc/namespaces.dox b/doc/namespaces.dox index 93b04afe1..8404bde69 100644 --- a/doc/namespaces.dox +++ b/doc/namespaces.dox @@ -427,6 +427,18 @@ information. * @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 * @brief Plugin @ref Magnum::Text::MagnumFont */ diff --git a/modules/FindMagnum.cmake b/modules/FindMagnum.cmake index b7efe930f..357495425 100644 --- a/modules/FindMagnum.cmake +++ b/modules/FindMagnum.cmake @@ -44,6 +44,10 @@ # OpenGL ES libraries). Additional dependencies are specified by the # components. The optional components are: # +# AnyAudioImporter - Any audio importer +# AnyImageConverter - Any image converter +# AnyImageImporter - Any image importer +# AnySceneImporter - Any scene importer # Audio - Audio library # DebugTools - DebugTools library # MeshTools - MeshTools library @@ -391,7 +395,7 @@ endif() # Component distinction (listing them explicitly to avoid mistakes with finding # 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_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)$") # Find all components @@ -634,6 +638,17 @@ foreach(_component ${Magnum_FIND_COMPONENTS}) set(_MAGNUM_${_COMPONENT}_INCLUDE_PATH_NAMES Atlas.h) 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 if(_component MATCHES ${_MAGNUM_LIBRARY_COMPONENTS} OR _component MATCHES ${_MAGNUM_PLUGIN_COMPONENTS}) find_path(_MAGNUM_${_COMPONENT}_INCLUDE_DIR diff --git a/src/MagnumPlugins/AnyAudioImporter/AnyImporter.h b/src/MagnumPlugins/AnyAudioImporter/AnyImporter.h index 4c0eb8f67..c521428db 100644 --- a/src/MagnumPlugins/AnyAudioImporter/AnyImporter.h +++ b/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. This plugin depends on the @ref Audio library and is built if -`WITH_ANYAUDIOIMPORTER` is enabled when building Magnum Plugins. To use as a -dynamic plugin, you need to load the @cpp "AnyAudioImporter" @ce plugin from +`WITH_ANYAUDIOIMPORTER` is enabled when building Magnum. To use as a dynamic +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 another plugin with CMake, you need to request the `AnyAudioImporter` component -of the `MagnumPlugins` package and link to the -`MagnumPlugins::AnyAudioImporter` target. See @ref building-plugins, -@ref cmake-plugins and @ref plugins for more information. +of the `Magnum` package and link to the `Magnum::AnyAudioImporter` target. See +@ref building, @ref cmake and @ref plugins for more information. Supported formats: diff --git a/src/MagnumPlugins/AnyAudioImporter/CMakeLists.txt b/src/MagnumPlugins/AnyAudioImporter/CMakeLists.txt index 3300b05fe..1e1d0afc6 100644 --- a/src/MagnumPlugins/AnyAudioImporter/CMakeLists.txt +++ b/src/MagnumPlugins/AnyAudioImporter/CMakeLists.txt @@ -23,8 +23,6 @@ # DEALINGS IN THE SOFTWARE. # -find_package(Magnum REQUIRED Audio) - if(BUILD_STATIC) set(MAGNUM_ANYAUDIOIMPORTER_BUILD_STATIC 1) endif() @@ -43,9 +41,8 @@ add_library(AnyAudioImporterObjects OBJECT ${AnyAudioImporter_SRCS} ${AnyAudioImporter_HEADERS}) target_include_directories(AnyAudioImporterObjects PUBLIC - $ - ${PROJECT_SOURCE_DIR}/src - ${PROJECT_BINARY_DIR}/src) + $ + $) target_compile_definitions(AnyAudioImporterObjects PRIVATE "AnyAudioImporterObjects_EXPORTS") if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) set_target_properties(AnyAudioImporterObjects PROPERTIES POSITION_INDEPENDENT_CODE ON) @@ -65,7 +62,7 @@ endif() target_include_directories(AnyAudioImporter PUBLIC ${PROJECT_SOURCE_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 ${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_BINARY_DIR}/src) 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) endif() diff --git a/src/MagnumPlugins/AnyAudioImporter/Test/CMakeLists.txt b/src/MagnumPlugins/AnyAudioImporter/Test/CMakeLists.txt index 76b6b54b8..9d9484bfd 100644 --- a/src/MagnumPlugins/AnyAudioImporter/Test/CMakeLists.txt +++ b/src/MagnumPlugins/AnyAudioImporter/Test/CMakeLists.txt @@ -25,10 +25,8 @@ if(CORRADE_TARGET_EMSCRIPTEN OR CORRADE_TARGET_ANDROID) set(WAV_FILE stereo8.wav) - set(OGG_FILE mono16.ogg) else() - set(WAV_FILE ${PROJECT_SOURCE_DIR}/src/MagnumPlugins/DrWavAudioImporter/Test/stereo8.wav) - set(OGG_FILE ${PROJECT_SOURCE_DIR}/src/MagnumPlugins/StbVorbisAudioImporter/Test/mono16.ogg) + set(WAV_FILE ${PROJECT_SOURCE_DIR}/src/MagnumPlugins/WavAudioImporter/Test/stereo8.wav) endif() 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 LIBRARIES MagnumAnyAudioImporterTestLib FILES - ../../DrWavAudioImporter/Test/stereo8.wav - ../../StbVorbisAudioImporter/Test/mono16.ogg) + ../../WavAudioImporter/Test/stereo8.wav) target_include_directories(AnyAudioImporterTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) # On Win32 we need to avoid dllimporting AnyAudioImporter symbols, because it # would search for the symbols in some DLL even when they were linked diff --git a/src/MagnumPlugins/AnyAudioImporter/Test/Test.cpp b/src/MagnumPlugins/AnyAudioImporter/Test/Test.cpp index f9cd630a1..e81f7d63c 100644 --- a/src/MagnumPlugins/AnyAudioImporter/Test/Test.cpp +++ b/src/MagnumPlugins/AnyAudioImporter/Test/Test.cpp @@ -37,7 +37,6 @@ struct AnyImporterTest: TestSuite::Tester { explicit AnyImporterTest(); void wav(); - void ogg(); void unknown(); @@ -47,7 +46,6 @@ private: AnyImporterTest::AnyImporterTest(): _manager{MAGNUM_PLUGINS_AUDIOIMPORTER_DIR} { addTests({&AnyImporterTest::wav, - &AnyImporterTest::ogg, &AnyImporterTest::unknown}); } @@ -64,18 +62,6 @@ void AnyImporterTest::wav() { 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() { std::ostringstream output; Error redirectError{&output}; diff --git a/src/MagnumPlugins/AnyAudioImporter/Test/configure.h.cmake b/src/MagnumPlugins/AnyAudioImporter/Test/configure.h.cmake index 61770c1ce..4129f50ab 100644 --- a/src/MagnumPlugins/AnyAudioImporter/Test/configure.h.cmake +++ b/src/MagnumPlugins/AnyAudioImporter/Test/configure.h.cmake @@ -30,4 +30,3 @@ #endif #define WAV_FILE "${WAV_FILE}" -#define OGG_FILE "${OGG_FILE}" diff --git a/src/MagnumPlugins/AnyImageConverter/AnyImageConverter.h b/src/MagnumPlugins/AnyImageConverter/AnyImageConverter.h index fc3fb15c0..d90de7fa9 100644 --- a/src/MagnumPlugins/AnyImageConverter/AnyImageConverter.h +++ b/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. This plugin depends on the @ref Trade library and is built if -`WITH_ANYIMAGECONVERTER` is enabled when building Magnum Plugins. To use as a -dynamic plugin, you need to load the @cpp "AnyImageConverter" @ce plugin from +`WITH_ANYIMAGECONVERTER` is enabled when building Magnum. To use as a dynamic +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 another plugin with CMake, you need to request the `AnyImageConverter` -component of the `MagnumPlugins` package and link to the -`MagnumPlugins::AnyImageConverter` target. See @ref building-plugins, -@ref cmake-plugins and @ref plugins for more information. +component of the `Magnum` package and link to the `Magnum::AnyImageConverter` +target. See @ref building, @ref cmake and @ref plugins for more information. Supported formats for uncompressed data: diff --git a/src/MagnumPlugins/AnyImageConverter/CMakeLists.txt b/src/MagnumPlugins/AnyImageConverter/CMakeLists.txt index e616188eb..9f18dfc03 100644 --- a/src/MagnumPlugins/AnyImageConverter/CMakeLists.txt +++ b/src/MagnumPlugins/AnyImageConverter/CMakeLists.txt @@ -41,9 +41,7 @@ add_library(AnyImageConverterObjects OBJECT ${AnyImageConverter_SRCS} ${AnyImageConverter_HEADERS}) target_include_directories(AnyImageConverterObjects PUBLIC - $ - ${PROJECT_SOURCE_DIR}/src - ${PROJECT_BINARY_DIR}/src) + $) target_compile_definitions(AnyImageConverterObjects PRIVATE "AnyImageConverterObjects_EXPORTS") if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) set_target_properties(AnyImageConverterObjects PROPERTIES POSITION_INDEPENDENT_CODE ON) @@ -63,7 +61,7 @@ endif() target_include_directories(AnyImageConverter PUBLIC ${PROJECT_SOURCE_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 ${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_BINARY_DIR}/src) set_target_properties(MagnumAnyImageConverterTestLib PROPERTIES FOLDER "MagnumPlugins/AnyImageConverter") - target_link_libraries(MagnumAnyImageConverterTestLib Magnum::Magnum) + target_link_libraries(MagnumAnyImageConverterTestLib PUBLIC Magnum) add_subdirectory(Test) endif() diff --git a/src/MagnumPlugins/AnyImageConverter/Test/Test.cpp b/src/MagnumPlugins/AnyImageConverter/Test/Test.cpp index bc2b13fae..1af5e0895 100644 --- a/src/MagnumPlugins/AnyImageConverter/Test/Test.cpp +++ b/src/MagnumPlugins/AnyImageConverter/Test/Test.cpp @@ -27,8 +27,9 @@ #include #include #include -#include -#include + +#include "Magnum/PixelFormat.h" +#include "Magnum/Trade/ImageData.h" #include "MagnumPlugins/AnyImageConverter/AnyImageConverter.h" @@ -39,7 +40,7 @@ namespace Magnum { namespace Trade { namespace Test { struct AnyImageConverterTest: TestSuite::Tester { explicit AnyImageConverterTest(); - void png(); + void tga(); void unknown(); @@ -48,7 +49,7 @@ struct AnyImageConverterTest: TestSuite::Tester { }; AnyImageConverterTest::AnyImageConverterTest(): _manager{MAGNUM_PLUGINS_IMAGECONVERTER_DIR} { - addTests({&AnyImageConverterTest::png, + addTests({&AnyImageConverterTest::tga, &AnyImageConverterTest::unknown}); } @@ -63,11 +64,11 @@ namespace { const ImageView2D Image{PixelFormat::RGB, PixelType::UnsignedByte, {2, 3}, Data}; } -void AnyImageConverterTest::png() { - if(_manager.loadState("PngImageConverter") == PluginManager::LoadState::NotFound) - CORRADE_SKIP("PngImageConverter plugin not found, cannot test"); +void AnyImageConverterTest::tga() { + if(_manager.loadState("TgaImageConverter") == PluginManager::LoadState::NotFound) + 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)) CORRADE_VERIFY(Utility::Directory::rm(filename)); diff --git a/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.h b/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.h index bcaca9c39..b6783366e 100644 --- a/src/MagnumPlugins/AnyImageImporter/AnyImageImporter.h +++ b/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. This plugin depends on the @ref Trade library and is built if -`WITH_ANYIMAGEIMPORTER` is enabled when building Magnum Plugins. To use as a -dynamic plugin, you need to load the @cpp "AnyImageImporter" @ce plugin from +`WITH_ANYIMAGEIMPORTER` is enabled when building Magnum. To use as a dynamic +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 another plugin with CMake, you need to request the `AnyImageImporter` component -of the `MagnumPlugins` package and link to the -`MagnumPlugins::AnyImageImporter` target. See @ref building-plugins, -@ref cmake-plugins and @ref plugins for more information. +of the `Magnum` package and link to the `Magnum::AnyImageImporter` target. See +@ref building, @ref cmake and @ref plugins for more information. Supported formats: diff --git a/src/MagnumPlugins/AnyImageImporter/CMakeLists.txt b/src/MagnumPlugins/AnyImageImporter/CMakeLists.txt index 0a2cefc3d..c60e68991 100644 --- a/src/MagnumPlugins/AnyImageImporter/CMakeLists.txt +++ b/src/MagnumPlugins/AnyImageImporter/CMakeLists.txt @@ -41,9 +41,7 @@ add_library(AnyImageImporterObjects OBJECT ${AnyImageImporter_SRCS} ${AnyImageImporter_HEADERS}) target_include_directories(AnyImageImporterObjects PUBLIC - $ - ${PROJECT_SOURCE_DIR}/src - ${PROJECT_BINARY_DIR}/src) + $) target_compile_definitions(AnyImageImporterObjects PRIVATE "AnyImageImporterObjects_EXPORTS") if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) set_target_properties(AnyImageImporterObjects PROPERTIES POSITION_INDEPENDENT_CODE ON) @@ -63,7 +61,7 @@ endif() target_include_directories(AnyImageImporter PUBLIC ${PROJECT_SOURCE_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 ${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_BINARY_DIR}/src) set_target_properties(MagnumAnyImageImporterTestLib PROPERTIES FOLDER "MagnumPlugins/AnyImageImporter") - target_link_libraries(MagnumAnyImageImporterTestLib Magnum::Magnum) + target_link_libraries(MagnumAnyImageImporterTestLib PUBLIC Magnum) add_subdirectory(Test) endif() diff --git a/src/MagnumPlugins/AnyImageImporter/Test/CMakeLists.txt b/src/MagnumPlugins/AnyImageImporter/Test/CMakeLists.txt index 210a56c3d..39ab280a7 100644 --- a/src/MagnumPlugins/AnyImageImporter/Test/CMakeLists.txt +++ b/src/MagnumPlugins/AnyImageImporter/Test/CMakeLists.txt @@ -24,13 +24,9 @@ # if(CORRADE_TARGET_EMSCRIPTEN OR CORRADE_TARGET_ANDROID) - set(TGA_FILE image.tga) - set(JPEG_FILE rgb.jpg) - set(PNG_FILE rgb.png) + set(TGA_FILE file.tga) else() - set(TGA_FILE ${PROJECT_SOURCE_DIR}/src/MagnumPlugins/ColladaImporter/Test/ColladaImporterTestFiles/image.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) + set(TGA_FILE ${PROJECT_SOURCE_DIR}/src/MagnumPlugins/TgaImporter/Test/file.tga) endif() 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 LIBRARIES MagnumAnyImageImporterTestLib FILES - ../../ColladaImporter/Test/ColladaImporterTestFiles/image.tga - ../../JpegImporter/Test/rgb.jpg - ../../PngImporter/Test/rgb.png) + ../../TgaImporter/Test/file.tga) target_include_directories(AnyImageImporterTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) # On Win32 we need to avoid dllimporting AnyImageImporter symbols, because it # would search for the symbols in some DLL even when they were linked diff --git a/src/MagnumPlugins/AnyImageImporter/Test/Test.cpp b/src/MagnumPlugins/AnyImageImporter/Test/Test.cpp index 1933e0908..a8523ec46 100644 --- a/src/MagnumPlugins/AnyImageImporter/Test/Test.cpp +++ b/src/MagnumPlugins/AnyImageImporter/Test/Test.cpp @@ -26,7 +26,8 @@ #include #include #include -#include + +#include "Magnum/Trade/ImageData.h" #include "MagnumPlugins/AnyImageImporter/AnyImageImporter.h" @@ -38,8 +39,6 @@ struct AnyImageImporterTest: TestSuite::Tester { explicit AnyImageImporterTest(); void tga(); - void jpeg(); - void png(); void unknown(); @@ -49,8 +48,6 @@ struct AnyImageImporterTest: TestSuite::Tester { AnyImageImporterTest::AnyImageImporterTest(): _manager{MAGNUM_PLUGINS_IMPORTER_DIR} { addTests({&AnyImageImporterTest::tga, - &AnyImageImporterTest::jpeg, - &AnyImageImporterTest::png, &AnyImageImporterTest::unknown}); } @@ -68,32 +65,6 @@ void AnyImageImporterTest::tga() { 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 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 image = importer.image2D(0); - CORRADE_VERIFY(image); - CORRADE_COMPARE(image->size(), Vector2i(3, 2)); -} - void AnyImageImporterTest::unknown() { std::ostringstream output; Error redirectError{&output}; diff --git a/src/MagnumPlugins/AnyImageImporter/Test/configure.h.cmake b/src/MagnumPlugins/AnyImageImporter/Test/configure.h.cmake index 6c1865db5..41f7601ef 100644 --- a/src/MagnumPlugins/AnyImageImporter/Test/configure.h.cmake +++ b/src/MagnumPlugins/AnyImageImporter/Test/configure.h.cmake @@ -30,5 +30,3 @@ #endif #define TGA_FILE "${TGA_FILE}" -#define JPEG_FILE "${JPEG_FILE}" -#define PNG_FILE "${PNG_FILE}" diff --git a/src/MagnumPlugins/AnySceneImporter/AnySceneImporter.h b/src/MagnumPlugins/AnySceneImporter/AnySceneImporter.h index 03071e385..e3c18298b 100644 --- a/src/MagnumPlugins/AnySceneImporter/AnySceneImporter.h +++ b/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. This plugin depends on the @ref Trade library and is built if -`WITH_ANYSCENEIMPORTER` is enabled when building Magnum Plugins. To use as a -dynamic plugin, you need to load the @cpp "AnySceneImporter" @ce plugin from +`WITH_ANYSCENEIMPORTER` is enabled when building Magnum. To use as a dynamic +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 another plugin with CMake, you need to request the `AnySceneImporter` component -of the `MagnumPlugins` package in CMake and link to the -`MagnumPlugins::AnySceneImporter` target. See @ref building-plugins, -@ref cmake-plugins and @ref plugins for more information. +of the `Magnum` package in CMake and link to the `Magnum::AnySceneImporter` +target. See @ref building, @ref cmake and @ref plugins for more information. Supported formats: diff --git a/src/MagnumPlugins/AnySceneImporter/CMakeLists.txt b/src/MagnumPlugins/AnySceneImporter/CMakeLists.txt index 9f9e15a06..e71fa8332 100644 --- a/src/MagnumPlugins/AnySceneImporter/CMakeLists.txt +++ b/src/MagnumPlugins/AnySceneImporter/CMakeLists.txt @@ -41,9 +41,7 @@ add_library(AnySceneImporterObjects OBJECT ${AnySceneImporter_SRCS} ${AnySceneImporter_HEADERS}) target_include_directories(AnySceneImporterObjects PUBLIC - $ - ${PROJECT_SOURCE_DIR}/src - ${PROJECT_BINARY_DIR}/src) + $) target_compile_definitions(AnySceneImporterObjects PRIVATE "AnySceneImporterObjects_EXPORTS") if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) set_target_properties(AnySceneImporterObjects PROPERTIES POSITION_INDEPENDENT_CODE ON) @@ -63,7 +61,7 @@ endif() target_include_directories(AnySceneImporter PUBLIC ${PROJECT_SOURCE_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 ${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_BINARY_DIR}/src) set_target_properties(MagnumAnySceneImporterTestLib PROPERTIES FOLDER "MagnumPlugins/AnySceneImporter") - target_link_libraries(MagnumAnySceneImporterTestLib Magnum::Magnum) + target_link_libraries(MagnumAnySceneImporterTestLib PUBLIC Magnum) add_subdirectory(Test) endif() diff --git a/src/MagnumPlugins/AnySceneImporter/Test/CMakeLists.txt b/src/MagnumPlugins/AnySceneImporter/Test/CMakeLists.txt index fcb8de90c..de908b8f4 100644 --- a/src/MagnumPlugins/AnySceneImporter/Test/CMakeLists.txt +++ b/src/MagnumPlugins/AnySceneImporter/Test/CMakeLists.txt @@ -24,11 +24,9 @@ # if(CORRADE_TARGET_EMSCRIPTEN OR CORRADE_TARGET_ANDROID) - set(OBJ_FILE mesh.obj) - set(PLY_FILE common.ply) + set(OBJ_FILE pointMesh.obj) else() - set(OBJ_FILE ${CMAKE_CURRENT_SOURCE_DIR}/mesh.obj) - set(PLY_FILE ${PROJECT_SOURCE_DIR}/src/MagnumPlugins/StanfordImporter/Test/common.ply) + set(OBJ_FILE ${PROJECT_SOURCE_DIR}/src/MagnumPlugins/ObjImporter/Test/pointMesh.obj) endif() 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 LIBRARIES MagnumAnySceneImporterTestLib FILES - mesh.obj - ../../StanfordImporter/Test/common.ply) + ../../ObjImporter/Test/pointMesh.obj) target_include_directories(AnySceneImporterTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) # On Win32 we need to avoid dllimporting AnySceneImporter symbols, because it # would search for the symbols in some DLL even when they were linked diff --git a/src/MagnumPlugins/AnySceneImporter/Test/Test.cpp b/src/MagnumPlugins/AnySceneImporter/Test/Test.cpp index a43bea6bf..714b46f5b 100644 --- a/src/MagnumPlugins/AnySceneImporter/Test/Test.cpp +++ b/src/MagnumPlugins/AnySceneImporter/Test/Test.cpp @@ -26,8 +26,9 @@ #include #include #include -#include -#include + +#include "Magnum/Math/Vector3.h" +#include "Magnum/Trade/MeshData3D.h" #include "MagnumPlugins/AnySceneImporter/AnySceneImporter.h" @@ -39,7 +40,6 @@ struct AnySceneImporterTest: TestSuite::Tester { explicit AnySceneImporterTest(); void obj(); - void ply(); void unknown(); @@ -49,7 +49,6 @@ struct AnySceneImporterTest: TestSuite::Tester { AnySceneImporterTest::AnySceneImporterTest(): _manager{MAGNUM_PLUGINS_IMPORTER_DIR} { addTests({&AnySceneImporterTest::obj, - &AnySceneImporterTest::ply, &AnySceneImporterTest::unknown}); } @@ -67,19 +66,6 @@ void AnySceneImporterTest::obj() { 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 mesh = importer.mesh3D(0); - CORRADE_VERIFY(mesh); - CORRADE_COMPARE(mesh->positions(0).size(), 5); -} - void AnySceneImporterTest::unknown() { std::ostringstream output; Error redirectError{&output}; diff --git a/src/MagnumPlugins/AnySceneImporter/Test/configure.h.cmake b/src/MagnumPlugins/AnySceneImporter/Test/configure.h.cmake index a89919953..f44b93d8d 100644 --- a/src/MagnumPlugins/AnySceneImporter/Test/configure.h.cmake +++ b/src/MagnumPlugins/AnySceneImporter/Test/configure.h.cmake @@ -30,4 +30,3 @@ #endif #define OBJ_FILE "${OBJ_FILE}" -#define PLY_FILE "${PLY_FILE}" diff --git a/src/MagnumPlugins/AnySceneImporter/Test/mesh.obj b/src/MagnumPlugins/AnySceneImporter/Test/mesh.obj deleted file mode 100644 index c5991619c..000000000 --- a/src/MagnumPlugins/AnySceneImporter/Test/mesh.obj +++ /dev/null @@ -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 diff --git a/src/MagnumPlugins/CMakeLists.txt b/src/MagnumPlugins/CMakeLists.txt index c572f8613..00b5f531d 100644 --- a/src/MagnumPlugins/CMakeLists.txt +++ b/src/MagnumPlugins/CMakeLists.txt @@ -34,6 +34,22 @@ macro(add_plugin plugin_name debug_install_dirs release_install_dirs metadata_fi endif() 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) add_subdirectory(MagnumFont) endif()