Browse Source

Trade: debug output for PhongMaterialData::Flag[s].

pull/205/head
Vladimír Vondruš 8 years ago
parent
commit
7913367365
  1. 5
      doc/changelog.dox
  2. 21
      src/Magnum/Trade/PhongMaterialData.cpp
  3. 6
      src/Magnum/Trade/PhongMaterialData.h
  4. 20
      src/Magnum/Trade/Test/MaterialDataTest.cpp

5
doc/changelog.dox

@ -73,6 +73,11 @@ See also:
@ref Primitives::grid3DSolid() and @ref Primitives::grid3DWireframe() @ref Primitives::grid3DSolid() and @ref Primitives::grid3DWireframe()
primitives primitives
@subsubsection changelog-latest-new-trade Trade library
- Debug output operator for @ref Trade::PhongMaterialData::Flag and
@ref Trade::PhongMaterialData::Flags
@subsection changelog-latest-buildsystem Build system @subsection changelog-latest-buildsystem Build system
- All plugin interfaces now implement - All plugin interfaces now implement

21
src/Magnum/Trade/PhongMaterialData.cpp

@ -25,6 +25,8 @@
#include "PhongMaterialData.h" #include "PhongMaterialData.h"
#include <Corrade/Containers/EnumSet.hpp>
namespace Magnum { namespace Trade { namespace Magnum { namespace Trade {
PhongMaterialData::PhongMaterialData(PhongMaterialData&& other) noexcept: AbstractMaterialData{std::move(other)}, _flags{other._flags}, _shininess{other._shininess} { PhongMaterialData::PhongMaterialData(PhongMaterialData&& other) noexcept: AbstractMaterialData{std::move(other)}, _flags{other._flags}, _shininess{other._shininess} {
@ -98,4 +100,23 @@ UnsignedInt& PhongMaterialData::specularTexture() {
return _specular.texture; return _specular.texture;
} }
Debug& operator<<(Debug& debug, const PhongMaterialData::Flag value) {
switch(value) {
#define _c(v) case PhongMaterialData::Flag::v: return debug << "Trade::PhongMaterialData::Flag::" #v;
_c(AmbientTexture)
_c(DiffuseTexture)
_c(SpecularTexture)
#undef _c
}
return debug << "Trade::PhongMaterialData::Flag(" << Debug::nospace << reinterpret_cast<void*>(UnsignedByte(value)) << Debug::nospace << ")";
}
Debug& operator<<(Debug& debug, const PhongMaterialData::Flags value) {
return Containers::enumSetDebugOutput(debug, value, "Trade::PhongMaterialData::Flags{}", {
PhongMaterialData::Flag::AmbientTexture,
PhongMaterialData::Flag::DiffuseTexture,
PhongMaterialData::Flag::SpecularTexture});
}
}} }}

6
src/Magnum/Trade/PhongMaterialData.h

@ -164,6 +164,12 @@ class MAGNUM_EXPORT PhongMaterialData: public AbstractMaterialData {
CORRADE_ENUMSET_OPERATORS(PhongMaterialData::Flags) CORRADE_ENUMSET_OPERATORS(PhongMaterialData::Flags)
/** @debugoperatorclassenum{PhongMaterialData::Flag} */
MAGNUM_EXPORT Debug& operator<<(Debug& debug, PhongMaterialData::Flag value);
/** @debugoperatorclassenum{PhongMaterialData::Flags} */
MAGNUM_EXPORT Debug& operator<<(Debug& debug, PhongMaterialData::Flags value);
/* Ugly as hell. */ /* Ugly as hell. */
inline Color3 PhongMaterialData::ambientColor() const { inline Color3 PhongMaterialData::ambientColor() const {

20
src/Magnum/Trade/Test/MaterialDataTest.cpp

@ -44,6 +44,8 @@ class MaterialDataTest: public TestSuite::Tester {
void constructMovePhongNoSpecularTexture(); void constructMovePhongNoSpecularTexture();
void debugType(); void debugType();
void debugPhongFlag();
void debugPhongFlags();
}; };
MaterialDataTest::MaterialDataTest() { MaterialDataTest::MaterialDataTest() {
@ -56,7 +58,9 @@ MaterialDataTest::MaterialDataTest() {
&MaterialDataTest::constructMovePhongNoDiffuseTexture, &MaterialDataTest::constructMovePhongNoDiffuseTexture,
&MaterialDataTest::constructMovePhongNoSpecularTexture, &MaterialDataTest::constructMovePhongNoSpecularTexture,
&MaterialDataTest::debugType}); &MaterialDataTest::debugType,
&MaterialDataTest::debugPhongFlag,
&MaterialDataTest::debugPhongFlags});
} }
void MaterialDataTest::constructPhong() { void MaterialDataTest::constructPhong() {
@ -238,6 +242,20 @@ void MaterialDataTest::debugType() {
CORRADE_COMPARE(out.str(), "Trade::MaterialType::Phong Trade::MaterialType(0xbe)\n"); CORRADE_COMPARE(out.str(), "Trade::MaterialType::Phong Trade::MaterialType(0xbe)\n");
} }
void MaterialDataTest::debugPhongFlag() {
std::ostringstream out;
Debug{&out} << PhongMaterialData::Flag::AmbientTexture << PhongMaterialData::Flag(0xf0);
CORRADE_COMPARE(out.str(), "Trade::PhongMaterialData::Flag::AmbientTexture Trade::PhongMaterialData::Flag(0xf0)\n");
}
void MaterialDataTest::debugPhongFlags() {
std::ostringstream out;
Debug{&out} << (PhongMaterialData::Flag::DiffuseTexture|PhongMaterialData::Flag::SpecularTexture) << PhongMaterialData::Flags{};
CORRADE_COMPARE(out.str(), "Trade::PhongMaterialData::Flag::DiffuseTexture|Trade::PhongMaterialData::Flag::SpecularTexture Trade::PhongMaterialData::Flags{}\n");
}
}}} }}}
CORRADE_TEST_MAIN(Magnum::Trade::Test::MaterialDataTest) CORRADE_TEST_MAIN(Magnum::Trade::Test::MaterialDataTest)

Loading…
Cancel
Save