Browse Source

Trade: cut InstanceType enums out of ObjectData*D classes.

Now named ObjectInstanceType*D. Similar reasoning as in previous commit,
now easier to type and not involving ambiguities due to subclassing.
pull/23/head
Vladimír Vondruš 13 years ago
parent
commit
03235705a3
  1. 2
      src/Trade/MeshObjectData2D.cpp
  2. 2
      src/Trade/MeshObjectData3D.cpp
  3. 10
      src/Trade/ObjectData2D.cpp
  4. 40
      src/Trade/ObjectData2D.h
  5. 10
      src/Trade/ObjectData3D.cpp
  6. 43
      src/Trade/ObjectData3D.h
  7. 4
      src/Trade/Test/ObjectData2DTest.cpp
  8. 4
      src/Trade/Test/ObjectData3DTest.cpp

2
src/Trade/MeshObjectData2D.cpp

@ -26,6 +26,6 @@
namespace Magnum { namespace Trade {
MeshObjectData2D::MeshObjectData2D(std::vector<UnsignedInt> children, const Matrix3& transformation, UnsignedInt instance, UnsignedInt material): ObjectData2D(std::move(children), transformation, InstanceType::Mesh, instance), _material(material) {}
MeshObjectData2D::MeshObjectData2D(std::vector<UnsignedInt> children, const Matrix3& transformation, UnsignedInt instance, UnsignedInt material): ObjectData2D(std::move(children), transformation, ObjectInstanceType2D::Mesh, instance), _material(material) {}
}}

2
src/Trade/MeshObjectData3D.cpp

@ -26,6 +26,6 @@
namespace Magnum { namespace Trade {
MeshObjectData3D::MeshObjectData3D(std::vector<UnsignedInt> children, const Matrix4& transformation, UnsignedInt instance, UnsignedInt material): ObjectData3D(std::move(children), transformation, InstanceType::Mesh, instance), _material(material) {}
MeshObjectData3D::MeshObjectData3D(std::vector<UnsignedInt> children, const Matrix4& transformation, UnsignedInt instance, UnsignedInt material): ObjectData3D(std::move(children), transformation, ObjectInstanceType3D::Mesh, instance), _material(material) {}
}}

10
src/Trade/ObjectData2D.cpp

@ -26,9 +26,9 @@
namespace Magnum { namespace Trade {
ObjectData2D::ObjectData2D(std::vector<UnsignedInt> children, const Matrix3& transformation, ObjectData2D::InstanceType instanceType, UnsignedInt instance): _children(std::move(children)), _transformation(transformation), _instanceType(instanceType), _instance(instance) {}
ObjectData2D::ObjectData2D(std::vector<UnsignedInt> children, const Matrix3& transformation, ObjectInstanceType2D instanceType, UnsignedInt instance): _children(std::move(children)), _transformation(transformation), _instanceType(instanceType), _instance(instance) {}
ObjectData2D::ObjectData2D(std::vector<UnsignedInt> children, const Matrix3& transformation): _children(children), _transformation(transformation), _instanceType(InstanceType::Empty), _instance(-1) {}
ObjectData2D::ObjectData2D(std::vector<UnsignedInt> children, const Matrix3& transformation): _children(children), _transformation(transformation), _instanceType(ObjectInstanceType2D::Empty), _instance(-1) {}
ObjectData2D::ObjectData2D(ObjectData2D&&) = default;
@ -37,16 +37,16 @@ ObjectData2D::~ObjectData2D() = default;
ObjectData2D& ObjectData2D::operator=(ObjectData2D&&) = default;
#ifndef DOXYGEN_GENERATING_OUTPUT
Debug operator<<(Debug debug, ObjectData2D::InstanceType value) {
Debug operator<<(Debug debug, ObjectInstanceType2D value) {
switch(value) {
#define _c(value) case ObjectData2D::InstanceType::value: return debug << "Trade::ObjectData2D::InstanceType::" #value;
#define _c(value) case ObjectInstanceType2D::value: return debug << "Trade::ObjectInstanceType2D::" #value;
_c(Camera)
_c(Mesh)
_c(Empty)
#undef _c
}
return debug << "ObjectData2D::InstanceType::(invalid)";
return debug << "Trade::ObjectInstanceType2D::(invalid)";
}
#endif

40
src/Trade/ObjectData2D.h

@ -25,7 +25,7 @@
*/
/** @file
* @brief Class Magnum::Trade::ObjectData2D
* @brief Class @ref Magnum::Trade::ObjectData2D, enum @ref Magnum::Trade::ObjectInstanceType2D
*/
#include <vector>
@ -35,6 +35,23 @@
namespace Magnum { namespace Trade {
/**
@brief Type of instance held by given 2D object
@see @ref ObjectData2D::instanceType()
*/
enum class ObjectInstanceType2D: UnsignedByte {
Camera, /**< Camera instance (see CameraData) */
/**
* Mesh instance. The data can be cast to @ref MeshObjectData2D to provide
* more information.
*/
Mesh,
Empty /**< Empty */
};
/**
@brief Two-dimensional object data
@ -43,19 +60,6 @@ Provides access to object transformation and hierarchy.
*/
class MAGNUM_EXPORT ObjectData2D {
public:
/** @brief Type of instance held by this object */
enum class InstanceType: UnsignedByte {
Camera, /**< Camera instance (see CameraData) */
/**
* Three-dimensional mesh instance. The data can be cast to
* MeshObjectData2D to provide more information.
*/
Mesh,
Empty /**< Empty */
};
/**
* @brief Constructor
* @param children Child objects
@ -63,7 +67,7 @@ class MAGNUM_EXPORT ObjectData2D {
* @param instanceType Instance type
* @param instance Instance ID
*/
explicit ObjectData2D(std::vector<UnsignedInt> children, const Matrix3& transformation, InstanceType instanceType, UnsignedInt instance);
explicit ObjectData2D(std::vector<UnsignedInt> children, const Matrix3& transformation, ObjectInstanceType2D instanceType, UnsignedInt instance);
/**
* @brief Constructor for empty instance
@ -98,7 +102,7 @@ class MAGNUM_EXPORT ObjectData2D {
*
* @see instance()
*/
InstanceType instanceType() const { return _instanceType; }
ObjectInstanceType2D instanceType() const { return _instanceType; }
/**
* @brief Instance ID
@ -110,12 +114,12 @@ class MAGNUM_EXPORT ObjectData2D {
private:
std::vector<UnsignedInt> _children;
Matrix3 _transformation;
InstanceType _instanceType;
ObjectInstanceType2D _instanceType;
Int _instance;
};
/** @debugoperator{Magnum::Trade::ObjectData2D} */
Debug MAGNUM_EXPORT operator<<(Debug debug, ObjectData2D::InstanceType value);
Debug MAGNUM_EXPORT operator<<(Debug debug, ObjectInstanceType2D value);
}}

10
src/Trade/ObjectData3D.cpp

@ -26,9 +26,9 @@
namespace Magnum { namespace Trade {
ObjectData3D::ObjectData3D(std::vector<UnsignedInt> children, const Matrix4& transformation, ObjectData3D::InstanceType instanceType, UnsignedInt instance): _children(std::move(children)), _transformation(transformation), _instanceType(instanceType), _instance(instance) {}
ObjectData3D::ObjectData3D(std::vector<UnsignedInt> children, const Matrix4& transformation, ObjectInstanceType3D instanceType, UnsignedInt instance): _children(std::move(children)), _transformation(transformation), _instanceType(instanceType), _instance(instance) {}
ObjectData3D::ObjectData3D(std::vector<UnsignedInt> children, const Matrix4& transformation): _children(std::move(children)), _transformation(transformation), _instanceType(InstanceType::Empty), _instance(-1) {}
ObjectData3D::ObjectData3D(std::vector<UnsignedInt> children, const Matrix4& transformation): _children(std::move(children)), _transformation(transformation), _instanceType(ObjectInstanceType3D::Empty), _instance(-1) {}
ObjectData3D::ObjectData3D(ObjectData3D&&) = default;
@ -37,9 +37,9 @@ ObjectData3D::~ObjectData3D() = default;
ObjectData3D& ObjectData3D::operator=(ObjectData3D&&) = default;
#ifndef DOXYGEN_GENERATING_OUTPUT
Debug operator<<(Debug debug, ObjectData3D::InstanceType value) {
Debug operator<<(Debug debug, ObjectInstanceType3D value) {
switch(value) {
#define _c(value) case ObjectData3D::InstanceType::value: return debug << "Trade::ObjectData3D::InstanceType::" #value;
#define _c(value) case ObjectInstanceType3D::value: return debug << "Trade::ObjectInstanceType3D::" #value;
_c(Camera)
_c(Light)
_c(Mesh)
@ -47,7 +47,7 @@ Debug operator<<(Debug debug, ObjectData3D::InstanceType value) {
#undef _c
}
return debug << "ObjectData3D::InstanceType::(invalid)";
return debug << "Trade::ObjectInstanceType3D::(invalid)";
}
#endif

43
src/Trade/ObjectData3D.h

@ -25,7 +25,7 @@
*/
/** @file
* @brief Class Magnum::Trade::ObjectData3D
* @brief Class @ref Magnum::Trade::ObjectData3D, enum @ref Magnum::Trade::ObjectInstanceType3D
*/
#include <vector>
@ -35,6 +35,25 @@
namespace Magnum { namespace Trade {
/**
@brief Type of instance held by given 3D object
@see @ref ObjectData3D::type()
*/
enum class ObjectInstanceType3D: UnsignedByte {
Camera, /**< Camera instance (see CameraData) */
Light, /**< Light instance (see LightData) */
/**
* Mesh instance. The data can be cast to @ref MeshObjectData3D to provide
* more information.
*/
Mesh,
Empty /**< Empty */
};
/**
@brief Three-dimensional object data
@ -43,20 +62,6 @@ Provides access to object transformation and hierarchy.
*/
class MAGNUM_EXPORT ObjectData3D {
public:
/** @brief Type of instance held by this object */
enum class InstanceType: UnsignedByte {
Camera, /**< Camera instance (see CameraData) */
Light, /**< Light instance (see LightData) */
/**
* Three-dimensional mesh instance. The data can be cast to
* MeshObjectData3D to provide more information.
*/
Mesh,
Empty /**< Empty */
};
/**
* @brief Constructor
* @param children Child objects
@ -64,7 +69,7 @@ class MAGNUM_EXPORT ObjectData3D {
* @param instanceType Instance type
* @param instance Instance ID
*/
explicit ObjectData3D(std::vector<UnsignedInt> children, const Matrix4& transformation, InstanceType instanceType, UnsignedInt instance);
explicit ObjectData3D(std::vector<UnsignedInt> children, const Matrix4& transformation, ObjectInstanceType3D instanceType, UnsignedInt instance);
/**
* @brief Constructor for empty instance
@ -99,7 +104,7 @@ class MAGNUM_EXPORT ObjectData3D {
*
* @see instance()
*/
InstanceType instanceType() const { return _instanceType; }
ObjectInstanceType3D instanceType() const { return _instanceType; }
/**
* @brief Instance ID
@ -111,12 +116,12 @@ class MAGNUM_EXPORT ObjectData3D {
private:
std::vector<UnsignedInt> _children;
Matrix4 _transformation;
InstanceType _instanceType;
ObjectInstanceType3D _instanceType;
Int _instance;
};
/** @debugoperator{Magnum::Trade::ObjectData3D} */
Debug MAGNUM_EXPORT operator<<(Debug debug, ObjectData3D::InstanceType value);
Debug MAGNUM_EXPORT operator<<(Debug debug, ObjectInstanceType3D value);
}}

4
src/Trade/Test/ObjectData2DTest.cpp

@ -42,8 +42,8 @@ ObjectData2DTest::ObjectData2DTest() {
void ObjectData2DTest::debug() {
std::ostringstream o;
Debug(&o) << ObjectData2D::InstanceType::Empty;
CORRADE_COMPARE(o.str(), "Trade::ObjectData2D::InstanceType::Empty\n");
Debug(&o) << ObjectInstanceType2D::Empty;
CORRADE_COMPARE(o.str(), "Trade::ObjectInstanceType2D::Empty\n");
}
}}}

4
src/Trade/Test/ObjectData3DTest.cpp

@ -42,8 +42,8 @@ ObjectData3DTest::ObjectData3DTest() {
void ObjectData3DTest::debug() {
std::ostringstream o;
Debug(&o) << ObjectData3D::InstanceType::Light;
CORRADE_COMPARE(o.str(), "Trade::ObjectData3D::InstanceType::Light\n");
Debug(&o) << ObjectInstanceType3D::Light;
CORRADE_COMPARE(o.str(), "Trade::ObjectInstanceType3D::Light\n");
}
}}}

Loading…
Cancel
Save