Browse Source

AnySceneImporter: adapt to AbstractImporter changes.

pull/371/head
Vladimír Vondruš 7 years ago
parent
commit
ab86b4c581
  1. 22
      src/MagnumPlugins/AnySceneImporter/AnySceneImporter.cpp
  2. 14
      src/MagnumPlugins/AnySceneImporter/AnySceneImporter.h
  3. 35
      src/MagnumPlugins/AnySceneImporter/Test/AnySceneImporterTest.cpp

22
src/MagnumPlugins/AnySceneImporter/AnySceneImporter.cpp

@ -36,13 +36,19 @@
#include "Magnum/Trade/CameraData.h"
#include "Magnum/Trade/ImageData.h"
#include "Magnum/Trade/LightData.h"
#include "Magnum/Trade/MeshData2D.h"
#include "Magnum/Trade/MeshData3D.h"
#include "Magnum/Trade/MeshData.h"
#include "Magnum/Trade/ObjectData2D.h"
#include "Magnum/Trade/ObjectData3D.h"
#include "Magnum/Trade/SceneData.h"
#include "Magnum/Trade/TextureData.h"
#ifdef MAGNUM_BUILD_DEPRECATED
#define _MAGNUM_NO_DEPRECATED_MESHDATA /* So it doesn't yell here */
#include "Magnum/Trade/MeshData2D.h"
#include "Magnum/Trade/MeshData3D.h"
#endif
namespace Magnum { namespace Trade {
AnySceneImporter::AnySceneImporter(PluginManager::Manager<AbstractImporter>& manager): AbstractImporter{manager} {}
@ -175,6 +181,16 @@ Int AnySceneImporter::doObject3DForName(const std::string& name) { return _in->o
std::string AnySceneImporter::doObject3DName(const UnsignedInt id) { return _in->object3DName(id); }
Containers::Pointer<ObjectData3D> AnySceneImporter::doObject3D(const UnsignedInt id) { return _in->object3D(id); }
UnsignedInt AnySceneImporter::doMeshCount() const { return _in->meshCount(); }
Int AnySceneImporter::doMeshForName(const std::string& name) { return _in->meshForName(name); }
std::string AnySceneImporter::doMeshName(const UnsignedInt id) { return _in->meshName(id); }
Containers::Optional<MeshData> AnySceneImporter::doMesh(const UnsignedInt id, const UnsignedInt level) { return _in->mesh(id, level); }
MeshAttribute AnySceneImporter::doMeshAttributeForName(const std::string& name) { return _in->meshAttributeForName(name); }
std::string AnySceneImporter::doMeshAttributeName(const UnsignedShort id) { return _in->meshAttributeName(meshAttributeCustom(id)); }
#ifdef MAGNUM_BUILD_DEPRECATED
CORRADE_IGNORE_DEPRECATED_PUSH
UnsignedInt AnySceneImporter::doMesh2DCount() const { return _in->mesh2DCount(); }
Int AnySceneImporter::doMesh2DForName(const std::string& name) { return _in->mesh2DForName(name); }
std::string AnySceneImporter::doMesh2DName(const UnsignedInt id) { return _in->mesh2DName(id); }
@ -184,6 +200,8 @@ UnsignedInt AnySceneImporter::doMesh3DCount() const { return _in->mesh3DCount();
Int AnySceneImporter::doMesh3DForName(const std::string& name) { return _in->mesh3DForName(name); }
std::string AnySceneImporter::doMesh3DName(const UnsignedInt id) { return _in->mesh3DName(id); }
Containers::Optional<MeshData3D> AnySceneImporter::doMesh3D(const UnsignedInt id) { return _in->mesh3D(id); }
CORRADE_IGNORE_DEPRECATED_POP
#endif
UnsignedInt AnySceneImporter::doMaterialCount() const { return _in->materialCount(); }
Int AnySceneImporter::doMaterialForName(const std::string& name) { return _in->materialForName(name); }

14
src/MagnumPlugins/AnySceneImporter/AnySceneImporter.h

@ -175,15 +175,29 @@ class MAGNUM_ANYSCENEIMPORTER_EXPORT AnySceneImporter: public AbstractImporter {
MAGNUM_ANYSCENEIMPORTER_LOCAL std::string doObject3DName(UnsignedInt id) override;
MAGNUM_ANYSCENEIMPORTER_LOCAL Containers::Pointer<ObjectData3D> doObject3D(UnsignedInt id) override;
MAGNUM_ANYSCENEIMPORTER_LOCAL UnsignedInt doMeshCount() const override;
MAGNUM_ANYSCENEIMPORTER_LOCAL Int doMeshForName(const std::string& name) override;
MAGNUM_ANYSCENEIMPORTER_LOCAL std::string doMeshName(UnsignedInt id) override;
MAGNUM_ANYSCENEIMPORTER_LOCAL Containers::Optional<MeshData> doMesh(UnsignedInt id, UnsignedInt level) override;
MAGNUM_ANYSCENEIMPORTER_LOCAL MeshAttribute doMeshAttributeForName(const std::string& name) override;
MAGNUM_ANYSCENEIMPORTER_LOCAL std::string doMeshAttributeName(UnsignedShort id) override;
#ifdef MAGNUM_BUILD_DEPRECATED
MAGNUM_ANYSCENEIMPORTER_LOCAL UnsignedInt doMesh2DCount() const override;
MAGNUM_ANYSCENEIMPORTER_LOCAL Int doMesh2DForName(const std::string& name) override;
MAGNUM_ANYSCENEIMPORTER_LOCAL std::string doMesh2DName(UnsignedInt id) override;
CORRADE_IGNORE_DEPRECATED_PUSH
MAGNUM_ANYSCENEIMPORTER_LOCAL Containers::Optional<MeshData2D> doMesh2D(UnsignedInt id) override;
CORRADE_IGNORE_DEPRECATED_POP
MAGNUM_ANYSCENEIMPORTER_LOCAL UnsignedInt doMesh3DCount() const override;
MAGNUM_ANYSCENEIMPORTER_LOCAL Int doMesh3DForName(const std::string& name) override;
MAGNUM_ANYSCENEIMPORTER_LOCAL std::string doMesh3DName(UnsignedInt id) override;
CORRADE_IGNORE_DEPRECATED_PUSH
MAGNUM_ANYSCENEIMPORTER_LOCAL Containers::Optional<MeshData3D> doMesh3D(UnsignedInt id) override;
CORRADE_IGNORE_DEPRECATED_POP
#endif
MAGNUM_ANYSCENEIMPORTER_LOCAL UnsignedInt doMaterialCount() const override;
MAGNUM_ANYSCENEIMPORTER_LOCAL Int doMaterialForName(const std::string& name) override;

35
src/MagnumPlugins/AnySceneImporter/Test/AnySceneImporterTest.cpp

@ -33,7 +33,13 @@
#include "Magnum/Math/Vector3.h"
#include "Magnum/Trade/AbstractImporter.h"
#include "Magnum/Trade/MeshData.h"
#ifdef MAGNUM_BUILD_DEPRECATED
#define _MAGNUM_NO_DEPRECATED_MESHDATA /* So it doesn't yell here */
#include "Magnum/Trade/MeshData3D.h"
#endif
#include "configure.h"
@ -43,6 +49,9 @@ struct AnySceneImporterTest: TestSuite::Tester {
explicit AnySceneImporterTest();
void load();
#ifdef MAGNUM_BUILD_DEPRECATED
void loadDeprecatedMeshData();
#endif
void detect();
void unknown();
@ -79,6 +88,10 @@ AnySceneImporterTest::AnySceneImporterTest() {
addInstancedTests({&AnySceneImporterTest::load},
Containers::arraySize(LoadData));
#ifdef MAGNUM_BUILD_DEPRECATED
addTests({&AnySceneImporterTest::loadDeprecatedMeshData});
#endif
addInstancedTests({&AnySceneImporterTest::detect},
Containers::arraySize(DetectData));
@ -106,13 +119,35 @@ void AnySceneImporterTest::load() {
CORRADE_VERIFY(importer->openFile(data.filename));
/* Check only size, as it is good enough proof that it is working */
Containers::Optional<MeshData> mesh = importer->mesh(0);
CORRADE_VERIFY(mesh);
CORRADE_COMPARE(mesh->vertexCount(), 3);
importer->close();
CORRADE_VERIFY(!importer->isOpened());
}
#ifdef MAGNUM_BUILD_DEPRECATED
void AnySceneImporterTest::loadDeprecatedMeshData() {
if(!(_manager.loadState("ObjImporter") & PluginManager::LoadState::Loaded))
CORRADE_SKIP("ObjImporter plugin not enabled, cannot test");
Containers::Pointer<AbstractImporter> importer = _manager.instantiate("AnySceneImporter");
CORRADE_VERIFY(importer->openFile(OBJ_FILE));
/* Check only size, as it is good enough proof that it is working */
/* MSVC warns also on positions() */
CORRADE_IGNORE_DEPRECATED_PUSH
Containers::Optional<MeshData3D> mesh = importer->mesh3D(0);
CORRADE_VERIFY(mesh);
CORRADE_COMPARE(mesh->positions(0).size(), 3);
CORRADE_IGNORE_DEPRECATED_POP
importer->close();
CORRADE_VERIFY(!importer->isOpened());
}
#endif
void AnySceneImporterTest::detect() {
auto&& data = DetectData[testCaseInstanceId()];

Loading…
Cancel
Save