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)
# 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)

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
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.

6
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

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
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

12
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
*/

17
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

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.
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:

11
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
$<TARGET_PROPERTY:Magnum::Audio,INTERFACE_INCLUDE_DIRECTORIES>
${PROJECT_SOURCE_DIR}/src
${PROJECT_BINARY_DIR}/src)
$<TARGET_PROPERTY:Magnum,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:MagnumAudio,INTERFACE_INCLUDE_DIRECTORIES>)
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()

7
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

14
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};

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

@ -30,4 +30,3 @@
#endif
#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.
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:

8
src/MagnumPlugins/AnyImageConverter/CMakeLists.txt

@ -41,9 +41,7 @@ add_library(AnyImageConverterObjects OBJECT
${AnyImageConverter_SRCS}
${AnyImageConverter_HEADERS})
target_include_directories(AnyImageConverterObjects PUBLIC
$<TARGET_PROPERTY:Magnum::Magnum,INTERFACE_INCLUDE_DIRECTORIES>
${PROJECT_SOURCE_DIR}/src
${PROJECT_BINARY_DIR}/src)
$<TARGET_PROPERTY:Magnum,INTERFACE_INCLUDE_DIRECTORIES>)
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()

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

@ -27,8 +27,9 @@
#include <Corrade/TestSuite/Tester.h>
#include <Corrade/Utility/Directory.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"
@ -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));

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.
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:

8
src/MagnumPlugins/AnyImageImporter/CMakeLists.txt

@ -41,9 +41,7 @@ add_library(AnyImageImporterObjects OBJECT
${AnyImageImporter_SRCS}
${AnyImageImporter_HEADERS})
target_include_directories(AnyImageImporterObjects PUBLIC
$<TARGET_PROPERTY:Magnum::Magnum,INTERFACE_INCLUDE_DIRECTORIES>
${PROJECT_SOURCE_DIR}/src
${PROJECT_BINARY_DIR}/src)
$<TARGET_PROPERTY:Magnum,INTERFACE_INCLUDE_DIRECTORIES>)
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()

12
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

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

@ -26,7 +26,8 @@
#include <sstream>
#include <Corrade/PluginManager/Manager.h>
#include <Corrade/TestSuite/Tester.h>
#include <Magnum/Trade/ImageData.h>
#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<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() {
std::ostringstream output;
Error redirectError{&output};

2
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}"

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.
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:

8
src/MagnumPlugins/AnySceneImporter/CMakeLists.txt

@ -41,9 +41,7 @@ add_library(AnySceneImporterObjects OBJECT
${AnySceneImporter_SRCS}
${AnySceneImporter_HEADERS})
target_include_directories(AnySceneImporterObjects PUBLIC
$<TARGET_PROPERTY:Magnum::Magnum,INTERFACE_INCLUDE_DIRECTORIES>
${PROJECT_SOURCE_DIR}/src
${PROJECT_BINARY_DIR}/src)
$<TARGET_PROPERTY:Magnum,INTERFACE_INCLUDE_DIRECTORIES>)
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()

9
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

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

@ -26,8 +26,9 @@
#include <sstream>
#include <Corrade/PluginManager/Manager.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"
@ -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<MeshData3D> mesh = importer.mesh3D(0);
CORRADE_VERIFY(mesh);
CORRADE_COMPARE(mesh->positions(0).size(), 5);
}
void AnySceneImporterTest::unknown() {
std::ostringstream output;
Error redirectError{&output};

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

@ -30,4 +30,3 @@
#endif
#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()
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()

Loading…
Cancel
Save