Browse Source

AnySceneConverter: new plugin.

meshdata-cereal-killer
Vladimír Vondruš 6 years ago
parent
commit
e8d6622265
  1. 1
      CMakeLists.txt
  2. 2
      doc/building.dox
  3. 3
      doc/changelog.dox
  4. 2
      doc/cmake.dox
  5. 2
      doc/plugins.dox
  6. 7
      modules/FindMagnum.cmake
  7. 1
      package/archlinux/PKGBUILD
  8. 1
      package/archlinux/PKGBUILD-android-arm64
  9. 1
      package/archlinux/PKGBUILD-clang
  10. 1
      package/archlinux/PKGBUILD-clang-addressanitizer
  11. 1
      package/archlinux/PKGBUILD-clang-analyzer
  12. 1
      package/archlinux/PKGBUILD-clang-libc++
  13. 1
      package/archlinux/PKGBUILD-coverage
  14. 1
      package/archlinux/PKGBUILD-emscripten
  15. 1
      package/archlinux/PKGBUILD-emscripten-wasm
  16. 1
      package/archlinux/PKGBUILD-emscripten-wasm-webgl2
  17. 1
      package/archlinux/PKGBUILD-emscripten-webgl2
  18. 1
      package/archlinux/PKGBUILD-es2
  19. 1
      package/archlinux/PKGBUILD-es2desktop
  20. 1
      package/archlinux/PKGBUILD-es3
  21. 1
      package/archlinux/PKGBUILD-es3desktop
  22. 1
      package/archlinux/PKGBUILD-gcc48
  23. 2
      package/archlinux/PKGBUILD-mingw-w64
  24. 2
      package/archlinux/PKGBUILD-release
  25. 1
      package/archlinux/magnum-git/PKGBUILD
  26. 1
      package/archlinux/magnum/PKGBUILD
  27. 1
      package/ci/appveyor-desktop-gles.bat
  28. 1
      package/ci/appveyor-desktop-mingw.bat
  29. 1
      package/ci/appveyor-desktop-vulkan.bat
  30. 1
      package/ci/appveyor-desktop.bat
  31. 1
      package/ci/appveyor-rt.bat
  32. 1
      package/ci/travis-android-arm.sh
  33. 1
      package/ci/travis-desktop-gles.sh
  34. 1
      package/ci/travis-desktop-vulkan.sh
  35. 1
      package/ci/travis-desktop.sh
  36. 1
      package/ci/travis-emscripten.sh
  37. 1
      package/ci/travis-ios-simulator.sh
  38. 1
      package/debian/rules
  39. 1
      package/gentoo/dev-libs/magnum/magnum-9999.ebuild
  40. 2
      package/homebrew/magnum.rb
  41. 1
      package/msys/PKGBUILD
  42. 1
      package/msys/magnum/PKGBUILD
  43. 0
      src/MagnumPlugins/AnySceneConverter/AnySceneConverter.conf
  44. 80
      src/MagnumPlugins/AnySceneConverter/AnySceneConverter.cpp
  45. 111
      src/MagnumPlugins/AnySceneConverter/AnySceneConverter.h
  46. 68
      src/MagnumPlugins/AnySceneConverter/CMakeLists.txt
  47. 121
      src/MagnumPlugins/AnySceneConverter/Test/AnySceneConverterTest.cpp
  48. 71
      src/MagnumPlugins/AnySceneConverter/Test/CMakeLists.txt
  49. 27
      src/MagnumPlugins/AnySceneConverter/Test/configure.h.cmake
  50. 26
      src/MagnumPlugins/AnySceneConverter/configure.h.cmake
  51. 35
      src/MagnumPlugins/AnySceneConverter/importStaticPlugin.cpp
  52. 4
      src/MagnumPlugins/CMakeLists.txt

1
CMakeLists.txt

@ -80,6 +80,7 @@ option(WITH_AL_INFO "Build magnum-al-info utility" OFF)
option(WITH_ANYIMAGEIMPORTER "Build AnyImageImporter plugin" OFF) option(WITH_ANYIMAGEIMPORTER "Build AnyImageImporter plugin" OFF)
option(WITH_ANYAUDIOIMPORTER "Build AnyAudioImporter plugin" OFF) option(WITH_ANYAUDIOIMPORTER "Build AnyAudioImporter plugin" OFF)
option(WITH_ANYIMAGECONVERTER "Build AnyImageConverter plugin" OFF) option(WITH_ANYIMAGECONVERTER "Build AnyImageConverter plugin" OFF)
option(WITH_ANYSCENECONVERTER "Build AnySceneConverter plugin" OFF)
option(WITH_ANYSCENEIMPORTER "Build AnySceneImporter 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)

2
doc/building.dox

@ -650,6 +650,8 @@ default.
building of the @ref Trade library. building of the @ref Trade library.
- `WITH_ANYIMAGEIMPORTER` --- Build the @ref Trade::AnyImageImporter "AnyImageImporter" - `WITH_ANYIMAGEIMPORTER` --- Build the @ref Trade::AnyImageImporter "AnyImageImporter"
plugin. Enables also building of the @ref Trade library. plugin. Enables also building of the @ref Trade library.
- `WITH_ANYSCENECONVERTER` --- Build the @ref Trade::AnySceneConverter "AnySceneConverter"
plugin. Enables also building of the @ref Trade library.
- `WITH_ANYSCENEIMPORTER` --- Build the @ref Trade::AnySceneImporter "AnySceneImporter" - `WITH_ANYSCENEIMPORTER` --- Build the @ref Trade::AnySceneImporter "AnySceneImporter"
plugin. Enables also building of the @ref Trade library. plugin. Enables also building of the @ref Trade library.
- `WITH_MAGNUMFONT` --- Build the @ref Text::MagnumFont "MagnumFont" plugin. - `WITH_MAGNUMFONT` --- Build the @ref Text::MagnumFont "MagnumFont" plugin.

3
doc/changelog.dox

@ -270,7 +270,8 @@ See also:
- New @ref magnum-sceneconverter "magnum-sceneconverter" tool, similar to - New @ref magnum-sceneconverter "magnum-sceneconverter" tool, similar to
@ref magnum-imageconverter "magnum-imageconverter" but suited for general @ref magnum-imageconverter "magnum-imageconverter" but suited for general
scene formats scene formats
- New @ref Trade::AbstractSceneConverter plugin interface - New @ref Trade::AbstractSceneConverter plugin interface and an
@ref Trade::AnySceneConverter "AnySceneConverter" plugin
- Ability to import image mip levels via an additional parameter in - Ability to import image mip levels via an additional parameter in
@ref Trade::AbstractImporter::image2D(), @ref Trade::AbstractImporter::image2D(),
@ref Trade::AbstractImporter::image2DLevelCount() and similar APIs for 1D @ref Trade::AbstractImporter::image2DLevelCount() and similar APIs for 1D

2
doc/cmake.dox

@ -246,6 +246,8 @@ dependencies, you need to find the dependency and then link to it.
plugin plugin
- `AnyImageImporter` --- @ref Trade::AnyImageImporter "AnyImageImporter" - `AnyImageImporter` --- @ref Trade::AnyImageImporter "AnyImageImporter"
plugin plugin
- `AnySceneConverter` --- @ref Trade::AnySceneConverter "AnySceneConverter"
plugin
- `AnySceneImporter` --- @ref Trade::AnySceneImporter "AnySceneImporter" - `AnySceneImporter` --- @ref Trade::AnySceneImporter "AnySceneImporter"
plugin plugin
- `MagnumFont` --- @ref Text::MagnumFont "MagnumFont" plugin - `MagnumFont` --- @ref Text::MagnumFont "MagnumFont" plugin

2
doc/plugins.dox

@ -195,6 +195,8 @@ So far, the following plugins have the "any format" ability:
format format
- @ref Trade::AnySceneImporter "AnySceneImporter" --- imports any scene - @ref Trade::AnySceneImporter "AnySceneImporter" --- imports any scene
format format
- @ref Trade::AnySceneConverter "AnySceneConverter" --- converts to any scene
format
- @ref Audio::AnyImporter "AnyImporter" --- imports any audio format - @ref Audio::AnyImporter "AnyImporter" --- imports any audio format
@section plugins-configuration Plugin-specific configuration @section plugins-configuration Plugin-specific configuration

7
modules/FindMagnum.cmake

@ -55,6 +55,7 @@
# AnyAudioImporter - Any audio importer # AnyAudioImporter - Any audio importer
# AnyImageConverter - Any image converter # AnyImageConverter - Any image converter
# AnyImageImporter - Any image importer # AnyImageImporter - Any image importer
# AnySceneConverter - Any scene converter
# AnySceneImporter - Any scene importer # AnySceneImporter - Any scene importer
# Audio - Audio library # Audio - Audio library
# DebugTools - DebugTools library # DebugTools - DebugTools library
@ -360,9 +361,9 @@ set(_MAGNUM_LIBRARY_COMPONENT_LIST
CglContext EglContext GlxContext WglContext CglContext EglContext GlxContext WglContext
OpenGLTester) OpenGLTester)
set(_MAGNUM_PLUGIN_COMPONENT_LIST set(_MAGNUM_PLUGIN_COMPONENT_LIST
AnyAudioImporter AnyImageConverter AnyImageImporter AnySceneImporter AnyAudioImporter AnyImageConverter AnyImageImporter AnySceneConverter
MagnumFont MagnumFontConverter ObjImporter TgaImageConverter TgaImporter AnySceneImporter MagnumFont MagnumFontConverter ObjImporter
WavAudioImporter) TgaImageConverter TgaImporter WavAudioImporter)
set(_MAGNUM_EXECUTABLE_COMPONENT_LIST set(_MAGNUM_EXECUTABLE_COMPONENT_LIST
distancefieldconverter fontconverter imageconverter sceneconverter gl-info distancefieldconverter fontconverter imageconverter sceneconverter gl-info
al-info) al-info)

1
package/archlinux/PKGBUILD

@ -38,6 +38,7 @@ build() {
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_MAGNUMFONTCONVERTER=ON \ -DWITH_MAGNUMFONTCONVERTER=ON \

1
package/archlinux/PKGBUILD-android-arm64

@ -35,6 +35,7 @@ build() {
-DWITH_ANYAUDIOIMPORTER=OFF \ -DWITH_ANYAUDIOIMPORTER=OFF \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_OBJIMPORTER=ON \ -DWITH_OBJIMPORTER=ON \

1
package/archlinux/PKGBUILD-clang

@ -41,6 +41,7 @@ build() {
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_MAGNUMFONTCONVERTER=ON \ -DWITH_MAGNUMFONTCONVERTER=ON \

1
package/archlinux/PKGBUILD-clang-addressanitizer

@ -42,6 +42,7 @@ build() {
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_MAGNUMFONTCONVERTER=ON \ -DWITH_MAGNUMFONTCONVERTER=ON \

1
package/archlinux/PKGBUILD-clang-analyzer

@ -33,6 +33,7 @@ build() {
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_MAGNUMFONTCONVERTER=ON \ -DWITH_MAGNUMFONTCONVERTER=ON \

1
package/archlinux/PKGBUILD-clang-libc++

@ -44,6 +44,7 @@ build() {
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_MAGNUMFONTCONVERTER=ON \ -DWITH_MAGNUMFONTCONVERTER=ON \

1
package/archlinux/PKGBUILD-coverage

@ -39,6 +39,7 @@ build() {
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_MAGNUMFONTCONVERTER=ON \ -DWITH_MAGNUMFONTCONVERTER=ON \

1
package/archlinux/PKGBUILD-emscripten

@ -35,6 +35,7 @@ build() {
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_OBJIMPORTER=ON \ -DWITH_OBJIMPORTER=ON \

1
package/archlinux/PKGBUILD-emscripten-wasm

@ -35,6 +35,7 @@ build() {
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_OBJIMPORTER=ON \ -DWITH_OBJIMPORTER=ON \

1
package/archlinux/PKGBUILD-emscripten-wasm-webgl2

@ -36,6 +36,7 @@ build() {
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_OBJIMPORTER=ON \ -DWITH_OBJIMPORTER=ON \

1
package/archlinux/PKGBUILD-emscripten-webgl2

@ -36,6 +36,7 @@ build() {
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_OBJIMPORTER=ON \ -DWITH_OBJIMPORTER=ON \

1
package/archlinux/PKGBUILD-es2

@ -31,6 +31,7 @@ build() {
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_OBJIMPORTER=ON \ -DWITH_OBJIMPORTER=ON \

1
package/archlinux/PKGBUILD-es2desktop

@ -35,6 +35,7 @@ build() {
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_OBJIMPORTER=ON \ -DWITH_OBJIMPORTER=ON \

1
package/archlinux/PKGBUILD-es3

@ -31,6 +31,7 @@ build() {
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_OBJIMPORTER=ON \ -DWITH_OBJIMPORTER=ON \

1
package/archlinux/PKGBUILD-es3desktop

@ -35,6 +35,7 @@ build() {
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_OBJIMPORTER=ON \ -DWITH_OBJIMPORTER=ON \

1
package/archlinux/PKGBUILD-gcc48

@ -44,6 +44,7 @@ build() {
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_MAGNUMFONTCONVERTER=ON \ -DWITH_MAGNUMFONTCONVERTER=ON \

2
package/archlinux/PKGBUILD-mingw-w64

@ -28,6 +28,7 @@ build() {
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_MAGNUMFONTCONVERTER=ON \ -DWITH_MAGNUMFONTCONVERTER=ON \
@ -61,6 +62,7 @@ build() {
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_MAGNUMFONTCONVERTER=ON \ -DWITH_MAGNUMFONTCONVERTER=ON \

2
package/archlinux/PKGBUILD-release

@ -33,6 +33,7 @@ build() {
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_MAGNUMFONTCONVERTER=ON \ -DWITH_MAGNUMFONTCONVERTER=ON \
@ -70,6 +71,7 @@ build() {
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_MAGNUMFONTCONVERTER=ON \ -DWITH_MAGNUMFONTCONVERTER=ON \

1
package/archlinux/magnum-git/PKGBUILD

@ -36,6 +36,7 @@ build() {
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_MAGNUMFONTCONVERTER=ON \ -DWITH_MAGNUMFONTCONVERTER=ON \

1
package/archlinux/magnum/PKGBUILD

@ -25,6 +25,7 @@ build() {
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_AUDIO=ON \ -DWITH_AUDIO=ON \
-DWITH_DISTANCEFIELDCONVERTER=ON \ -DWITH_DISTANCEFIELDCONVERTER=ON \

1
package/ci/appveyor-desktop-gles.bat

@ -33,6 +33,7 @@ cmake .. ^
-DWITH_ANYAUDIOIMPORTER=ON ^ -DWITH_ANYAUDIOIMPORTER=ON ^
-DWITH_ANYIMAGECONVERTER=ON ^ -DWITH_ANYIMAGECONVERTER=ON ^
-DWITH_ANYIMAGEIMPORTER=ON ^ -DWITH_ANYIMAGEIMPORTER=ON ^
-DWITH_ANYSCENECONVERTER=ON ^
-DWITH_ANYSCENEIMPORTER=ON ^ -DWITH_ANYSCENEIMPORTER=ON ^
-DWITH_MAGNUMFONT=ON ^ -DWITH_MAGNUMFONT=ON ^
-DWITH_MAGNUMFONTCONVERTER=ON ^ -DWITH_MAGNUMFONTCONVERTER=ON ^

1
package/ci/appveyor-desktop-mingw.bat

@ -32,6 +32,7 @@ cmake .. ^
-DWITH_ANYAUDIOIMPORTER=ON ^ -DWITH_ANYAUDIOIMPORTER=ON ^
-DWITH_ANYIMAGECONVERTER=ON ^ -DWITH_ANYIMAGECONVERTER=ON ^
-DWITH_ANYIMAGEIMPORTER=ON ^ -DWITH_ANYIMAGEIMPORTER=ON ^
-DWITH_ANYSCENECONVERTER=ON ^
-DWITH_ANYSCENEIMPORTER=ON ^ -DWITH_ANYSCENEIMPORTER=ON ^
-DWITH_MAGNUMFONT=ON ^ -DWITH_MAGNUMFONT=ON ^
-DWITH_MAGNUMFONTCONVERTER=ON ^ -DWITH_MAGNUMFONTCONVERTER=ON ^

1
package/ci/appveyor-desktop-vulkan.bat

@ -43,6 +43,7 @@ cmake .. ^
-DWITH_ANYAUDIOIMPORTER=OFF ^ -DWITH_ANYAUDIOIMPORTER=OFF ^
-DWITH_ANYIMAGECONVERTER=OFF ^ -DWITH_ANYIMAGECONVERTER=OFF ^
-DWITH_ANYIMAGEIMPORTER=OFF ^ -DWITH_ANYIMAGEIMPORTER=OFF ^
-DWITH_ANYSCENECONVERTER=ON ^
-DWITH_ANYSCENEIMPORTER=OFF ^ -DWITH_ANYSCENEIMPORTER=OFF ^
-DWITH_MAGNUMFONT=OFF ^ -DWITH_MAGNUMFONT=OFF ^
-DWITH_MAGNUMFONTCONVERTER=OFF ^ -DWITH_MAGNUMFONTCONVERTER=OFF ^

1
package/ci/appveyor-desktop.bat

@ -45,6 +45,7 @@ cmake .. ^
-DWITH_ANYAUDIOIMPORTER=ON ^ -DWITH_ANYAUDIOIMPORTER=ON ^
-DWITH_ANYIMAGECONVERTER=ON ^ -DWITH_ANYIMAGECONVERTER=ON ^
-DWITH_ANYIMAGEIMPORTER=ON ^ -DWITH_ANYIMAGEIMPORTER=ON ^
-DWITH_ANYSCENECONVERTER=ON ^
-DWITH_ANYSCENEIMPORTER=ON ^ -DWITH_ANYSCENEIMPORTER=ON ^
-DWITH_MAGNUMFONT=ON ^ -DWITH_MAGNUMFONT=ON ^
-DWITH_MAGNUMFONTCONVERTER=ON ^ -DWITH_MAGNUMFONTCONVERTER=ON ^

1
package/ci/appveyor-rt.bat

@ -71,6 +71,7 @@ cmake .. ^
-DWITH_ANYAUDIOIMPORTER=OFF ^ -DWITH_ANYAUDIOIMPORTER=OFF ^
-DWITH_ANYIMAGECONVERTER=ON ^ -DWITH_ANYIMAGECONVERTER=ON ^
-DWITH_ANYIMAGEIMPORTER=ON ^ -DWITH_ANYIMAGEIMPORTER=ON ^
-DWITH_ANYSCENECONVERTER=ON ^
-DWITH_ANYSCENEIMPORTER=ON ^ -DWITH_ANYSCENEIMPORTER=ON ^
-DWITH_MAGNUMFONT=ON ^ -DWITH_MAGNUMFONT=ON ^
-DWITH_MAGNUMFONTCONVERTER=ON ^ -DWITH_MAGNUMFONTCONVERTER=ON ^

1
package/ci/travis-android-arm.sh

@ -63,6 +63,7 @@ cmake .. \
-DWITH_ANYAUDIOIMPORTER=OFF \ -DWITH_ANYAUDIOIMPORTER=OFF \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_MAGNUMFONTCONVERTER=ON \ -DWITH_MAGNUMFONTCONVERTER=ON \

1
package/ci/travis-desktop-gles.sh

@ -37,6 +37,7 @@ cmake .. \
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_MAGNUMFONTCONVERTER=ON \ -DWITH_MAGNUMFONTCONVERTER=ON \

1
package/ci/travis-desktop-vulkan.sh

@ -47,6 +47,7 @@ cmake .. \
-DWITH_ANYAUDIOIMPORTER=OFF \ -DWITH_ANYAUDIOIMPORTER=OFF \
-DWITH_ANYIMAGECONVERTER=OFF \ -DWITH_ANYIMAGECONVERTER=OFF \
-DWITH_ANYIMAGEIMPORTER=OFF \ -DWITH_ANYIMAGEIMPORTER=OFF \
-DWITH_ANYSCENECONVERTER=OFF \
-DWITH_ANYSCENEIMPORTER=OFF \ -DWITH_ANYSCENEIMPORTER=OFF \
-DWITH_MAGNUMFONT=OFF \ -DWITH_MAGNUMFONT=OFF \
-DWITH_MAGNUMFONTCONVERTER=OFF \ -DWITH_MAGNUMFONTCONVERTER=OFF \

1
package/ci/travis-desktop.sh

@ -33,6 +33,7 @@ cmake .. \
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_MAGNUMFONTCONVERTER=ON \ -DWITH_MAGNUMFONTCONVERTER=ON \

1
package/ci/travis-emscripten.sh

@ -56,6 +56,7 @@ cmake .. \
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_MAGNUMFONTCONVERTER=ON \ -DWITH_MAGNUMFONTCONVERTER=ON \

1
package/ci/travis-ios-simulator.sh

@ -53,6 +53,7 @@ cmake .. \
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_MAGNUMFONTCONVERTER=ON \ -DWITH_MAGNUMFONTCONVERTER=ON \

1
package/debian/rules vendored

@ -26,6 +26,7 @@ override_dh_auto_configure:
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_MAGNUMFONTCONVERTER=ON \ -DWITH_MAGNUMFONTCONVERTER=ON \

1
package/gentoo/dev-libs/magnum/magnum-9999.ebuild

@ -35,6 +35,7 @@ src_configure() {
-DWITH_ANYAUDIOIMPORTER=ON -DWITH_ANYAUDIOIMPORTER=ON
-DWITH_ANYIMAGECONVERTER=ON -DWITH_ANYIMAGECONVERTER=ON
-DWITH_ANYIMAGEIMPORTER=ON -DWITH_ANYIMAGEIMPORTER=ON
-DWITH_ANYSCENECONVERTER=ON
-DWITH_ANYSCENEIMPORTER=ON -DWITH_ANYSCENEIMPORTER=ON
-DWITH_MAGNUMFONT=ON -DWITH_MAGNUMFONT=ON
-DWITH_MAGNUMFONTCONVERTER=ON -DWITH_MAGNUMFONTCONVERTER=ON

2
package/homebrew/magnum.rb

@ -14,7 +14,7 @@ class Magnum < Formula
def install def install
system "mkdir build" system "mkdir build"
cd "build" do cd "build" do
system "cmake", "-DCMAKE_BUILD_TYPE=Release", "-DCMAKE_INSTALL_PREFIX=#{prefix}", "-DMAGNUM_PLUGINS_DIR=#{HOMEBREW_PREFIX}/lib/magnum", "-DWITH_AUDIO=ON", "-DWITH_GLFWAPPLICATION=ON", "-DWITH_SDL2APPLICATION=ON", "-DWITH_WINDOWLESSCGLAPPLICATION=ON", "-DWITH_CGLCONTEXT=ON", "-DWITH_OPENGLTESTER=ON", "-DWITH_ANYAUDIOIMPORTER=ON", "-DWITH_ANYIMAGECONVERTER=ON", "-DWITH_ANYIMAGEIMPORTER=ON", "-DWITH_ANYSCENEIMPORTER=ON", "-DWITH_MAGNUMFONT=ON", "-DWITH_MAGNUMFONTCONVERTER=ON", "-DWITH_OBJIMPORTER=ON", "-DWITH_TGAIMAGECONVERTER=ON", "-DWITH_TGAIMPORTER=ON", "-DWITH_WAVAUDIOIMPORTER=ON", "-DWITH_DISTANCEFIELDCONVERTER=ON", "-DWITH_FONTCONVERTER=ON", "-DWITH_IMAGECONVERTER=ON", "-DWITH_SCENECONVERTER=ON", "-DWITH_GL_INFO=ON", "-DWITH_AL_INFO=ON", ".." system "cmake", "-DCMAKE_BUILD_TYPE=Release", "-DCMAKE_INSTALL_PREFIX=#{prefix}", "-DMAGNUM_PLUGINS_DIR=#{HOMEBREW_PREFIX}/lib/magnum", "-DWITH_AUDIO=ON", "-DWITH_GLFWAPPLICATION=ON", "-DWITH_SDL2APPLICATION=ON", "-DWITH_WINDOWLESSCGLAPPLICATION=ON", "-DWITH_CGLCONTEXT=ON", "-DWITH_OPENGLTESTER=ON", "-DWITH_ANYAUDIOIMPORTER=ON", "-DWITH_ANYIMAGECONVERTER=ON", "-DWITH_ANYIMAGEIMPORTER=ON", "-DWITH_ANYSCENECONVERTER=ON", "-DWITH_ANYSCENEIMPORTER=ON", "-DWITH_MAGNUMFONT=ON", "-DWITH_MAGNUMFONTCONVERTER=ON", "-DWITH_OBJIMPORTER=ON", "-DWITH_TGAIMAGECONVERTER=ON", "-DWITH_TGAIMPORTER=ON", "-DWITH_WAVAUDIOIMPORTER=ON", "-DWITH_DISTANCEFIELDCONVERTER=ON", "-DWITH_FONTCONVERTER=ON", "-DWITH_IMAGECONVERTER=ON", "-DWITH_SCENECONVERTER=ON", "-DWITH_GL_INFO=ON", "-DWITH_AL_INFO=ON", ".."
system "cmake", "--build", "." system "cmake", "--build", "."
system "cmake", "--build", ".", "--target", "install" system "cmake", "--build", ".", "--target", "install"
end end

1
package/msys/PKGBUILD

@ -40,6 +40,7 @@ build() {
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \ -DWITH_MAGNUMFONT=ON \
-DWITH_MAGNUMFONTCONVERTER=ON \ -DWITH_MAGNUMFONTCONVERTER=ON \

1
package/msys/magnum/PKGBUILD

@ -44,6 +44,7 @@ build() {
-DWITH_ANYAUDIOIMPORTER=ON \ -DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \ -DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \ -DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENECONVERTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \ -DWITH_ANYSCENEIMPORTER=ON \
-DWITH_AUDIO=ON \ -DWITH_AUDIO=ON \
-DWITH_DISTANCEFIELDCONVERTER=ON \ -DWITH_DISTANCEFIELDCONVERTER=ON \

0
src/MagnumPlugins/AnySceneConverter/AnySceneConverter.conf

80
src/MagnumPlugins/AnySceneConverter/AnySceneConverter.cpp

@ -0,0 +1,80 @@
/*
This file is part of Magnum.
Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019
Vladimír Vondruš <mosra@centrum.cz>
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
*/
#include "AnySceneConverter.h"
#include <Corrade/PluginManager/Manager.h>
#include <Corrade/Utility/Assert.h>
#include <Corrade/Utility/DebugStl.h>
#include <Corrade/Utility/String.h>
#include "Magnum/Trade/ImageData.h"
namespace Magnum { namespace Trade {
AnySceneConverter::AnySceneConverter(PluginManager::Manager<AbstractSceneConverter>& manager): AbstractSceneConverter{manager} {}
AnySceneConverter::AnySceneConverter(PluginManager::AbstractManager& manager, const std::string& plugin): AbstractSceneConverter{manager, plugin} {}
AnySceneConverter::~AnySceneConverter() = default;
SceneConverterFeatures AnySceneConverter::doFeatures() const {
return SceneConverterFeature::ConvertMeshToFile;
}
bool AnySceneConverter::doConvertToFile(const std::string& filename, const MeshData& mesh) {
CORRADE_INTERNAL_ASSERT(manager());
/** @todo lowercase only the extension, once Directory::split() is done */
const std::string normalized = Utility::String::lowercase(filename);
/* Detect the plugin from extension */
std::string plugin;
if(Utility::String::endsWith(normalized, ".blob"))
plugin = "MagnumSceneConverter";
else {
Error{} << "Trade::AnySceneConverter::convertToFile(): cannot determine the format of" << filename;
return false;
}
/* Try to load the plugin */
if(!(manager()->load(plugin) & PluginManager::LoadState::Loaded)) {
Error{} << "Trade::AnySceneConverter::convertToFile(): cannot load the" << plugin << "plugin";
return false;
}
/* Instantiate the plugin, propagate flags */
Containers::Pointer<AbstractSceneConverter> converter = static_cast<PluginManager::Manager<AbstractSceneConverter>*>(manager())->instantiate(plugin);
converter->setFlags(flags());
/* Try to convert the file (error output should be printed by the plugin
itself) */
return converter->convertToFile(filename, mesh);
}
}}
CORRADE_PLUGIN_REGISTER(AnySceneConverter, Magnum::Trade::AnySceneConverter,
"cz.mosra.magnum.Trade.AbstractSceneConverter/0.1")

111
src/MagnumPlugins/AnySceneConverter/AnySceneConverter.h

@ -0,0 +1,111 @@
#ifndef Magnum_Trade_AnySceneConverter_h
#define Magnum_Trade_AnySceneConverter_h
/*
This file is part of Magnum.
Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019
Vladimír Vondruš <mosra@centrum.cz>
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
*/
/** @file
* @brief Class @ref Magnum::Trade::AnySceneConverter
*/
#include "Magnum/Trade/AbstractSceneConverter.h"
#include "MagnumPlugins/AnySceneConverter/configure.h"
#ifndef DOXYGEN_GENERATING_OUTPUT
#ifndef MAGNUM_ANYSCENECONVERTER_BUILD_STATIC
#ifdef AnySceneConverter_EXPORTS
#define MAGNUM_ANYSCENECONVERTER_EXPORT CORRADE_VISIBILITY_EXPORT
#else
#define MAGNUM_ANYSCENECONVERTER_EXPORT CORRADE_VISIBILITY_IMPORT
#endif
#else
#define MAGNUM_ANYSCENECONVERTER_EXPORT CORRADE_VISIBILITY_STATIC
#endif
#define MAGNUM_ANYSCENECONVERTER_LOCAL CORRADE_VISIBILITY_LOCAL
#else
#define MAGNUM_ANYSCENECONVERTER_EXPORT
#define MAGNUM_ANYSCENECONVERTER_LOCAL
#endif
namespace Magnum { namespace Trade {
/**
@brief Any scene converter plugin
Detects file type based on file extension, loads corresponding plugin and then
tries to convert the file with it. Supported formats:
- @ref blob "Magnum's memory-mappable serialization format" (`*.blob`),
converted with @ref MagnumSceneConverter
Only converting to files is supported.
@section Trade-AnySceneConverter-usage Usage
This plugin depends on the @ref Trade library and is built if
`WITH_ANYSCENECONVERTER` is enabled when building Magnum. To use as a dynamic
plugin, load @cpp "AnySceneConverter" @ce via
@ref Corrade::PluginManager::Manager.
Additionally, if you're using Magnum as a CMake subproject, do the following:
@code{.cmake}
set(WITH_ANYSCENECONVERTER ON CACHE BOOL "" FORCE)
add_subdirectory(magnum EXCLUDE_FROM_ALL)
# So the dynamically loaded plugin gets built implicitly
add_dependencies(your-app Magnum::AnySceneConverter)
@endcode
To use as a static plugin or as a dependency of another plugin with CMake, you
need to request the `AnySceneConverter` component of the `Magnum` package and
link to the `Magnum::AnySceneConverter` target:
@code{.cmake}
find_package(Magnum REQUIRED AnySceneConverter)
# ...
target_link_libraries(your-app PRIVATE Magnum::AnySceneConverter)
@endcode
See @ref building, @ref cmake and @ref plugins for more information.
*/
class MAGNUM_ANYSCENECONVERTER_EXPORT AnySceneConverter: public AbstractSceneConverter {
public:
/** @brief Constructor with access to plugin manager */
explicit AnySceneConverter(PluginManager::Manager<AbstractSceneConverter>& manager);
/** @brief Plugin manager constructor */
explicit AnySceneConverter(PluginManager::AbstractManager& manager, const std::string& plugin);
~AnySceneConverter();
private:
MAGNUM_ANYSCENECONVERTER_LOCAL SceneConverterFeatures doFeatures() const override;
MAGNUM_ANYSCENECONVERTER_LOCAL bool doConvertToFile(const std::string& filename, const MeshData& mesh) override;
};
}}
#endif

68
src/MagnumPlugins/AnySceneConverter/CMakeLists.txt

@ -0,0 +1,68 @@
#
# This file is part of Magnum.
#
# Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019
# Vladimír Vondruš <mosra@centrum.cz>
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
#
find_package(Corrade REQUIRED PluginManager)
if(BUILD_PLUGINS_STATIC)
set(MAGNUM_ANYSCENECONVERTER_BUILD_STATIC 1)
endif()
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/configure.h.cmake
${CMAKE_CURRENT_BINARY_DIR}/configure.h)
# AnySceneConverter plugin
add_plugin(AnySceneConverter
"${MAGNUM_PLUGINS_SCENECONVERTER_DEBUG_BINARY_INSTALL_DIR};${MAGNUM_PLUGINS_SCENECONVERTER_DEBUG_LIBRARY_INSTALL_DIR}"
"${MAGNUM_PLUGINS_SCENECONVERTER_RELEASE_BINARY_INSTALL_DIR};${MAGNUM_PLUGINS_SCENECONVERTER_RELEASE_LIBRARY_INSTALL_DIR}"
AnySceneConverter.conf
AnySceneConverter.cpp
AnySceneConverter.h)
if(BUILD_PLUGINS_STATIC AND BUILD_STATIC_PIC)
set_target_properties(AnySceneConverter PROPERTIES POSITION_INDEPENDENT_CODE ON)
endif()
target_link_libraries(AnySceneConverter PUBLIC MagnumTrade)
# Modify output location only if all are set, otherwise it makes no sense
if(CMAKE_RUNTIME_OUTPUT_DIRECTORY AND CMAKE_LIBRARY_OUTPUT_DIRECTORY AND CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
set_target_properties(AnySceneConverter PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/magnum$<$<CONFIG:Debug>:-d>/imageconverters
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/magnum$<$<CONFIG:Debug>:-d>/imageconverters
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/magnum$<$<CONFIG:Debug>:-d>/imageconverters)
endif()
install(FILES AnySceneConverter.h ${CMAKE_CURRENT_BINARY_DIR}/configure.h
DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnySceneConverter)
# Automatic static plugin import
if(BUILD_PLUGINS_STATIC)
install(FILES importStaticPlugin.cpp DESTINATION ${MAGNUM_PLUGINS_INCLUDE_INSTALL_DIR}/AnySceneConverter)
target_sources(AnySceneConverter INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/importStaticPlugin.cpp)
endif()
if(BUILD_TESTS)
add_subdirectory(Test)
endif()
# Magnum AnySceneConverter target alias for superprojects
add_library(Magnum::AnySceneConverter ALIAS AnySceneConverter)

121
src/MagnumPlugins/AnySceneConverter/Test/AnySceneConverterTest.cpp

@ -0,0 +1,121 @@
/*
This file is part of Magnum.
Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019
Vladimír Vondruš <mosra@centrum.cz>
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
*/
#include <sstream>
#include <Corrade/PluginManager/Manager.h>
#include <Corrade/TestSuite/Tester.h>
#include <Corrade/Utility/Directory.h>
#include <Corrade/Utility/DebugStl.h>
#include <Corrade/Utility/FormatStl.h>
#include "Magnum/Trade/AbstractSceneConverter.h"
#include "Magnum/Trade/MeshData.h"
#include "configure.h"
namespace Magnum { namespace Trade { namespace Test { namespace {
struct AnySceneConverterTest: TestSuite::Tester {
explicit AnySceneConverterTest();
void load();
void detect();
void unknown();
void propagateFlags();
/* Explicitly forbid system-wide plugin dependencies */
PluginManager::Manager<AbstractSceneConverter> _manager{"nonexistent"};
};
constexpr struct {
const char* name;
const char* filename;
const char* plugin;
} DetectData[]{
{"BLOB", "huge.blob", "MagnumSceneConverter"}
};
AnySceneConverterTest::AnySceneConverterTest() {
addTests({&AnySceneConverterTest::load});
addInstancedTests({&AnySceneConverterTest::detect},
Containers::arraySize(DetectData));
addTests({&AnySceneConverterTest::unknown,
&AnySceneConverterTest::propagateFlags});
/* Load the plugin directly from the build tree. Otherwise it's static and
already loaded. */
#ifdef ANYSCENECONVERTER_PLUGIN_FILENAME
CORRADE_INTERNAL_ASSERT(_manager.load(ANYSCENECONVERTER_PLUGIN_FILENAME) & PluginManager::LoadState::Loaded);
#endif
/* Create the output directory if it doesn't exist yet */
CORRADE_INTERNAL_ASSERT(Utility::Directory::mkpath(ANYSCENECONVERTER_TEST_DIR));
}
void AnySceneConverterTest::load() {
CORRADE_SKIP("No scene converter plugin available to test.");
}
void AnySceneConverterTest::detect() {
auto&& data = DetectData[testCaseInstanceId()];
setTestCaseDescription(data.name);
Containers::Pointer<AbstractSceneConverter> converter = _manager.instantiate("AnySceneConverter");
std::ostringstream out;
Error redirectError{&out};
CORRADE_VERIFY(!converter->convertToFile(data.filename, MeshData{MeshPrimitive::Triangles, 0}));
/* Can't use raw string literals in macros on GCC 4.8 */
#ifndef CORRADE_PLUGINMANAGER_NO_DYNAMIC_PLUGIN_SUPPORT
CORRADE_COMPARE(out.str(), Utility::formatString(
"PluginManager::Manager::load(): plugin {0} is not static and was not found in nonexistent\nTrade::AnySceneConverter::convertToFile(): cannot load the {0} plugin\n", data.plugin));
#else
CORRADE_COMPARE(out.str(), Utility::formatString(
"PluginManager::Manager::load(): plugin {0} was not found\nTrade::AnySceneConverter::convertToFile(): cannot load the {0} plugin\n", data.plugin));
#endif
}
void AnySceneConverterTest::unknown() {
std::ostringstream output;
Error redirectError{&output};
Containers::Pointer<AbstractSceneConverter> converter = _manager.instantiate("AnySceneConverter");
CORRADE_VERIFY(!converter->convertToFile("mesh.obj", MeshData{MeshPrimitive::Triangles, 0}));
CORRADE_COMPARE(output.str(), "Trade::AnySceneConverter::convertToFile(): cannot determine the format of mesh.obj\n");
}
void AnySceneConverterTest::propagateFlags() {
CORRADE_SKIP("No plugin with verbose output available to test.");
}
}}}}
CORRADE_TEST_MAIN(Magnum::Trade::Test::AnySceneConverterTest)

71
src/MagnumPlugins/AnySceneConverter/Test/CMakeLists.txt

@ -0,0 +1,71 @@
#
# This file is part of Magnum.
#
# Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019
# Vladimír Vondruš <mosra@centrum.cz>
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
#
if(CORRADE_TARGET_EMSCRIPTEN OR CORRADE_TARGET_ANDROID)
set(ANYSCENECONVERTER_TEST_DIR "write")
else()
set(ANYSCENECONVERTER_TEST_DIR ${CMAKE_CURRENT_BINARY_DIR})
endif()
# CMake before 3.8 has broken $<TARGET_FILE*> expressions for iOS (see
# https://gitlab.kitware.com/cmake/cmake/merge_requests/404) and since Corrade
# doesn't support dynamic plugins on iOS, this sorta works around that. Should
# be revisited when updating Travis to newer Xcode (xcode7.3 has CMake 3.6).
if(NOT BUILD_PLUGINS_STATIC)
set(ANYSCENECONVERTER_PLUGIN_FILENAME $<TARGET_FILE:AnySceneConverter>)
if(WITH_TGAIMAGECONVERTER)
set(TGAIMAGECONVERTER_PLUGIN_FILENAME $<TARGET_FILE:TgaImageConverter>)
endif()
endif()
# First replace ${} variables, then $<> generator expressions
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/configure.h.cmake
${CMAKE_CURRENT_BINARY_DIR}/configure.h.in)
file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/configure.h
INPUT ${CMAKE_CURRENT_BINARY_DIR}/configure.h.in)
corrade_add_test(AnySceneConverterTest AnySceneConverterTest.cpp
LIBRARIES MagnumTrade)
target_include_directories(AnySceneConverterTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>)
if(BUILD_PLUGINS_STATIC)
target_link_libraries(AnySceneConverterTest PRIVATE AnySceneConverter)
if(WITH_TGAIMAGECONVERTER)
target_link_libraries(AnySceneConverterTest PRIVATE TgaImageConverter)
endif()
else()
# So the plugins get properly built when building the test
add_dependencies(AnySceneConverterTest AnySceneConverter)
if(WITH_TGAIMAGECONVERTER)
add_dependencies(AnySceneConverterTest TgaImageConverter)
endif()
endif()
set_target_properties(AnySceneConverterTest PROPERTIES FOLDER "MagnumPlugins/AnySceneConverter/Test")
if(CORRADE_BUILD_STATIC AND NOT BUILD_PLUGINS_STATIC)
# CMake < 3.4 does this implicitly, but 3.4+ not anymore (see CMP0065).
# That's generally okay, *except if* the build is static, the executable
# uses a plugin manager and needs to share globals with the plugins (such
# as output redirection and so on).
set_target_properties(AnySceneConverterTest PROPERTIES ENABLE_EXPORTS ON)
endif()

27
src/MagnumPlugins/AnySceneConverter/Test/configure.h.cmake

@ -0,0 +1,27 @@
/*
This file is part of Magnum.
Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019
Vladimír Vondruš <mosra@centrum.cz>
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
*/
#cmakedefine ANYSCENECONVERTER_PLUGIN_FILENAME "${ANYSCENECONVERTER_PLUGIN_FILENAME}"
#define ANYSCENECONVERTER_TEST_DIR "${ANYSCENECONVERTER_TEST_DIR}"

26
src/MagnumPlugins/AnySceneConverter/configure.h.cmake

@ -0,0 +1,26 @@
/*
This file is part of Magnum.
Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019
Vladimír Vondruš <mosra@centrum.cz>
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
*/
#cmakedefine MAGNUM_ANYSCENECONVERTER_BUILD_STATIC

35
src/MagnumPlugins/AnySceneConverter/importStaticPlugin.cpp

@ -0,0 +1,35 @@
/*
This file is part of Magnum.
Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019
Vladimír Vondruš <mosra@centrum.cz>
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
*/
#include "MagnumPlugins/AnySceneConverter/configure.h"
#ifdef MAGNUM_ANYSCENECONVERTER_BUILD_STATIC
#include <Corrade/PluginManager/AbstractManager.h>
static int magnumAnySceneConverterStaticImporter() {
CORRADE_PLUGIN_IMPORT(AnySceneConverter)
return 1;
} CORRADE_AUTOMATIC_INITIALIZER(magnumAnySceneConverterStaticImporter)
#endif

4
src/MagnumPlugins/CMakeLists.txt

@ -46,6 +46,10 @@ if(WITH_ANYIMAGECONVERTER)
add_subdirectory(AnyImageConverter) add_subdirectory(AnyImageConverter)
endif() endif()
if(WITH_ANYSCENECONVERTER)
add_subdirectory(AnySceneConverter)
endif()
if(WITH_ANYSCENEIMPORTER) if(WITH_ANYSCENEIMPORTER)
add_subdirectory(AnySceneImporter) add_subdirectory(AnySceneImporter)
endif() endif()

Loading…
Cancel
Save