Browse Source

Moved AbstractImporter and Image to new Trade namespace.

Start of AbstractImporter rework - Trade namespace will contain simple
classes usable for exchanging data with other formats, importers will
not depend on any OpenGL functionality, they will just provide access to
plain data.
vectorfields
Vladimír Vondruš 14 years ago
parent
commit
dacd31fcc5
  1. 3
      src/CMakeLists.txt
  2. 56
      src/CubeMapTexture.h
  3. 6
      src/Texture.h
  4. 4
      src/Trade/AbstractImporter.cpp
  5. 21
      src/Trade/AbstractImporter.h
  6. 10
      src/Trade/AbstractMaterial.h
  7. 12
      src/Trade/Image.h

3
src/CMakeLists.txt

@ -7,7 +7,6 @@ add_subdirectory(MeshTools)
add_subdirectory(Primitives) add_subdirectory(Primitives)
set(Magnum_SRCS set(Magnum_SRCS
AbstractImporter.cpp
Object.cpp Object.cpp
AbstractTexture.cpp AbstractTexture.cpp
AbstractShaderProgram.cpp AbstractShaderProgram.cpp
@ -19,6 +18,8 @@ set(Magnum_SRCS
SizeTraits.cpp SizeTraits.cpp
Texture.cpp Texture.cpp
Trade/AbstractImporter.cpp
Math/Math.cpp Math/Math.cpp
) )

56
src/CubeMapTexture.h

@ -57,14 +57,14 @@ class CubeMapTexture: public Texture2D {
/** @brief Deleted. Use @ref setDataPositiveX(GLint, InternalFormat, const Math::Vector<GLsizei, Dimensions>&, ColorFormat, const T*) "setDataPositiveX()" and others instead. */ /** @brief Deleted. Use @ref setDataPositiveX(GLint, InternalFormat, const Math::Vector<GLsizei, Dimensions>&, ColorFormat, const T*) "setDataPositiveX()" and others instead. */
template<class T> inline void setData(GLint mipLevel, InternalFormat internalFormat, const Math::Vector<GLsizei, Dimensions>& _dimensions, ColorFormat colorFormat, const T* data) = delete; template<class T> inline void setData(GLint mipLevel, InternalFormat internalFormat, const Math::Vector<GLsizei, Dimensions>& _dimensions, ColorFormat colorFormat, const T* data) = delete;
/** @brief Deleted. Use @ref setDataPositiveX(GLint, InternalFormat, const Image<Dimensions>*) "setDataPositiveX()" and others instead. */ /** @brief Deleted. Use @ref setDataPositiveX(GLint, InternalFormat, const Trade::Image<Dimensions>*) "setDataPositiveX()" and others instead. */
void setData(GLint mipLevel, InternalFormat internalFormat, const Image<Dimensions>* image) = delete; void setData(GLint mipLevel, InternalFormat internalFormat, const Trade::Image<Dimensions>* image) = delete;
/** @brief Deleted. Use @ref setSubDataPositiveX(GLint, const Math::Vector<GLint, Dimensions>&, const Math::Vector<GLsizei, Dimensions>&, ColorFormat, const T*) "setSubDataPositiveX()" and others instead. */ /** @brief Deleted. Use @ref setSubDataPositiveX(GLint, const Math::Vector<GLint, Dimensions>&, const Math::Vector<GLsizei, Dimensions>&, ColorFormat, const T*) "setSubDataPositiveX()" and others instead. */
template<class T> inline void setSubData(GLint mipLevel, const Math::Vector<GLint, Dimensions>& offset, const Math::Vector<GLsizei, Dimensions>& _dimensions, ColorFormat colorFormat, const T* data) = delete; template<class T> inline void setSubData(GLint mipLevel, const Math::Vector<GLint, Dimensions>& offset, const Math::Vector<GLsizei, Dimensions>& _dimensions, ColorFormat colorFormat, const T* data) = delete;
/** @brief Deleted. Use @ref setSubDataPositiveX(GLint, const Math::Vector<GLint, Dimensions>&, const Image<Dimensions>*) "setSubDataPositiveX()" and others instead. */ /** @brief Deleted. Use @ref setSubDataPositiveX(GLint, const Math::Vector<GLint, Dimensions>&, const Trade::Image<Dimensions>*) "setSubDataPositiveX()" and others instead. */
void setSubData(GLint mipLevel, const Math::Vector<GLint, Dimensions>& offset, const Image<Dimensions>* image) = delete; void setSubData(GLint mipLevel, const Math::Vector<GLint, Dimensions>& offset, const Trade::Image<Dimensions>* image) = delete;
/** /**
* @brief Set texture data for positive X * @brief Set texture data for positive X
@ -78,9 +78,9 @@ class CubeMapTexture: public Texture2D {
/** /**
* @brief Set texture data for positive X * @brief Set texture data for positive X
* *
* @copydetails Texture::setData(GLint, InternalFormat, const Image<Dimensions>*) * @copydetails Texture::setData(GLint, InternalFormat, const Trade::Image<Dimensions>*)
*/ */
inline void setDataPositiveX(GLint mipLevel, InternalFormat internalFormat, const Image<Dimensions>* image) { inline void setDataPositiveX(GLint mipLevel, InternalFormat internalFormat, const Trade::Image<Dimensions>* image) {
setData(GL_TEXTURE_CUBE_MAP_POSITIVE_X, mipLevel, internalFormat, image->dimensions(), image->colorFormat(), image->type(), image->data()); setData(GL_TEXTURE_CUBE_MAP_POSITIVE_X, mipLevel, internalFormat, image->dimensions(), image->colorFormat(), image->type(), image->data());
} }
@ -96,9 +96,9 @@ class CubeMapTexture: public Texture2D {
/** /**
* @brief Set texture subdata for positive X * @brief Set texture subdata for positive X
* *
* @copydetails Texture::setSubData(GLint, const Math::Vector<GLint, Dimensions>&, const Image<Dimensions>*) * @copydetails Texture::setSubData(GLint, const Math::Vector<GLint, Dimensions>&, const Trade::Image<Dimensions>*)
*/ */
inline void setSubDataPositiveX(GLint mipLevel, const Math::Vector<GLint, Dimensions>& offset, const Image<Dimensions>* image) { inline void setSubDataPositiveX(GLint mipLevel, const Math::Vector<GLint, Dimensions>& offset, const Trade::Image<Dimensions>* image) {
setSubData(GL_TEXTURE_CUBE_MAP_POSITIVE_X, mipLevel, offset, image->dimensions(), image->colorFormat(), image->type(), image->data()); setSubData(GL_TEXTURE_CUBE_MAP_POSITIVE_X, mipLevel, offset, image->dimensions(), image->colorFormat(), image->type(), image->data());
} }
@ -114,9 +114,9 @@ class CubeMapTexture: public Texture2D {
/** /**
* @brief Set texture data for negative X * @brief Set texture data for negative X
* *
* @copydetails Texture::setData(GLint, InternalFormat, const Image<Dimensions>*) * @copydetails Texture::setData(GLint, InternalFormat, const Trade::Image<Dimensions>*)
*/ */
inline void setDataNegativeX(GLint mipLevel, InternalFormat internalFormat, const Image<Dimensions>* image) { inline void setDataNegativeX(GLint mipLevel, InternalFormat internalFormat, const Trade::Image<Dimensions>* image) {
setData(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, mipLevel, internalFormat, image->dimensions(), image->colorFormat(), image->type(), image->data()); setData(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, mipLevel, internalFormat, image->dimensions(), image->colorFormat(), image->type(), image->data());
} }
@ -132,9 +132,9 @@ class CubeMapTexture: public Texture2D {
/** /**
* @brief Set texture subdata for negative X * @brief Set texture subdata for negative X
* *
* @copydetails Texture::setSubData(GLint, const Math::Vector<GLint, Dimensions>&, const Image<Dimensions>*) * @copydetails Texture::setSubData(GLint, const Math::Vector<GLint, Dimensions>&, const Trade::Image<Dimensions>*)
*/ */
inline void setSubDataNegativeX(GLint mipLevel, const Math::Vector<GLint, Dimensions>& offset, const Image<Dimensions>* image) { inline void setSubDataNegativeX(GLint mipLevel, const Math::Vector<GLint, Dimensions>& offset, const Trade::Image<Dimensions>* image) {
setSubData(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, mipLevel, offset, image->dimensions(), image->colorFormat(), image->type(), image->data()); setSubData(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, mipLevel, offset, image->dimensions(), image->colorFormat(), image->type(), image->data());
} }
@ -150,9 +150,9 @@ class CubeMapTexture: public Texture2D {
/** /**
* @brief Set texture data for positive Y * @brief Set texture data for positive Y
* *
* @copydetails Texture::setData(GLint, InternalFormat, const Image<Dimensions>*) * @copydetails Texture::setData(GLint, InternalFormat, const Trade::Image<Dimensions>*)
*/ */
inline void setDataPositiveY(GLint mipLevel, InternalFormat internalFormat, const Image<Dimensions>* image) { inline void setDataPositiveY(GLint mipLevel, InternalFormat internalFormat, const Trade::Image<Dimensions>* image) {
setData(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, mipLevel, internalFormat, image->dimensions(), image->colorFormat(), image->type(), image->data()); setData(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, mipLevel, internalFormat, image->dimensions(), image->colorFormat(), image->type(), image->data());
} }
@ -168,9 +168,9 @@ class CubeMapTexture: public Texture2D {
/** /**
* @brief Set texture subdata for positive Y * @brief Set texture subdata for positive Y
* *
* @copydetails Texture::setSubData(GLint, const Math::Vector<GLint, Dimensions>&, const Image<Dimensions>*) * @copydetails Texture::setSubData(GLint, const Math::Vector<GLint, Dimensions>&, const Trade::Image<Dimensions>*)
*/ */
inline void setSubDataPositiveY(GLint mipLevel, const Math::Vector<GLint, Dimensions>& offset, const Image<Dimensions>* image) { inline void setSubDataPositiveY(GLint mipLevel, const Math::Vector<GLint, Dimensions>& offset, const Trade::Image<Dimensions>* image) {
setSubData(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, mipLevel, offset, image->dimensions(), image->colorFormat(), image->type(), image->data()); setSubData(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, mipLevel, offset, image->dimensions(), image->colorFormat(), image->type(), image->data());
} }
@ -186,9 +186,9 @@ class CubeMapTexture: public Texture2D {
/** /**
* @brief Set texture data for negative Y * @brief Set texture data for negative Y
* *
* @copydetails Texture::setData(GLint, InternalFormat, const Image<Dimensions>*) * @copydetails Texture::setData(GLint, InternalFormat, const Trade::Image<Dimensions>*)
*/ */
inline void setDataNegativeY(GLint mipLevel, InternalFormat internalFormat, const Image<Dimensions>* image) { inline void setDataNegativeY(GLint mipLevel, InternalFormat internalFormat, const Trade::Image<Dimensions>* image) {
setData(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, mipLevel, internalFormat, image->dimensions(), image->colorFormat(), image->type(), image->data()); setData(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, mipLevel, internalFormat, image->dimensions(), image->colorFormat(), image->type(), image->data());
} }
@ -204,9 +204,9 @@ class CubeMapTexture: public Texture2D {
/** /**
* @brief Set texture subdata for negative Y * @brief Set texture subdata for negative Y
* *
* @copydetails Texture::setSubData(GLint, const Math::Vector<GLint, Dimensions>&, const Image<Dimensions>*) * @copydetails Texture::setSubData(GLint, const Math::Vector<GLint, Dimensions>&, const Trade::Image<Dimensions>*)
*/ */
inline void setSubDataNegativeY(GLint mipLevel, const Math::Vector<GLint, Dimensions>& offset, const Image<Dimensions>* image) { inline void setSubDataNegativeY(GLint mipLevel, const Math::Vector<GLint, Dimensions>& offset, const Trade::Image<Dimensions>* image) {
setSubData(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, mipLevel, offset, image->dimensions(), image->colorFormat(), image->type(), image->data()); setSubData(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, mipLevel, offset, image->dimensions(), image->colorFormat(), image->type(), image->data());
} }
@ -222,9 +222,9 @@ class CubeMapTexture: public Texture2D {
/** /**
* @brief Set texture data for positive Z * @brief Set texture data for positive Z
* *
* @copydetails Texture::setData(GLint, InternalFormat, const Image<Dimensions>*) * @copydetails Texture::setData(GLint, InternalFormat, const Trade::Image<Dimensions>*)
*/ */
inline void setDataPositiveZ(GLint mipLevel, InternalFormat internalFormat, const Image<Dimensions>* image) { inline void setDataPositiveZ(GLint mipLevel, InternalFormat internalFormat, const Trade::Image<Dimensions>* image) {
setData(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, mipLevel, internalFormat, image->dimensions(), image->colorFormat(), image->type(), image->data()); setData(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, mipLevel, internalFormat, image->dimensions(), image->colorFormat(), image->type(), image->data());
} }
@ -240,9 +240,9 @@ class CubeMapTexture: public Texture2D {
/** /**
* @brief Set texture subdata for positive Z * @brief Set texture subdata for positive Z
* *
* @copydetails Texture::setSubData(GLint, const Math::Vector<GLint, Dimensions>&, const Image<Dimensions>*) * @copydetails Texture::setSubData(GLint, const Math::Vector<GLint, Dimensions>&, const Trade::Image<Dimensions>*)
*/ */
inline void setSubDataPositiveZ(GLint mipLevel, const Math::Vector<GLint, Dimensions>& offset, const Image<Dimensions>* image) { inline void setSubDataPositiveZ(GLint mipLevel, const Math::Vector<GLint, Dimensions>& offset, const Trade::Image<Dimensions>* image) {
setSubData(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, mipLevel, offset, image->dimensions(), image->colorFormat(), image->type(), image->data()); setSubData(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, mipLevel, offset, image->dimensions(), image->colorFormat(), image->type(), image->data());
} }
@ -258,9 +258,9 @@ class CubeMapTexture: public Texture2D {
/** /**
* @brief Set texture data for negative Z * @brief Set texture data for negative Z
* *
* @copydetails Texture::setData(GLint, InternalFormat, const Image<Dimensions>*) * @copydetails Texture::setData(GLint, InternalFormat, const Trade::Image<Dimensions>*)
*/ */
inline void setDataNegativeZ(GLint mipLevel, InternalFormat internalFormat, const Image<Dimensions>* image) { inline void setDataNegativeZ(GLint mipLevel, InternalFormat internalFormat, const Trade::Image<Dimensions>* image) {
setData(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, mipLevel, internalFormat, image->dimensions(), image->colorFormat(), image->type(), image->data()); setData(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, mipLevel, internalFormat, image->dimensions(), image->colorFormat(), image->type(), image->data());
} }
@ -276,9 +276,9 @@ class CubeMapTexture: public Texture2D {
/** /**
* @brief Set texture subdata for negative Z * @brief Set texture subdata for negative Z
* *
* @copydetails Texture::setSubData(GLint, const Math::Vector<GLint, Dimensions>&, const Image<Dimensions>*) * @copydetails Texture::setSubData(GLint, const Math::Vector<GLint, Dimensions>&, const Trade::Image<Dimensions>*)
*/ */
inline void setSubDataNegativeZ(GLint mipLevel, const Math::Vector<GLint, Dimensions>& offset, const Image<Dimensions>* image) { inline void setSubDataNegativeZ(GLint mipLevel, const Math::Vector<GLint, Dimensions>& offset, const Trade::Image<Dimensions>* image) {
setSubData(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, mipLevel, offset, image->dimensions(), image->colorFormat(), image->type(), image->data()); setSubData(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, mipLevel, offset, image->dimensions(), image->colorFormat(), image->type(), image->data());
} }

6
src/Texture.h

@ -19,7 +19,7 @@
* @brief Class Magnum::Texture * @brief Class Magnum::Texture
*/ */
#include "Image.h" #include "Trade/Image.h"
namespace Magnum { namespace Magnum {
@ -100,7 +100,7 @@ template<size_t dimensions> class Texture: public AbstractTexture {
* Sets texture data from given image. The image is not deleted * Sets texture data from given image. The image is not deleted
* afterwards. * afterwards.
*/ */
inline void setData(GLint mipLevel, InternalFormat internalFormat, const Image<Dimensions>* image) { inline void setData(GLint mipLevel, InternalFormat internalFormat, const Trade::Image<Dimensions>* image) {
bind(); bind();
DataHelper<dimensions>::set(target, mipLevel, internalFormat, image->dimensions(), image->colorFormat(), image->type(), image->data()); DataHelper<dimensions>::set(target, mipLevel, internalFormat, image->dimensions(), image->colorFormat(), image->type(), image->data());
unbind(); unbind();
@ -133,7 +133,7 @@ template<size_t dimensions> class Texture: public AbstractTexture {
* Sets texture subdata from given image. The image is not deleted * Sets texture subdata from given image. The image is not deleted
* afterwards. * afterwards.
*/ */
inline void setSubData(GLint mipLevel, const Math::Vector<GLint, Dimensions>& offset, const Image<Dimensions>* image) { inline void setSubData(GLint mipLevel, const Math::Vector<GLint, Dimensions>& offset, const Trade::Image<Dimensions>* image) {
bind(); bind();
DataHelper<Dimensions>::setSub(target, mipLevel, offset, image->dimensions(), image->colorFormat(), image->type(), image->data()); DataHelper<Dimensions>::setSub(target, mipLevel, offset, image->dimensions(), image->colorFormat(), image->type(), image->data());
unbind(); unbind();

4
src/AbstractImporter.cpp → src/Trade/AbstractImporter.cpp

@ -18,7 +18,7 @@
using namespace std; using namespace std;
using namespace Corrade::Utility; using namespace Corrade::Utility;
namespace Magnum { namespace Magnum { namespace Trade {
bool AbstractImporter::open(const std::string& filename) { bool AbstractImporter::open(const std::string& filename) {
Error() << plugin() << "doesn't support opening files"; Error() << plugin() << "doesn't support opening files";
@ -30,4 +30,4 @@ bool AbstractImporter::open(std::istream& in) {
return false; return false;
} }
} }}

21
src/AbstractImporter.h → src/Trade/AbstractImporter.h

@ -1,5 +1,5 @@
#ifndef Magnum_AbstractImporter_h #ifndef Magnum_Trade_AbstractImporter_h
#define Magnum_AbstractImporter_h #define Magnum_Trade_AbstractImporter_h
/* /*
Copyright © 2010, 2011, 2012 Vladimír Vondruš <mosra@centrum.cz> Copyright © 2010, 2011, 2012 Vladimír Vondruš <mosra@centrum.cz>
@ -16,7 +16,7 @@
*/ */
/** @file /** @file
* @brief Class Magnum::AbstractImporter * @brief Class Magnum::Trade::AbstractImporter
*/ */
#include <memory> #include <memory>
@ -28,13 +28,22 @@ namespace Magnum {
class AbstractShaderProgram; class AbstractShaderProgram;
class AbstractTexture; class AbstractTexture;
class AbstractMaterial;
class Camera; class Camera;
class Light; class Light;
class Mesh; class Mesh;
class Object; class Object;
class Scene; class Scene;
/**
@brief Data format exchange
Contains plugin interfaces for importing data of various formats and classes
for direct access to the data.
*/
namespace Trade {
class AbstractMaterial;
/** /**
@brief Base class for importer plugins @brief Base class for importer plugins
@ -65,7 +74,7 @@ any object deletes its child objects. Thus the class should store only one
shared pointer to root of each object tree.</p> shared pointer to root of each object tree.</p>
*/ */
class AbstractImporter: public Corrade::PluginManager::Plugin { class AbstractImporter: public Corrade::PluginManager::Plugin {
PLUGIN_INTERFACE("cz.mosra.magnum.AbstractImporter/0.1") PLUGIN_INTERFACE("cz.mosra.magnum.Trade.AbstractImporter/0.1")
public: public:
struct MeshData; struct MeshData;
@ -304,6 +313,6 @@ class AbstractImporter::MeshData {
virtual std::vector<Vector2>* const textureCoords2D(size_t id) { return nullptr; } virtual std::vector<Vector2>* const textureCoords2D(size_t id) { return nullptr; }
}; };
} }}
#endif #endif

10
src/AbstractMaterial.h → src/Trade/AbstractMaterial.h

@ -1,5 +1,5 @@
#ifndef Magnum_AbstractMaterial_h #ifndef Magnum_Trade_AbstractMaterial_h
#define Magnum_AbstractMaterial_h #define Magnum_Trade_AbstractMaterial_h
/* /*
Copyright © 2010, 2011, 2012 Vladimír Vondruš <mosra@centrum.cz> Copyright © 2010, 2011, 2012 Vladimír Vondruš <mosra@centrum.cz>
@ -16,12 +16,12 @@
*/ */
/** @file /** @file
* @brief Class Magnum::AbstractMaterial * @brief Class Magnum::Trade::AbstractMaterial
*/ */
#include "Magnum.h" #include "Magnum.h"
namespace Magnum { namespace Magnum { namespace Trade {
/** @brief Base class for materials */ /** @brief Base class for materials */
class AbstractMaterial { class AbstractMaterial {
@ -41,6 +41,6 @@ class AbstractMaterial {
virtual bool use(const Matrix4& transformationMatrix, const Matrix4& projectionMatrix) = 0; virtual bool use(const Matrix4& transformationMatrix, const Matrix4& projectionMatrix) = 0;
}; };
} }}
#endif #endif

12
src/Image.h → src/Trade/Image.h

@ -1,5 +1,5 @@
#ifndef Magnum_Image_h #ifndef Magnum_Trade_Image_h
#define Magnum_Image_h #define Magnum_Trade_Image_h
/* /*
Copyright © 2010, 2011, 2012 Vladimír Vondruš <mosra@centrum.cz> Copyright © 2010, 2011, 2012 Vladimír Vondruš <mosra@centrum.cz>
@ -16,14 +16,12 @@
*/ */
/** @file /** @file
* @brief Class Magnum::Image * @brief Class Magnum::Trade::Image
*/ */
#include "Magnum.h"
#include "TypeTraits.h"
#include "AbstractTexture.h" #include "AbstractTexture.h"
namespace Magnum { namespace Magnum { namespace Trade {
/** /**
@brief %Image @brief %Image
@ -84,6 +82,6 @@ typedef Image<2> Image2D;
/** @brief Three-dimensional image */ /** @brief Three-dimensional image */
typedef Image<3> Image3D; typedef Image<3> Image3D;
} }}
#endif #endif
Loading…
Cancel
Save